First, some code shown to work on the similar board:
Code: Select all
init: ; test address decode
bra init
lda 0x8000
lda 0x8400
lda 0x8800
lda 0x8c00
lda 0x9000
lda 0x9400
lda 0x9800
lda 0x9c00
lda 0xa000
lda 0xa400
lda 0xa800
lda 0xac00
lda 0xb000
lda 0xb400
lda 0xb800
lda 0xbc00
bra init
So on the processor, ~IRQ, ~NMI, ~SO, BE, and RDY are all pulled high; ~RST is held high by the APX chip.
So far, so good. The UART, RAM, VIA, and CF parts are not shown; they're currently not fitted. So the code is (should be) running entirely in the rom and trying to read each 1k boundary between $8000 and $C000. Which should drive the select pins in sequence on that '138, but those pins remain steadfastly high. No select.
The select should occur on addresses %1000 00xx xxxx xxxx to %1001 11xx xxxx xxxx; the remaining reads don't talk to anything and were left in for testing. However, they don't, and as far as I can see the reason is that of the address lines, A9-10-11-12-13-14-15 (yes, seven of them) are all identical and are all an inversion of the ~EEPROM signal.
One curious point: running on the not-working board, R~/W from the processor goes low synchronously with ~EEPROM but not the same signal. On a read-only program. (Yellow is ~EEPROM; blue is R/~W and had no earth attached). It doesn't do that on the working system; as expected, it remains high. Obviously with that, there is never an occasion when E2 on the '138 is high and ~E1 and ~E0 are low, hence no output. I have changed (and proved in the working board) EEPROM, processor, '138, '00, and even the damn circuit board to no effect.
I am very very confused at this point. It looks as if there is something at issue with the board, but it's nothing I can see. No errors from the schematic tester; no errors from the pcb test except relating to the prototype area I added.
No doubt this is something very stupid and obvious, but a fresh couple of hundred pairs of eyes would be very much appreciated!
Thank you!
Neil