Repeater Controller revisited

Since I’m back in the world of old computer technology (see blog), I thought it would be an interesting idea to breathe new life into the 6502 microprocessor, which was still in my junkbox. Re-building the repeater controller form 1987 (see blog), seemed the best application, but for that, I needed a 6532 RIOT chip. This turned out to be possible for a reasonable price through an internet shop, and because I also had some programmed EPROMs laying around, the project was re-born.

The schematics were hand-drawn in 1987, so I thought it would nice to modernise them. I drew the schematic in EasyEDA, which is quite easy to do in a web browser. And as I did in the past, I built the hardware on a perforated printed circuit board and wired it up with wire wrap wire (enameled wire that is easy to solder) and using components I could find in my existing inventory. Since this is a PoC project, I’ve omitted some of the original hardware needed for integration with the radio components and kept everything to a minimum.

Link to PDF

The 6502 CPU operates at a frequency of 250 kHz. To achieve this, the 4 MHz X-tal oscillator signal generated by the LS7404 is reduced to 250 kHz by a CD4020 ripple counter. Therafter the clock signal is brought back to approximately 1 second/1 Hz by a second CD4020 to provide a stable timing pulse via an IRQ signal given by the RIOT to the CPU. The signal is then further reduced to approximately 30 seconds to provide a reset signal in case of a program crash. If the program is running normally, the watchdog timer is reset earlier thanks to an NMI signal generated every 8 seconds. The program will then reset the watchdog.
The NE555 is used to provide a robust system reset when power is applied and can also be triggered by the watchdog or the switch. The 6532 RIOT has 128 bytes of static RAM and two bidirectional 8-bit digital input/output ports. The software resides in a 2732 EPROM and is just over 1 Kbyte of code.

The repeater controller is a fairly simple system. It does nothing more than monitor whether a signal is received on the receiver and whether a 1750 Hz tone is being recognized. Based on this, various decisions are made, such as switching the transmitter on or off and, if necessary, sending the roger beep, call sign or status message in CW. Of course, everything happens according to the pre-defined timing. In fact it’s a state machine. In the past I made several versions for various repeaters: PI2ASN, PI2HVN, PI3ZOD and a repeater in Poland. The repeater group in Meppel even created a printed circuit board design, but I’m not sure if it was ever implemented.

After finishing building, the next question arose: how do I modify the source with at least another callsign? I still have the TASM Assembler source code, but TASM is no longer available for 32- or 64-bit PCs, and using DOSBox isn’t exactly a modern tool. So, let’s ask chatGPT for help… and they did. The suggestion was to use 64tass, as it supports most TASM-style pseudo-opcodes and directives and is a modern continuation of the TASM-style syntax. I hardly had to change my source code at all. 64tass produces a .BIN or .HEX file, ready for programming.

After completing all these steps, I decided it was time for an on-air test. I still had two DRA818 units (one VHF and one UHF), so I decided to build a crossband repeater with them. This would eliminate the need for a duplex filter and allow testing into an antenna, not just a dummy load.

Link to PDF

Very simple and basic, not a truly robust RF repeater, but good enough for PoC and testing. I added a pin header strip between the controller and the two DRA818 units, allowing me to swap the PTT, SQ, AF_OUT, and MIC_IN connections and thus switch the Rx/Tx bands. Both DRA units are frequency-programmed (using serial RXD) with a separate Arduino Nano board.

After some weeks of preparation, construction, and especially measuring, the conclusion was that 38 years ago I had achieved a fairly well-thought-out design using the technology and components available at the time. We now have a multitude of microprocessors, and with just one ATMega328 and a few discrete components, such a state machine is much easier to build these days.