--- /dev/null
+/ RK05 SURFACE SCAN
+/ Do a destructive write/read check on all sectors. Header words should be
+/ checked in all sectors except 0. 0 probably missed since won't be first
+/ after seek.
+/ For different patterns are used.
+/ To run start at 0200. It will print drive being tested to console
+/ and then halt. Set SR = 0 for continuous testing or 1 to halt after 1 pass.
+ DSKP=6741
+ DCLR=6742
+ DLAG=6743
+ DLCA=6744
+ DRST=6745
+ DLDC=6746
+
+ *10
+FILLOC, 0
+ *20
+DRIVE, 2
+K0200, 0200
+K4000, 4000
+TRACK, 0
+MAXTRK, 4537
+EXBIT, 0
+REDDAT, 1000
+WRTDAT, 5000
+WRTLOC, 3000
+RDLOC, 4000
+K17, 17
+K6, 6
+K0007, 0007
+K215, 0215
+K212, 0212
+M4, -4
+LOOP, 0
+CURPAT, 0
+PATCNT, 0
+FILCNT, 0
+FILLEN, -400
+INCF, INCTRK
+CRLFF, CRLF
+K0077, 0077
+K7700, 7700
+K3740, 3740
+K4100, 4100
+K0240, 0240
+K0377, 0377
+K0001, 0001
+PRTXTF, PRTXT
+FROCTF, FROCT
+PRADF, PRAD
+PATLOC, PATS
+PATS, 7777 / Test patterns to use
+ 0000
+ 5252
+ 2525
+NUMPAT, 4
+
+ *200
+ CLA CLL OSR
+ RAL
+ AND K6 / Clear out high bits such as 0200 start address
+ DCA DRIVE
+ TAD DRIVE
+ RAR
+ JMS I FROCTF
+ JMS I PRTXTF
+ DTXT
+ JMS I CRLFF
+ HLT
+ CLA
+ DCA LOOP
+RESTRT, CLA CLL IAC
+ DCLR
+ TAD DRIVE
+ DLDC
+ CLA CLL CML RTL
+ DCLR
+ DSKP
+ JMP .-1
+ TAD K0200
+ TAD DRIVE
+ DLDC
+ DSKP
+ JMP .-1
+ DRST
+ CIA
+ TAD K4000
+ SZA CLA
+ JMP BADSTA
+ CLA
+ TAD NUMPAT
+ CMA IAC
+ DCA PATCNT
+ TAD PATLOC
+ DCA CURPAT
+FILP, CLA
+ TAD FILLEN
+ DCA FILCNT
+ CMA
+ TAD WRTLOC
+ DCA FILLOC
+LP, TAD I CURPAT
+ DCA I FILLOC
+ ISZ FILCNT
+ JMP LP
+ CLA CLL
+ DCA TRACK
+ DCA EXBIT
+WRTPAT, JMS WRITE
+ JMS I INCF
+ JMP WRTPAT
+ CLA CLL
+ DCA TRACK
+ DCA EXBIT
+RDPAT, JMS READ
+ JMS I INCF
+ JMP RDPAT
+ ISZ CURPAT
+ ISZ PATCNT
+ JMP FILP
+DONE, JMS I PRTXTF
+ PSTXT
+ TAD LOOP
+ JMS I FROCTF
+ JMS I CRLFF
+ ISZ LOOP
+ NOP
+ CLA OSR
+ SZA
+ HLT
+ JMP RESTRT
+
+BADSTA, HLT
+
+READ, 0
+ CLA CLL IAC
+ DCLR
+ TAD RDLOC
+ DLCA
+ TAD DRIVE
+ TAD REDDAT
+ TAD EXBIT
+ DLDC
+ TAD TRACK
+ DLAG
+ TAD EXBIT
+ RAR
+ TAD TRACK
+ RAR
+ DSKP
+ JMP .-1
+ DRST
+ CIA
+ TAD K4000
+ SZA CLA
+ JMP ERROR
+ JMP I READ
+ERROR, JMS I PRTXTF
+ RERRT
+ JMS I PRADF
+ JMP I READ
+
+WRITE, 0
+ CLA CLL IAC / We have one waiting, write it
+ DCLR
+ TAD WRTLOC
+ DLCA
+ TAD DRIVE
+ TAD WRTDAT
+ TAD EXBIT
+ DLDC
+ TAD TRACK
+ DLAG
+ TAD EXBIT
+ RAR
+ TAD TRACK
+ RAR
+ DSKP
+ JMP .-1
+ DRST
+ CIA
+ TAD K4000
+ SZA CLA
+ JMP ERROR2
+ JMP I WRITE
+ERROR2, JMS I PRTXTF
+ WERRT
+ JMS I PRADF
+ JMP I WRITE
+
+
+
+ PAGE
+INCTRK, 0 / Increment track and exbit value for next sector
+ CLA CLL / AC non zero on return if done
+ TAD EXBIT
+ SZA
+ JMP CHKCYL
+INC2, ISZ TRACK
+ JMP I INCTRK
+ ISZ EXBIT
+ JMP I INCTRK
+ HLT
+CHKCYL, CLA
+ TAD TRACK
+ CIA
+ TAD MAXTRK
+ SNA
+ JMP FIN
+ CLA
+ JMP INC2
+FIN, CLA IAC
+ ISZ INCTRK
+ JMP I INCTRK
+
+RERRT, TEXT "READ ERR "
+WERRT, TEXT "WRITE ERR "
+PSTXT, TEXT "PASS "
+CTXT, TEXT "CYL "
+STXT, TEXT "SECTOR "
+SUTXT, TEXT "SURFACE "
+PTXT, TEXT "PATTERN "
+DTXT, TEXT "DRIVE WILL BE R/W TESTED, SET SR"
+
+ PAGE
+PRTXT, 0
+ CLA CLL
+ TAD I PRTXT
+ ISZ PRTXT
+ DCA FROCT
+ TAD I FROCT
+ AND K7700
+ SNA
+ JMP PREX
+ SMA
+ CML
+ IAC
+ RTR
+ RTR
+ RTR
+ JMS PRINT
+ TAD I FROCT
+ AND K0077
+ SNA
+ JMP PREX
+ TAD K3740
+ SMA
+ TAD K4100
+ TAD K0240
+ JMS PRINT
+ ISZ FROCT
+ CLA CLL
+ JMP PRTXT+5
+PREX, CLA CLL
+ JMP I PRTXT
+
+TOCT, 0
+UPONE, 0
+K0260, 0260
+FROCT, 0 / DUMP OCTAL
+ RTL
+ RTL
+ DCA UPONE
+ TAD M4
+ DCA TOCT
+ TAD UPONE
+ AND K0007
+ TAD K0260
+ JMS PRINT
+ TAD UPONE
+ RTL
+ RAL
+ DCA UPONE
+ ISZ TOCT
+ JMP .-11
+ TAD K0240
+ JMS PRINT
+ JMP I FROCT
+
+PRINT, 0
+ TLS
+ TSF
+ JMP .-1
+ TCF
+ CLA
+ JMP I PRINT
+
+PRAD, 0
+ CLA
+ DRST
+ JMS FROCT
+ JMS PRTXT
+ CTXT
+ TAD EXBIT
+ RAR
+ TAD TRACK
+ RAR
+ RTR
+ RTR
+ AND K0377
+ JMS FROCT
+ JMS PRTXT
+ SUTXT
+ TAD TRACK
+ RTR
+ RTR
+ AND K0001
+ JMS FROCT
+ JMS PRTXT
+ STXT
+ TAD TRACK
+ AND K17
+ JMS FROCT
+ JMS PRTXT
+ PTXT
+ TAD I WRTLOC
+ JMS FROCT
+ JMS CRLF
+ JMP I PRAD
+
+CRLF, 0
+ TAD K215
+ JMS PRINT
+ TAD K212
+ JMS PRINT
+ JMP I CRLF
+ $