ASMB,Z,L,T,C,R      ***RTE 2640\2644\2645  DRIVER (HARDWIRE)**
*     NAME:   DVR05 
*     SOURCE:  HP 264X RTE DVR05 92001-18026
* 
*     PRMR:   B.B.
* 
*     SOURCE FILE &DVR05
*     RELOC. FILE %4DV05  92001-16027   (CTU AND PRINTER OPERATION) 
*      RELOC. FILE %0DV05  92001-16028  (KEYBOARD\DISPLAY ONLY) 
* 
***************************************************************** 
* (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.         * 
***************************************************************** 
* 
****DVR05 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)
* 
* 
*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 I.05.  IF THE FUNCTION CODE IS VALID, EXIT IS 
*       THRU C.05 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 C.05 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 I.05. 
*      -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
* 
* 
* 
*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. 
* 
******************************************
* SUBROUTINE <I.05> IS ALWAYS ENTERED TO *
* INITIALIZE A SYSTEM OR USER REQUEST TO *
* ANY 264X  SUBSYSTEM.                   *
******************************************
* 
* REV.1805 FIXES SPURIOUS INTERRUPT PROBLEM AFTER 
* REV.1806 FIXED T BIT ON KEYBOARD ENTRY
* POWER UP. ALSO CHANGED WRITE T.O. TO 3.5 SEC
* 
* REV. 1913 FIXED INTERMITTENT HANGUP PROBLEM 
*  THIS CHANGE USES EXTENDED COMM. CARD 
* REV. 1926 FIXED "TERST" RE-ENTRANT PROBLEM
* 
      IFN 
      NAM DVR05     92001-16028   REV. CODE 1926    4-27-79 
      XIF 
* 
      IFZ 
      NAM DVR05     92001-16027  REV.1926 4-27-79 
      XIF 
      ENT I.05,C.05 
      EXT $LIST,$OPSY 
I.05  NOP 
      STA TEM12     SAVE SELECT CODE
      CLB 
      STB TEMP5     SET I.05 C.05 POINTER.DO NOT MOVE 
      JSB SETIO     OR Y O U ' L L  L O S E 
      CLB           DO NOT MOVE THIS BEFORE  "SETIO" !!!!!
      STB EQT20,I    "DO'NT SAY I DID'NT TELL YOU SO!!!"
* 
**                  DVA 
**
SFS01 SFS CARD      IF FLAG SET THEN POWER FAIL 
      JMP I.055     FLAG NOT SET
I.054 JSB XMIT      SET UP TO CLR INTERRUPT 
      LDA BN5       CLR ALL CARD INTERRUPTS 
I.053 JSB OUT2      (0-377) 
      CPA BN7       IS THIS ALL?
      JMP I.055     YES! FINISHED 
      INA 
      JMP I.053     DO IT AGAIN 
I.055 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 I.051     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 I.054     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 
BN70  OCT 173777
* 
B.6   OCT 177772
B100  OCT 100 
* 
* 
TEM13 NOP           CARD STATUS ON INTERRUPT
TEM12 NOP           SELECT CODE 
* 
* 
I.051 JSB CDINT 
* 
      IFZ 
* 
SWH1A NOP               SWITCH CRT \CTU ,LP= RSS\NOP
* 
      JMP I.251     YES! A CTU OR LP REQUEST
      XIF 
      LDA TEMP4     GET REQUEST TYPE
      RAR           THIS IS A CRT REQUEST 
      SSA,SLA 
      JMP I.05C     THIS IS A CONTROL REQUEST.
**                  DVA 
**
      LDA TEMP4     GET REQUEST TYPE
      SLA,RSS 
      JMP I.05W     THIS IS A WRITE REQUEST 
      JMP I.05R     THIS IS A READ REQUEST
* 
******************************************************************
* SUBROUTINE <C.05> INITIALIZES THE COMPLETION SECTION           *
* FOR ALL COMPLETION INTERRUPTS.                                 *
* 
******************************************************************
* 
* 
C.05  NOP 
      ISZ TEMP5     SET CONT. FLAG
      JSB SETIO     CONFIGURE IO
**                  DVA 
**
CLC01 CLC CARD      GET CARD STATUS 
LIA01 LIA CARD
      STA TEM13     STORE CARD STATUS 
      AND B40       CHECK FOR BUFFER OVERFLOW 
**                  DVA 
      SZA           HAS IT OVER FLOWED? 
**
      JMP EOOP9     HARD OVERFLOW  (B=3,XMISSON ERROR)
*** 
      LDA TEM13     CHECK FOR BREAK INT. TO AVOID 
      AND B100      SPURIOUS INT. AFTER POWERUP 
      SZA 
      JMP EXIT5     THIS IS A BREAK INT.
*** 
      LDA EQT1,I    GET QUE WORD
      SZA           IS A REQUEST IN PROCESS?
      JMP *+4       YES!
      JSB SCHED      NO REQUEST IN PROCESS
      JSB SETEM     SET FOR ANOTHER INTERRUPT 
      JMP EXIT5 
      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 JSB CDINT     REINITIALIZE IO CARD
      JSB SETEM     GO ENABLE CONSOLE 
*** 
      LDA B4
      LDB TEM10     GET DEVICE TYPE. IF CRT/GRAPHICS
      ADB B.60      DO NOT DOWN 
      SZB,RSS 
      CLA           CRT 
      JMP C.05,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
* 
************************************************* 
* <I.05C> DOES CONTROL REQUEST PROCESSING FOR   * 
* THE KEYBOARD\DISPLAY.                         * 
************************************************* 
* 
*******TERMINAL STATUS******************************
*     BIT           STATUS                         *
*     1             TERMIAL ENABLED                *
*     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 
*                                                  *
****************************************************
* 
I.05C 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
*** 
      CPA B25       GET TERMINAL STATUS 
      JMP CN25
*** 
********************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
BN73  OCT 77776 
BN68  OCT 163777
B.60  OCT -60 
* 
**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
* 
* 
* 
**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)** 
* 
                                                    