I purchased a General Electric Phoenix SX VHF mobile transceiver to use for a simplex repeater. This particular unit can support up to sixteen channels that are programmed into a Xicor X2212 EEPROM. Of course, I did not have a programmer for this device. When I purchased the Phoenix SX, I was told by the former owner that there was a ham nearby that could program the X2212 for a fee. Not wanting to be dependent upon, or provide a revenue stream, for someone, I Googled for X2212 programmers. The cheapest one I could find was about $50 and another cost about $200! I also discovered designs for programmers that one could build, as well as free software. I decided to build one for myself, given how simple they were.
The programmer I built can be found on Lawrence Glaister's website. The actual web page is GE Phoenix SX X2212 EEPROM Programmer Hardware and Software. The programmer requires a computer with a parallel printer port. Board power is provided via a USB port through a USB Type A to USB Type B cable. The LED on the board merely indicates that power has been applied to the board.
The PDFs at the bottom of this web page contain the schematic and the PCB board layout. These were created using Eagle CAD. While the PCB was designed to be double-sided, the top-side circuitry was implemented with jumper wires. This allowed me to make a single-sided PCB. Below are a few photos of the fabrication of the PCB, using the toner transfer method, as well as the finished programmer.
The most recent version of the software was written to compile on Ubuntu 10.04. The software may run on later versions of Ubuntu, but I had an old, spare laptop that I installed Ubuntu 10.04. The programmer works perfectly with Glaister's software.
Left - Masked X2212 Programmer PCB. Right - Drilled and Etched X2212 Programmer PCB.
Left - Cleaned X2212 Programmer PCB. Right - Tinned X2212 Programmer PCB.
Completed X2212 Programmer.
By the way, you do want to use an HCT octal latch or octal flip-flop. Many (if not all) parallel printer ports support TTL signal levels, not CMOS signal levels.
Update
I turns out that Glaister's software was written to support the GE Phoenix SX with scanning capability. Unfortunately, my radio did not have that capability. I did not relish digging into old software to modify it to support an old radio. Fortunately, I found an alternative way to program the X2212 using a set of QuickBasic programs found on VO1CPU's GE Phonex SX website. The Parallel Port X2212 Programmer web page contain the actual code, as well as the design for the programmer board. This turned out to be identical to that found on Glaister's web page mentioned above. I think that this may be the original source of the design.
I had no trouble getting the newtest.bas and newread.bas programs working, but the newprog.bas program would fail to verify programming the X2212. After a lot of testing and head scratching, I stumbled upon the fact that a verify would pass when the programmer was not plugged into the parallel printer port. I turned out that the logic for the verify flag (VF) was inverted. The corrected code is listed below. Note that you may need to change the value of the delay variable (DELAY) to compensate for the speed of your computer.
Text Box
' Xicor X2212 programmer software, by VO1CPU
' Modified by WB8VLC & VO1CPU and AE5PH
LET LPT = &H378
LET DELAY = 9 ' 9 is OK for most Pentium class systems
DIM WriteBuffer(0 TO 255) AS INTEGER
INPUT "Enter file to program:"; n$
OPEN n$ FOR INPUT AS #1
PRINT "Reading..."
FOR I = 0 TO 255
A$ = INPUT$(1, #1)
FOR J = 0 TO 15
IF A$ = HEX$(J) THEN WriteBuffer(I) = J
NEXT J
NEXT I
CLOSE #1
OUT LPT + 2, 4
PRINT "Insert ROM in socket and hit a key.": A$ = INPUT$(1)
PRINT "Programming..."
FOR I = 0 TO 255
OUT LPT, WriteBuffer(I)
FOR D = 1 TO DELAY: NEXT D
OUT LPT + 2, 5
FOR D = 1 TO DELAY: NEXT D
' you can omit the next 4 lines if you're using a '373.
OUT LPT + 2, 4
FOR D = 1 TO DELAY: NEXT D
OUT LPT + 2, 5
FOR D = 1 TO DELAY: NEXT D
OUT LPT, I
FOR D = 1 TO DELAY: NEXT D
OUT LPT + 2, 7
FOR D = 1 TO DELAY: NEXT D
OUT LPT + 2, 5
FOR D = 1 TO DELAY: NEXT D
OUT LPT + 2, 4
FOR D = 1 TO DELAY: NEXT D
NEXT I
PRINT "Verifying..."
VF = 1
FOR I = 0 TO 255
OUT LPT, I
FOR D = 1 TO DELAY: NEXT D
OUT LPT + 2, 6
FOR D = 1 TO DELAY: NEXT D
IF WriteBuffer(I) <> (INP(LPT + 1) / 8) AND 15 THEN I = 255: LET VF = 0
FOR D = 1 TO DELAY: NEXT D
OUT LPT + 2, 4
FOR D = 1 TO DELAY: NEXT D
NEXT I
IF VF = 0 THEN
PRINT "Verify failed! Check your programmer."
ELSE
PRINT "Storing..."
OUT LPT + 2, 0
FOR D = 1 TO DELAY: NEXT D
OUT LPT + 2, 4
PRINT "Done."
END IF
PRINT "Remove ROM from programmer, and hit a key.": A$ = INPUT$(1)
I ended up installing the PRG software and the QuickBasic interpreter and programs on an old Sony Vaio PCG-505TS, running Windows 98. I had planned to use the laptop as a simplex repeater controller with the GE Phoenix SX. It seems sort of fitting to use a retro computer to program an obsolete EEPROM for a retro radio. We'll see how long all of this old hardware lasts.
Sony Vaio PCG-505TS running Niles Radio's PRG software. The X2212 programmer is
plugged into the parallel port on the Vaio's port extender, which is setting behind the laptop.