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 <IA05> 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 <CA05> 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 
* 
********************************************* 
* <TIMOT> 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
*** 
* 
***************************************************** 
* <SCHED> 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
* 
************************************************* 
* <IA05C> 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
* 
                                                                                                                                                                                                                                