Kenwood Receiver R-2000 MCU mod



Kenwood/Trio R-2000 was the top of the line communication receiver when I started SWL in 1985. As a middle schooler I couldn't even dream about owning the receiver. In 2000, I finally bought one from eBay. I am planning on an ultimate mod for R-2000.


[The PLL board]


In the heart of R-2000 are a 80C49 microcontroller and two 82C43 I/O expanders. They control almost everything except AGC, NB, and other analog controls such as AF gain and tone. By changing the program in the 80c49, we can add/remove features. In order to introduce a new program, we have to desolder the 80c49 from the PLL board, read the content of its ROM, analyze it, and create a new program and install a new microcontroller.

[Desoldered 80c49 from R-2000] [80c49 on a socket] [The new battery holder]


Well, I managed to desolder the microcontroller and installed a 40 pin socket. I also installed a socket for the backup battery. The next step is to read the ROM on the microcontroller.


[A simple 80C49 reader]


I created a simple reader. Initially I used 8255, but abandoned it and directly connected the I/O pins to the parallel port. 80c49 contains 2KB of program memory (ROM). When reading the ROM, lower eight bits of the address are placed to the I/O pins, DB0-DB7. The upper four bits are placed to the pins, P20-P23. Since we are reading only 2KB, P23 can be connected to the ground all the time. P20, P21 and P22 are connected to 5V or ground to set the most significant bits of the address. I manually do this through jumpers, and the reader software dumps 256 bytes at a time. 8 x 256 = 2048 bytes (2 KB). Here is the schematic diagram of the reader.

The parallel port's signal level is supposed to be TTL (5V), but on many laptops, the signal level is CMOS (3V). If your parallel port's signal level is CMOS, it won't work. you will have a better luck with a desktop PC. Here is a simple program that reads 256 bytes through the reader. It reads a byte multiple times and vote to eliminate any possible transient error. I changed the jumper setting eight times and generated eight 256 byte binary data files. The files were then merged to create a 2KB file.

The next step is to disassemble the binary to human readable format. I found an old disassembler written in C for DOS, and modified it for my use. Here is the code.

  • The binary: 2KB
  • The code in MCS-48 assembler

    To make any sense out of the code, you need the 80c49 data sheet, which explains its instruction set, and the R-2000 service manual. I am in the process of analyzing the code, but I can spare time only occasionally. So it will take a long time. After this step, I will probably interface R-2000 with a PC and try to control it, in order to verify what I interpreated . The next step will be designing a new software using a PIC or any other cheap microcontroller with RS-232C interface for the computer based control.