• Please review our updated Terms and Rules here

Lanier Model 103 "No Problem" word processor

Looking at the site90 pictures, the cards notches match- CPU with a notch between 40 & 42, video between 36 & 38.

The comms and RAM expansion cards on the other one both have a notch between 30 & 32.

I'll lift the power supply out later on (I feel like I'm coming down with a cold again) and see if that center pin is connected to anything at all.

20150423_132406.jpg
EDIT:

The pin spacing is 1/8".

The center power pin has a trace on the board that goes to a resistor network and pin 4 of the NE555 but is missing the components to join it up, so can be disregarded as n/c on this board.
Edit-edit: Thoughts there that the output from the video card may be able to sync to the power supply? No clue, evidently they thought it not required.

--Phil
 
Last edited:
I have an Arduino Uno, which is a 5V device, so nice for TTL.

It has 5 dedicated inputs and 13 bidirectional pins- that's enough for this chip to be driven directly. wrong, I just went read the manual

It has 18 bidirectional i/o pins that operate at TTL levels.

I'll start on building a hardware platform and getting a program written to read the PROM.

--Phil

EDIT: This would also be really very simple to have a reprogrammable boot code booting directly off the Arduino. I'm not sure how the 8080 would read the prom- put the address on the address lines then enable !CS to get the data out?
 
Last edited:
With the Arduino, it can be programmed to wait for a state change on one pin (#CS) and then read the state of the address lines and present the appropriate byte at the data output pins.

Program can be stored in the thing's memory, of which it has 2kb available for program and variables.

If we are to go larger, I'd need to purchase one of the bigger ones with more RAM and i/o lines. That's not too much a problem, they're about $50. I've ordered some jumper wires with DuPont ends on them so they plug into the Arduino and my breadboard neatly.

--Phil

Edit: Grabbed the chip pin schematics, thanks.
 
Last edited:
I'd have to experiment and see; the Arduino I have is clocked at 16MHz.
If not, there's a PIC32 based model that runs at 80MHz which has more memory, more i/o and is generally more capable for about $40, which is definitely an option. I was also thinking about programming flash memory and mounting it in a carrier to make it compatible with the pinout.

I'm going to see about extracting the boot code over the course of the week though.

Phil
 
Dumped the PROM. I think this should be correct.

Address, Data

Code:
000000000 11001111
000000001 10110000
000000010 01000011
000000011 01100000
000000100 01111100
000000101 01111100
000000110 01111100
000000111 10110011
000001000 11001011
000001001 11111000
000001010 01010100
000001011 10100000
000001100 11010000
000001101 01000000
000001110 00010011
000001111 11001000
000010000 11001011
000010001 10110011
000010010 00011101
000010011 01111110
000010100 10000100
000010101 11111101
000010110 01101101
000010111 00010011
000011000 01100111
000011001 00001101
000011010 00000000
000011011 01100111
000011100 10000000
000011101 01111101
000011110 00000000
000011111 01000011
000100000 11011011
000100001 10110011
000100010 01111110
000100011 01000100
000100100 11101001
000100101 11001011
000100110 01111100
000100111 01100001
000101000 00000000
000101001 01111110
000101010 00000000
000101011 10110000
000101100 00000000
000101101 01111101
000101110 01011011
000101111 11110011
000110000 10100000
000110001 01100000
000110010 11010111
000110011 00000000
000110100 01111110
000110101 11011011
000110110 01100010
000110111 00110100
000111000 01101111
000111001 01111100
000111010 10100111
000111011 10100000
000111100 11010111
000111101 01101001
000111110 01111110
000111111 00000000
001000000 11000000
001000001 10110011
001000010 11000100
001000011 10000000
001000100 10000000
001000101 10111110
001000110 00111101
001000111 11101101
001001000 11001011
001001001 10000100
001001010 00001001
001001011 10000000
001001100 01100000
001001101 11010100
001001110 11101000
001001111 10000000
001010000 10110011
001010001 01011100
001010010 11100010
001010011 00110100
001010100 01010000
001010101 11001011
001010110 00011101
001010111 01010011
001011000 00000000
001011001 01111100
001011010 01111010
001011011 01001100
001011100 11111110
001011101 11000100
001011110 11001011
001011111 00000000
001100000 00000000
001100001 01111110
001100010 00000000
001100011 01100011
001100100 00111100
001100101 01111110
001100110 01101110
001100111 00010011
001101000 11100111
001101001 01011100
001101010 01111110
001101011 01111110
001101100 11101101
001101101 11010100
001101110 00000100
001101111 01000011
001110000 10010100
001110001 01111110
001110010 11010111
001110011 10010000
001110100 01010011
001110101 00011010
001110110 11101001
001110111 10100011
001111000 01101000
001111001 01111100
001111010 00001100
001111011 11001011
001111100 11101101
001111101 11101101
001111110 11100000
001111111 00000000
010000000 11101001
010000001 11110011
010000010 00000000
010000011 10110011
010000100 10110011
010000101 11001011
010000110 00001110
010000111 10000000
010001000 01111100
010001001 11100100
010001010 01111110
010001011 11010000
010001100 00101101
010001101 01100011
010001110 01101101
010001111 01000011
010010000 01111100
010010001 00000000
010010010 10101001
010010011 10111000
010010100 01111110
010010101 10101101
010010110 11100010
010010111 10001100
010011000 01010011
010011001 11001011
010011010 11101010
010011011 11001011
010011100 10000100
010011101 01001001
010011110 11111011
010011111 10000000
010100000 11111000
010100001 01000100
010100010 01000011
010100011 01111110
010100100 11101101
010100101 01011100
010100110 11001011
010100111 10100000
010101000 10011000
010101001 01001101
010101010 01000100
010101011 01001100
010101100 01100000
010101101 01001001
010101110 00000000
010101111 11000111
010110000 11000000
010110001 01011100
010110010 00111011
010110011 11000000
010110100 01111111
010110101 11101000
010110110 00100110
010110111 11000111
010111000 00001101
010111001 11001011
010111010 10010111
010111011 00001000
010111100 00010000
010111101 11101101
010111110 00101000
010111111 00000000
011000000 11110101
011000001 10000000
011000010 01011100
011000011 00100001
011000100 10010101
011000101 01000100
011000110 01000011
011000111 10100011
011001000 11000011
011001001 10000000
011001010 00111110
011001011 11100000
011001100 11000011
011001101 01001101
011001110 10101101
011001111 10010011
011010000 10000000
011010001 01111110
011010010 10011101
011010011 11000011
011010100 10100111
011010101 11001011
011010110 11101010
011010111 00000000
011011000 10111100
011011001 11001011
011011010 01101010
011011011 01111110
011011100 01010000
011011101 11000100
011011110 01001100
011011111 00000000
011100000 01111100
011100001 01010000
011100010 11011101
011100011 01010100
011100100 00011101
011100101 00001000
011100110 01001100
011100111 10000011
011101000 11011011
011101001 01111110
011101010 01000011
011101011 10101101
011101100 10110011
011101101 00011101
011101110 11000011
011101111 10000000
011110000 01111100
011110001 10000101
011110010 10011101
011110011 11110000
011110100 00000000
011110101 11000100
011110110 11111000
011110111 01001000
011111000 10101101
011111001 11001011
011111010 00000000
011111011 01111100
011111100 00101100
011111101 00010001
011111110 11100111
011111111 00000000
100000000 11001111
100000001 01000011
100000010 01100001
100000011 10001000
100000100 01100000
100000101 00000010
100000110 11111001
100000111 11100111
100001000 00100000
100001001 01011011
100001010 11011101
100001011 00010000
100001100 01010011
100001101 10110011
100001110 10000100
100001111 10100000
100010000 01101000
100010001 10110011
100010010 01001011
100010011 10010011
100010100 10111101
100010101 01001100
100010110 01111110
100010111 01100000
100011000 11000000
100011001 01111110
100011010 11000011
100011011 11111011
100011100 10100111
100011101 01000011
100011110 01100111
100011111 11100111
100100000 10000000
100100001 00000000
100100010 11101101
100100011 11001101
100100100 01001100
100100101 01000100
100100110 00010000
100100111 11000100
100101000 01111100
100101001 01001100
100101010 11100110
100101011 11101001
100101100 01100000
100101101 01000011
100101110 10001111
100101111 11000111
100110000 01100111
100110001 00000000
100110010 10110011
100110011 00000000
100110100 11000100
100110101 10100000
100110110 00101011
100110111 10000000
100111000 00110000
100111001 01000010
100111010 11010111
100111011 01100111
100111100 01111100
100111101 01011100
100111110 11001011
100111111 00000000
101000000 10001100
101000001 10010101
101000010 00101100
101000011 01100000
101000100 10110011
101000101 11001011
101000110 01001111
101000111 10000000
101001000 00100000
101001001 10011001
101001010 11110110
101001011 00100000
101001100 01001100
101001101 01011100
101001110 01011100
101001111 10000011
101010000 11100111
101010001 11101101
101010010 01010100
101010011 10000000
101010100 10000000
101010101 01101000
101010110 01111110
101010111 10111101
101011000 11100010
101011001 11011011
101011010 11000100
101011011 10101101
101011100 10110011
101011101 11000100
101011110 01101000
101011111 00000000
101100000 00000001
101100001 01111000
101100010 01011100
101100011 10000000
101100100 01001100
101100101 01101111
101100110 01110000
101100111 10000000
101101000 10000000
101101001 01001101
101101010 10101101
101101011 01011100
101101100 01111110
101101101 01011100
101101110 00101100
101101111 10010111
101110000 00000000
101110001 10000100
101110010 01000100
101110011 00110000
101110100 10010110
101110101 10000000
101110110 01011110
101110111 01111110
101111000 01001100
101111001 11011001
101111010 10000100
101111011 00101000
101111100 01111110
101111101 01000011
101111110 10110011
101111111 00000000
110000000 11001011
110000001 00000000
110000010 11101110
110000011 01100011
110000100 11100111
110000101 11000100
110000110 11000100
110000111 11000011
110001000 11000000
110001001 10000000
110001010 10111110
110001011 01110000
110001100 00000000
110001101 10000000
110001110 01111110
110001111 10111011
110010000 00100110
110010001 10001011
110010010 00000000
110010011 01000011
110010100 10110011
110010101 01111110
110010110 01011100
110010111 10111000
110011000 11101000
110011001 10101000
110011010 00000000
110011011 01101000
110011100 10111010
110011101 10000000
110011110 10101100
110011111 10010011
110100000 01001011
110100001 00001101
110100010 10101001
110100011 10110011
110100100 01111110
110100101 10101101
110100110 00100000
110100111 01000011
110101000 10110011
110101001 01111110
110101010 11011101
110101011 01101101
110101100 10001000
110101101 10000000
110101110 01101111
110101111 10111000
110110000 01000011
110110001 00011101
110110010 10000000
110110011 01100000
110110100 01010000
110110101 01011011
110110110 00000000
110110111 10010011
110111000 11001011
110111001 00010100
110111010 01100000
110111011 00000011
110111100 10000100
110111101 01111110
110111110 01111100
110111111 00000000
111000000 01111110
111000001 11000011
111000010 00111101
111000011 11000100
111000100 10000000
111000101 00111110
111000110 00000000
111000111 11101001
111001000 11101000
111001001 10010000
111001010 01111011
111001011 01010000
111001100 10111101
111001101 01111110
111001110 01111110
111001111 01111000
111010000 11011011
111010001 11110010
111010010 01111110
111010011 11011101
111010100 10000111
111010101 11101000
111010110 01111111
111010111 10000100
111011000 11110000
111011001 10001000
111011010 11000100
111011011 11011011
111011100 10000000
111011101 01100000
111011110 10101101
111011111 00000000
111100000 00110000
111100001 10101011
111100010 01111110
111100011 11001101
111100100 01111110
111100101 01100111
111100110 01011100
111100111 01111101
111101000 10100000
111101001 01010100
111101010 01001110
111101011 01111110
111101100 00111011
111101101 01111110
111101110 00101111
111101111 10111100
111110000 11010000
111110001 10000000
111110010 01111110
111110011 01000000
111110100 01111111
111110101 01100000
111110110 00001001
111110111 11000100
111111000 01111110
111111001 11000100
111111010 00000001
111111011 11100000
111111100 01101001
111111101 10000000
111111110 10000000
111111111 00000000

Made a very dirty program to do this.
Pushed all the Data lines HIGH. (Arduino has internal 2k2 pull-up resistors that can be activated).
Pulled the ADDRESS lines LOW.
Pushed !CS HIGH.

Wrote Address 00000000. Pulled !CS LOW. Read DATA lines. Pushed !CS HIGH. Wrote next address. Repeat until address 111111111. Halt.

--Phil
 
Last edited:
in hex:

Code:
CF
B0
43
60
7C
7C
7C
B3
CB
F8
54
A0
D0
40
13
C8
CB
B3
1D
7E
84
FD
6D
13
67
0D
00
67
80
7D
00
43
DB
B3
7E
44
E9
CB
7C
61
00
7E
00
B0
00
7D
5B
F3
A0
60
D7
00
7E
DB
62
34
6F
7C
A7
A0
D7
69
7E
00
C0
B3
C4
80
80
BE
3D
ED
CB
84
09
80
60
D4
E8
80
B3
5C
E2
34
50
CB
1D
53
00
7C
7A
4C
FE
C4
CB
00
00
7E
00
63
3C
7E
6E
13
E7
5C
7E
7E
ED
D4
04
43
94
7E
D7
90
53
1A
E9
A3
68
7C
0C
CB
ED
ED
E0
00
E9
F3
00
B3
B3
CB
0E
80
7C
E4
7E
D0
2D
63
6D
43
7C
00
A9
B8
7E
AD
E2
8C
53
CB
EA
CB
84
49
FB
80
F8
44
43
7E
ED
5C
CB
A0
98
4D
44
4C
60
49
00
C7
C0
5C
3B
C0
7F
E8
26
C7
0D
CB
97
08
10
ED
28
00
F5
80
5C
21
95
44
43
A3
C3
80
3E
E0
C3
4D
AD
93
80
7E
9D
C3
A7
CB
EA
00
BC
CB
6A
7E
50
C4
4C
00
7C
50
DD
54
1D
08
4C
83
DB
7E
43
AD
B3
1D
C3
80
7C
85
9D
F0
00
C4
F8
48
AD
CB
00
7C
2C
11
E7
00
CF
43
61
88
60
02
F9
E7
20
5B
DD
10
53
B3
84
A0
68
B3
4B
93
BD
4C
7E
60
C0
7E
C3
FB
A7
43
67
E7
80
00
ED
CD
4C
44
10
C4
7C
4C
E6
E9
60
43
8F
C7
67
00
B3
00
C4
A0
2B
80
30
42
D7
67
7C
5C
CB
00
8C
95
2C
60
B3
CB
4F
80
20
99
F6
20
4C
5C
5C
83
E7
ED
54
80
80
68
7E
BD
E2
DB
C4
AD
B3
C4
68
00
01
78
5C
80
4C
6F
70
80
80
4D
AD
5C
7E
5C
2C
97
00
84
44
30
96
80
5E
7E
4C
D9
84
28
7E
43
B3
00
CB
00
EE
63
E7
C4
C4
C3
C0
80
BE
70
00
80
7E
BB
26
8B
00
43
B3
7E
5C
B8
E8
A8
00
68
BA
80
AC
93
4B
0D
A9
B3
7E
AD
20
43
B3
7E
DD
6D
88
80
6F
B8
43
1D
80
60
50
5B
00
93
CB
14
60
03
84
7E
7C
00
7E
C3
3D
C4
80
3E
00
E9
E8
90
7B
50
BD
7E
7E
78
DB
F2
7E
DD
87
E8
7F
84
F0
88
C4
DB
80
60
AD
00
30
AB
7E
CD
7E
67
5C
7D
A0
54
4E
7E
3B
7E
2F
BC
D0
80
7E
40
7F
60
09
C4
7E
C4
01
E0
69
80
80
00

If that's any help

--Phil
 
Possible. I just started looking at it- possibly the data lines should not be held HIGH.

Let me go re-run it and check see, I'll re-check all the connections also. Just looking at it all logically. I might have screwed up and got LSB <-> MSB backward.

--Phil
 
I can run it slowly, however, I've added in a 10ms delay after the read and after it drops #CS, the same result each time with or without the delay.

To reiterate, I have the chip plugged as follows:

1 - A0
2 - A1
3 - A2
4 - A3
5 - A4
6 - D0
7 - D1
8 - D2
9 - D3
10 - GND
11 - D4
12 - D5
13 - D6
14 - D7
15 - #CS
16 - A5
17 - A6
18 - A7
19 - A8
20 - Vcc

--Phil
 
Redone, repeatedly, I get this from the chip:

Code:
000000000 11110011
000000001 11110011
000000010 10010111
000000011 11010011
000000100 00000011
000000101 00110001
000000110 10101111
000000111 01111110
000001000 11011011
000001001 00000001
000001010 00011111
000001011 11010010
000001100 00000000
000001101 10000000
000001110 00111110
000001111 00001100
000010000 11010011
000010001 00010110
000010010 00111110
000010011 01100100
000010100 11001101
000010101 11100111
000010110 00000001
000010111 11011011
000011000 00000101
000011001 11100110
000011010 00000011
000011011 11000010
000011100 00101001
000011101 00000000
000011110 00111110
000011111 00001011
000100000 11010011
000100001 00000100
000100010 00111110
000100011 00000011
000100100 11010011
000100101 00000100
000100110 11000011
000100111 00010111
000101000 00000000
000101001 00111110
000101010 00011001
000101011 11001101
000101100 11100111
000101101 00000001
000101110 11011011
000101111 00000101
000110000 11100110
000110001 00000011
000110010 11001010
000110011 00010111
000110100 00000000
000110101 01000111
000110110 00111101
000110111 00001111
000111000 11110110
000111001 00001100
000111010 10110000
000111011 11010011
000111100 00010110
000111101 00110010
000111110 10110101
000111111 01111110
001000000 00111110
001000001 00000110
001000010 11001101
001000011 11100111
001000100 00000001
001000101 11001101
001000110 10101001
001000111 00000001
001001000 10010111
001001001 00110010
001001010 10110111
001001011 01111110
001001100 00111100
001001101 00110010
001001110 10111000
001001111 01111110
001010000 00100001
001010001 10111101
001010010 01111110
001010011 11001101
001010100 00001010
001010101 00000001
001010110 11100101
001010111 11100001
001011000 01111110
001011001 00100011
001011010 11111110
001011011 00001010
001011100 11001010
001011101 01101001
001011110 00000000
001011111 11111110
001100000 00001011
001100001 11001010
001100010 10110100
001100011 00000000
001100100 00000110
001100101 00110010
001100110 11000011
001100111 10111101
001101000 00000000
001101001 00000110
001101010 00000110
001101011 00010001
001101100 10110111
001101101 01111110
001101110 11001101
001101111 11011100
001110000 00000001
001110001 11100101
001110010 00100001
001110011 01011101
001110100 01111111
001110101 11001101
001110110 00001010
001110111 00000001
001111000 11101011
001111001 00111110
001111010 00001000
001111011 00100001
001111100 10110111
001111101 01111110
001111110 00110100
001111111 10010110
010000000 11000010
010000001 10000110
010000010 00000000
010000011 01110111
010000100 00100011
010000101 00110100
010000110 00111010
010000111 10111100
010001000 01111110
010001001 10110111
010001010 11000010
010001011 10010101
010001100 00000000
010001101 00111010
010001110 10111011
010001111 01111110
010010000 10111000
010010001 11010010
010010010 10010101
010010011 00000000
010010100 01000111
010010101 00101010
010010110 10111001
010010111 01111110
010011000 11101011
010011001 11001101
010011010 11011100
010011011 00000001
010011100 11101011
010011101 00100010
010011110 10111001
010011111 01111110
010100000 00101010
010100001 10111011
010100010 01111110
010100011 01111101
010100100 10010000
010100101 01101111
010100110 01111100
010100111 11011110
010101000 00000000
010101001 01100111
010101010 00100010
010101011 10111011
010101100 01111110
010101101 10110101
010101110 11000010
010101111 01110010
010110000 00000000
010110001 11000011
010110010 01010111
010110011 00000000
010110100 01011110
010110101 00100011
010110110 01010110
010110111 00100011
010111000 11100101
010111001 11101011
010111010 11101001
010111011 00000110
010111100 00110000
010111101 00100001
010111110 00000000
010111111 10000000
011000000 00111110
011000001 10011111
011000010 01110000
011000011 00100011
011000100 10111100
011000101 11110010
011000110 11000010
011000111 00000000
011001000 00111110
011001001 00001000
011001010 11010011
011001011 00000100
011001100 01110110
011001101 00001110
011001110 00110010
011001111 00111010
011010000 10110110
011010001 01111110
011010010 01000111
011010011 00111010
011010100 10111000
011010101 01111110
011010110 01010111
011010111 11111110
011011000 01000110
011011001 11010100
011011010 01100100
011011011 00000000
011011100 10010111
011011101 01111010
011011110 00011111
011011111 10010000
011100000 11001000
011100001 00100001
011100010 10110110
011100011 01111110
011100100 00010111
011100101 00111010
011100110 10110101
011100111 01111110
011101000 11011010
011101001 11110001
011101010 00000000
011101011 11110110
011101100 00100000
011101101 00110100
011101110 11000011
011101111 11110100
011110000 00000000
011110001 11100110
011110010 11011111
011110011 00110101
011110100 11010011
011110101 00010110
011110110 00110010
011110111 10110101
011111000 01111110
011111001 11010011
011111010 00010100
011111011 00111110
011111100 00000111
011111101 11001101
011111110 11100111
011111111 00000001
100000000 00001101
100000001 11000010
100000010 11001111
100000011 00000000
100000100 11001101
100000101 10101001
100000110 00000001
100000111 11000011
100001000 11001101
100001001 00000000
100001010 00100010
100001011 10110000
100001100 01111110
100001101 00011110
100001110 00001010
100001111 11010101
100010000 11001101
100010001 11001101
100010010 00000000
100010011 11010001
100010100 00111010
100010101 10110111
100010110 01111110
100010111 01001111
100011000 00000110
100011001 00000000
100011010 00111010
100011011 10111000
100011100 01111110
100011101 00100001
100011110 10100001
100011111 00000001
100100000 00011111
100100001 11011010
100100010 00100111
100100011 00000001
100100100 00100001
100100101 10011001
100100110 00000001
100100111 00001001
100101000 01111110
100101001 00110010
100101010 10110010
100101011 01111110
100101100 00111010
100101101 10110010
100101110 01111110
100101111 00101010
100110000 10110000
100110001 01111110
100110010 11010011
100110011 00010101
100110100 00111110
100110101 11011011
100110110 11010011
100110111 00010001
100111000 00111110
100111001 01000010
100111010 11010011
100111011 00101000
100111100 00111110
100111101 10011011
100111110 11010011
100111111 00100011
101000000 00111110
101000001 01000000
101000010 11010011
101000011 00100011
101000100 01111101
101000101 11010011
101000110 00100010
101000111 01111100
101001000 11010011
101001001 00100010
101001010 00111010
101001011 10110101
101001100 01111110
101001101 11110110
101001110 00010000
101001111 11100110
101010000 10111111
101010001 00110010
101010010 10110101
101010011 01111110
101010100 11010011
101010101 00010110
101010110 11010011
101010111 00010111
101011000 11011011
101011001 00000101
101011010 00010111
101011011 11011010
101011100 01011000
101011101 00000001
101011110 00100011
101011111 00000110
101100000 00000010
101100001 11001101
101100010 11000110
101100011 00000001
101100100 00101011
101100101 00111010
101100110 10110010
101100111 01111110
101101000 10111110
101101001 11000010
101101010 10010010
101101011 00000001
101101100 00101011
101101101 00111010
101101110 10111000
101101111 01111110
101110000 10111110
101110001 11000010
101110010 10010010
101110011 00000001
101110100 00100011
101110101 00100011
101110110 00100011
101110111 00000110
101111000 10010110
101111001 00111010
101111010 10110111
101111011 01111110
101111100 10110111
101111101 11000010
101111110 10001000
101111111 00000001
110000000 00000110
110000001 00010001
110000010 11001101
110000011 11000110
110000100 00000001
110000101 00000110
110000110 10000100
110000111 00100011
110001000 00100010
110001001 10110011
110001010 01111110
110001011 11001101
110001100 11000110
110001101 00000001
110001110 00101010
110001111 10110011
110010000 01111110
110010001 11001001
110010010 00011101
110010011 11000010
110010100 00101100
110010101 00000001
110010110 11000011
110010111 10111011
110011000 00000000
110011001 00000000
110011010 00000011
110011011 00000110
110011100 00001001
110011101 00001100
110011110 00001111
110011111 00000010
110100000 00000101
110100001 00001000
110100010 00001011
110100011 00001110
110100100 00000001
110100101 00000100
110100110 00000111
110100111 00001010
110101000 00001101
110101001 10010111
110101010 00110010
110101011 10110110
110101100 01111110
110101101 00111010
110101110 10110101
110101111 01111110
110110000 11100110
110110001 11011111
110110010 11010011
110110011 00010110
110110100 00110010
110110101 10110101
110110110 01111110
110110111 11011011
110111000 00000101
110111001 11100110
110111010 00010000
110111011 11000000
110111100 11010011
110111101 00010100
110111110 00111110
110111111 00000111
111000000 11001101
111000001 11100111
111000010 00000001
111000011 11000011
111000100 10110111
111000101 00000001
111000110 11000101
111000111 10010111
111001000 10000110
111001001 00100011
111001010 00000101
111001011 11000010
111001100 11001000
111001101 00000001
111001110 11000001
111001111 10111110
111010000 11001000
111010001 00000110
111010010 00110001
111010011 00011101
111010100 11001010
111010101 10111101
111010110 00000000
111010111 00100001
111011000 00101100
111011001 00000001
111011010 11100011
111011011 11001001
111011100 11000101
111011101 01111110
111011110 00010010
111011111 00100011
111100000 00010011
111100001 00000101
111100010 11000010
111100011 11011101
111100100 00000001
111100101 11000001
111100110 11001001
111100111 00011110
111101000 11001111
111101001 11100011
111101010 11100011
111101011 00011101
111101100 11000010
111101101 11101001
111101110 00000001
111101111 00111101
111110000 11000010
111110001 11100111
111110010 00000001
111110011 11001001
111110100 00000000
111110101 00000000
111110110 00000000
111110111 00000000
111111000 00000000
111111001 00000000
111111010 00000000
111111011 00000000
111111100 00000000
111111101 00000000
111111110 00000000
111111111 00000000

If I leave #CS HIGH and run the program, it returns all 0's so at least that part of it's working right

--Phil
 
Here's the program. Very dirty and lazy but it does work. I've annotated it, it's very C# like in the way it's constructed.

Code:
#include <stdint.h>

// Ugly 512-byte PROM dump for TBP1842 512 x 8 Prom.

void setup() {
  pinMode(2,OUTPUT);                      // A0 - chip 1
  pinMode(3,OUTPUT);                      // A1 - chip 2
  pinMode(4,OUTPUT);                      // A2 - chip 3
  pinMode(5,OUTPUT);                      // A3 - chip 4
  pinMode(6,OUTPUT);                      // A4 - chip 5
  pinMode(7,OUTPUT);                      // A5 - chip 16
  pinMode(8,OUTPUT);                      // A6 - chip 17
  pinMode(9,OUTPUT);                      // A7 - chip 18
  pinMode(10,OUTPUT);                     // A8 - chip 19
  pinMode(11,INPUT);                      // D0 - chip 6
  pinMode(12,INPUT);                      // D1 - chip 7
  pinMode(13,OUTPUT);                     // #CS - chip 15 (Drives an LED n the Arduino also)
  pinMode(A0,INPUT);                      // D2 - chip 8
  pinMode(A1,INPUT);                      // D3 - chip 9
  pinMode(A2,INPUT);                      // D4 - chip 11
  pinMode(A3,INPUT);                      // D5 - chip 12
  pinMode(A4,INPUT);                      // D6 - chip 13
  pinMode(A5,INPUT);                      // D7 - chip 14
  digitalWrite(2,LOW);                    // Set the Arduino without pull-up (LOW)
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  digitalWrite(10,LOW);
  digitalWrite(11,LOW);
  digitalWrite(12,LOW);
  digitalWrite(13,HIGH);                  // Start out with #CS disabled (HIGH).
  digitalWrite(A0,LOW);
  digitalWrite(A1,LOW);
  digitalWrite(A2,LOW);
  digitalWrite(A3,LOW);
  digitalWrite(A4,LOW);
  digitalWrite(A5,LOW);

  Serial.begin(115200);                   // Serial port output speed to PC
}

void loop() {
  uint32_t addr = 0;                      // Initialize address at 000000000.
  delay(1000);                            // Wait 1000 millisecond for everything to stabilize
  Serial.println("");                     // Print a carriage return to screen
  while (addr < 512) {                    // Maximum address set (512 byte max)
    digitalWrite(10,bitRead(addr,8));     // Set A8
    digitalWrite(9,bitRead(addr,7));      // Set A7
    digitalWrite(8,bitRead(addr,6));      // Set A6
    digitalWrite(7,bitRead(addr,5));      // Set A5
    digitalWrite(6,bitRead(addr,4));      // Set A4
    digitalWrite(5,bitRead(addr,3));      // Set A3
    digitalWrite(4,bitRead(addr,2));      // Set A2
    digitalWrite(3,bitRead(addr,1));      // Set A1
    digitalWrite(2,bitRead(addr,0));      // Set A0
    Serial.print(digitalRead(10));        // Read back and print state of A8 to screen
    Serial.print(digitalRead(9));         // Read back and print state of A7 to screen
    Serial.print(digitalRead(8));         // Read back and print state of A6 to screen
    Serial.print(digitalRead(7));         // Read back and print state of A5 to screen
    Serial.print(digitalRead(6));         // Read back and print state of A4 to screen
    Serial.print(digitalRead(5));         // Read back and print state of A3 to screen
    Serial.print(digitalRead(4));         // Read back and print state of A2 to screen
    Serial.print(digitalRead(3));         // Read back and print state of A1 to screen
    Serial.print(digitalRead(2));         // Read back and print state of A0 to screen
    Serial.print(" ");                    // Print a space
    digitalWrite(13,LOW);                 // Enable chip select
    delay(100);                           // Wait 100 ms for the line to settle
    Serial.print(digitalRead(A5));        // Read state of D7 and print to screen
    Serial.print(digitalRead(A4));        // Read state of D6 and print to screen
    Serial.print(digitalRead(A3));        // Read state of D5 and print to screen
    Serial.print(digitalRead(A2));        // Read state of D4 and print to screen
    Serial.print(digitalRead(A1));        // Read state of D3 and print to screen
    Serial.print(digitalRead(A0));        // Read state of D2 and print to screen
    Serial.print(digitalRead(12));        // Read state of D1 and print to screen
    Serial.print(digitalRead(11));        // Read state of D0 and print to screen
    Serial.println("");                   // Print carriage return to screen
    digitalWrite(13,HIGH);                // Disable chip select
    addr++;                               // Move on to next address
  }                                       // Loop to beginning of "while" statement

  digitalWrite(13,HIGH);                  // Once the while loop has finished, disable chip select

  while (1) {                             // Infinite loop (halt)
  }
}

In case you fancy seeing how I did it.

20150425_183048.jpg

--Phil
 
Last edited:
Actually, I had meant to say.. I had looked at the card pictures from the Site90 Lanier, and the chip in that location is an NE558N.
Makes sense as to what's still vaguely legible on mine.

Phil
 
Last edited:
Thinking of.. that jump in the early bytes of the PROM- one behavior that has been noted is that the screen will fill with the drive number if it finds data that it doesn't recognize- should be useful in discovering the video address.

--Phil
 
There are 4 74LS287 1kbit PROM chips on the video board. U58, 49, 39 and 69.

http://www.datasheetspdf.com/PDF/74LS287/798764/1

I'm going to try and capture the contents. Not sure what the two CERDIP pieces are, but I guess they are PROM also.

--Phil

EDIT: Unhelpfully TI decided that their address lines are A thru H, I'm going to have to make the assumption that A is A0 and H is A8, LSB at A to MSB at H.
 
Last edited:
Lifted the tables out of the 74LS287 PROMs on the video card.

U39:
Code:
00000000 0101
00000001 0101
00000010 0101
00000011 0101
00000100 0101
00000101 0101
00000110 0101
00000111 0101
00001000 0101
00001001 0101
00001010 0101
00001011 0101
00001100 0101
00001101 0101
00001110 0101
00001111 0101
00010000 0101
00010001 0101
00010010 0101
00010011 0101
00010100 0101
00010101 0101
00010110 0101
00010111 0101
00011000 0101
00011001 0101
00011010 0101
00011011 0001
00011100 0001
00011101 0001
00011110 1001
00011111 0001
00100000 0001
00100001 0001
00100010 0100
00100011 0000
00100100 0000
00100101 0000
00100110 0000
00100111 0000
00101000 0000
00101001 0000
00101010 0000
00101011 0000
00101100 0000
00101101 0000
00101110 0000
00101111 0000
00110000 0000
00110001 0000
00110010 0000
00110011 0000
00110100 0000
00110101 0000
00110110 0000
00110111 0000
00111000 0000
00111001 0000
00111010 0000
00111011 0000
00111100 0000
00111101 0000
00111110 0000
00111111 0000
01000000 0101
01000001 0101
01000010 0101
01000011 0101
01000100 0101
01000101 0101
01000110 0101
01000111 0101
01001000 0101
01001001 0101
01001010 0101
01001011 0101
01001100 0101
01001101 0101
01001110 0101
01001111 0101
01010000 0101
01010001 0101
01010010 0101
01010011 0101
01010100 0101
01010101 0101
01010110 0101
01010111 0101
01011000 0101
01011001 0101
01011010 0101
01011011 0001
01011100 0001
01011101 0001
01011110 0001
01011111 0001
01100000 0001
01100001 0001
01100010 1001
01100011 0001
01100100 0001
01100101 0001
01100110 0001
01100111 0001
01101000 0011
01101001 0100
01101010 0000
01101011 0000
01101100 0000
01101101 0000
01101110 0000
01101111 0000
01110000 0000
01110001 0000
01110010 0000
01110011 0000
01110100 0000
01110101 0000
01110110 0000
01110111 0000
01111000 0000
01111001 0000
01111010 0000
01111011 0000
01111100 0000
01111101 0000
01111110 0000
01111111 0000
10000000 0000
10000001 0000
10000010 0000
10000011 0000
10000100 0000
10000101 0000
10000110 0000
10000111 0000
10001000 0000
10001001 0000
10001010 0000
10001011 0000
10001100 0000
10001101 0000
10001110 0000
10001111 0000
10010000 0000
10010001 0000
10010010 0000
10010011 0000
10010100 0000
10010101 0000
10010110 0000
10010111 0000
10011000 0000
10011001 0000
10011010 0000
10011011 0000
10011100 0000
10011101 0000
10011110 0000
10011111 0000
10100000 0000
10100001 0000
10100010 0000
10100011 0000
10100100 0000
10100101 0000
10100110 0000
10100111 0000
10101000 0000
10101001 0000
10101010 0000
10101011 0000
10101100 0000
10101101 0000
10101110 0000
10101111 0000
10110000 0000
10110001 0000
10110010 0000
10110011 0000
10110100 0000
10110101 0000
10110110 0000
10110111 0000
10111000 0000
10111001 0000
10111010 0000
10111011 0000
10111100 0000
10111101 0000
10111110 0000
10111111 0000
11000000 0000
11000001 0000
11000010 0000
11000011 0000
11000100 0000
11000101 0000
11000110 0000
11000111 0000
11001000 0000
11001001 0000
11001010 0000
11001011 0000
11001100 0000
11001101 0000
11001110 0000
11001111 0000
11010000 0000
11010001 0000
11010010 0000
11010011 0000
11010100 0000
11010101 0000
11010110 0000
11010111 0000
11011000 0000
11011001 0000
11011010 0000
11011011 0000
11011100 0000
11011101 0000
11011110 0000
11011111 0000
11100000 0000
11100001 0000
11100010 0000
11100011 0000
11100100 0000
11100101 0000
11100110 0000
11100111 0000
11101000 0000
11101001 0000
11101010 0000
11101011 0000
11101100 0000
11101101 0000
11101110 0000
11101111 0000
11110000 0000
11110001 0000
11110010 0000
11110011 0000
11110100 0000
11110101 0000
11110110 0000
11110111 0000
11111000 0000
11111001 0000
11111010 0000
11111011 0000
11111100 0000
11111101 0000
11111110 0000
11111111 0000

U49:
Code:
00000000 1101
00000001 1101
00000010 1101
00000011 1101
00000100 1101
00000101 1101
00000110 1101
00000111 1101
00001000 1101
00001001 1101
00001010 1101
00001011 1101
00001100 1101
00001101 1101
00001110 1101
00001111 1101
00010000 1101
00010001 1101
00010010 1101
00010011 1101
00010100 1101
00010101 1101
00010110 1101
00010111 1101
00011000 1101
00011001 1101
00011010 1101
00011011 1101
00011100 1101
00011101 1101
00011110 1101
00011111 1101
00100000 1101
00100001 1101
00100010 1101
00100011 0101
00100100 1101
00100101 1101
00100110 1101
00100111 1101
00101000 1101
00101001 1101
00101010 1101
00101011 1101
00101100 1101
00101101 1101
00101110 1101
00101111 1101
00110000 1101
00110001 1101
00110010 1101
00110011 1101
00110100 1101
00110101 1101
00110110 1101
00110111 1101
00111000 1101
00111001 1101
00111010 1101
00111011 1101
00111100 1101
00111101 1101
00111110 1101
00111111 1101
01000000 1101
01000001 1101
01000010 1101
01000011 1101
01000100 1101
01000101 1101
01000110 1101
01000111 1101
01001000 1101
01001001 1101
01001010 1101
01001011 1101
01001100 1101
01001101 1101
01001110 1101
01001111 1101
01010000 1101
01010001 1101
01010010 1101
01010011 1101
01010100 1101
01010101 1101
01010110 1001
01010111 1001
01011000 1001
01011001 1001
01011010 1001
01011011 1001
01011100 1001
01011101 1001
01011110 1101
01011111 1101
01100000 1101
01100001 1101
01100010 1101
01100011 1100
01100100 1111
01100101 1111
01100110 1111
01100111 1111
01101000 1111
01101001 1111
01101010 1111
01101011 1111
01101100 1111
01101101 1111
01101110 1111
01101111 1111
01110000 1111
01110001 1111
01110010 1111
01110011 1111
01110100 1111
01110101 1111
01110110 1111
01110111 1111
01111000 1111
01111001 1111
01111010 1111
01111011 1111
01111100 1111
01111101 1111
01111110 1111
01111111 1111
10000000 1101
10000001 1101
10000010 1111
10000011 1111
10000100 1111
10000101 1111
10000110 1111
10000111 1111
10001000 1111
10001001 1111
10001010 1111
10001011 1111
10001100 1111
10001101 1111
10001110 1111
10001111 1111
10010000 1111
10010001 1111
10010010 1111
10010011 1111
10010100 1111
10010101 1111
10010110 1111
10010111 1111
10011000 1111
10011001 1111
10011010 1111
10011011 1111
10011100 1111
10011101 1111
10011110 1111
10011111 1111
10100000 1111
10100001 1111
10100010 1111
10100011 0111
10100100 1111
10100101 1111
10100110 1111
10100111 1111
10101000 1111
10101001 1111
10101010 1111
10101011 1111
10101100 1111
10101101 1111
10101110 1111
10101111 1111
10110000 1111
10110001 1111
10110010 1111
10110011 1111
10110100 1111
10110101 1111
10110110 1111
10110111 1111
10111000 1111
10111001 1111
10111010 1111
10111011 1111
10111100 1111
10111101 1111
10111110 1111
10111111 1111
11000000 1111
11000001 1111
11000010 1111
11000011 1111
11000100 1111
11000101 1111
11000110 1111
11000111 1111
11001000 1111
11001001 1111
11001010 1111
11001011 1111
11001100 1111
11001101 1111
11001110 1111
11001111 1111
11010000 1111
11010001 1111
11010010 1101
11010011 1101
11010100 1101
11010101 1101
11010110 1001
11010111 1001
11011000 1001
11011001 1001
11011010 1001
11011011 1001
11011100 1001
11011101 1001
11011110 1101
11011111 1101
11100000 1101
11100001 1101
11100010 1101
11100011 1100
11100100 1111
11100101 1111
11100110 1111
11100111 1111
11101000 1111
11101001 1111
11101010 1111
11101011 1111
11101100 1111
11101101 1111
11101110 1111
11101111 1111
11110000 1111
11110001 1111
11110010 1111
11110011 1111
11110100 1111
11110101 1111
11110110 1111
11110111 1111
11111000 1111
11111001 1111
11111010 1111
11111011 1111
11111100 1111
11111101 1111
11111110 1111
11111111 1111

U58:
Code:
00000000 0001
00000001 0001
00000010 0001
00000011 0001
00000100 0001
00000101 0001
00000110 0001
00000111 0001
00001000 0001
00001001 0001
00001010 0001
00001011 0001
00001100 0001
00001101 0001
00001110 0001
00001111 0001
00010000 0001
00010001 0001
00010010 0001
00010011 0001
00010100 0001
00010101 0001
00010110 0001
00010111 0001
00011000 0001
00011001 0001
00011010 0001
00011011 0001
00011100 0001
00011101 0001
00011110 0001
00011111 0001
00100000 0001
00100001 0001
00100010 0001
00100011 0001
00100100 0001
00100101 0001
00100110 0001
00100111 0001
00101000 0001
00101001 0001
00101010 0001
00101011 0001
00101100 0001
00101101 0001
00101110 0001
00101111 0001
00110000 0001
00110001 0001
00110010 1001
00110011 1001
00110100 1001
00110101 1001
00110110 1001
00110111 1001
00111000 1001
00111001 1001
00111010 1001
00111011 1001
00111100 1001
00111101 1001
00111110 1001
00111111 1001
01000000 1001
01000001 1001
01000010 1001
01000011 1001
01000100 1001
01000101 1001
01000110 1001
01000111 1001
01001000 1001
01001001 1001
01001010 1001
01001011 1001
01001100 1001
01001101 1001
01001110 1000
01001111 1000
01010000 1010
01010001 1010
01010010 1010
01010011 1010
01010100 1001
01010101 1001
01010110 1001
01010111 1001
01011000 1001
01011001 1001
01011010 1001
01011011 1001
01011100 1001
01011101 1001
01011110 1001
01011111 1001
01100000 1001
01100001 1001
01100010 1001
01100011 1001
01100100 1111
01100101 1111
01100110 1111
01100111 1111
01101000 1111
01101001 1111
01101010 1111
01101011 1111
01101100 1111
01101101 1111
01101110 1111
01101111 1111
01110000 1111
01110001 1111
01110010 1111
01110011 1111
01110100 1111
01110101 1111
01110110 1111
01110111 1111
01111000 1111
01111001 1111
01111010 1111
01111011 1111
01111100 1111
01111101 1111
01111110 1111
01111111 1111
10000000 0101
10000001 0101
10000010 0101
10000011 0101
10000100 0101
10000101 0101
10000110 0101
10000111 0101
10001000 0101
10001001 0101
10001010 0101
10001011 0101
10001100 0101
10001101 0101
10001110 0101
10001111 0101
10010000 0101
10010001 0101
10010010 0101
10010011 0101
10010100 0101
10010101 0101
10010110 0101
10010111 0101
10011000 0101
10011001 0101
10011010 0101
10011011 0101
10011100 0101
10011101 0101
10011110 0101
10011111 0101
10100000 0101
10100001 0101
10100010 0101
10100011 0101
10100100 0101
10100101 0101
10100110 0101
10100111 0101
10101000 0101
10101001 0101
10101010 0101
10101011 0101
10101100 0101
10101101 0101
10101110 0101
10101111 0101
10110000 0101
10110001 0101
10110010 1101
10110011 1101
10110100 1101
10110101 1101
10110110 1101
10110111 1101
10111000 1101
10111001 1101
10111010 1101
10111011 1101
10111100 1101
10111101 1101
10111110 1101
10111111 1101
11000000 1101
11000001 1101
11000010 1101
11000011 1101
11000100 1101
11000101 1101
11000110 1101
11000111 1101
11001000 1101
11001001 1101
11001010 1101
11001011 1101
11001100 1101
11001101 1101
11001110 1100
11001111 1100
11010000 1010
11010001 1010
11010010 1010
11010011 1010
11010100 1001
11010101 1001
11010110 1001
11010111 1001
11011000 1001
11011001 1001
11011010 1001
11011011 1001
11011100 1001
11011101 1001
11011110 1001
11011111 1001
11100000 1001
11100001 1001
11100010 1101
11100011 1101
11100100 1111
11100101 1111
11100110 1111
11100111 1111
11101000 1111
11101001 1111
11101010 1111
11101011 1111
11101100 1111
11101101 1111
11101110 1111
11101111 1111
11110000 1111
11110001 1111
11110010 1111
11110011 1111
11110100 1111
11110101 1111
11110110 1111
11110111 1111
11111000 1111
11111001 1111
11111010 1111
11111011 1111
11111100 1111
11111101 1111
11111110 1111
11111111 1111

U69:
Code:
00000000 1111
00000001 1111
00000010 1111
00000011 1111
00000100 1111
00000101 1111
00000110 1111
00000111 1111
00001000 1111
00001001 1111
00001010 1111
00001011 1111
00001100 1111
00001101 1111
00001110 1111
00001111 1111
00010000 1111
00010001 1111
00010010 1111
00010011 1111
00010100 1111
00010101 1111
00010110 1111
00010111 1111
00011000 1111
00011001 1111
00011010 1111
00011011 1111
00011100 1111
00011101 1111
00011110 1111
00011111 1111
00100000 1111
00100001 1111
00100010 1111
00100011 1111
00100100 1111
00100101 1111
00100110 1111
00100111 1111
00101000 1111
00101001 1111
00101010 1111
00101011 1111
00101100 1111
00101101 1111
00101110 1111
00101111 1111
00110000 1111
00110001 1111
00110010 1111
00110011 1111
00110100 1111
00110101 1111
00110110 1111
00110111 1111
00111000 1111
00111001 1111
00111010 1111
00111011 1111
00111100 1111
00111101 1111
00111110 1111
00111111 1111
01000000 1011
01000001 1000
01000010 1000
01000011 1010
01000100 1000
01000101 0000
01000110 1000
01000111 1100
01001000 1011
01001001 1000
01001010 1000
01001011 1010
01001100 1000
01001101 1000
01001110 0000
01001111 1100
01010000 1000
01010001 1000
01010010 1000
01010011 1000
01010100 1000
01010101 0000
01010110 1000
01010111 1100
01011000 1000
01011001 1000
01011010 1000
01011011 1000
01011100 1000
01011101 1000
01011110 0000
01011111 1100
01100000 1000
01100001 1000
01100010 1000
01100011 0000
01100100 1000
01100101 1000
01100110 1000
01100111 1100
01101000 1000
01101001 1000
01101010 1000
01101011 0000
01101100 1000
01101101 1000
01101110 1000
01101111 1100
01110000 1000
01110001 1000
01110010 1000
01110011 0000
01110100 1000
01110101 1000
01110110 1000
01110111 1100
01111000 1000
01111001 1000
01111010 1000
01111011 0000
01111100 1000
01111101 1000
01111110 1000
01111111 1100
10000000 1000
10000001 1000
10000010 1000
10000011 1000
10000100 1000
10000101 0000
10000110 1000
10000111 1100
10001000 1000
10001001 1000
10001010 1000
10001011 1000
10001100 1000
10001101 1000
10001110 0000
10001111 1100
10010000 1000
10010001 1011
10010010 1000
10010011 1000
10010100 1010
10010101 0000
10010110 1000
10010111 1100
10011000 1000
10011001 1011
10011010 1000
10011011 1000
10011100 1010
10011101 1000
10011110 0000
10011111 1100
10100000 1000
10100001 1000
10100010 1000
10100011 0000
10100100 1000
10100101 1000
10100110 1000
10100111 1100
10101000 1000
10101001 1000
10101010 1000
10101011 0000
10101100 1000
10101101 1000
10101110 1000
10101111 1100
10110000 1000
10110001 1000
10110010 1000
10110011 0000
10110100 1000
10110101 1000
10110110 1000
10110111 1100
10111000 1000
10111001 1000
10111010 1000
10111011 0000
10111100 1000
10111101 1000
10111110 1000
10111111 1100
11000000 1000
11000001 1000
11000010 1000
11000011 1000
11000100 1000
11000101 0000
11000110 1000
11000111 1100
11001000 1000
11001001 1000
11001010 1000
11001011 1000
11001100 1000
11001101 1000
11001110 0000
11001111 1100
11010000 1000
11010001 1000
11010010 1000
11010011 1000
11010100 1000
11010101 0000
11010110 1000
11010111 1100
11011000 1000
11011001 1000
11011010 1000
11011011 1000
11011100 1000
11011101 1000
11011110 0000
11011111 1100
11100000 1000
11100001 1000
11100010 1000
11100011 0000
11100100 1000
11100101 1000
11100110 1000
11100111 1100
11101000 1000
11101001 1000
11101010 1000
11101011 0000
11101100 1000
11101101 1000
11101110 1000
11101111 1100
11110000 1000
11110001 1000
11110010 1000
11110011 0000
11110100 1000
11110101 1000
11110110 1000
11110111 1100
11111000 1000
11111001 1000
11111010 1000
11111011 0000
11111100 1000
11111101 1000
11111110 1000
11111111 1100

I'll have a look at the others, sadly the Site90 video card is a different model. Did we ever determine what the CERDIP chips are?

--Phil
 
I don't think those are holding code. It may be that they're feeding the video bit counter into it as addresses and outputting the video H&V blanking an dsyne signals. I'll give it a closer look later. I think if you trace the ADDRESS input lines, you'll find they go to a counter chip and the outputs head over the the video output signal area.

They also don't look like character roms. I think we identified that likely chip.

It may be that loading them into a spreadsheet and using the four output signals to create a four signal waveform will make the function in the video section obvious.
 
I agree, they do look to be doing other things, especially given their placement on the board.

The big unmarked ROM in the corner looks to be the same as the one on the Site90 so I might be able to get the pinout for it that way; I can get a couple shift registers and try offload it also, for giggles.

--Phil
 
Last edited:
I looked through the CPU card boot Prom last night and it seems to confirm that upon power up, its purpose is to orchestrate loading run-time code from floppy. They were probably challenged to fit that in the 512 bytes, because they skipped quite a few normal initialization steps.

Very quickly they load the stack pointer to a block of Dram, they don't bother testing it first or postponing use of the stack. I've detected what are the fatal error subroutines and I think it matches what you said the system does after giving up.

Before it goes into a HALT that it appears to be forever until powered up again, it paints 16KB of memory at 8000 with an ASCII number which I suspect it the fatal error number. It would follow that 8000h is the start of the Video display if they wanted that error number to be visible, but they also execute at 8000h which could be done as a temporary boot stage, but is odd considering there is 32KB on the CPU card.

I think you described a situation where numbers like "0", "1", "2" were filled on the display. There are piece of code that can load another value before calling that fill and halt routine.

I doesn't appear to post a message on the screen, at least not in this block of code.

I'll list the memory map (with I/O) that it initializes. It might be possible to deduce some of the devices addressed merely by the initialization patterns sent to them (the Intel peripheral chip set on the CPU card).

I'm guessing that the bootup is mostly about checking that a drive is ready and then that a floppy is detected. I'm looking for Floppy interface control code (boot loader). I'll let you know when I find something useful or suggest tracing some signals to further the details of which port is which.

Until then, can you describe the boot activity on the screen that you've seen? If the Dram pointed to be the stack is corrupt, that behavior may be too random.

I'll try to deduce from the code whether the failure is Dram related at all, as it should predict activity to a point and if so, the problem may be with the signals its trying to read through some of the port activity.

I'll be particularly busy this week until late Thursday.
 
Here's my CPU card Prom annotations from last night:
Code:
			ORG	00000H
		;---------------------------------------;
		;
		;---------------------------------------;
		Y7EB0	EQU	07EB0H		;	DW
		Y7EB2	EQU	07EB2H		;	DB
		Y7EB3	EQU	07EB3H		;	DW
		Y7EB5	EQU	07EB5H		;	DB
		Y7EB6	EQU	07EB6H		;	DB
		Y7EB7	EQU	07EB7H		;	DB
		Y7EB8	EQU	07EB8H		;	DB
		Y7EB9	EQU	07EB9H		;	DW
		Y7EBB	EQU	07EBBH		;	DB
		Y7EBC	EQU	07EBCH		;	DB
		X8000	EQU	08000H
		;---------------------------------------;
		;8080 Boot-up at address 0000h
		;---------------------------------------;
0000  F3		DI				;disable interrupt if runaway to here
0001  F3		DI				;same but if 2byte opcode skewed
0002  97		SUB	A			;clear accumulator
0003  D303		OUT	(003H),A		;output port 03 <-- 000h
0005  31AF7E		LD	SP,07EAFH		;set stack near top of 6000-7FFFh block
							;ram variables and buffers at 7EB0-7FFFh
0008  DB01		IN	A,(001H)		;input port 01 b0
000A  1F		RRA				;rotate b0 into Carry
		;---------------------------------------;
		;Assume this is a jump to ram after a program has been loaded from the disk
		;---------------------------------------;
000B  D20080		JP	NC,X8000		;execute at 8000h if b0=0
		;---------------------------------------;
		;Otherwise process until disk program is loaded.
		;---------------------------------------;
000E  3E0C		LD	A,00CH			;value to write at port 16
0010  D316		OUT	(016H),A		;output port 16 <-- 00Ch
0012  3E64		LD	A,064H			;100dec
0014  CDE701		CALL	DELAYA			;call delay function at 01E7h
0017  DB05	WAIT:	IN	A,(005H)		;input port 05 b0 b1
0019  E603		AND	003H			;filter for b1.b0
001B  C22900		JP	NZ,A0029		;exit WAIT Loop when either bit high to A0029
							;b1.b0 may be status disk loaded in drive A and B
001E  3E0B		LD	A,00BH			;value for port B (must be drive related?)
0020  D304		OUT	(004H),A		;output port 04 <-- 00Bh
0022  3E03		LD	A,003H			;value for port B (must be drive related?)
0024  D304		OUT	(004H),A		;output port 04 <-- 003h
0026  C31700		JP	WAIT			;go back as scan for diskette?
		;---------------------------------------;
		;Condition met, delay and test again before proceding else begin condition test again
		;---------------------------------------;
0029  3E19	A0029:	LD	A,019H			;VALUE FOR LOOP DELAYA FUNCTION
002B  CDE701		CALL	DELAYA			;DO DELAYA THEN ASSURE DISKS STILL IN DRIVE
002E  DB05		IN	A,(005H)		;input port 05 b0 b1
0030  E603		AND	003H			;value for port B (must be drive related?)
0032  CA1700		JP	Z,WAIT			;if neither disk ready, go back to WAIT again
		;---------------------------------------;
		;Assumed disk in drive for duration. First wait condition fully met. Proceed.
		;A={1,2,3}
		;---------------------------------------;
0035  47		LD	B,A			;save pattern of available drives in register B
0036  3D		DEC	A
0037  0F		RRCA
0038  F60C		OR	00CH
003A  B0		OR	B
003B  D316		OUT	(016H),A		;output port 16 <-- 0xxh
003D  32B57E		LD	(Y7EB5),A
0040  3E06		LD	A,006H
0042  CDE701		CALL	DELAYA
0045  CDA901		CALL	A01A9
0048  97		SUB	A
0049  32B77E		LD	(Y7EB7),A
004C  3C		INC	A
004D  32B87E		LD	(Y7EB8),A
0050  21BD7E		LD	HL,07EBDH
0053  CD0A01		CALL	A010A
0056  E5		PUSH	HL
0057  E1	A0057:	POP	HL
0058  7E		LD	A,(HL)
0059  23		INC	HL
005A  FE0A		CP	00AH
005C  CA6900		JP	Z,A0069
005F  FE0B		CP	00BH
0061  CAB400		JP	Z,A00B4
		;---------------------------------------;
		;Fill 8000h block with '2' to 8000-9EFFh and HALT forever
		;---------------------------------------;
0064  0632	ERROR2:	LD	B,032H
0066  C3BD00		JP	ERRHLT
		;---------------------------------------;
		;
		;---------------------------------------;
0069  0606	A0069:	LD	B,006H
006B  11B77E		LD	DE,07EB7H
006E  CDDC01		CALL	HL2DE
0071  E5		PUSH	HL
0072  215D7F	A0072:	LD	HL,07F5DH
0075  CD0A01		CALL	A010A
0078  EB		EX	DE,HL
0079  3E08		LD	A,008H
007B  21B77E		LD	HL,07EB7H
007E  34		INC	(HL)
007F  96		SUB	(HL)
0080  C28600		JP	NZ,A0086
0083  77		LD	(HL),A
0084  23		INC	HL
0085  34		INC	(HL)
0086  3ABC7E	A0086:	LD	A,(Y7EBC)
0089  B7		OR	A
008A  C29500		JP	NZ,A0095
008D  3ABB7E		LD	A,(Y7EBB)
0090  B8		CP	B
0091  D29500		JP	NC,A0095
0094  47		LD	B,A
0095  2AB97E	A0095:	LD	HL,(Y7EB9)
0098  EB		EX	DE,HL
0099  CDDC01		CALL	HL2DE
009C  EB		EX	DE,HL
009D  22B97E		LD	(Y7EB9),HL
00A0  2ABB7E		LD	HL,(Y7EBB)
00A3  7D		LD	A,L
00A4  90		SUB	B
00A5  6F		LD	L,A
00A6  7C		LD	A,H
00A7  DE00		SBC	A,000H
00A9  67		LD	H,A
00AA  22BB7E		LD	(Y7EBB),HL
00AD  B5		OR	L
00AE  C27200		JP	NZ,A0072
00B1  C35700		JP	A0057
		;---------------------------------------;
		;
		;---------------------------------------;
00B4  5E	A00B4:	LD	E,(HL)
00B5  23		INC	HL
00B6  56		LD	D,(HL)
00B7  23		INC	HL
00B8  E5		PUSH	HL
00B9  EB		EX	DE,HL
00BA  E9		JP	(HL)
		;---------------------------------------;
		;Fill 8000h block with '0' to 8000-9EFFh and HALT forever
		;---------------------------------------;
00BB  0630	ERROR0:	LD	B,030H			;this isn't an 8080 opcode, ascii "0" (zero)
00BD  210080	ERRHLT:	LD	HL,08000H		;point to Dram at 8000h
00C0  3E9F		LD	A,09FH			;load loop exit value
00C2  70	ERRHL0:	LD	(HL),B			;write 030h to Dram 8000-9FFFh
00C3  23		INC	HL			;bump Dram pointer
00C4  BC		CP	H			;09Fh-09Fh=0 is Positive so takes the jump
00C5  F2C200		JP	P,ERRHL0			;loop till H=A0h
00C8  3E08		LD	A,008H			;value to port 04
00CA  D304		OUT	(004H),A		;output port 04 <-- 008h
00CC  76		HALT				;8080 exits only if INT but no EI in Prom
							;HALT forever
		;---------------------------------------;
		;
		;---------------------------------------;
00CD  0E32	A00CD:	LD	C,032H
00CF  3AB67E	A00CF:	LD	A,(Y7EB6)
00D2  47		LD	B,A
00D3  3AB87E		LD	A,(Y7EB8)
00D6  57		LD	D,A
00D7  FE46		CP	046H
00D9  D46400		CALL	NC,ERROR2
00DC  97		SUB	A
00DD  7A		LD	A,D
00DE  1F		RRA
00DF  90		SUB	B
00E0  C8		RET	Z
00E1  21B67E		LD	HL,07EB6H
00E4  17		RLA
00E5  3AB57E		LD	A,(Y7EB5)
00E8  DAF100		JP	C,A00F1
00EB  F620		OR	020H
00ED  34		INC	(HL)
00EE  C3F400		JP	A00F4
		;---------------------------------------;
		;
		;---------------------------------------;
00F1  E6DF	A00F1:	AND	0DFH
00F3  35		DEC	(HL)
00F4  D316	A00F4:	OUT	(016H),A		;output port 16 <-- 0xxh
00F6  32B57E		LD	(Y7EB5),A
00F9  D314		OUT	(014H),A		;output port 14 <-- 0xxh
00FB  3E07		LD	A,007H
00FD  CDE701		CALL	DELAYA
0100  0D		DEC	C
0101  C2CF00		JP	NZ,A00CF
0104  CDA901		CALL	A01A9
0107  C3CD00		JP	A00CD
		;---------------------------------------;
		;
		;---------------------------------------;
010A  22B07E	A010A:	LD	(Y7EB0),HL
010D  1E0A		LD	E,00AH
010F  D5		PUSH	DE
0110  CDCD00		CALL	A00CD
0113  D1		POP	DE
0114  3AB77E		LD	A,(Y7EB7)
0117  4F		LD	C,A
0118  0600		LD	B,000H
011A  3AB87E		LD	A,(Y7EB8)
011D  21A101		LD	HL,T01A1
0120  1F		RRA
0121  DA2701		JP	C,A0127
0124  219901		LD	HL,T0199
0127  09	A0127:	ADD	HL,BC
0128  7E		LD	A,(HL)
0129  32B27E		LD	(Y7EB2),A
012C  3AB27E	A012C:	LD	A,(Y7EB2)
012F  2AB07E		LD	HL,(Y7EB0)
0132  D315		OUT	(015H),A		;output port 15 <-- 0xxh
0134  3EDB		LD	A,0DBH
0136  D311		OUT	(011H),A		;output port 11 <-- 0DBh
0138  3E42		LD	A,042H
013A  D328		OUT	(028H),A		;output port 28 <-- 042H
013C  3E9B		LD	A,09BH
013E  D323		OUT	(023H),A		;output port 23 <-- 09Bh
0140  3E40		LD	A,040H
0142  D323		OUT	(023H),A		;output port 23 <-- 040H
0144  7D		LD	A,L
0145  D322		OUT	(022H),A		;output port 22 <-- 0xxh
0147  7C		LD	A,H
0148  D322		OUT	(022H),A		;output port 22 <-- 0xxh
014A  3AB57E		LD	A,(Y7EB5)
014D  F610		OR	010H
014F  E6BF		AND	0BFH
0151  32B57E		LD	(Y7EB5),A
0154  D316		OUT	(016H),A		;output port 16 <-- 0xxh
0156  D317		OUT	(017H),A		;output port 17 <-- 0xxh
0158  DB05	A0158:	IN	A,(005H)		;input port 05 b7
015A  17		RLA
015B  DA5801		JP	C,A0158
015E  23		INC	HL
015F  0602		LD	B,002H
0161  CDC601		CALL	A01C6
0164  2B		DEC	HL
0165  3AB27E		LD	A,(Y7EB2)
0168  BE		CP	(HL)
0169  C29201		JP	NZ,A0192
016C  2B		DEC	HL
016D  3AB87E		LD	A,(Y7EB8)
0170  BE		CP	(HL)
0171  C29201		JP	NZ,A0192
0174  23		INC	HL
0175  23		INC	HL
0176  23		INC	HL
0177  0696		LD	B,096H
0179  3AB77E		LD	A,(Y7EB7)
017C  B7		OR	A
017D  C28801		JP	NZ,A0188
0180  0611		LD	B,011H
0182  CDC601		CALL	A01C6
0185  0684		LD	B,084H
0187  23		INC	HL
0188  22B37E	A0188:	LD	(Y7EB3),HL
018B  CDC601		CALL	A01C6
018E  2AB37E		LD	HL,(Y7EB3)
0191  C9		RET
		;---------------------------------------;
		;
		;---------------------------------------;
0192  1D	A0192:	DEC	E
0193  C22C01		JP	NZ,A012C
0196  C3BB00		JP	ERROR0
		;---------------------------------------;
		;
		;---------------------------------------;
0199  00	T0199:	DB	00,03,06,09,0C,0F,02,05
01A1  08	T01A1:	DB	08,0B,0E,01,04,07,0A,0D
		;---------------------------------------;
		;
		;---------------------------------------;
01A9  97	A01A9:	SUB	A
01AA  32B67E		LD	(Y7EB6),A
01AD  3AB57E		LD	A,(Y7EB5)
01B0  E6DF		AND	0DFH
01B2  D316		OUT	(016H),A		;output port 16 <-- 0xxh
01B4  32B57E		LD	(Y7EB5),A
		;---------------------------------------;
		;Wait for port 4 b4 to go high, then return
		;---------------------------------------;
01B7  DB05	WAITB4:	IN	A,(005H)		;input port 05 b4
01B9  E610		AND	010H			;test b5 only
01BB  C0		RET	NZ			;exit loop when port 5 b4 is high
01BC  D314		OUT	(014H),A		;output port 14 <-- 0xxh
01BE  3E07		LD	A,007H			;
01C0  CDE701		CALL	DELAYA			;wait and try again
01C3  C3B701		JP	WAITB4			;
		;---------------------------------------;
		;
		;---------------------------------------;
01C6  C5	A01C6:	PUSH	BC
01C7  97		SUB	A
01C8  86	A01C8:	ADD	A,(HL)
01C9  23		INC	HL
01CA  05		DEC	B
01CB  C2C801		JP	NZ,A01C8
01CE  C1		POP	BC
01CF  BE		CP	(HL)
01D0  C8		RET	Z
01D1  0631		LD	B,031H
01D3  1D		DEC	E
01D4  CABD00		JP	Z,ERRHLT		;ERROR1
01D7  212C01		LD	HL,A012C
01DA  E3		EX	(SP),HL
01DB  C9		RET
		;---------------------------------------;
		;BLOCK MOVE (HL)-->(DE) Countdown B
		;---------------------------------------;
01DC  C5	HL2DE:	PUSH	BC			;save B
01DD  7E	HLOOP:	LD	A,(HL)			;copy from (HL)
01DE  12		LD	(DE),A			;copy to (DE)
01DF  23		INC	HL			;bump
01E0  13		INC	DE			;bump
01E1  05		DEC	B			;countdown B
01E2  C2DD01		JP	NZ,HLOOP		;loop till down
01E5  C1		POP	BC			;restore B
01E6  C9		RET				;return
		;---------------------------------------;
		;OPCODE DELAYA LOOP:
		;---------------------------------------;
01E7  1ECF	DELAYA:	LD	E,0CFH
01E9  E3	DELAY0:	EX	(SP),HL
01EA  E3		EX	(SP),HL
01EB  1D		DEC	E
01EC  C2E901		JP	NZ,DELAY0
01EF  3D		DEC	A
01F0  C2E701		JP	NZ,DELAYA
01F3  C9		RET
		;---------------------------------------;
		; >> NO EXECUTION PATH TO HERE <<
		;---------------------------------------;
01F4  00		NOP
01F5  00		NOP
01F6  00		NOP
01F7  00		NOP
01F8  00		NOP
01F9  00		NOP
01FA  00		NOP
01FB  00		NOP
01FC  00		NOP
01FD  00		NOP
01FE  00		NOP
01FF  00		NOP
0200  00		NOP
		;---------------------------------------;
		;
		;---------------------------------------;
			END
		;
		; UNRESOLVED LABELS
		;
		; LABLE CROSS REFRENCE
		;WAIT      A0026   A0032
		;A0029      A001B
		;A0057      A00B1
		;ERROR2      A00D9
		;A0069      A005C
		;A0072      A00AE
		;A0086      A0080
		;A0095      A008A   A0091
		;A00B4      A0061
		;ERROR0      A0196
		;ERRHLT      A0066   A01D4
		;ERRHL0      A00C5
		;A00CD      A0107   A0110
		;A00CF      A0101
		;A00F1      A00E8
		;A00F4      A00EE
		;A010A      A0053   A0075
		;A0127      A0121
		;A012C      A0193   T01D7
		;A0158      A015B
		;A0188      A017D
		;A0192      A0169   A0171
		;T0199      T0124
		;T01A1      T011D
		;A01A9      A0045   A0104
		;WAITB4     A01C3
		;A01C6      A0161   A0182   A018B
		;A01C8      A01CB
		;HL2DE      A006E   A0099
		;HLOOP      A01E2
		;DELAYA      A0014   A002B   A0042   A00FD
		;           A01C0   A01F0
		;DELAY0      A01EC
		;Z7EAF      Z0005
		;Y7EB0      Y010A   Y012F
		;Y7EB2      Y0129   Y012C   Y0165
		;Y7EB3      Y0188   Y018E
		;Y7EB5      Y003D   Y00E5   Y00F6   Y014A
		;           Y0151   Y01AD   Y01B4
		;Y7EB6      Y00CF   Z00E1   Y01AA
		;Y7EB7      Y0049   Z006B   Z007B   Y0114
		;           Y0179
		;Y7EB8      Y004D   Y00D3   Y011A   Y016D
		;Y7EB9      Y0095   Y009D
		;Y7EBB      Y008D   Y00A0   Y00AA
		;Y7EBC      Y0086
		;Z7EBD      Z0050
		;Z7F5D      Z0072
		;X8000      X000B   Z00BD
 
Back
Top