PDA

View Full Version : Solid State Music IO4 nibble error. Troubleshooting assistance?



jhalbrecht
March 23rd, 2018, 05:09 PM
I'm repairing a Solid State Music (SSM) IO4 card. I'm configuring it as an Altair 88-2SIO which I've accomplished previously (https://www.theretrowagon.com/ssm-io4-as-mits-88-2sio/) on another board. I verified my cables and TeraTerm config using Martin's 88-2SIOJ card first.

I cleaned up some questionable solder spots, checked voltages. The board I'm currently working on has a problem with a nibble. Any suggestions for further troubleshooting? I used a logic probe to verify S2 and S1 configuration switches.

44571

Check out this table of what I typed and what is displayed along with the characters in binary and bad bits circled.

44570

I've tried this with identical results on both serial ports.

This is the echo program I used for testing.





; 5/8/2015 JHA SIOECHO.ASM
; Testing the SSM IO4 for Mits 88-sio compatibility.
; Should echo characters on serial A port. Or B port see CTLPORT/DATAPORT EQUates.
; disassembled from Mits SIO code and recompiled to run under cp/m
; works on my S100 running JAIR cp/m 2.2

0005 = BDOS EQU 5 ; BDOS entry
0006 = RAWIO EQU 6
0009 = WRITESTR EQU 09h ; BDOS write string call. Terminate string with $
000D = CR EQU 0dh
000A = LF EQU 0ah

0010 = CTRLPORT EQU 20o
;CTRLPORT EQU 22o ; Second serial port 'B'
0011 = DATAPORT EQU CTRLPORT+1

; ORG 0 ; start at 0 to compare / verify against opcode listings.
0100 ORG 0100h ; cp/m tpa I'm running my test under cp/m.
0100 0E09 mvi C, WRITESTR ; setup for BDOS string print call
0102 112401 lxi D, MSG1
0105 CD0500 call BDOS
INIT:
0108 3E03 MVI A,3 ; disable interrupts for both ports A and B.
010A D310 OUT CTRLPORT
010C 3E11 MVI A,17
;mvi A, 021 ; Set port 1 to 8,2,n
010E D310 OUT CTRLPORT
LOOP:
0110 0E06 mvi c, RAWIO ; give operator a chance to cancel with ^c (NOT WORKING)
0112 1EFF mvi e, 0FFh
0114 CD0500 call bdos

0117 DB10 IN CTRLPORT
0119 0F RRC
011A D21001 JNC LOOP ; wait for input.
011D DB11 IN DATAPORT
011F D311 OUT DATAPORT
0121 C31001 JMP LOOP
0124 4563686F20MSG1: DB 'Echo from IO4 serial data Port.',CR,LF,'$'
0146 END

jhalbrecht
March 24th, 2018, 10:06 AM
I'm repairing a Solid State Music (SSM) IO4 card.

Check out this table of what I typed and what is displayed along with the characters in binary and bad bits circled.

44570

I've tried this with identical results on both serial ports.


I decided to take another closer look at the bit pattern. I built up an Excel spread sheet. I'm only seeing what I'm calling bit 0 and 3 changing in the least significant nibble. I'm not seeing any change in the more significant nibble (MSN), on the left hand side, I did try to use several ASCII groups where that MSN changes for the actual character.

My thinking is that it's not a buffer as there doesn't appear to be a 'stuck' bit. I'm thinking configuration or clocking. The consistency of the error is interesting. Guess I'll go read the manual again.

Excel code

Column C =DEC2BIN(CODE(A2),8)
Column D =TEXT(C2,"0000 0000")

The spread sheet


enter echo binary nibbleized a-b (errors)
a 01100001 0110 0001
` 01100000 0110 0000 1
b 01100010 0110 0010
b 01100010 0110 0010
c 01100011 0110 0011
b 01100010 0110 0010 1
d 01100100 0110 0100
d 01100100 0110 0100
e 01100101 0110 0101
d 01100100 0110 0100 1
f 01100110 0110 0110
f 01100110 0110 0110
g 01100111 0110 0111
f 01100110 0110 0110 1
h 01101000 0110 1000
` 01100000 0110 0000 1000
i 01101001 0110 1001
i 01101001 0110 1001
j 01101010 0110 1010
b 01100010 0110 0010 1000
k 01101011 0110 1011
k 01101011 0110 1011
l 01101100 0110 1100
d 01100100 0110 0100 1000
m 01101101 0110 1101
m 01101101 0110 1101
n 01101110 0110 1110
f 01100110 0110 0110 1000
o 01101111 0110 1111
o 01101111 0110 1111
p 01110000 0111 0000
p 01110000 0111 0000
q 01110001 0111 0001
p 01110000 0111 0000 1
r 01110010 0111 0010
r 01110010 0111 0010
s 01110011 0111 0011
r 01110010 0111 0010 1
t 01110100 0111 0100
t 01110100 0111 0100
u 01110101 0111 0101
t 01110100 0111 0100 1
v 01110110 0111 0110
v 01110110 0111 0110
w 01110111 0111 0111
v 01110110 0111 0110 1
x 01111000 0111 1000
p 01110000 0111 0000 1000
y 01111001 0111 1001
y 01111001 0111 1001
z 01111010 0111 1010
r 01110010 0111 0010 1000
00100000 0010 0000
00100000 0010 0000
! 00100001 0010 0001
00100000 0010 0000 1
" 00100010 0010 0010
" 00100010 0010 0010
# 00100011 0010 0011
" 00100010 0010 0010 1
$ 00100100 0010 0100
$ 00100100 0010 0100
% 00100101 0010 0101
$ 00100100 0010 0100 1
& 00100110 0010 0110
& 00100110 0010 0110
' 00100111 0010 0111
& 00100110 0010 0110 1
( 00101000 0010 1000
00100000 0010 0000 1000
) 00101001 0010 1001
) 00101001 0010 1001
* 00101010 0010 1010
" 00100010 0010 0010 1000
+ 00101011 0010 1011
+ 00101011 0010 1011
, 00101100 0010 1100
$ 00100100 0010 0100 1000
- 00101101 0010 1101
- 00101101 0010 1101
. 00101110 0010 1110
& 00100110 0010 0110 1000
/ 00101111 0010 1111
/ 00101111 0010 1111
0 00110000 0011 0000
0 00110000 0011 0000
1 00110001 0011 0001
0 00110000 0011 0000 1
2 00110010 0011 0010
2 00110010 0011 0010
3 00110011 0011 0011
2 00110010 0011 0010 1
4 00110100 0011 0100
4 00110100 0011 0100
5 00110101 0011 0101
4 00110100 0011 0100 1
6 00110110 0011 0110
6 00110110 0011 0110
7 00110111 0011 0111
6 00110110 0011 0110 1
8 00111000 0011 1000
0 00110000 0011 0000 1000
9 00111001 0011 1001
9 00111001 0011 1001

glitch
March 24th, 2018, 11:14 AM
Plug it into something with a working front panel, and execute an OUT instruction -- drop the OUT instruction somewhere in writable memory, examine, then single step. The OUT lamp should be lit on the front panel, high and low address bytes will show the I/O address, and the data lights will show the byte you're writing. Trace through the data paths and look for incorrect data.

deramp5113
March 24th, 2018, 07:19 PM
D0 and D3 appear to be shorted to each other. Since it affects both serial ports, the short is on the internal data bus on the IO4 board. Verify a short is present with a meter looking between D0 and D3 on most any chip on the board that connects to the internal data bus. I’m guessing you’ll find another ugly joint or bent pin on the bottom somewhere.

Mike

jhalbrecht
March 25th, 2018, 09:28 AM
D0 and D3 appear to be shorted to each other. Since it affects both serial ports, the short is on the internal data bus on the IO4 board. Verify a short is present with a meter looking between D0 and D3 on most any chip on the board that connects to the internal data bus. Iím guessing youíll find another ugly joint or bent pin on the bottom somewhere.

Mike


Found the short on the W1 Status header. Inspecting the schematic I noticed that D0 and D3 came up on the W1 and W2 Status header/jumper on pin 9 an 12. Short on W2 9 and 12. For grins I tried pin 12 on W1 but couldn't get to the pin because the, to long, wires were crunched onto the header. I moved them out of the way. No more short. Check out the USB scope image, you can see where the white wire was pierced.

44602

Thank you all! I've got two more SSM IO4s to work on next. :-)


Note; This SSM IO4 is s/n: 4269ar (4 may be an L)

glitch
March 25th, 2018, 09:37 AM
The SSM IO-4 is definitely a nice little board to have. I may end up running reproductions of it at some point. I really like SSM's products :)

James0555
March 25th, 2018, 10:36 AM
According to the old Explorations newsletters this was one of the favorite boards for the EX-85.

Jim

glitch
March 25th, 2018, 10:41 AM
Wouldn't be surprised, it's a pretty complete "old style" S-100 I/O solution. SSM stuff is also usually of pretty clean/good design, so it's easy to adapt for your needs. I assume that's part of why it's currently popular, you can make it look like an Altair 88-2SIO or an IMSAI SIO.