JSB SRSCU SAVE RETURN ADDR, SC, ETC. ADA DM16 ADD -16 BASE 10 SSA UNIT # < 16 ? JMP P73DR YES. LDB LASM2 SZB,RSS IF LASM2 = 0, RETURN. JSB RETRN JSB SETP LDB EQT36,I SSB,RSS AUTO-SPEED ACTIVE FOR THIS DEVICE? JSB RETRN NO. LDB LASM2 YES. USE LAST MAIN FOR MUX # 2. JMP P73DB P73DR EQU * ADA D16 RESTORE UNIT #. ADA D16 TO FIND THE ADA UNEQP LDB A,I P73DB EQU * SZB,RSS JMP P73DX JSB SETP LDB PQT1 LDA EQT36,I SSA STB LASM2 JMP P.73D SKP * * P.73D IS USED TO PROCESS ALL DATA INTERRUPTS. * BOTH P73D1 AND P73D2 CALL P.73D TO COMPLETE DATA INTERRUPT * PROCESSING. * SPC 1 P.73D EQU * NOP STB 300B SAVE EQT ADDR FOR LOGICAL DVR LDA EQT36,I AND =B460 4-15-75 SZA DROP DATA INTER. DURING TRANSITION. JSB RETRN JSB CONFG CONFIGURE I/O INSTRUCTIONS. LIB21 NOP = CURRENT DATA STATUS. (LIB SC+1) STB FSTAT SPC 1 LDB EQT36,I SSB AUTO-SPEED IN PROGRESS? JMP P73CR YES. SLB,RBR LINE STATE = RECEIVE ? JMP RDSTA YES. SLB,RSS NO. LINE STATE = SEND ? P.7FE EQU * JSB RETRN ERROR. SPC 2 * CHECK STATUS FOR WRITE REQ. DATA BOARD INTERRUPT. SPC 1 CWSTA EQU * LDA EQT19,I SSA,RSS FULL DUPLEX ? JMP CWST1 NO. SKIP DATA STATUS TEST. LDB FSTAT GET DATA STAUTS. SLB,RSS INTERRUPT DUE TO DATA XMIT ? JMP BKCHK NO. RECEIVED DATA. CHK BREAK. CWST1 CLA YES. JMP P73WR CONTINUE WRITE. SPC 1 * CHECK DATA FOR BREAK CHAR (10 ZEROS IN LSB) SPC 1 BKCHK EQU * LDA DATA IF 10 LSB OF AND =B1777 DATA = 0, THEN SZA BREAK. JSB RETRN NO BREAK DETECTED. IGNORE INTERRUPT. LDA BIT12 SET BREAK STATUS BIT. JMP P73WR CALL LOGICAL DVR. SPC 1 * CHECK STATUS FOR READ REQUEST DATA BOARD INTERRUPT. SPC 1 RDSTA EQU * LDB FSTAT GET DATA STATUS. SLB IF X-MIT INTERRUPT RETURN. JSB RETRN CLA RBR,SLB LOST CHAR INDICATED ? IOR BIT13 YES. DATA ERROR. STA SAVEX LDB EQT19,I BLF,BLF BLF,SLB ODD PARITY ? JMP RDOPC YES. CHK PARITY BIT. RBR,SLB EVEN PARITY ? JMP RDEPC YES. RDST1 LDA DATA PARITY OFF !!! AND RHALF MERGE STATUS IOR SAVEX WITH CHAR AND JMP P73RR CALL LOGICAL DVR. SPC 1 RDOPC EQU * ODD PARITY CHECKING ROUTINE. LDB DATA SSB,RSS ODD PARITY INDICATED? IOR BIT13 NO. EVEN. ERROR!!!! STA SAVEX YES. JMP RDST1 SPC 1 RDEPC EQU * EVEN PARITY CHECKING ROUTINR. LDB DATA SSB EVEN PARITY INDICATED ? JMP RDOPC+2 NO. ODD. ERROR !!!! JMP RDOPC+3 YES. SPC 1 P.73H EQU * SPC 1 * CALL LOGICAL DVR WITH CHARACTER AND STATUS FROM PHYSICAL DVR. (READ REQ.) SPC 1 P73RR EQU * IOR LSTAT,I A-REG. ALSO CONTAINS LINE STATUS. LDB EQT22,I STB LOGR LDB DUNIT JSB LOGR,I INDICATING CONTINUATION JSB COM73 COMPLETION RETURN STA DADIR JSB SRTIM LDA DADIR RAL,SLA START READ DIRECTIVE ? JMP P73SR YES. RAL,SLA START WRITE DIRECTIVE ? JMP P73SW YES. JSB RETRN YES. SPC 2 * START A READ OPERATION DIRECTIVE ISSUED BY LOGICAL * DRIVER IN RESPONSE TO BEING CALLED FROM P73D(PRIVILEDGED * INTERRUPT DATA PROCESSOR. SPC 1 P73SR EQU * JSB SR202 TURN LINE AROUND TO READ STATE. JSB RETRN EXIT. JSB RETRN EXIT. SPC 1 * START A WRITE OPERATION DIRECTIVE ISSUED BY LOGICAL * DRIVER IN RESPONSE TO BEING CALLED FROM P73D. SPC 1 P73SW EQU * JSB SW202 JMP P73SX LINE ALREADY = SEND STATE. JSB RETRN TURNING LINE TO SEND STATE. P73SY EQU * P73SX LDA DADIR AND B177 JSB CHAR OUTPUT CHAR P73ST EQU * JSB RETRN SPC 2 * CALL LOGICAL DVR WITH STATUS FROM PHYSICAL DVR. (WRITE REQ.) SPC 1 P73WR EQU * IOR LSTAT,I A-REG. ALSO CONTAINS LINE STATUS. LDB EQT23,I STB LOGR LDB DUNIT JSB LOGR,I CALL TO LOGICAL DVR. JSB COM73 COMPLETION RETURN STA DADIR TO BE OUTPUT & DIRECTIVES. JSB SRTIM LDA DADIR RAL,SLA START READ DIRECTIVE ? JMP P73SR YES. RAL,SLA NO. DIRECTIVE = START WRITE? JMP P73SW YES. SSA NO. NOP DIRECTIVE ? JSB RETRN YES. EXIT. JMP P73SX NO. CONTINUATION. SPC 1 * CALL LOGICAL DVR WITH STATUS AND CHAR FROM PHYSICAL DVR. (CONTROL) SPC 1 P73CR EQU * LDA DATA GET INPUT AND RHALF CHAR. AND P73CW EQU * LDB EQT24,I CALL LOGICAL DVR AT STB LOGR CONTROL ENTRY9 IOR LSTAT,I A-REG. ALSO CONTAINS LINE STATUS. JMP P73RR+3 CALL CONTROL. HED ASYNC MUX UTILITY SUBROUTINES. * RETRN - RESTORES A,B,E,O AND FENSE BEFORE * RETURNING TO THE INTERRUPTED PROGRAM. SPC 1 RETRN EQU * NOP CLA STA P73C1 STA P73D2 CLEAR COMPARE ENTRIES. LDB RTADD CPB TIMRT DVR. ENTERED VIA TIMEOUT CALL ? JMP RTIMX YES. EXIT VIA TIMER SUBR. STA TIMRT CLEAR COMPARE ENTRIES. LDA SAVEO RESTORE CLE,ELA E RAR,SLA AND STO O FLAGS LDB SAVB A AND B REGISTERS CLFSC CLF SC ACKNOWLEDGE INTERRUPT. LDA MPTFL SZA,RSS JMP *+4 ENABLE FENSE. LDA SAVA RTIMX EQU * STF 0 TURN ON INTERRUPT SYSTEM JMP RTADD,I RETURN TO INTERRUPTED PROGRAM. LDA SAVA STF 0 STC 5 JMP RTADD,I SPC 2 * THIS SUBR OUTPUTS THE A-REGISTER TO THE CONTROL * BOARD CURRENTLY INTERRUPTING. ALLOWS INHIBITING INTERRUPTS. SPC 1 OUTCC EQU * NOP OCCSC OTA SC STC SC,C JMP OUTCC,I SPC 2 * SAVAL - SAVES THE A,B,E, AND O REGISTERS. SPC 1 SAVAL EQU * NOP STA SAVA SAVE A-REG. STB SAVB SAVE B-REG ERA,ALS SAVE E SOC INA STA SAVEO SAVE O JMP SAVAL,I SPC 1 SAVA NOP SAVB NOP SAVEO NOP SPC 2 * SUBR OUTPUTS TO DATA BOARD CURRENTLY INTERRUPTING. * ALLOWS INHIBITING INTERRUPTS ON THIS CHANNEL. SPC 1 SPC 2 * CHECK LINE STATUS TO SEE IF HALF DUPLEX LINE HAS * COMPLETED LINE TURNAROUND FROM SEND TO RECEIVE * OR FROM WRITE TO READ. SPC 1 CLINE EQU * NOP * FETCH CONTROL STATUS AND FORMAT * I EXPECT THE FOLLOWING STATI * INDICATED : * * 1. CC (DATA SET READY) - UP * 2. CF (CARRIER(TERM) - UP * 3. CB (CLEAR TO SEND ) - DOWN SPC 1 JSB FCL12 AND D3 CPA D3 CC AND CF UP ? JMP *+3 YES. CLNEX CCB NO. JMP CLINE,I RETURN INDICATING BAD LINE. LDA B AND B2 SZA CB-DOWN ? SB=DON'T CARE. JMP CLNEX NO CLB INDICATE LINE IN READ STATE. JMP CLINE,I RETURN HED ASYNC MUX CONTROL BOARD INTERRUPT PROCESSOR. * THIS ROUTINE IS ENTERED WHEN A CONTROL BOARD INTERRUPTS * * P73C1 - PROCESSES INTERRUPT FROM MUX # 1. CONTROL BOARD # 1. * SPC 2 P73C1 EQU * NOP CLF 0 JSB SAVAL SAVE ENVIRONMENT LDB P73C1 P73CA EQU * JSB CISUB SAVE RETURN ADDR,SC, CONFIG. ETC. P73CC EQU * ADA UNEQA ADDR OF UNEQT TBL LDB A,I SZB JMP P.73C LDA DATA AND =B177763 CONTROL PARAMETERS WITH ES1 AND * ES2 CLEARED TO INHIBIT INTERRUPTS JSB OUTCC SUBR CONFIGURED DURING SRSCU JSB RETRN SKP * * P73C2 - PROCESSES INTERRUPTS FROM MUX # 1, CONTROL BOARD # 2. * P73C2 EQU * NOP CLF 0 JSB SAVAL SAVE ENVIRONMENT LDB P73C2 JMP P73CA SKP * * P73C3 - PROCESSES INTERRUPTS FROM MUX # 2. CONTROL BOARD # 1. * SPC 1 P73C3 EQU * NOP CLF 0 JSB SAVAL LDB P73C3 STB P73C1 P73CB EQU * JSB CISUB SAVE RETURN ADDR,SC, CONFIG. ETC. ADA D16 JMP P73CC SKP SPC 1 * * P73C4 - PROCESSES INTERRUPTS FROM MUX # 2, CONTROL BOARD # 2. * P73C4 EQU * NOP CLF 0 JSB SAVAL LDB P73C4 JMP P73CB SKP * * P.73C IS CALLED BY P73C1-4 TO COMPLETE CONTROL BOARD * INTERRUPT PROCESSING. * SPC 2 P.73C EQU * STB 300B CURRENT EQT ADDR JSB SETP SET POINTERS JSB CONFG CONFIGURE P.73 I/O INSTRUCTIONS. LDA DATA JSB OUTCC JSB UPD25 UPDATE EQT25. (CURRENT LINE STATUS. PCON EQU * LDB EQT19,I WHICH CONTROL SIGNAL CHANGED ? SSB FULL DUPLEX TERM? JMP P73C9 YES. LDA EQT36,I AND B60 STA XFLG SAVE TRANSITION STATE. SZA,RSS XFLG = 0 ? JSB RETRN YES. EXIT. LDA EQT36,I AND B3 SZA LINE STATE = 0 ? JSB RETRN NO. LET TIMER CHK LINE TURNS. LDB XFLG CPB B20 TRANSITION STATE = RECEIVE ? JMP PC1 YES. CHK LINE OPEN STATUS. JSB FCL12 NO. TRANSITIONING TO SEND STATE. SLA,RSS CC UP ? JSB RETRN NO. STB A YES. CHKCB AND SB. AND B3 CPA B3 "CB AND SB" UP ? RSS YES. JSB RETRN NO. WAIT FOR THEM. LDA EQT36,I AND =B177700 CLEAR TRANS STATE AND IOR B2 SET LINE STATE = SEND. STA EQT36,I JMP PC2 * * PROCESS FULL DUPLEX INTERRUPTS HERE. * SPC 1 P73C9 EQU * LDA EQT36,I AND B60 SZA,RSS LINE OPEN ? JSB RETRN NO. EXIT. LDA EQT25,I YES. SLA CC UP ? JMP PC3 YES. COMPLETE LINE OPEN. JSB RETRN NO. EXIT. * * PROCESS LINE OPEN RECEIVE/AUTO SPEED FOR HALF DUPLEX DEVICES. * SPC 1 PC1 EQU * JSB CLINE SSB LINE STATUS = RECEIVE? JSB RETRN NO. PC3 LDA EQT36,I YES. SET LINE STATE = AND =B177700 RECEIVE AND CLEAR TRANSITION INA STATE FLAGS. STA EQT36,I LDB EQT19,I SSB HALF DUPLEX DEVICE? JMP PC4 NO. SKIP OUTPUT TO 2ND CONTROL BOARD. LDA SSAF RAISE "SA" INHIBIT INTERRUPTS JSB COUT2 FOR "SB" CHANGES. PC4 LDB EQT36,I SSB AUTO-SPEED IN PROGRESS? JSB RETRN YES. WAIT FOR DATA INTERRUPTS. PC2 LDB ML300 NO. DELAY 300 MIL/SEC JSB PTIMR AND COMPLETE. JSB RETRN EXIT AND WAIT FOR TIMEOUT. HED ASYNC MUX COMPLETION SUBROUTINE. * COM73 IS CALLED BY THE PHYSICAL AND LOGICAL DRIVERS * WHEN EITHER DECIDES THAT AN I/O REQUEST HAS BEEN COMPLETED. * THE LOGICAL DVR CALLS COM73 VIA COMPLETION RETURN AFTER * THE PHYSICAL DVR CALL THE LOGICAL. * SPC 1 COM73 EQU * NOP JSB CALED GET ADDR OF INTERNAL EQT TBL ENTRY. LDA A,I GET EQT ADDR FROM INTERNAL TBL. SZA,RSS DEVICE BUSY? JSB RETRN LDA EQT36,I IOR B60 SET BOTH TS FLAGS. STA EQT36,I SSA,RSS PROCESSING AUTO-SPEED ? JMP COM01 NO. SKIP. JSB CFSPD YES. CONFIGURE SPEED PARMS. COM01 EQU * * HOUSEKEEP ALL REQUIRED * ITEMS IN EQT ETC. LDA EQT36,I AND BIT8 SZA COMPLETING AUTO-SPEED? JMP COM04 YES. DELAY 2 SECONDS. LDA TIMV,I SZA,RSS CLEAR JMP *+5 CLA TIMERS STA TIMV,I LDB EQT30 ONLY JSB $TIME LDA PTIMV,I WHEN SZA,RSS JMP *+5 NECESSARY CLA STA PTIMV,I !!!!!!!!!!!!! LDB EQT26 JSB $TIME SPC 1 LDA EQT34,I AND =B147777 JSB OUT DISABLE ECHO & INTR.FOR THIS DEVICE. SPC 1 COM03 EQU * SPC 1 LDA PQT1 CALL PRIVILEDGED INTERRUPT JSB $PCOM COMPLETION SUBR. SPC 1 * $PCOM CAUSES AN INTERRUPT ON THE PRIVILEDGED INTERRUPT BOARD. * WHEN DOS PROCESSES THIS INTERRUPT IT CALLS C.73 FOR I/O COMPLETION * PROCESSING. SPC 1 SPC 1 JSB RETRN RESTORE ENVIRON. & RETURN. SPC 1 COM04 EQU * LDA EQT36,I AND =B77717 CLEAR BITS 5&4(TRANS STATE) 4-15-75 STA EQT36,I LDB =D-20 DELAY 2 SECONDS. THEN JSB PTIMR COMPLETE AUTO-SPEED REQ. JSB RETRN EXIT AND WAIT FOR TIMER. SKP * C.73 IS THE COMPLETION ROUTINE FOR THE 12920A.(ASYNC MUX) * DRIVER SPC 2 C.73 EQU * NOP CLF 0 LDB EQT1 JSB SETP SET EQT POINTERS. LDA PQT9,I AND B3 CPA B3 CONTROL REQ? RSS YES. SKIP. JMP C730 NO. SKIP CONTROL CLEAR PROCESSING. LDA PQT9,I AND FCODM GET FUNCTION CODE. SZA,RSS CLEAR CONTROL REQ? STA PQT17,I YES. SEVER LOGICAL DVR LINK!!! C730 EQU * LDA EQT36,I AND =B177717 CLEAR TS FLAGS. STA EQT36,I JSB CEQAD CLEAR EQT ADDR IN INTERNAL TBL. LDB EQT14,I GET CHAR/WORD COUNT. CLA STF 0 JMP C.73,I HED ASYNC MUX CONSTANTS-------!!!!!!! * * * * CONSTANTS * * * * SPC 3 INAUX DEF *+1 DEC -1 DEC -1 AUXSA NOP AUX CHNL SPEED PARM ADDR. AUXSP DEF *+1 OCT 120413 1200 BAUD OCT 120427 600 OCT 120457 300 OCT 120537 150 OCT 121202 110 AND 11 BITS. INCLP DEF *+1 DEC -1 THIS CONSTANT IS FOR CLEARING ALL DEC -1 -CHNLS ON MUX # 1 AND MUX # 2. SAVEC NOP DADIR NOP LOGR NOP ADDR OF LOGICAL DVR ENTRY POINT. NULL NOP NULL OF TIME DELAY CHARACTER. DATA NOP DATAC NOP FSTAT NOP XFLG NOP TRANSITION STATE FLAG. EQT1 EQU 203B EQT2 EQU 204B EQT3 EQU 205B EQT4 EQU 206B EQT5 EQU 207B EQT6 EQU 210B EQT7 EQU 211B EQT8 EQU 212B EQT9 EQU 213B EQT10 EQU 214B EQT11 EQU 215B EQT12 EQU 216B EQT13 EQU 217B EQT14 EQU 220B EQT15 EQU 221B EQT16 EQU 222B EQT17 EQU 223B MPTFL EQU 271B SC EQU 10B * * BASE PAGE CONSTANTS * M1 EQU 52B M2 EQU M1-1 M3 EQU M1-2 M4 EQU M1-3 M5 EQU M1-4 M6 EQU M1-5 M7 EQU M1-6 M8 EQU M1-7 M9 EQU M1-8 M10 EQU M1-9 M64 EQU M1-10 B0 EQU M1+1 B1 EQU B0+1 B2 EQU B0+2 B3 EQU B0+3 B4 EQU B0+4 B5 EQU B0+5 B6 EQU B0+6 B7 EQU B0+7 B10 EQU B0+8 B11 EQU B0+9 B12 EQU B0+10 B21 EQU B0+11 B100 EQU B0+12 B17 EQU B0+13 B37 EQU B0+14 B77 EQU B0+15 B177 EQU B0+16 B377 EQU B0+17 = RHALF LHALF EQU B0+18 = 177400 B3777 EQU B0+19 DM64 EQU B0+20 RQP3 EQU 230B RQP4 EQU 231B D1 EQU B1 D2 EQU B2 D3 EQU B3 D4 EQU B4 D5 EQU B5 EQT19 NOP EQT21 NOP EQT22 NOP EQT23 NOP EQT24 NOP EQT25 NOP EQT26 NOP EQT27 NOP EQT30 NOP EQT31 NOP EQT34 NOP EQT35 NOP EQT36 NOP EQT37 NOP EQT38 NOP PQT1 NOP PQT3 NOP PQT4 NOP PQT5 NOP PQT6 NOP PQT8 NOP PQT9 NOP PQT10 NOP PQT15 NOP PQT16 NOP PQT17 NOP LSTAT EQU PQT16 CURRENT LINE STATUS. TIMV EQU EQT38 PTIMV EQU EQT37 ML100 EQU M1 ML300 EQU M3 RHALF EQU B377 FCODM OCT 017700 BIT8 OCT 400 BIT11 OCT 004000 BIT12 OCT 010000 BIT13 OCT 020000 BIT14 OCT 040000 BIT15 OCT 100000 BIT5 OCT 000040 BIT4 OCT 000020 B20 EQU BIT4 CMB12 OCT 167777