ASMB,L,C,B HED DVR74 12966 PHYSICAL LEVEL DRIVER NAM DVR74,0,0 ENT I.74,C.74 EXT $TIME **************************************************** * 12966 ASYNCRONOUS I/F BIT ASSIGNMENTS * **************************************************** * * * TRANSMIT DATA * * BIT MEANING * * 15 MASTER RESET * * 14,13,12 0,0,0 * * 11,10,9,8 NOT USED * * 7,6,5,4,3,2,1,0 DATA OUT * * * **************************************************** * ENABLE MODEM STATUS INTERFACE * * BIT MEANING * * 15 MASTER RESET * * 14,13,12 0,0,1 * * 11,10,9,8,7,6,5 NOT USED * * 4(CB) ENABLE CLEAR TO SEND * * 3 (CC) ENABLE DATA SET READY* * 2 (CE) ENABLE RINGING * * 1 (CF) ENABLE CARRIER DETECT* * 0 (SBB/SCF) SEC.RX DATA/SIGDETECT* * * **************************************************** * MODEM REFERENCE * * BIT MEANING * * 15 MASTER RESET * * 14,13,12 0,1,0 * * 11,10,9,8,7,6,5 NOT USED * * 4 (CB) REF CLEAR TO SEND * * 3 (CC) REF DATA SET READY * * 2 (CE) REF RINGING * * 1 (CF) REF CARRIER DETECT * * 0 (SBB/SCF) REF RX DATA/SIGDETECT* * * **************************************************** * CHARACTER FRAME CONTROL * * BIT MEANING * * 15 MASTER RESET * * 14,13,12 0,1,1 * * 11,10,9,8,7,6 NOT USED * * 5 1=TWO STOP BITS/0=ONE* * 4 1=ECHO ON/0=OFF * * 3 1=PARITY ON/0=OFF * * 2 1=PARITY EVEN/0=ODD * * 1,0 CHARACTER SIZE * * 00=5 BITS NO PARITY * * 01=6 BITS NO PARITY * * 10=7 BITS NO PARITY * * 11=8 BITS NO PARITY * * * **************************************************** * INTERFACE CONTROL * * BIT MEANING * * 15 MASTER RESET * * 14,13,12 1,0,0 * * 11,10,9 NOT USED * * 8 1=TRANSMIT/0=RECEIVE * * 7 1=REQUEST TO SEND * * 6 1=DATA TERMINAL READY* * 5 1=SECONDARY XMIT DATA* * 0=SECONDARY REQ SEND * * 4 1=DMA ON/0=OFF * * 3,2,1,0 BAUD RATE * * 0000=EXTERNAL X16 * * 0011=110 * * 0100=134.5 * * 0101=150 * * 0110=300 * * 0111=600 * * 1001=1200 * * 1011=2400 * * 1100=3600 * * 1101=4800 * * 1110=7200 * * 1111=9600 * * * **************************************************** * INTER STATUS RESET * * BIT MEANING * * 15 MASTER RESET * * 14,13,12 1,0,1 * * 11,10,9,8,7,6 NOT USED * * 5 CLEAR SPECIAL CHAR * * 4 CLEAR BUFFER HALFULL * * 3 CLEAR BUFFER FULL * * 2 CLEAR BUFFER EMPTY * * 1 CLEAR BREAK INDICATOR* * 0 CLEAR PARITY ERROR / * * OVERFLOW * * * **************************************************** * SPECIAL CHARACTER SET * * BIT MEANING * * 15 MASTER RESET * * 14,13,12 1,1,0 * * 11,10,9 NOT USED * * 8 1=ADD SPECIAL CHAR * * 0=REMOVE SPECIAL CHAR* * 7,6,5,4,3,2,1,0 SPECIAL CHARACTER * * * **************************************************** * RECEIVE DATA * * BIT MEANING * * 15 0=INVALID DATA * * 1=VALID DATA * * 14 1=SPECIAL CHARACTER * * 0=MARK * * 13,12,11,10,9,8 CHAR COUNT IN BUFFER * * 7,6,5,4,3,2,1,0 DATA INPUT * * * **************************************************** * STATUS * * BIT MEANING * * 15 1=DEVICE INTERRUPT * * 14 1=SPECIAL CHARACTER * * 13,12,11,10 NOT USED * * 9 1=BUFFER HALF FULL * * 8 1=BUFFER FULL * * 7 1=BUFFER EMPTY * * 6 1=BREAK KEY * * 5 1=PARITY ERROR/OVERFL* * 4 1=CLEAR TO SEND * * 3 1=DATA SET READY * * 2 1=RING INDICATOR * * 1 1=CARRIER DETECT * * 0 1=SECONDARY RXED DATA* * 1=SEC.RXED LINE SIG * * DETECT * * * **************************************************** A EQU 0 B EQU 1 SC EQU 0 **************************************************** C.74 EQU * NOP CLB ZERO RETURN STB SAVA CODE STA SCODE SAVE SELECT CODE JSB INTON TEST INTERRUPT SYSTEM JSB SAVE JSB SETQ SET EQT LDA SCODE UNIT SELECT CODE JSB SETIO SET I/O INSTRUCTIONS JSB STAT INPUT STATUS LDB LSIT JMP LSWCH LINE STATE **************************************************** * * * * **************************************************** I.74 EQU * NOP CLB STB RTX SET RETURN FOR I.74 STB SAVA ZERO RETURN CODE STA SCODE SAVE SELECT CODE LDA $EQ15,I REMOVE AND DUNBT DONE STA $EQ15,I BIT LDB I.74 SAVE RETURN ADDRESS STB EXIT JSB INTON TEST INTERRUPT SYSTEM LDB $EQ17,I LDA $EQ9,I GET REQUEST AND =B7777 SAVE FUNCT & REQUEST CPA INCD INITIALIZE REQUEST JMP I.74B YES SZB,RSS LOG.LINK PRESENT PROC CPA P03$ CLEAR REQUEST JMP I.74A YES LDA P01$ NO/INVALID STA SAVA JSB RTRN RETURN TO DOS I.74B 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 $EQ3 INSURE EQT RESET STA $EQ5,I CLEAR LINE STATE STA $EQ16,I LDA $EQ1 GET EQT BASE ADB P07$ COMPUTE EQT26 STA B,I SAVE AS TIMER (DVR74) ADB P04$ STA B,I **************************************************** * * * BUILD BASIC CONTROL WORD * * * **************************************************** LDA $EQ6,I GET PARAMETER WORD STA B AND M17$ ISOLATE CHAR SIZE ADA N05$ SUBTRACT FIVE STA RHOLD STORE CHAR SIZE LDA B AND M60$ ISOLATE PARITY BITS SZA,RSS CLEAR JMP NEXTT YES/TEST NEXT BIT STA B LDA RHOLD GET CONTROL WORD IOR P08$ CPB M40$ PARITY EVEN IOR P04$ YES NEXTT STA RHOLD JSB SETQ LDA $EQ6,I AND M100$ ISOLATE ECHO BIT SZA,RSS CLEAR JMP NEXT1 YES/TEST NEXT BIT LDA RHOLD GET CONTROL WORD IOR M20$ SET ECHO ON STA RHOLD NEXT1 LDA $EQ6,I AND M200$ ISOLATE STOP BITS SZA,RSS CLEAR JMP NEXT2 YES/ CLA NO IOR M40$ SET TWO STOP BITS NEXT2 ADA RHOLD COMBINE WORD IOR B13$ CHARACTER IOR B12$ FRAME STA EQT34,I CONTROL IN EQT34 **************************************************** * BUILD RX CONTROL WORD * **************************************************** LDA EQT21,I ALF,ALF BAUD RATE RIGHT POS AND M177$ CALCULATE ADA TBL0 BAUD LDA A,I RATE IOR M100$ CD ON IOR B14$ INTERFACE BIT STA $EQ6,I RX CONTROL WORD EQT6 **************************************************** * BUILD TX CONTROL WORD * **************************************************** LDA EQT21,I CALCULATE AND RBYT$ BAUD ADA TBL0 RATE LDA A,I IOR M700$ CD,CA,XMIT IOR B14$ INTERFACE BIT STA $EQ15,I * **************************************************** * OUTPUT SPECIAL CONTROLS TO THE 12966 * **************************************************** LDA SCODE GET SELECT CODE JSB SETIO GET I/O INSTRUCTIONS LDA $EQ15,I TX CONTROL WORD IOR B15$ MASTER RESET ON JSB OTA OUTPUT TO BOARD LDB TCONT 256 CHARACTER COUNT LDA SPEC SPECIAL CHAR CONT WORD XOR M400$ SPECIAL BIT OFF OUT0 JSB OTA INA NEXT LOCATION INB,SZB COUNT UP JMP OUT0 NO LDA EQT25,I ADDRESS OF COUNT & SP STA B LDA A,I GET COUNT STA TCON1 STORE INB NSPEC LDA B LDA A,I INB IOR SPEC SPEC CHAR CONTROL JSB OTA ISZ TCON1 COUNT UP JMP NSPEC NO LDA CLR YES JSB OTA OUTPUT INTER STAT RE. LDA EQT34,I OUTPUT CHAR FRAME JSB OTA I.74A EQU * LDA $EQ1 JSB SETQ SET EQT LDA $EQ4,I SET AND LBYT$ STATUS STA $EQ4,I TO ZERO LDA SCODE GET SELECT CODE JSB SETIO SET I/O INSTRUCTIONS LDA $EQ9,I ISOLATE FUNCTION AND =B7777 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 JSB RTRN BACK TO DOS **************************************************** * * * READ REQUEST INITIATION * * * **************************************************** READ EQU * CLF 0 INHIBIT INTERRUPTS LDA $EQ1 EQT BASE STA EQTB FOR LOGICAL JSB LCHK CHECK FOR DSR CCB INDICATE INITIATION JSB EQT22,I CALL LOGICAL READ JMP READ1 COMPLETE READC JSB DRCTV EVALUATE DIRECTIVES JSB RTRN RETURN TO DOS * READ1 EQU * LDA P04$ INDICATE IMMEDIATE STA SAVA COMPLETION JSB DONE **************************************************** * * * WRITE REQUEST INITIATION * * * **************************************************** WRITE EQU * CLF 0 INHIBIT INTERRUPTS LDA $EQ1 EQT BASE STA EQTB FOR LOGICAL JSB LCHK CHECK FOR DSR CCB INDICATE INITIATION JSB EQT23,I CALL LOGICAL WRITE JMP READ1 COMPLETE JSB WRITC CONTINUE JSB RTRN BACK TO DOS WRITC EQU * NOP JSB DRCTV EVALUATE DIRECTIVES AND RBYT$ MASK OFF JSB OTA OUTPUT CHARACTERS JMP WRITC,I **************************************************** * * * CONTROL REQUEST INITIATION * * * **************************************************** CONTL EQU * CLA CLF 0 INHIBIT INTERRUPTS LDB $EQ1 STB EQTB CCB INDICATE INITIATION JSB EQT24,I CALL LOGICAL CONTROL JMP READ1 COMPLETE