Riddle me this...
Posted: Wed Dec 03, 2025 10:40 am
I've obviously done something stupid in the hardware, but I'm going blind looking for it. The situation is that what I expected to be an almost copy and paste from a previous design simply doesn't work: it appears to access the eeprom and reboot and run rom-only code. I am unable to test the ram as yet, as I can't get the UART to run. The reason that the UART doesn't run is that it's never selected, along with a (not fitted) VIA and a (not fitted yet) CF interface. The reason for that is... well, I'll explain later.
First, some code shown to work on the similar board:
and a couple of pics (apologies for the colour: screen grabs), first the decoding:
and the processor:
The processor, in the absence of the VIA, also has a pull-up on ~IRQ (pin 4). Not shown are the EEPROM which has its ~OE driven by the ~RD signal and ~CS by ~EEPROM. The clock is from an oscillator module at 1.8432MHz; the reset is handled by an APX823 with its watchdog input line left floating (per the datasheet) to avoid timeout resets.
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
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