[I think I want a Gigatron to drive my newly arrived IMSAI 8080 replica kit.]
To those of you playing along at home, Jörg's clever signal mapping is implemented in the provisional SYS functions, but not in these "prototype/(pre-)alpha" boards yet. I'm too lazy to make new boards for as long as software support still only exists at the lowest possible level. Therefore you'll need wiring patches with these. With sockets the lid won't close any longer, so this requires some planning to get it right in one go.
The design difference is this:
Code: Select all
Bus Rev.1909 ROM v4+
= Rev.4 or DEVROM
hardware software
--- -------- ---------
A0 B0 SCLK
A1 B1 (unused)
A2 /SS0 same
A3 /SS1 same
A4 /SS2 same
A5 /SS3 same
A6 SCLK B0
A7 MOSI B1
A15 (unused) MOSI
Code: Select all
U1 pin 3 --> A15 = J3
U1 pin 4 --> A0 = J1 pin 10
R1 pin 1 --> GND = C3 south
You can see I didn't patch the banking at all, and I even just soldered in a 32K memory. The improvised resistor ground pad is damaged and scorched because I replaced these 4 times.
On the software front, last month the provisional SPI function has relocated in the development ROM. The addresses should be stable after this. The code I now toggle in for 16 blinking lights is this:
Code: Select all
50
:59 40 5e 78 59 78 2b 24
:e3 3 2b 26 11 9 b 2b
:22 59 78 b4 fa 11 15 b
:2b 22 b4 cb 11 9 b 2b
:22 59 7c b4 fa ff 50 0
a0
:75 59 0 2b 79 cf 76 59
:1 2b 79 cf 76 59 14 5e
:79 1a e 5e 7a cf 76 59
:15 5e 79 1a e 5e 7a cf
:76 1a f 8c ff 35 3f ab
:63 ff
a0R
Subroutine
Code: Select all
0050 59 40 LDI $40 MCP23S17 "write"
0052 5e 78 ST $78
0054 59 78 LDI $78 Send buffer (start)
0056 2b 24 STW $24
0058 e3 3 ADDI 3 Receive buffer (end)
005a 2b 26 STW $26
005c 11 9 b LDWI $b09 SYS_ExpanderControl_v4_40
005f 2b 22 STW $22
0061 59 78 LDI $78 Enable SPI0
0063 b4 fa SYS 40
0065 11 15 b LDWI $b15 SYS_SpiExchangeBytes_v4_134
0068 2b 22 STW $22
006a b4 cb SYS 134
006c 11 9 b LDWI $b09 SYS_ExpanderControl_v4_40
006f 2b 22 STW $22
0071 59 7c LDI $7c Disable SPI0
0073 b4 fa SYS 40
0075 ff RET Return (to main)
0076 50 0 .WORD $0050
Code: Select all
00a0 75 PUSH
00a1 59 0 LDI 0 MCP23S18 "IODIRA" register
00a3 2b 79 STW $79
00a5 cf 76 CALL $76 IODIRA = 0 (=output)
00a7 59 14 LDI $14 MCP23S17 "OLATA" register
00a9 5e 79 ST $79
00ab 1a e LD $0e Gigatron frameCount
00ad 5e 7a ST $7a
00af cf 76 CALL $76 OLATA = [frameCount]
00b1 1a f LD $0f Gigatron serialRaw
00b3 8c ff XORI $ff
00b5 35 3f a5 BEQ $00a7 Continue until key pressed
00b8 63 POP
00b8 FF RET Return (to WozMon)
This should fully document what's required to make these work. After the summer break I hope I can return to this development and expand on the software for card reading.