SUBTTL C.WHITE 27-APR-69 V406\r
XP VMTCSR,406 ;DEFINE GLOBAL VERSION NUMBER FOR LOADER MAP\r
\r
+\r
ENTRY MTCSR6\r
MTCSR6:\r
INTERNAL FTCHECK,FTMONP\r
POPJ PDP, ;UTPCLR\r
;MTAPE UUO (FALL INTO THIS CODE WHICH FOLLOWS)\r
\r
+\r
DEFINE MTAPES (A) ;MARCO TO DEFINE LEGAL MTAPES UUO EFFECTIVE ADDRESSES.\r
< CODES=0\r
IRP A, <\r
TRZ IOS,776000 ;CLEAR ERROR BITS ,IOF.\r
;IOACT, IOBOT AND IOTEND.\r
SKIPA T,UUO ;CALL MTAPE2\r
-\fMTAPE: PUSHJ PDP,MTCHK2 ;CHECK IF MAG TAPE CONTROL AVAIL.\r
+\f\r
+MTAPE: PUSHJ PDP,MTCHK2 ;CHECK IF MAG TAPE CONTROL AVAIL.\r
MTAPE2: TDZ IOS,[XWD IODT!IOSEOF,IOACT]\r
TRNN T,SLICE ;SET SLICE LEVEL THIS UUO?\r
JRST NOSET ;NO\r
CONSO 224,4000 ;AT LOAD POINT?\r
JRST MTGO0 ;NO\r
CAIE T,3400 ;YES, BACKSPACE RECORD?\r
-\r
CAIN T,400 ;NO, REW?\r
JRST MTFIN ;YES\r
CAIN T,7400 ;NO, BACKSPACE FILE?\r
JRST MTFIN ;YES\r
MTGO0: MOVSI TAC,TCF ;LOOK FOR TAPE CONTROL FREE ONLY\r
-\f;HERE FROM INPUT AND OUTPUT UUOS AND INTERRUPT TO DO NEXT RECORD.\r
+\f\r
+;HERE FROM INPUT AND OUTPUT UUOS AND INTERRUPT TO DO NEXT RECORD.\r
\r
MTGO1: LDB TAC1,PUNIT ;UNIT\r
DPB TAC1,[POINT 3,T,31] ;UNIT\r
MOVEI T,2400 ;READ\r
MTIN2: MOVE TAC1,[BLKI DC,4000+MTDC*10]\r
JRST MTINDC\r
-\f;IS SYSTEM AVAILABLE\r
+\f\r
+;IS SYSTEM AVAILABLE\r
MTCHEK: PUSHJ PDP,GETDCMT ;GET DATA AND MAG TAPE CONTROLS\r
AOSE MTREQ ;ARGUMENT\r
MOVE IOS,DEVIOS(DEVDAT)\r
\r
MTCHK4: TLO IOS,HASMT ;THIS JOB NOW HAS MTC\r
TLZE IOS,IOBEG ;FIRST OPERATION AFTER INIT OR SETSTS\r
-\r
TLZ IOS,IOSLIC ;YES, SET SLICE LEVEL TO 0.\r
TLZ IOS,IOREW ;CLEAR MAG TAPE REWINDING\r
PUSHJ PDP,REWCK ;CHECK IF REWINDING?\r
\r
QSTAT: PUSHJ PDP,DETMDC ;DETACH MTC AND DC\r
JRST HNGSTP ;CHECK STATUS (PULL FINGERS OUT, ETC)\r
-\f;MTAPE 0 WAITS UNTIL THE CONTROL IS FREE\r
+\r
+\f\r
+;MTAPE 0 WAITS UNTIL THE CONTROL IS FREE\r
;THUS MTAPE 0 PROVIDES THE ONLY WAY FOR A USER TO WAIT UNTIL A SPACING OPERATION\r
; (I.E., SKIP, BACKSPACE, OR REWIND) IS COMPLETED.\r
\r
; AND RETURN TO THE USER.\r
\r
\r
+\r
+\r
;DETMDC-\r
; DETACH MTC, AND TURN OFF HASMT.\r
; THEN (IFF IODT ON)\r
DETDC: TLZN IOS,IODT ;DOES JOB HAVE DATA CONTROL?\r
JRST STOIOS ;NO- EXIT\r
CONO DC,0\r
- CONO DC,DCOFF\r
+ CONO PI,DCOFF\r
SOSL DCREQ ;ANYONE ELSE WAITING FOR IT?\r
SETOM DCAVAL ;YES- FLAG AS JUST BECOME AVAILABLE\r
JRST STOIOS ;AND EXIT\r
CONO 224,0\r
SETZM MTCCON\r
POPJ PDP,\r
-\f;ROUTINE TO SEE IF UNIT IS REWINDING\r
+\f\r
+;ROUTINE TO SEE IF UNIT IS REWINDING\r
;CALL MOVE DEVDAT,ADDRESS OF DDB\r
; PUSHJ PDP,REWCK\r
; UNIT READY\r
AOS (PDP)\r
POPJ PDP, ;YES- RETURN TO CALL+1\r
\r
+\r
REPEAT 0,<\r
THIS WORKS WITH THE FOLLOWING MOD TO 545 TRANSPORT:\r
\r
TO LOAD POINT- IF ENABLES THE PROCESSOR TO DISTINGUISH BETWEEN A\r
TAPE WHICH IS AT THE END OF A REWIND COMMAND, AND A TAPE WHICH IS\r
SWITCHED TO LOCAL, OR OFF>\r
-\f;WRITE\r
+\f\r
+;WRITE\r
MTOUT: PUSHJ PDP,MTCHEK\r
TLO IOS,IO ;WRITING\r
MTOUT1: MOVEI TAC,@DEVOAD(DEVDAT) ;BUFFER ADDRESS, PROG INCLUDED\r
MOVSI TAC,XNC ;NO. COME BACK WHEN COMMAND BUFFER IS EMPTY\r
JRST MTGO1\r
\r
+\r
+\r
CHKLOK: CONSO 224,200 ;WRITE LOCKED?\r
JRST MTGO0 ;NO, DO MTAPE\r
PUSHJ PDP,QSTAT\r
MOVEI T,7 ;BSP\r
JRST MTAPE\r
\r
+\r
MTCINI: PUSHJ PDP,RELCON\r
SETOM MTREWN ;SET CLOCK REQUEST COUNT TO -1\r
JRST MTNIO1\r
\r
\r
;BLK COUNTED OUT\r
+\r
IFE FTCHECK+FTMONP,<\r
MTDCND: 0\r
>\r
CONSZ DC,10000\r
SETOM MISSED\r
JEN @MTDCND\r
-\f;FLAG FROM TAPE CONTROL. SET UP BY INSERT MACRO\r
+\r
+\f\r
+;FLAG FROM TAPE CONTROL. SET UP BY INSERT MACRO\r
MTCINT: CONSO 224,@MTCCON\r
JRST .\r
JSR MTCSAV ;SAVE AC'S\r
SETZM MTEOFF ;CLEAR EOF FLAG\r
\r
;AND FALL INTO MTEND1\r
-\fMTEND1: PUSHJ PDP,DETDC ;DETACH DC (IF ASSIGNED)\r
+\f\r
+MTEND1: PUSHJ PDP,DETDC ;DETACH DC (IF ASSIGNED)\r
PUSHJ PDP,ETCHK ;CHECK FOR END OF TAPE (FOR DUMP MODE OUT)\r
PUSHJ PDP,CLRACT\r
CONSO 224,TCF ;TAPE CONTROL FREE?\r
PUSHJ PDP,REWCK ;YES,SEE IF FINISHED REW.\r
JRST .+3 ;HAS FINISHED\r
JRST REW1 ;OFF- LET HUNG LOGICA TAKE CARE OF IT\r
- JRST REW2 ;STILL REWINDING\r
+ JRST REW0 ;STILL REWINDING\r
TDZ IOS,[XWD IOREW,IOACT];GET JOB OUT OF IO WAIT\r
TLZE IOS,IOW\r
PUSHJ PDP,SETIOD ;START JOB UP AGAIN\r
ETCHK: CONSZ MTS1,10000 ;EOT SEEN?\r
TRO IOS,IOIMPM+IOTEND ;YES-SET FLAGS\r
TDZ IOS,[XWD IOREW,IOBOT];NO LONGER REWINDING\r
- CONSZ MTS1,24002 ;UNLESSS\r
+ CONSZ MTS1,24000 ;UNLESSS\r
TRO IOS,IOBOT ;IS REALLY REWINDING\r
POPJ PDP, ;EXIT\r
+\r
\f;ROUTINE CALLED AT CLOCK LEVEL TO SEE IF ANY UNITS WHICH ARE IN A\r
;REW WAIT HAVE FINISHED REWIND.\r
\r
\r
MTCLK: MOVEI TAC1,JIFSC2 ;CHECK EVERY HALF SECOND\r
HRLI TAC1,MTCLOK ;DISPATCH ADDRESS\r
- \r
-\r
CONO PI,400 ;TURN OFF PI\r
IDPB TAC1,CLOCK ;STORE CLOCK REQUEST\r
CONO PI,200 ;TURN ON PI\r
CONSZ 224, 400 ;EOF?\r
TDO IOS,[XWD IOSEOF,IODEND]\r
JRST MTNIO ;EXIT\r
+\r
+\r
\fMTEOR: MOVEI TAC,ERF\r
CONSO 224,ERF ;END OF RECORD FLAG ON?\r
JRST MTIGN1 ;NO. WAIT FOR IT.\r
CONO DC,0 ;SHUT DOWN DC\r
LSH TAC,44(TAC1) ;SHIFT LAST CHARACTERS TO LEFT END\r
JUMPG T,MTEOR1\r
-\r
AOBJN T,.+1 ;BUMP DATA POINTER\r
MOVEM TAC,(T) ;STORE LAST WORD\r
MOVEM T,DCWRD ;AND BUMPED POINTER\r
TRO T,1 ;YES, COUNT IN QUARTER 4\r
ADDM T,MTECNT(DEVDAT);ADD TO ERROR COUNTS FOR THIS DRIVE\r
JRST MTECON ;CHECK EOF\r
-\fMTERR: HLRZ TAC,MTDEV ;COMMAND\r
+\f\r
+MTERR: HLRZ TAC,MTDEV ;COMMAND\r
ANDI TAC,7400\r
TRNE IOS,IONRCK\r
JRST MTERR2\r
CONO 220,4400(TAC) ;WRITE BLANK TAPE\r
AOS MTERCN\r
JRST MTIGN\r
-\fMTC=220 ;MAG TAPE CONTROL DEVICE NUMBER\r
+\f\r
+MTC=220 ;MAG TAPE CONTROL DEVICE NUMBER\r
\r
MTS1=224 ;MAG TAPE CONTROL STATUS REG 1\r
XNC=40000 ;TRANSFER NEW COMMAND\r
IONRCK=100 ;DO NOT RE-TRY ON ERRORS\r
IOBOT=4000 ;TAPE AT LOAD POINT\r
IODT=10000 ;A 1 FOR A DATA TRANSFER TYPE COMMAND\r
-IOSLIC=2000 ;A 1 IF SLICE LEVEL IS 1, OTHERWISE 0.\r
-HASMT=4000 ;IF A 1, THIS JOB HAS THE MAG TAPE CONTROL\r
-IOREW=40000 ;A 1 IF UNIT IS REWINDING AND ANOTHER OPERATIONS\r
+IOSLIC=20000 ;A 1 IF SLICE LEVEL IS 1, OTHERWISE 0.\r
+HASMT=40000 ;IF A 1, THIS JOB HAS THE MAG TAPE CONTROL\r
+IOREW=400000 ;A 1 IF UNIT IS REWINDING AND ANOTHER OPERATIONS\r
;IS ATTEMPTED ON SAME UNIT. MUST BE SIGN BIT.\r
\r
+\r
EXTERNAL ADVBFF,ADVBFE,DCREQ,MTCSAV,SETACT,CLRACT,ORACT,GETDCMT\r
EXTERNAL MTCRET, DCAVAL, MTAVAL, MTCCHN, MTREQ\r
EXTERNAL MTWAIT,OUT,SETIOD,CLOCK,HNGSTP,MTSIZ\r
MTIDSP: JRST MTPDUN\r
\r
>\r
-\f;LOGICAL EBND OF TAPE LOOP\r
+\f\r
+;LOGICAL END OF TAPE LOOP\r
MTLEOT: MOVEI T,7 ;BACKSPACE\r
PUSHJ PDP,MTAPE2\r
PUSHJ PDP,MTCHK2 ;CALL INTERLOCK, PICKUP IOS\r
MOVEI T,2400 ;READ COMMAND\r
JRST MTDMP1 ;DUMP\r
;ADDRESS ERROR\r
+\r
MTDMP2: PUSHJ PDP,MTEND1\r
JRST ADRERR\r
\r
+\r
END\r
\f\r
-\0
\ No newline at end of file