* * **************************************************** TIMOF EQU * NOP STB TMOF1 SAVE TIMER TYPE JSB SETQ SET EQT LDA EQT3,I AND M77$ GET SELECT CODE JSB SETIO SET I/O INST. LDA TMOF1 CMA AND EQT16,I CLEAR TIMER IN PROGRESS STA EQT16,I JMP TIMOF,I * TMOF1 NOP * * **************************************************** * * * LINE CHECK * * * **************************************************** LCHK EQU * NOP LDA EQT5,I LOAD LINE STATE SZA,RSS LINE CLOSE? JMP LCHK1 YES LDA STWD LOAD BOARD STATUS CMA COMPLIMENT DSR AND P01$ ISOLATE DSR RAR,RAR POSITION FOR LINE ERROR *NOTE-DSR=DOWN INDICATES LINE ERROR JMP LCHK,I LCHK1 EQU * ISZ EQT4,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 STA DRCTA SAVE DIRECTIVES SZB,RSS TIMING REQUEST JMP DRCT1 NO LDA EQT16,I YES SSB CANCEL REQUEST JMP DRCT2 NO * YES 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 EQT16,I UPDATE FLAGS STB A LDB LTIMA STB EQT31,I SET PROCESSOR TO LOGICAL TIMER LDB EQT31 ADB N01$ PASS EQT30 AS TIMER BLOCK JSB $TIME DRCT1 EQU * LDA DRCTA RAL,SLA START READ JMP SREAD YES RAL,SLA START WRITE JMP SWRIT YES SSA NOP JMP RTRN YES LDA DRCTA NO DIRECTIVES JMP DRCTV,I RETURN * DRCTA NOP * * **************************************************** * * * START READ * * * **************************************************** SREAD EQU * LDA EQT5,I CPA P04$ LINE=SEND? JMP SRD3 YES LDA EQT6,I BASIC CONTROL WORD IOR P02$ DTR SET,RQS OFF JSB OTA LDA MSKI IOR P05$ MASK ON RLS,DSR JSB OTA LDA EQT19,I SSA FULL DUPLEX? JMP SRD1 YES LDA STWD ARS,SLA CLS HIGH? JMP SRD2 YES SRD1 LDA P08$ LINE=PREP TO RCV#3 STA EQT5,I LDA ARMI IOR P01$ ARM RLS=0,DSR=1 JSB OTA JSB STC TURN ON BOARD JMP RTRN SRD2 LDA P07$ LINE=PREP TO RCV#2 STA EQT5,I LDA ARMI IOR P05$ ARM RLS=1,DSR=1 JSB OTA LDA N02$ DELAY 200MS LDB TIMA TIMER#1 JSB TIMIN START TIMER JSB STC TURN ON BOARD JMP RTRN SRD3 LDA RBYT$ PAD CHAR JSB OTA LDA P06$ LINE=PREP TO RCV#1 STA EQT5,I JSB STC TURNON JMP RTRN **************************************************** * * * START WRITE * * * **************************************************** SWRIT EQU * LDA EQT5,I CPA P03$ LINE OPEN SEND? JMP SWRT1 YES CPA P09$ LINE=RECEIVE? RSS YES JMP SWRT0 LDA STOP STOP INPUT JSB OTA SWRT0 EQU * LDA EQT6,I BASIC CONTROL WORD IOR P03$ RQS=1,DTR=1 JSB OTA LDA MSKI IOR P03$ MASK ON CLS,DSR JSB OTA LDA ARMI IOR P01$ ARM CLS=0,DSR=1 JSB OTA LDA P05$ LINE EQUAL TO PREPARE TO SEND STA EQT5,I LDA DRCTA SAVE 1ST CHAR AND RBYT$ STA EQT15,I JSB STC TURN ON BOARD JMP RTRN RETURN SWRT1 EQU * LDA P05$ LINE=PREP TO SEND STA EQT5,I SWRT2 EQU * LDA ARMI IOR P03$ ARM CLS=1, DSR=1 JSB OTA LDA STRT START TRANSMIT JSB OTA LDA DRCTA SAVE 1ST CHAR AND RBYT$ STA EQT15,I JSB STC TURN ON BOARD JMP RTRN RETURN TO DOS **************************************************** * * * LOGICAL TIMER * * * **************************************************** LTIMA DEF LTIM * LTIM EQU * NOP CLF 0 LDB B15$ JSB TIMOF CLEAR TIMER FLAG LDA P02$ STA RTX INDICATE TIME RETURN LDA B15$ INDICATE LOGICAL TIMER LDB LSTT PROCESS LSWCH ADB EQT5,I BY LDB B,I LINE JMP B,I STATE LSTT DEF *+1 DEF RTRN 0-CLOSED DEF RTRN 1-AWAITING OPEN DEF RTRN 2-LINE OPEN RCV DEF RTRN 3-LINE OPEN SEND DEF LSTB 4-SEND DEF LSTB 5-PREPARE TO SEND DEF LSTD 6-PREPARE TO RCV#1 DEF LSTD 7-PREPARE TO RCV#2 DEF LSTD 8-PREPARE TO RCV#3 DEF LSTD 9-RECEIVE * LSIT DEF *+1 DEF DCTRL 0-CLOSED DEF LSIA 1-AWAITING OPEN NOP 2-LINE OPEN RCV DEF DIOS 3-LINE OPEN SEND DEF LSIB 4-SEND DEF LSIC 5-PREPARE TO SEND DEF LSID1 6-PREPARE TO RCV#1 DEF LSID2 7-PREPARE TO RCV#2 DEF LSIE 8-PREPARE TO RCV#3 DEF LSID3 9-RECEIVE * LSIA EQU * LDA STWD BOARD STATUS AND P03$ ISOLATE CLS,DSR SLA,RSS IS THIS AN UNUSUAL LINE STATE? JMP LSIA1 YES THEN GO HANDLE IT CPA P01$ RECEIVE OPEN? INA YES STA EQT5,I SAVE LINE STATE JMP DCTRL COMPLETE LSIA1 EQU * SZA,RSS IF NO CONTROL JMP LSIA2 THEN DO NOT RECONFIGURE THE BOARD LDA MSKI INA MASK ON DSR JSB OTA AND GO OUTPUT IT LDA ARMI AND GO ARM DSR INTERUPT TO 1 JSB OTA OUTPUT THE ARMING COMMAND LSIA2 EQU * JSB STC SET CONTROL ON THE BOARD JMP RTRN AND RETURN TO USER LSIB EQU * JSB BSTAT CHECK BOARD STATUS LSTB EQU * LDB P01$ INDICATE CONTINUATION JSB EQT23,I CALL LOGICAL WRITE JMP LSIB1 COMPLETE JSB DRCTV CONTINUE,EVALUATE DIRECTIVES LDA DRCTA DATA WORD AND RBYT$ PREPARE FOR OUTPUT JSB OTA JSB STC TURN ON BOARD JMP RTRN RETURN TO DOS LSIB1 EQU * LDA BSTW SZA COMPLETION BY ERROR? JMP DIOS YES,STOP IO LDA RBYT$ PUT OUT PAD JSB OTA TO GET LAST CHAR OUT LDA P03$ LINE=LINE OPEN SEND STA EQT5,I JSB STC TURN ON BOARD JMP RTRN RETURN TO DOS LSIC EQU * LDA STWD SSA,RSS DATA REQUEST? JMP LSIC1 YES AND P03$ CPA P03$ ERROR? JMP SWRT2 NO,START OUTPUT LDA B14$ YES,INDICATE ERROR JMP LSTB LSIC1 EQU * LDA P04$ LINE=SEND STA EQT5,I LDA EQT15,I FIRST CHAR JSB OTA OUTPUT CHAR JSB STC TURN ON BOARD JMP RTRN RETURN TO DOS LSID1 EQU * LDA STOP STOP TRANSMIT JSB OTA JMP LSIDD LSID2 EQU * LDA EQT16,I LOAD TIMER FLAGS WORD ARS,ALS CLEAR BIT 0 PHYSICAL TIMER FLAG STA EQT16,I AND STORE THE WORD BACK INTO THE EQT CLA INDICATE TIMER TURN OFF LDB EQT27 LOAD PHYSICAL TIMER BUFFER ADDRESS ADB N01$ DECREMENT IT JSB $TIME GO DO TURN OFF LSIDD EQU * LDA STWD SLA DSR DOWN? JMP SREAD NO LSER EQU * LDA B14$ YES,LINE ERROR JMP LSTD LSID3 EQU * JSB BSTAT FIND BOARD STATUS O5 MIA SC INPUT DATA TRAC1 NOP TRACE POINT 1 LSTD EQU * LDB P01$ INDICATE CONTINUE JSB EQT22,I CALL LOGICAL RECEIVE JMP DIOR COMPLETE JSB DRCTV CONTINUE,EVALUATE DIRECTIVES JSB STC TURN ON BOARD JMP RTRN RETURN TO DOS LSIE EQU * LDA STWD SLA,RSS DSR DOWN? JMP LSER YES LDA P09$ LINE=RECEIVE STA EQT5,I LDA ARMI IOR P05$ ARM RLS=1, DSR=1 JSB OTA LDA STRT START RECEIVE JSB OTA LDA EQT20,I LOAD SYNC CHAR JMP LSTD GIVE IT TO LOGICAL **************************************************** * * * SAVE REGISTERS * * * **************************************************** SAVE EQU * NOP STA SAVA A STB SAVB B ERA,ALS E SOC INA O STA SAVEO CLA,INA STA RTX INDICATE INTERRUPT LDA SAVE ADA N03$ CALCULATE INTERRUPT ENTRY LDA A,I STA EXIT SAVE RETURN ADDRESS JMP SAVE,I **************************************************** * * * BOARD STATUS CHECK * * * **************************************************** BSTAT EQU * NOP CLB INITIALIZE STATUS RETURN LDA STWD BOARD STATUS WORD SSA,RSS DATA REQUEST ONLY? JMP LOK YES ALF AND P03$ ISOLATE PARITY AND DATA SZA,RSS PARITY OR DATA ERROR? JMP LINE NO IOR DSET RESET ERROR BITS JSB OTA ADB P02$ INDICATE DATA ERROR LINE EQU * LDA EQT5,I ARS INA AND STWD ISOLATE RELEVENT LINE BITS SLA,RSS DSR HIGH? JMP LERR NO,LINE ERROR ARS SZA,RSS OTHER LINE FAULT(CLS,RLS)? LERR EQU * ADB P04$ YES,LINE ERROR BLF,BLF POSITION STATUS BLF LOK EQU * LDA B STATUS RTRN IN A STA BSTW SAVE STAT WORD JMP BSTAT,I **************************************************** * * * COMPLETION NOTIFICATION * * * **************************************************** DIOR EQU * LDA EQT5,I CPA P06$ LINE=PREP TO RCV#1? JMP DIOS YES CCB FIX FOR LINE OPEN RCV CPA P09$ LINE=RECEIVE? JMP DSIO JMP DLNE DIOS EQU * CLB FIX FOR LINE OPEN SEND DSIO EQU * LDA STOP STOP I/O JSB OTA DLNE EQU * ADB P03$ STB EQT5,I SET LINE STATE DCTRL EQU * JSB DQT DEQUE TIMERS LDA EQTB JSB $PCOM JMP RTRN RETURN TO DOS * **************************************************** * * * COMMON RETURN * * * **************************************************** RTRN EQU * LDA RTX DETERMINE RETURN TYPE SZA,RSS JMP RTRN2 I.71 SLA,RSS JMP RTRN3 LOGICAL TIMER RTRN0 EQU * P.71 LDA SAVEO RESTORE CLO SLA,ELA E STF 1 O LDA SAVA A LDB MPTFL TEST MEMORY PROTECT SZB,RSS IS IT ON? JMP RTRN1 YES LDB SAVB RESTORE B STF 0 ENABLE INTERRUPT SYSTEM JMP EXIT,I RTRN1 EQU * LDB SAVB RESTORE B STF 0 ENABLE INTERRUPTS STC 5 TURN ON MEMORY PROTECT JMP EXIT,I RTRN2 EQU * LDA EQT14,I STA SAVB TRANSMISSION LOG JMP RTRN0 RTRN3 EQU * STF 0 ENABLE INTERRUPTS JMP LTIM,I **************************************************** * * * DEQUEUE TIMERS * * * **************************************************** DQT EQU * NOP LDA EQT16,I LOAD TIMER FLAGS SZA,RSS TIMER IN PROGRESS? JMP DQT,I NO SSA,RSS LOGICAL TIMER IN PROGRESS JMP DQT1 NO ELA,CLE,ERA YES STA EQT16,I CLEAR FLAG CLA LDB EQT31 ADB N01$ JSB $TIME DQT1 EQU * LDA EQT16,I SLA,RSS DVR71 TIMER ACTIVE? JMP DQT,I NO,DONE ARS,ALS YES,CLEAR STA EQT16,I CLEAR FLAG LDB EQT27 ADB N01$ CLA JSB $TIME CANCEL REQUEST JMP DQT,I * **************************************************** OTA EQU * NOP O1 OTA SC TRAC2 NOP TRACE POINT 2 JMP OTA,I * **************************************************** STC EQU * NOP O2 STC SC JMP STC,I * **************************************************** STAT EQU * NOP O3 CLC SC O4 LIA SC TRAC3 NOP TRACE POINT 3 STA STWD JMP STAT,I * **************************************************** * * * SET I/O INSTRUCTIONS * * * **************************************************** SETIO EQU * NOP CPA LAST ALREADY CONFIGURED? JMP SETIO,I YES STA LAST SAVE CURRENT SC ADA MIA STA O5 FORM MIA INST ADA P64$ FORM LIA INST STA O4 ADA P64$ FORM OTA INST STA O1 ADA P64$ FORM STC INST IOR CFLAG INCLUDE THE CLEAR FLAG BIT STA O2 IOR B11$ FORM CLC INST STA O3 JMP SETIO,I * **************************************************** * * * EQT LINKAGE TABLE * * * **************************************************** EQT3 NOP UNIT/SELECT CODE EQT4 NOP STATUS EQT5 NOP LINE STATE EQT6 NOP I/F CONTROL WORD EQT9 NOP CONWD EQT10 NOP PARAMETER 1 EQT14 NOP TRANSMISSION LOG EQT15 NOP SAVE FIRST CHAR FOR O/P EQT16 NOP TIMER FLAGS EQT19 NOP BOARD PARAMETERS EQT20 NOP EQT22 NOP LREAD EQT23 NOP LWRIT EQT24 NOP LCNTL EQT27 NOP DVR71 TIMER PROCESSOR ADDRESS EQT31 NOP LOGICAL TIMER PROCESSOR ADDRESS * * BASE PAGE CONSTANTS * # EQU 53B N01$ EQU #-1 N02$ EQU #-2 N03$ EQU #-3 N04$ EQU #-4 P01$ EQU #+1 P02$ EQU #+2 P03$ EQU #+3 P04$ EQU #+4 P05$ EQU #+5 P06$ EQU #+6 P07$ EQU #+7 P08$ EQU #+8 P09$ EQU #+9 P64$ EQU #+12 M17$ EQU #+13 M77$ EQU #+15 RBYT$ EQU #+17 OCT 377 LBYT$ EQU #+18 OCT 177400 * * BASE PAGE VARIABLES * ## EQU 202B EQTB EQU 300B ADDRESS OF EQT ENTRY $EQ1 EQU ##+1 $EQ3 EQU ##+3 $EQ5 EQU ##+5 $EQ6 EQU ##+6 $EQ9 EQU ##+9 $EQ11 EQU ##+11 $EQ14 EQU ##+14 $EQ16 EQU ##+16 $EQ17 EQU ##+17 B15$ OCT 100000 B14$ OCT 40000 B11$ OCT 4000 * ARMI OCT 120000 CTRL OCT 140000 DSET OCT 110000 MSKI OCT 130000 REST EQU B15$ STOP OCT 170000 STRT OCT 160000 * EXIT NOP BSTW NOP CFLAG OCT 1000 CLEAR FLAG BIT LAST NOP MIA MIA SC MPTFL EQU 271B MEMORY PROTECT FLAG RTX NOP SAVA NOP SAVB NOP SAVEO NOP SCODE NOP SFAR OCT 17777 STWD NOP .20 OCT 20 .60 OCT 60 .103 OCT 103 * END