/TD8E SIMPLE DECTAPE SHORT TEST SEQUENCES /COMMAND REGISTER BITS / 00 01 02 03 04 05 06 07 08 09 10 11 /(ON WRITE) UNIT FORWARD STOP READ WRITE -- -- -- -- -- -- -- / NO. REVERSE GO WRITE LOCK / OUT / 00 01 02 03 04 05 06 07 08 09 10 11 /(ON READ) UNIT FORWARD STOP READ -- SELECT M0 M1 M2 M3 M4 M5 / NO. REVERSE GO WRITE OR TIME / ERROR /BIT 0 - UNIT 0 OR 1 /BIT 1=0 FOR FORWARDS TAPE MOTION, =1 FOR REVERSE /BIT 2=0 FOR STOP TAPE, =1 FOR TAPE RUN /BIT 3=0 FOR READ, =1 FOR WRITE /BITS 6-11 ARE IGNORED (NOT WRITTEN) /ON READ THE FOLLOWING BITS ARE VALID IN ADDITION /BIT 4=1 FOR WRITE LOCK-OUT /BIT 5=1 FOR SELECT OR TIME ERROR /BITS 6-11 FORM MARK TRACK REGISTER BITS 0-5 /TD8E INSTRUCTION SET SDSS=6771 /SKIP ON SINGLE LINE FLAG SDST=6772 /SKIP ON TIME ERROR FLAG SDSQ=6773 /SKIP ON QUAD LINE FLAG SDLC=6774 /LOAD COMMAND REG,CLEAR AC, T-ERR AND UP-TO-SPEED FLIPFLOP SDLD=6775 /LOAD DATA REG,CLEAR SINGLE & QUAD FLAGS SDRC=6776 /READ COMMAND REG,CLEAR SINGLE & QUAD FLAGS SDRD=6777 /READ DATA REG,CLEAR SINGLE & QUAD FLAGS /MARK TRACK SEQUENCE: /NB - WHEN TAPE IS READ IN REVERSE THE MARK TRACK DATA IS REVERSED AND INVERTED /E.G. 26 = FORWARD BLOCK MARK BECOMES 45 = REVERSE BLOCK MARK /TRACK-MARK DESCRIPTION /55 -END REVERSE END ZONE /25 E/-E EXPAND CODE /26 FORWARD BLOCK MARK /32 REVERSE GUARD /10 -C FORWARD LOCK / REVERSE CHECKSUM / FINAL / PRE-FINAL /70 D/-D DATA /73 F REVERSE LOCK / FORWARD CHECKSUM / FINAL / PRE-FINAL /51 FORWARD GUARD /45 REVERSE BLOCK MARK /22 END FORWARD END ZONE /TEST1 - INSTRUCTION DECODE EXERCISE /CYCLES THROUGH ALL COMMANDS TO ALLOW SCOPE PROBING /OF THE INSTRUCTION DECODE LOGIC /AND VERIFY THAT THE CORRECT COMMANDS WILL CLEAR OR NOT THE VARIOUS FLAGS /AND OPERATE THE OMNIBUS C-LINES CORRECTLY *200 TEST1, CLA CLL CAF SDSS NOP SDST NOP SDSQ NOP SDLC NOP SDLD NOP SDRC NOP SDRD JMP TEST1+2 /TEST2 - CHECK UNIT SELECT AND WRITE LOCK COMPARATORS /FOR THIS TEST SET ONE DRIVE TO UNIT 0, REMOTE AND WRITE LOCK / AND THE OTHER DRIVE IF ANY OFFLINE TEST2, IOF /TURN THE PROCESSOR INTERRUPTS OFF CLA /SET UNIT 0 (AND STOP TAPE) SDLC SDST /CHECK FOR A TIMING ERROR SKP /THERE SHOULDN'T BE ONE BECAUSE HLT /TAPE IS STOPPED JMS CHKSEL /CHECK THE SELECT BIT HLT /WE HAD A UNIT 0 SELECT ERROR TAD (4000 /GET UNIT 1 BIT SDLC /SELECT UNIT 1 JMS CHKSEL /LOOKING FOR SELECT ERROR THIS TIME SKP /WE GOT THE ERROR HLT /FAILED TO GET UNIT 1 SELECT ERROR SDLC /RESELECT UNIT 0, STOP SDRC /UNIT 0 IS WRITE LOCKED AND (200 SNA CLA /CHECK FOR WRITE LOCKOUT HLT /WRITE LOCK NOT RECOGNISED TAD (400 SDLC /TRY TO SET WRITE BIT SDRC /READ IT BACK AND (400 SZA CLA /CHECK IF WRITE WAS SET HLT /WRITE LOCKOUT DID NOT INHIBIT WRITE JMP TEST2+2 /LOOP TEST2 CHKSEL, SDRC /FETCH THE COMMAND REGISTER AND (100 /LOOK AT THE SELECT BIT SNA CLA /IF SET TAKE THE FIRST RETURN ISZ CHKSEL /IF NO ERROR TAKE THE SECOND RETURN JMP I CHKSEL /TEST3 - COPY SWITCHES TO COMMAND REGISTER, COMMAND REGISTER TO MQ /NOTE - SINGLE STEP THIS TEST TEST3, LAS /SWITCHES->AC SDLC /AC->COMMAND REGISTER CLA /CLEAR THE AC JUST TO BE CERTAIN SDRC /COMMAND REGISTER->AC MQL /AC TO MQ SDLC /STOP THE TAPE IF ITS STARTED JMP TEST3 /TEST4 - COPY SWITCHES TO DATA REGISTER, DATA REGISTER TO MQ /NOTE - SINGLE STEP THIS TEST TEST4, LAS /SWITCHES->AC SDLD /AC->DATA REGISTER CLA /CLEAR THE AC SDRD /DATA REGISTER->AC MQL /AC TO MQ JMP TEST4 /DO IT AGAIN /TEST5 - CHECK FOR PROPER AC CLEARING WITH / SDLC, SDRC, SDLD, SDRD TEST5, CLA CLL TAD (6777 SDLC SZA CLA /SDLC SHOULD CLEAR AC HLT /FAILED TO CLEAR SDLC /SET COMMAND REGISTER TO 0000 CMA /SET AC TO 7777 SDRC /SHOULD CLEAR AC THEN READ 0000 SZA CLA HLT /SOMETHING WENT WRONG CMA /AC=7777 SDLD /LOAD DATA REGISTER SNA CLA /SHOULD NOT CLEAR AC HLT /IT DID! SDLD /LOAD DATA REGISTER WITH 0000 CLA CMA /AC=7777 SDRD SZA CLA /SHOULD HAVE 0000 IN AC HLT /WE DIDN'T JMP TEST5 PAGE /TEST6 - CHECK SINGLE LINE FLAG TEST6, CLA CLL SDLC /MAKE SURE TAPE IS STOPPED TAD (1000 SDLC /START TAPE READING FORWARDS SDSS /WAIT FOR THE FLAG JMP .-1 TAD (1000 SDLC /LOAD COMMAND REGISTER (UNALTERED) SDSS /SDLC SHOULD NOT CLEAR FLAG HLT /FLAG SHOULD STILL BE SET SDLD /LOAD DATA REGISTER SHOULD CLEAR FLAG SDSS SKP HLT /SDLD DID NOT CLEAR FLAG SDSS JMP .-1 /WAIT FOR FLAG TO SET AGAIN SDRD /READ DATA REG SHOULD CLEAR FLAG SDSS SKP HLT /IT DIDN'T SDSS JMP .-1 /WAIT FOR FLAG AGAIN SDRC /READ COMMAND REG SDSS SKP HLT /SDRC DID NOT CLEAR FLAG JMP TEST6 /TEST7 - CHECK QUAD LINE FLAG TEST7, CLA CLL SDLC /STOP TAPE TAD (1000 SDLC /START THE TAPE SDSS JMP .-1 /WAIT FOR 1ST SINGLE FLAG SDSQ /IS QUAD FLAG UP SKP HLT /YES BUT SHOULDN'T BE THERE YET SDSS /WAIT FOR SINGLE FLAG TO DROP SKP JMP .-2 SDSQ /QUAD FLAG THERE YET? SKP HLT /YES BUT SHOULDN'T BE SDSS JMP .-1 /WAIT FOR SINGLE FLAG AGAIN SDSQ /QUAD FLAG THERE YET? SKP HLT /YES BUT SHOULDN'T BE SDSS SKP CLA JMP .-2 /WAIT FOR SINGLE FLAG TO GO AWAY SDSQ /QUAD FLAG THERE? HLT /NO BUT IT SHOULD BE NOW TAD (1000 /QUAD FLAG IS STILL THERE SDLC /LOAD COMMAND REG UNALTERED SDSQ HLT /SHOULD NOT HAVE CLEARED FLAG SDLD /LOAD DATA REG SDSQ SKP HLT /SDLD DID NOT CLEAR FLAG SDSQ JMP .-1 /WAIT FOR FLAG AGAIN SDRD SDSQ SKP HLT /SDRD DID NOT CLEAR FLAG SDSQ JMP .-1 /WAIT FOR FLAG AGAIN SDRC /READ COMMAND REG SDSQ SKP HLT /SDRC SHOULD HAVE CLEARED FLAG JMP TEST7 PAGE /TEST10 - SCAN TAPE AND PUT BLOCK NUMBERS IN THE MQ REGISTER / LOAD TAPE, SET PANEL TO DISPLAY MQ AND OBSERVE TEST10, CLA CLL TAD (3000 /UNIT 0 ONLY, INITIALLY REVERSE SETDIR, SDLC /DIRECTION, GO, AND READ BITS TO CONTROL REGISTER CLA CLL /JUST TO BE SAFE GETNXT, SDSS /WAIT FOR SINGLE LINE FLAG JMP .-1 CLA CLL SDRD /READ DATA BUFFER, CLEAR FLAG DCA TDATA /SAVE THE DATA SDRC /READ THE MARK TRACK AND (77 /KEEP ONLY THE MARK TRACK BITS TAD (-26 /SEE IF WE HAVE A BLOCK MARK SZA JMP ENDZON /NO, CHECK FOR END ZONE TAD TDATA /YES, GET THE BLOCK NUMBER MQL /BLOCK NUMBER TO MQ JMP GETNXT /LOOK FOR NEXT BLOCK ENDZON, TAD (4 /SEE IF WE ARE IN THE END ZONE SZA CLA JMP GETNXT /NO, LOOK FOR NEXT BLOCK SDRC /YES, GET THE DIRECTION BIT RTL /INTO THE LINK THEN COMPLEMENT IT AND CML RTR /PUT THE COMPLEMENTED DIRECTION BIT BACK JMP SETDIR /CHANGE THE DIRECTION TDATA, 0 /TRACK DATA PAGE / THIS IS THE TD8E BOOTSTRAP ROUTINE *7300 TD8E, TAD MOVTAP /2000->AC JMS MOVTAP /REWIND TO START OF TAPE JMS MOVTAP /FORWARD WIND TO 1ST BLOCK WAITWD, SDSQ /WAIT FOR QUAD LINE FLAG JMP .-1 SDRD /READ THE DATA DCA I POINTR /PUT THE DATA WHERE THE POINTER SAYS ISZ POINTR /INCREMENT THE POINTER JMP WAITWD /GET ANOTHER DATA WORD JMP I OS8PTR /JUMP TO THE START OF THE OS8 BOOTLOADER MOVTAP, 2000 /2000 CONSTANT, REVERSE DIRECTION TAD 7300 /AC = REVERSE & GO / FORWARD & GO SDLC /AC->COMMAND REGISTER WAITMT, SDSS /WAIT FOR SINGLE LINE FLAG JMP .-1 SDRC /COMMAND REGISTER->AC AND MASK /KEEP JUST THE MARK TRACK BITS MTCODE, TAD ENDZN /SUBTRACT THE END ZONE / REVERSE GUARD MARK TRACK DATA SZA CLA /IS THIS IS THE END ZONE JMP WAITMT /GET ANOTHER MARK TRACK CODE ISZ MTCODE /CHANGE POINTER FROM END ZONE TO REVERSE GUARD JMP I MOVTAP /RETURN FROM JMS POINTR, BUFFER /POINTER TO DATA BUFFER ENDZN, -22 /-0022, END ZONE REVGRD, -31 /-0031, REVERSE GUARD MASK, 0077 /MASK TO KEEP JUST THE MARK TRACK BITS OS8PTR, OS8BT /OS8 BOOTLOADER ENTRY POINT *7354 BUFFER, 0 /START OF BUFFER FOR OS8 BOOTLOADER *7400 OS8BT, 0 /OS8 BOOTLOADER ENTRY POINT $