X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/d693caac75dd25e668e43e85c29205bfc8dea06e..HEAD:/src/mtcsr6.mac diff --git a/src/mtcsr6.mac b/src/mtcsr6.mac index 370a94e..6eeeaf3 100644 --- a/src/mtcsr6.mac +++ b/src/mtcsr6.mac @@ -2,6 +2,7 @@ TITLE MTCSR6 - MAGNETIC TAPE ROUTINES FOR 516 CONTROL SUBTTL C.WHITE 27-APR-69 V406 XP VMTCSR,406 ;DEFINE GLOBAL VERSION NUMBER FOR LOADER MAP + ENTRY MTCSR6 MTCSR6: INTERNAL FTCHECK,FTMONP @@ -58,6 +59,7 @@ MTCDSP: POPJ PDP, ;RELEASE POPJ PDP, ;UTPCLR ;MTAPE UUO (FALL INTO THIS CODE WHICH FOLLOWS) + DEFINE MTAPES (A) ;MARCO TO DEFINE LEGAL MTAPES UUO EFFECTIVE ADDRESSES. < CODES=0 IRP A, < @@ -75,7 +77,8 @@ DEFINE MTAPES (A) ;MARCO TO DEFINE LEGAL MTAPES UUO EFFECTIVE ADDRESSES. TRZ IOS,776000 ;CLEAR ERROR BITS ,IOF. ;IOACT, IOBOT AND IOTEND. SKIPA T,UUO ;CALL MTAPE2 - MTAPE: PUSHJ PDP,MTCHK2 ;CHECK IF MAG TAPE CONTROL AVAIL. + +MTAPE: PUSHJ PDP,MTCHK2 ;CHECK IF MAG TAPE CONTROL AVAIL. MTAPE2: TDZ IOS,[XWD IODT!IOSEOF,IOACT] TRNN T,SLICE ;SET SLICE LEVEL THIS UUO? JRST NOSET ;NO @@ -93,13 +96,13 @@ NOSET: CONSO 224,4000 ;AT LOAD POINT? JRST MTGO0 ;NO CAIE T,3400 ;YES, BACKSPACE RECORD? - CAIN T,400 ;NO, REW? JRST MTFIN ;YES CAIN T,7400 ;NO, BACKSPACE FILE? JRST MTFIN ;YES MTGO0: MOVSI TAC,TCF ;LOOK FOR TAPE CONTROL FREE ONLY - ;HERE FROM INPUT AND OUTPUT UUOS AND INTERRUPT TO DO NEXT RECORD. + +;HERE FROM INPUT AND OUTPUT UUOS AND INTERRUPT TO DO NEXT RECORD. MTGO1: LDB TAC1,PUNIT ;UNIT DPB TAC1,[POINT 3,T,31] ;UNIT @@ -137,7 +140,8 @@ MTIN1: SETCM TAC,@DEVIAD(DEVDAT) ;-SIZE-1 MOVEI T,2400 ;READ MTIN2: MOVE TAC1,[BLKI DC,4000+MTDC*10] JRST MTINDC - ;IS SYSTEM AVAILABLE + +;IS SYSTEM AVAILABLE MTCHEK: PUSHJ PDP,GETDCMT ;GET DATA AND MAG TAPE CONTROLS AOSE MTREQ ;ARGUMENT MOVE IOS,DEVIOS(DEVDAT) @@ -155,7 +159,6 @@ MTCHK2: AOSE MTREQ MTCHK4: TLO IOS,HASMT ;THIS JOB NOW HAS MTC TLZE IOS,IOBEG ;FIRST OPERATION AFTER INIT OR SETSTS - TLZ IOS,IOSLIC ;YES, SET SLICE LEVEL TO 0. TLZ IOS,IOREW ;CLEAR MAG TAPE REWINDING PUSHJ PDP,REWCK ;CHECK IF REWINDING? @@ -173,7 +176,9 @@ MTCHK4: TLO IOS,HASMT ;THIS JOB NOW HAS MTC QSTAT: PUSHJ PDP,DETMDC ;DETACH MTC AND DC JRST HNGSTP ;CHECK STATUS (PULL FINGERS OUT, ETC) - ;MTAPE 0 WAITS UNTIL THE CONTROL IS FREE + + +;MTAPE 0 WAITS UNTIL THE CONTROL IS FREE ;THUS MTAPE 0 PROVIDES THE ONLY WAY FOR A USER TO WAIT UNTIL A SPACING OPERATION ; (I.E., SKIP, BACKSPACE, OR REWIND) IS COMPLETED. @@ -182,6 +187,8 @@ MTP0: PUSHJ PDP,MTCHK2 ;WAIT FOR CONTROL TO BECOME FREE, ; AND RETURN TO THE USER. + + ;DETMDC- ; DETACH MTC, AND TURN OFF HASMT. ; THEN (IFF IODT ON) @@ -197,7 +204,7 @@ MTHUNG: DETDC: TLZN IOS,IODT ;DOES JOB HAVE DATA CONTROL? JRST STOIOS ;NO- EXIT CONO DC,0 - CONO DC,DCOFF + CONO PI,DCOFF SOSL DCREQ ;ANYONE ELSE WAITING FOR IT? SETOM DCAVAL ;YES- FLAG AS JUST BECOME AVAILABLE JRST STOIOS ;AND EXIT @@ -206,7 +213,8 @@ RELCON: CONO 220,0 CONO 224,0 SETZM MTCCON POPJ PDP, - ;ROUTINE TO SEE IF UNIT IS REWINDING + +;ROUTINE TO SEE IF UNIT IS REWINDING ;CALL MOVE DEVDAT,ADDRESS OF DDB ; PUSHJ PDP,REWCK ; UNIT READY @@ -225,6 +233,7 @@ REWCK: LDB TAC,PUNIT AOS (PDP) POPJ PDP, ;YES- RETURN TO CALL+1 + REPEAT 0,< THIS WORKS WITH THE FOLLOWING MOD TO 545 TRANSPORT: @@ -238,7 +247,8 @@ THIS MODE SETS IOP22(1) WHILE MAGTAPE IS REWINDING OR SPACING FORWARD TO LOAD POINT- IF ENABLES THE PROCESSOR TO DISTINGUISH BETWEEN A TAPE WHICH IS AT THE END OF A REWIND COMMAND, AND A TAPE WHICH IS SWITCHED TO LOCAL, OR OFF> - ;WRITE + +;WRITE MTOUT: PUSHJ PDP,MTCHEK TLO IOS,IO ;WRITING MTOUT1: MOVEI TAC,@DEVOAD(DEVDAT) ;BUFFER ADDRESS, PROG INCLUDED @@ -262,6 +272,8 @@ MTINDC: MOVEM TAC,MTDCCN ;BLKO POINTER MOVSI TAC,XNC ;NO. COME BACK WHEN COMMAND BUFFER IS EMPTY JRST MTGO1 + + CHKLOK: CONSO 224,200 ;WRITE LOCKED? JRST MTGO0 ;NO, DO MTAPE PUSHJ PDP,QSTAT @@ -281,12 +293,14 @@ MWLEOT: MOVEI T,3 ;WRITE EOF MOVEI T,7 ;BSP JRST MTAPE + MTCINI: PUSHJ PDP,RELCON SETOM MTREWN ;SET CLOCK REQUEST COUNT TO -1 JRST MTNIO1 ;BLK COUNTED OUT + IFE FTCHECK+FTMONP,< MTDCND: 0 > @@ -294,7 +308,9 @@ MTDCN1: CONO PI,DCOFF ;SHUT OFF DC CHANNEL CONSZ DC,10000 SETOM MISSED JEN @MTDCND - ;FLAG FROM TAPE CONTROL. SET UP BY INSERT MACRO + + +;FLAG FROM TAPE CONTROL. SET UP BY INSERT MACRO MTCINT: CONSO 224,@MTCCON JRST . JSR MTCSAV ;SAVE AC'S @@ -335,7 +351,8 @@ MTEOF: TLO IOS,IOEND SETZM MTEOFF ;CLEAR EOF FLAG ;AND FALL INTO MTEND1 - MTEND1: PUSHJ PDP,DETDC ;DETACH DC (IF ASSIGNED) + +MTEND1: PUSHJ PDP,DETDC ;DETACH DC (IF ASSIGNED) PUSHJ PDP,ETCHK ;CHECK FOR END OF TAPE (FOR DUMP MODE OUT) PUSHJ PDP,CLRACT CONSO 224,TCF ;TAPE CONTROL FREE? @@ -368,7 +385,7 @@ REWLP: MOVE IOS,DEVIOS(DEVDAT) PUSHJ PDP,REWCK ;YES,SEE IF FINISHED REW. JRST .+3 ;HAS FINISHED JRST REW1 ;OFF- LET HUNG LOGICA TAKE CARE OF IT - JRST REW2 ;STILL REWINDING + JRST REW0 ;STILL REWINDING TDZ IOS,[XWD IOREW,IOACT];GET JOB OUT OF IO WAIT TLZE IOS,IOW PUSHJ PDP,SETIOD ;START JOB UP AGAIN @@ -379,7 +396,7 @@ REW0: PUSHJ PDP,STOIOS ;RESET HUNG COUNT IF STILL REWINDING REW1: AOS MTREWN ;INCREMENT COUNT OF REW WAIT UNITS REW2: HLRZ DEVDAT,DEVSER(DEVDAT) ;DEVDAT TO NEXT DDB JUMPE DEVDAT,REW3 ;LAST ONE? - HRLZ DAT,DEVNAM(DEVDAT) ;NO,GET LH OF NAME + HLRZ DAT,DEVNAM(DEVDAT) ;NO,GET LH OF NAME CAIN DAT,(SIXBIT /MTA/) ;STILL A MAGTAPE? JRST REWLP ;YES, CONTINUE REW3: POP PDP,DEVDAT @@ -388,9 +405,10 @@ REW3: POP PDP,DEVDAT ETCHK: CONSZ MTS1,10000 ;EOT SEEN? TRO IOS,IOIMPM+IOTEND ;YES-SET FLAGS TDZ IOS,[XWD IOREW,IOBOT];NO LONGER REWINDING - CONSZ MTS1,24002 ;UNLESSS + CONSZ MTS1,24000 ;UNLESSS TRO IOS,IOBOT ;IS REALLY REWINDING POPJ PDP, ;EXIT + ;ROUTINE CALLED AT CLOCK LEVEL TO SEE IF ANY UNITS WHICH ARE IN A ;REW WAIT HAVE FINISHED REWIND. @@ -410,8 +428,6 @@ EXTERNAL JIFSC2 MTCLK: MOVEI TAC1,JIFSC2 ;CHECK EVERY HALF SECOND HRLI TAC1,MTCLOK ;DISPATCH ADDRESS - - CONO PI,400 ;TURN OFF PI IDPB TAC1,CLOCK ;STORE CLOCK REQUEST CONO PI,200 ;TURN ON PI @@ -436,6 +452,8 @@ MTNIO2: HLRZ TAC,MTDEV ;COMMAND CONSZ 224, 400 ;EOF? TDO IOS,[XWD IOSEOF,IODEND] JRST MTNIO ;EXIT + + MTEOR: MOVEI TAC,ERF CONSO 224,ERF ;END OF RECORD FLAG ON? JRST MTIGN1 ;NO. WAIT FOR IT. @@ -455,7 +473,6 @@ MTNIO2: HLRZ TAC,MTDEV ;COMMAND CONO DC,0 ;SHUT DOWN DC LSH TAC,44(TAC1) ;SHIFT LAST CHARACTERS TO LEFT END JUMPG T,MTEOR1 - AOBJN T,.+1 ;BUMP DATA POINTER MOVEM TAC,(T) ;STORE LAST WORD MOVEM T,DCWRD ;AND BUMPED POINTER @@ -483,7 +500,8 @@ MTEOR2: SOS MTIDSP ;POINT TO ERROR ROUTINE TRO T,1 ;YES, COUNT IN QUARTER 4 ADDM T,MTECNT(DEVDAT);ADD TO ERROR COUNTS FOR THIS DRIVE JRST MTECON ;CHECK EOF - MTERR: HLRZ TAC,MTDEV ;COMMAND + +MTERR: HLRZ TAC,MTDEV ;COMMAND ANDI TAC,7400 TRNE IOS,IONRCK JRST MTERR2 @@ -523,7 +541,8 @@ MTBSP3: TRNN TAC,1000 ;READING CONO 220,4400(TAC) ;WRITE BLANK TAPE AOS MTERCN JRST MTIGN - MTC=220 ;MAG TAPE CONTROL DEVICE NUMBER + +MTC=220 ;MAG TAPE CONTROL DEVICE NUMBER MTS1=224 ;MAG TAPE CONTROL STATUS REG 1 XNC=40000 ;TRANSFER NEW COMMAND @@ -538,11 +557,12 @@ IOTEND=2000 ;EOT INDICATION IONRCK=100 ;DO NOT RE-TRY ON ERRORS IOBOT=4000 ;TAPE AT LOAD POINT IODT=10000 ;A 1 FOR A DATA TRANSFER TYPE COMMAND -IOSLIC=2000 ;A 1 IF SLICE LEVEL IS 1, OTHERWISE 0. -HASMT=4000 ;IF A 1, THIS JOB HAS THE MAG TAPE CONTROL -IOREW=40000 ;A 1 IF UNIT IS REWINDING AND ANOTHER OPERATIONS +IOSLIC=20000 ;A 1 IF SLICE LEVEL IS 1, OTHERWISE 0. +HASMT=40000 ;IF A 1, THIS JOB HAS THE MAG TAPE CONTROL +IOREW=400000 ;A 1 IF UNIT IS REWINDING AND ANOTHER OPERATIONS ;IS ATTEMPTED ON SAME UNIT. MUST BE SIGN BIT. + EXTERNAL ADVBFF,ADVBFE,DCREQ,MTCSAV,SETACT,CLRACT,ORACT,GETDCMT EXTERNAL MTCRET, DCAVAL, MTAVAL, MTCCHN, MTREQ EXTERNAL MTWAIT,OUT,SETIOD,CLOCK,HNGSTP,MTSIZ @@ -577,7 +597,8 @@ MTCCON: 0 ;INTERRUPT FLAGS MTIDSP: JRST MTPDUN > - ;LOGICAL EBND OF TAPE LOOP + +;LOGICAL END OF TAPE LOOP MTLEOT: MOVEI T,7 ;BACKSPACE PUSHJ PDP,MTAPE2 PUSHJ PDP,MTCHK2 ;CALL INTERLOCK, PICKUP IOS @@ -647,9 +668,10 @@ MTDPI1: TRNE IOS,IODEND MOVEI T,2400 ;READ COMMAND JRST MTDMP1 ;DUMP ;ADDRESS ERROR + MTDMP2: PUSHJ PDP,MTEND1 JRST ADRERR + END - \ No newline at end of file