JSB DRCTV EVALUATE DIRECTIVES LDA $EQ9,I ALF,ALF RAL,RAL AND M77$ ISOLATE FUNCTION CODE ADA N05$ FUNCTION LESS SSA,RSS THAN FIVE JMP CNTL1 NO/INVALID ADA CNTLT YES CALCULATE LDA A,I TABLE ADDRESS JMP A,I PROCESS BY FUNCTION * * CNTL1 EQU * ISZ $EQ4,I INDICATE INVALID JMP READ1 REQUEST **************************************************** * * * CONTROL TRANSFER TABLE * * * **************************************************** DEF C0 CLEAR DEF READ1 INITIALIZE DEF C2 LINE OPEN DEF C3 LINE CLOSE DEF C4 SET ECHO CNTLT DEF * * * CLEAR REQUEST * C0 EQU * LDA $EQ17,I SZA SKIP IF NOT LINKED JSB DQT DEQUE TIMERS LDA CLR IOR B15$ MASTER RESET JSB OTA CLEAR I/F CONTROL JSB CLC CLA CLEAR EXTENSION STA $EQ17,I WORD LDA $EQ15,I PUT ON IOR B09$ DONE STA $EQ15,I BIT JMP READ1 * * LINE OPEN REQUEST * C2 EQU * LDA $EQ10,I GET AND P03$ OPTION SZA,RSS RING JMP C2A YES STA TBT1 LDA $EQ6,I LINE OPEN IOR B11$ REQUEST STA $EQ6,I LDA TBT1 CPA P01$ RECEIVE JMP C2B YES CPA P02$ SEND JMP C2C YES * NO/IDLE JMP C2B C2E EQU * LDA AOPEN LINE STATE STA $EQ5,I EQUALS OPEN JSB STC ENABLE INTERRUPTS JMP TEST * C2A EQU * LDA ARING LINE STATE STA $EQ5,I EQUALS AWAITING RING LDA CLR CLEAR IOR B15$ BOARD JSB OTA DROP DATA TERMINAL RDY JSB STC ENABLE I/F BOARD JSB RTRN * * * C2B EQU * LDA $EQ15,I REMOVE AND RCVON TRANSMIT STA $EQ15,I BIT JSB RCVI CONFIGURE FOR RECEIVE JMP C2E * * * C2C EQU * LDA $EQ15,I ENABLE IOR B11$ TRANSMIT STA $EQ15,I BIT JSB SNDI CONFIGURE FOR TRANSMIT JMP C2E **************************************************** * * * LINE CLOSE REQUEST * * * **************************************************** C3 EQU * LDA CLOSE LINE STATE STA $EQ5,I EQUALS CLOSED LDA $EQ15,I AND CDOFF JSB OTA CLEAR I/F CLA TWO SECOND TIMER LDB =D-20 FOR DATA SET READY JSB DRCTV TO DROP JSB CLC TURN OFF INTERRUPTS JSB RTRN * * C4 EQU * LDB $EQ10,I GET PARAMETER LDA EQT34,I AND ECHO CLEAR ECHO BIT SZB REQUEST FOR ENABLE IOR M20$ YES/SET IT STA EQT34,I JSB OTA OUTPUT WORD JMP READ1 COMPLETE * **************************************************** * * * SET EQT EXTENSION * * * **************************************************** SETQ EQU * NOP LDA $EQ17,I INA ADDRESS CPA EQT19 ALREADY SET JMP SETQ,I YES/RETURN STA EQT19 NO/SET UP EXTENSION INA STA EQT20 INA STA EQT21 INA LDB A,I STB EQT22 INA LDB A,I STB EQT23 INA LDB A,I STB EQT24 INA STA EQT25 ADA P02$ STA EQT27 ADA P04$ STA EQT31 ADA P03$ STA EQT34 INA STA EQT35 INA STA EQT36 JMP SETQ,I ***************************************************** ***************************************************** * * * TIME OFF * * * ***************************************************** * INITIAL SETUP FOR TIMEOUT * * A=EQT * * B=TIMER FLAG MASK * * * * * ***************************************************** TIMOF EQU * NOP STB TMOF1 SAVE TIMER TYPE JSB SETQ SET EQT LDA $EQ3,I AND M77$ GET SELECT CODE JSB SETIO SET I/O INSTRUCTIONS LDA TMOF1 CMA AND $EQ16,I CLEAR TIMER STA $EQ16,I IN PROGRESS JMP TIMOF,I * TMOF1 NOP ***************************************************** * * * LINE CHECK * * * ***************************************************** ***************************************************** LCHK EQU * NOP LDA $EQ5,I LINE STATE CPA CLOSE EQUAL CLOSED? JMP LCHK1 YES JSB STAT NO/GET I/F STATUS LDA EQT25,I XOR S$CC COMPLIMENT DSR AND S$CC AND ISOLATE ALF,ALF POSITION FOR ALF,RAR LINE ERROR * *NOTE-"DATA SET NOT READY" INDICATES LINE ERROR * STA B SAVE STATUS BITS RBL DSR ON SSB,RSS JMP LCHK,I YES LDA $EQ9,I ISOLATE FUNCTION AND M17$ CPA P01$ READ REQUEST JMP RLE LDA SEND NEXT STATE LER STA $EQ5,I SEND LDA B RESTORE RAR STATUS JMP LCHK,I RLE LDA RECV NEXT STATE JMP LER RECEIVE LCHK1 EQU * ISZ $EQ4,I INVALID REQUEST JMP READ1 IMMEDIATE COMPLETION ***************************************************** * * * DIRECTIVE EVALUATOR * * * * A=DIRECTIVE BITS (15-8), OUTPUT DATA (7-0)* * 15-START READ * * 14-START WRITE * * 13-NO OPERATION * * * * B=TIMER REQUEST * * <0-INITIATE/UPDATE VALUE * * =0-NO REQUEST * * >0-CANCEL REQUEST * * * ***************************************************** DRCTV EQU * NOP JSB STC ENABLE BOARD STA DRCTA SAVE DIRECTIVES SZB,RSS TIMING REQUEST JMP DRCT1 NO LDA $EQ16,I YES SSB CANCEL REQUEST JMP DRCT2 NO ELA,CLE,ERA CLEAR IN PROGRESS BIT CLB INDICATE CANCEL JMP DRCT3 DRCT2 EQU * SSA TIMER IN PROGRESS CMB,INB YES/INDICATE RESET IOR B15$ SET IN PROGRESS BIT DRCT3 EQU * STA $EQ16,I UPDATE FLAGS STB A LDB LTIMA SET PROCESSOR TO STB EQT31,I LOGICAL TIMER LDB EQT31 ADB N01$ PASS EQT30 AS TIMER JSB $TIME CALL TIMER DRCT1 EQU * LDA DRCTA RAL,SLA START READ JSB SREAD YES RAL,SLA START WRITE JSB SWRIT YES SSA NOP JSB RTRN YES LDA DRCTA NO DIRECTIVES JMP DRCTV,I RETURN * DRCTA NOP * ***************************************************** * * * START READ * * * ***************************************************** SREAD EQU * NOP LDA $EQ5,I CPA RECV LINE STATE = RECEIVE JMP SRD1 YES LDB EQT19,I FULL DUX SSB SYSTEM JMP C2B YES LDA $EQ15,I NO AND RCVON REMOVE STA $EQ15,I TRANSMIT JSB RCVI BIT LDA P08$ NEXT STA $EQ5,I STATE JMP TEST PR TO RCV #3 * SRD1 EQU * JSB STAT START INPUT JMP STATB * * ***************************************************** * * * START WRITE * * * ***************************************************** SWRIT EQU * NOP JSB CLC TURN OFF INTERRUPTS LDB $EQ5,I GET PREVIOUS STATE LDA PSND SET LINE STATE EQUALS STA $EQ5,I PREPARE TO SEND LDA DRCTA GET CHARACTER AND RBYT$ MASK OFF BITS STA EQT35,I SAVE CHARACTER FOR O/P CPB SEND PRIOR STATE SEND? JMP SWRT1 YES/BYPASS TURNAROUND JMP C2C SWRT1 EQU * JSB STOUT START OUTPUT LDA SEND LINE STATE STA $EQ5,I EQUALS SEND JSB STAT GET I/F STATUS CLA JMP LDID1 ***************************************************** * START OUTPUT * ***************************************************** STOUT EQU * NOP LDA EQT35,I GET PENDING CHAR. JSB OTA O/P TO INTERFACE JSB STC ENABLE INTERRUPTS JMP STOUT,I ***************************************************** * * * * * LOGICAL TIMER * * * * * ***************************************************** LTIMA DEF LTIM LTIM EQU * NOP JSB CLC TURN OFF BOARD LDB B15$ JSB TIMOF SET UP FOR TIMER OFF JSB STAT I/P BOARD STATUS LDA P02$ STA RTX INDICATE TIMER RETURN LDA P08$ LDB LSTT PROCESS LSWCH ADB $EQ5,I BY LDB B,I LINE JMP B,I STATE LSTT DEF *+1 DEF LSTA 0-CLOSED DEF LSTB 1-AWAITING RING DEF LSTB 2-AWAITING OPEN DEF LSTB 3-IDLE DEF LSTD 4-PREPARE TO SEND DEF LSTD 5-SEND DEF LSTD 6-PRE TO RCV#1 FLUSH WRITE DEF LSTD 7-PRE TO RCV#2 BUFFER EMPTY DEF LSTC 8-PRE TO RCV#3 DELAY DEF LSTC 9-RECEIVE DEF LSTB 10-AUTO SPEED * LSIT DEF *+1 DEF LSIA 0-CLOSED DEF LSIB 1-AWAITING RING DEF LSIC 2-AWAITING OPEN DEF LSIA 3-IDLE DEF LSII 4-PREPARE TO SEND DEF LSID 5-SEND DEF LSIE 6-PR TO RCV #1 DEF LSIF 7-PR TO RCV #2 DEF LSIH 8-PR TO RCV #3 DEF LSIG 9-RECEIVE DEF LSIK 10-AUTO SPEED * * LSTA EQU * NOP LDA $EQ15,I FORCE FINAL INTERRUPT IOR B10$ FROM 2 SEC TIMER AFTER AND RCVON DATA SET READY STA $EQ15,I GOES DOWN LSIA EQU * LDA CLR CLEAR IOR B15$ INTERFACE JSB OTA JSB CLC TURN OFF BOARD JSB DONE * * LSIB EQU * AND S$CE ISOLATE RINGING BIT SZA,RSS SET JMP LSIB1 NO JSB CLC YES/TURN OFF BOARD JSB DONE COMPLETE LSIB1 EQU * JSB STC ENABLE INTERRUPTS JSB RTRN * * LSIC EQU * NOP CLF 0 INHIBIT SYSTEM INTERRUPTS LDA EQT25,I SSA,RSS DEVICE INTERRUPT JMP RTRNI NO AND DEVBT STA SWORD SAVE INTERRUPT BITS IOR B13$ OUTPUT REF WORD JSB OTA LDA $EQ15,I IS THE ALF BOARD SSA RECEIVING JMP LSIC1 NO/TRANSMIT CLA GET BOARDS CCB STATUS JSB BSTAT BOARD STATUS GOOD JMP RTRNI NO LDA $EQ6,I LINE ALF OPEN SSA REQUEST JMP NOIN YES LDA RECV NEXT STATE STA $EQ5,I RECEIVE JMP TEST NOIN LDA $EQ6,I REMOVE LINE AND RCVON OPEN BIT STA $EQ6,I LDA $EQ10,I SSA AUTO SPEED JMP NOIN3 YES LDA RECV LINE STATE RECEIVE NOIN2 STA $EQ5,I JSB CLC DISABLE BOARD JSB RTRN COMPLETE NOIN3 LDA AUTOS NEXT STATE ISZ C.74 AUTO SPEED JMP NOIN2 LSIC1 EQU * CLA TEST BOARD CLB,INB STATUS JSB BSTAT BOARD STATUS GOOD JMP RTRNI NO LDA $EQ6,I LINE ALF OPEN SSA REQUEST JMP NOIN1 YES LDA SEND NEXT STATE STA $EQ5,I SEND JSB STOUT START OUTPUT (OCT 15, 1974) JSB STAT I/F STATUS JMP LSID RETURN TO LOGICAL NOIN1 LDA $EQ6,I REMOVE LINE AND RCVON OPEN BIT STA $EQ6,I LDA SEND NEXT STATE JMP NOIN2 SEND RTRNI EQU * CLA,INA RETURN TO DOS STA SAVA WITH NOT READY JMP TEST * * LSII EQU * LDA SEND LINE STATE STA $EQ5,I EQUALS SEND LSID EQU * CLA WRITE INTERRUPT ENTRY LSTD EQU * CLB,INB WRITE TIMER ENTRY JSB BSTAT TEST BOARD STATUS NOP LDID1 EQU * CLF 0 INHIBIT SYSTEM INTERRUPTS LDB $EQ1 WHILE IN LOGICAL DRIVER STB EQTB EQT BASE LDB $EQ5,I LINE STATE JSB EQT23,I CALL LOGICAL WRITE JSB DONE COMPLETE STA EQT35,I STB EQT36,I TEMP STORAGE FOR LOGICAL TIMER RAL,SLA IS IT READ JMP LSID2 YES RAR NO JSB DRCTV CHECK FOR TIMER CLB STB EQT36,I LDA EQT25,I STATUS WORD SSA DEVICE INTERRUPT ON JMP TBRAK YES ALF,ALF BREAK RAL CONDITION SSA ON JMP LSID YES RAR,RAR BUFFER SLA HALF FULL V BOARD JMP *+3 YES CHANGES