The IC-255A as a Base Unit

My 2 Meter setup is a hamfest special. I bought a IC-255A at a ham fest. It's been a long time since I was on 2 Meters so thought it would be useful. The IC-255A had the ability to handle repeater tone access, it didn't have a built in tone generator. And, while it is intended to be mobile, I wanted to use it as a base unit in my shack. The IC-255A worked well, but I needed some extras. I had a 3-element 2 Meter Yagi, that I bought around 1967, when 2 Meters was AM. So all I needed was everything else in between. I needed a power supply, repeater tone generator, coax, antenna rotator, mast, etc...

At separate ham fests I found a Power-One MAP140-1012 switching power supply (12V/12.5A or 15V/10A), a Communications Specialists TE-32 repeater tone generator, and a old Radio Shack antenna rotator/controller (Archerotor Antenna Rotator (150-1225B)). The rotator needed a bit of work, but it's all operational now.

After I gathered all the extras that I needed, I had to figure out how add it to my operating desk, yet still make it convienent to remove it for maintenance. The shelving on my desk is 15" deep, but I wanted to minimize the horizontal space. So I thought, it might be nice if I could mount everything on a single base. Then I don't have to worry about wires.

8-5/8" (21.8cm)
15-1/8"
(38.523cm)
0-7/8" (2.2cm)
0-7/8" (2.2cm)

In addition to the IC-255A, I had a Power-One MAP140-1012 switching power supply, a Communications Specialists TE-32, and a external speaker. The speaker had a long cable, so it really didn't need to be on the base with the IC-255A.

This is a relatively simple drawing that shows how I mounted my IC-255A. I had the IC-255A, a power supply, a Tone box, and a external speaker. I didn't want them to be all over the place, and the power supply was open frame, so I needed some way to mount everything.

So I looked around at what I had on hand and came up with a piece of 1/4" fine ply wood for a base. The ply wood that was 8-5/8" Wide and 15-3/16" long. The 8-5/8" side will be the front. A few quick measurements says that it should be able to fit everything I need.

The power supply that I am using is from Power-One (MAP140-1012) and has an output rating of 12V/12.5A or 15V/10A. A small control on the supply allows me to adjust it to 13.8 Volts for use with the IC-255A. At full power, the IC-255A only needs 5.5 Amps maximum, for 25 Watts output. This should give me plenty of head room. I picked up this power supply at a ham fest. It was new in the box, with instructions, and was going for only $5.00. I couldn't pass it up.

Computer Control of the IC-255A

This page is about controlling the IC-255A 2 Meter FM Transceiver with a computer. Yes, I know this is an old relic of a radio, but it was going for cheap at a ham fest and I thought could make use of it. Plus, it's been a long time since I had any usable 2 Meter gear. There isn't a lot of information about the IC-255A, other than the user manual. I also have a fair schematic, but it's split up into four pieces, However, I was interested in the details of the 24-pin rear molex connector. There were a lot of pins on that connector, and, except for a few, I really didn't know what they do.

Pin No. Function
1. Output from squelch control stage. (+7 Volts when squelch is on)
2. 13.8 Volts DC in conjunction with the power switch operation (0.3A Max.)
3. Connected to Push-to-talk, T/R change-over switch. When grounded the set operates in the transmit mode.
4. Output from the receiver decctor stage. Fixed output regardless of AF output of AF Gain.
5. Input of Transmit MIC amplifier stage.
6. 8 Volt DC available when transmitting. (relay can not be directly actuated. 5mA Max.)
7. NC (no connection).
8. Ground
9. NC (no connection).
10. Output of the applied voltage to the meter.
11. ~ 15. NC (no connection).
16. Control signal (DBC) input terminal for external control.
DATA BUS CONTROL
17. NC (no connection).
18. NC (no connection).
19. Control signal (DV) output terminal for external control.
DATA VALID
20. Control signal (RT) input terminal for external control.
REMOTE
21. Data signal (DB1) input/output terminal for external control. CMOS level bidirectional data signal. Normally at logic 0 (0 VDC).
22. Data signal (DB2) input/output terminal for external control. CMOS level bidirectional data signal. Normally at logic 0 (0 VDC).
23. Data signal (DB4) input/output terminal for external control. CMOS level bidirectional data signal. Normally at logic 0 (0 VDC).
24. Data signal (DB8) input/output terminal for external control. CMOS level bidirectional data signal. Normally at logic 0 (0 VDC).

On the right is a list of the 24-pin connector and the explanation. This is right from the manual, but includes added information.

However, I did manage to find an article by Curt Terwilliger, KI6J - QST, May 1981, pp30-33. The article presents a interface that uses a computer's S-100 Bus to communicate commands. The article is good to read because it does include a explanation of the signals that are used to communicate with the IC-255A.

The S-100 bus originally appeared on the MITS Altair computer and subsequently on the IMSAI 8080 system. The SS50 bus was originally incorporated in Southwest Technical Products' 6800 system.

It basically consists of a TTL to CMOS Bi-Directional converter.

Computer Control of the IC-255A - By Curt Terwilliger, KI6J - QST, May 1981, pp30-33

Ready for the computer age in Amateur Radio? It won't be long before many hams tie their computers to their radios. Here is an example of what we may all be doing one of these days.

If you want unlimited scanning ability, or a chance to spread spectrum techniques, or even an automated logger, build this simple interface and connect your ICOM IC-255A 2-meter FM transceiver to your computer. No modifications to the rig are required - just plug the interface into the accessory socket on the rear apron! The interface lets your computer set the frequency, check the squelch, read the frequency and activate the PTT line - all from one parallel input port and one parallel output port. And if you add a modem or TU, you have an automated ASCII station.

Inside the IC-255A
The secret of the IC-255A's versatility is its internal microcomputer. The tuning, offset and frequency memory of the radio are controlled by information that its internal central processing unit (CPU) gives the synthesizer. Normally, this information is read from the front panel knobs and switches, but ICOM also provided for a remote data input from the accessory socket. The CPU periodically scans the socket to see if a remote control device is active, and then reads or writes data as requested. The program that is stored in its CPU specifies the exact timing format for data exchanges. I obtained a timing sketch by writing to the factory: unfortunately, the explanatory notes were in Japanese! However, Mr. Don Specht of Icom Provided a most helpsul translation. Anyway, computer signals are an international language.

4-BIT
DATA
BUS
DEST.
ADDRESS
To Rig
ACK.
ADDRESS
From Rig
1 MHZ
DIGIT
To/From Rig
100 KHZ
DIGIT
To/From Rig
10 KHZ
DIGIT
To/From Rig
1 KHZ
DIGIT
To/From Rig
Figure 1 - Message format required by the IC-255A internal CPU.
The message format is shown in Figure 1, The first character transmitted is the destination address. The possible destinations are 425 MHz, 144 MHz, 50 MHZ, hf and idle. These are represented by numbers 11 through 15 (hexadecimal B through F). Because the destination in this case is the IC-255A, the address is 12 (C16). The rig responds with its address as acknowledgment. Then four digits of data are transferred, most significant first. These are equivalent to the digits displayed in the LED readout on the front panel. The remote interface may read or write each digit as desired. For example, if the remote interface were to set the frequency to 147.360 MHz, it would write 7 3 6 0 after the address exchange. If it were to verify the frequency it would read the four digits after the address exchange.

Figure 2
Timing Diagrams for IC-255A/Interface
DATA
BUS
DESTINATION
ADDRESS
DBC
(A - Address Transmission)
DATA
BUS
DATA
FOR RIG
DBC
RT
DV
(B - Data - Interface to IC-255A)
DBC
RT
DV
DATA
BUS
DATA
FROM RIG
(C - Data - IC-255A to Interface)
Control Signals
The three signals that control data transfer are DATA BUS CONTROL (SBC), REMOTE (RT) and NOT DATA VALID (DV). DBC controlls the direction of data transfer: a high level signals data from remote to the rig. To send an address, the data bus is loaded, DBC is raised and then DBC is lowered. This procedure is shown in Figure 2A.

The lines RT and DV regulate the transfer of subsequent data. The remote interface writes a digit by raising DBC and placing data on the bus. It then raises RT to signal data availability. The rig lowers DV to indicate it is reading the data. The remote interfae lowers RT to signal the end of that digit, and the rig raises DV to indicate readiness for a new digit. This sequence is shown in Figure 2B.

The remote interface reads a digit by lowering DBC and raising RT. The rig places the digit on the bus and then lowers DV. The interface reads the digit and lowers RT. The rig then raises DV. This sequence is shown in Figure 2C. This type of "handshake" allows the slowest device to control the transfer, whether it is the rig or the remote interface. Thus we needn't worry about the type of computer used for remote control.

The Control Circuit
The control circuit shifts logic signals between CMOS levels (for the ICOM) and TTL (for the computer). The four data bus signals are fed to the input port through 4049 CMOS inverters. Output signals to the data bus are enables by the DBC line. When DBC is high, the four AND gates pass output port data through two inverters and a series diode to the data bus. The series diode allows the inverter output to pull up but not to pull down. The resistors to ground (both on the interface and inside the rig) form a passive pulldown. A similar output stage is used inside the rig. It is set to a low state when DBC is high, allowing the interface to control the data bus without any interference.

When DBC is low, the interface data is set to all zeros, and the data drivers in the rig are enabled. THe rig can pull any line up if desired or let the lines sink low through the pull down resistors. The diodes in the output lines of the interface prevent its inverters from shorting the data bus to ground.

The DV output from the rig can only pull down. It is shunted by a pulldown resistor, which makes it inconvenient to drive a CMOS input. Therefore, a descrete transistor is used; this extra inversion causes the input por to read DV (active high) rather than DV (active low).

THe circuit in Figure 3 can be connected to any parallel port with latched output data. Seven output bits and six input bits are required. The output bits are sctive high while the input bits are active low; the input bits may be complimented in software or by an inverting input port. A suggested circuit for an S-100 parallel port is shown in Figure 4. This circuit was used in a Cromemco machine to develop the software to be described.

Some Software Examples
The BASIC program in Table 1 is a demonstration program of a 10-channel scan routine. The scan stops on an active channel and resumes about three seconds after activity stops. One advantage of having a large number of scan entries is weighting the scan sequence. For example, suppose you wanted to check the simplex frequencies B and C occasionally. The scan sequence might then be AAAABAAAAAC to monitor A 80% of the time and B and C 10% each.

THis program is made up of three fundamental subroutines: transmit address, receive data, and send data. Using these it is possible to then write elaborate programs. Flowcharts for these subroutines are shown in Figure 5. With these few bytes of software, some very trivial outboard hardware and a little imagination, you will be bringing your shack into the computer age. A couple of more pieces of equipment and you have an automated ASCII station, Packet, or spread spectrum, anyone?


Table 1
Program Listing For IC-255A Scan

   5	REM THIS IS CROMECO 32K STRUCTURED BASIC
  10	PRINT"ICOM SUPER SCAN"
  20	PRINT
  30	:=1
  40	INPUT"ENTER SCAN FREQ. IN HERTZ (0 TO TERMINATE) =", F(I)
  50	IF F(I)=0 THEN GOTO SCAN1
  55	FLAG=0
  60	IF(F(I)>= 143800.0) AND F(I)<=148195.0 THEN FLAG=1
  70	IF NOT FLAG THEN PRINT "OUT OF RANGE.":GOTO 40
  80	I=I+1
  90	GOTO 40
 100 *SCAN1
 110	REM SCAN ROUTINE
 120	LASTI=I-1
 130	  FOR I=1 TO LASTI
 140	  F=F(I)-140000.0
 145	  NOESC
 150	  GOSUB SET'FREQ
 154	  ESC
 155	  COUNT=125
 156	  GOSUB DELAY
 160	  GOSUB LISTEN
 170	  IF NOT ACTIVE THEN GOTO SS200
 175	  DCOUNT=0
 180	  GOSUB LISTEN
 190	  IF NOT ACTIVE THEN DCOUNT=DCOUNT+1
 200	  IF DCOUNT=100 THEN GOSUB SS200: REM NEXT CHANNEL
 210	  IF ACTIVE THEN DCOUNT=0
 220	  GOTO 180
 230 *SS200
 240	  REM NEXT SCAN VALUE
 250	  NEXT I
 260	GOTO 130
 700	REM ICOM DRIVERS
 710	REM
 720	REM THIS IS AN SBASIC VERSION OF THE ICOM DRIVERS
 730	REM WHICH CONSISTS OF READ AND WRITE ROUTINES
 740	REM WHICH ARE CALLED FROM SBASIC BY GOSUBS.
 750 *READ'FREQ
 760	REM READ'FREQ RETURNS THE FREQUENCY IN A BYTE
 770	REM RANGING FROM 3800 TO 8000
 780	GOSUB TXADR
 790	GOSUB IRCV
 800	REM GET FIRST DIGIT
 810	GOSUB IRCV;F=A*1000
 820	REM SECOND DIGIT
 830	GOSUB IRCV;F=F+A*100
 840	REM GET THIRD DIGIT
 850	GOSUB IRCV;F=F+A*10
 860	REM GET LAST DIGIT
 870	GOSUB IRCV;F=F+A
 880	REM FINISHED
 890	RETURN
 900 *SET'FREQ
 910	REM SEET FREQ SETS THE ICOM TO THE FREQ SPECIFIED.
 920	REM BY 140000 KHZ PLUS FREQ F
 930	GOSUB TXADR
 940	GOSUB IRCV
 950	REM FIRST DIGIT
 960	A=INT(F/1000);GOSUB ISEND
 970	F=F-A*1000
 980	REM SECOND DIGIT
 990	A=INT(F/100);GOSUB ISEND
1000	F=F-A*100
1010	REM THIRD DIGIT
1020	A=INT(F/10);GOSUB ISEND
1030	F=F-A*10
1040	REM LAST DIGIT
1050	A=INT(F);GOSUB ISEND
1060	RETURN
1070 *TXADR
1080	REM TXADR SEND THE 144 MHZ ID TO THE ICOM
1090	OUT 200,128/12;REM SET DBC AND SEND 0CH
1100	COUNT-32;GOSUB DELAY
1110	OUT 200,12
1120	COUNT-18;GOSUB DELAY
1130	RETURN
1140 *IRCV
1150	REM IRCV READS A BYTE FROM THE ICOM
1160	OUT 200,16;REM BIT 4 IS RT
1170	J=INP(200)
1180	IF J<128 THEN GOTO 1170
1190	J-BINAND(J,15)
1200	A=J
1210	OUT 200,0
1220	J=INP(200)
1230	IF J>=128 THEN GOTO 1220
1240	RETURN
1250 *ISEND
1260	REM ISEND TRANSMITS A BYTE TO THE ICOM
1270	OUT 200,128/A;REM FIRST SIGNAL WITH DBC
1280	COUNT=18;GOSUB DELAY
1290	OUT 200,128+16+A;REM ADD RT
1300	J=INP(200)
1310	IF J<128 THEN GOTO 1300; REM WAIT FOR DV
1320	OUT 200,A
1330	J=INP(200)
1340	IF J>=128 THEN GOTO 1330
1350	RETURN
1360 *DELAY
1370	REM ABOUT 2 MILISECOND PER COUNT
1380	  FOR C=1 TO COUNT
1390	  NEXT C
1400	RETURN
1410 *LISTEN
1420	REM RETURNS ACTIVE=1 IF SQUELCH BROKEN
1430	MASK=BINAND(INP(200),64);REM BIT 6 IS SQUELCH
1440	ACTIVE = NOT MASK
1450	RETURN

TXADR
Set DBC
Send Address
1000 1100
P1
2 ms Delay
Reset DBC
0000 1100
P2
2 ms Delay
Return
ISEND
Set DBC
Send Data
1000 0000
P3
2 ms Delay
Set RT
1001 0000
P4
DV = 1?
DV = 0
DV = 1
D1
Reset
DEC, Rt
0000 0000
P5
DV = 0?
DV = 1
DV = 0
D2
Return
IRC
Reset DBC, Set RT
0001 0000
P6
DV = 1?
DV = 0
DV = 1
D3
Read Data
P5
Reset RT
0000 0000
P5
DV = 0?
DV = 1
DV = 0
D4
Return

Figure 3 - IC-255A Control Interface
1
5
9
13
17
21
4
8
12
16
20
24
D7
D6
D4
D3
D2
D1
D0
F
R
O
M
O
U
T
P
U
T
P
O
R
T
R7
1K Ω
Q1
2N3904
1
2
3
SN7408
U1
A
4
5
6
SN7408
U1
B
10
9
8
SN7408
U1
C
13
12
11
SN7408
U1
D
1
2
SN7406
U2
A
3
4
SN7406
U2
B
5
6
SN7406
U2
C
9
8
SN7406
U2
D
11
10
SN7406
U2
E
13
12
SN7406
U2
F
R1
4.7K Ω
R2
4.7K Ω
R3
4.7K Ω
R4
4.7K Ω
R5
4.7K Ω
R6
4.7K Ω
+9V
2
3
CD4049
U3
A
4
5
CD4049
U3
B
6
7
CD4049
U3
C
10
9
CD4049
U3
D
12
11
CD4049
U3
E
15
14
CD4049
U3
F
PTT
DBC
RT
D1
1N914
D2
1N914
D3
1N914
D4
1N914
K8
K4
K2
K1
R8
10KΩ
R9
10KΩ
Q2
2N3906
+5V
R10
4.7K Ω
R11
4.7K Ω
R12
4.7K Ω
R13
4.7K Ω
R14
4.7K Ω
R15
4.7K Ω
SQ
2
3
CD4049
U4
A
4
5
CD4049
U4
B
6
7
CD4049
U4
C
10
9
CD4049
U4
D
12
11
CD4049
U4
E
15
14
CD4049
U4
F
D7
D6
D3
D2
D1
D0
T
O
I
N
P
U
T
P
O
R
T

Figure 4 - S100 Bus Interface (Possible)
S100
29
A5
82
A6
83
A7
26
pHLDA
46
pINP
45
pOut
79
A0
80
A1
81
A2
31
A4
30
A3
78
uDBIN
77
PWR
1
2
SN7405
U1-A
3
4
SN7405
U1-B
R1
1K Ω
+
5
V
A
B
C
G1
G2A
G2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
1
2
3
6
4
5
15
14
13
12
11
10
9
7
S
N
7
4
L
S
1
3
8
U2
A
B
C
G1
G2A
G2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
1
2
3
6
4
5
15
14
13
12
11
10
9
7
S
N
7
4
L
S
1
3
8
U3
+5V
5
6
SN7405
U1-C
1
2
3
SN74LS32
U4
A
4
5
6
SN74LS32
U4
B
D7
D6
D5
D4
D3
D2
D1
D0
A1
Y1
A2
Y2
A3
Y3
A4
Y4
G
1
2
18
4
16
6
14
8
12
SN74LS240
U5 A
A1
Y1
A2
Y2
A3
Y3
A4
Y4
G
19
11
9
13
7
15
5
17
3
SN74LS240
U5 B
S100
43
D17
93
D16
92
D15
91
D14
42
D13
41
D12
94
D11
95
D10
I
N
P
U
T
P
O
R
T
200 (0C8H)
D7
D6
D5
D4
D3
D2
D1
D0
D7
Q7
D6
Q6
D5
Q5
D4
Q4
D3
Q3
D2
Q2
D1
Q1
D0
Q0
CLR
1
11
3
2
4
5
7
6
8
9
13
12
14
15
17
16
18
19
S
N
7
4
L
S
2
7
3
U6
S100
90
D07
40
D06
39
D05
38
D04
89
D03
88
D02
35
D01
36
D00
75
pReset
O
U
T
P
U
T
P
O
R
T
200 (0C8H)

Figure 5 - Power/Ground for IC-255A Control Interface
1
+8V
51
+8V
50
GND
100
GND
+
C10
10 uF
VI
VO
GND
U7
LM7805
+
C12
10 uF
C13
0.1 uF
+5V
VCC
GND
14
7
U1 - SN7408
+5V
C14
0.1 uF
VCC
GND
14
7
U2 - SN7406
+5V
C15
0.1 uF
VCC
GND
1
8
U3 - CD4049
+9V
C16
0.1 uF
VCC
GND
1
8
U4 - CD4049
+9V
C17
0.1 uF
2
+18V
+
C11
10 uF
VI
VO
GND
U8
LM7808
+
C12
10 uF