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
- JRST MTAP0T\r
+ JRST MTAP0\r
\r
MTC=340\r
MTS=344\r
\r
+\r
;MTACHN=FLAG CHANNEL\r
;MTOCHN=DATA CHANNEL\r
;MTFLAG=10*MTACHN + 400\r
;MTBOTH=10*MTACHN+MTDCHN\r
;MTALOC=40 + 2*MTDCHN\r
;MTLOC1=MTALOC+1\r
- INTERN MTAINI,MTADDS,MTADDB\r
+ INTERN MTAINT,MTADDS,MTADDB\r
EXTERN ADVBFE,ADVBFF,MTFLAG,MTBOTH,SETACT,CLRACT,WSYNC\r
EXTERN STDENS,SETIOD,MTREQ,MTAVAL,CLOCK,MTALOC,MTLOC1,OUT\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
0\r
XWD PROG,0\r
XWD PROG,0\r
- XP MTADDS,.-MTADB ;SIZE OF DDB (FOR BUILD)\r
+ XP MTADDS,.-MTADDB ;SIZE OF DDB (FOR BUILD)\r
\f;INITIALIZE\r
MTAINI: SETOM NMTREW ;RESET FLAGS\r
SETOM UNIT\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
JRST THRUTP ;NO. GIVE UP CONTROL\r
SOS NMTREW ;YES. DECREASE COUNT OF TAPES IN REW\r
AOS MTREQ ;THRUTP WILL SOS THIS BACK\r
- JRST THRUPT ;TURN OFF TM10\r
+ JRST THRUTP ;TURN OFF TM10\r
\f;CONNECT CONTROL TO A TRANSPORT\r
CONECT: MOVEI TAC,440102 ;SET UP INTERRUPT CONDITIONS\r
HRRM TAC,MTAINT\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
POPJ PDP, ;NO. COME BACK LATER\r
MTCLK2: SETOM NMTREW ;COUNT NO. OF TAPES REWINDING\r
MOVEM DEVDAT,SAVDEV\r
- MOVEI DEVDAT,MTADDR ;START AT MTA0\r
+ MOVEI DEVDAT,MTADDB ;START AT MTA0\r
AOS MTREQ ;MAKE SURE NO OTHER MTA REQUESTS ARE HONORED NOW\r
REWCHK: MOVE IOS,DEVIOS(DEVDAT)\r
JUMPGE IOS,REWCK2 ;TAPE NOT REWINDING\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
;SKIP TO LOGICAL EOT\r
LEOT: CONSZ MTS,100000 ;TAPE AT BOT?\r
JRST LEOT2 ;YES, DONT BACKSPACE\r
- PUSHJ PDP,MTAG0 ;BACKSPACE RECORD\r
+ PUSHJ PDP,MTAGO ;BACKSPACE RECORD\r
PUSHJ PDP,EOTWT ;WAIT FOR IT\r
LEOT2: MOVEI UUO,16 ;SKIP A FILE\r
PUSHJ PDP,MTAP2\r
PUSHJ PDP,MTAP\r
PUSHJ PDP,EOTWT ;WAIT FOR IT\r
MOVE IOS,DEVIOS(DEVDAT)\r
- TRNN IOS,IODENT ;END OF FILE SEEN?\r
+ TRNN IOS,IODEND ;END OF FILE SEEN?\r
JRST LEOT2 ;NO. SKIP TO NEXT FILE\r
MOVEI UUO,7 ;YES. BACKSPACE RECORD\r
\r
MTOUT2: TRO TP,4000 ;FUNCTION = WRITE\r
MOVSI TAC1,(BLKO MTC,) ;SETUP BLKO\r
MTDTGO: MOVEM TAC,PNTR ;SAVE BLKI/BLKO POINTER\r
- MOVEM TAC,SVNPTR \r
+ MOVEM TAC,SVPNTR \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
JEN @MTDEND ;AND EXIT\r
-\fDATENO: CONSZ MTS,20600 ;RECORD OK?\r
+\fDATEND: CONSZ MTS,20600 ;RECORD OK?\r
JRST RETRY ;PARITY, DATA LATE OR BAD TAPE\r
DATND2: TLNE IOS,DMPMOD ;DUMP MODE?\r
- JRST CMPEND ;YES\r
+ JRST DMPEND ;YES\r
TLNN IOS,IO ;READING?\r
JRST INPTND ;YES, FINISH INPUT\r
-ADVOUT: PUHSJ PDP,ADVBFE ;WRITING, ADVANCE BUFFERS\r
+ADVOUT: PUSHJ PDP,ADVBFE ;WRITING, ADVANCE BUFFERS\r
;END OF TAPE?\r
JRST THRUTP ;YES, DONT WRITE ANY MORE\r
NXTREC: TLZE IOS,IOW ;IN IO WAIT?\r
- PUSHJ PDP,GETIOD ;RESTART JOB\r
+ PUSHJ PDP,SETIOD ;RESTART JOB\r
SOSG QUANTM ;COUNT DOWN PROTECT TIME\r
SKIPG MTREQ ;ANYONE ELSE WANT CONTROL?\r
CONSZ MTS,4000 ;NO. KEEP GOING UNLESS EOT\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
- TRMN IOS,1\r
+ TRNN IOS,1\r
TRO TP,10000 ;OR - READ ACROSS RECORD BOUNDARIES\r
JRST MTIN2 ;GO READ RECORD(S)\r
\r
POPJ PDP, ;NO, GO WRITE\r
ADD TAC,[XWD MTSIZ,MTSIZ] ;YES.\r
MOVEM TAC,REMNDR ;IOWD TO USE FOR NEXT RECORD\r
- SUBI TAC,MTSIZE ;ADDRESS FOR THIS IOWD\r
+ SUBI TAC,MTSIZ ;ADDRESS FOR THIS IOWD\r
HRLI TAC,MMTSIZ ;WRITE -MTSIZE WORD RECORDS\r
POPJ PDP, ;RETURN THE IOWD\r
REMNDR: 0\r
JRST THRUTP ;AND GIVE UP CONTROL\r
\r
;TRY AGAIN ON PARITY ERROR OR BAD TAPE\r
-RETRY: TRNN IOS,ONRCK ;WANT TO STOP ON ERROR?\r
+RETRY: TRNN IOS,IONRCK ;WANT TO STOP ON ERROR?\r
AOSL TAC,ERCNT ;OR TRIED ENOUGH?\r
JRST PERMER ;YES. PERMANENT ERROR\r
RETRY1: MOVEI TAC,2 ;SET RETRY SWITCH\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