.SBTTL ****DISK TRANSFER CHANNEL COMMAND LIST**** DSKSEQ: ;A MINOR NOTE: 40000 WEIGHT BIT IS "VALID" ; : 100000 WEIGHT BIT IS "36-BIT XFR" UBA. 763,001 ;ADDRESS OF UBA IS FIRST ELEMENT OF THE LIST DI. 140,001 ;VALID & "36 BIT XFR" FOR PAGE 1 (1000-1777) LI. D776,P.10 ;GET DRIVE STATUS & CONTROL REG, SO CAN SET UNIT DI.INDIRECT UNITNM ;NOW SET THE UNIT NUMBER EI. D776,P.12 ;ADDRESS OF DRIVE STATUS TWAIT 400 ;CHECK THAT THE DRIVE IS PRESENT WAIT 200 ;CHECK & WAIT FOR READY LI. D776,P.10 ;ADDR OF DRIVE STATUS REG DI. 0,40 ;ISSUE CONTROLLER CLR DI.INDIRECT UNITNM ;SET TO UNIT # LI. D776,P.00 ;ADDR OF CONTROLLER STATUS REG DI. 0,11 ;ISSUE DRIVE CLEAR DI. 0,21 ;SET "READ-IN-PRESET" LI. D776,P.12 ;GET TO THE DRIVE STATUS REGISTER WAIT 200 ;WAIT FOR IT TO BE READY TWAIT 100 ;NOW CHECK THAT "PRE-SET" HAS SET VOLUME VALID LI. D776,P.06 ;ADDR TRACK/SECTOR REG DI.INDIRECT BLKNUM ;EMPTY FOR NOW LI. D776,P.34 ;ADDR OF CYLINDER REG DI.INDIRECT BLKADR ;EMPTY FOR NOW QXFR: LI. D776,P.02 ;ADD OF WORD COUNT REG DI. 176,000 ;512 WORDS IS 1024 18-BIT BYTES(A PAGE) LI. D776,P.04 ;ADDR OF UNIBUS ADDRESS REG DI. 4,000 ;SET SM10 MEM ADDR TO 1000 LI. D776,P.00 ;BACK TO STATUS REG DI. 0,71 ;ISSUE READ EI. D776,P.00 ;NOW READ TO CHECK FOR ERRORS IN XFER WAIT 200 ;CHECK FOR READY BIT TRUE.. EI. D776,P.12 ;CHECK DRIVE STATUS REG ITSELF ERRTST 40000 ;TEST "ERR" BIT ;IF IT WAS OK, THEN CHECK THE CONTROLLER FOR ERRORS EI. D776,P.00 ;EXAMINE CONTROLLER ERRTST 060000 ;DRIVE RDY, NOW SEE IF ENCOUNTERED ERRORS ENDLST ;END OF CHANNEL COMMAND LIST .SBTTL TAPE TRANSFER CHANNEL COMMAND LIST ;DRIVE CONTROLLER REGISTER IS 776440..FOLLOWING COMMANDS APPLY ; 7=REWIND ; 11=DRIVE CLEAR ; 25=ERASE ; 27=WRITE TAPE MARK ; 31=SPACE FORWARD(SKIP A FILE) ; 33=SPACE REVERSE(SKIP A FILE, MOVING TAPE IN REVERSE) ; 51=WRITE CHECK FORWARD ; 57=WRITE CHECK REVERSE ; 61=WRITE FORWARD ; 71=READ FORWARD(GO!) ; 77=READ REVERSE(GO!) MTASEQ: UBA. 763,001 ;ADDRESS OF UBA PAGING RAM DI. 40,001 ;SET VALID IN PAGE 1 LI. D772,P.10 ;SET ADDRESS OF DRIVE CONTROL REGISTER DI. 0,40 ;ISSUE CONTROLLER AND SLAVE CLR DI.INDIRECT TAPEUNIT ;SET TAPE UNIT # LI. D772,P.32 ;SLAVE SELECT/FORMAT/DENSITY REG DI.INDIRECT DEN.SLV ;SET SLAVE, FORMAT, DENSITY(TEMP:DENS=1600,F=0,S=0) EI. D772,P.12 ;READ THE DRIVE STATUS, TO MAKE SURE IT EXISTS TWAIT 400 ;CHECK THE "DRIVE PRESENT" BIT WAIT 200 ;IF WAS PRESENT, WAIT FOR IT TO BE READY LI. D772,P.06 ;FRAME COUNT REGISTER DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES LI. D772,P.00 ;SET ADDRESS TO RH11 CONTROL REGISTER DI. 0,7 ;ISSUE "REWIND" TO TAPE EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR READY WAIT 200 ;WAIT FOR REWIND TO COMPLETE QTXFR: LI. D772,P.04 ;CONTROLLER TO MEMORY DEST. REG DI. 4,000 ;SET KS10 START ADDRESS TO 1000 LI. D772,P.02 ;SET ADDRESS TO WORD COUNT REGISTER DI. 176,000 ;1 PAGE OF 512 WORDS IS 1024 18-BIT BYTES LI. D772,P.06 ;FRAME COUNT REGISTER DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES LI. D772,P.00 ;SET ADDRESS TO RH11 CONTROL REGISTER DI.INDIRECT SKP.GO ;ISSUE "XFER CMD"(31=SKIP .OR. 71=RD-IN) EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR READY WAIT 200 ;WAIT FOR FILE READ TO COMPLETE EI. D772,P.14 ;LOOK AT THE DRIVE ERROR REGISTER RETRY.: ERRTST 070300 ;ERRORS WORTH RETRYING?? FRMERR: ERRTST 103400 ;SEE IF THIS WAS A CORRECTABLE TYPE ERROR EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR ERRORS ERRTST 40000 ;GET ANY DRIVE ERRORS?? LI. D772,P.00 ;NOW ADDRESS TO CONTROLLER STATUS ERRTST 60000 ;CHECK FOR ERRORS THERE. ENDLST ;END OF CHANNEL COMMAND LIST ;QUICK LITTLE ROUTINE TO RESET THE MAGTAPE AFTER IT SUFFERS AN ;IGNORABLE ERROR MTARST: LI. D772,P.10 ;SET ADDRESS OF DRIVE CONTROL REGISTER DI. 0,40 ;ISSUE CONTROLLER AND SLAVE CLR DI.INDIRECT TAPEUNIT ;FIX UNIT NUMBER LI. D772,P.04 ;CONTROLLER TO MEMORY DEST. REG DI. 4,000 ;SET KS10 START ADDRESS TO 1000 LI. D772,P.06 ;FRAME COUNT REGISTER DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES ENDLST ;QUICK OUT