:: Maximum memory, extended address element: #set cpu 4k set cpu noeae # # The PDP-8/S Maintenance Manual (F-87S) mentions: # maindec-08-801-1 Instruction Test (Part 1) # maindec-8s-d01a Instruction Test 1 # maindec-8s-d02a Instruction Test 2 # maindec-08-801-2b Instruction Test 2B (Part 2) # maindec-8s-d03a Basic JMP/JMS Test # maindec-8s-d04a Random JMP Test # maindec-8s-d05a Random JMP/JMS Test # maindec-8s-d06a Random DCA Test # maindec-8s-d07a Random ISZ Test # maindec-08-802 Memory Checkerboard # maindec-8s-d11a 4K Memory Address Test (Low) # maindec-8s-d11j 4K Memory Address Test (High) # maindec-08-820-1 Extended Memory Control Test # maindec-08-820-2 Extended Memory Checkerboard # maindec-08-810 Tape Reader Test # maindec-08-810a Tape Reader Exerciser # maindec-08-812 Tape Punch Test # maindec-08-814 Teleprinter Test #:: AND, TAD, Operate and basic MQ instruction test (D0AB) #:: This test halts after the first 3 instructions to let the #:: operator verify that HLT and CLA works before continuing #:: onto the real tests. #echof -n "** PDP-8: Basic Instruction Test (1): " #load diags/maindec-8e-d0ab-pb.bin #:: Patch address 5276 with HLT to stop execution after a #:: full pass is done or else it will send BEL every 1440 #:: iterations. #dep 5276 7402 #dep sr 07777 #go -q 200 #if (PC != 0147 || AC != 0) echof "MAINDEC-8/E-D0AB failed."; exit 1 #go -q #if (PC != 05277) echof "MAINDEC-8/E-D0AB failed."; exit 1 #echof "passed" # #:: Autoindexing, Indirect addressing, and the DCA instruction with #:: "minimal" testing for interrupt, AND, TAD, ISZ, JMS, JMP and #:: processor IOT instructions. #echof -n "** PDP-8: Basic Instruction Test (2): " #load diags/maindec-8e-d0bb-pb.bin #:: Patch address 3740 with HLT, otherwise the test will loop every #:: 1550 iterations and send BEL to the TTY. We really do want the #:: test to halt. #dep 3740 7402 #dep sr 0 #go -q 200 #if (PC != 03741) echof "MAINDEC-8/E-D0BB failed."; exit 1 #echof "passed" # #:: The ADDER test #echof "** PDP-8: Adder tests: " #load diags/maindec-8e-d0cc-pb.bin #:: Patch address 4561 with HLT. Test loops between SIMAD, SIMROT, FCT and #:: RANDOM, ad infinitum. We really want the test to halt. #dep 4561 7402 #:: And ask the tests to be quiet, test extended (banked) memory. #dep sr 0200 #go -q 200 #if (PC != 04622) echof "MAINDEC-8/E-D0CC failed."; exit 1 #echof #echof "** PDP-8: Adder test passed." # #:: Random AND tests #echof -n "** PDP-8: Random AND test: " #load diags/maindec-8e-d0db-pb.bin #:: Halt after one 4096 loop pass, suppress output #dep sr 02400 #go -q 200 #if (PC != 00355) echof "MAINDEC-8/E-D0DB failed."; exit 1 #echof "passed." # #:: Random TAD tests #echof -n "** PDP-8: Random TAD test: " #load diags/maindec-8e-d0eb-pb.bin #:: Patch 6743 with HLT to stop the test after 4096 iterations. Would #:: normally output a "T" until machine halted. #dep 6743 7402 #:: Suppress output #dep sr 00400 #go -q 200 #if (PC != 06744) echof "MAINDEC-8/E-D0EB failed."; exit 1 #echof "passed." # #:: Random ISZ tests #:: Bit more of a challenge: cant just put a HLT instruction to #:: terminate the test loop. And cant squelch the output either. #if (SIM_REGEX_TYPE == "") echof "Missing Regular Expression support - skipping Random ISZ test\n"; goto ISZ_DONE #echof "** PDP-8: Random ISZ test: " #load diags/maindec-8e-d0fc-pb.bin #dep sr 0 #expect -r [25] "\r\nFC" echof; echof "** PDP-8: Random ISZ test: passed." #expect -r "F [0-7]{4}" echof; echof "** PDP-8: Random ISZ test: MAINDEC-8/E-D0FC failed."; exit 1 #go -q 200 #:ISZ_DONE # #:: Random DCA tests #echof -n "** PDP-8: Random DCA test: " #load diags/maindec-8e-d0gc-pb.bin #:: Patch 0404 with HLT to stop the test after 28,328 iterations (one complete pass) #dep 0404 7402 #dep sr 0 #go -q 200 #if (PC != 0405) echof "MAINDEC-8/E-D0GC failed."; exit 1 #echof "passed."