.TITLE MTMOV ALL MAGTAPE MOVEMENT COMMANDS THAT DO NOT WRITE / / / FIRST PRINTING, FEBRUARY 1974 / / THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO / CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED / AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. / DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPON- / SIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS / DOCUMENT. / / THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FUR- / NISHED TO THE PURCHASER UNDER A LICENSE FOR USE ON / A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH / INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR / USE IN SUCH SYSTEM, EXCEPT AS MAY OTHERWISE BE PRO- / VIDED IN WRITING BY DIGITAL. / / DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY / FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIP- / MENT THAT IS NOT SUPPLIED BY DIGITAL. / / COPYRIGHT (C) 1974, BY DIGITAL EQUIPMENT CORPORATION / / .EJECT / / EDIT # 18 / / COPYRIGHT 1971,1972,1973 DIGITAL EQUIPMENT CORP., MAYNARD, MASS. / / MAGTAPE I/O HANDLER TASK 5 JUN 74 R. MCLEAN / M. HEBENSTREIT / / / / / .GLOBL MTMOV,FINREQ,FLSREQ,WFMT,MTEVAM,MTNODE,MTCAA,MTWCA,FMTDEN,FMTPAR .GLOBL UNTTMP,MTEOTT,USREC,MTCMND,MTLABL,ERM12,MTPGET / / WCA 32 CAA 33 /WORD COUNT ADDRESS .TITLE PARAMETER DEFINITIONS / / / / / / PARAMETER DEFINITIONS / R1=101 R2=102 R3=103 R4=104 R5=105 POOL=240 /POOL DEQUE LIST HEAD PICK=120 /PICK A NODE PDVL=252 /PHYSICAL DEVICE DEQUE LIST HEAD NADD=107 /NODE ADD SNAM=123 /SEARCH FOR A NAME DQRQ=337 /DE-QUEUE A NODE FROM PDVL NODE ALAD=325 /ATTACH LUN AND DEVICE DLAD=332 /DETACH LUN AND DEVICE VAJX=342 /VALADATE AND ADJUST IOCD=345 /DECREMENT I/O PENDING COUNT X10=10 X11=11 X12=12 / .INH=705522 .ENB=705521 ECLA=641000 / MTSF=707341 /SKIP ON ERROR FLAG OR MAGTAPE FLAG MTCR=707321 /SKIP ON TAPE CONTROL READY MTTR=707301 /SKIP ON TAPE TRANSPORT READY MTAF=707322 /CLEAR THE STATUS AND COMMAND REGISTERS, EF AND MTF /IF TAPE CONTROL READ. IF NOT READY CLEAR EF AND MTF ONLY. MTVM=707302 /OR COMMAND REGISTER INTO AC 0-11 MTCM=707324 /OR AC 0-5,9-11 INTO COMMAND REGISTER LOAD 6-8 /INTO COMMAND REGISTER MTLC=707326 /LOAD AC 0-11 INTO COMMAND REGISTER MTVS=707342 /INCLUSIVELY OR STATUS REGISTER INTO AC 0-11 MTRS=707352 /READ THE CONTENTS OF STATUS REGISTER INTO AC 0-11 MTRC=707312 /READ THE CONTENTS OF COMMAND REGISTER INTO AC 0-11 MTGO=707304 /EXECUTE THE COMMAND REGISTER / EF=400000 /ERROR FLAG RW=200000 /TAPE REWINDING BT=100000 /BEGINNING OF TAPE IC=040000 /ILLEGAL COMMAND PE=020000 /PARITY ERROR FI=010000 /EOF ET=004000 /EOT RE=002000 /READ-COMPARE ERROR IL=001000 /RECORD LENGTH INCORRECT DL=000400 /DATA REQUEST LATE TB=000200 /BAD TAPE EP=000000+1 /EVEN PARITY OP=040000+1 /ODD PARITY CD=020000+1 /CORE DUMP MODE IG=010000 /INTER - RECORD GAP NP=000000 /MT NOP RI=001000 /REWIND RD=002000 /READ RC=003000 /READ - COMPARE WR=004000 /WRITE WF=005000 /WRITE END OF FILE SF=006000 /SPACE FORWARD SR=007000 /SPACE REVERSE IE=000400 /INTERRUPT ENABLE ID=000000 /INTERRUPT DISABLE D2=000000+1 /DENSITY 200 BPI D5=000100+1 /DENSITY 556 BPI D8=000200+1 /DENSITY 800 BPI D9=000300+1 /DENSITY 800 BPI 9 TRACK / .TITLE MTMOVE MAGTAPE MOVEMENT COMMANDS MTMOV 0 AAC -37 /CHECK LOWER LIMIT OF LEGAL FUNCTIONS SPA!SNA JMP ERM6 /ERROR ILLEGAL FUNCTION AAC -13 /CHECK UPPER LIMIT OF LEGAL FUNCTIONS SMA!SZA /IS IT POSITIVE JMP ERM6 /YES -- ERROR UNIMPLIMENTED FUNCTION AAC 13 /NO -- RETURN TO ORIGIONAL VALUE PAX /SAVE IT IN THE XR FOR A JUMP TABLE LAC (MTMOV) /FIND THE XR ADJUSTMENT AND (070000) /MASK OFF THE PAGE BITS TCA DAC XADJ /SAVE IN XADJ XCT CMNDTB-1,X /JUMP TO PROPER ROUNTINE CMNDTB JMP RDCOMP /READ COMPARE JMP REWIND /REWIND JMP BKSPRC /BACKSPACE RECORDS JMP BKSPFI /BACKSPACE FILE JMP WEOF /WRITE END OF FILE JMP SPREC /SPACE RECORDS JMP SPFIL /SPACE FILES JMP SPEOT /SPACE TO LOGICAL EOT (2 SUCCESSIVE EOF'S) JMP FMT /CHANGE FORMAT SPECIFICATION JMP UMOUNT /UNMOUNT OR UNLOAD THE MAGTAPE REQUEST JMP TAPMRK /READ-WRITE TAPE MARK / RDCOMP JMS CKEOT /CHECK FOR EOT STATUS BEFORE ATTEMPTING READ COMPARE LAC* MTNODE /PICK UP THE REQUESTING NODE DAC* (R2) /SAVE FOR VALADATE AND ADJUST TAD XADJ /ADD THE XR ADJUSTMENT PAX LAC 7,X /PICK UP THE CURRENT ADDRESS POINTER DAC* (R3) /SAVE FOR VALADATE AND ADJUST LAC (3) /VALADATE CPB DAC* (R4) JMS* (VAJX) JMP ERM30 /PROTECT VIOLATION LAC* (R3) /FIND CPB ADDRESS DAC FILCNT /SAVE IT TAD XADJ /ADD XR ADJUSTMENT PAX LAC 0,X /PICK UP THE BUFFER ADDRESS DAC* (R3) LAC 1,X /PICKUP THE WORD COUNT DAC* (R4) TCA DAC* WCA /SAVE IT IN THE TAPE WORD COUNT REGISTER DAC* MTWCA /SAVE IT INCASE OF ERROR RECOVERY JMS* (VAJX) /VALADATE AND ADJUST JMP ERM30 /PROTECT VIOLATION LAC* (R3) /I/O ADDRESS AAC -1 /SUBTRACT 1 FOR CURRENT ADDRESS POINTERS DAC* CAA DAC* MTCAA JMS COMPDP /PICK UP THE UNIT AND DENSITY AND PARITY XOR (RC!IE) /ADD IN READCOMPARE BITS JMS* WFMT /GO EXECUTE REQUEST LAC FILCNT /PICK UP THE REQUESTOR'S CPB ADDRESS TAD XADJ PAX LAC* MTEVAM /PICK UP THE TAPE STATUS DAC 2,X /RETURN IT TO THE USER'S CPB AND (ET!FI) /MASK OFF END OF TAPE AND EOF ALS 5 /MOVE IT TO BITS 0 AND 1 SPA JMP EOF /EOF RETURN +3 STATUS SZA /EOT? JMP EOT /YES -- RETURN EOT STATUS LAC* MTEVAM SMA JMP* FINREQ /NO -- REQUEST OK? LAW -17 /RETURN ERROR JMP* FLSREQ / / REWIND JMS CLREOT /CLEAR THE EOT FLAGS REWINU LAC* UNTTMP /PICK UP THE UNIT NUMBER ALS 17 /PUT IT IN BITS 0-2 AND (700000) /MASK OFF THE UNIT XOR (RI!IE!ID) /PUT IN REWIND REQUEST-- REWIND INTERRUPT ENABLED JMS* WFMT /WAIT FOR REQUEST TO COMPLETE LAC* MTEVAM /LOOK TO SEE IF REWINDING STARTED AND (BT!RW) /MASK OFF REWIND - BEGINNING OF TAPE STATUS SZA /IS IT EITHER? JMP* FINREQ /YES -- RETURN REQUEST OK ERM12A JMS CLREOT /CLEAR EOT FLAGS SOME MOVEMENT MUST HAVE OCCRUED JMP* ERM12 /RETURN -12 EVENT VARIABLE / ERM6 LAW -6 JMP* FLSREQ /FLUSH REQUEST / ERM20 LAW -20 JMP* FLSREQ / ERM21 LAW -21 JMP* FLSREQ / ERM30 LAW -30 /PROTECT VIOLATION JMP* FLSREQ / ERM70 LAW -70 JMP* FLSREQ / / WEOF JMS CKEOT /CHECK FOR EOT STATUS ON FORWARD MOVEMENT JMS COMPDP /PICK UP DENSITY AND PARITY AND (737777) /MASK OFF PARITY AND FUNCTION XOR (WF!OP!IE) /WRITE END OF FILE ODD PARITY INTERRUPT ENABLED JMS* WFMT /GO DO WRITE EOF REQUEST LAC* MTEVAM /PICK UP THE LAST I/O STATUS AND (ET) /WAS IT EOT? SZA JMP EOT /YES -- ON EOT STATUS WITH END OF FILE RETURN /THE EOT STATUS IN THE EVENT VARIABLE AND THE /EOF STATUS IN THE BUFFER LAC* MTEVAM /PICK UP THE STATUS AGAIN AND (347600) /WAS THIS THE ONLY ERROR? SNA JMP* FINREQ /YES --EXIT JMP ERM12A / / EOT LAC* UNTTMP /PICK UP THE UNIT NUMBER PAX DZM* MTEOTT,X /CLEAR THE MAGETAP EOT FLAGS LAC (4) /RETURN +4 TO INDICATE EOT JMP* FLSREQ / / FMT LAC* UNTTMP /PICK UP THE UNIT NUMBER OF THE REQUEST PAL /SAVE IT IN THE LR LAC* MTNODE /PICK UP THE NODE TO DETERMINE REQEST TYPE TAD XADJ /ADD XR ADJUSTMENT PAX LAC 7,X /PICK UP THE CODE PAX SPA!SNA /IS IT LEGAL? JMP ERM70 /NO ERROR AAC -15 /GREATER THAN 15? SMA!SZA JMP ERM6 /YES -- ERROR XCT FMTJMP-1,X / NO -- EXECUTE CORRECT COMMAND FMTJMP JMP F200 /FORMAT 7 TRACK 200 BPI JMP F556 /FORMAT 7 TRACK 556 BPI JMP F800 /FORMAT 7 TRACK 800 BPI JMP F7E /FORMAT 7 TRACK EVEN PARITY JMP F7O /FORMAT 7 TRACK ODD PARITY JMP F9E /FORMAT 9 TRACK EVEN PARITY JMP F9O /FORMAT 9 TRACK ODD PARITY JMP F9ED /FORMAT 9 TRACK EVEN PARITY DUMP MODE JMP F9OD /FORMAT 9 TRACK ODD PARITY DUMP MODE JMP F9D /FORMAT 9 TRACK DEFAULT PARITY JMP F7D /FORMAT 7 TRACK DEFAULT PARITY & DENSITY (800 BPI) JMP HREC /FORMAT HANDLER RECOVERY JMP UREC /FORMAT USER RECOVERY / F200 PLX LAC (D2) /SET UP DENSITY 200 BPI DAC* FMTDEN,X /PUT IT IN THE TABLE JMP* FINREQ /REQUEST FINISHED RETURN / F556 PLX LAC (D5) /SET UP DENSITY 556 BPI DAC* FMTDEN,X / PUT IT IN THE TABLE JMP* FINREQ /RETURN REQUEST FINISHED / F800 PLX LAC (D8) /SET UP DENSITY 800 BPI DAC* FMTDEN,X / PUT IT IN THE TABLE JMP* FINREQ /REQUEST FINISHED RETURN / F7E PLX LAC (EP) /SET UP EVEN PARITY FMTEXT DAC* FMTPAR,X /SET UP THE PARITY LAC* FMTDEN,X /PICK UP THE DENSITY SAD (D9) /IS THIS 9 TRACK? DZM FMTDEN,X /YES -- MAKE IT 7 TRACK 800 BPI JMP* FINREQ /NO -- RETURN REQUEST OK / F7O PLX LAC (OP) /SET UP TO INDICATE EVEN PARITY JMP FMTEXT /GO SET IN TABLE / F9E PLX LAC (EP) /SET UP TO INDICATE EVEN PARITY FMPARE DAC* FMTPAR,X /SET EVEN PARITY IN TABLE LAC (D9) /CHECK TO SEE IF DENSITY SET TO INDICATE 9 TRACK DAC* FMTDEN,X /SET DENSITY JMP* FINREQ /RETURN REQUEST OK / F9ED PLX LAC (EP!CD) /MODE EVEN PARITY CORE DUMP JMP FMPARE /ENTER COMMON ROUTINE TO SET UP FORMAT / F9OD PLX LAC (OP!CD) /MODE ODD PARITY CORE DUMP JMP FMPARE /ENTER COMMON CODE ROUTINE TO SET UP FORMAT / F9O PLX LAC (OP) /SET UP TO INDICATE EVEN PARITY JMP FMPARE /SET IT IN TABLE / F9D PLX DZM* FMTPAR,X /CLEAR THE PARITY TABLE LAC (D9) /SET UP 9 TRACK DAC* FMTDEN,X / IN THE TABLE LAW -1 DAC* USREC,X JMP* FINREQ /REQUEST FINISHED RETURN / F7D PLX DZM* FMTPAR,X /CLEAR THE PARITY INDICATOR'S DZM* FMTDEN,X /CLEAR THE DENSITY INDICATOR(S IN THE TABLE LAW -1 DAC* USREC,X JMP* FINREQ /RETURN REQUEST FINISHED / BKSPRC JMS CLREOT /CLEAR THE EOT FLAGS ON BACKSPACE LAC* MTNODE /PICK UP THE REQUEST NODE POINTER TAD XADJ PAX /STORE IT IN XR LAC 7,X /PICK UP THE RECORD COUNT TCA /MAKE IT NEGATIVE FOR WORD COUNT DAC* WCA /STORE IN THE MT WORD COUNT DAC* MTWCA /SAVE IT IN CASE OF RECOVERY JMS COMPDP /PICK UP THE DENSITY AND PARITY BITS XOR (SR!IE) /XOR IN THE SPACE REVERSE REQUEST BKSPAE JMS* WFMT /START UP THE MAGTAPE DRIVE LAC* MTEVAM /WAS THE REQUEST OK? SMA JMP* FINREQ /YES REQUEST FINISHED AND (FI!BT) /WAS THE ERROR FILEMARK OR BEGINNING OF TAPE? SNA!RTL /OTHERS ARE ERRORS JMP SPERR /SPACE ERROR TRY ANOTHER PARITY SMA /WAS IT EOF? JMP EOF /YES -- END OF FILE RETURNED BOT LAC* WCA /NO -- BEGINNING OF TAPE FOUND SNA /DID THE REQUEST COMPLETE FIRST? JMP* FINREQ /YES -- REQUEST OK JMP ERM20 /NO -- ERROR / / SPERR LAC* WCA SNA /IS THE REQUEST COMPLETE? JMP* FINREQ /YES RETURN REQUEST OK LAC* MTCMND /PICK UP THE LAST COMMAND XOR (EP!OP) /SWAP THE COMMAND PARITY JMP BKSPAE /TRY AGAIN / BKSPFI JMS CLREOT /CLEAR THE EOT FLAGS ON BACKSPACE LAC* MTNODE /PICK UP THE REQUEST NODE POINTER TAD XADJ PAX /STORE IT IN XR LAC 7,X /PICKUP THE FILE COUNT TCA /COMPLEMENT IT FOR COUNT DAC FILCNT /SAVE FILES COUNT BKSPF2 DZM* WCA /CLEAR WORD COUNT TO BACKSPACE N RECORDS DZM* MTWCA /CLEAR THE RETRY WORD COUNT ALSO JMS COMPDP /PICKUP THE DENSITY AND PARITY BITS XOR (SR!IE) /XOR IN THE SPACE REVERSE REQUEST BKSPAG JMS* WFMT /GO DO IT LAC* MTEVAM /PICK UP THE STATUS OF THE SPACING SMA /IS IT NEGATIVE? JMP* FINREQ /NO BUT SOMETHING SCREWY HAPPENED EXIT AND (FI!BT) /CHECK FOR FILE MARK AND BEGINNING OF TAPE SNA!RTL JMP SPFERR /SPACE ERROR SPA /EOF? JMP BTSPF /CHECK IF BACKSPACE TOO FAR ISZ FILCNT /ENOUGH FILES? JMP BKSPF2 /NO TRY AGAIN JMP* FINREQ /YES EXIT OK / BTSPF ISZ FILCNT /FINISHED? JMP ERM20 /NO BACKSPACE ERROR LAC* MTEVAM /IF TAPE AT START OF TAPE AND (IC) /AND FUNCTION NOT COMPLETE SZA /RETURN EV OF -20 JMP ERM20 JMP* FINREQ /YES REQUEST OK / SPFERR LAC* MTCMND XOR (EP!OP) JMP BKSPAG /TRY AGAIN WITH OPPOSITE PARITY / COMPDP 0 LAC* UNTTMP /PICK UP THE UNIT NUMBER OF THIS REQUEST PAX /SAVE IT IN XR ALS 17 /PUT IT IN UNIT NUMBER FOR MAGTAPE REGISTER AND (700000) /MASK OFF UNIT NUMBER LMQ /SAVE IT IN MQ LAC* FMTDEN,X /PICKUP THE DENSITY SNA /ISIT DEFAULT DENSITY? LAC (D8) /YES DEFAULT DENSITY 800 BPI OMQ /OR IT WITH UNIT NUMBER LMQ /SAVE IT BACK IN MQ LAC* FMTPAR,X /PICK UP THE PARITY OF THE REQUEST SNA LAC (OP) /DEFAULT PARITY IS ODD PARITY OMQ /COMPLETE REQUEST IN AC JMP* COMPDP /RETURN WITH REQUEST IN AC / SPREC JMS CKEOT /CHECK END OF TAPE STATUS LAC* MTNODE /PICK UP THE ADDRESS OF THE REQUEST NODE TAD XADJ /ADD THE XR ADJUSTMENT PAX LAC 7,X /PICK UPTHE NUMBER OF RECORDS TO BE /SPACED COUNT TCA /COMPLEMENT IT DAC* WCA /SAVE IT IN THE MAGTAPE WORDCOUNT DAC* MTWCA JMS COMPDP /PICK UP THE COMMAND UNIT DENSITY AND PARITY XOR (SF!IE) /OR IN THE SPACE FORWARD REQEST SFREC JMS* WFMT /GO START MAGTAPE LAC* MTEVAM /PICK UP THE STATUS OF THE SPACE COMMAND SMA /WAS THERE AN ERROR? JMP* FINREQ /NO -- REQUEST MUST HAVE BEEN OK AND (FI!ET) /CHECK FOR END OF FILE OR END OF TAPE ALS 5 SPA!RAL /END OF FILE? JMP EOF /YES -- RETURN END OF FILE STATUS SPA /NO -- END OF TAPE STATUS? JMP EOT /YES END OF TAPE STATUS LAC* WCA /NO -- REAL ERROR SNA /WAS THE REQUEST COMPLETE WITH THIS ERROR? JMP* FINREQ /YES -- RETURN TO USER REQUEST MUST BE OK LAC* MTCMND /PICK UP THE COMMAND REQUESTED XOR (EP!OP) /CHANGE THE PARITY OF THE REQUEST AND JMP SFREC /TRY AGAIN / SPFIL JMS CKEOT /CHECK TO SEE IF FORWARD MOTION IS LEGAL LAC* MTNODE /PICK UP THE ADDRESS OF THE REQUEST NODE TAD XADJ /ADD XR ADJUSTMENT PAX LAC 7,X /PICK UP THE FILE COUNT TCA /MAKE IT NEGATIVE TO COUNT DAC FILCNT DZM LEOTFL /CLDAR THE LOGICAL EOT FLAG SPFILA DZM* WCA /SPACE N RECORDS DZM* MTWCA /SETUP RETRY WORD COUNT JMS COMPDP /GET PARITY ETC XOR (SF!IE) /SPACE FORWARD INTERRUPT ENABLED SPFILB JMS* WFMT /START TAPE LAC* MTEVAM /PICK UP STATUS OF MOVE SMA /WASI IT OK? JMP* ERM12 /YES -- BUT IT CAN'T BE MUST BE SOME UNKNOWN ERROR AND (ET!FI) /CHECK FOR END OF TAPE OR END OF FILE ALS 5 SPA!RAL /EOF? JMP EOFSFI /YES COUNT 1 FILE SPA /EOT? JMP EOT /YES EOT ERROR LAC* MTCMND /NONE OF ABLVE MUST BE PARITY SWITCH XOR (EP!OP) JMP SPFILB /TRY AGAIN / SPEOT JMS CKEOT /CHECK TO SEE IF AT EOT DZM LEOTFL /CLEAR THE LOGICAL EOT FLAG DZM FILCNT /CLEAR FILE COUNT JMP SPFILA /GO SPACE / EOFSFI LAC* MTWCA /CHECK FOR LOGICAL END OF TAPE FOUND IAC SAD* WCA /ONLY 1 RECORD FOUND (EOF)? SKP /YES CHECK FOR LOGICAL EOF JMP NOTSPF /NOT LOGICAL EOF ALL OK LAC LEOTFL /EOT JUST FOUND? SNA JMP NOTSPF /NO ALL OK 1ST EOF LAC (4) /NOT OK LOGICAL EOF FOUND JMP* FLSREQ /RETURN +4 EV / NOTSPF CLA!IAC /SET UP LOGICAL EOT FLAG DAC LEOTFL ISZ FILCNT /UPDATE FILE COUNT JMP SPFILA /CONTINUE LAC (3) /RETURN EOF STATUS JMP* FLSREQ /FINISHED EXIT / UMOUNT LAC* MTNODE /PICK UP THE ADDRESS OF THE NODE TAD XADJ /ADD IN XR ADJUSTMENT PAX LAC 7,X /PICK UP THE REQUEST TYPE SAD (3) /IS IT UNMOUNT? JMP UNMNT /YES GO UNMOUNT THE TAPE SAD (2) /IS IT MOUNT UNLABELED TAPE? JMP UNLBL /YES SAD (1) /IS IT MOUNT LABELED TAPE? SKP JMP ERM70 /UNIMPLEMENTED FUNCTION LAC* UNTTMP /FIND THE UNIT NUMBER PAX CLA!IAC /SET THE LABELED TAPE FLAG DAC* MTLABL,X LAC (2) DAC* MTEOTT,X /SET EOT FFLAG TO MOUNT JMP LABLMS /REQUEST OPERATOR MOUNT TAPE / UNLBL LAC* UNTTMP /UNLABELED TAPE REQUEST PICK UP UNIT NUMBER PAX DZM* MTLABL,X /CLEAR THE LABLED FLAG LAC (2) DAC* MTEOTT,X LABLMS PXA /GET THE UNIT NUMBER CLL!RAL /MOVE OVER 1 BIT XOR UNTNO+1 /ADD IT INTO THE MESSAGE DAC MSGUNT+1 /STORE IT INT THE MESSAGE CAL WRTTY /WRITE MESSAGE ON TTY CAL WFEV /WAIT FOR MESSAGE JMP* FINREQ /RETURN MOUNT FINISHED UNMNT LAC* UNTTMP PAX /PUT THE UNIT NUMBER IN XR CLA!IAC /SET TO BUNMOUNT TAPE DAC* MTEOTT,X JMP REWIND /REWIND THE TAPE / TAPMRK JMS CLREOT /CLEAR THE EOT FLAG LAC* UNTTMP /PICK UP THE UNIT NUMBER ALS 17 /SET UP REWIND REQUEST AND (700000) XOR (RI!IE!ID) /REWIND TAPE JMS* WFMT /START TAPE LAC* MTEVAM /CHECK STATUS AND (BT!RW) /REWIND OR BEGINNING OF TAPE? SNA JMP ERM12A /NO ERROR LAC* MTNODE /PICK UP THE REQUESTING NODE TAD XADJ PAX LAC 11,X /WORD COUNT DAC 5,X DAC* (R4) LAC* MTNODE /SET UP FOR VALADATE AND ADJUST DAC* (R2) LAC 10,X DAC* (R3) JMS* (VAJX) JMP ERM30 /PROTECT ERROR LAC* MTNODE /I/O RUNDOWN IS DONE HERE AS A SPECIAL CASE DAC* (R2) /TO ALLOW NODE TO BE USED AS CONTROL TABLE JMS* (IOCD) /I/O RUNDOWN CAN STILL BE DONE AND IT DOESN'T /HURT AT THIS POINT TO SET THE EVENT VARIABLE LAC* MTNODE /PICK UP NODE ADDRESS AGAIN TAD XADJ PAX LAC 7,X /SAVE THE MODE TYPE RAR LAC* MTNODE AAC 4 DAC 7,X /SET CPB ADDRESS LAC* (R3) DAC 4,X /SET CORE ADDRESS DZM 3,X /DON'T VALADATE AND ADJUST AGAIN PXL /SAVE XR LAC* UNTTMP PAX SZL!CLA!IAC DAC* MTLABL,X PLX SNL /READ OR WRITE? CLA AAC 30 JMS* MTPGET / / WRTTY 2700 /WRITE MOUNT MESSAGE EVA 3 2 MTMSG MTMSG MTMSGE-MTMSG/2*1000+2 0 .ASCII ' *** MOUNT TAP' MSGUNT .ASCII 'E MT0'<15> MTMSGE=. UNTNO .ASCII 'E MT0' WFEV 20 EVA EVA 0 / EOF LAC (3) /RETURN +3 FOR EOF JMP* FLSREQ /RETURN TO USER / UREC LAC* UNTTMP /PICK UP UNIT NUMBER PAX DZM* USREC,X /CLEAR USER RECOVERY FLAG JMP* FINREQ /RETURN REQUEST FINISHED / HREC LAC* UNTTMP /PICK UP THE UNIT NUMBER PAX LAW -1 /SET HANDLER RECOVERY IN FLAG DAC* USREC,X JMP* FINREQ /RETURN REQUEST FINISHED CKEOT 0 LAC* UNTTMP /PICK UP THE UNIT NUMBER OF THIS REQUEST PAX LAC* MTEOTT,X /PICK UP THE UNIT STATUS FLAGS SPA /EOT? JMP* CKEOT /NO -- REQUEST IS LEGAL JMP ERM21 /YES -- ILLEGAL REQUEST CAN'T SPACE PAST EOT / CLREOT 0 LAC* UNTTMP /PICK UP THE UNIT NUMBER OF THIS REQUEST PAX LAC MTEOTT,X /CHECK FOR POSITIVE FOR UNMOUNT REQUEST SZA!CLA!CMA JMP* CLREOT /POSITIVE JUST REWIND DAC* MTEOTT,X /SET THE EOT FLAG TO EOT NOT FOUND JMP* CLREOT /RETURN XADJ 0 FILCNT 0 LEOTFL 0 .END MTMOV