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
-DEFINE MTAPE (A) ;MARCO TO DEFINE LEGAL MTAPE UUO EFFECTIVE ADDRESSES.\r
+\r
+DEFINE MTAPES (A) ;MARCO TO DEFINE LEGAL MTAPES UUO EFFECTIVE ADDRESSES.\r
< CODES=0\r
IRP A, <\r
- CODES=CODES!<1B<^D35-^0'A>>>>\r
+ CODES=CODES!<1B<^D35-^O'A>>>>\r
\r
MTAPES <0,1,11,7,17,3,6,13,16,10> ;DEFINE WHICH CODES ARE LEGAL\r
\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 NOSFT ;NO\r
+ JRST NOSET ;NO\r
TLZ IOS,IOSLIC ;YES, CLEAR LEVEL\r
TRNE T,SLEVEL ;SET TO 1?\r
TLO IOS,IOSLIC ;YES\r
JRST MTLEOT\r
CAIE T,1400 ;WRITE EOF\r
CAIN T,5400 ;OR WRITE BLANK TAPE?\r
- JRST CHKLOC ;YES, CHECK WRITE-LOCK\r
+ JRST CHKLOK ;YES, CHECK WRITE-LOCK\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
TRO TAC,100000 ;YES, SET COMMAND.\r
HRRM DEVDAT,MTDEV ;COMMAND, DVDB\r
HRLM TAC,MTDEV\r
-MTGO3: MOVEI TAC1,MTPOUN\r
+MTGO3: MOVEI TAC1,MTPDUN\r
HRRM TAC1,MTIDSP\r
SETZM MTEOFF ;CLEAR EOF FLAG\r
TLNN IOS,IODT ;IS THIS A DATA TRANSFER OPERATION\r
JRST STOIOS ;STORE HUNG COUNT, EXIT\r
\r
;READ\r
-MTIN: PUSHJ PDP,MTCHECK ;IS SYSTEM AVAILABLE?>\r
+MTIN: PUSHJ PDP,MTCHEK ;IS SYSTEM AVAILABLE?>\r
TLZ IOS,IO ;READING.\r
MTIN1: SETCM TAC,@DEVIAD(DEVDAT) ;-SIZE-1\r
HRRI TAC,@DEVIAD(DEVDAT) ;BUFFER ADDRESS,PROG INCLUDED\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
MTCHK2: AOSE MTREQ\r
PUSHJ PDP,MTWAIT\r
MOVE IOS,DEVIOS(DEVDAT)\r
- TLZ IOS,IO ;CLEAR IUO INDICATION SO "REWCK" WILL WORK\r
+ TLZ IOS,IO ;CLEAR IO INDICATION SO "REWCK" WILL WORK\r
PUSHJ PDP,MTCHK4 ;CHECK STATUS\r
JRST MTCHK2 ;GET MT AGAIN\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,IUOSLIC ;YES, SET SLICE LEVEL TO 0.\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
JRST TPOPJ ;NO - STATUS OK\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 PD,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
HRRI TAC1,DCWRD\r
CONO PI,DCOFF ;TURN DC PI CHANNEL OFF\r
MOVEM TAC1,DCLOC ;BLK COMMAND\r
- MOVE TAC1,JSR MTDCND]\r
+ MOVE TAC1,[JSR MTDCND]\r
MOVEM TAC1,DCLOC1\r
TRO IOS,IOACT ;SET IOACT\r
MOVSI TAC, ERF ;ENABLE FOR EOR IF EOR FLAG NOT ON.\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 MRTEWN ;SET CLOCK REQUEST COUNT TO -1\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
HRRZ DEVDAT,MTDEV ;DVDB\r
- LDB PROG,PJOBM; JOB NUMBER\r
+ LDB PROG,PJOBN; JOB NUMBER\r
MOVE PROG,JBTADR(PROG)\r
MOVE IOS, DEVIOS(DEVDAT)\r
CONSO 224,TCF ;TAPE CONTROL FREE\r
JRST DMPDUN ;DUMP\r
TLNE IOS,IO\r
JRST MTNOTI ;WRITING\r
- SKIPF MTEOFF ;NOT EOF?\r
+ SKIPE MTEOFF ;NOT EOF?\r
JRST MTEOF\r
MOVEI TAC,@DEVIAD(DEVDAT) ;BUFFER ADDRESS\r
MOVN TAC1,MTDCCN ;WD CNT-1\r
- AOBJ TAC1, .+1 ;WD CNT\r
+ AOBJN TAC1, .+1 ;WD CNT\r
HLLZS TAC1 ;CLR RT HALF\r
ADD TAC1,DCWRD ;ADD CURRENT COUNT=NO, OF WDS\r
HLRM TAC1,1(TAC) ;STORE AT WORD COUNT\r
SETZM MTEOFF ;CLEAR EOF FLAG\r
\r
;AND FALL INTO MTEND1\r
-\fMTEND1: PUSHJ PDP,DETDO ;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
- JRST MTION ;NO. WAIT FOR IT.\r
+ JRST MTIGN ;NO. WAIT FOR IT.\r
MTFIN:\r
MTNIO: TLZE IOS,IOW ;CLEAR WAIT\r
PUSHJ PDP,SETIOD\r
- PUSHJ PDP,DETMOC ;DETACH MTC (IF HASMT SET) AND DC (IF IODT)\r
+ PUSHJ PDP,DETMDC ;DETACH MTC (IF HASMT SET) AND DC (IF IODT)\r
PUSHJ PDP,ETCHK ;CHECK FOR END OF TAPE\r
PUSHJ PDP,CLRACT ;RESTORE BITS,CLEAR IOACT\r
\r
;AND FALL INTO MTNIO1\r
-\fMTIO1: MOVN TAC,MTREDO ;REPEAT COUNTER\r
+\fMTNIO1: MOVN TAC,MTREDO ;REPEAT COUNTER\r
HRREM TAC,MTERCN\r
SKIPGE MTREWN ;IS ANY OTHER UNIT REWINDING AND\r
;A SECOND COMMAND HELD UP?\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
REW1: AOS MTREWN ;INCREMENT COUNT OF REW WAIT UNITS\r
REW2: HLRZ DEVDAT,DEVSER(DEVDAT) ;DEVDAT TO NEXT DDB\r
JUMPE DEVDAT,REW3 ;LAST ONE?\r
- HRLZ DAT,DEVNAM(DEVDAT) ;NO,GET LH OF NAME\r
- CAIN DAT,(SIZBIT /MTA/) ;STILL A MAGTAPE?\r
+ HLRZ DAT,DEVNAM(DEVDAT) ;NO,GET LH OF NAME\r
+ CAIN DAT,(SIXBIT /MTA/) ;STILL A MAGTAPE?\r
JRST REWLP ;YES, CONTINUE\r
REW3: POP PDP,DEVDAT\r
POPJ PDP, ;YES, DISMISS INTERRUPT OF RETURN TO MTC OK\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
CONSZ DC,1000 ;DATA MISSED\r
SETOM MISSED ;YES\r
- CONSO DC,1600000 ;ANY CHARS. LEFT?\r
+ CONSO DC,160000 ;ANY CHARS. LEFT?\r
JRST MTEOR1 ;NO\r
MOVE T,DCWRD ;GET IOWD\r
TLNN IOS,IO ;O/P\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
CONSZ MTS1,400000 ;ILLEGAL OP?\r
TRO T,1000 ;YES, COUNT IN QUARTER 3\r
CONSO MTS1,100\r
- SKIPF MISSFD ;DATA MISSED?\r
+ SKIPE MISSED ;DATA MISSED?\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
JRST MTPDUN\r
\r
MTBSP: MOVE TAC,MTDCCN ;POINTER\r
- MOVEM TAC,DOWRD ;RESET POINTER WORD\r
+ MOVEM TAC,DCWRD ;RESET POINTER WORD\r
HLRZ TAC,MTDEV ;COMMAND\r
CONSO 224,XNC ;WAIT FOR XNC\r
JRST .-1 ;SHOULD ADD A COUNT(RUNAWAY TAPE TURNED OFF)\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
TCF=1 ;TAPE CONTROL FREE\r
ERF=4 ;END OF RECORD FLAG\r
LPE=20 ;LONG. PARITY ERROR\r
-CRE=10 ;CHAR. PARITY ERROR\r
+CPE=10 ;CHAR. PARITY ERROR\r
SEL=2 ;UNIT TO COMMAND BUFFER\r
IOSEOF=4000 ;SPACING ONE RECORD FORWARD FOUND EOF\r
IOTEND=2000 ;EOT INDICATION\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,MTAPC2\r
+ PUSHJ PDP,MTAPE2\r
PUSHJ PDP,MTCHK2 ;CALL INTERLOCK, PICKUP IOS\r
;AFTER PREVIOS TASK FINISHED.\r
MTEOT2: MOVEI T,16 ;SAVE ONE FILE\r
PUSHJ PDP,SAVCHK\r
MOVE TAC1, @MTOUT2 ;BLKO AND DATA CONTROL COMMAND\r
MOVEI T,1000 ;WRITING COMMAND\r
-MTDMP1: HTLI TAC, PROG ;ACTUAL ADDRESS OF COMMAND LIST\r
- MOVEM TAC, MTDUMP ;COMMAND POINTER\r
+MTDMP1: HRLI TAC, PROG ;ACTUAL ADDRESS OF COMMAND LIST\r
+ MOVEM TAC, MTCMDP ;COMMAND POINTER\r
SKIPN TAC,@TAC ;COMMAND WORD\r
JRST MTEND1\r
JUMPG TAC, MTDMP1 ;CHANGE COMMAND SEQUENCE\r
- HLREM TAC, SVCNT ;SAVE COUNTER\r
+ HLREM TAC, SVCNTR ;SAVE COUNTER\r
HRRZS TAC ;GET ADDRESS ALONE\r
CAMGE TAC,AC1\r
JRST MTDMP2\r
MTDMPI: PUSH PDP,UUO\r
MTDPI1: TRNE IOS,IODEND\r
JRST TPOPJ\r
- PUSHJ PDP,MTCHECK\r
+ PUSHJ PDP,MTCHEK\r
TLZ IOS,IO ;READING\r
PUSHJ PDP,SAVCHK\r
MOVE TAC1,@MTIN2 ;BLKI AND DATA CONTROL COMMAND\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