PDP-8 Memory fill and test Program
This program fills memory with a given pattern (each location can be the same or offset by a step value), and tests the
written value after all locations have been written with the given value.
next_w, 0000 1040 tad start / get starting address,
0001 3041 dca addr / and save to our working buffer.
0002 1042 tad curpat / get the current pattern,
0003 3043 dca mempat / and save to our working buffer.
w, 0004 1043 tad mempat / combine the pattern,
0005 1044 tad step / and the step,
0006 3043 dca mempat / to derive the new pattern.
0007 1043 tad mempat / get it,
0010 3441 dca i addr / and write it to the current memory location.
0011 2041 isz addr / get next address
0012 5004 jmp w / and loop
0013 1040 tad start / if all addresses done, begin read test.
0014 3041 dca addr / stash the starting address into our working buffer.
0015 1042 tad curpat / get the current pattern
0016 3043 dca mempat / and save to our working buffer.
r, 0017 1043 tad mempat / combine the pattern,
0020 1044 tad step / and the step,
0021 3043 dca mempat / to derive the new pattern.
0022 1043 tad mempat / fetch the new pattern,
0023 7041 cia / and negate it.
0024 1441 tad i addr / add it to the memory value being tested.
0025 7440 sza / a + -a should be zero, so skip the error jump
0026 5033 jmp error / it wasn't zero, something bad happened
0027 2041 isz addr / it was zero, this location is ok, go to next
0030 5017 jmp r / loop
0031 2042 isz curpat / all writes and reads done for this pattern, try next
0032 5000 jmp next_w / loop
error, 0033 7402 hlt / either done all patterns or an error
start, 0040 0050 / start of testable memory, suggest 0050
addr, 0041 0000 / current working address
curpat, 0042 0000 / current pattern
mempat, 0043 0000 / pattern in memory
step, 0044 0001 / step for subsequent locations, suggest 0000 or 0001
|