ok, after resoldering the entire board (and yes, pbsn, not that crappy rohs stuff), cleaning off the flux residue -again, etc (i so need a wave soldering machine
, replacing -all- of the chips with new ones and encountering some overheating max232's for whatever yet unknown reason (real ones at that, the intersils don't do that, so back to the intersils - maybe the max232CPE's don't like foil capacitors
measured all busses and clock lines with 'no chips on the board'... 0 ohms to what should be connected, a few megaohms to what should not be connected, as should be, no weird interconnects or interference there. just the internal resistance of the ds1813 which is hard soldered to the board obviously and the pullups and capacitors, all of which only are measured at the points to which they should connect and nowhere else.. so the board seems ok... but guess i'll just populate a second board to see if that also screws up anyway. (yet another hour of hand soldering...)
i found this thread which just so happens to give the same error with the same setup.
(65256 SRAM + AT28C256) EEPROM /WRITE tied high with a 3.3K pullup permanently, CPU R/W ran through an inverter to provide write to the rom. but not gated with PHI2 at all. (looking at the datasheets that would only be nessesary to -write- the eprom which could also be done only at unacceptably slow clockspeeds, impose security problems and probably break the eeprom early on due to the users probably just using them as ram instead
..
not entirely sure if it is nessesary to gate the clock with either CE or /WRITE or /READ on either AT28C256 or 65256'es (other than for writing the eprom which seems to have cycles). the funny thing is the stuff does pass all memory tests, forever.
- writing the addess bus line to the first address of that segment for 0000 to 4000 (obviously not the rom), then reading them back to make sure no address lines are interconnected or broken.
- writing incremental values to -each individual address- one by one, reading them back instantly (any capacitance on the bus is cleared by the next instruction fetch anyway, no need to reset the bus in between like it is with caching cpus should a chip not be present at all)
- ehbasic's own memory test (writes $55 to it or something to check the ram size upon startup, something simple which doesn't take 2 minutes like ours
- the rom checksum always matches that of the same rom in the emulator, no problems there, it reads the rom just fine.
the thing can run these tests for days on end without problem, it runs things like wozmon or our own monitor perfectly fine, write values to ram, read them back hours later, loading some smaller programs, no issue.
so far every attempt to run a basic however, results in some pretty weird **** that doesn't occur on the emulator.
address map:
0000-7FFF RAM
8000-FF00 ROM
FF00-FF03 ACIA0
FF04-FF07 ACIA1
FF08-FF0B ACIA2
FF0C-FF0F ACIA3
FF10-FF1F VIA0
FF20-FF2F VIA1
FF30-FF3F VIA3
FF40-FF7F RESERVED FOR 4x 16 register ethernet chips such as the cs8900a in future versions but for now maps to rom
FF80-FFF9 COMMODORE COMPATIBLE KERNAL JUMP TABLE (LOAD SAVE CHROUT CHRIN etc IEC bus functions, also to run commodore basics).
FFFA-FFFF RESET VECTORS
address decoding is 2 nand gates dong the "$FFxx" part and 1 nor gate hooking things together and doing the XX%00X part.
feeding into a 74HC139 splitting it up into 4x a 16 bit range using the first one to split it up in it's second half into a 4x4 byte range
an inverter on RW to provide the weird read/write crap for sram and eeprom... bbbbut... no gating with any clock. the datasheets actually are pretty clear about no clocking being nessesary...
(unless ofcourse the 65C02 would hold the write line active while the address or data already changes, that would corrupt the RAM, but then again, that would also show up in -every other program and memory test out there- even when writing single bytes and instantly reading it back, after all if /WRITE would still be low it would overwrite the address the LDA came from to check it.)
all weird 65C02 signals pulled up with 3.3K (nmi reset so rdy ... one more i don't remember right now
either way despite the ds1813 having it's own internal pullup we've found it to be quite weak so that also has an extra one)
full size can oscillators capable of directly driving 25ma which should suffice for 20 such boards with just a single one go anyway.
(both for rs232 driving all 65C51s at once and for the system clock)
rs232 clock: 1.8342 mhz
system clock: 2.0000 mhz (the thing is planned for 6.000 or 8mhz (depending on the AT28C256 which doesn't seem available any faster than 150ns, kinda limiting it to '6 and a bit') but we can't source WORKING 65C51's in bulk, rated for more than 2mhz atm
(let's not overclock the acias shall we
at this point i do kinda suspect the ram somehow has to be gated with the clock tho. hmmmmm...
viewtopic.php?f=5&t=5186^^^ that forum thread. exactly the same error