I could not get the 32K dynamic RAM card to work properly. It worked, but not at all reliably. There were many read errors, so bad that it was impossible to run even a short program from RAM.
After lots of fruitless debugging, I decided to leave it for the moment. There is a modern chip that contains 32K of statis RAM, with a pin-out that very closely resembles that of the ROM-replacement that I already added. The chip is a LY62256 (full documentation). The circuit and a photo of the resulting board are shown below.
The new circuit appears to work, but it has the same unreliable read-errors as the 32K dynamic RAM board. This means that the fault is not with the board, but somewhere else! I now recall that in order to get the keyboard working I had to replace one of the 74126 buffers. Are more of them unreliable? These chips were manufactured around 1978 and are 45 years old by now. Do chips from the 74-series go bad after a while? What is their expected lifetime? This leads to a new investigation.
Update: I now suspect that the IC sockets have become dusty or corroded. After thoroughly cleaning the board and reseating all ICs the problem appears to be far less, or even gone. I'm not sure.
On the daughterboard with the ROM was changed to this. Again, the connectors on the left refer to the P1 bus. Only a 74LS32 is necessary for the control signals. Signals marked with a bullet • are active-low; normally active-low is indicated by an overline, but that is cumbersome in sPlan.
On the right you can see the LY62256 and the 74LS32.
I used this program (source in memtest.2650) to exercise and test the memory. It steps through memory in blocks of 256 bytes at a time, displaying a spinner. Each block is set to '5A', and then read to verify that it really contains '5A'. If not, the offending memory location, expected value and actual value are displayed and the next block is tried. If the test passes, it is repeated with values 'A5', '00' and 'FF'. After all blocks from Startp to Endp have been tested, a period is displayed and the test is repeated. Break by pressing Esc.
ORG H'1510' WCHR EQU H'0396' writes character in R3 LFCR EQU H'0024' move cursor KBIN EQU H'030F' read character into R3 HXOT EQU H'006A' hex write byte in R2 INHX EQU H'01B6' RETU EQU H'0083' return to supervisor CURS EQU H'17FE' ESC EQU H'1B' 1510: 3F 00 24 bsta,un LFCR 1513 START: 1513: 0C 15 99 loda,r0 Startp 1516: CC 15 9B stra,r0 MLoc 1519: 20 eorz,r0 151A: CC 15 9C stra,r0 MLoc+1 151D: 07 2E lodi,r3 a'.' 151F: 3F 03 96 bsta,un WCHR 1522 LoopPage: 1522: 0D 15 A3 loda,r1 Cindx 1525: 85 01 addi,r1 1 1527: 45 03 andi,r1 3 1529: CD 15 A3 stra,r1 Cindx 152C: 0D 75 9F loda,r0 CHRS,r1 152F: CC 97 FE stra,r0 *CURS * Write 5A into the page * Check that all are 5A * Repeat using A5, 00, FF 1532: 04 5A lodi,r0 h'5A' 1534: 3B 1B bstr,un TestPage 1536: 04 A5 lodi,r0 h'A5' 1538: 3B 17 bstr,un TestPage 153A: 04 00 lodi,r0 h'00' 153C: 3B 13 bstr,un TestPage 153E: 04 FF lodi,r0 h'FF' 1540: 3B 0F bstr,un TestPage * Increment Mloc 1542 Inc: 1542: 0C 15 9B loda,r0 Mloc 1545: EC 15 9A coma,r0 Endp 1548: 18 49 bctr,eq START 154A: 84 01 addi,r0 1 154C: CC 15 9B stra,r0 MLoc 154F: 1B 51 bctr,un LoopPage 1551 TestPage: 1551: 05 00 lodi,r1 h'00' 1553 WLoop: 1553: 73 redd,r3 1554: E7 1B comi,r3 ESC 1556: 1C 00 83 bcta,eq RETU 1559: CD F5 9B stra,r0 *Mloc,r1 155C: D9 75 birr,r1 WLoop * Now compare 155E: C2 strz,r2 ;CLoop redd,r3 ; comi,r3 ESC ; bcta,eq RETU 155F Cloop: 155F: 0D F5 9B loda,r0 *Mloc,r1 1562: E2 comz,r2 1563: 98 03 bcfr,eq Err 1565: D9 78 birr,r1 Cloop 1567: 17 retc,un * 1568 Err: 1568: C9 32 strr,r1 Mloc+1 156A: C8 32 strr,r0 Vread 156C: CA 2F strr,r2 Vexp 156E: 0A 2B lodr,r2 Mloc 1570: 3F 00 6A bsta,un HXOT 1573: 0A 27 lodr,r2 Mloc+1 1575: 3F 00 6A bsta,un HXOT 1578: 07 20 lodi,r3 a' ' 157A: 3F 03 96 bsta,un WCHR 157D: 0A 1E lodr,r2 Vexp 157F: 3F 00 6A bsta,un HXOT 1582: 07 20 lodi,r3 a' ' 1584: 3F 03 96 bsta,un WCHR 1587: 0A 15 lodr,r2 Vread 1589: 3F 00 6A bsta,un HXOT 158C: 07 21 lodi,r3 a'!' 158E: 3F 03 96 bsta,un WCHR 1591: 07 20 lodi,r3 a' ' 1593: 3F 03 96 bsta,un WCHR 1596: 1F 15 42 bcta,un Inc 1599 Startp: 1599: 19 data h'19' 159A Endp: 159A: 7F data h'7f' 159B MLoc: 159B: 00 00 ACON 0 159D Vexp: 159D: 00 data 0 159E Vread: 159E: 00 data 0 159F CHRS: 159F: 7C 2F 2D 5C data "|/-\" 15A3 Cindx: 15A3: 00 data 0
This page is part of my P1 restoration website.
Eelco Vriezekolk.
Questions or remarks? Send me an email on
eelco[at-sign]ztpe[little dot]nl