*DECK     CD3 
          IDENT  CD3,IPLTRAN
          PERIPH
*CALL,VERS
          TITLE  CD3         CTI 3000 TYPE TAPE DRIVER - "VERS" 
          COMMENT CTI 3000 TYPE TAPE DRIVER - "VERS"
          COMMENT COPYRIGHT CONTROL DATA CORPORATION, 1979
*CALL,CDCCRN
 CD3      SPACE  4,10 
*****     CD3 - 3000 TYPE TAPE DRIVER -CTI-.
* 
*         R. A. MATTHEWS.          12/23/77.
*         R. A. TURGEON             6/8/78. 
* 
*         CD3 PROVIDES A BASIC TAPE DRIVER FOR 3000 TYPE TAPE DRIVES
*         WHEN USED AS THE DEADSTART DEVICE WITHIN THE COMMON TEST/ 
*         INITIALIZATION (CTI) PACKAGE. CD3 MOVES ITSELF OVER THE IPL 
*         PREFIX TABLE AND PROGRAM BODY TO ALLOW SUBSEQUENT READS TO
*         USE THE IPL BUFFER AREA.
          SPACE  4,10 
***       CD3 - 3000 TYPE TAPE DRIVER -CTI-.
* 
*         CD3 IS THE THIRD RECORD FOLLOWING IPL ON A DEADSTART TAPE 
*         AND IS NOT PRESENT IN THE DISK DEADSTART SEQUENCE. CD3, 
*         THROUGH THE COMMON DRIVER INTERFACE, PROVIDES A DEVICE
*         READER THAT WILL LOAD GIVEN ROUTINES AND HAND OFF CONTROL 
*         IF SO SPECIFIED. THE DEVICE READER WILL PROCESS RECORDS UP
*         TO 511 (DECIMAL) CM WORDS LONG. 
          TITLE  DEFINITIONS. 
**        DEADSTART PANEL WORDS.
* 
*         WORDS 5 - 20B OF THE DEADSTART PANEL MUST REMAIN INTACT 
*         DURING CTI EXECUTION. WORDS 0 - 4 MAY BE USED AS SCRATCH
*         DIRECT CELLS. 
  
  
 D0       EQU    0                 SCRATCH
 D1       EQU    1                 SCRATCH
 D2       EQU    2                 SCRATCH
 D3       EQU    3                 SCRATCH
 D4       EQU    4                 SCRATCH
 D5       EQU    5                 ZERO IF TAPE DEADSTART 
 D6       EQU    6                 FUNCTION WORD
*         (D6) = WARMSTART FUNCTION, IF MTS/ATS.
*              = DEADSTART FUNCTION, IF 844 DISK. 
 D7       EQU    7                 RESERVED 
*         (D7) = 1400B IF 3000 TYPE TAPE. 
 D10      EQU    10B               RESERVED 
 D11      EQU    11B               RESERVED 
 D12      EQU    12B               MSL PARAMETERS 
 D13      EQU    13B               OS PARAMETERS
 D14      EQU    14B               OS PARAMETERS
 D15      EQU    15B               UNUSED 
 D16      EQU    16B               C80/A170 RESERVED
 D17      EQU    17B               RESERVED 
 D20      EQU    20B               RESERVED 
 INS      SPACE  4,10 
**        INSTRUCTION EQUATES.
* 
  
  
 PSNC     EQU    0000B             PASS 
 UJNC     EQU    0300B             UNCONDITIONAL JUMP 
 ZJNC     EQU    0400B             ZERO JUMP
 SHNC     EQU    1000B             SHIFT
 LCNC     EQU    1500B             LOAD COMPLEMENT
 SBNC     EQU    1700B             SUBTRACT NO-ADDRESS
 LDCC     EQU    2000B             LOAD CONSTANT
 ADCC     EQU    2100B             ADD CONSTANT 
 LMCC     EQU    2300B             LOGICAL MINUS CONSTANT 
 LDDC     EQU    3000B             LOAD DIRECT
 AJMC     EQU    6400B             ACTIVE JUMP
 OAMC     EQU    7300B             OUTPUT MEMORY
 ACNC     EQU    7400B             ACTIVATE CHANNEL 
 DCNC     EQU    7500B             DISCONNECT CHANNEL 
 MSC      SPACE  4,10 
**        MISCELLANEOUS DEFINITIONS.
* 
* 
  
  
 NAME     EQU    5                 OFFSET OF NAME IN PRFX TABLE 
 TIMEOUT  EQU    70000             TIMEOUT COUNT
 RETRY    EQU    20D         NO OF RETRIES IN ERROR PROCESSING
 FWDL$    EQU    0                 DEFINE FORWARD LINK FOR CHANNEL INST.
 QUAL$    EQU    0                 DON-T QUALIFY COMMON DECKS 
 DEBUG    EQU    0
 DSP      SPACE  4,10 
**        DISPLAY CONTROLLER DEFINITIONS. 
* 
* 
  
  
 CHD      EQU    10B               DISPLAY CHANNEL
  
*         DISPLAY FUNCTION CODES. 
  
 F.SEL    EQU    7000B             SELECT CONSOLE DISPLAY 
  
 F.SLS    EQU    0000B             SELECT CONSOLE LEFT SCREEN 
 F.SRS    EQU    0100B             SELECT CONSOLE RIGHT SCREEN
 F.SBS    EQU    0200B             SELECT CONSOLE BOTH SCREEN 
  
 F.CHR    EQU    0000B             SELECT DOT MODE
 F.DOT    EQU    0010B             SELECT DOT MODE
 F.KEY    EQU    0020B             SELECT KEYBOARD INPUT
  
 F.CHS    EQU    0000B             SET CHARACTER SIZE SMALL 
 F.CHM    EQU    0001B             SET CHARACTER SIZE MEDIUM
 F.CHL    EQU    0002B             SET CHARACTER SIZE LARGE 
  
*         COORDINATE DESIGNATION. 
  
 XSET     EQU    6000B             SET X COORDINATE 
 YSET     EQU    7000B             SET Y COORDINATE 
          TITLE  DEFINITION COMMON DECKS. 
          SPACE  4,10 
**        DEFINITION COMMON DECKS.
* 
**        ALL SYMBOL AND MACRO DEFINITION COMMON DECKS ARE CALLED HERE. 
  
  
*CALL     COMPCTI 
*CALL     COMS3TP 
*CALL     COMPCHL 
*CALL     COMSCPA 
*CALL     COMSCTI 
 NFMAX    EQU    CDNFMAX           NOFIND MAXIMUM 
          TITLE  MAIN ROUTINE.
          ORG    IPLTRAN
 CD3      SPACE  4,10 
***       INI - CD3 INITIALIZATION. 
* 
*         INI MOVES THE TAPE DRIVER INTO THE COMMON DRIVER AREA,
*         INITIALIZES THE CHANNEL INSTRUCTIONS AND LOADS THE FIRST
*         DISPLAY ROUTINE.
* 
*         ENTRY  CPA AREA INTACT. 
*                DEADSTART PANEL CELLS INTACT.
* 
*         USES   D1, D2, D3, D4.
  
  
 INI      BSS    0                 ENTRY POINT
  
*         MOVE THE COMMON DRIVER FOR TAPE, *CTD*, INTO THE COMMON 
*         DRIVER AREA.
  
          LDC    TCTDL
          STD    D4                LENGTH OF MOVE BLOCK 
 INI1     LDM    TCTD-1,D4
          STM    CDEP-1,D4         MOVE DRIVER CODE 
          SOD    D4 
          NJN    INI1              IF MORE DRIVER CODE TO MOVE
  
          LDD    D14
          STM    E0UU              SAVE EQUIP/UNIT
  
*         PICK UP CHANNEL NUMBER AND STUFF CHANNELS INTO CODE USING 
*         THE CHANNEL INSTRUCTION LINK. 
  
          LDC    AWDZ              FIRST CHANNEL INSTRUCTION
          STD    D2 
          LDD    D10               GET CHANNEL NO. FROM D/S PANEL 
          LPN    37B
          STD    D3 
          LDN    0
 INI2     RAD    D2                CHANNEL INST. POINTER + BIAS 
          LDI    D2                GET INSTRUCTION
          LPN    37B
          STD    D4                SAVE FOR NEXT INSTRUCTION
          LDD    D3                GET CHANNEL NO.
          SBD    D4                SUBTRACT LINK FROM CHANNEL NO. 
          RAI    D2                ADD CHANNEL NO. - LINK TO OLD INST.
          LDD    D4                CHECK FOR ZERO LINK (LAST INST.) 
          NJN    INI2              CONTINUE PROCESSING INSTRUCTIONS 
          SPACE  4,10 
*         CODE TO CREATE CTI INTERNAL STATE 
  
          DCN.   13B+40B           DISCONNECT 13B 
          DCN.   33B+40B           DISCONNECT 33B 
  
          IJM.   INI7,12B          IF CHAN 12B IS D.S CHANNEL 
          LDN    0                 OUTPUT 0000 TO CH 12B
          OAN.   12B
          AOM    0                 WAIT A WHILE 
          SOM    0
          FJM.   INI7,12B          IF FULL (NO PP ON CH 12B)
  
          LDD    D3                ACTIVATE DEADSTART CHANNEL 
          RAM    INIA 
 INIA     ACN.   40B
  
          LDD    D3                MOVE PP BACK TO D.S. CHAN
          RAM    INIC 
          LDN    INIL 
          OAM.   INIB,12B 
          FJM.   *,12B
  
 INI7     DCN.   12B+40B           DISCONNECT 12B 
          DCN.   32B+40B           DISCONNECT 32B 
          UJN    INI9 
  
 INIB     LDN    0
 INIC     IAM.   0,** 
 INIL     EQU    *-INIB 
  
  
*         CALL THE COMMON DRIVER TO LOAD IOQ
*          AND GIVE CONTROL TO IOQ. 
  
 INI9     LDC    INIR               A = ADDRESS OF PARAMS 
          LJM    CDEP               GOTO COMMON DRIVER
  
*         PARAMETER BLOCK FOR COMMON DRIVER TO LOAD IOQ 
  
 INIR     CON    IOQB               LOAD ADDRESS
          CON    IOQTRAN               TRANSFER ADDRESS 
          CON    0                  NO REWIND FIRST 
          VFD    18/3LIOQ,6/0       NAME CHECK FIELD
          TITLE  CTD - COMMON TAPE DRIVER.
***       CTD - COMMON TAPE DRIVER. 
* 
  
  
 TCTD     EQU    *                 FWA OF DRIVER AREA 
  
          LOC    CDEP              BEGINNING OF COMMON DRIVER AREA
  
 CTD      EQU    *                  ENTRY POINT 
          UJN    ENDCONS
          CON    D3TP 
 ENDCONS  EQU    *
          STD    D1                 SAVE ADDRESS OF PARAMS
  
          LDI    D1                INPUT BUFFER FWA 
          STD    D2 
          STM    PREB               PRFX READ 
          STM    REDB               FULL READ 
          STM    REDC 
          ADN    NAME+2 
          STM    PREC               PRE BYPASS-READ 
          LDM    CDTA,D1            TRANSFER ADDRESS
          STM    CTDZ 
          LDM    CDNC,D1            NAME CHECK FIELD
          STM    NFNM              SAVE FOR ERROR MSG 
          LDM    CDNC+1,D1
          STM    NFNM+1 
          LDN    RETRY
          IJM.   CTD1,17B 
          SHN    1
 CTD1     STM    ARTC 
          LDN    NFMAX
          STM    NFCT               NO FIND COUNT LIMIT 
  
          RJM    SEL                SELECT AND CONNECT
          LDM    CDNC,D1
          LMC    7777B
          NJN    *+3
          LJM    JUMP 
  
          LDM    CDRW,D1
          ZJN    CTD2               IF NO REWIND FIRST
          LDN    TREW 
          RJM    RBT                REWIND TAPE 
  
 CTD2     LDM    CDNC,D1
          NJN    CTD3               IF READ NAMED RECORD
          LDD    D2                 ELSE READ NEXT RECORD 
          ADC    LE77*BPW+LE6P*BPW
          STM    REDC 
          LJM    CTD7 
  
 CTD3     RJM    PRE                READ PRFX TO GET NAME 
  
*         TEST IF NAMES MATCH 
  
          LDM    NAME,D2
          SBM    NFNM 
          NJN    CTD5 
          LDM    NAME+1,D2
          SBM    NFNM+1 
          ZJN    CTD6               IF NAMES MATCH
  
*         HERE IF NO MATCH. CHECK IF ZZZ. 
  
 CTD5     SOM    NFCT               CHECK NOFIND COUNT
          ZJN    CTD55       IF NAME NOT FOUND
          LDM    NAME,D2
          LMC    2RZZ 
          NJN    CTD3 
          LDM    NAME+1,D2
          LMC    1RZ*100B 
          NJN    CTD3 
 CTD55    LJM    ERNF               IF ZZZ REACHED
  
*         HERE TO BACKSPACE TAPE ONE RECORD.
  
 CTD6     LDN    TBSP 
          RJM    RBT                BACKSPACE TAPE
  
*         HERE TO READ DESIRED RECORD 
  
 CTD7     RJM    RED                FULL READ 
  
          RJM    DSEL               RELEASE AND DESELECT
  
 JUMP     LJM    **                 GO TO TRANSFER ADDRESS
 CTDZ     EQU    *-1
          TITLE  SUBROUTINES
 AWD      SPACE  4,10 
**        AWD - ACTIVATE CHANNEL AND WAIT FOR DATA. 
* 
*         AWD ACTIVATES THE FUNCTIONED CHANNEL AND TIMES OUT A FULL 
*         CONDITION.
* 
*         EXIT   (A) .NE. 0, DATA ON CHANNEL. 
*                (A) = 0, NO DATA RECIEVED, CHANNEL DISCONNECTED. 
  
  
 AWD      CON    0           ENTRY
          LDM    AWD         RETURN ADDRESS 
          STM    AWDA        MODIFY FULL JUMP ADDRESS 
 AWD1     LDC    CIEI+CMDA   READ EOR/CONVERSION A
          RJM    FCN
  
          LDC    TIMEOUT
  
****
*         THE FOLLOWING IS THE FIRST CHANNEL INSTRUCTION IN *CD3* AND 
*         IS USED IN DEFINING THE LINKED CHANNEL LIST.  IF THE FIRST
*         CHANNEL INSTRUCTION IS MOVED, BE SURE TO ADJUST THE CHANNEL 
*         REPLACEMENT SECTION IN *INI*. 
  
 AWDZ     BSS    0                 FIRST CHANNEL INSTRUCTION
  
          ACN    0           ACTIVATE CHANNEL 
  
****
  
 AWD6     FJM    **,0        IF FULL RETURN 
 AWDA     EQU    *-1
          SBN    1
          NJN    AWD6        IF TIMEOUT NOT EXPIRED 
          DCN    40B
          RJM    ART         ASKTO RETRY
          RJM    MCC         MASTER CLEAR 
          RJM    SEL         RESELECT UNIT
          UJN    AWD1        RETRY
 PRE      SPACE  4,10 
**        PRE - READ ENOUGH TO GET THE NAME 
* 
*         RETURN TO CALLER IF NO ERRORS 
*         ELSE GO TO ERROR PROCESSING 
  
 PRE      ENM    X                 ENTRY/EXIT 
 PRE3     RJM    AWD         ACTIVATE AND WAIT FOR DATA 
          LDN    NAME+2            LENGTH TO INCLUDE NAME 
          IAM    **,0              READ TABLES
 PREB     EQU    *-1
          ZJN    PRE5        IF NOT NOISE RECORD
          RJM    CHK         CHECK STATUS AFTER READ
          UJN    PRE3        OK TO RETRY
  
 PRE5     LDN    77B               BYPASS REST OF RECORD
          IAM    **,0 
 PREC     EQU    *-1
          ZJN    PRE5 
          RJM    CHK               CHECK STATUS AFTER READ
          PJN    PREX              IF NO ERRORS 
          UJN    PRE3              IF OK TO RETRY 
 RED      SPACE  4,10 
**        RED - READ FULL RECORD
* 
*         RETURN TO CALLER IF NO ERRORS 
*         ELSE GO TO ERROR PROCESSING 
  
 RED      ENM    X                 ENTRY/EXIT 
 RED3     RJM    AWD         ACTIVATE AND WAIT FOR DATA 
          LDC    LE77*BPW+LE6P*BPW TABLES LENGTH
          IAM    **,0              READ TABLES
 REDB     EQU    *-1
          ZJN    RED5        IF NOT NOISE RECORD
          RJM    CHK         CHECK STATUS AFTER READ
          UJN    RED3        OK TO RETRY
  
 RED5     IAM    **,0 
 REDC     EQU    *-1
          RJM    CHK               CHECK STATUS AFTER READ
          PJN    REDX              IF NO ERRORS 
          UJN    RED3              OK TO RETRY
 FCN      SPACE  4,10 
**        FCN - FUNCTION DEVICE.
* 
*         ENTRY  (A) = FUNCTION CODE. 
* 
*         RETURNS TO CALLER IF NO ERRORS
*         ELSE GO TO ERROR PROCESSOR. 
  
  
 FCN      ENM    X                 ENTRY/EXIT 
          STM    FCNF              SAVE FUNCTION CODE 
 FCN3     LDC    *           LOAD FUNCTION CODE 
 FCNF     EQU    *-1         PLACE TO SAVE FUNCTION 
          FAN    0           ISSUE FUNCTION 
  
          LDC    TIMEOUT
 FCN1     IJM    FCNX,0            IF FUNCTION ACCEPTED, RETURN 
          SBN    1
          NJN    FCN1              IF TIMEOUT NOT EXPIRED 
          DCN    40B
          RJM    ART               ASK TO RETRY 
          UJN    FCN3              TRY AGAIN
          SPACE  4,10 
**        CST - GET CONVERTER STATUS
* 
*         EXIT   (A) = (GDSA) = CONVERTER STATUS
* 
  
 CST      ENM    X                 ENTRY/EXIT 
 CST2     LDC    CCST 
          RJM    FCN
          ACN    0
          IAN    0
          STM    GDSA              SAVE STATUS
          DCN    40B
          UJN    CSTX              RETURN 
  
 GDSA     BSSZ   1
          SPACE  4,10 
**        EST - EQUIPMENT STATUS
* 
*         EXIT   (A) = (CDGS) = EQUIPMENT STATUS
* 
  
 EST      ENM    X                 ENTRY/EXIT 
 EST2     LDC    CEST 
          RJM    FCN
          ACN    0
          IAN    0
          STM    CDGS              SAVE EQUIPMENT STATUS
          DCN    40B
          UJN    ESTX              RETURN 
  
 CDGS     BSSZ   1
          SPACE  4,10 
**        C81 - CHECK 6681/84 STATUS
* 
*         C81 CHECKS 6681/84 STATUS FOR TRANSMISSION PARITY ERRORS
*         OR REJECT 
* 
*         ENTRY  (GDSA) = CONVERTER STATUS
* 
*         EXIT   (A) = 0 IF NO ERRORS 
* 
*                (A) .NE. 0 IF ERROR
* 
  
 C81      ENM    X                 ENTRY/EXIT 
          LDM    GDSA              6681 STATUS
          LPN    MP.CSTP
          NJN    C81X        IF TRANSMISSION PARITY ERROR 
          LDM    GDSA 
          LPN    MP.CSRJ+MP.CSIR
          UJN    C81X              RETURN 
 MCC      SPACE  4,10 
**        MCC - MASTER CLEAR CHANNEL
* 
*                MASTER CLEARS CHANNEL, WAITS FOR 
*                EXPIRATION OF MASTER CLEAR CONTROL 
*                TIMEOUT TO CONVERTER AND RESELECTS 
*                EQUIPMENT AND UNIT.
  
 MCC      ENM    X           ENTRY/EXIT 
          FNC    1700B,0
          LDC    500D        WAIT FOR MC TIMEOUT
 MCC1     SBN    1
          PJN    MCC1 
          UJN    MCCX        RETURN 
 RBT      SPACE  4,10 
**        RBT - REWIND/BACKSPACE TAPE 
* 
*         ENTRY  (A) = FUNCTION CODE
* 
*         CALLS FCN 
  
 RBT      ENM    X                 ENTRY/EXIT 
          STM    RBTF              SAVE FUNCTION CODE 
 RBT1     RJM    EST
          LPN    3
          LMN    1
          NJN    RBT1        IF NOT (READY AND NOT BUSY)
          LDC    *
 RBTF     EQU    *-1         PLACE TO SAVE FUNCTION 
          RJM    FCN               FUNCTION DEVICE
          RJM    CST               GET STATUS 
          RJM    C81               CHECK 6681 STATUS
          ZJN    RBT3        IF NO STATUS PROBLEMS
          RJM    ART         ASK TO RETRY 
          UJN    RBT1 
 RBT3     RJM    EST               GET EQUIP STATUS 
          LPC    1003B
          LMC    1001B
          NJN    RBT3        IF NOT (EOP, READY, AND NOT BUSY)
          UJN    RBTX              RETURN 
          SPACE  4,10 
**        CHK - CHECK RESULTS/STATUS AFTER A READ OPERATION 
* 
*         RETURNS TO CALLER IF NO ERRORS
*         ELSE IF RECOVERABLE ERROR BACKSPACE AND RETURN
*              ELSE GO TO ERROR PROCESSING
* 
*         (A) POSITIVE IF NO ERRORS 
*         (A) NEGATIVE IF ERROR BUT CALLER SHOULD RETRY READ
* 
  
 CHK      ENM    X                 ENTRY/EXIT 
 CHK2     RJM    CST               GET CONVERTER STATUS 
          LPN    4
          NJN    CHK5        IF TRANSMISSION PARITY 
          RJM    EST               GET EQUIPMENT STATUS 
          SHN    SL.TSEO
          PJN    CHK2              IF NOT END OF OPERATION
 CHK4     LDM    CDGS              UNIT STATUS
          LPC    MP.TSPE+MP.TSLD   P.E. OR LOST DATA
          ZJN    CHKX              IF OK,RETURN 
  
*         AN ERROR HAS OCCURRED. RETRY IF POSSIBLE. 
  
 CHK5     RJM    ART
          LDN    TBSP 
          RJM    RBT               BACKSPACE TAPE 
          LCN    0
          UJN    CHKX              RETURN 
          SPACE  4,10 
**        SEL - SELECT 6681 AND CONNECT UNIT
* 
*         RETURN TO CALLER IF NO ERRORS ELSE GOTO ERIO
* 
  
 SEL      ENM    X                 ENTRY/EXIT 
          LDC    CSEL 
          RJM    FCN               SELECT 6681
 SEL2     LDC    ** 
 E0UU     EQU    *-1
          RJM    FCN               CONNECT
          RJM    CST               GET CONVERTER STATUS 
          LPN    3
          ZJN    SELX              IF NO REJECT 
          RJM    ART
          UJN    SEL2 
          SPACE  4,10 
**        DSEL - RELEASE UNIT AND DESELECT 6681 
* 
*         RETURNS IF NO ERRORS ELSE GOTO ERIO 
  
 DSEL     ENM    X                 ENTRY/EXIT 
 DSEL2    LDN    TREL 
          RJM    FCN               RELEASE UNIT 
          RJM    CST               GET CONVERTER STATUS 
          LPN    3
          ZJN    DSEL5             IF NO REJECT 
          RJM    ART
          UJN    DSEL2
 DSEL5    LDC    CDSL 
          RJM    FCN               DESELECT 
          UJN    DSELX             RETURN 
 ART      SPACE  4,10 
**        ART - ADJUST RETRY COUNTER
* 
*         DECREMENT COUNTER AND 
*         RETURN TO CALLER IF COUNTER .GE. 0
*         ELSE GO TO ERROR PROCESSOR
* 
  
 ART      ENM    X                 ENTRY/EXIT 
          SOM    ARTC 
          PJN    ARTX              EXIT IF MORE RETRIES AVAILABLE 
          RJM    MCC         MASTER CLEAR 
          UJN    ERIO        IF NO MORE RETRIES AVAILABLE 
  
 ARTC     CON    0                 RETRY COUNTER
  
 NFCT     CON    0                 NOFIND COUNTER 
          EJECT 
**        ERROR PROCESSING
* 
*         ERIO IS ENTERED IF AN UNRECOVERABLE I/0 ERROR 
*         HAS OCCURRED.  ERNF IS ENTERED IF A REQUEST TO
*         READ A NAMED RECORD WAS MADE BUT THE RECORD 
*         COULD NOT BE FOUND.  FOR EITHER ERROR, A MESSAGE
*         IS PUT ON THE DISPLAY AND THE PP IS HUNG IN A LOOP
*         OUTPUTTING THE ERROR MESSAGE. 
  
 ERIO     EQU    *                 BUILD ERROR MSG
          LDM    CDGS              GENERAL STATUS 
          RJM    CTO
          STM    IOMGS+1
          LDM    CDGS 
          SHN    -6 
          RJM    CTO
          STM    IOMGS+0
          LDC    2RGS 
          STM    NFMB              CHANGE 1ST BYTE OF MSG TO *GS* 
          LDM    GDSA        CONVERTER STATUS 
          RJM    CTO
          STM    IOMGS1+1 
          LDM    GDSA 
          SHN    -6 
          RJM    CTO
          STM    IOMGS1 
          LDN    NFML1-NFML 
          RAM    ERR8 
  
 ERNF     EQU    *                 ENTRY WHEN NOFIND
  
*         IDLE PP 10
          FJM.   IDLEDCN,CHD
          LDN    IDLL 
          OAM.   IDLA,CHD          SEND IDLE PROGRAM
 IDLEDCN  DCN.   CHD+40B           FREE DISPLAY CHANNEL 
  
*         PAINT DISPLAY 
  
          FNC.   F.SEL+F.SLS+F.CHR+F.CHL,CHD
          ACN.   CHD
  
 ERR8     LDN    NFML 
          OAM.   NFM,CHD           OUTPUT ERROR MSG 
 ERR9     SBN    40B
          MJN    ERR9 
          UJN    ERR8              HANG IN OUTPUT LOOP
  
 IDLA     CON    0                 PP 10 IDLE PROGRAM 
          CON    UJNC              HANG 
 IDLL     EQU    *-IDLA            LENGTH OF IDLE PROGRAM 
  
 DOPLS    EQU    22B               LINE (Y COOR) INCREMENT VALUE
  
  
 NFM      EQU    *                 NOFIND ERROR MESSAGE 
  
          CON    7400B
          CON    XSET 
 NFMB     DATA   H*NM= NNNN*
 NFNM     EQU    NFMB+2 
 IOMGS    EQU    NFNM 
  
 NFML     EQU    *-NFM             MESSAGE LENGTH 
          CON    7200B
          CON    XSET 
 NFMB1    DATA   H*CS=     *
 IOMGS1   EQU    NFMB1+2
 NFML1    EQU    *-NFM
          SPACE  4,10 
**        CTO - CONVERT TO OCTAL DISPLAY
* 
*         ENTRY  (A) LOWER 6 BITS ARE VALUE TO BE CONVERTED 
* 
*         EXIT   LOWER 12 BITS OF (A) ARE RESULT. 
* 
*         USES   D2 
  
 CTOX     LJM    0                 EXIT 
 CTO      EQU    *-1               ENTRY
          LPN    77B               ISOLATE LOWER 6 BITS 
          STD    D2 
          SHN    3
          LMD    D2 
          SCN    70B
          ADC    2R00 
          UJN    CTOX              RETURN 
           SPACE 4,10 
**        END OF COMMON TAPE DRIVER AND SUBROUTINES.
* 
*         THE FOLLOWING SYMBOLS ARE DEFINED FOR MOVING *CTD* INTO THE 
*         COMMON DRIVER AREA. 
* 
*         TCTD   FWA OF COMMON TAPE DRIVER. 
*         LCTD   LWA+1 OF COMMON TAPE DRIVER. 
*         TCTDL  LENGTH OF COMMON TAPE DRIVER.
* 
  
  
          ERRNG  CPAFWA-*          OVERFLOWED INTO POINTER AREA 
  
          LOC    *O 
  
 LCTD     EQU    *
 TCTDL    EQU    LCTD-TCTD         LENGTH OF DRIVER 
          SPACE  4,10 
*         OVERFLOW CHECK. 
  
          ERRNG  IPLFWA-*          OVERFLOWED INTO IPL
  
          END 
