; Run Section 4 of the CPU diagnostic (D420A3). ; ; Preconfiguration is used. ; ; Note that the diagnostic skips these tests unless an SCMB is present: ; - step 40, more I/O tests ; - step 41, bank SIO tests ; Set up the log(s). set -n console log=zcpu04.log set -n console debug=debug.log ; Configuration locations: ; ; Location Default Value Contents ; ------------- ------------- --------------------------------------------------- ; DB+0 002000 000001 Switch Register setting ; DB+1 002001 000000 Section Select Register setting ; DB+2 002002 001030 Version and update level ; DB+3 002003 000004 Section number ; DB+5 002005 000000 Step number ; DB+66 002066 000006 6 Magnetic Tape DRT number ; DB+67 002067 000003 3 System Clock DRT number ; DB+70 002070 000101 65 Selector Channel Maintenance Board DRT number ; ; NOTE: the step number in DB+5 is off-by-one low after step 30. ; Configure the devices for the diagnostic. ;set cpu II,256K set cpu 512K set scmb enable set scmb mx ; Boot the CPU diagnostics tape. attach -r ms0 30000-11016_Rev-1244_CPU-64K.tape deposit SWCH 003006 load load load load ; PATCH: this fixes a bug in step 36 (MABS test) of PD420A3 (DB+2 = 001030). ; It changes STOR DB+6 to STOR DB+7. ; The unpatched diagnostic always skips step 36, as it thinks ; that there is only a single memory bank present. ; deposit 015761 STOR DB+7 deposit 015761 051007 ; Preconfigure the diagnostic. ; ; Set the Internal Switch Register options: ; ; bit 0 = select the external switch register ; bit 1 = modify the Section Select Register ; bit 2 = optional firmware is installed ; bit 3 = not used ; bit 4 = not used ; bit 5 = not used ; bit 6 = not used ; bit 7 = not used ; bit 8 = not used ; bit 9 = not used ; bit 10 = not used ; bit 11 = loop on the last step ; bit 12 = not used ; bit 13 = halt at the end of each step ; + bit 15 = halt at the end of each pass deposit 2000 000001 ; Set the Section Select Register options: ; ; bit 0 = change the magnetic tape device number ; bit 1 = change the clock device number ; + bit 2 = use the clock to test I/O instructions ; + bit 3 = loop only once on each step ; + bit 4 = use the selector channel maintenance PCA to test I/O instructions ; bit 5 = change the selector channel maintenance PCA device number ; bit 6 = not used ; bit 7 = not used ; bit 8 = upper memory limit bank number MSB ; + bit 9 = upper memory limit bank number ; + bit 10 = upper memory limit bank number ; + bit 11 = upper memory limit bank number LSB ; + bit 12 = enable the power-fail test ; bit 13 = not used ; bit 14 = not used ; bit 15 = not used ; ; If memory is set to 16 banks (1024K), the Module Violation Test cannot be run! deposit 2001 034070 ; Set the debugging options. set cpu debug,nodebug=pserv,stop=UNIMPL set iop debug=dio;irq set clk debug set mpx debug=csrw;pio;sr set ms debug=csrw;xfer ; Start the diagnostic. echo echo Starting the diagnostic. echo Expect an unimplemented instruction stop if successful. go ; Unimplemented instruction tests (step 4). ; ; Verify UI stop (072,NOP). echo echo Verifying the CIR register and continuing the diagnostic. echo Expect an unimplemented instruction stop if successful. assert CIR=007200 go -b ; Verify UI stop (---,072). echo echo Verifying the CIR register and continuing the diagnostic. echo Expect an unimplemented instruction stop if successful. assert CIR=000072 go -b ; Verify UI stop (---,072). echo echo Verifying the CIR register and continuing the diagnostic. echo Expect an unimplemented instruction stop if successful. assert CIR=000072 go -b ; Verify UI stop (020407). echo echo Verifying the CIR register and continuing the diagnostic. echo Expect an unimplemented instruction stop if successful. assert CIR=020407 go -b ; Verify UI stop (036000). echo echo Verifying the CIR register and continuing the diagnostic. echo Expect an unimplemented instruction stop if successful. assert CIR=036000 go -b ; Verify UI stop (020420). echo echo Verifying the CIR register and continuing the diagnostic. echo Expect a PAUS instruction stop if successful. assert CIR=020420 set cpu stop=PAUSE go -b ; Verify the pause stop (030032) echo echo Verifying the CIR register and continuing with a power failure. echo Expect halt 14 if successful. assert CIR=030032 set cpu nostop=PAUSE power fail ; Verify HALT 14 for a successful power failure. echo echo Verifying the CIR register and continuing with a power restoration. echo Expect halt 15 for successful completion. assert CIR=030374 d PB-STA 0 ;set cpu noars power restore ;c ; End of the diagnostic. ; ; Verify HALT 15 for a successful pass. assert CIR=030375