ASMB,R,L,C HED *** HP7970 NINE TRACK MT UNIT DRIVER - 790202 *** NAM DVR23 92202-16001 REV.1913 - 790202 * * ENT I.23,C.23 * * *************************************************** * * RELOC. TAPE: 92202-16001 * ERS: A-92202-16001-1 * LISTING: A-92202-16001-2 * SOURCE TAPE: 92202-18001 * *************************************************** * * * M. SCHOENDORF JULY 12,1974 REV. A * * MODIFICATION: * DATE: 790202 * BY: ED COPE * REASON: TO ELIMINATE VIRGIN TAPE READ RUN AWAYS * * * EQUIPMENT TABLE USAGE * * WORD CONTENTS * * 5 STATUS * * BIT CONTENTS * * 7 END OF FILE * 6 START OF TAPE * 5 END OF TAPE * 4 TIMING ERROR * 3 I/O REJECT * 2 NO WRITE RING (0=IN, 1=OUT) * 1 SOME ERROR (PARITY/TIMING) * 0 LOCAL BIT - OFFLINE/BUSY * * 9 INTERRUPT RETURN ADDRESS * 10 ERROR RETRY (SET TO -10 ON ENTRY) * = OCT 500 IF REWIND/LOCAL * 11 DMA CHANNEL (BITS 0 - 2) * 12 EOT FLAGS * * BIT CONTENTS * * 9 EOT UNIT 0 * 10 EOT UNIT 1 * 11 EOT UNIT 2 * 12 EOT UNIT 3 * * SKP * INITIATION SECTION. SPC 1 I.23 NOP ENTRY POINT. LDB CHAN LOAD THE "DMA" CHANNEL NUMBER. STB EQT11,I STORE THE "EOT" FLAG WORD. LDB M20K DEC -20000 STB EQT13,I WRITE P.E. & CMD. REJ. CT. JSB SETIO SET I/O INSTRUCTIONS FOR MT. ERB LOCAL BIT TO E REGISTER STA C.23 SET THE INITIATOR FLAG. LDA M10 LOAD: A = -10. STA EQT10,I SET THE ERROR RETRY COUNTER. LDA EQT6,I LOAD THE REQUEST CONTROL WORD. AND .3 ISOLATE THE REQUEST CODE. CPA .3 IS REQUEST A CONTROL REQUEST? JMP CNTRL YES, GO EXAMINE FUNCTION CODE. B31 SLA,ARS NO; IS THE REQUEST TO READ? JMP READ YES, CONTINUE. RBR,SLB NO; IS A WRITE ENABLE RING IN? JMP I.A.3 NO, GO REJECT THE REQUEST. ..2 JSB CEOT GO CHECK FOR END-OF-TAPE (EOT). ..3 JSB NBUFL GO GET THE NEGATIVE WORD COUNT. CLE,SZB,RSS IS THE BUFFER LENGTH = 0? JMP I.A.4 YES, GIVE IMMEDIATE COMPLETION. LDA EQT7,I NO, LOAD USER BUFFER ADDRESS. JSB IODMA GO PERFORM THE OPERATION. LDB B31 LOAD: WRITE COMMAND CODE. LDA .1AD LOAD THE INTERRUPT RETURN. JSB FUNCT GO INITIATE THE FUNCTION. DEF ..3 REJECT, INTERRUPT ADDRESS RETURN. * .1AD DEF ..1 M10 DEC -10 M20K DEC -20000 * SPC 2 ..1 JSB CHECK DID AN ERROR OCCUR ON WRITE? LDB B1100 DEC 576 ADB EQT13,I ADD TO NEG. REJ. CT. SSB,RSS IS COUNT > 1 ? JMP PERR YES, ALLOWS APPROX 34 TRIES STB EQT13,I ..4 LDB B41 YES, LOAD: BACKSPACE COMMAND. LDA .5 LOAD THE INTERRUPT RETURN. JSB FUNCT GO INITIATE THE FUNCTION. DEF ..4 REJECT, INTERRUPT ADDRESS RETURN. SPC 2 ..5 LDA .20AD LOAD THE INTERRUPT RETURN. LDB B15 LOAD: GAP COMMAND CODE. JSB FUNCT GO INITIATE THE FUNCTION. .5 DEF ..5 REJECT, INTERRUPT ADDRESS RETURN. * .20AD DEF ..20 B15 OCT 15 * SPC 2 ..20 LDA EQT5,I LOAD THE MT UNIT STATUS. ERA,SLA WERE THERE ANY ERRORS? JMP W.ERR YES, GO ABORT THE REQUEST. JMP ..2 NO, GO CHECK FOR END-OF-TAPE. SKP READ CPA EQT8,I IS THE BUFFER LENGTH = ZERO(0)? JMP SKIP. YES, GO CHECK THE MODE. JSB EOTF NO, GO CHECK FOR "EOT" CONDITION. ..6 JSB NBUFL GO GET THE NEGATIVE WORD COUNT. SPC 2 * * SET UP TIME OUT FOR VIRGIN TAPES * SPC 2 LDA EQT4,I SET DRIVER WILL PROCESS IOR SET12 TIME OUT INDICATOR BIT STA EQT4,I LDA DELAY SET DELAY INTO EQT STA EQT15,I SPC 2 LDA EQT7,I LOAD THE USER BUFFER ADDRESS. JSB IODMA GO PERFORM THE OPERATION. LDB B23 LOAD: READ COMMAND CODE. LDA .7AD LOAD THE INTERRUPT RETURN. JSB FUNCT GO INITIATE THE FUNCTION. .6 DEF ..6 REJECT, INTERRUPT ADDRESS RETURN. * .7AD DEF ..7 B23 OCT 23 * SPC 2 * * CHECK FOR TIME-OUT...THIS INDICATES A READ ON A VIRGIN TAPE * ..7 LDA EQT4,I CHECK EQT WORD 4 , BIT 12 AND BIT11 FOR TIME-OUT INDICATION SZA,RSS SKIP IF NO TIME-OUT JMP ..71 CONTINUE INTERRUPT PROCESSING LDA EQT4,I CLEAR DRIVER WILL PROCESS TIME-OUT AND CLR12 AND TIME HAS OCCURRED FLAGS. STA EQT4,I LDB B110 ISSUE CLEAR CONTROLLER COMMAND OTB3C OTB CMND STC3C STC CMND,C LDA .75AD SET CONTINUATION ADDRESS STA EQT9,I ISZ C.23 PERFORM CONTINUATION RETURN JMP C.23,I .75AD DEF ..75 BIT11 OCT 4000 SET12 OCT 10000 DELAY DEC -200 CLR12 OCT 163777 ..75 CLA HANDLE CLEAR CONTROLLER INTERRUPT CLB BY PERFORMING NORMAL COMPLETION RETURN JMP C.23,I WITH ZERO XMISSION LOG. SPC 2 * * CONTINUE NORMAL INTERRUPT PROCESSING * SPC 2 ..71 LDA EQT4,I RESET TIME INDICATORS AND CLR12 STA EQT4,I CLA STA EQT15,I JSB CHECK DID AN ERROR OCCUR ON READ? ISZ EQT10,I YES; IS THIS THE LAST RETRY? RSS NO, SKIP. JMP TLOG YES, UPDATE THE TRANSMISSION LOG. ..8 LDB B41 LOAD: BACKSPACE COMMAND CODE. LDA .6 LOAD THE INTERRUPT RETURN. JSB FUNCT GO INITIATE THE FUNCTION. DEF ..8 REJECT, INTERRUPT ADDRESS RETURN. * B41 OCT 41 * SPC 2 SKIP. LDA EQT6,I LOAD THE FUNCTION REQUEST CODE. AND B100 ISOLATE THE MODE BIT. SZA IS THE MODE BINARY? JMP FSR YES, GO SKIP FORWARD 1 RECORD. I.A.4 LDA .4 LOAD: A=4. JMP I.23,I RETURN TO THE USER. * .4 DEC 4 B200 OCT 200 * SKP CNTRL LDA EQT6,I GET THE REQUEST CONTROL WORD. AND B1770 ISOLATE THE FUNCTION CODE. CPA B600 IS IT A DYNAMIC STATUS REQUEST? JMP I.A.4 YES, GIVE AN IMMEDIATE RETURN. CPA B200 NO; IS IT A BACKSPACE REQUEST? JMP BSR YES, CONTINUE. CPA B300 NO; IS IT FORWARD SPACE REQUEST? JMP FSR YES, CONTINUE. CPA B400 NO; IS IT A REWIND REQUEST? JMP REW YES, CONTINUE. CPA B100 NO; WRITE END-OF-FILE REQUEST? JMP EOF YES, CONTINUE. CPA B1200 NO; IS IT A GAP REQUEST? JMP GAP YES, CONTINUE. CPA B1300 NO; IS IT FORWARD SPACE FILE? JMP FSF YES, CONTINUE. CPA B1400 NO; IS IT BACKSPACE FILE? JMP BSF YES, CONTINUE. STA EQT10,I NO, STORE THE REWIND/STANDBY FLAG. CPA B500 IS IT A REWIND/STANDBY REQUEST? JMP RWS YES, CONTINUE. I.A.2 LDA .2 LOAD: A 2. STC1M STC CMND,C JMP I.23,I RETURN TO USER * .2 DEC 2 B100 OCT 100 B300 OCT 300 B600 OCT 600 B1200 OCT 1200 B1300 OCT 1300 B1400 OCT 1400 B1770 OCT 17700 * SKP BSR JSB CSOT GO CHECK FOR "SOT" CONDITION. ..9 LDB B41 LOAD: BACKSPACE COMMAND CODE. LDA .10AD LOAD THE INTERRUPT RETURN. JSB FUNCT GO INITIATE THE FUNCTION. DEF ..9 REJECT, INTERRUPT ADDRESS RETURN. SPC 2 FSR JSB CEOT GO CHECK FOR "EOT" CONDITION. ..11 LDA .TLOG LOAD THE INTERRUPT RETURN. LDB .3 LOAD: FORWARD SPACE COMMAND CODE. JSB FUNCT GO INITIATE THE FUNCTION. DEF ..11 REJECT, INTERRUPT ADDRESS RETURN. * .3 DEC 3 * SPC 2 REW JSB CSOT GO CHECK FOR "SOT" CONDITION. ..12 LDB B101 LOAD: REWIND COMMAND CODE. LDA .10AD LOAD THE INTERRUPT RETURN. JSB FUNCT GO INITIATE THE FUNCTION. DEF ..12 REJECT, INTERRUPT ADDRESS RETURN. * .10AD DEF ..10 B101 OCT 101 * SPC 2 RWS SEZ IF IN LOCAL JMP I.A.2 GO REJECT THE REQUEST REWSB LDB B105 LOAD: REWIND/OFF-LINE COMMAND. LDA .10AD LOAD THE INTERRUPT RETURN JSB FUNCT GO INITIATE THE FUNCTION. DEF REWSB REJECT, INTERRUPT ADDRESS RETURN. * .TLOG DEF TLOG0 B105 OCT 105 * SPC 2 FSF JSB CEOT GO CHECK FOR "EOT" CONDITION. ..14 LDA .TLOG LOAD THE INTERRUPT RETURN. LDB B203 LOAD: FORWARD SPACE FILE COMMAND. JSB FUNCT GO INITIATE THE FUNCTION. DEF ..14 REJECT, INTERRUPT ADDRESS RETURN. * B203 OCT 203 * SPC 2 BSF JSB CSOT GO CHECK FOR "SOT" CONDITION. ..15 LDA .10AD LOAD THE INTERRUPT RETURN. LDB B241 LOAD: BACKSPACE FILE COMMAND. JSB FUNCT GO INITIATE THE FUNCTION. DEF ..15 REJECT, INTERRUPT ADDRESS RETURN. * B241 OCT 241 * SPC 2 GAP RBR,SLB IS A WRITE ENABLE RING PROVIDED? JMP I.A.3 NO, GO REJECT THE REQUEST. JSB CEOT YES, GO CHECK FOR END-OF-TAPE. ..23 LDA .22AD LOAD THE INTERRUPT RETURN. LDB B15 LOAD: GAP COMMAND CODE. JSB FUNCT GO INITIATE THE FUNCTION. DEF ..23 REJECT, INTERRUPT ADDRESS RETURN. * .22AD DEF ..22 * SPC 2 ..22 LDA EQT5,I LOAD THE MT UNIT STATUS. RAR,SLA WERE THERE ANY ERRORS? JMP W.ERR YES, GO ABORT THE REQUEST. JMP TLOG0 NO, GO UPDATE TRANSMISSION LOG. SPC 2 EOF RBR,SLB IS A WRITE ENABLE RING PROVIDED? JMP I.A.3 NO, GO REJECT THE REQUEST. CLF1C CLF DATA YES, CLEAR THE DATA CHANNEL FLAG. ..13 JSB EOTF GO CHECK FOR END-OF-TAPE. ..17 LDB B215 LOAD: WRITE EOF COMMAND CODE. LDA .18AD LOAD THE INTERRUPT RETURN. JSB FUNCT GO INITIATE THE FUNCTION. DEF ..17 REJECT, INTERRUPT ADDRESS RETURN. * .18AD DEF ..18 B215 OCT 215 * SPC 2 ..18 LDA EQT5,I LOAD THE MT UNIT STATUS. RAR SHIFT PARITY/TIMING BIT TO A0. SLA,RSS WERE THERE ANY ERRORS? JMP TLOG. NO, GO UPDATE TRANSMISSION LOG. ..19 LDB B41 YES, LOAD: BACKSPACE COMMAND. LDA .13AD LOAD THE INTERRUPT RETURN JSB FUNCT GO INITIATE THE FUNCTION. DEF ..19 REJECT, INTERRUPT ADDRESS RETURN. * .13AD DEF ..13 * SPC 2 STAT. NOP ENTRY POINT. LIA1C LIA CMND LOAD THE MT UNIT STATUS. JMP STAT.,I RETURN. SPC 2 CEOT NOP ENTRY POINT. SEZ,CLE IF IN LOCAL JMP LOCAL MAKE NOT READY RETURN LDA EQT5,I LOAD THE MT UNIT STATUS. AND B40 ISOLATE THE "EOT" STATUS BIT. SZA,RSS IS MT UNIT AT END-OF-TAPE ? JMP CEOT,I NO, RETURN. LDA EQT12,I YES, LOAD THE "EOT" FLAG WORD. AND EOTM MASK OFF IF EOT WAS ALREADY REACHED SZA JMP LOCAL YES, GO REJECT THE REQUEST LDA EQT12,I LOAD "EOT" FLAG WORD IOR EOTM ADD "EOT" BIT STA EQT12,I STORE "EOT" FLAG WORD JMP CEOT,I NO, RETURN LOCAL LDB C.23 LOAD THE INTERRUPT FLAG LDA .2 LOAD: A=2. SSB,RSS INTERRUPT RETURN? JMP C.23,I YES, GIVE A COMPLETION RETURN. SPC 1 I.A.3 LDA .3 LOAD: A=3. JMP I.23,I RETURN TO USER * B40 OCT 40 * SPC 2 NBUFL NOP ENTRY POINT. LDB EQT8,I LOAD THE BUFFER LENGTH REQUEST. CCE,SSB,RSS IS THE LENGTH IN WORDS? CMB,INB,RSS YES, CONVERT TO NEGATIVE; SKIP. BRS NO, CONVERT TO WORDS. STB CEOT STORE THE NEGATIVE WORD COUNT. JMP NBUFL,I RETURN. SPC 2 CHECK NOP ENTRY POINT. LDA EQT5,I LOAD THE MT UNIT STATUS. RAR,SLA,RAL WERE THERE PARITY/TIMING ERRORS? JMP CHECK,I YES, RETURN. TLOG ALF,ALF SHIFT THE "EOF" BIT TO 15. SSA WAS AN END-OF-FILE (EOF) READ? JMP TLOG0 YES; RETURN 0 TLOG. W.CNT LIA DMA-4 LOAD THE WORD COUNT REGISTER. SZA DID "DMA" GO TO COMPLETION? IOR DMASK NO, RESTORE THE LOST BITS. LDB EQT6,I LOAD THE REQUEST CONTROL WORD. RBR,ERB SHIFT THE WRITE BIT TO "E". CMA,SEZ,INA,SZA DID THE WRITE COMPLETE? JMP W.ERR NO, GO ABORT THE REQUEST. JSB NBUFL YES, GO GET NEGATIVE WORD COUNT. ADB A LET "B" = -(WORDS TRANSMITTED). CMB,INB MAKE THE WORD COUNT POSITIVE. LDA EQT8,I LOAD THE USER BUFFER LENGTH. SSA WAS THE REQUEST FOR CHARACTERS? BLR YES, CONVERT TO CHARACTERS. LDA EQT5,I ANY ERRORS? RAR,SLA IF NONE SKIP JMP PERR ELSE PARITY ERROR EXIT JMP END GO RETURN TO THE SYSTEM. * DMASK OCT 140000 * SPC 2 EOTF NOP ENTRY POINT. SEZ IF IN LOCAL JMP I.A.3 MAKE NOT READY RETURN LDA EQT5,I LOAD THE MT UNIT STATUS. AND B40 ISOLATE THE "EOT" STATUS BIT. CCE,SZA,RSS IS MT UNIT AT END-OF-TAPE (EOT)? JMP EOTF,I NO, RETURN. LDA EQT12,I YES, LOAD THE "EOT" FLAG WORD. AND EOTM MASK OFF IF EOT WAS ALREADY REACHED. SZA JMP I.A.3 YES, GO REJECT THE REQUEST. LDA EQT12,I LOAD "EOT" FLAG WORD IOR EOTM ADD "EOT" BIT STA EQT12,I STORE "EOT" FLAG WORD JMP EOTF,I NO, RETURN. * EOTM NOP * SPC 2 CSOT NOP ENTRY POINT. LDA EQT5,I LOAD THE MT UNIT STATUS. AND B100 ISOLATE THE "SOT" STATUS BIT. SEZ,SZA,RSS IS THE MT UNIT AT "SOT" ? JMP CSOT,I NO, RETURN. SEZ IF IN LOCAL JMP I.A.3 MAKE NOT READY RETURN ..10 CLA STA EQT11,I LDA EQT12,I LOAD THE "EOT" FLAG WORD IOR EOTM CLEAR XOR EOTM "EOT" BIT STA EQT12,I STORE "EOT" FLAG WORD TLOG0 CLB,RSS ENTER: B=0; SKIP. TLOG. CLB,INB ENTER: B=1. LDA C.23 LOAD THE INTERRUPT FLAG. SSA IS CONTROL FROM INTERRUPT? JMP I.A.4 NO, GIVE IMMEDIATE COMPLETION. END CLA,RSS ENTR: A=0 PERR LDA .3 PARITY ERROR EXIT. JMP C.23,I GIVE A COMPLETION RETURN. SPC 2 IODMA NOP ENTRY POINT. ISZ S.DMA CLEAR THE "DMA" SKIP FLAG; SKIP. S.DMA OCT -1 "DMA" SKIP FLAG. CLC2F CLC DMA-4 PREPARE THE ADDRESS REGISTER. RAL,ERA SET THE READ/WRITE BIT. OTA3E OTA DMA-4 OUTPUT THE BUFFER ADDRESS. LDA CHECK LOAD MT DATA CHANNEL NUMBER. IOR B2K4 INCLUDE THE FINAL "CLC" OPTION. OTA1C OTA DMA ASSIGN THE DMA CHANNEL. CCA ENTER: A=-1. STC2F STC DMA-4 PREPARE THE WORD COUNT REGISTER. OTA5E OTA DMA-4 OUTPUT THE MASK CONSTANT. LMASK LIA DMA-4 LOAD THE MASK COMPLEMENT. CMA COMPLEMENT TO FORM "DMA" MASK. STA DMASK STORE THE "DMA" MASK CONSTANT. LDA CEOT LOAD THE NEGATIVE WORD COUNT. OTA4E OTA DMA-4 OUTPUT THE WORD COUNT. JMP IODMA,I RETURN. * B110 OCT 110 B1100 OCT 1100 B2K4 OCT 20000 * SPC 2 REJCT CCA STA S.DMA SET THE "DMA" SKIP FLAG. LDA FUNCT,I LOAD REJECT INTERRUPT ADDRESS. LDB B110 LOAD THE CLEAR COMMAND CODE. RSS SKIP. SPC 2 FUNCT NOP ENTRY POINT. STA EQT9,I STORE THE RETURN ADDRESS. OTB1C OTB CMND OUTPUT THE COMMAND CODE. JSB STAT. GET THE MT UNIT STATUS. RAR,RAR SHIFT I/O REJECT BIT TO 0. RAR,SLA WAS THE COMMAND REJECTED? JMP REJCT YES, GO ISSUE A CLEAR REQUEST. SPC 2 CLA,CCE NO, ENTER: A=0; E=1. CPA S.DMA IS THE REQUEST A READ OR WRITE? JMP STC1D YES, GO INITIALIZE THE TRANSFER. SPC 2 STC1C STC CMND,C NO, INITIALIZE MT UNIT CONTROL. JMP C.RTN GO RETURN TO THE SYSTEM. SPC 1 STC1D STC DATA,C INITIALIZE THE MT DATA CONTROL. RWCON STC CMND,C INITIALIZE THE MT UNIT CONTROL. STC1E STC DMA,C INITIATE THE "DMA" CHANNEL. IO13 CLC DMA YES, RESET "DMA" CONTROL. C.RTN LDA C.23 LOAD THE INTERRUPT CONTROL FLAG INA,SZA,RSS IS CONTROL THROUGH INTERRUPT? JMP I.23,I NO, RETURN TO THE USER. JMP A,I YES, SYSTEM INTERRUPT RETURN. SPC 2 MALF LDA .3 GET MALFUNCTION CODE LDB C.23,I LOAD INTERRUPT CONTROL FLAG INB,SZB,RSS WAS IT AN INTERRUPT ? JMP I.23,I NO, RETURN THRU INITIATOR JMP W.ERR RETURN THRU COMPLETION SKP SETIO NOP ENTRY POINT STA CHECK STORE MT DATA CHANNEL NUMBER. ADA CLC FORM A CLC DATA. STA CLC1D SET IT. CLC1D CLC DATA CLEAR MT DATA CONTROL. XOR B5600 FORM A "CLF DATA". STA CLF1C STORE THE INSTRUCTION. XOR B600 FORM A "STC DATA,C". STA STC1D STORE THE INSTRUCTION. INA FORM A "STC CMND,C". STA STC1C STORE THE INSTRUCTION. STA STC3C STORE THE INSTRUCTION. STA RWCON STORE THE INSTRUCTION. STA STC1M STORE THE INSTRUCTION XOR B5000 FORM A "CLC CMND". STA CLC.G STORE THE INSTRUCTION. CLC.G CLC CMND CLEAR MT COMMAND CONTROL. XOR B4200 FORM A "LIA CMND". STA LIA1C STORE THE INSTRUCTION. XOR B4300 FORM A "OTB CMND". STA OTB2C STORE TLE INSTRUCTION. STA OTB1C STORE THE INSTRUCTION. STA OTB3C STORE THE INSTRUCTION. LDA CHAN LOAD THE "DMA" CHANNEL NUMBER. ADA CLC FORM A "CLC DMA". STA IO13 STORE THE INSTRUCTION. XOR B5000 FORM A "STC DMA,C". STA STC1E SET THE INSTRUCTION. XOR B1100 FORM A "OTA DMA". STA OTA1C SET THE INSTRUCTION. ADA M4 "SUBTRACT": "DMA" - 4. STA OTA3E STORE THE INSTR]CTION. STA OTA4E STORE THE INSTRUCTION. STA OTA5E STORE THE INSTRUCTION. XOR B100 FORM A "STC DMA-4". STA STC2F STORE THE INSTPUCTION. XOR B200 FORM A "LIA FMA-4". STA W.CNT STORE THE INSTRUCTION. STA LMASK STORE THE INSTRUCTION. XOR B4200 FORM A "CLC DMA-4". STA CLC2F STORE THE INSTRUCTION. LDA EQT4,I LOAD THE UNIT NUMBER WORD. AND B300 ISOLATE THE UNIT NUMBER. ALF,ALF ROTATE UNIT TO RAL,RAL TO LOW A CMA SET AS COUNTER LDB B400 PRE SET B B5000 BLS SET B TO UNIT INA,SZA THIS UNIT? JMP *-2 NO; TRY NEXT STB EOTM ADB B400 YES; COMPLETE THE WORD. OTB2C OTB CMND OUTPUT THE MT UNIT SELECT CODE. JSB STAT. GET MT STATUS IN "A". AND B377 ISOLATE BITS 7-0. LDB A SAVE THE STATUS IN "B". LDA EQT5,I LOAD THE STATUS WORD. AND M1774 REMOVE THE OLD STATUS. IOR B INCLUDE THE NEW STATUS. STA EQT5,I UPDATE THE STATUS WORD. CCA ENTER: A=-1. STA S.DMA SET THE "DMA" SKIP FLAG. JMP SETIO,I RETURN. * CLC CLC 0 B377 OCT 377 B400 OCT 400 B500 OCT 500 B4200 OCT 4200 B4300 OCT 4300 B5600 OCT 5600 M1 DEC -1 M4 DEC -4 M1774 OCT 177400 * SPC 2 SKP * COMPLETION SECTION. SPC 1 C.23 NOP ENTRY POINT. LDB .A. SAVE INTERRUPTING SELECT CODE LDA EQT4,I CHECK FOR TIME OUT ENTRY AND BIT11 SINCE INTERRUPTING SELECT CODE WILL BE SZA THAT OF DATA CHANNEL INSTEAD OF COMMAND INB CHANNEL. IF SO INCREMENT SELECT CODE. LDA .B. RESTORE INTERRUPTING SELECT CODE LDB EQT11,I LOAD THE "DMA" CHANNEL NUMBER. SZB,RSS LOCAL TO AUTO MODE INTERRUPT? JMP EXTRA YES, IGNORE THE INTERRUPT. STB CHAN NO, UPDATE THE "CHAN" WORD ENTRY. LDB EQT1,I LOAD THE DEVICE LIST POINTER. SZB,RSS DID A SPURIOUS INTERRUPT OCCUR? JMP EXTRA YES, IGNORE THE INTERRUPT. ADA M1 NO, LET "A" = MT DATA CHANNEL #. JSB SETIO SET I/O INSTRUCTIONS FOR MT. LDA EQT9,I LOAD THE CONTINUATION ADDRESS. ERB SHIFT THE "LOCAL" BIT TO "E". LDB EQT10,I LOAD THE REWIND/STANDBY FLAG. SEZ,CLE IS THE MT UNIT NOT IN "LOCAL"? CPB B500 NO; IS THE INTERRUPT FROM "RWS"? JMP A,I YES, GO CONTINUE PROCESSING. W.ERR CLA,INA ENTER: A=1. CLB ENTER: B=0. JMP C.23,I COMPLETION RETURN. SPC 2 EXTRA ADA CLC CONFIGURE A CLC. STA CLC.0 STORE THE INSTRUCTION. CLC.0 CLC 00B CLEAR CONTROL. JMP C.RTN GO GIVE A CONTINUATION RETURN. .A. EQU 0 .B. EQU 1 SKP * SYSTEM BASE PAGE COMMUNICATION AREA: SPC 1 A EQU 0 B EQU 1 . EQU 01650B ORIGIN OF AREA. SPC 1 SPC 1 EQT1 EQU .+8 EQT4 EQU .+11 EQT5 EQU .+12 EQT6 EQU .+13 EQT7 EQU .+14 EQT8 EQU .+15 EQT9 EQU .+16 EQT10 EQU .+17 EQT11 EQU .+18 SPC 1 CHAN EQU .+19 CURRENT "DMA" CHANNEL NUMBER. EQT12 EQU .+81 EQT13 EQU .+82 EQT14 EQU .+83 EQT15 EQU .+84 SPC 1 DMA EQU 06B "DMA" CHANNEL NUMBER 1. SPC 1 DATA EQU 26B DATA CHANNEL NUMBER. CMND EQU DATA+01B COMMAND CHANNEL NUMBER. SPC 1 END