ASMB,R,L,C HED DVR50: BISYNC TELECOM DRIVER * (C) HEWLETT-PACKARD CO.1979 * NAM DVR50,0 91780-16015 REV.1913 790131 ENT I.50,C.50,P.50 EXT $IOUP * * NAME: DVR50 * SOURCE: 91780-18015 * RELOC: 91780-16015 * PGMR: P. KAPOOR ( 11/20/73 ) * * MODIFIED BY: P. KAPOOR, R.SHATZER ( 01/11/75 ) * C. WHELAN ( 06/30/76 ) * C. HAMILTON ( 04/12/77 ) * R. GUDZ ( 01/31/79 ) * * ***************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * ***************************************************************** * * RTE/IBM BINARY SYNCHRONOUS COMMUNICATIONS DRIVER * CAUTION: THIS SYSTEM MODULE IS A FRONT-END FOR * THE SSGA/LIBRARY PORTION OF DVR50 (#BSC). * * UNIVERSAL (RTE-C/II/III/IV) VERSION, W/ DMS MAPPING DONE RIGHT. * * ******************************************************************** * * PCO 1913 JANUARY 31,1979 * * MAPPING FIXED FOR TYPE 4 PROGRAMS IN RTE-IV * * CLMSK FIXED TO ONLY MASK LOW EIGHT BITS OF EQT WORD 5 SKP * * DRIVER INITIALIZATION: BEFORE USING THIS DRIVER, * THE USER MUST MAKE AN INITIALIZATION CALL. THIS * ENABLES THE SYSTEM RESIDENT FRONT-END TO SET UP * LINKS TO ENTRY POINTS #I.50, #C.50 AND #P.50 IN * THE LIBRARY PORTION OF DVR50. INITIALIZATION * CALLING SEQUENCE IS: * * JSB EXEC * DEF *+4 * DEF ICODE * DEF ICNWD * DEF IPRM * RETURN POINT * . * . * ICODE DEC 3 * * ICNWD OCT 37XX * * IPRM DEF *+1 * OCT ZZZZ * MAPSW NOP * TIMAD DEF #TIME * BSCAD DEF #BSC * * WHERE ZZZZ = 100026 FOR ASCII WITH CRC * = 26 FOR ASCII WITH LRC & VRC * = 100062 FOR EBCDIC WITH CRC * = 62 FOR EBCDIC WITH LRC * * MAPSW = 0 TO ALLOW DMS MAP SWITCHING FOR RTE-III * =-1 EXECUTE ONLY DMS-STATUS SAVE/RESTORE FOR P.50 (RTE-III) * <-1 TO BYPASS ALL DMS INSTRUCTIONS (RTE-C/II). * * TIMAD IS THE ADDRESS OF THE TIMEOUT-CONTROL ARRAY (IN #COMN), * AND #BSC IS AN ENTRY POINT IN LIBRARY PORTION * OF THE DRIVER : * * #BSC OCT 150003 * DEF #I.50 * DEF #C.50 * DEF #P.50 * * ON RETURN FROM INITIALIZATION, REG A = EQT5 AND * REG B = PASSWORD (ID SEG ADDR OF CALLING PROGRAM) * * ON ALL SUBSEQUENT CALLS TO DVR50 (TILL THE LINE * GOES DOWN) THE CALLING PROGRAM MUST INSERT THIS * NUMBER IN THE OPTIONAL PARAMETER WORD OF THE * CALLING SEQUENCE. * SKP * FUNCTIONS AVAILABLE: (XX = L.U.) *--------------------------------------------------- * * ICODE ICNWD NAME DESCRIPTION REJECT * ----- ----- ---- ----------- ------ * 3 37XX INIT- SET FLAGS. LINK ALREADY * IALIZE LIBRARY AND SYSTEM INITIALIZED * RESIDENT POTIONS * OF DRIVER. SET UP * I/O INSTRUCTIONS. * * 3 36XX DIS- PUT I/O BOARD 1. DRIVER NOT * CONNECT ON-HOOK. INITIALIZED * 2. SECURITY * CODE ERASED * * 3 35XX CONTROL CAUSES L.U. TO 1. DRIVER NOT * TO BECOME A SENDER INITIALIZED * SEND AND REMOTE TO 2. SECURITY * BECOME RECEIVER. CODE ERASED * 3. TRML NOT IN * CONTROL * MODE. * * 3 34XX HAND- CONNECT WITH 1. DRIVER NOT * SHAKE REMOTE. TRML INITIALIZED * BECOMES SENDER. 2. SECURITY * CODE ERASED * 3. ALREADY "ON * LINE". * * 3 33XX AUTO- CONNECT WITH 1. DRIVER NOT * ANSWER REMOTE. TRML INITIALIZED * BECOME RECEIVER.2. SECURITY * VIOLATION. * * 3 32XX SEND SEND END-OF- 1. SECURITY * END- TRANSMISSION CODE ERASED * OF-FILE CHARACTER TO 2. DRIVER NOT * REMOTE. CHANGE INITIALIZED * STATE TO RCV 3. TERMINAL IN * IF REMOTE SENDS RCV MODE. * "ENQ". * * 3 31XX CONTROL ANSWER PHONE 1. DRIVER NOT * TO FOR LONG INITIALIZED * RECEIVE TIMEOUT AND 2. SECURITY * BECOME VIOLATION. * RECEIVER 3. TRML NOT IN * CONTROL MODE * * 3 00XX CLEAR DROP LINE & * CLEAN DRIVER * * 3 30XX EXTENDED STATISTICS RETURNED IN REG-B. * * 1 33XX READ SEND ACK0 OR ACK1 1. SECURITY * TO PREVIOUS MESSAGE CODE ERASED * AND READ FROM LINE.2. DRIVER NOT * 1 34XX READ SEND NAK TO LAST INITIALIZED * MESSAGE AND READ 3. TERMINAL * FROM THE LINE. OFF LINE. * 1 35XX READ REPLY ACK0 TO 4. TERMINAL IN * CONVERSATIONAL READ SEND STATE. * AND READ FROM 5. LONG OR RECV * LINE. TIMEOUT * OR 8 * 1 36XX READ SEND RVI IN RESPONSE TRIES * TO LAST MESSAGE AND FAILED AND * READ FROM THE LINE. LINE PUT * DOWN. * 1 37XX WRITE SEND DATA TO 6. 'DLE EOT' * CONVERSA- REMOTE AS RECEIVED * TIONAL ACKNOWLEDGEMENT AND LINE * OF LAST MESSAGE DROPPED. * AND READ FROM * LINE INTO THE * SAME BUFFER. * * 2 37XX WRITE SEND DATA TO 1. SECURITY * REMOTE AND GET CODE ERASED * ACK. START TTD 2. DRIVER NOT * AND RETURN TO INITIALIZED * USER. 3. TERMINAL * OFF LINE. * 4. TERMINAL IN * RECEIVE * STATE. * 5. REMOTE DOES * NOT ACKNOW- * LEDGE; LINE * DROPPED. * 6. 'DLE EOT' * RECEIVED; * LINE * DROPPED. * * 13 XX STATUS DRIVER IS NOT * ENTERED FOR THIS * REQUEST. SYSTEM * PUTS EQT5 IN A * REGISTER AND * CONTROL RETURNS * TO USER. *--------------------------------------------------- * * THE DRIVER NEVER CAUSES THE USER PROGRAM TO BE * ABORTED BECAUSE I.50 ONLY RETURNS A=0, 2 OR 4. * C.50 RETURNS A=0 OR 1. ON RETURN TO USER FROM I.50, B=0 * MEANS THAT THE REQUEST WAS NOT INITIATED. *--------------------------------------------------- * SKP * DVR50/#BSC STATUS-BIT DEFINITIONS: * --------------------------------- * * EQT5 ( RETURNED IN FOR ALL REQUESTS ): * * BIT# MEANING * ---- ---------------------- * 0 0 = REQUEST SERVICED W/O ERROR 1 = IRRECOVERABLE LINE ERROR. * 1 0 = TERMINAL OFF LINE 1 = TERMINAL ON LINE. * 2 0 = * 1 = TRANSMIT MODE. * 3 0 = * 1 = RECEIVE MODE. * 4 0 = [ DON'T CARE ] 1 = 'RVI' RECEIVED. * 5 0 = [ DON'T CARE ] 1 = BUFFER OVERFLOW. * * * BITS #2&3 =0, AND BIT #1 =1 IMPLIES: CONTROL MODE. * * EQT12 ( RETURNED IN FOR EXTENDED STATUS REQUEST ): * * BIT# MEANING WHEN EQUAL TO 1 * ---- ----------------------- * 0 SECURITY CODE VIOLATION. * [ RJE: 20 ] * 1 PASSWORD VIOLATION. * [ RJE: 21 ] * 2 ILLEGAL MODE FOR REQUEST ISSUED TO DRIVER. * [ RJE: 22 ] * 3 ILLEGAL BUFFER FORMAT SPECIFIED. * [ RJE: 23 ] * 4 ILLEGAL BISYNC SEQUENCE RECEIVED REPEATEDLY (7 TIMES). * [ RJE: 24 ] * 5 LOSS OF 'CLEAR-TO-SEND' FROM MODEM. * [ RJE: 25 ] * 6 RECEIVED BUFFER 'NAK'ED' 7 TIMES. * [ RJE: 26 ] * 7 XMITTED BUFFER 'NAK'ED' BY REMOTE 7 TIMES. * [ RJE: 27 ] * 8 RECEIVE TIMEOUT OCCURRED REPEATEDLY (7 TIMES). * [ RJE: 30 ] * 9 LONG TIMEOUT FAILURE. * [ RJE: 31 ] * 10 DISCONNECT (DLE-EOT) SENT TO REMOTE & LINE DROPPED. * [ RJE: 32 ] * 11 DISCONNECT (DLE-EOT) RECEIVED FROM REMOTE & LINE DROPPED. * [ RJE: 33 ] * 12 LOSS OF 'DATA-SET-READY' FROM MODEM. * [ RJE: 34 ] * 13 LOSS OF 'CARRIER-DETECT' FROM MODEM, DURING RECEIVE MODE. * [ RJE: 35 ] * 14 'TTD' OR 'WACK' LIMIT EXCEEDED. * [ RJE: 36 ] * 15 CONTROL-TIMEOUT FAILURE - LINE IN 'CONTROL-MODE' AND USER * FAILED TO MAKE A REQUEST BEFORE EXPIRATION OF 'LONG TIMEOUT. * THE LINE IS DISCONNECTED, FOLLOWING A 'CONTROL-TIMEOUT. * [ RJE: 37 ] * SKP * INITIATION SECTION * I.50 NOP STA SCODE SAVE SELECT CODE OF RCV BOARD LDA EQT6,I AND M3777 CPA M3 CLEAR REQUEST ? JMP RSET YES. CLEAN DRIVER & DROP LINE. CPA M3003 EXTENDED STATUS REQUEST ? JMP STATR YES. RETURN EXTENDED STATUS. LDB EQT15,I GET CLOCK VALUE SZB,RSS IS CLOCK ACTIVE ? JMP ICHK NO. CHECK FOR INITIALIZE CALL. CPA M3703 IS IT INITIALIZE AGAIN. JMP MVIOL YES, RECORD MODE VIOLATION. * * CHECK SECURITY CODE BEFORE ALLOWING ENTRY INTO LIBRARY SECTION. * SURCH LDA SPTR,I GET SECURITY WORD FROM LIBRARY DVR CPA SECD IS SECURITY VIOLATED ? JMP IENTR NO, THEN ENTER #I.50 JSB SVIOL YES, RECORD SECURITY VIOLATION. REJ2 LDA P2 INDICATE: CLB ERROR RETURN! JMP I.50,I RETURN * * THIS SECTION IS ENTERED WHEN EQT15=0. IN THAT CASE * IT MUST EITHER BE AN INITIALIZATION CALL OR HAND- * SHAKE/AUTO-ANSWER CALL. IF HAND-SHAKE OR AUTO- * ANSWER THEN PASSWORD AND SECURITY CODE MUST BE VALID. * ICHK CPA M3703 IS IT INITIALIZE CALL ? JMP SETUP YES. SET UP INITIALIZATION. CPA M3403 HAND-SHAKE ? JMP SURCH YES, CHECK SECURITY CODE. CPA M3303 AUTO-ANSWER ? JMP SURCH YES, CHECK SECURITY CODE. * MVIOL LDB P4 JSB SET RECORD MODE VIOLATION IN BIT 2 JMP REJ2 REJECT REQUEST. * SVIOL NOP CLB,INB RECORD SECURITY VIOLATION JSB SET IN BIT 0 . JMP SVIOL,I REJECT REQUEST. * SET NOP LDA EQT12,I SET APPROPRIATE ERROR IOR B BIT IN EXTENDED STATUS WORD STA EQT12,I CLB,INB LDA EQT5,I ALSO SET 'OPERATION IN IOR B ERROR' BIT IN STANDARD STA EQT5,I STATUS WORD. JMP SET,I RETURN * RSET JSB CLC$ INHIBIT INTERRUPTS STB FLG CLEAR REQUEST-IN-PROGRESS FLAG. JSB OFBRD TURN OFF MODEM JMP IMCMP GO FOR IMMEDIATE COMPLETION * * IENTR CLA STA FLG LDA TIMAD PASS #TIME ADDRESS FOR INITIALIZATION. JSB #I.50,I * SZA,RSS REQUEST INITIATED ? ISZ FLG YES, SET FLAG JMP I.50,I RETURN. * * RESOLVE REG-A POINTER * APTR NOP APTR1 SSA,RSS INDIRECT ADDRESS ? JMP APTR,I NO, THEN RETURN. ELA,CLE,ERA CLEAR BIT15 LDA A,I GET NEXT ADDRESS LINK JMP APTR1 RESOLVE INDIRECT AGAIN * * RETURN EXTENDED STATISTICS IN REG-B * STATR CCA OFFSET SYSTEM EQT15 POINTER TO ADA EQT15 PREVENT RESETTING OF CURRENT STA EQT15 CLOCK VALUE. LDB EQT12,I GET EXTENDED STATUS FROM EQT12 IMCMP LDA P4 INDICATE IMMEDIATE COMPLETION JMP I.50,I RETURN TO THE CALLER. * SKP * THIS IS THE INITIALIZATION SET-UP ROUTINE. IT * ESTABLISHES #I.50, #C.50 AND #P.50 LINKS WITH * THE LIBRARY RESIDENT DRIVER. A POINTER TO A * SECURITY CODE (LOCATED IN #BSC) IS ESTABLISHED. * SOME EQT POINTERS ARE SET UP AND "CLC" & "OTA" * INSTRUCTIONS ARE CONFIGURED. * SETUP LDA EQT7,I GET ADDR OF "IPRM" FROM CALL JSB APTR LDB A,I STB EQT7,I SET ASC/EBCDIC & CRC/LRC FLAG INA BUMP POINTER LDB A,I GET MAP SWITCHING PARAMETER. INA POINT TO NEXT PARAMETER. SZB IF MAP SWITCHING IS NOT NEEDED (B#0), JMP CKPRV LEAVE BYPASS INSTRUCTIONS INTACT; STB MAP1 ELSE, STB MAP2 CLEAR ALL OF THE STB MAP3 BYPASS INSTRUCTIONS, STB MAP4 IN ORDER TO ENABLE STB MAP5 MAP SWITCHING FOR RTE-III. JMP *+3 CONTINUE THE PROCESS. CKPRV INB,SZB IF =-1, ENABLE DMS STATUS-ONLY; JMP GTAD ELSE, IGNORE ALL DMS INSTRUCTIONS! STB MAP6 ALLOW P.50 TO SAVE DMS STATUS, ON ENTRY. STB MAP7 ALLOW P.50 TO RESET DMS STATUS, ON EXIT. GTAD LDB A,I GET THE TIMEOUT-ARRAY ADDRESS STB TIMAD AND SAVE FOR #BSC INITIALIZATION. INA ADVANCE POINTER TO #BSC ADDRESS. LDA 0,I GET THE ADDRESS OF #BSC JSB APTR LDB 0 STB SPTR SET POINTER TOWARDS SECURITY LOC INB BUMP TO NEXT ADDRESS LDA B,I SET JSB APTR STA #I.50 POINTERS INB TO LDA B,I #I.50 JSB APTR STA #C.50 #C.50 INB AND LDA B,I #P.50 JSB APTR STA #P.50 IN THE LIB DVR. * MAP1 JMP FCLC BYPASS MAP SWITCH (NOP: SWITCH) LDA BUF1A USA GET USER MAP FOR RJE/#BSC * FCLC LDA CLC CONFIGURE IOR SCODE CLC XX,C STA CLC1 FOR RECEIVE INA AND STA CLC2 TRANSMIT BOARDS. LDA OTA CONFIGURE "OTA XX" INSTRUCTIONS IOR SCODE STA OTA1 STA OTSYN INA BUMP TO XMIT CHANNEL STA OTA2 LDA EQT1,I GET ADDRESS OF WORD #16 ADA P15 OF CALLING PROGRAM'S ID SEGMENT STA STPNT WHICH HAS STATUS OF PROGRAM. LDA EQT15 SET STA EQP15 EQT15 POINTER JMP SURCH GO FOR #I.50 ENTRY * SKP * * ** TIME-OUT / COMPLETION SECTION ** * * THIS ROUTINE IS ENTERED ON A 'TIME-OUT' (DVR50 SETS BIT#12 OF EQT4 TO * TELL RTE THAT IT IS HANDLING IT'S OWN TIMEOUT). COMPLETION IS INDICATED * BY A (P+1) RETURN FROM THIS SECTION TO RTIOC. * BEFORE JUMPING TO THE LIBRARY RESIDENT #C.50, SECURITY CODE IS CHECKED. * IF VIOLATED, AND A REQUEST WAS IN PROGRESS, THEN RETURN TO RTIOC WITH * =1 (MALFUNCTION). IF NO REQUEST, $UPIO (IN RTIOC) HANDLES THE EXIT. * #C.50 MAKES A P+1 RETURN TO DVR50, IF NO REQUEST WAS IN PROGRESS * ($IOUP IN RTIOC HANDLES THE DRIVER'S EXIT); #C.50 MAKES A (P+2) RETURN * TO DVR50, IF A REQUEST WAS COMPLETED (RETURN TO RTIOC IS VIA C.50); * #C.50 RETURNS TO DVR50 AT (P+3) FOR REQUEST COMPLETION (RETURN TO * RTIOC IS VIA (C.50+1). * C.50 NOP TIMAD EQU C.50 TEMPORARY STORAGE: INITIALIZATION. CLF 0 TURN OFF INTERRUPT SYSTEM LDA EQT4,I AND MTBIT CLEAR TIME-OUT BIT STA EQT4,I LDA EQT15,I GET CLOCK VALUE SZA IS EQT15=0 ? JMP CEXIT NO, ILLEGAL INTERRUPT, DO P+2 RETURN * MAP2 JMP CLRTO BYPASS DMS STATUS (NOP: SAVE STATUS) RSB STB TOSTS SAVE DMS STATUS BLF,SLB JMP CLRTO ALREADY IN USER MAP, JUMP * * UNDER SYSTEM MAP, GET RJE USER MAP LDB BUF3A USB SAVE CURRENT USER MAP CONTENTS LDB BUF1B USB SET RJE MAP UJP *+2 NOW RUNNING UNDER RJE MAP * CLRTO JSB CLC$ PROHIBIT INTERRUPT ON BOARDS STF 0 TURN ON INTERRUPT SYSTEM CPA ABTFG TEST ABORT FLAG SET BY P.50 JSB EXIST NO ABORT, CHECK SEC CODE & DORMANCY JMP VIOLA * JSB #C.50,I CALL #BSC TIMEOUT SECTION JMP IOUP REQUEST NOT BEING PROCESSED JMP CP1 RETURN VIA C.50: REQUEST COMPLETED. ISZ C.50 RETURN VIA C.50+1: REQUEST CONTINUATION. STB SAVB TSMAP JSB MAPIT DO POSSIBLE MAP RESTORE LDB SAVB JMP C.50,I RETURN * SKP * * SUBROUTINE TO RESTORE ORIGINAL MAP STATUS * MAPIT NOP MAP3 JMP MAPIT,I RETURN IMMEDIATELY (NOP: PROCESS MAPS) LDB TOSTS BLF,SLB JMP MAPIT,I JUMP IF DVR50 DIDN'T SWITCH USER MAP CLF 0 SJP *+2 ENABLE SYSTEM MAP LDB BUF3B USB RESTORE ORIGINAL USER MAP STF 0 JMP MAPIT,I * * CEXIT ISZ C.50 P+2 RETURN STF 0 JMP C.50,I * VIOLA JSB SVIOL RECORD SECURITY VIOLATION JSB OFBRD TURN OFF BOARDS CLA,INA EXIT IN PROPER DIRECTION. LDB FLG GET DIRECTION FLAG SZB REQUEST BEING PROCESSED JMP C.50,I YES. RETURN WITH A=1 AND B=1 JMP $IOUP+1 EXIT VIA $UPIO [$IOUP+1=$UPIO: RTE-C]. * CP1 STB SAVB SAVE REG-B TEMPORARILY CLB NO REQUEST BEING SERVICED SO STB FLG CLEAR THE FLAG WORD. JMP TSMAP * IOUP JSB MAPIT RESTORE MAP IF SWITCHED JMP $IOUP 'UP' THE DEVICE & AWAIT NEXT REQUEST. * * SAVB NOP B-REGISTER TEMPORARY STORAGE. TOSTS NOP DMS STATUS TEMPORARY STORAGE. * SKP * * DISABLE I/O BOARDS * CLC$ NOP CLC1 NOP DISABLE RECEIVE INTERRUPTS. CLC2 NOP DISABLE TRANSMIT INTERRUPTS. JMP CLC$,I * * DISABLE MODEM * OFBRD NOP LDA OFCOD GET CONTROL WORD TO OFF BOARDS OTA1 NOP OUTPUT ON RECEIVE BOARD OTA2 NOP OUTPUT ON TRANSMIT BOARD LDA CLMSK GET MASK=OCT177400 AND EQT5,I CLEAR STANDARD STATUS STA EQT5,I SET UP NEW STATUS CLB STB ABTFG CLEAR ABORT FLAG STB SPTR CLEAR SECURITY CODE POINTER STB EQT15,I PREVENT TIME-OUT ENTRY JMP OFBRD,I RETURN * * CHECK IF SECURITY CODE IS INTACT AND CALLING * PROGRAM IS NOT DORMANT. IF SO, RETURN (P+1) * AND IF NO VIOLATION THEN (P+2). * EXIST NOP LDA SPTR,I GET SEC CODE FROM LIBRARY DVR CPA SECD SECURITY VIOLATED ? JMP *+2 NO JMP EXIST,I YES, RETURN (P+1). LDA STPNT,I GET STATUS WORD OF PROGRAM AND P15 MASK IN STATUS SZA BUMP RETURN IF ISZ EXIST PROGRAM NOT DORMANT. JMP EXIST,I RETURN * * SKP * ** PRIVILEDGED ROUTINE ** * * AN I/O INTERRUPT CAUSES ENTRY HERE. BEFORE ENTRY * INTO #P.50 , THIS ROUTINE CHECKS THE SECURITY * CODE. IF VIOLATED (LIB DVR ABSENT) THEN A 10 MSEC * INTERRUPT TO C.50 IS SET, WHICH WILL CAUSE A PROPER * EXIT FROM THE DRIVER, AFTER RESETTING ITSELF (DEVICE WILL BE SET 'DOWN'). * P.50 NOP PRIVILEGED INTERRUPT ENTRY/EXIT CLF 0 TURN OF ALL INTERRUPTS IMMEDIATELY! MAP6 JMP CLDMA BYPASS DMS STATUS (NOP: SAVE IT) SSM SAVST SAVE DMS STATUS CLDMA CLC 6 TURN OFF CLC 7 DMA INTERRUPTS STA ASV S STB BSV A ERA,ALS V SOC E INA STA EOSV REGISTERS LDA MPTFL SAVE MEMORY STA MPFSV PROTECT FLAG CLA,INA TURN OFF STA MPTFL MEMORY PROTECT FLAG * LDA SYNCM GET THE SYNC-HUNT COMMAND (OR 0). SZA,RSS IF SYNC ALREADY OBTAINED, JMP MAP4 NO NEED TO SUPPLY A NEW REFERENCE; LIB 4 ELSE, GET THE LAST INTERRUPT S.C. CPB SCODE IF LAST INTERRUPT WAS FROM RECV., OTSYN OTA 0 THEN SEND IT A NEW SYNC-REFERENCE. * * SWITCH USER MAPS--IF NECESSARY. * MAP4 JMP INTON BYPASS MAP SWITCH (NOP: SWITCH) LDA BUF2A USA SAVE CURRENT USER MAP * LDA BUF1B USA LOAD RJE/#BSC MAP * UJP INTON ENABLE USER MAP. INTON STF 0 ENABLE INTERRUPTS. JSB EXIST CHECK SECURITY CODE. CCA,RSS VIOLATION OCCURRED JMP PENTR ENTER #P.50 * * SECURITY VIOLATION * JSB CLC$ CLC XX,C ON I/O BOARDS STA ABTFG SET ABORT FLAG FOR C.50 STA EQT15,I SET 10 MSEC ENTRY AT C.50 CLA CLEAR SYNC-HUNT COMMAND. JMP PEXIT SKP * PENTR JSB #P.50,I GO TO #BSC INTERRUPT SECTION * PEXIT CLF 0 STA SYNCM SAVE SYNC-REFERENCE CMD. OR ZERO. MAP5 JMP MPT? BYPASS MAP SWITCH (NOP: SWITCH) SJP *+2 NOW UNDER SYSTEM MAP LDA BUF2B USA RESTORE USER MAP * MPT? LDA MPFSV SZA WAS MEMORY PROTECT ON ? JMP E&O NO, FORGET DMA'S LDB INTBA TURN LDA B,I DMA'S SSA BACK STC 6 ON INB IF LDA B,I THEY SSA WERE STC 7 ON. * E&O LDA EOSV RESTORE CLO E SLA,ELA O STO AND LDB BSV B REGISTERS LDA MPFSV RESTORE MEMORY STA MPTFL PROTECT FLAG IN THE SYSTEM MAP7 JMP NODMS FOR DMS, A NOP IS PLACED HERE DURING INIT SZA MEMORY PROTECT ON ? JMP NOSTC NO LDA ASV YES, RESTORE A STF 0 TURN ON INTERRUPTS STC 5 SET MEMORY PROTECT JRS SAVST P.50,I * NOSTC LDA ASV RESTORE A STF 0 TURN ON INTERRUPTS JRS SAVST P.50,I * NODMS SZA JMP NOST1 LDA ASV STF 0 STC 5 JMP P.50,I * NOST1 LDA ASV STF 0 JMP P.50,I * * * SKP * *** DATA / CONSTANTS *** * A EQU 0 B EQU 1 EQT1 EQU 1660B EQT4 EQU 1663B EQT5 EQU 1664B EQT6 EQU 1665B EQT7 EQU 1666B EQT12 EQU 1771B EQT15 EQU 1774B MPTFL EQU 1770B INTBA EQU 1654B EOSV NOP ASV NOP BSV NOP SCODE NOP SYNCM NOP SYNC-HUNT REFERENCE--OR ZERO. STPNT NOP ABTFG NOP SAVST NOP MPFSV NOP EQP15 NOP #I.50 NOP #C.50 NOP #P.50 NOP SPTR NOP FLG NOP CLC CLC 0,C OTA OTA 0 P2 DEC 2 P4 DEC 4 P15 DEC 15 OFCOD OCT 140000 SECD OCT 150003 MTBIT OCT 173777 M3 OCT 3 M3777 OCT 3777 M3703 OCT 3703 M3403 OCT 3403 M3303 OCT 3303 M3003 OCT 3003 CLMSK OCT 177400 MASK OFF LOW 8 BITS BUF1A DEF BUF1,I BUF1B DEF BUF1 BUF2A DEF BUF2,I BUF2B DEF BUF2 BUF3A DEF BUF3,I BUF3B DEF BUF3 * BUF1 BSS 32 MAP FOR RJE/#BSC BUF2 BSS 32 MAP FOR INTERRUPTED USER AREA BUF3 BSS 32 USER-AREA MAP (SAVED ON TIMEOUT ENTRY) * BSS 0 **** SIZE OF DVR50 **** END