Quote:
Originally Posted by marty
Hi PHIL:
Could you please post the programs you are using here for the rest of us ????
Also, I have not had any problems with any of my 4k memory cards...
have you tried each card at all the addresses that you intend to use,,, maybe one or more is mapping to more than one address... THANK YOU Marty
|
The failing card is correctly detecting its starting address, which can be viewed with a scope at the test point just left of the address switches. I also can see the bus driver disable signal being negated, so it should be putting data on the bus, yet it looks like the bus is floating. We have decided not to worry about fixing it at this point. The 12K we have working is sufficient for our purposes.
The test programs for the 3P+S I/O board I have been using are in the documentation I found for it on Dave Dunfield's site. See
http://www.classiccmp.org/dunfield/s100c/ptco/3pps.pdf
Here's the memory test program I wrote:
Code:
INSTRUCTION
LABEL ADR OCTAL MNEMONIC DESCRIPTION
000 052 051 000 LHLD COUNT Get number of locations to write
003 353 XCHG Move to DE registers
004 052 053 000 LHLD START Get starting address
LOOP 007 072 047 000 LDA BYTE1 Get first byte to write
012 167 MOV M, A Write in memory address
013 226 SUB M Read memory and subtract
014 312 022 000 JZ CONT1 OK if zero
ERR1 017 303 017 000 JMP ERR1 Error if loops here
CONT1 022 072 050 000 LDA BYTE2 Get second byte to write
025 167 MOV M, A Write in memory address
026 226 SUB M Read memory and subtract
027 312 035 000 JZ CONT2 OK if zero
ERR2 032 303 032 000 JMP ERR2 Error if loops here
CONT2 035 043 INX H Increment write address
036 033 DCX D Decrement count
037 172 MOV A, D Check if DE=0
040 263 ORA E by ORing D with E
041 302 007 000 JNZ LOOP Go around again
GOOD 044 303 044 000 JMP GOOD Good if loops here
BYTE1 047 252 First byte to write = 10 101 010
BYTE2 050 125 Second byte to write = 01 010 101
COUNT 051 323 037 Count = 16339
START 053 055 000 Start address
START must contain the first location past the program. COUNT must contain the total memory you have available minus the length of the program (remember, least significant byte first). The test is good if it loops at GOOD. An error has been detected if it loops at either ERR1 or ERR2.