SUBTTL T. WACHS/TH TS 20 MAY 69\r
XP VMTASR,420 ;DEFINE VERSION NUMBER FOR LOADER STORAGE MAP\r
\r
+\r
ENTRY MTASRX\r
MTASRX:\r
\r
JRST MTDMPI\r
POPJ PDP, ;USETO\r
POPJ PDP, ;USETI\r
+ POPJ PDP, ;UGETF\r
JRST CPOPJ1 ;RENAME\r
POPJ PDP, ;CLOSE INPUT\r
POPJ PDP, ;UTPCLR\r
MTC=340\r
MTS=344\r
\r
+\r
;MTACHN=FLAG CHANNEL\r
;MTOCHN=DATA CHANNEL\r
;MTFLAG=10*MTACHN + 400\r
EXTERN CPOPJ,CPOPJ1,PIOMOD,PUNIT,MTWAIT,JIFSC2,COMCHK\r
EXTERN PIOFF,PION,MTASAV,ADRERR,PDVCNT,MTSIZ,STOIOS,IADRCK\r
\r
-COMPAT=1000 ;IBM COMPATABLE 9-TRACK\r
-DMPMOD=20000 ;DUMP MODE FLAG\r
-MTREW=40000 ;MAGTAPE IS REWINDING\r
+COMPAT=10000 ;IBM COMPATABLE 9-TRACK\r
+DMPMOD=200000 ;DUMP MODE FLAG\r
+MTREW=400000 ;MAGTAPE IS REWINDING\r
\r
MTTRY=3 ;NO. OF TIMES TO RETRY ON AN ERROR\r
QUANT=3 ;NO. OF RECORDS TO READ UNINTERRUPTED\r
\r
;IF ENTER OR LOOKUP IN SAVE MODE - CHANGE TO MODE 16\r
SAVCHK: LDB TAC,PIOMOD ;GET MODE\r
- CAIN TAC,0 ;SAVE MODE?\r
+ CAIN TAC,2 ;SAVE MODE?\r
TRO IOS,16 ;YES, CHANGE TO DUMP-MODE\r
MOVEM IOS,DEVIOS(DEVDAT)\r
JRST CPOPJ1 ;GIVE GOOD RETURN FROM LOOKUP/ENTER\r
;CLOSE\r
MTCLOS: TLNN DEVDAT,OUTPB ;OUTPUT BEEN DONE?\r
POPJ PDP, ;NO. GO AWAY\r
-\r
LDB TAC,PIOMOD\r
CAIGE TAC,16 ;DUMP MODE?\r
PUSHJ PDP,OUT ;NO. EMPTY LAST PARTIAL BUFFER\r
HRRM TAC,-1(PDP) ;AGAIN WHEN INACTIVE\r
JRST SETACT ;SET DEVICE ACTIVE\r
\r
+\r
;DELAY TILL TAPE COMES OUT OF IO WAIT, THEN GET CONTROL\r
DLYRDY: SETOM MTAVAL\r
PUSHJ PDP,WSYNC ;WAIT FOR IO TO STOP\r
\r
+\r
;GET MTC, CONNECT TAPE TO CONTROL\r
TPREDY: AOSE MTREQ ;GET CONTROL\r
PUSHJ PDP,MTWAIT ;WAIT FOR IT\r
TPRDY2: MOVEM PROG,USEPRG\r
PUSHJ PDP,CONECT ;CONECT CONTROL TO TAPE\r
\r
+\r
;SET TP FOR THIS TAPE\r
TPSET: LDB TP,[POINT 2,IOS,28] ;PARITY\r
SKIPN TP ;USE STANDARD IF 0\r
CONSZ MTS,4 ;7 OR 9 TRACK?\r
JRST RDYCHK ;7 TRACK\r
TLNN IOS,COMPAT ;9 TRACK. CORE DUMP?\r
- TROA TP,20030 ;YES\r
+ TROA TP,20000 ;YES\r
TRO TP,40300 ;NO. SET 800 BPI, ODD PARITY\r
\f;MAKE SURE TAPE IS READY\r
RDYCHK: CONSZ MTS,40 ;READY?\r
POPJ PDP, ;YES\r
- CONSO MTS,20000 ;REWINDING?\r
+ CONSO MTS,200000 ;REWINDING?\r
POPJ PDP, ;NO. LET XPORT HUNG INTERRUPT HANDLE IT\r
+\r
TLO IOS,MTREW ;YES. MUST BE REWINDING\r
PUSHJ PDP,SETACT ;DEVICE ACTIVE\r
AOS NMTREW ;BUMP COUNT OF REWINDING DRIVES\r
JRST REWCK1 ;YES\r
TLZE IOS,IOW ;NO, TAKE OUT OF IO WAIT\r
PUSHJ PDP,SETIOD\r
- TLZ IOS,MTREQ\r
+ TLZ IOS,MTREW\r
PUSHJ PDP,CLRACT ;NO LONGER ACTIVE\r
JRST REWCK2\r
- \r
REWCK1: AOS NMTREW ;COUNT REWINDING TAPE\r
MOVEI TAC,36 \r
- CONSZ MTS,20000 ;IF TAPE IS STILL REWINDING\r
+ CONSZ MTS,200000 ;IF TAPE IS STILL REWINDING\r
DPB TAC,PDVCNT ;MAKE SURE IT DOESN'T GET A HUNG DEVICE\r
REWCK2: HLRZ DEVDAT,DEVSER(DEVDAT) ;NEXT DEVICE\r
HLRZ TAC,DEVNAM(DEVDAT) ;A MAG TAPE?\r
CONO MTC,(TP) ;START TAPE MOVING\r
JRST CLRACT ;AND RETURN\r
\r
+\r
;SET 9-TRACK TAPE\r
SET9TK: TRNE UUO,1\r
TLOA IOS,COMPAT ;SET IBM COMPAT.\r
HRRI TAC1,PNTR ;BLKI/BLKO PNTR\r
MOVEM TAC1,MTALOC ;INTO INTERRUPT LOC\r
HRLM TP,USEWRD ;SAVE COMMAND\r
-\r
CONO MTC,(TP) ;START TAPE MOVING\r
TRO IOS,IOACT ;SETACT CLEARS IOW\r
JRST STOIOS ;STORE IOS AND RETURN\r
MTIN2: TRO TP,2000 ;FUNCTION = READ\r
MOVSI TAC1,(BLKI MTC,) ;SETUP BLKI\r
JRST MTDTGO ;GO START TAPE\r
+\r
\fMTAINT: CONSO MTS,440102 ;INTERRUPT FOR MAG TAPE?\r
JRST . ;NO. GO AWAY\r
CONSO MTC,400 ;HAS CONTROL FREE ENABLED?\r
CONSZ MTS,440100 ;NO. CONTROL FREE ERRONEOUSLY ON?\r
- JRST +2 ;REAL MTA INTERRUPT\r
+ JRST .+2 ;REAL MTA INTERRUPT\r
JRST MTAINT+1 ;THIS INTERRUPT NOT REALLY FOR MTA\r
JSR MTASAV ;YES. SAVE ACS\r
HRRZ DEVDAT,USEWRD ;RESET DEVDAT\r
HLLZS MTAINT ;DONT LOOK AT ANY MORE INTERRUPTS\r
POPJ PDP, ;AND EXIT\r
\r
+\r
;HERE WHEN BLKI/BLKO COUNTS DOWN TO ZERO\r
MTDEND: 0\r
CONO MTS,1 ;GIVE A FUNCTION STOP\r
JRST THRUTP ;NONE FREE\r
JRST NXTREC ;CONTINUE WITH NEXT RECORD\r
\r
+\r
; HERE AT THE END OF A DUMP MODE RECORD\r
DMPEND: HLRZ TP,USEWRD ;SET UP COMMAND AGAIN\r
CONSO MTS,14000 ;EOF OR EOT?\r
SOS UUO ;WILL COUNT IT UP LATER\r
MOVEM UUO,LSTLOC ;SAVE LOC OF LIST\r
DMPBLK: PUSHJ PDP,NXTCOM ;GET NEXT COMMAND\r
-\r
ADDI TAC,(PROG) ;ADD RELOCATION FACTOR\r
TLNE IOS,IO ;WRITING?\r
JRST MTOUT2 ;YES. GO WRITE RECORD\r
USEWRD: 0\r
USEPRG: 0\r
CLKREQ: 0\r
- \r
UNIT: 0\r
ERCNT: 0\r
ERRFLG: 0\r
PNTR: 0\r
SVPNTR: 0\r
MTAEND: END\r
-\f\r
-\0\0\r