Static RAM addition

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 appeared to work, but had the same unreliable read-errors as the 32K dynamic RAM board. This means that the fault is not with the board, but somewhere else. After thoroughly cleaning the board and reseating all ICs the problem appears to be gone. I will try the 32K dynamic RAM card at a later time.

The daughterboard with the ROM was changed to the circuit below. 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.

circuit diagram

On the right you can see the LY62256 and the 74LS32.

photo of the revised circuit

I used this program 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