CMB13 OCT 157777 CMB14 OCT 137777 CMB45 OCT 177717 COUNT DEC 0 DM16 DEC -16 D16 EQU BIT4 DM15 DEC -15 DM17 DEC -17 DM21 DEC -21 M5SEC DEC -50 = 4.9 TO 5.0 SECONDS. B40 EQU BIT5 B60 OCT 60 LASM1 NOP LAST MAIN TO INT FOR MUX # 1. LASM2 NOP LAST MAIN TO INT. FOR MUX. # 2. TIMAD DEF TIMRT ADDR OF TIMEOUT SUBR. PHYBF DEF EQT26 ADDR OF PHYSICAL TIMEOUT BFR. SBITP DEF *+1 STOP BITS POINTER OCT 43600 TTY(ASCII)(ODD OR NO PARITY.) OCT 43400 TTY WITH EVEN PARITY. NULCP DEF *+1 NULL CHAR ADDR OCT 47777 TIME DELAY CHAR FOR NO PARITY. OCT 47577 TIME DELAY CHAR WITH PARITY. TPARI OCT 160000 RPARI OCT 120000 RTADD NOP RETURN ADDR SAVSC NOP SAVEX NOP UNITM OCT 3700 UNIM1 OCT 1700 IPDMY OCT 101202 TURN OFF THIS INPUT CHNL. OPDMY OCT 101202 TURN OFF THIS OUTPUT DATA CHNL. UNIT NOP CURRENT UNIT # DUNIT NOP CURRENT UNIT # RT. JUSTIFIED. SPTBP DEF *+1 OCT 0 N/A OR DEFAULT TO DEVICE TYP SPD OCT 1202 110 BPS (11 BIT/CHAR) OCT 157 134.5 BPS (2741-9 BITS/CHAR) OCT 537 150 BPS (10 BITS/CHAR) OCT 1100 220 BPS (11 BITS/CHAR) OCT 457 300 BPS (10 BITS/CHAR) OCT 1040 440 BPS (11 BITS/CHAR) OCT 427 600 BPS (10 BITS/CHAR) OCT 1017 880 BPS (11 BITS/CHAR) OCT 413 1200 BPS (10 BITS/CHAR) OCT 1007 1760 BPS (11 BITS/CHAR) S2400 OCT 405 2400 BPS (10 BITS/CHAR) OCT 403 4800 BPS (10 BITS/CHAR) SPC 2 UNEQP DEF UNEQT POINTS TO EQT POINTER TABLE. UNEQA EQU UNEQP SPTAD EQU SPTBP SWREX EQU SRWEX UNEQT EQU * REP 32 NOP POINTER TO EQT[SUB SC(SUB UNIT#)] SPC 2 NOP SCDCA OCT 140374 RAISE CD & CA (ECHOPLEX-103) - * ALSO FOR HALF DUPLEX SEND (202). SSAB OCT 140114 LOWER SA FOR HALF DUPLEX SEND. SCDAB OCT 140334 RAISE CD & LOWER CA - 202 RECEIVE. SSA OCT 140136 RAISE SA FOR 202 RECEIVE. SCDAS OCT 140365 SUPPRESS CF INTERRUPTS. SCDBS OCT 140100 LOWER CD & INHIBIT ALL INTERRUPTS. SCDAF OCT 140327 RAISE CD & LOWER CA WHILE INHIBIT * ING CF STATUS CHANGE INTERRUPTS. SCDAX OCT 140337 SSAX OCT 140135 SSAF OCT 140132 RAISE SA WHILEINHIBITING SB INT. SSAFB OCT 140120 RAISE SA & INHIBIT SB&CB INTERUPTS. * CHANGE INTERRUPTS. HED ASYNC MUX UTILITY SUBROUTINES. * SETP SETS POINTERS TO CURRENT ENTRY PLUS ITS EXTENTION * * CALLING SEQUENCE: LDB ADEQT ADDR OF CURRENT EQT ENTRY * JSB SETP SPC 1 SETP EQU * NOP * MAY BE ENTERED MORE THAN ONCE PER INTERRUPT. FIND A WAY * REDUCE THE NUMBER OF ENTRIES PER INTERRUPT. STB PQT1 ADB D2 STB PQT3 INB STB PQT4 INB STB PQT5 INB STB PQT6 ADB D2 STB PQT8 INB STB PQT9 INB STB PQT10 ADB D5 STB PQT15 INB STB PQT16 INB STB PQT17 LDA B,I INA STA EQT19 ADA D2 STA EQT21 INA STA EQT22 INA STA EQT23 INA STA EQT24 INA STA EQT25 INA STA EQT26 INA STA EQT27 ADA D3 STA EQT30 INA STA EQT31 ADA D3 STA EQT34 INA STA EQT35 INA STA EQT36 INA STA EQT37 INA STA EQT38 JMP SETP,I EXIT. SPC 2 * CF920 USES EQT19-21 TO CONFIGURE PARAMETERS FOR * INPUT AND OUTPUT LINES AND STOP BITS FOR EQT5. SPC 1 CF920 EQU * NOP LDB SBITP ADDR OF STOP BITS LDA EQT19,I AND B60 STA SAVEX SAVE PARITY ITEM SZA,RSS NO PARITY ? JMP CF92A YES. CPA B20 ODD PARITY? RSS YES. INB NO. EVEN PARITY. CF92A EQU * LDA B,I STA EQT5,I SAVE DEVICES STOP BITS. LDA EQT19,I AND B17 CALC. ADA B2 1 START AND 1 STOP BIT. STA B LDA EQT19,I AND =B200 SZA 2 STOP BITS? INB YES. LDA SAVEX NO. ONE. CHK PARITY. SZA PARITY ON? INB YES. STB A ADA M1 AND B7 SAVE 3 BITS ONLY. ALF,ALF LENGTH STA EQT34,I SAVE CHAR LENGTH LDB SAVEX SZB PARITY ON ? IOR BIT12 YES. PARITY PARAMETER. IOR TPARI SET TRANSMIT AND PARAMETER BITS. STA EQT35,I SAVE PARTIAL TRANS/PARM NO. LDA EQT21,I FIND AND RHALF TRANSMIT ADA SPTBP SPEED LDA A,I PARAMETER. AND RHALF IOR EQT35,I STA EQT35,I TRANSMIT PARM COMPLETED. * OUTPUT PARAMETERS COMPLETED. LDA EQT21,I ALF,ALF FIND AND RHALF RECEIVE ADA SPTBP SPEED LDA A,I PARAMETER. AND RHALF IOR EQT34,I LDB EQT19,I BLF,BLF RBL SSB ECHO ON? IOR BIT12 IOR RPARI STA EQT34,I INPUT PARAMETERS COMPLETED. CLA STA EQT25,I STA EQT36,I INITIALIZE STA EQT37,I OTHER STA EQT38,I PARAMETERS. LDB NULCP NULL CHAR ADDR LDA SAVEX SZA PARITY ON ? INB YES. LDA B,I GET NULL CHAR. STA NULL JMP CF920,I RETURN. SPC 2 * COUT2 OUTPUTS CONTROL PARAMETERS TO THE 2ND CONTROL BOARD. SPC 1 COUT2 EQU * NOP IOR UNIT INSERT UNIT # OTA40 OTA SC+3 4TH BOARD (2ND CONTROL BOARD) STCF4 STC SC+3,C JMP COUT2,I SPC 2 * COUT OUTPUTS CONTROL PARAMETERS TO THE 1ST CONTROL BOARD. SPC 1 COUT EQU * NOP IOR UNIT OTA30 OTA SC+2 CONTROL BOARD # 1 STCF3 STC SC+2,C JMP COUT,I SPC 2 * OUT - TRANSMITS 16 BITS TO THE MUX BOARD. SPC 1 OUT EQU * NOP LIB20 LIB SC+1 CHK SEEKING. SSB OK TO SEND? JMP *-2 NO. WAIT. OTA10 OTA SC OUTPUT DATA/PARAMETERS. LDA UNIT OTA20 OTA SC+1 SEND UNIT #. STC10 STC SC INITIATE TRANSFER. JMP OUT,I SPC 2 * CHAR - TRANSMIT A CHARACTER SPC 1 CHAR EQU * NOP IOR PQT5,I ADD STOP BITS. JSB OUT SEND CHAR TO MUX BOARD. JMP CHAR,I SPC 2 * FCL12 - GET CONTROL LINE STATI FOR HALF DUPLEX LINE (202 MODEM). SPC 1 FCL12 EQU * NOP LDA EQT25,I AND LHALF ALF,ALF STA B LDA EQT25,I AND RHALF JMP FCL12,I SPC 2 * SRSCU - SAVES RETURN ADDR, SC, CONFIGURES OUTPUT ROUTINE FOR * OUTCC SUBROUTINE AND ACKNOWLEDGEMENT INSTRUCTION. * * CALLING SEQUENCE: LDB X73YZ INTERRUPT ENTRY ADDR. * JSB SRSCU SPC 1 SRSCU EQU * NOP STB RTADD SAVE RETURN ADDR. LIA 4 STA SAVSC SAVE SELECT CODE. IOR CLFAC CONFIGURE INTERRUPT STA CLFSC ACKNOWLEDGEMENT INST LDA SAVSC CONFIGURE LIA INST. IOR LIAAC STA *+1 NOP STA DATA AND =B76000 STRIP OUT STA UNIT UNIT AND RT. ALF JUSTIFY UNIT #. RAL,RAL STA DUNIT JMP SRSCU,I SPC 1 CLFAC CLF 0 OTACC OTA 0 LIAAC LIA 0 LIBAC LIB 0 STCAC STC 0 STCF0 STC 0,C SPC 2 * TIMRT - IS CALLED BY $TIME WHEN A PHYSICAL OR * LOGICAL TIMEOUT OCCURS. * TIMRT THEN DECIDES WHICH DVR THE TIMEOUT OCCURRED * FOR AND CALLS THAT DVR INDICATING A TIMEOUT OCCURRED. * * CALLING SEQ: LDA ID EQT ADDR * JSB TIMRT SPC 1 TIMRT EQU * NOP CLF 0 LDB TIMRT SAVE RETURN ADDRESS STB RTADD IN UNIVERSAL RETURN ADDR. SSA LOGICAL DVR TIMEOUT INT.? JMP TIMPH NO. PHYSICAL. STA 300B YES. STA B JSB SETP SET EQT POINTERS LDA PQT3,I AND UNIM1 GET 4 BIT ALF UNIT # AND STA UNIT SAVE IT IN UNIT. ALF,RAL RAL RT. JUSTIFY FOR STA DUNIT DUNIT. JSB CONFG CONFIGURE I/O INST. CLA STA TIMV,I CLEAR TIMEOUT IN PROGRESS FLG. LDA EQT36,I SSA PROCESSING AUTO-SPEED? JMP TIM97 YES. SET TIMEOUT BIT ETC. AND B60 STA XFLG SAVE TRANSITION STATE. SZA TRANS STATE = 0? JMP TIMXX NO. LDB EQT36,I SLB,RBR READ IN PROGRESS? JMP TIM98 YES. PREPARE TO CALL P73RR. SLB NO. WRITE IN PROGRESS? JMP TIM99 YES. PREPARE TO CALL P73WR. JMP TIM97 NO. PREPARE TO CALL P73CR. TIMXX EQU * CPA B20 TRANSITIONING TO READ STATE? JMP TIM98 YES. PREPARE TO CALL P73RR. TIM99 EQU * PREPARE TO CALL P73WR. LDA BIT15 INDICATE TIMEOUT STATUS. JMP P73WR GO TO WRITE PROCESSOR. TIM98 EQU * LDA BIT15 INDICATE TIMEOUT STATUS. JMP P73RR GO TO READ PROCESSOR. TIM97 EQU * LDA BIT15 JMP P73CW CALL CONTROL PROCESSOR. SPC 1 TIMPH EQU * CMA,INA STA B MAKE EQT ADDR POSITIVE. JSB SETP SET EQT POINTERS. LDA PQT3,I AND UNIM1 SVE UNIT ALF NUMBER STA UNIT IN ITEM UNIT. JSB CONFG CLA STA PTIMV,I CLEAR TIMEOUT IN PROGRESS FLG. LDA EQT36,I AND =B177377 CLEAR BIT8(AUTO-SPEED DELAY)4-15-75 STA EQT36,I 4-15-75 AND B60 STA XFLG SZA,RSS TRANSITION STATE = 0 ? JSB COM73 YES. COMPLETE LINE OPENS/CLOSE. * CPA B40 NO. TRANS. TO SEND ? JMP TIMWR YES. JSB CLINE NO. TRANS TO RECEIVE. SSB LINE IN RECEIVE STATE? JSB TIMAG NO. TRY AGAIN. TIMFR LDA SSAF YES. RAISE "SA" AND INHIBIT JSB COUT2 INTERRUPTS FOR "SB" CHANGES. LDA EQT36,I SET AND =B117700 LINE STATE INA TO STA EQT36,I RECEIVE STATE. TIMEX JSB RETRN SPC 1 TIMAG NOP ISZ PQT15,I LAST ATTEMPT? RSS NO. JMP TIMAG,I YES. FORCE READ/WRITE. CCB DELAY 100 MIL/SEC JSB PTIMR JSB RETRN WAIT FOR TIMEOUT. SPC 1 * TURNING LINE TO SEND STATE. SPC 1 TIMWR EQU * JSB FCL12 SLA,RSS CC UP ? JMP TIMWT NO. TRY AGAIN. STB A YES. AND B3 CPA B3 CB AND SB UP ? RSS YES. LINE IN RECEIVE STATE. SKIP. TIMWT EQU * JSB TIMAG NO. TRY AGAIN. LDA EQT36,I SET AND =B117700 LINE STATE IOR B2 TO SEND. STA EQT36,I LDA PQT6,I AND B177 OUTPUT 1ST CHAR JSB CHAR FROM LOGICAL DVR. JSB RETRN EXIT. SPC 2 * CONFIG - CONFIGURES THE OUTPUT INSTRUCTIONS FOR * OUTPUT SUBROUTINES. * * CALLING SEQUENCE: JSB CONFG SPC 1 CONFG EQU * NOP LDA PQT3,I GET BASE AND B77 SELECT CODE STA SAVSC ADA OTACC CONFIGURE STA OTA10 ALL INA OTA STA OTA20 INSTRUCTIONS. INA STA OTA30 INA STA OTA40 * LDA SAVSC CONFIGURE ADA STCAC STC STA STC10 INST. AND B77 INA CONFIGURE ADA LIBAC STA LIB20 STA LIB21 LIB INSTRUCTIONS LDA STCF0 IOR SAVSC ADA B2 STA STCF3 INA STA STCF4 JMP CONFG,I RETURN. SPC 2 * THIS SUBR UPDATES THE STATI OF BOTH CONTROL BOARDS. SPC 1 UPD25 EQU * NOP LDA DATA LDB RTADD CPB P73C1 BOARD # 1 INT. JMP P731 YES. LDB EQT19,I NO. BOARD # 2. SSB FULL DUPLEX? JSB RETRN YES. ERROR. EXIT. SPC 1 * CURRENTLY PROCESSING INTERRUPT FROM CONTROL BOARD # 2. SPC 1 P732 ALF,ALF XOR EQT25,I AND LHALF ALF,ALF LDB EQT19,I RBL MOVE SEC. CH. BIT TO BIT # 15. SSB,RSS IS SEC. CH. AVAILABLE ? ERA,CLE,ELA NO. SEC. CH. CAN'T CAUSE INTERRUPT. STA SAVEC JMP P733 SPC 1 * CURRENTLY PROCESSING INTERRUPT FROM BOARD # 1. SPC 1 P731 EQU * XOR EQT25,I AND RHALF STA SAVEC P733 LDA DATA AND RHALF LDB EQT19,I UPDATE EQT25 SSB FULL DUPLEX? JMP P735 YES. LDB RTADD NO. CPB P73C1 CONTROL BOARD # 1 INT? JMP P734 YES. ALF,ALF NO. STA B BOARD # 2. LDA EQT25,I AND RHALF KEEP BOARD # 1'S STATUS. JMP P735-1 P734 EQU * STA B LDA EQT25,I AND LHALF KEEP BOARD # 2'S STATUS. IOR B P735 EQU * LDB EQT19,I RBL SSB,RSS IS SEC. CH. AVAILABLE ? IOR BIT8 NO. SET SEC. REC. (SB) ON. STA EQT25,I SET BOARD STATUS. SLB DEVICE HALF DUPLEX ? JMP TIMD1 NO. FULL DUPLEX. CLB YES. LDA EQT36,I AND B77 CPA B1 LINE IN RECEIVE STATE ? JMP P736R YES. CPA B2 LINE IN SEND STATE ? JMP P737W YES. JMP TIMD2 NO. GOOD STATUS. LET TIMPH TURN * THE LINE AROUND AND CHECK STATUS. P736R EQU * LDA EQT25,I CHK LINE STATUS SIGNALS. AND =B1003 KEEP "CB,CF, AND CC". CPA B3 "CF AND CC" UP ? JMP TIMD2 YES. GOOD RECEIVE STATUS. JMP TIMD2-1 NO. BAD RECEIVE STATUS. SPC 1 P737W EQU * LDA EQT25,I CHK LINE STATUS AND =B1401 KEEP "CB,SB, AND CC" . CPA =B1401 "CB,SB, AND CC" UP ? JMP TIMD2 YES. GOOD SEND STATUS. ALF,ALF SLA "SB" DOWN ? JMP TIMD2-1 NO. LINE ERROR. LDB BIT12 YES. BREAK. JMP TIMD2 TIMD1 EQU * FULL DUPLEX. CLB LDA EQT25,I AND B1 103 ,S SHOULD ALWAYS = B3. BUT CPA B1 H/W ASR33,S ALWAYS = B1. "" CC UP. RSS LDB BIT14 LINE ERROR !!!!!!!!!! TIMD2 EQU * STB LSTAT,I SAVE LINE STATUS IN PQT16,I(EQT16). JMP UPD25,I RETURN. SPC 2 CISUB EQU * NOP JSB SRSCU AND B17 STA DUNIT ALF,ALF RAL,RAL STA UNIT LDA SAVSC ADA OTACC STA OCCSC LDA STCF0 IOR SAVSC STA OCCSC+1 LDA DUNIT JMP CISUB,I SPC 2 * SET INTERNAL EQT ADDR TABLE. SPC 1 SEQAD EQU * NOP JSB CALED RETURN WITH A-REG.=ENTRY ADDR. LDB PQT1 EQT ADDR STB A,I JMP SEQAD,I SPC 2 * CLEAR AN ENTRY IN INTERNAL EQT TABLE. SPC 1 CEQAD EQU * NOP JSB CALED CLB STB A,I JMP CEQAD,I SPC 2 * FIND INTERNAL EQT ADDR ENTRY SPC 1 CALED EQU * NOP LDA PQT3,I RT. JUSTIFY AND UNITM 5 BIT ALF,ALF UNIT # AND RAL,RAL ADD INTERNAL EQT ADA UNEQP TBL BASE ADDR. JMP CALED,I * * THIS SUBR IS CALLED WHEN LINE OPEN AUTO-SPEED COMPLETES OR * WHEN DVR73 IS DIRECTED TO READ/WRITE DURING A LINE OPEN * AUTO-SPEED REQUEST. * IT CONFIGURES THE MAIN PORTS TO THEIR CORRECT SPEED AND * PERFORMS THE REQUIRED HOUSEKEEPING FOR COMPLETING AUTO-SPEED. * * CALLING SEQ: JSB CFSPD * * RETURN: P+1 SPC 1 CFSPD NOP LDA EQT36,I CLEAR AUTO-SPEED INDICATION. ELA,CLE,ERA WHEN RD/WT DIRECTIVE IS IOR BIT8 SET AUTO-SPEED FLAG. STA EQT36,I ISSUED DURING AUTO-SPEED OR CLB ON COMPLETION OF AUTO-SPEED. LDA 300B = EQT ADDR OF ACTIVE DEVICE. CPA LASM1 ACTIVE DEV ON MUX # 1 ? JMP *+3 YES STB LASM2 NO. CLEAR LSAT MAIN FOR MUX #2. RSS SKIP. STB LASM1 CLEAR LSAT MAIN FOR MUX # 1. LDA PQT3,I AND UNIM1 SET UNIT = ALF UNIT # OF STA UNIT THE MAIN PORT. LDA EQT21,I GET INDEX AND RHALF TO SPEED PARM TBL. ADA SPTAD ADD TO SPEED TBL STARTING ADDR. LDB A,I FETCH SPEED PARM. LDA EQT34,I INSERT RECEIVE AND =B170000 PORTS IOR B SPEED PARM AND STA EQT34,I CLEAR DIAG BIT (11). STB SAVEC SAVE SPEED PARM. JSB OUT UPDATE RCV PORT'S PARMS. LDA EQT35,I AND =B170000 IOR SAVEC UPDATE SEND STA EQT35,I PORT'S SPEED JSB OUT PARM. JMP CFSPD,I RETURN. END