ASMB,Q,C,Z,R ***RTE 264X MODEM TERMINAL DRIVER*** * NAME: DVA05 * SOURCE: HP 2640 \2645 RTE DVA05 92001-18035 * RELOC.: HP 26Xx RTE DVA05 92001-16035 * * PRMR: B.B. * * SOURCE FILE &DVA05 * RELOC. FILE %DVA05 * ***************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * REPRODUCED OR TRANSALATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ***************************************************************** * ****DVA05 WILL WORK WITH 2640A,B\2644\2645\2648 * * *2.1 INPUT/OUTPUT INTERFACE * * DVA 05 WILL COMMUNICATE WITH THE 26XX VIA THE 12966 BUFFERED * ASYNCHRONOUS DATA COMMUNICATION INTERFACE CARD. DVA 05 WILL ALSO * FUNCTION WITH A 2640A FOR THOSE APPLICATIONS WHERE THE CTU IS * NOT REQUIRED. COMMUNICATION FROM THE 2644A/2640A KEYBOARD MAY BE * IN EITHER CHARACTER OR BLOCK MODE. THE TERMINAL CAN BE USED WITH * "LINE STRAPPING", OR "PAGE STRAPPING" AND HENCE A SINGLE LINE OR * THE ENTIRE DISPLAY MEMORY CAN BE TRANSMITTED AFTER BEING ENABLED. * * *2.2 MAJOR FUNCTIONS * * DVA 05 PROVIDES THE FOLLOWING MAJOR FUNCTIONS: * 1. I/O CONTROL OF CARTRIDGE TAPE UNIT (CTU),CRT,AND TERMINAL PRINTER. * 2. READ OR WRITE REQUEST TO CTU WITH BINARY OR ASCII DATA. * 3. READ OR WRITE REQUEST TO KEYBOARD AND DISPLAY. * 4. STATUS REQUEST TO CTU AND KEYBOARD. * 5. CONSOLE OR TERMINAL USE. * 6. WRITE REQUEST TO TERMINAL PRINTER (2644 2645 ONLY) * 7. MODEM INITIALIZATION * * *2.2.1 CTU CONTROL REQUEST * *ICNWD (CONTROL LEFT OR RIGHT CTU AS SELECTED BY LOGICAL UNIT NUMBER) * 01-WRITE END OF FILE * 02-BACKSPACE 1 RECORD * 03-FORWARD SPACE 1 RECORD * 06-DYNAMIC STATUS * 14-BACKSPACE 1 FILE * 13-FORWARD SPACE 1 FILE * 4,5-REWIND * 27-LOCATE FILE. THIS IS AN ABSOLUTE FILE NUMBER. * 26-WRITE END OF VALID DATA (EOV) * 10-WRITE EOF IF NOT JUST WRITTEN OR NOT AT BOT * * *NOTES ON CTU CONTROL REQUEST * * A. A REWIND, BACKSPACE RECORD, OR BACKSPACE FILE WILL PERFORM * NO ACTION IF THE TAPE UNIT IS AT LOAD POINT. THIS CONDITION * WILL BE SET IN THE STATUS WORD (BIT 6 SET). * B. IF THE END-OF-TAPE MARK IS SENSED DURING A WRITE OPERATION, * AN END OF VALID DATA MARK WILL BE RECORDED AUTOMATICALLY. IF * A WRITE REQUEST WAS BEING PROCESSED, THE CURRENT RECORD WILL * BE RECORDED. IF A READ REQUEST WAS IN PROCESS THE CURRENT * RECORD WILL BE READ. THIS CONDITION WILL BE SET IN THE STATUS * WORD. * C. FOR FILE MOTION COMMANDS THE TAPE IS POSITIONED AFTER THE * FILE MARK. * D. READ REQUESTS WILL BE REJECTED IF THE TAPE IS AT EOV. THE * EOV MAY BE OVERWRITTEN WITH DATA OR A FILE MARK UNLESS THE * TAPE IS AT END-OF-TAPE. * E. AN INVALID FUNCTION CODE WILL CAUSE THE DRIVER TO EXIT WITH * A REG.=2 THRU IA05. IF THE FUNCTION CODE IS VALID, EXIT IS * THRU CA05 WITH A REG.=0. * * F. DYNAMIC STATUS PUTS THE STATUS OF THE LAST LEFT OR RIGHT * CTU OPERATION IN EQT 5. * * *2.2.2 CRT CONTROL REQUEST * *ICNWD * 11-SPACE "IPRM" LINES -IPRM PG. EJECT 9871 ONLY * 20-ENABLE TERMINAL. ALLOWS TERMINAL TO SCHEDULE PROGRAM WHEN KEY IS * STRUCK. * 21-DISABLE TERMINAL. INHIBIT SCHEDULING OF TERMINAL'S PROGRAM. * 22-SET NEW TIME OUT (IN OPTIONAL PARAMETER) * 23-CLEAR THE OUTPUT QUEUE (BUFFER FLUSH). * 24-RESTORE OUTPUT PROCESSING. REQUIRED ONLY IF SOME OF BUFFER IS * TO BE SAVED. * 25-UPDATE TERMINAL STATUS * 30-TERMINAL MODEM CONTROL * 31-LINE CONTROL FOR MODEMS * 32-AUTOANSWER FOR MODEMS *2.2.3 CTU READ/WRITE REQUEST * * -READ/WRITE FROM LEFT OR RIGHT CTU AS SELECTED BY LOGICAL UNIT * NUMBER. * -IF THE OPERATION FAILED, RETURN WILL BE THROUGH CA05 WITH A=1 * AND B=O. *ICNWD * * 6 -0/1 IS ASCII/BINARY * 10-0/1 IS NOT HONEST/HONEST * * -BINARY INPUT IS A STRING OF CHARACTERS SPECIFIED BY THE BUFFER * LENGTH PARAMETER IN THE REQUEST. IF THE REQUIRED LENGTH IS FILLED * BEFORE A END-OF-RECORD (EOR) IS ENCOUNTERED, THE REMAINING DATA * IS IGNORED AND THE CTU WILL STOP AT THE NEXT EOR. IF A EOR IS * ENCOUNTERED BEFORE THE REQUIRED LENGTH IS FILLED THE CTU WILL * HALT IN THE EOR. BINARY EOR IS DETECTED BY THE REQUEST TO SEND * LINE MOMENTARILY GOING NOT READY. IF BUFFER LENGTH=0, THEN SKIP * ONE RECORD. * -BINARY OUTPUT IS A STRING OF CHARACTERS SPECIFIED BY THE BUFFER * LENGTH PARAMETER IN THE REQUEST. MAXIMUM RECORD LENGTH IS 128 * WORDS. THIS LIMIT IS SET BY THE CTU DATA BUFFER. IF THIS LENGTH * IS EXCEEDED, OR IF BUFFER LENGTH=0, RETURN IS A REG.=1 THRU IA05. * -ASCII INPUT IS A STRING OF CHARACTERS TERMINATED BY A CARRIAGE * RETURN (CR). IF THE REQUIRED LENGTH IS FULFILLED BEFORE A CR * IS INPUT, THE REMAINING CHARACTERS ARE IGNORED. IN ANY CASE, A * CR CODE MUST BE INPUT. * -ASCII OUTPUT IS A STRING OF CHARACTERS SET BY THE BUFFER LENGTH. * MAXIMUM RECORD LENGTH IS 127 WORDS (CR IS SENT BY DVA 05). THE * DRIVER WILL TERMINATE THE REQUEST IF IT SEES A "CR", "LF" OR "RS". * THE DRIVER USES THE "CR" AS A RECORD TERMINATOR ON INPUT * AND THE 26XX USES THE "LF" AS RECORD TERMINATOR ON OUTPUT.A "RS" * IS PASSED TO THE DRIVER WHEN THE CTU ENCOUNTERS A FILE GAP. * * *2.2.4 ASCII OUT TO DISPLAY * * -ASCII OUTPUT IS A STRING OF CHARACTERS, THE NUMBER OF WHICH IS * DESIGNATED BY THE BUFFER LENGTH. THE STRING IS TERMINATED BY A * CARRIAGE RETURN AND LINE FEED (BOTH SUPPLIED BY DRIVER). * -IF AN UNDERSCORE (ASCII 137) IS THE LAST CHARACTER IN THE NEW * BUFFER, THE CARRIAGE RETURN, LINE FEED AND UNDERSCORE CODES ARE * NOT OUTPUT TO THE CRT. * -BUFFER LENGTH SHOULD BE LIMITED TO 80 DISPLAYABLE CHARACTERS. * -THE CURSOR WILL REMAIN IN COLUMN 80 IF CURSOR END-OF-LINE WRAP * AROUND STRAP IS NOT IN. OTHERWISE AN AUTOMATIC CR LF ARE GENERATED. * -HONEST MODE WRITE THE CR AND LF ARE NOT OUTPUT. AN UNDERSCORE * WILL ALWAY BE OUTPUT TO DISPLAY IF IN BUFFER. * * -BINARY WILL STRIP "ESC" * *2.2.5 ASCII INPUT FROM KEYBOARD CHARACTER MODE * * THE DRIVER DETECTS WHETHER A CHARACTER MODE OR BLOCK MODE REQUEST * WILL FOLLOW BY EXAMINING THE FIRST CHARACTER. IF IT IS A DC2 * THEN THE DRIVER ASSUMES THE ENTER KEY HAS BEEN PRESSED AND A * BLOCK TRANSMISSION IS PENDING. THE DRIVER RESPONDS WITH A DC1 TO * TRIGGER THE BLOCK TRANSFERS. IF THE FIRST CHARACTER IS NOT A DC1 * THEN THE DRIVER ASSUMES A CHARACTER TRANSFER IS PENDING. * IN CHARACTER MODE THE TERMINAL TRANSMITS A CHARACTER AT A TIME AS * THE KEY IS DEPRESSED. THE RECORD TERMINATION IS A CR OR RS. THE * DRIVER ECHOS A LF. * A RECORD TERMINATOR MUST BE ENTERED TO COMPLETE REQUEST, EVEN IF THE * USERS BUFFER IS FULL. TRANSMISSION LOG IS RETURNED IN B REG. * THERE ARE TWO TYPES OF CHARACTER MODE PROCESSING: HONEST AND NON-HONEST * A. HONEST * ALL CHARACTERS EXCEPT CR AND RS SENT TO USERS BUFFER. * B. NON-HONEST * THE DRIVER WILL PROCESS THE BELOW SPECIAL CHARACTERS: * *DEL (RUBOUT) ASCII 177 * ENTERING DEL WILL DELETE THE CURRENT RECORD AND CAUSE (\, * CRLF)TO BE OUTPUT. THIS IS USED TO DELETE THE CURRENT LINE * AND START A NEW LINE. * *BACKSPACE ASCII 10 * ENTERING BACKSPACE WILL DELETE THE LAST CHARACTER. THE * TERMINAL WILL LOCALLY MOVE THE CURSOR BACK ONE POSITION. * *LINEFEED ASCII 12 * THIS WILL NOT BE SENT TO USER'S BUFFER. * * CNTROL D ASCII 40 * ENTERING CONTROL D WILL CAUSE BIT 5 TO BE SET IN TERMINAL * STATUS WORD AND TRANSMISSION TERMINATED WITH B REG. = 0. THIS * BIT WILL BE CLEARED UPON NEXT ENTRY. * * *2.2.6 ASCII INPUT FROM KEYBOARD BLOCK MODE * * IN BLOCK MODE THE TERMINAL TRANSMITS EITHER A LINE AT A TIME (LINE * STRAPPING) ON A PAGE (PAGE STRAPPING). THE DRIVER DETERMINES TYPE * OF STRAPPING BY A TERMINAL STATUS REQUEST. * A. LINE STRAPPING * THE TERMINATOR IS A CR WHICH IS NOT PASSED TO USER'S * BUFFER. IMBEDDED RS'S ARE NOT PASSED. * B. PAGE STRAPPING * THE TERMINATOR IS A RS WHICH IS NOT PASSED TO USER'S BUFFER. THE * LINE SEPARATORS CR, LF ARE PASSED TO USER'S BUFFER. * C. A "US"OR "RS" IS NEVER PASSED TO BUFFER UNLESS TRANS. READ * D. BLOCK READS ARE OF 2 TYPES: * 1. TERMINAL ENABLED (ENTER PRESSED) * 2. USER ENABLED ("ESC" SMALL "D" SENT BY USER) * * *2.2.7 CTU STATUS REQUEST (RETURNED IN EQT5) * * BIT * 7 -END OF FILE SENSED. A FILE MARK HAS BEEN DETECTED DURING A PRIOR * READ OPERATION OR A FILE MARK HAS JUST BEEN RECORDED. * 6 -LOAD POINT SENSED. CARTRIDGE TAPE IS AT OR BEFORE LOAD * POINT MARKER. MEANINFUL ONLY IF CARTRIDGE IS INSERTED. * 5 -END OF TAPE SENSED. THE CARTRIDGE TAPE HAS PASED OVER EARLY * WARNING MARKER IN THE TAPE AND AN END-OF-VALID DATA MARK HAS BEEN * RECORDED AUTOMATICALLY. COMMANDS DIRECTING FORWARD MOTION OF TAPE * WILL BE REJECTED. THIS STATUS ONLY HAS MEANING IF A CARTRIDGE IS * INSERTED. * 4 -READ\WRITE ERROR.WRITE 2645 ONLY * A READ ERROR EXISTS IF THREE SUCCESSIVE ATTEMPTS FAILED TO READ * THE DATA IN THE RECORD. THE TAPE IS POSITIONED AFTER THE BAD * RECORD. * 3 -LAST COMMAND ABORTED. THE LAST COMMAND INITIATED FROM THE CPU OR * KEYBOARD WAS UNSUCCESSFULLY PERFORMED. OTHER STATUS CONDITIONS * MAY BE CHECKED FOR CAUSE. * 2 -WRITE PROTECTED. THE FILE PROTECT TAB ON THE CARTRIDGE IS IN THE * POSITION TO PROHIBIT RECORDING OF DATA. THIS STATUS ONLY HAS * MEANING IF A CARTRIDGE IS INSERTED AND A RECORDING OPERATION HAS * BEEN ATTEMPTED. * 1 -END OF VALID DATA. THE CARTRIDGE TAPE DETECTED AN END-OF-VALID * DATA MARK DURING A PRIOR READ OR SEARCH OPERATION OR HAS JUST * COMPLETED RECORDING AN END-OF VALID DATA MARK. IN EITHER CASE, * THE TAPE IS POSITIONED BEFORE THE END-OF VALID DATA MARK. RECORDING * OPERATIONS MAY BE EXECUTED TO OVERWRITE THIS MARK WITH DATA * OR A FILE MARK, UNLESS THE TAPE IS AT END OF TAPE. * 0 -CARTRIDGE NOT INSERTED OR UNIT BUSY. * * *2.2.8 CRT STATUS REQUEST (RETURNED IN EQT5) * * BIT * 1 -TERMINAL ENABLED. IF THE STATUS WORD IS FOR A TERMINAL (NOT A * SYSTEM CONSOLE) TYPING ANY KEY WILL SCHEDULE THE TERMINAL'S * PROGRAM (IF IT HAS ONE). * 5 -CONTROL D ENTERED. THE USER HAS HIT THIS KEY. * 7 -BUFFER FLUSH IN PROGRESS * 3 -PARITY ERROR * 4 -DATA SET N.R. * * * *2.2.9 CONSOLE OR TERMINAL USAGE. * * IF AT GENERATAION THE 26XX IS IDENTIFIED AS A TERMINAL (VIA THE * INTERRUPT TABLE) THEN STRIKING A KEY WILL SCHEDULE THE PROGRAM * ASSOCIATED WITH THAT TERMINAL IF THE TERMINAL HAS BEEN ENABLED * VIA A CONTROL REQUEST. * IF THE 26XX IS A CONSOLE THEN STRIKING A KEY WILL GET THE SYSTEM'S * ATTENTION AND A "*" PROMPT WILL BE WRITTEN. * * REV.1805 FIXED SPURIOUS INT. ON POWER UP * REV.1806 FIXED T BIT KEYBOARD ENTRY * REV. 1913 FIXED INTERMITTENT HANGUP (CLRSB IN HARDWIRE) * THIS (1913) USES EXTENDED COMM. CARD * AND CHANGED WRITE T.O. TO 4 SEC * REV. 2013 FIXED UPDATE OF EQT5 STATUS TO SHOW LINE DOWN (SSB 4488) ****************************************** * SUBROUTINE IS ALWAYS ENTERED TO * * INITIALIZE A SYSTEM OR USER REQUEST TO * * ANY 264X SUBSYSTEM. * ****************************************** * * NAM DVA05,0 92001-16035 REV 2013 800124 ENT IA05,CA05 EXT $LIST,$UPIO,$OPSY IA05 NOP STA TEM12 SAVE SELECT CODE CLB STB TEMP5 SET IA05 CA05 POINTER JSB SETIO CONFIGURE IO CLB DO NOT MOVE STB EQT20,I * ** DVA STB EQT25,I RESET CN31 FLAG LDA EQT28,I CLR PARITY AND DATA SET ERROR BITS AND BN51 IN TERMINAL STATUS STA EQT28,I ** SFS01 SFS CARD IF FLAG SET THEN POWER FAIL JMP IA055 FLAG NOT SET IA054 JSB XMIT SET UP TO CLR INTERRUPT LDA BN5 CLR ALL CARD INTERRUPTS IA053 JSB OUT2 (0-377) CPA BN7 IS THIS ALL? JMP IA055 YES! FINISHED INA JMP IA053 DO IT AGAIN IA055 LDA EQT16,I FOR BINARY CTU READ AND BN1 CLR SELECTED BITS STA EQT16,I BIT 0 (0\1=TERM.STAT. READ NO\YES) * * * LDA EQT17,I GET THE SCHEDULE FLAG. SZA IS IT DEFINED? JMP IA051 YES, CONTINUE LDA TEM12 SET UP SCHEDULE FLAG . ADA B.6 INDEX INTO INTERRUPT TABLE ADA INTBA GET SCHEDULE WORD.IF WORD NEG. LDB A,I THEN ID SEG. OF PROG. TO SCHED. CMB,SSB,INB CHANGE SIGN OF WORD. CCB NO PROG. TO BE SCHED. (INT. POINTS TO EQT) STB EQT17,I SAVE FOR FURTURE REFERENCE. LDB EQT1 SET EQT ADDRESS IN INTERRUPT STB A,I TABLE LDA EQT4,I SET THE "I WILL HANDLE IOR BN4 TIME OUT" BIT IN STA EQT4,I EQT4.RESTORE WORD. JMP IA054 GO CLEAR ALL SPECIAL INTERRUPTS * * ***************************************************** * "B.X" IS NEG. BINARY NO., "D.X" IS NEG. DECIMAL NO* * "BN" IS SOME BINARY NO. * * SEE BELOW. * ***************************************************** * BN1 OCT 137767 BN4 OCT 10000 BN7 OCT 60377 BN5 OCT 60000 * BN51 OCT 177747 DVA05 BN70 OCT 173777 B32 OCT 32 DVA05 B100 OCT 100 B.6 OCT 177772 * * TEM13 NOP CARD STATUS ON INTERRUPT TEM12 NOP SELECT CODE * * IA051 JSB CDINT ************************************************ ************************************************ * * SWH1A NOP SWITCH CRT \CTU ,LP= RSS\NOP * JMP I.251 YES! A CTU OR LP REQUEST LDA TEMP4 GET REQUEST TYPE RAR THIS IS A CRT REQUEST SSA,SLA JMP IA05C THIS IS A CONTROL REQUEST. ** DVA JSB LINCK CHECK MODEM STATUS LINES ** LDA TEMP4 GET REQUEST TYPE SLA,RSS JMP IA05W THIS IS A WRITE REQUEST JMP IA05R THIS IS A READ REQUEST * ****************************************************************** * SUBROUTINE INITIALIZES THE COMPLETION SECTION * * FOR ALL COMPLETION INTERRUPTS. * * ****************************************************************** * * CA05 NOP STA TEM12 SAVE SELECT CODE DVA05 ISZ TEMP5 SET CONT. FLAG JSB SETIO CONFIGURE IO ** LDA EQT20,I CHECK FOR $UPIO ENTRY CPA BN71 FROM LINCK JMP $UPIO ** CLC01 CLC CARD GET CARD STATUS LIA01 LIA CARD STA TEM13 STORE CARD STATUS AND B40 CHECK FOR BUFFER OVERFLOW ** SZA,RSS HAS IT OVER FLOWED? JMP *+3 IT HAS NOT SWH2E NOP HARD \ MODEM = 0\RSS ** JMP EOOP9 HARD OVERFLOW (B=3,XMISSON ERROR) *** LDA TEM13 CHECK FOR SPURIOUS BRK. INT. AND B100 SZA JMP EXIT5 SPURRIOUS INTERRUPT *** LDA EQT1,I GET QUE WORD SZA IS A REQUEST IN PROCESS? JMP *+3 YES! JSB SCHED NO REQUEST IN PROCESS.FIND OUT JMP EXIT5 WHAT HAPPENED AND EXIT LDA EQT4,I ALF CHECK FOR TIME OUT ENTRY SSA IS THIS TIME OUT (BIT 11) ? JMP TIMOT YES! LDB EQT11,I GET INTERRUPT ADDRESS JMP B,I GOTO IT * ********************************************* * IS CALLED FOR ALL TIMEOUT * * PROCESSING * ********************************************* * ** DVA ** TIMOT LDA EQT25,I CHECK FOR CN31 ENTRY CPA B32 JMP CN31B YES IT IS JSB CDINT REINITIALIZE IO CARD JSB SETEM GO ENABLE CONSOLE *** LDA B4 LDB TEM10 GET DEVICE TYPE. IF CRT/GRAPHICS ADB B.60 CHECK FOR CRT SZB,RSS CLA THIS IS A CRT DO NOT DOWN JMP CA05,I *** * ***************************************************** * IS CALLED WHENEVER AN INTERRUPT OCCURS AND* * NO PROGRAM IS SCHEDULED (I.E. USER HITS A KEY TO * * GET THE SYSTEM'S ATTENTION * ***************************************************** * * SCHED NOP JSB CLRCD GET CHAR. OFF CARD CLA STA EQT15,I SET T.O. TO 0 LDB EQT1 IS THIS THE SYSTEM CONSOLE? CPB SYSTY JMP OPFLG YES! GO SET OPERATOR FLAG LDB EQT17,I GET TERMINAL ID ADD. LDA EQT28,I IS TERMINAL ENABLED? RAR,SLA SSB YES! IT IS ENABLED JMP SCHED,I IT IS NOT STB TEMP1 *** LDB EQT4 GET ADDRESS OF THIS TERMINAL'S EQT4 STB TEM7 JSB $LIST GO SCHEDULE IF POSSIBLE OCT 601 SCHEDULE PARAMAETER TEMP1 NOP TEM7 NOP JMP SCHED,I RETURN *** * OPFLG ISZ OPATN SET OPER. ATTN. FLAG JMP SCHED,I EXIT * ************************************************* * DOES CONTROL REQUEST PROCESSING FOR * * THE KEYBOARD\DISPLAY. * ************************************************* * *******TERMINAL STATUS****************************** * BIT STATUS * * 1 TERMIAL ENABLED * * 3 PARITY ERROR * BLOCK READ ONLY * 5 "CONTROL D" ENTERED * * 7 BUFFER FLUSH ENABLED * * * **************************************************** * * *******CRT CONTROL********************************** * EXEC CODE CRT CONTROL REQUEST * * 11 SPACE LINES * 20 ENABEL TERMINAL * * 21 DISABLE TERMINAL * * 22 SET TIME OUT * * 23 SET BUFFER FLUSH * * 24 REMOVE BUFFER FLUSH * * 25 UPDATE TERM. STATUS * 30 TERMINAL MODEM CONTROL * 31 MODEM LINE * * 32 AUTO ANSWER FOR MODEM * * **************************************************** * IA05C LDA EQT6,I GET CONTROL WORD LSR 6 SHIFT LDB EQT7,I SSB,RSS CMB,INB COMPLEMENT OPTIONAL PARAMETER AND B37 ISOLATE CON TROL PARAMETER * CPA B11 JMP CN11 GO SPACE LINES CPA B20 JMP CN20 GO ENABLE TERMINAL CPA B21 JMP CN21 GO DISABLE TERMINAL CPA B22 JMP CN22 GO SET TIME OUT CPA B23 JMP CN23 GO SET BUFFER FLUSH CPA B24 JMP CN24 GO REMOVE BUFFER FLUSH ** DVA *** CPA B25 GET TERMINAL STATUS JMP CN25 *** CPA B30 JMP CN30 GO SET TERMINAL MODEM CONTROL CPA B31 JMP CN31 GO SET MODEM LINE OPEN/CLOSE CPA B32 JMP CN32 * ********************REJECT REQUEST****************** CLA JMP IOR19 ** * * B11 OCT 11 LF OCT 12 B37 OCT 37 B20 OCT 20 B21 OCT 21 B22 OCT 22 B23 OCT 23 B24 OCT 24 B25 OCT 25 B2 OCT 2 B.3 OCT 177775 B200 OCT 200 B17 OCT 17 B70 OCT 70 B30 OCT 30 DVA05 B31 OCT 31 DVA05 B.60 OCT -60 DVA05 BN61 OCT 14000 DVA05 BN67 OCT 174037 DVA05 BN68 OCT 163777 DVA05 BN73 OCT 77776 * **SPACE LINES***** **MAX NO. IS 55** * CN11 SZB,RSS CHECK FOR 0 VALUE CCB CHANGE TO -1 STB EQT7,I ADB B70 MAX NO. OF (CR,LF'S) IS 55 SSB BECAUSE CARD BUFFER IS 128 JMP REJ2 JSB CDINT MASTER RESET JSB EORP OUTPUT (CR,LF) JSB EXIT1 !!!!!!!!!!!!!!!!! JSB ENAK GIVE TERM. TIME TO PROCESS ISZ EQT7,I JMP *-5 * CN11B CLA STA EQT19,I SET A REG. EXIT JMP EOOP4 JMP EOOP4 DVA * * DVA * CN11C CLA MODEM LINE EXIT JMP CA05,I * * * **GO ENABLE TERMINAL(BIT 1 OF EQT 19)** * CN20 LDA EQT17,I IF -1 THEN NO PROG. TO SCHED. INA,SZA OR "0" INTO EQT28 IF NO PROG. LDA B2 SET BIT 1 (TERM. ENABLED) IOR19 IOR EQT28,I CONSTRUCT NEW STATUS WORD ST19 STA TEM8 STA EQT28,I RESTORE JSB STPUT PUT IT IN EQT5 JMP REJ2 GO EXIT A=2 * **GO DISABLE TERMINAL** * CN21 LDA B.3 AND19 AND EQT28,I REMOVE BIT 1 JMP ST19 * **GO SET NEW TIME OUT** * CN22 STB EQT14,I B REG. HAS NEW TIME OUT.STORE IT. JMP REJ2 * **GO SET BUFFER FLUSH (BIT 7 OF EQT28)** * CN23 LDA B200 SET BIT7 IN EQT28 JMP IOR19 * **GO REMOVE BUFFER FLUSH** * CN24 LDA BN27 REMOVE BIT 7 JMP AND19 *** UPDATE TERMINAL STATUS CN25 LDA EQT16,I AND BN73 CLEAR BIT0 AND 15 STA EQT16,I JSB TERST GET STATUS JMP CN11B *** ** DVA ** TERMINAL MODEM CONTROL** * * BITS MEANING * 0-3 BAUD RATE * 4 PARITY EVEN\ODD =1\0 * 5 PARITY ON\OFF =1\0 * 8 LINE TYPE MODEM\HARD = 1\0 * CN30 CMB,INB BLF,BLS MAKE POS. AGAIN AND SHIFT LEFT 5 TO BITS 5-10,13 LDA EQT16,I AND BN67 CLR OLD INFO. IOR B STA EQT16,I JMP REJ2 * ** LINE OPEN\CLOSE ** * CN31 SZB LINE OPEN (OPT. PARM. NON ZERO) CN31C LDB BN61 LINE OPEN. BN61 IS OCT 14000 (11,12) LDA EQT16,I LINE OPEN SET CA AND CD AND BN68 CLR OLD INFO. IOR B STA EQT16,I LDA B32 SET LINE CONTROL FLAG IN EQT25 STA EQT25,I B32 IS CB,CC,CF SZB,RSS SET LINE CONTROL REF. IN CLA IN EQT 24 STA EQT24,I JSB SETIO CONFIGURE CARD CONTROL WORD 4 JSB CDSET SET CONTROL WORD 4 CN31A LDA BN31 SET TIMEOUT 2 SEC AND EXIT STA EQT15,I JSB EXIT1 JSB EXIT1 DVA * * CN31B JSB CHRIN GET MODEM LINE STATUS.IF OPEN WAIT FOR LDB EQT7,I CHECK FOR LINE CLOSE LDA TEMP9 GET CARD STATUS SZB,RSS IF LINE CLOSE MASK CC FOR 202T MODEM AND BN55 AND B32 IF OPEN LOOK FOR CB,CC,CF CPA EQT24,I JMP CN11C GOTO LINE EXIT JMP CN31A IN NOT O.K. TRY AGAIN * * CN32 LDA BN69 SET CE REF. =0 JSB OUT2 LDA ENCE ENABLE RING INT. JSB OUT2 ENABLE RING INTERRUPT STA EQT7,I SET LINE OPEN CLA CLR TIMEOUT STA EQT15,I JSB EXIT1 WAIT FOR RING CLB,INB SET FOR LINE OPEN JMP CN31C GO CHECK STATUS LINES ** * **********EQT6 FOR READ\WRITE***************** * * EQT6 FOR READ\WRITE OPERATIONS IS: * * BIT MEANING * * 6 0\1 IS ASCII\BINARY * * 8 0\1 IS OFF\ON ECHO * * 10 0\1 OFF\ON HONEST MODE * * 9 AND 10 SET USER ENABLED BLOCK READ * * ********************************************** * * IA05W CLB,RSS SETUP EQT9(RUNNING CHAR. ADD.) AND I05W1 NOP EQT 10 (LAST CHAR. ADD.) LDA EQT7,I GET BUFFER STARTING ADDRESS RAL,CLE MULTIPLY S.A. BY TWO STA EQT9,I STORE AT EQT9 LDA EQT8,I GET BUFFER LENGTH CMA,SSA,INA,RSS COMPLEMENT,ARE THEY CHAR.? JMP I.W1 YES! CMA,INA MAKE POS AGAIN RAL MULTIPLY WORDS X 2 AND * I.W1 ADA EQT9,I STA EQT10,I STORE LAST CHAR. ADD. AT EQT10,I CMA,INA MAKE LAST CHAR. ADD. NEG. ADA EQT9,I - NO. OF CHAR. ARE NOW IN A REG. SZB JMP I05W1,I SZA,RSS IS IT 0 ? JMP I.W32 YES! IT IS ZERO * *** LDA TEM11 IS THIS GRAPHICS? CPA B3 SUBCHANNEL 3 JSB GRAPH *** JSB TRAN1 GOTO OUTPUT SUBROUTINE *