X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/cda2ba6d27526e5ef6f27f7b3391cfb55055bf2e..HEAD:/src/mtasrx.mac diff --git a/src/mtasrx.mac b/src/mtasrx.mac index 87e7435..ae4d2f2 100644 --- a/src/mtasrx.mac +++ b/src/mtasrx.mac @@ -2,6 +2,7 @@ SUBTTL T. WACHS/TH TS 20 MAY 69 XP VMTASR,420 ;DEFINE VERSION NUMBER FOR LOADER STORAGE MAP + ENTRY MTASRX MTASRX: @@ -20,29 +21,31 @@ MTADSP: JRST MTAREL ;RELEASE JRST MTDMPI POPJ PDP, ;USETO POPJ PDP, ;USETI + POPJ PDP, ;UGETF JRST CPOPJ1 ;RENAME POPJ PDP, ;CLOSE INPUT POPJ PDP, ;UTPCLR - JRST MTAP0T + JRST MTAP0 MTC=340 MTS=344 + ;MTACHN=FLAG CHANNEL ;MTOCHN=DATA CHANNEL ;MTFLAG=10*MTACHN + 400 ;MTBOTH=10*MTACHN+MTDCHN ;MTALOC=40 + 2*MTDCHN ;MTLOC1=MTALOC+1 - INTERN MTAINI,MTADDS,MTADDB + INTERN MTAINT,MTADDS,MTADDB EXTERN ADVBFE,ADVBFF,MTFLAG,MTBOTH,SETACT,CLRACT,WSYNC EXTERN STDENS,SETIOD,MTREQ,MTAVAL,CLOCK,MTALOC,MTLOC1,OUT EXTERN CPOPJ,CPOPJ1,PIOMOD,PUNIT,MTWAIT,JIFSC2,COMCHK EXTERN PIOFF,PION,MTASAV,ADRERR,PDVCNT,MTSIZ,STOIOS,IADRCK -COMPAT=1000 ;IBM COMPATABLE 9-TRACK -DMPMOD=20000 ;DUMP MODE FLAG -MTREW=40000 ;MAGTAPE IS REWINDING +COMPAT=10000 ;IBM COMPATABLE 9-TRACK +DMPMOD=200000 ;DUMP MODE FLAG +MTREW=400000 ;MAGTAPE IS REWINDING MTTRY=3 ;NO. OF TIMES TO RETRY ON AN ERROR QUANT=3 ;NO. OF RECORDS TO READ UNINTERRUPTED @@ -57,7 +60,7 @@ MTADDB: SIXBIT /MTA0/ 0 XWD PROG,0 XWD PROG,0 - XP MTADDS,.-MTADB ;SIZE OF DDB (FOR BUILD) + XP MTADDS,.-MTADDB ;SIZE OF DDB (FOR BUILD) ;INITIALIZE MTAINI: SETOM NMTREW ;RESET FLAGS SETOM UNIT @@ -70,14 +73,13 @@ MTAINI: SETOM NMTREW ;RESET FLAGS ;IF ENTER OR LOOKUP IN SAVE MODE - CHANGE TO MODE 16 SAVCHK: LDB TAC,PIOMOD ;GET MODE - CAIN TAC,0 ;SAVE MODE? + CAIN TAC,2 ;SAVE MODE? TRO IOS,16 ;YES, CHANGE TO DUMP-MODE MOVEM IOS,DEVIOS(DEVDAT) JRST CPOPJ1 ;GIVE GOOD RETURN FROM LOOKUP/ENTER ;CLOSE MTCLOS: TLNN DEVDAT,OUTPB ;OUTPUT BEEN DONE? POPJ PDP, ;NO. GO AWAY - LDB TAC,PIOMOD CAIGE TAC,16 ;DUMP MODE? PUSHJ PDP,OUT ;NO. EMPTY LAST PARTIAL BUFFER @@ -99,7 +101,7 @@ HUNGTP: TLZN IOS,MTREW ;TAPE REWINDING? JRST THRUTP ;NO. GIVE UP CONTROL SOS NMTREW ;YES. DECREASE COUNT OF TAPES IN REW AOS MTREQ ;THRUTP WILL SOS THIS BACK - JRST THRUPT ;TURN OFF TM10 + JRST THRUTP ;TURN OFF TM10 ;CONNECT CONTROL TO A TRANSPORT CONECT: MOVEI TAC,440102 ;SET UP INTERRUPT CONDITIONS HRRM TAC,MTAINT @@ -125,10 +127,12 @@ ONECT4: MOVEI TAC,TPREDY ;SET DEVICE ACTIVE HRRM TAC,-1(PDP) ;AGAIN WHEN INACTIVE JRST SETACT ;SET DEVICE ACTIVE + ;DELAY TILL TAPE COMES OUT OF IO WAIT, THEN GET CONTROL DLYRDY: SETOM MTAVAL PUSHJ PDP,WSYNC ;WAIT FOR IO TO STOP + ;GET MTC, CONNECT TAPE TO CONTROL TPREDY: AOSE MTREQ ;GET CONTROL PUSHJ PDP,MTWAIT ;WAIT FOR IT @@ -137,6 +141,7 @@ TPREDY: AOSE MTREQ ;GET CONTROL TPRDY2: MOVEM PROG,USEPRG PUSHJ PDP,CONECT ;CONECT CONTROL TO TAPE + ;SET TP FOR THIS TAPE TPSET: LDB TP,[POINT 2,IOS,28] ;PARITY SKIPN TP ;USE STANDARD IF 0 @@ -153,13 +158,14 @@ TPSET: LDB TP,[POINT 2,IOS,28] ;PARITY CONSZ MTS,4 ;7 OR 9 TRACK? JRST RDYCHK ;7 TRACK TLNN IOS,COMPAT ;9 TRACK. CORE DUMP? - TROA TP,20030 ;YES + TROA TP,20000 ;YES TRO TP,40300 ;NO. SET 800 BPI, ODD PARITY ;MAKE SURE TAPE IS READY RDYCHK: CONSZ MTS,40 ;READY? POPJ PDP, ;YES - CONSO MTS,20000 ;REWINDING? + CONSO MTS,200000 ;REWINDING? POPJ PDP, ;NO. LET XPORT HUNG INTERRUPT HANDLE IT + TLO IOS,MTREW ;YES. MUST BE REWINDING PUSHJ PDP,SETACT ;DEVICE ACTIVE AOS NMTREW ;BUMP COUNT OF REWINDING DRIVES @@ -173,7 +179,7 @@ RDYCHK: CONSZ MTS,40 ;READY? POPJ PDP, ;NO. COME BACK LATER MTCLK2: SETOM NMTREW ;COUNT NO. OF TAPES REWINDING MOVEM DEVDAT,SAVDEV - MOVEI DEVDAT,MTADDR ;START AT MTA0 + MOVEI DEVDAT,MTADDB ;START AT MTA0 AOS MTREQ ;MAKE SURE NO OTHER MTA REQUESTS ARE HONORED NOW REWCHK: MOVE IOS,DEVIOS(DEVDAT) JUMPGE IOS,REWCK2 ;TAPE NOT REWINDING @@ -183,13 +189,12 @@ REWCKA: CONSO MTS,40 ;STILL REWINDING? JRST REWCK1 ;YES TLZE IOS,IOW ;NO, TAKE OUT OF IO WAIT PUSHJ PDP,SETIOD - TLZ IOS,MTREQ + TLZ IOS,MTREW PUSHJ PDP,CLRACT ;NO LONGER ACTIVE JRST REWCK2 - REWCK1: AOS NMTREW ;COUNT REWINDING TAPE MOVEI TAC,36 - CONSZ MTS,20000 ;IF TAPE IS STILL REWINDING + CONSZ MTS,200000 ;IF TAPE IS STILL REWINDING DPB TAC,PDVCNT ;MAKE SURE IT DOESN'T GET A HUNG DEVICE REWCK2: HLRZ DEVDAT,DEVSER(DEVDAT) ;NEXT DEVICE HLRZ TAC,DEVNAM(DEVDAT) ;A MAG TAPE? @@ -237,6 +242,7 @@ MTAGO: DPB TAC,[POINT 4,TP,26] ;PUT FUNCTION INTO COMMAND CONO MTC,(TP) ;START TAPE MOVING JRST CLRACT ;AND RETURN + ;SET 9-TRACK TAPE SET9TK: TRNE UUO,1 TLOA IOS,COMPAT ;SET IBM COMPAT. @@ -245,7 +251,7 @@ MTAREL: TLZ IOS,COMPAT ;NOT IBM COMPAT ;SKIP TO LOGICAL EOT LEOT: CONSZ MTS,100000 ;TAPE AT BOT? JRST LEOT2 ;YES, DONT BACKSPACE - PUSHJ PDP,MTAG0 ;BACKSPACE RECORD + PUSHJ PDP,MTAGO ;BACKSPACE RECORD PUSHJ PDP,EOTWT ;WAIT FOR IT LEOT2: MOVEI UUO,16 ;SKIP A FILE PUSHJ PDP,MTAP2 @@ -253,7 +259,7 @@ LEOT2: MOVEI UUO,16 ;SKIP A FILE PUSHJ PDP,MTAP PUSHJ PDP,EOTWT ;WAIT FOR IT MOVE IOS,DEVIOS(DEVDAT) - TRNN IOS,IODENT ;END OF FILE SEEN? + TRNN IOS,IODEND ;END OF FILE SEEN? JRST LEOT2 ;NO. SKIP TO NEXT FILE MOVEI UUO,7 ;YES. BACKSPACE RECORD @@ -286,11 +292,10 @@ MTOUT1: MOVEI TAC,@DEVOAD(DEVDAT) ;ADDRESS OF BUFFER MTOUT2: TRO TP,4000 ;FUNCTION = WRITE MOVSI TAC1,(BLKO MTC,) ;SETUP BLKO MTDTGO: MOVEM TAC,PNTR ;SAVE BLKI/BLKO POINTER - MOVEM TAC,SVNPTR + MOVEM TAC,SVPNTR HRRI TAC1,PNTR ;BLKI/BLKO PNTR MOVEM TAC1,MTALOC ;INTO INTERRUPT LOC HRLM TP,USEWRD ;SAVE COMMAND - CONO MTC,(TP) ;START TAPE MOVING TRO IOS,IOACT ;SETACT CLEARS IOW JRST STOIOS ;STORE IOS AND RETURN @@ -304,11 +309,12 @@ MTIN1: SETCM TAC,@DEVIAD(DEVDAT) ;-LARGEST POSSIBLE WRD CNT MTIN2: TRO TP,2000 ;FUNCTION = READ MOVSI TAC1,(BLKI MTC,) ;SETUP BLKI JRST MTDTGO ;GO START TAPE + MTAINT: CONSO MTS,440102 ;INTERRUPT FOR MAG TAPE? JRST . ;NO. GO AWAY CONSO MTC,400 ;HAS CONTROL FREE ENABLED? CONSZ MTS,440100 ;NO. CONTROL FREE ERRONEOUSLY ON? - JRST +2 ;REAL MTA INTERRUPT + JRST .+2 ;REAL MTA INTERRUPT JRST MTAINT+1 ;THIS INTERRUPT NOT REALLY FOR MTA JSR MTASAV ;YES. SAVE ACS HRRZ DEVDAT,USEWRD ;RESET DEVDAT @@ -354,21 +360,22 @@ THRUT3: HLRZ TP,USEWRD ;GET UNIT HLLZS MTAINT ;DONT LOOK AT ANY MORE INTERRUPTS POPJ PDP, ;AND EXIT + ;HERE WHEN BLKI/BLKO COUNTS DOWN TO ZERO MTDEND: 0 CONO MTS,1 ;GIVE A FUNCTION STOP JEN @MTDEND ;AND EXIT - DATENO: CONSZ MTS,20600 ;RECORD OK? + DATEND: CONSZ MTS,20600 ;RECORD OK? JRST RETRY ;PARITY, DATA LATE OR BAD TAPE DATND2: TLNE IOS,DMPMOD ;DUMP MODE? - JRST CMPEND ;YES + JRST DMPEND ;YES TLNN IOS,IO ;READING? JRST INPTND ;YES, FINISH INPUT -ADVOUT: PUHSJ PDP,ADVBFE ;WRITING, ADVANCE BUFFERS +ADVOUT: PUSHJ PDP,ADVBFE ;WRITING, ADVANCE BUFFERS ;END OF TAPE? JRST THRUTP ;YES, DONT WRITE ANY MORE NXTREC: TLZE IOS,IOW ;IN IO WAIT? - PUSHJ PDP,GETIOD ;RESTART JOB + PUSHJ PDP,SETIOD ;RESTART JOB SOSG QUANTM ;COUNT DOWN PROTECT TIME SKIPG MTREQ ;ANYONE ELSE WANT CONTROL? CONSZ MTS,4000 ;NO. KEEP GOING UNLESS EOT @@ -395,6 +402,7 @@ INPTND: CONSZ MTS,10000 ;EOF? JRST THRUTP ;NONE FREE JRST NXTREC ;CONTINUE WITH NEXT RECORD + ; HERE AT THE END OF A DUMP MODE RECORD DMPEND: HLRZ TP,USEWRD ;SET UP COMMAND AGAIN CONSO MTS,14000 ;EOF OR EOT? @@ -421,11 +429,10 @@ MTDMP2: TLO IOS,DMPMOD ;INDICATE DUMP-MODE SOS UUO ;WILL COUNT IT UP LATER MOVEM UUO,LSTLOC ;SAVE LOC OF LIST DMPBLK: PUSHJ PDP,NXTCOM ;GET NEXT COMMAND - ADDI TAC,(PROG) ;ADD RELOCATION FACTOR TLNE IOS,IO ;WRITING? JRST MTOUT2 ;YES. GO WRITE RECORD - TRMN IOS,1 + TRNN IOS,1 TRO TP,10000 ;OR - READ ACROSS RECORD BOUNDARIES JRST MTIN2 ;GO READ RECORD(S) @@ -449,7 +456,7 @@ NXTCM3: HLRE TAC1,TAC ;YES. GET WORDCOUNT POPJ PDP, ;NO, GO WRITE ADD TAC,[XWD MTSIZ,MTSIZ] ;YES. MOVEM TAC,REMNDR ;IOWD TO USE FOR NEXT RECORD - SUBI TAC,MTSIZE ;ADDRESS FOR THIS IOWD + SUBI TAC,MTSIZ ;ADDRESS FOR THIS IOWD HRLI TAC,MMTSIZ ;WRITE -MTSIZE WORD RECORDS POPJ PDP, ;RETURN THE IOWD REMNDR: 0 @@ -476,7 +483,7 @@ DATEOF: TLO IOS,IOEND ;EOF - LIGHT BIT JRST THRUTP ;AND GIVE UP CONTROL ;TRY AGAIN ON PARITY ERROR OR BAD TAPE -RETRY: TRNN IOS,ONRCK ;WANT TO STOP ON ERROR? +RETRY: TRNN IOS,IONRCK ;WANT TO STOP ON ERROR? AOSL TAC,ERCNT ;OR TRIED ENOUGH? JRST PERMER ;YES. PERMANENT ERROR RETRY1: MOVEI TAC,2 ;SET RETRY SWITCH @@ -524,7 +531,6 @@ NMTREW: 0 USEWRD: 0 USEPRG: 0 CLKREQ: 0 - UNIT: 0 ERCNT: 0 ERRFLG: 0 @@ -533,4 +539,3 @@ LSTLOC: 0 PNTR: 0 SVPNTR: 0 MTAEND: END -