ASMB,L,C,R,B HED DVR71 12967 PHYSICAL LEVEL DRIVER 8/1/74 NAM DVR71,0,0 ENT I.71,C.71 ENT P.710,P.711,P.712,P.713 ENT P.714,P.715,P.716,P.717 EXT $TIME,$PCOM **************************************************** * 12967 SYNCHRONOUS I/F COMMAND SET * **************************************************** * * * MASTER RESET-REST * * BIT MEANING * * 15,14,13,12 1,0,0,0 * * CAUSES SMI TO COMPLETELY RESET TO ITS * * IDLE STATE(AS AFTER A CLC 0). * * * **************************************************** * DATA STATUS RESET-DSET * * BIT MEANING * * 15,14,13,12 1,0,0,1 * * 11,10,9,8 NOT USED * * 7,6,5,4,3,2 NOT USED * * 1 1=RESET DATA ERROR * * 0 1=RESET PARITY ERROR * * * **************************************************** * ARM STATUS INTERRUPT-ARMI * * BIT MEANING * * 15,14,13,12 1,0,1,0 * * 11,10,9,8,7,6,5,4 NOT USED * * 3 SECONDARY RLS ARM * * 2 RCV LINE SIGNAL ARM * * 1 CLEAR TO SEND ARM * * 0 DATA SET READY ARM * * IF BIT=1 INTERRUPT WHEN LINE=0,IF BIT=0 * * INTERRUPT WHEN LINE=1. * * * **************************************************** * MASK STATUS INTERRUPT-MSKI * * BIT MEANING * * 15,14,13,12 1,0,1,1 * * 11,10,9,8,7,6,5 NOT USED * * 4 RING MASK * * 3 SECONDARY RLS MASK * * 2 RCV LINE SIGNAL MASK * * 1 CLEAR TO SEND MASK * * 0 DATA SET READY MASK * * IF BIT=1 ENABLE LINE INTERRUPT,IF BIT=0 * * DISABLE LINE INTERRUPT. * * * **************************************************** * CONTROL-CTRL * * BIT MEANING * * 15,14,13,12 1,1,0,0 * * 11,10,9,8,7,6 NOT USED * * 5 1:DMA USED FOR DATA * * 0:PROGRAMMED I/O USED* * 4 1:PARITY ENABLE * * 0:DISABLE PARITY * * 3 1:ODD PARITY,0:EVEN * * 2 1:SRQS MODEM CTRL ON * * 0:SRQS OFF * * 1 1:DTR MODEM CTRL ON * * 0:DTR OFF * * 0 1:RQS ON-TRANS MODE * * 0:RQS OFF-RCV MODE * * * **************************************************** * START-STRT * * BIT MEANING * * 15,14,13,12 1,1,1,0 * * START A TRANS OR RCV OPERATION ONCE THE * * MODEM HAS BECOME READY. * * * **************************************************** * STOP * * BIT MEANING * * 15,14,13,12 1,1,1,1 * * STOP A TRANS OR RCV OPERATION AS A NORMAL* * ENDING OR TO ABORT IN CASE OF ERROR. * * * **************************************************** * * * INTERFACE STATUS WORD * * BIT MEANING * * 15 0:DATA TRANSFER * * 1:UNUSUAL CONDITION * * 14 1:MODEM STAT REQUEST * * 13 1:DATA ERROR COND * * 12 1:RECEIVE PARITY COND* * 11 1:DATA REQ CONDITION * * 10 NOT USED * * 9 1:RING LINE INTERRUPT* * 8 1:SRLS LINE INTERRUPT* * 7 1:RLS LINE INTERRUPT * * 6 1:CLS LINE INTERRUPT * * 5 1:DSR LINE INTERRUPT * * 4 1:RING LINE ON * * 3 1:SRLS LINE ON * * 2 1:RLS LINE ON * * 1 1:CLS LINE ON * * 0 1:DSR LINE ON * * * * * **************************************************** A EQU 0 B EQU 1 SC EQU 0 **************************************************** * * * COMPLETION SECTION * * * **************************************************** C.71 EQU * NOP CLA SUCCESSFUL COMPLETION LDB $EQ14,I TRANSMISSION LOG JMP C.71,I RETURN **************************************************** * * * INTERRUPT CELLS * * * **************************************************** * P.710 EQU * NOP CLF 0 DISABLE INTERRUPTS JSB SAVE SAVE REGISTERS LDA UEQT ADDRESS USERS EQT JSB SETQ SET EQT LDA USC ADDRESS USERS SELECT CODE PCOMM JSB SETIO SET I/O INSTRUCTIONS JSB STAT INPUT STATUS LDB LSIT JMP LSWCH LINE STATE * * * P.711 EQU * NOP CLF 0 JSB SAVE LDA UEQT+1 JSB SETQ LDA USC+1 JMP PCOMM * * P.712 EQU * NOP CLF 0 JSB SAVE LDA UEQT+2 JSB SETQ LDA USC+2 JMP PCOMM * * P.713 EQU * NOP CLF 0 JSB SAVE LDA UEQT+3 JSB SETQ LDA USC+3 JMP PCOMM * * * * P.714 EQU * NOP CLF 0 JSB SAVE LDA UEQT+4 JSB SETQ LDA USC+4 JMP PCOMM * * P.715 EQU * NOP CLF 0 JSB SAVE LDA UEQT+5 JSB SETQ LDA USC+5 JMP PCOMM * * P.716 EQU * NOP CLF 0 JSB SAVE LDA UEQT+6 JSB SETQ LDA USC+6 JMP PCOMM * * P.717 EQU * NOP CLF 0 JSB SAVE LDA UEQT+7 JSB SETQ LDA USC+7 JMP PCOMM **************************************************** * * * INITIATION SECTION * * * **************************************************** I.71 EQU * NOP CLF 0 DISABLE INTERRUPT SYSTEM CLB STB RTX SET RETURN INDEX FOR I.70 STB SAVA ZERO RETURN CODE LDB I.71 SAVE RETURN ADDRESS STB EXIT STA SCODE SAVE SELECT CODE LDB $EQ17,I LDA $EQ9,I GET REQUEST AND SFAR SAVE FUNCTION AND REQUEST CPA .103 INITIALIZE REQUEST? JMP I.71B YES SZB,RSS IF LOGICAL LINKAGE PRESENT --PROCEED CPA P03$ CLEAR REQUEST JMP I.71A YES ISZ SAVA NO INVALID JMP RTRN I.71B EQU * LDB $EQ11,I GET EXTENSION ADDRESS STB $EQ17,I LINK WITH LOGICAL INB LDA B,I GET EQT19 STA $EQ6,I SAVE IN CONTROL WORD CLA STA EQT3 INSURE EQT RESET STA $EQ5,I CLEAR LINE STATE STA $EQ16,I CLEAR TIMER FLAGS LDA $EQ1 GET BASE EQT ADDRESS ADB P07$ COMPUTE EQT26 STA B,I SAVE AS TIMER ID(DVR71) ADB P04$ COMPUTE EQT30 STA B,I SAVE AS TIMER ID (LOGICAL) * * BUILD BASIC CONTROL WORD * LDA $EQ6,I GET PARAMETER WORD(EQT19) AND .60 ISOLATE PARITY RAR POSITION PARITY SZA PARITY OFF? IOR .20 NO IOR CTRL CONTROL WORD STA $EQ6,I STORE WORD IN EQT6 * I.71A EQU * LDA $EQ1 JSB SETQ SET EQT * LDA EQT4,I SET AND LBYT$ STATUS TO STA EQT4,I ZERO JSB SETU SET UNIT RELATED CONSTANTS LDA SCODE JSB SETIO SET I/O INSTRUCTIONS JSB STAT FIND BOARD STATUS LDA EQT9,I AND SFAR ISOLATE FUNCTION AND REQUEST CPA P03$ CLEAR REQUEST JMP C0 YES AND M17$ CPA P01$ READ REQUEST JMP READ YES CPA P02$ WRITE REQUEST JMP WRITE YES CPA P03$ CONTROL REQUEST JMP CONTL YES ISZ SAVA INDICATE ERROR JMP RTRN **************************************************** * * * READ REQUEST INITIATION * * * **************************************************** READ EQU * JSB LCHK CHECK FOR LINE OPEN, DATA SET RDY CCB INDICATE INITIATION CALL JSB EQT22,I CALL LOGICAL READ JMP READ1 COMPLETE JSB DRCTV EVALUATE DIRECTIVE BITS JMP RTRN * READ1 EQU * LDA P04$ INDICATE IMMEDIATE COMPLETION STA SAVA JMP RTRN **************************************************** * * * WRITE REQUEST INITIATION * * * **************************************************** WRITE EQU * JSB LCHK CHECK FOR LINE OPEN,DATA SET RDY CCB INDICATE INITIATION CALL JSB EQT23,I CALL LOGICAL WRITE JMP READ1 COMPLETE JSB DRCTV EVALUATE DIRECTIVE BITS JMP RTRN **************************************************** * * * CONTROL REQUEST INITIATION * * * **************************************************** CONTL EQU * CLA CCB INDICATE INITIATION CALL JSB EQT24,I CALL LOGICAL CONTROL JMP READ1 COMPLETE JSB DRCTV EVALUATE DIRECTIVE BITS LDA EQT9,I ALF,ALF RAL,RAL AND M77$ ISOLATE FUNCTION CODE ADA N04$ SSA,RSS FUNCTION LT 5 JMP CNTL1 NO-INVALID ADA CNTLT YES-CALCULATE TABLE ADDRESS LDA A,I JMP A,I PROCESS BY FUNCTION CODE * * CNTL1 EQU * ISZ EQT4,I INDICATE INVALID REQUEST JMP READ1 * * * CONTROL TRANSFER TABLE * DEF C0 CLEAR DEF READ1 INITIALIZE(NO ADDITIONAL PROCESSING) DEF C2 LINE OPEN DEF C3 LINE CLOSE CNTLT DEF * * * CLEAR REQUEST * C0 EQU * LDA $EQ17,I SZA SKIP DEQUEUE IF NOT LINKED JSB DQT DEQUE TIMERS LDA REST MASTER RESET JSB OTA CLEAR I/F CLA STA $EQ17,I BREAK LINKAGE JMP READ1 * * LINE OPEN REQUEST * C2 EQU * LDA EQT10,I PARAMETER 1 CPA P01$ RECEIVE? JMP CRCV YES CPA P02$ SEND? JMP CSND YES ISZ EQT4,I INDICATE INVALID REQUEST JMP READ1 RETURN TO DOS CRCV EQU * LDA EQT19,I SSA FULL DUPLEX? JMP CSND YES LDA EQT6,I LOAD BASIC CONTROL WORD IOR P02$ JSB OTA SET DATA TERMINAL READY LDA EQT5,I CPA P03$ LINE=LINE OPEN SEND? JMP C21 YES C20 EQU * LDA MSKI IOR P01$ JSB OTA MASK DSR INTERRUPT LDA ARMI JSB OTA ARM DSR DOWN(INTERRUPT ON UP) JMP C22 CSND EQU * LDA EQT6,I IOR P03$ JSB OTA SET DTR AND RQS LDA EQT19,I SSA FULL DUPLEX? JMP C20 YES LDA MSKI IOR P02$ JSB OTA MASK CLS INTERRUPT LDA ARMI JSB OTA ARM CLS DOWN(INT ON UP) JMP C22 C21 LDA MSKI IOR P02$ MASK CLS INTERRUPT JSB OTA LDA ARMI IOR P02$ ARM CLS=1 JSB OTA C22 LDA P01$ LINE=AWAITING OPEN STA EQT5,I JSB STC TURN ON BOARD JMP RTRN * * LINE CLOSE REQUEST * C3 EQU * LDA REST JSB OTA MASTER RESET LDA MSKI IOR P01$ JSB OTA MASK DSR INTERRUPT LDA ARMI IOR P01$ INTERRUPT ON DSR DOWN JSB OTA CLA LINE=CLOSE STA EQT5,I JSB STC TURN ON BOARD JMP RTRN * **************************************************** * * * SET UNIT RELATED DATA * * * **************************************************** SETU EQU * NOP LDA $EQ3,I GET UNIT & SELECT CODE ALF,ALF RAL,RAL POSITION UNIT FIELD AND P07$ ADA UTBL CALCULATE TABLE ENTRY LDB $EQ1 STB A,I SAVE EQT ADA P08$ OFFSET TO NEXT TABLE LDB SCODE STB A,I SAVE SELECT CODE JMP SETU,I * UTBL DEF *+1 UEQT BSS 8 HOLDS EQT FOR UNIT 0-7 USC BSS 8 HOLDS SC FOR UNIT 0-7 * * **************************************************** * * * SET EQT TABLE * * * * A=ADDRESS OF EQT * * * **************************************************** SETQ EQU * NOP STA EQTB SAVE EQT ON BASE PAGE ADA P02$ CPA EQT3 ALREADY SET JMP SETQ,I YES STA EQT3 INA STA EQT4 FILL INA TABLE STA EQT5 INA STA EQT6 ADA P03$ STA EQT9 INA STA EQT10 ADA P04$ STA EQT14 INA STA EQT15 INA STA EQT16 INA LDA A,I LINK TO EXTENSION INA STA EQT19 INA STA EQT20 ADA P02$ LDB A,I STB EQT22 INA LDB A,I STB EQT23 INA LDB A,I STB EQT24 ADA P03$ STA EQT27 ADA P04$ STA EQT31 JMP SETQ,I RETURN **************************************************** * * * DRIVER TIMER START * * * **************************************************** TIMIN EQU * B=PROCESSOR ADDRESS NOP A=TIME INTERVAL STA EQT27,I SAVE VALUE LDA EQT16,I GET TIMER FLAGS ERA,RAL PHYSICAL TIMER BIT TO E IOR P01$ SET IT STA EQT16,I LDA EQT27,I GET VALUE SEZ INITIATE REQUEST CMA,INA NO-INDICATE RESET STB EQT27,I SAVE PROCESSOR ADDRESS LDB EQT27 ADB N01$ PASS EQT26 AS TIMER BLOCK JSB $TIME JMP TIMIN,I * * TIMER #1(AND ONLY) * TIMA DEF *+1 NOP CLF 0 CLB,INB JSB TIMOF JSB STAT GET BOARD STATUS LDA TIMA+1 RETURN ADDRESS STA LTIM LDA P02$ STA RTX INDICATE TIMER RETURN JMP LSIE START RECEIVE * **************************************************** * * * TIME OFF * * INITIAL SETUP FOR TIMEOUT * * A=EQT * * B=TIMER FLAG MASK *