11 December 1999  by  Andrew Gerald, N2CBU

eMail-1: Lorand@QwestInternet.net
eMail-2: N2CBU@ARRL.NET


A WORD OF CAUTION BEFORE YOU BEGIN:
==================================

It's possible that due to a wiring error, parallel port error or software 
incompatibility you might erase the contents of your RAM module.  If your 
RAM module is from an R71A you can restore its contents from the enclosed 
"ORIG-R71.BIN" file.  I do not have any other "recovery" files and until some 
become available I urge caution.  Perhaps it would be wise to test your 
interface on a RAM module from a R71A first before reading RAM modules 
from other radios.  I will add "recovery" files for the other radios to 
this archive if they are sent to me.

*** Note-1: If the "WP" Write-Protect pin (see J2 on the interface schematic) 
is tied to ground instead of to +5v the critical lower RAM locations in the 
module are write protected.  A simple modification to the interface board would 
be to add a write protect switch.

*** Note-2: If the "/WR" Write pin (see J2 on the interface schematic) is left 
unconnected when testing the interface then the entire RAM will be write protected.  
Thus you can test without much chance of erasing the contents of the RAM module.

Icom RAM board programming interface & R71A modification notes
==============================================================

  You will need a CD4040 IC, a 78L05 voltage regulator, an 8-pin strip 
of 1" tall 0.1" spaced header pins, a 12-pin strip of 1" tall 0.1" spaced 
header pins, a DB25M, a length of ribbon or other type cable, and a piece 
of perf board.  For the prototype I used a Radio Shack part number 276-149 
prototyping board.  It should be noted that my prototype does not have an 
on-board voltage regulator.  I included the regulator on a subsequent board 
I built in 1991 which I gave away.

  All parts may be obtained from Digikey (www.digikey.com) and certainly 
from other sources.  A suitable header pin strip is Digikey part number 
"S1081-36" but any similar header pin material will work.

  Circuit layout is simple, just take a look at the ram module in the R71
and imagine how the header material will have to be positioned.  What you
want to do is make a "socket" on the programming adapter which looks just
like the "socket" in the R71A.  Build up the circuit on a small piece of
perf board with the 4040 in the center.  The long side of the header pins 
will have to be bent slightly outwards for the ram module to fit.  The 
ribbon cable from the PC will attach near the smaller header strip.

  For the R71A to tune above 31 MHz, in addition to editing the RAM module, 
you will have to make a modification to the Logic Unit.  I have included a 
file which describes how to do this.  See the file named "R71MEM.TXT" for 
instructions.  Credit for this part of the mod goes to the author of that file.

  The software is NOT a polished product.  There isn't much in the way of 
error checking when reading or writing a file to disk.  It will however verify 
writes to the RAM module automatically after writing.  I just added an unlisted 
(V)erify function accessable from the menu and an automatic CPU timing test.  
The software should work with a standard IBM-PC bi-directional parallel port 
with base addresses of 3BC, 378 and 278.  Most modern computers, including 
laptops, now have bi-directional parallel ports.  You may however need to mess 
with your parallel port configuration.  I have not had any trouble running the 
software on my IBM Thinkpad 486-25 or on my AMD-K6-III-450 tower.  That doesn't 
mean it will work for everyone though.  Bi-directional mode is selected by 
writing a "one" bit to port base+2.5 and if your port works differently the 
program will likely fail.  I have heard that some of the more advanced parallel 
port ICs need to have an "unlock" bit set before bi-directional mode can be 
enabled.  If anyone can provide me with the necessary info I will update the 
software to support these ICs.

  Note that values stored in the RAM module are big-endian and that the static 
RAM IC is only 4-bits wide (nibble mode.)  Some important memory addresses 
(in hex) in the RAM module for the R71A are as follows:

10/11 = LSB offset
12/13 = USB offset
14/15 = AM offset
16/17 = CW offset
18/19 = RTTY offset
(FM has no offset)

30/31 = lowest frequency (factory is 100kHz)
3B/3C = highest frequency (factory 30MHz)


Example 1 - To change the lower frequency limit to 10kHz:

Original - 000: 00F1FF1FF002FFFF000B59686800032005930005000000000100000030003000
Modified - 000: 00F1FF1FF002FFFF000B59686800032005930005000000001000000030003000


Example 2 - To change the upper frequency limit to 35MHz:

Original - 000: 00F1FF1FF002FFFF000B59686800032005930005000000000100000030003000
Modified - 000: 00F1FF1FF002FFFF000B59686800032005930005000000000100000030053000


I have enclosed the file from my R71A receivers (MY-R71.BIN and the hex dump 
MY-R71.HEX) as a starting point for offset tweakers.  The offsets are big-endian 
meaning that the first value is the least significant.  You can compare these files 
against the non-tweaked files (ORIG-R71.BIN and the hex dump ORIG-R71.HEX) to see 
what changes have been made.

