*COMDECK,LOW                                                             MLD
          EJECT                                                          MLD
 5LL      SEGMENT POVLA                                                  MLD
          ORG    POVLA                                                   MLD
          QUAL   LOW                                                     MLD
*CALL,VERS
          COMMENT LOW PRODUCT OVERLAY FOR MALET "VERS"
          TITLE  LOW LEVEL I/O PRODUCT OVERLAY FOR MALET.                MLD
**        THE LOW LEVEL I/O COMMANDS THAT FOLLOW APPLY TO ALL 3000,6000  MLD
*         AS WELL  AS BUFFER CONTROLLER DEVICES ON 6000/CYBER CHANNELS.  MLD
*                                                                        MLD
*         THIS LEVEL  OF  LANGUAGE IS USED PRIMARILY TO TEST/REPAIR I/O  MLD
*         CHANNEL INTERFACES AND CONTROLLERS. PPU CODE GENERATED BY THE  MLD
*         COMPILER IS IN THE FORM OF PASSING PARAMETERS TO DIRECT CELLS  MLD
*         IN THE PPU AND RETURN JUMPING TO A SUBROUTINE IN THE PPU       MLD
*         PRODUCT OVERLAY  TO  ACCOMPLISH THE TASK.  THE COMPILER NEVER  MLD
*         GENERATES PPU CODE THAT PERFORMS ANY I/O  CHANNEL  OPERATIONS  MLD
*         DIRECTLY EXCEPT AN INPUT OF THE REAL-TIME CLOCK WHICH IS DONE  MLD
*         ON A FEW SPECIAL CASES AS AN OPERAND - NORMAL I/O  IS ALWAYS   MLD
*         THROUGH THE PRODUCT OVERLAYS.                                  MLD
*                                                                        MLD
*                                                                        MLD
*           ACN     - ACTIVATE CHANNEL                                   MLD
*           CONN    - RELEASE THE CHANNEL IF ASSIGNED, PERFORM           MLD
*                     SYSTEM COMMUNICATIONS, RESERVE CHANNEL AND         MLD
*                     CONNECT THE DEVICE                                 MLD
*           DCN     - DEACTIVATE CHANNEL                                 MLD
*           FIN     - FUNCTION CONTROLLER AND HIGH SPEED INPUT           MLD
*           FOUT    - FUNCTION CONTROLLER AND HIGH SPEED OUTPUT          MLD
*           FUNC    - FUNCTION CONTROLLER/UNIT                           MLD
*           FUN8    - FUNCTION CHANNEL ADAPTOR                           MLD
*           IN      - LOW SPEED INPUT                                    MLD
*           INB     - HIGH SPEED INPUT                                   MLD
*           OUT     - LOW SPEED OUTPUT                                   MLD
*           OUTB    - HIGH SPEED OUTPUT                                  MLD
*           RES     - RELEASE THE CHANNEL IF ASSIGNED, PERFORM           MLD
*                     SYSTEM COMMUNICATIONS,AND RESERVE CHANNEL          MLD
*           REL     - RELEASE UNIT AND CHANNEL IF ASSIGNED               MLD
*           STATUS  - INPUT EQUIPMENT STATUS                             MLD
*           STATUS8 - INPUT CHANNEL ADAPTER STATUS                       MLD
*                                                                        MLD
          EJECT                                                          MLD
**        THE FOLLOWING TABLE DEFINES THE ERROR CODES AND MESSAGES THAT  MLD
*         MAY BE GENERATED  FOR  EACH COMMAND FOR 3000,6000 OR BC.       MLD
*                                                                        MLD
*                                      FUNC--------. .------STATUS       MLD
*                                     FOUT-------. . . .-----STATUS8     MLD
*                                    FIN-------. . . . . .----FUN8       MLD
*                                   CONN-----. . . . . . . .---IN        MLD
*                                  ACN-----. . . . . . . . . .--INB      MLD
*                                 RES----. . . . . . . . . . . .-OUT     MLD
*                                REL---. . . . . . . . . . . . . .OUTB   MLD
* CODES        MESSAGES         DCN--. . . . . . . . . . . . . . .
*    ------------------------------- - - - - - - - - - - - - - - -
* 04 WC OR BUFFER INDEX ERROR        . . . . . X X . X X . X X X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 10 NO INACTIVE TO 668X FUNC        . X X . X X X X X X X X X X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 12 NO FULL ON EQUIP STATUS         . . . . . . . . . X . X X X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 13 NO FULL ON EQUIP STATUS         . . . . . . . . X . . . . . .
*    ------------------------------- - - - - - - - - - - - - - - -
* 14 INACTIVE AFTER 668X STATUS      . . . . . . . . . X . . . . .
*    ------------------------------- - - - - - - - - - - - - - - -
* 15 668X XMSN PE                    . . . . . . . . . . . X X X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 16 668X INT REJ                    . . . . . . . . . . . X X X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 17 668X EXT REJ                    . . . . . . . . . . . X X X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 20 CH ACTIVE ON ENTRY              . X X X X . . X X X . X X X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 21 CH INACTIVE AFTER ACN           . . . . X . . X X . . X X . .
*    ------------------------------- - - - - - - - - - - - - - - -
* 22 CH ACTIVE AFTER DCN             . . . . . . . . X X . X X X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 23 CH NOT RESERVED                 X . . X . . . X X X X X X X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 24 NO INACTIVE ON EQUIP FUNC       . X X . X . . X . . . . . . .
*    ------------------------------- - - - - - - - - - - - - - - -
* 25 ILLEGAL COMMAND                 . . . . . . . . . X . . . . .
*    ------------------------------- - - - - - - - - - - - - - - -
* 26 NO EMPTY ON LAST BYTE OUTPUT    . . . . . . X . . . . . . X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 27 CH INACTIVE ON ENTRY            X . . . . . . . . . . X X X X
*    ------------------------------- - - - - - - - - - - - - - - -
* 30 CH ACTIVE AN EMPTY ON INPUT     . . . . . . . . X . . X . . .
*    ------------------------------- - - - - - - - - - - - - - - -
* 31 CH INACTIVE ON STATUS           . . . . . . . . X . . . . . .
*    ------------------------------- - - - - - - - - - - - - - - -
* 32 CH ACTIVE AND FULL ON OUTPUT    . . . . X . . X . . X . . X .
*    -------------------------------------------------------------       MLD
* 33 CHANNEL PE ON INPUT             . . . . . X . . X X . X X . .
*    -------------------------------------------------------------
          EJECT                                                          MLD
*         EQUATES FOR ERROR CODES - FIRST 7 ARE FOR BASIC DRIVER.        MLD
                                                                         MLD
 EC.FLE   EQU    1           ADDRESS OUT OF FIELD LENGTH                 MLD
 EC.TL    EQU    2           TIME LIMIT ERROR FOR COMMUNICATIONS         MLD
 EC.SEE   EQU    3           SUBROUTINE ENTRY/EXIT ERROR                 MLD
 EC.WC    EQU    4           BUFFER REFERENCE OR WC ERROR                MLD
 EC.RES   EQU    5           RESERVED FOR BASIC DRIVER                   MLD
 EC.RES1  EQU    6           RESERVED FOR BASIC DRIVER                   MLD
 EC.RES2  EQU    7           RESERVED FOR BASIC DRIVER                   MLD
                                                                         MLD
 EC.NI8   EQU    10B         NO INACTIVE TO A 668X FUNCTION              MLD
 EC.NF8S  EQU    12B         NO FULL AFTER REQUEST FOR 668X STATUS       MLD
 EC.NFES  EQU    13B         NO FULL TO REQUEST FOR EQUIPMENT STATUS     MLD
 EC.IAI8  EQU    14B         INACTIVE AFTER INPUT OF 668X STATUS         MLD
 EC.TPE   EQU    15B         668X TRANSMISSION PARITY ERROR              MLD
 EC.INT   EQU    16B         668X INTERNAL REJECT                        MLD
 EC.EXT   EQU    17B         668X EXTERNAL REJECT                        MLD
 EC.AAE   EQU    20B         CHANNEL ACTIVE AT COMMAND ENTRY             MLD
 EC.IAA   EQU    21B         CHANNEL INACTIVE AFTER ACTIVATE             MLD
 EC.AAD   EQU    22B         CHANNEL ACTIVE AFTER DEACTIVATE             MLD
 EC.CNR   EQU    23B         CHANNEL NOT RESERVED                        MLD
 EC.NIF   EQU    24B         NO INACTIVE TO EQUIPMENT FUNCTION           MLD
 EC.ILL   EQU    25B         ILLEGAL COMMAND FOR EQUIPMENT ASSIGNED      MLD
 EC.LOL   EQU    26B         NO RESPONSE TO LAST OUTPUT BYTE             MLD
 EC.IOE   EQU    27B         CH INACTIVE ON ENTRY 
 EC.AEI   EQU    30B         CH HUNG ACTIVE AND EMPTY ON INPUT           MLD
 EC.IBF   EQU    31B         CH INACTIVE BEFORE FULL ON STATUS INPUT     MLD
 EC.AFO   EQU    32B         CH HUNG ACTIVE AND FULL ON OUTPUT           MLD
 EC.CPE   EQU    33B         CHANNEL PARITY ERROR ON INPUT
                                                                         MLD
*         DIRECT CELL EQUATES.                                           MLD
                                                                         MLD
 S1       EQU    60B         LOWER 12 BITS OF ABT ADDRESS                MLD
 S2       EQU    61B         UPPER 6 BITS OF ABT ADDRESS                 MLD
 LB       EQU    62B         LENGTH OF IB/OB PLUS 1                      MLD
 IA       EQU    63B         IBFWA                                       MLD
 OA       EQU    64B         OBFWA                                       MLD
 SC       EQU    65B         SCRATCH                                     MLD
                                                                         MLD
*         668X FUNCTION EQUATES.                                         MLD
                                                                         MLD
 SEL81    EQU    2000B                                                   MLD
 DSEL81   EQU    2100B                                                   MLD
 SELCON   EQU    1000B                                                   MLD
 SELFUN   EQU    1100B                                                   MLD
 SELIN    EQU    1440B                                                   MLD
 SELOUT   EQU    1640B                                                   MLD
 SELEQS   EQU    1300B                                                   MLD
 SEL81S   EQU    1200B                                                   MLD
                                                                         MLD
*         668X STATUS CODES.                                             MLD
                                                                         MLD
 TPE      EQU    4                                                       MLD
 EXT      EQU    2                                                       MLD
 INT      EQU    1                                                       MLD
*IF DEF,MVE 
          EJECT 
  
*         MISCELLANEOUS EQUATES 
 ISD1     EQU    110B        DC FOR 834 
 ISD2     EQU    111B        DC FOR 836 
*ENDIF
          EJECT                                                          MLD
**        ERROR MESSAGES - WRITTEN TO CM DURING INITIALIZATION.          MLD
*         MMSG MARCO.                                                    MLD
*                                                                        MLD
*         MMSG  MACRO  NAME,ECODE,MSG,FABT                               MLD
*                                                                        MLD
*         NAME = 6/FABT,6/MESSAGE ORDINAL,6/ECODE.                       MLD
*                                                                        MLD
*         ECODE = ERROR CODE TO BE ASSIGNED (6 BITS).                    MLD
*                                                                        MLD
*         MSG = ERROR MESSAGE (40 CHARACTERS).                           MLD
*                                                                        MLD
*         FABT = FORCE ABORT (UPPER 6 BITS OF NAME.                      MLD
*                                                                        MLD
          PURGMAC MMSG                                                   MLD
 MMSG     MACRO  NAME,ECODE,MSG,FABT                                     MLD
          IF     -DEF,MMSGORD,1                                          MLD
 MMSGORD  SET    0                        INITIALIZE ORDINAL             MLD
          IFC    EQ,$FABT$$,2             TEST FOR NO FORCE ABORT        MLD
 NAME     EQU    MMSGORD*100B+ECODE                                      MLD
          ELSE   1                                                       MLD
 NAME     EQU    FABT*10000B+MMSGORD*100B+ECODE                          MLD
 MMSGBGN  SET    *                        SAVE CURRENT ADDRESS           MLD
          IFC    EQ,$MSG$$,2              TEST NULL MESSAGE              MLD
          DATA   1H                       INSURE DATA ITEM               MLD
          ELSE   1                                                       MLD
          DATA   H$MSG$                   STORE MESSAGE                  MLD
          DATA   0                        SET END OF MESSAGE             MLD
          IFGT   *-MMSGBGN,BD.MSGML*5+1,1 TEST MESSAGE TOO LONG          MLD
 P        ERR    MESSAGE TOO LONG                                        MLD
 MMSGORD  SET    MMSGORD+1                BUMP ORDINAL                   MLD
          IFGT   MMSGORD,BD.MSGMN,1       TEST TOO MANY MESSAGES         MLD
 P        ERR    TOO MANY MESSAGES                                       MLD
 MMSGL    SET    MMSGORD*BD.MSGML         SET CM WORD COUNT              MLD
          ENDM                                                           MLD
          EJECT                                                          MLD
 START    LJM    **          ENTRY POINT FOR OVERLAY INITIALIZATION      MLD
          LJM    INIT                                                    MLD
                                                                         MLD
          CON    IB       FWA OF INPUT BUFFER 
          CON    OB       FWA OF OUTPUT BUFFER
          CON    SB       FWA OF STATUS BUFFER
          CON    LIB      LENGTH OF INPUT BUFFER
          CON    LIB      LENGTH OF OUTPUT BUFFER 
          CON    LSB      LENGTH OF STATUS BUFFER 
          CON    BD.VERS  VERSION NUMBER
                                                                         MLD
*         FIXED ADDRESS TABLE OF SUBROUTINE ENTRY POINTS                 MLD
                                                                         MLD
 XREL     LJM    **                                                      MLD
          LJM    REL         RELEASE SUBROUTINE                          MLD
 XRES     LJM    **                                                      MLD
          LJM    RES         RESERVE SUBROUTINE                          MLD
 XACN     LJM    **                                                      MLD
          LJM    ACN         ACN/DCN SUBROUTINE                          MLD
 XCONN    LJM    **                                                      MLD
          LJM    CONN        CONNECT SUBROUTINE                          MLD
 XFIN     LJM    **                                                      MLD
          LJM    FIN         FUNCTION AND BLOCK INPUT SUBROUTINE         MLD
 XFOUT    LJM    **                                                      MLD
          LJM    FOUT        FUNCTION AND BLOCK OUTPUT SUBROUTINE        MLD
 XFUNC    LJM    **                                                      MLD
          LJM    FUNC        FUNCTION EQUIPMENT SUBROUTINE               MLD
 XFUN8    LJM    **                                                      MLD
          LJM    FUN81       FUNCTION CHANNEL ADAPTER SUBROUTINE         MLD
 XIN      LJM    **                                                      MLD
          LJM    IN          SLOW SPEED INPUT SUBROUTINE                 MLD
 XINB     LJM    **                                                      MLD
          LJM    INB         BLOCK INPUT SUBROUTINE                      MLD
 XOUT     LJM    **                                                      MLD
          LJM    OUT         SLOW SPEED OUTPUT SUBROUTINE                MLD
 XOUTB    LJM    **                                                      MLD
          LJM    OUTB        BLOCK OUTPUT SUBROUTINE                     MLD
 XSTATUS  LJM    **                                                      MLD
          LJM    STATUS      STATUS SUBROUTINE                           MLD
 XSTATUS8 LJM    **                                                      MLD
          LJM    STATUS8     ADAPTER STATUS SUBROUTINE                   MLD
 XTIME    LJM    ** 
          LJM    TIMEOUT     TIMEOUT SUBROUTINE 
          EJECT                                                          MLD
**        REL - RELEASE DEVICE AND I/O CHANNEL TO SYSTEM.                MLD
*                                                                        MLD
*         RELEASE DEVICE AND I/O CHANNEL TO  THE  SYSTEM  IF  ASSIGNED.  MLD
*         CALL  BD.DCH  TO FORCE COMMUNICATIONS WITH THE CPU EXECUTIVE.  MLD
*         THIS COULD CAUSE THE PPU DRIVER TO CHECKPOINT AND DROP IF THE  MLD
*         DROP  OR  CHECKPOINT  FLAGS  ARE  ON FROM THE EXEC.  IF ERROR  MLD
*         FLAGS ARE SET AT OUR CONTROL POINT, THE PPU DRIVER IS DROPPED  MLD
*         ALSO.                                                          MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - (BD.CHFG) = 0.                                          MLD
*                (REL2)    = 0.                                          MLD
*                                                                        MLD
*         USES   - S1, S2, D.Z1, D.Z2.
*                                                                        MLD
*         CALLS- DEQP, BD.DCH.                                           MLD
*                                                                        MLD
 REL      STD    S1 
          SHN    -12
          STD    S2 
          LDM    BD.CHFG                                                 MLD
          STM    REL2        SAVE INITIAL STATE OF CHANNEL ASSIGNMENT    MLD
          ZJN    REL1        IF NOT CURRENTLY ASSIGNED                   MLD
          RJM    DEQP        DISCONNECT EQUIPMENT                        MLD
 REL1     RJM    BD.DCH      DROP CHANNEL/TALK TO SYSTEM AND EXEC        MLD
          LDC    00                                                      MLD
 REL2     EQU    *-1         *** LDC 00 IF CHANNEL NOT ASSIGNED ON ENTRY MLD
*         LDC    01          *** LDC 01 IF CHANNEL ASSIGNED ON ENTRY     MLD
          ZJN    REL4        IF CHANNEL NOT ASSIGNED INITIALLY           MLD
          LDN    0                                                       MLD
          STD    D.Z1                                                    MLD
 REL3     LDM    TABLE,D.Z1                                              MLD
          ZJN    REL4        IF END OF TABLE                             MLD
          STD    D.Z2        SAVE ADDRESS                                MLD
          LDM    TABLE1,D.Z1 GET DATA FOR THIS ADDRESS                   MLD
          STI    D.Z2        MOVE CHANNEL NOT ASSIGNED FLAGS             MLD
          AOD    D.Z1                                                    MLD
          UJN    REL3        MOVE ALL ADDRESSES                          MLD
                                                                         MLD
 REL4     LJM    XREL        EXIT TO CALLER 
                                                                         MLD
 TABLE    CON    ACN1     ADDRESS TABLE OF CHANNEL ASSIGNED FLAGS 
          CON    FUN1 
          CON    FN81 
          CON    PIN1 
          CON    POUT1
          CON    STS1 
          CON    ST81 
 LTABLE   EQU    *-TABLE                                                 MLD
          DATA   0           INDICATE END OF TABLE                       MLD
 TABLE1   BSSZ   LTABLE      BUFFER FOR CHANNEL FLAGS                    MLD
          SPACE  4,18                                                    MLD
**        RES - RESERVE I/O CHANNEL.                                     MLD
*                                                                        MLD
*         RELEASE  DEVICE  VIA  DEQP.   DROP  THE  I/O CHANNEL IF BEING  MLD
*         REQUESTED  BY  SYSTEM.  COMMUNICATE  WITH  SYSTEM,  AND  TEST  MLD
*         DROP/CHECKPOINT/ERROR  FLAGS. THE I/O CHANNEL IS THEN REQUES-  MLD
*         TED AND CHANNEL ASSIGNED FLAGS  ARE  SET  IN  ALL  THE  OTHER  MLD
*         SUBROUTINES.                                                   MLD
*                                                                        MLD
*         ENTRY- (A) = ABORT ADDRESS IN CASE OF I/O ERROR DURING THE     MLD
*                EXECUTION OF THE RELEASE SEQUENCE.                      MLD
*                                                                        MLD
*         EXIT - I/O CHANNEL ASSIGNED AND CHANNEL ASSIGNED FLAGS ARE SET MLD
*                IN ALL THE OTHER SUBROUTINES.                           MLD
*                                                                        MLD
*         USES   - EC, EA, EM, D.Z1, D.Z2.
*                                                                        MLD
*         CALLS- DEQP, BD.RCH                                            MLD
*                                                                        MLD
 RES      STD    S1 
          SHN    -12
          STD    S2 
          LDN    0
          STD    EC          CLEAR ERROR REGISTERS                       MLD
          STD    EA                                                      MLD
          STD    EM                                                      MLD
          LDM    BD.CHFG                                                 MLD
          STM    RES2        SAVE INITIAL STATE OF CHANNEL ASSIGNMENT    MLD
          ZJN    RES1        IF NOT CURRENTLY ASSIGNED                   MLD
          RJM    DEQP        DISCONNECT EQUIPMENT                        MLD
 RES1     RJM    BD.RCH      DROP/REQUEST CHANNEL AS REQUESTED           MLD
          LDC    00                                                      MLD
 RES2     EQU    *-1         *** LDC 00 IF CHANNEL NOT ASSIGNED ON ENTRY MLD
*         LDC    01          *** LDC 01 IF CHANNEL ASSIGNED ON ENTRY     MLD
          NJN    RES4        IF CHANNEL ASSIGNED AT INITIAL ENTRY        MLD
          STD    D.Z1                                                    MLD
 RES3     LDM    TABLE,D.Z1                                              MLD
          ZJN    RES4        IF ALL CHANNEL FLAGS CLEARED                MLD
          STD    D.Z2                                                    MLD
          LDN    0                                                       MLD
          STI    D.Z2        INDICATE CHANNEL ASSIGNED TO THIS ROUTINE   MLD
          AOD    D.Z1                                                    MLD
          UJN    RES3        COMPLETE FOR ALL SUBROUTINES                MLD
                                                                         MLD
 RES4     LJM    XRES        EXIT TO STACK
          SPACE  4,12                                                    MLD
**        ACN - PROCESS ACTIVATE/DEACTIVATE COMMANDS.                    MLD
*                                                                        MLD
*         PROCESS ACN AND DCN COMMANDS FOR MALET LOW LEVEL LANGUAGE.     MLD
*                                                                        MLD
*         ENTRY - (A)    = ABT ADDRESS                                   MLD
*                 (D.T0) = 1 IF DCN COMMAND.                             MLD
*                 (D.T0) = 0 IF ACN COMMAND.                             MLD
*                                                                        MLD
*         EXIT  - CHANNEL ACTIVATED OR DEACTIVATED AS REQUESTED.         MLD
*                                                                        MLD
*                 ERRAAE - IF CHANNEL ALREADY ACTIVE ON ACN.             MLD
*                 ERRIOE - IF CHANNEL ALREADY INACTIVE ON ENTRY.
*                 ERRCNR - IF CONTROLLER NOT RESERVED.                   MLD
*                                                                        MLD
*         USES   - S1, S2, BD.CHAIN.
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
 ACN      STD    S1 
          SHN    -12
          STD    S2 
 ACN1     UJN    ACN4        *** JUMP INSTRUCTION IF CH NOT ASSIGNED     MLD
*         DATA   0           *** DATA 0 IF CHANNEL IS ASSIGNED           MLD
          LDD    D.T0                                                    MLD
          NJN    ACN2        IF DCN COMMAND                              MLD
          AJM    ERRAAE      ERROR IF ACN AND CH ALREADY ACTIVE          MLD
          ACN    40B                                                     MLD
          LDN    1                                                       MLD
          UJN    ACN3        BUMP P AND EXIT                             MLD
                                                                         MLD
 ACN2     AJM    ACN2A       IF ACTIVE ON ENTRY 
          LJM    ERRIOE      ERROR CH INACTIVE ON ENTRY 
  
 ACN2A    DCN    40B
          LDN    0                                                       MLD
 ACN3     STM    BD.CHAIN    SET/CLEAR CHAINING FLAG                     MLD
          LJM    XACN        EXIT TO STACK                               MLD
                                                                         MLD
 ACN4     LJM    ERRCNR      ERROR IF CHANNEL NOT RESERVED               MLD
          SPACE  4,16                                                    MLD
**        CONN - CONNECT TO EQUIPMENT.                                   MLD
*                                                                        MLD
*         COMMUNICATE WITH SYSTEM THEN CONNECT TO THE EQUIPMENT.         MLD
*                                                                        MLD
*         ENTRY - (A) = ABT ADDRESS.                                     MLD
*                                                                        MLD
*         EXIT  - CHANNEL RESERVED AND EQUIPMENT CONNECTED.              MLD
*                 (LF) = LAST FUNCTION ISSUED.                           MLD
*                 (L8) = LAST 668X FUNCTION ISSUED.                      MLD
*                 (SB) = LAST 668X STATUS.                               MLD
*                                                                        MLD
*                 ERRAAE - IF CHANNNEL ACTIVE ON ENTRY.                  MLD
*                 ERRNI8 - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                 ERRNIF - IF NO INACTIVE TO CONNECT FUNCTION.           MLD
*                 ERRAFO - IF HUNG ACTIVE AND FULL.                      MLD
*                 ERRIAA - IF INACTIVE AFTER ACTIVATE                    MLD
*                                                                        MLD
*         USES   - L8, LF, CONNECT. 
*                                                                        MLD
*         CALLS  - RES, T6S, TIME.
*                                                                        MLD
 CONN     RJM    XRES+1      RELEASE I/O DEVICE AND CHANNEL IF REQUIRED  MLD
 CON1     UJN    CON2        *** JUMP INSTRUCTION IF 3000 DEVICE         MLD
*         DATA   0           *** DATA 0 IF 6000 OR BC DEVICE             MLD
          LJM    XCONN       EXIT TO STACK                               MLD
 CON2     AJM    ERRAAE,0    ERROR IF CHANNEL IS ACTIVE AT ENTRY
          LDC    SEL81                                                   MLD
          RJM    FNCSEL      DO 6681 FUNCTION PLUS DELAYS 
 CON3     UJN    CON8        *** JUMP INSTRUCTION IF EQUIPMENT 0-3       MLD
*         DATA   0           *** DATA 0 INSTRUCTION IF EQUIPMENT 4-7     MLD
                                                                         MLD
          LDC    **                                                      MLD
 CON4     EQU    *-1         *** CONNECT CODE STORED HERE                MLD
          STD    LF                                                      MLD
          RJM    FNCDEL      ISSUE FUNCTION 
          UJN    CON13
                                                                         MLD
 CON8     LDC    SELCON                                                  MLD
          RJM    FUNSEL      DO 6681 FUNCTION PLUS DELAYS 
          LDC    **                                                      MLD
 CON9     EQU    *-1         *** CONNECT CODE STORED HERE                MLD
          STD    LF                                                      MLD
          OAN    40B                                                     MLD
          LCN    0           INITIALIZE FOR SHORT DELAY 
 CON10    EJM    CON12,0     IF BYTE TAKEN                               MLD
          RJM    TIME 
          PJN    CON10       IF DELAY NOT EXPIRED 
 ERRAFO   LDC    ER.AFO 
          LJM    ERR
                                                                         MLD
 CON12    IJM    CON13,0                                                 MLD
          DCN    40B                                                     MLD
                                                                         MLD
*         TEST 668X STATUS TO INSURE NO PROBLEMS                         MLD
                                                                         MLD
 CON13    RJM    T6S         TEST 668X STATUS                            MLD
          LDN    1                                                       MLD
          STM    CONNECT     SET CONNECTED FLAG                          MLD
          LJM    XCONN       EXIT TO STACK                               MLD
          SPACE  4,16                                                    MLD
**        FIN - FUNCTION AND INPUT DATA.                                 MLD
*                                                                        MLD
*         FUNCTION AND INPUT DATA USING IAM INSTRUCTION.                 MLD
*                                                                        MLD
*         ENTRY - (A)    = ABT ADDRESS.                                  MLD
*                 (D.T0) = FUNCTION TO ISSUE.                            MLD
*                 (WC)   = WORD COUNT TO INPUT.                          MLD
*                 (BA)   = OUTPUT ADDRESS.                               MLD
*                                                                        MLD
*         EXIT  - FUNCTION ISSUED AND DATA INPUT TO IB.                  MLD
*                 (WT) = WORDS TRANSMITTED.                              MLD
*                 (LF) = LAST FUNCTION ISSUED.                           MLD
*                 (L8) = LAST 668X FUNCTION ISSUED.                      MLD
*                 (SB) = LAST 668X STATUS.                               MLD
*                                                                        MLD
*                 ERRWC  - IF ERROR IN WORD COUNT.                       MLD
*                 ERRNI8 - IF NO INACTIVE FROM 668X.                     MLD
*                                                                        MLD
*         USES   - S1, S2, WT, L8, IB, D.Z1.
*                                                                        MLD
*         CALLS - FUN,T6S.                                               MLD
*                                                                        MLD
 FIN      RJM    SVRA        SAVE ABORT ADDRESSES 
          LDD    WC                                                      MLD
          ZJN    FIN1        ERROR IF NO WORDS TO TRANSMIT               MLD
          ADD    BA                                                      MLD
          SBD    LB                                                      MLD
          PJN    FIN1        ERROR IF OUT OF RANGE OF IB                 MLD
          LDD    BA                                                      MLD
          ADD    IA                                                      MLD
          STM    FIN5        SET FWA FOR READ INTO INPUT BUFFER          MLD
          LDC    FIN3 
          STM    XFUNC+1     STORE RETURN ADDRESS FROM FUNC              MLD
          LJM    FUN1        ENTER FUNCTION ROUTINE TO ISSUE FUNCTION    MLD
                                                                         MLD
 FIN1     LJM    ERRWC       ERROR IF ILLEGAL WC OR WC+BA                MLD
                                                                         MLD
 FIN3     UJN    FIN4        *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
          LDC    SELIN                                                   MLD
          RJM    FNCSEL      DO 6681 FUNCTION PLUS DELAYS 
 FIN4     ACN    40B                                                     MLD
          LDD    WC                                                      MLD
          IAM    **,0                                                    MLD
 FIN5     EQU    *-1         *** FWA STORED HERE                         MLD
          STD    D.Z1        SAVE REMAINDER                              MLD
          LDD    WC                                                      MLD
          SBD    D.Z1 
 FIN6     STD    WT          SET WORDS TRANSMITTED TO WC                 MLD
          IJM    FIN6A
          DCN    40B
 FIN6A    SFM    ERCPE1,CH   CHECK FOR CH PARITY ERROR
 FIN7     UJN    FIN8        *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
          RJM    T6S         TEST 668X STATUS                            MLD
 FIN8     LJM    XFIN        EXIT TO STACK
          SPACE  4,18                                                    MLD
**        FOUT- FUNCTION AND OUTPUT DATA.                                MLD
*                                                                        MLD
*         FUNCTION AND OUTPUT DATA USING OAM INSTRUCTION.                MLD
*                                                                        MLD
*         ENTRY - (A)    = ABT ADDRESS.                                  MLD
*                 (D.T0) = FUNCTION TO ISSUE.                            MLD
*                 (WC)   = WORD COUNT.                                   MLD
*                 (BA)   = BEGINNING ADDRESS.                            MLD
*                                                                        MLD
*         EXIT  - FUNCTION ISSUED AND DATA OUTPUT FROM OB.               MLD
*                 (WT) = WORDS TRANSMITTED.                              MLD
*                 (LF) = LAST FUNCTION ISSUED.                           MLD
*                 (L8) = LAST 668X FUNCTION ISSUED.                      MLD
*                 (SB) = LAST 668X STATUS.                               MLD
*                                                                        MLD
*                 ERRWC  - IF WORD COUNT ERROR.                          MLD
*                 ERRNI8 - IF NO INACTIVE FROM 668X.                     MLD
*                 ERRLOL - IF LAST OUTPUT LOST.                          MLD
*                                                                        MLD
*         USES   - S1, S2, WT, L8, D.Z1.
* 
*         CALLS  - FUN, T6S, TIME.
*                                                                        MLD
 FOUT     RJM    SVRA        SAVE ABORT ADDRESSES 
          LDD    WC                                                      MLD
          ZJN    FOUT1       ERROR IF NO WORDS TO TRANSMIT               MLD
          ADD    BA                                                      MLD
          SBD    LB                                                      MLD
          PJN    FOUT1       ERROR IF OUT OF RANGE OF IB                 MLD
          LDD    BA                                                      MLD
          ADD    OA                                                      MLD
          STM    FOUT5       SET FWA FOR WRITING FROM OUTPUT BUFFER      MLD
          LDC    FOUT3
          STM    XFUNC+1     STORE RETURN ADDRESS FROM FUNC              MLD
          LJM    FUN1        ENTER FUNCTION ROUTINE TO ISSUE FUNCTION    MLD
                                                                         MLD
 FOUT1    LJM    ERRWC       ERROR IF ILLEGAL WC OR WC+BA                MLD
                                                                         MLD
 FOUT3    UJN    FOUT4       *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
          LDC    SELOUT                                                  MLD
          RJM    FNCSEL      DO 6681 FUNCTION PLUS DELAYS 
 FOUT4    ACN    40B                                                     MLD
          LDD    WC                                                      MLD
          OAM    **,0                                                    MLD
 FOUT5    EQU    *-1         *** FWA STORED HERE                         MLD
          STD    D.Z1 
          LDN    0           INITIALIZE FOR LONG DELAY
 FOUT6    EJM    FOUT8,0     IF LAST BYTE TAKEN                          MLD
          RJM    TIME 
          PJN    FOUT6       IF DELAY NOT EXPIRED 
          LJM    ERRLOL      ERROR IF LAST OUTPUT LOST                   MLD
                                                                         MLD
 FOUT8    IJM    FOUT9,0                                                 MLD
          DCN    40B                                                     MLD
 FOUT9    LDD    WC 
          SBD    D.Z1 
 FOUT10   STD    WT          SET WORDS TRANSMITTED                       MLD
 FOUT11   UJN    FOUT12      *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
          RJM    T6S         TEST 668X STATUS                            MLD
 FOUT12   LJM    XFOUT
          SPACE  4,18                                                    MLD
**        FUNC- SEND FUNCTION.                                           MLD
*                                                                        MLD
*         FUNCTION SENT TO EQUIPMENT STATUS TESTED.                      MLD
*                                                                        MLD
*         ENTRY - (A)    = ABT ADDRESS.                                  MLD
*                 (D.T0) = FUNCTION TO SEND.                             MLD
*                                                                        MLD
*         EXIT  - FUNCTION ISSUED.                                       MLD
*                 (LF) = LAST FUNCTION ISSUED.                           MLD
*                 (L8) = LAST 668X FUNCTION ISSUED.                      MLD
*                 (SB) = LAST 668X STATUS.                               MLD
*                                                                        MLD
*                 ERRAAE - IF ACTIVE UPON ENTRY.                         MLD
*                 ERRNIF - IF NO INACTIVE TO FUNCTION.                   MLD
*                 ERRCNR - IF CONTROLLER NOT RESERVED.                   MLD
*                 ERRNI8 - IF NO INACTIVE FROM 668X.                     MLD
*                 ERRIAA - IF CH INACTIVE AFTER ACTIVATE.                MLD
*                 ERRAFO - IF CH HUNG FULL AFTER OUTPUT.                 MLD
*                                                                        MLD
*         USES   - S1, S2, D.T0, L8, LF, CONNECT. 
* 
*         CALLS  - TIME, T6S. 
*                                                                        MLD
 FUNC     STD    S1          SAVE ABORT ADDRESS 
          SHN    -12
          STD    S2 
 FUN1     UJN    FUN6        *** JUMP INSTRUCTION IF CHAN NOT ASSIGNED   MLD
*         DATA   0           *** DATA 0 IF CHANNEL ASSIGNED              MLD
          AJM    ERRAAE,0    ERROR IF ACTIVE UPON ENTRY                  MLD
 FUN2     UJN    FUN7        *** JUMP INSTRUCTION IF 3000 DEVICE         MLD
*         DATA   0           *** DATA 0 IF 6000 OR BC DEVICE ASSIGNED    MLD
          LDD    D.T0        GET FUNCTION CODE                           MLD
          LPC    777B        MASK LOWER BITS                             MLD
          ADC    **                                                      MLD
 FUN3     EQU    *-1         *** EQUIPMENT NO. STORED HERE IN BITS 9-11  MLD
          STD    LF                                                      MLD
          FAN    40B                                                     MLD
          LDN    0           INITIALIZE FOR LONG DELAY
 FUN4     IJM    XFUNC,0     EXIT TO STACK IF INACTIVE                   MLD
          RJM    TIME 
          PJN    FUN4        IF DELAY NOT EXPIRED 
          LJM    ERRNIF      ERROR IF NO INACTIVE TO FUNCTION            MLD
                                                                         MLD
 FUN6     LJM    ERRCNR      ERROR IF CHANNEL IS NOT ASSIGNED            MLD
                                                                         MLD
*         3000 DEVICE IS ASSIGNED                                        MLD
                                                                         MLD
 FUN7     LDD    D.T0                                                    MLD
          STD    LF          SAVE LAST FUNCTION                          MLD
          SHN    -9                                                      MLD
          NJN    FUN11       IF FUNCTION IS NOT 0XXX                     MLD
          LDD    D.T0                                                    MLD
          RJM    FNCDEL      ISSUE FUNCTION 
          UJN    FUN15
                                                                         MLD
 FUN11    LDC    SELFUN      SELECT MODE 2 FUNCTION SINCE NOT 0XXX       MLD
          RJM    FUNSEL      DO 6681 FUNCTION PLUS DELAYS 
          LDD    D.T0                                                    MLD
          STD    LF                                                      MLD
          OAN    40B                                                     MLD
          LCN    0           INITIALIZE FOR SHORT DELAY 
 FUN12    EJM    FUN14,0     IF FUNCTION ACCEPTED                        MLD
          RJM    TIME 
          PJN    FUN12       IF DELAY NOT EXPIRED 
          LJM    ERRAFO      ERROR IF HUNG FULL AFTER OUTPUT             MLD
                                                                         MLD
 FUN14    IJM    FUN15,0                                                 MLD
          DCN    40B         INSURE CHANNEL INACTIVE                     MLD
                                                                         MLD
*         TEST 668X STATUS TO INSURE NO PROBLEMS                         MLD
                                                                         MLD
 FUN15    LDD    D.T0                                                    MLD
          STM    CONNECT     SET/CLEAR CONNECTED FLAG ( ZERO RELEASES)   MLD
          RJM    T6S         TEST 668X STATUS                            MLD
          LJM    XFUNC       EXIT TO STACK                               MLD
          SPACE  4,16                                                    MLD
**        FUN81 - FUNCTION 668X.                                         MLD
*                                                                        MLD
*         ISSUE FUNCTION TO 668X.                                        MLD
*                                                                        MLD
*         ENTRY - (A)    = ABT ADDRESS.                                  MLD
*                 (D.T0) = FUNCTION TO SEND.                             MLD
*                                                                        MLD
*         EXIT -  FUNCTION ISSUED TO 668X.                               MLD
*                 (L8) = LAST 668X FUNCTION ISSUED.                      MLD
*                 (SB) = LAST 668X STATUS.                               MLD
*                                                                        MLD
*                 ERRILL - IF ILLEGAL DEVICE OR FUNCTION.                MLD
*                 ERRCNR - IF CONTROLLER NOT RESERVED.                   MLD
*                 ERRNI8 - IF NO INACTIVE FROM 668X.                     MLD
*                                                                        MLD
*         USES   - S1, S2, CONNECT, L8. 
* 
*         CALLS  - SVRA.
*                                                                        MLD
 FUN81    STD    S1          SAVE ABORT ADDRESS 
          SHN    -12
          STD    S2 
 FN81     UJN    FN84        *** JUMP INSTRUCTION IF CHAN NOT ASSIGNED   MLD
*         DATA   0           *** DATA 0 IF CHANNEL ASSIGNED ON ENTRY     MLD
 FN82     UJN    FN85        *** JUMP INSTRUCTION IF 3000 DEVICE         MLD
*         DATA   0           *** DATA 0 IF 6000 OR BC DEVICE ASSIGNED    MLD
                                                                         MLD
 FN83     LJM    ERRILL      ERROR IF ILLEGAL DEVICE OR FUNCTION         MLD
                                                                         MLD
 FN84     LJM    ERRCNR      ERROR IF CHANNEL IS NOT RESERVED            MLD
                                                                         MLD
 FN85     LDD    AL 
          SBN    20B
          MJN    FN85A       IF ACCESS LEVEL LESS THAN 20B
          LDD    D.T0 
          RJM    FNCSEL      DO 6681 FUNCTION PLUS DELAYS 
          LDD    D.T0 
          STM    CONNECT     CLEAR CONNECT IF ZERO FUNCTION 
          STM    L8 
          UJN    FN87A
  
 FN85A    LDD    D.T0        GET 668X FUNCTION CODE TO ISSUE
          SHN    -6                                                      MLD
          SBN    12B                                                     MLD
          MJN    FN83        ILLEGAL IF LESS THAN 1200B                  MLD
          SBN    17B-12B                                                 MLD
          ZJN    FN83        IF AL NOT GRANTED FOR MASTER CLEARS
                                                                         MLD
FN86      SBN    40B-17B                                                 MLD
          PJN    FN83        ILLEGAL IF GREATER THAN 3777B               MLD
FN87      LDD    D.T0                                                    MLD
          AJM    ERRAAE      ERROR IF CH ACTIVE ON ENTRY                 MLD
          RJM    FNCSEL      DO 6681 FUNCTION PLUS DELAYS 
 FN87A    LDD    D.T0 
          SHN    -6                                                      MLD
          SBN    17B                                                     MLD
          NJN    FN88        IF NOT A MASTER CLEAR FUNCTION              MLD
          STM    CONNECT     CLEAR CONNECTED FLAG IF MASTER CLEAR        MLD
 FN88     LJM    XFUN8       EXIT TO STACK
          SPACE  4,14                                                    MLD
**        IN - INPUT DATA.                                               MLD
*                                                                        MLD
*         INPUT DATA TO INPUT BUFFER USING IAN INSTRUCTION.              MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS                                    MLD
*                (D.T0) = CHAINING IN PROGRESS FLAG.                     MLD
*                (D.T1) = WC IS NON ZERO                                 MLD
*                (D.T2) = BUFFER ADDRESS IF (D.T1) NONZERO               MLD
*                (WC)   = WORD COUNT IF (D.T1) IS ZERO                   MLD
*                (BA)   = BEGINNING ADDRESS IF (D.T1) IS ZERO            MLD
*                                                                        MLD
*         EXIT - DATA READ TO INPUT BUFFER.                              MLD
*                (WT) = NUMBER OF WORDS TRANSMITTED.                     MLD
*                (LF) = LAST EQUIPMENT FUNCTION ISSUED.                  MLD
*                (L8) = LAST 668X FUNCTION ISSUED.                       MLD
*                (SB) = LAST 668X STATUS.                                MLD
*                (BD.CHAIN) = CHAINING IN PROGRESS FLAG.                 MLD
*                                                                        MLD
*                ERRAEI - IF NO FULL IN ALLOTED TIME.                    MLD
*                ERRAAD - IF ACTIVE AFTER DEACTIVATE.                    MLD
*                                                                        MLD
*         USES   - WT, BD.CHAIN.
*                                                                        MLD
*         CALLS- PIN, T6S.                                               MLD
*                                                                        MLD
 IN       RJM    PIN         PREPARE FOR INPUT                           MLD
 IN0      LCN    3           INITIALIZE FOR LONG DELAY
 IN1      FJM    IN3,0       IF DATA IS AVAILABLE                        MLD
 IN2      SBN    4           ** SBN 4 IF 1X SPEED PPU **
*         SBN    2           ** SBN 2 IF 2X SPEED PPU **
          NJN    IN1         IF DELAY NOT EXPIRED 
          IJM    IN5,0
 ERRAEI   LDC    ER.AEI 
          LJM    ERR
                                                                         MLD
 IN3      IAN    40B         GET WORD                                    MLD
          STM    **,WT       STORE IT INTO INPUT BUFFER                  MLD
 IN4      EQU    *-1         ADDRESS OF INPUT BUFFER STORED HERE         MLD
          AOD    WT          BUMP WORDS TRANSMITTED                      MLD
          SBD    SC                                                      MLD
          NJN    IN0         IF REQUEST WORD COUNT NOT SATISFIED
 IN5      LDD    D.T0                                                    MLD
          NJN    IN6         IF CHAINING IN PROGRESS                     MLD
          IJM    IN5B,0      INSURE CHANNEL INACTIVE
 IN5A     DCN    40B
*         DATA   0           **IF 3000 DEVICE 
          AJM    ERRAAD,0    ERROR IF ACTIVE AFTER DEACTIVATE            MLD
 IN5B     SFM    ERCPE1,CH   CHECK FOR CH PARITY ERROR
 IN6      STM    BD.CHAIN    SET/CLEAR CHAINING FLAG                     MLD
          NJN    IN8         BYPASS STATUS TESTING IF CHAINING           MLD
 IN7      UJN    IN8         *** JUMP INSTUCTION IF 6000/BC DEVICE       MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
          RJM    T6S         TEST 668X STATUS                            MLD
 IN8      LJM    XIN         EXIT TO STACK
          SPACE  4,15                                                    MLD
**        INB - INPUT DATA WITH IAM INSTRUCTION.                         MLD
*                                                                        MLD
*         INPUT DATA TO IB USING THE IAM INSTRUCTION.                    MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS                                    MLD
*                (D.T0) = CHAINING IN PROGRAESS.                         MLD
*                (D.T1) = WC IS NON ZERO                                 MLD
*                (D.T2) = BUFFER ADDRESS IF (D.T1) NONZERO               MLD
*                (WC)   = WORD COUNT IF (D.T1) IS ZERO                   MLD
*                (BA)   = BEGINNING ADDRESS IF (D.T1) IS ZERO            MLD
*                                                                        MLD
*         EXIT - DATA READ TO INPUT BUFFER.                              MLD
*                (WT) = NUMBER OF WORDS TRANSMITTED.                     MLD
*                (LF) = LAST EQUIPMENT FUNCTION ISSUED.                  MLD
*                (L8) = LAST 668X FUNCTION ISSUED.                       MLD
*                (SB) = LAST 668X STATUS.                                MLD
*                (BD.CHAIN) = CHAINING IN PROGRESS FLAG.                 MLD
*                                                                        MLD
*         USES   - WT, D.Z1, BD.CHAIN.
*                                                                        MLD
*         CALLS- PIN, T6S.                                               MLD
*                                                                        MLD
 INB      RJM    PIN         PREPARE FOR INPUT                           MLD
          LDD    SC                                                      MLD
          IAM    **,0                                                    MLD
 INB1     EQU    *-1         FWA OF INPUT BUFFER TO READ TO STORED HERE  MLD
          STD    D.Z1        SAVE WORD COUNT LEFT AFTER INPUT            MLD
          LDD    D.T0                                                    MLD
          NJN    INB2        IF CHAINING                                 MLD
          IJM    INB1A,0     IF INACTIVE
          DCN    40B         DEACTIVATE CHANNEL                          MLD
 INB1A    SFM    ERCPE1,CH   CHECK FOR CH PARITY ERROR
 INB2     LDD    SC 
          SBD    D.Z1 
 INB3     STD    WT                                                      MLD
          LDD    D.T0                                                    MLD
          STM    BD.CHAIN    SET/CLEAR CHAINING IN PROGRESS FLAG         MLD
          NJN    INB5        BYPASS STATUS TESTING IF CHAINING           MLD
 INB4     UJN    INB5        *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
          RJM    T6S         TEST 668X STATUS                            MLD
 INB5     LJM    XINB        EXIT TO STACK
          SPACE  4,19                                                    MLD
**        OUT - OUTPUT DATA USING OAN INSTRUCTION.                       MLD
*                                                                        MLD
*         OUTPUT DATA USING OAN INSTRUCTION FROM THE OUTPUT BUFFER.      MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS                                    MLD
*                (D.T0) = CHAININ IN PROGRESS.
*                (D.T1) = WC IS NON ZERO                                 MLD
*                (D.T2) = BUFFER ADDRESS IF (D.T1) NONZERO               MLD
*                (WC)   = WORD COUNT IF (D.T1) IS ZERO                   MLD
*                (BA)   = BEGINNING ADDRESS IF (D.T1) IS ZERO            MLD
*                                                                        MLD
*         EXIT - DATA OUTPUT FROM THE OUTPUT BUFFER.                     MLD
*                (WT) = NUMBER OF WORDS TRANSMITTED.                     MLD
*                (LF) = LAST EQUIPMENT FUNCTION ISSUED.                  MLD
*                (L8) = LAST 668X FUNCTION ISSUED.                       MLD
*                (SB) = LAST 668X STATUS.                                MLD
*                (BD.CHAIN) = CHAINING IN PROGRESS FLAG.                 MLD
*                                                                        MLD
*                ERRAFO - IF CHANNEL HUNG FULL ON OUTPUT.                MLD
*                ERRLOL - IF LAST OUTPUT NOT ACCEPTED.                   MLD
*                ERRAAD - IF CH ACTIVE AFTER DE-ACTIVATE.                MLD
*                                                                        MLD
*         USES   - WT.
*                                                                        MLD
*         CALLS- POUT, T6S.                                              MLD
*                                                                        MLD
 OUT      RJM    POUT        PREPARE FOR OUTPUT                          MLD
 OUT0     LCN    3
 OUT1     SBN    4           ** SBN 4 IF 1X SPEED PPU **
*         SBN    2           ** SBN 2 IF 2X SPEED PPU **
*         SBN    1           ** SBN 1 IF 4X SPEED PPU **
          NJN    OUT2        IF DELAY NOT EXPIRED 
          LJM    ERRAFO      ERROR IF HUNG FULL ON OUTPUT                MLD
                                                                         MLD
 OUT2     FJM    OUT1,0                                                  MLD
          IJM    OUT4,0 
          LDM    **,WT                                                   MLD
 OUT3     EQU    *-1                                                     MLD
          OAN    40B                                                     MLD
          AOD    WT                                                      MLD
          SBD    SC                                                      MLD
          NJN    OUT0        IF ALL WORDS NOT OUTPUT
 OUT4     LDD    D.T0 
          NJN    OUT7        IF CHAINING REQUESTED                       MLD
          LCN    3
 OUT4A    EJM    OUT6,0      IF RESPONSE TO LAST WORD 
 OUT5     SBN    4           *** SBN 4 IF 1X SPEED PP *** 
*         SBN    2           *** SBN 2 IF 2X SPEED PP *** 
*         SBN    1           *** SBN 1 IF 4X SPEED PP *** 
          NJN    OUT4A       IF NOT TIMEOUT 
          LJM    ERRLOL      ERROR IF LAST OUTPUT LOST
  
 OUT6     IJM    OUT7,0 
          DCN    40B                                                     MLD
          AJM    ERRAAD,0    ERROR IF ACTIVE AFTER DEACTIVATE            MLD
 OUT7     LDD    D.T0        CHAINING FLAG
          STM    BD.CHAIN    SET CLEAR CHAINING IN PROGRESS FLAG
          NJN    OUT9        BYPASS STATUS TESTING IF CHAINING           MLD
 OUT8     UJN    OUT9        *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
          RJM    T6S         TEST 668X STATUS                            MLD
 OUT9     LJM    XOUT        EXIT TO STACK
          SPACE 4,18                                                     MLD
**        OUTB - OUTPUT USING OAM INSTRUCTION.                           MLD
*                                                                        MLD
*         OUTPUT DATA FROM THE OUTPUT BUFFER USING OAM INSTRUCTION.      MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS                                    MLD
*                (D.T0) = CHAINING IN PROGRAESS.                         MLD
*                (D.T1) = WC IS NON ZERO                                 MLD
*                (D.T2) = BUFFER ADDRESS IF (D.T1) NONZERO               MLD
*                (WC)   = WORD COUNT IF (D.T1) IS ZERO                   MLD
*                (BA)   = BEGINNING ADDRESS IF (D.T1) IS ZERO            MLD
*                                                                        MLD
*         EXIT - DATA OUTPUT FROM THE OUTPUT BUFFER.                     MLD
*                (WT) = NUMBER OF WORDS TRANSMITTED.                     MLD
*                (LF) = LAST EQUIPMENT FUNCTION ISSUED.                  MLD
*                (L8) = LAST 668X FUNCTION ISSUED.                       MLD
*                (SB) = LAST 668X STATUS.                                MLD
*                (BD.CHAIN) = CHAINING IN PROGRESS FLAG.                 MLD
*                                                                        MLD
*                ERRLOL - IF LAST OUTPUT NOT ACCEPTED.                   MLD
*                ERRAAD - IF ACTIVE AFTER DE-ACTIVATE.                   MLD
*                                                                        MLD
*         USES   WT, D.Z1, BD.CHAIN.
* 
*         CALLS  - POUT TIME, T6S.
*                                                                        MLD
 OUTB     RJM    POUT        PREPARE FOR OUTPUT                          MLD
          LDD    SC                                                      MLD
          OAM    **,0                                                    MLD
 OUTB1    EQU    *-1         *** FWA OF OUTPUT STORED HERE               MLD
          STD    D.Z1        SAVE WORDS REMAINING                        MLD
          LDN    0           INITIALIZE FOR LONG DELAY
 OUTB2    EJM    OUTB4,0     IF RESPONSE TO LAST BYTE                    MLD
          RJM    TIME 
          PJN    OUTB2       IF DELAY NOT EXPIRED 
          LJM    ERRLOL      ERROR IF LAST OUTPUT LOST                   MLD
                                                                         MLD
 OUTB4    LDD    D.T0                                                    MLD
          NJN    OUTB5       IF CHAINING REQUESTED                       MLD
          IJM    OUTB5,0                                                 MLD
          DCN    40B                                                     MLD
          AJM    ERRAAD,0    ERROR IF ACTIVE AFTER DEACTIVATE            MLD
 OUTB5    LDD    SC 
          SBD    D.Z1 
 OUTB6    STD    WT                                                      MLD
          LDD    D.T0                                                    MLD
          STM    BD.CHAIN    SET/CLEAR CHAINING IN PROGRESS FLAG         MLD
          NJN    OUTB8       BYPASS STATUS TESTING IF CHAINING           MLD
 OUTB7    UJN    OUTB8       *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
          RJM    T6S         TEST 668X STATUS                            MLD
 OUTB8    LJM    XOUTB       EXIT TO STACK
          SPACE  4,22                                                    MLD
**        STATUS - GET EQUIPMENT STATUS.                                 MLD
*                                                                        MLD
*         GET EQUIPMENT STATUS.                                          MLD
*                                                                        MLD
*         ENTRY- (A)    = ABORT ADDRESS                                  MLD
*                (D.T0) = NUMBER OF WORDS.                               MLD
*                                                                        MLD
*         EXIT - STATUS READ TO INPUT,OUTPUT OR STATUS BUFFER.           MLD
*                (WT) = NUMBER OF WORDS TRANSMITTED.                     MLD
*                (L8) = LAST 668X FUNCTION ISSUED.                       MLD
*                                                                        MLD
*                ERRAAE  - IF ACTIVE ON ENTRY.                           MLD
*                ERRWC   - IF WORD COUNT ERROR.                          MLD
*                ERRCNR  - IF CHANNEL NOT RESERVED.                      MLD
*                ERRNI8  - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRNFES - IF NO FULL ON EQUIPMENT STATUS.               MLD
*                ERRIAA  - IF NO INACTIVE AFTER DE-ACTIVATE.             MLD
*                ERRIBF  - IF INACTIVE BEFORE FULL ON INPUT.             MLD
*                ERRAEI  - IF CH HUNG ACTIVE AND EMPTY.                  MLD
*                ERRAAD  - IF ACTIVE BEFORE DEACTIVE.                    MLD
*                                                                        MLD
*         USES   - S1, S2, L8, WT, D.T1.
* 
*         CALLS  - TIME, SVRA.
*                                                                        MLD
 STATUS   RJM    SVRA        SAVE ABORT ADDRESSES 
 STS1     UJN    STS3        *** JUMP INSTRUCTION IF CHAN NOT ASSIGNED   MLD
*         DATA   0           *** DATA 0 IF CHANNEL ASSIGNED ON ENTRY     MLD
          AJM    ERRAAE,0    ERROR IF ACTIVE AT ENTRY                    MLD
          LDD    D.T0                                                    MLD
          ZJN    STS2        ERROR IF NO WORDS TO TRANSMIT               MLD
          ADD    D.T1                                                    MLD
          ADC    -SBLWA                                                  MLD
          MJN    STS4        IF LWA OF STATUS TO READ IS IN IB,OB OR SB  MLD
 STS2     LJM    ERRWC       ERROR IF BUFFER REFERENCE OR WC ERROR       MLD
                                                                         MLD
 STS3     LJM    ERRCNR      ERROR IF CHANNEL IS NOT RESERVED            MLD
                                                                         MLD
 STS4     LDD    D.T1                                                    MLD
          SBD    IA                                                      MLD
          MJN    STS2        IF FWA IS NOT WITHIN IB, OB OR SB           MLD
 STS5     UJN    STS6        *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
                                                                         MLD
*         3000 DEVICE ASSIGNED.  PREPARE IT FOR STATUS INPUT.            MLD
                                                                         MLD
          LDC    SELEQS                                                  MLD
          RJM    FUNSEL      DO 6681 FUNCTION PLUS DELAYS 
          FJM    STS9,0      IF STATUS IS AVAILABLE                      MLD
          LJM    ERRNFES     ERROR IF NO FULL ON EQUIP STATUS REQUEST    MLD
                                                                         MLD
 STS6     ACN    40B                                                     MLD
          IJM    ERRIAA,0    ERROR IF INACTIVE AFTER AN ACTIVATE         MLD
 STS6A    LDN    0           INITIALIZE FOR LONG DELAY
 STS7     FJM    STS9,0      IF STATUS IS AVAILABLE                      MLD
          RJM    TIME 
          PJN    STS7        IF DELAY NOT EXPIRED 
          IJM    ERRIBF,0    ERROR IF INACTIVE BEFORE FULL ON STATUS
          LJM    ERRAEI      ERROR IF CHANNEL HUNG ACTIVE AND EMPTY      MLD
                                                                         MLD
 STS9     IAN    40B                                                     MLD
          STI    D.T1        STORE STATUS INPUT                          MLD
          AOD    WT          BUMP WORDS READ                             MLD
          AOD    D.T1                                                    MLD
          SOD    D.T0                                                    MLD
          NJN    STS6A       IF ALL REQUEST WORDS NOT INPUT 
          IJM    STS9A,0     IF INACTIVE
          DCN    40B                                                     MLD
          AJM    ERRAAD,0    ERROR IF ACTIVE AFTER DEACTIVATE            MLD
 STS9A    SFM    ERCPE1,CH   CHECK FOR CH PARITY ERROR
 STS10    LJM    XSTATUS
          SPACE  4,20                                                    MLD
**        STATUS8 - GET 668X STATUS.                                     MLD
*                                                                        MLD
*         GET 6681 STATUS AND STORE INTO ((D.T0))                        MLD
*                                                                        MLD
*         ENTRY- (A)    = ABORT ADDRESS.                                 MLD
*                (D.T0) = ADDRESS TO STORE STATUS.                       MLD
*                                                                        MLD
*         EXIT - STATUS READ TO INPUT,OUTPUT OR STATUS BUFFER.           MLD
*                (WT) = NUMBER OF WORDS TRANSMITTED.                     MLD
*                (L8) = LAST 668X FUNCTION ISSUED.                       MLD
*                                                                        MLD
*                ERRILL  - IF USED FOR 6000 OR BC.                       MLD
*                ERRCNR  - IF CHANNEL NOT RESERVED.                      MLD
*                ERRWC   - IF WORD COUNT ERROR.                          MLD
*                ERRAAE  - IF ACTIVE ON ENTRY.                           MLD
*                ERRNI8  - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRNF8S - IF NO FULL AFTER 668X STATUS REQUEST.         MLD
*                ERRIAI8 - IF INACTIVE AFTER 668X STATUS INPUT.          MLD
*                ERRAAD  - IF ACTIVE BEFORE DEACTIVE.                    MLD
*                                                                        MLD
*         USES   - S1, S2, L8.
*                                                                        MLD
*         CALLS- NONE                                                    MLD
*                                                                        MLD
 STATUS8  RJM    SVRA        SAVE ABORT ADDRESSES 
 ST81     UJN    ST83        *** JUMP INSTRUCTION IF CHAN NOT ASSIGNED   MLD
*         DATA   0           *** DATA 0 IF CHANNEL ASSIGNED ON ENTRY     MLD
                                                                         MLD
 ST82     UJN    ST84        *** JUMP INSTRUCTION IF 3000 DEVICE         MLD
*         DATA   0           *** DATA 0 IF 6000/BC DEVICE ASSIGNED       MLD
 ERRILL   LDC    ER.ILL 
 ST82A    LJM    ERR
                                                                         MLD
 ST83     LJM    ERRCNR      ERROR IF CHANNEL IS NOT RESERVED            MLD
                                                                         MLD
 ST84     LDD    D.T0                                                    MLD
          SBD    IA                                                      MLD
          MJN    ERRWC       IF STATUS ADDRESS BELOW INPUT BUFFER 
          LDD    D.T0                                                    MLD
          ADC    -SBLWA                                                  MLD
          MJN    ST86        IF INSIDE IB, OB, OR SB                     MLD
 ERRWC    LDC    ER.WC
          UJN    ST82A
                                                                         MLD
 ST86     AJM    ERRAAE,0    ERROR IF ACTIVE AT ENTRY                    MLD
          LDC    SEL81S                                                  MLD
          RJM    FUNSEL      DO 6681 FUNCTION PLUS DELAYS 
          EJM    ERRNF8S,0   ERROR IF NO FULL AFTER 668X STATUS REQUEST  MLD
          IAN    40B                                                     MLD
          STI    D.T0        SAVE STATUS                                 MLD
          AOD    WT          BUMP WORDS TRANSMITTED REGISTER             MLD
          IJM    ERRIAI8,0   ERROR IF INACTIVE AFTER 668X STATUS INPUT   MLD
          DCN    40B                                                     MLD
          AJM    ERRAAD,0    ERROR IF ACTIVE AFTER DEACTIVATE            MLD
          SFM    ERCPE1,CH   CHECK FOR CH PARITY ERROR
          LJM    XSTATUS8    EXIT TO STACK                               MLD
          SPACE  4,14                                                    MLD
 TIMEOUT  TITLE  TIMEOUT - SET DELAYS FOR COMMANDS. 
**        TIMEOUT - SET DELAYS FOR COMMANDS.
* 
*         ENTRY  - (A) = LOWER 12 BITS OF TYPE B DELAY. 
*                  (D.T2) = UPPER 12 BITS OF TYPE B DELAY.
*                  (D.T0) = UPPER 12 BITS OF TYPE A DELAY.
*                  (D.T1) = LOWER 12 BITS OF TYPE A DELAY.
* 
*         EXIT   - NONE.
* 
*         USES   - D.T0, D.T1, D.T2, D.T3, D.T4.
* 
*         CALLS  - NONE.
* 
 TIMEOUT  STM    TIME2B      STORE UPPER 12 BITS OF TYPEB DELAY 
          LDD    D.T2 
          STM    TIME2A      STORE UPPER 12 BITS OF TYPEB DELAY 
          LDD    D.T0 
          STM    TIME1A      STORE UPPER 12 BITS OF TYPEA DELAY 
          LDD    D.T1 
          STM    TIME1B      STORE LOWER 12 BITS OF TYPEA DELAY 
          LJM    XTIME       RETURN DELEAY ARE SET
  
 TIME0    LDN    1           FORCE NON ZERO INTO A REGISTER 
 TIMEX    LJM    ** 
 TIME     EQU    *-1
          MJN    TIME1       IF SHORT DELAY 
          NJN    TIME3       IF NOT INITIALIZE
          LDM    TIME2A 
          STD    D.T3 
          LDM    TIME2B 
          UJN    TIME2
 TIME1    LDM    TIME1A 
          STD    D.T3 
          LDM    TIME1B 
 TIME2    STD    D.T4 
          IANN   54B         GET CLOCK
          STD    D.T2 
 TIME3    IANN   54B
          SBD    D.T2 
          PJN    TIME4       IF NO WRAP AROUND
          ADC    10000B 
 TIME4    STD    D.T5 
          RAD    D.T2        UPDATE CLOCK FOR NEXT PASS 
          LDD    D.T4 
          SBD    D.T5        SUBTACT DIFFERENCE 
          STD    D.T4 
 TIME5    PJN    TIME0       IF NOT EXPIRED 
          AOD    D.T4 
          SOD    D.T3        DECREMENT UPPER 12 BIT COUNTER 
          PJN    TIME5       IF NOT EXPIRED 
          LJM    TIMEX       TIME EXPIRED RETURN
  
 TIME1A   DATA   0           UPPER 12 BITS SHORT DELAY
 TIME1B   DATA   128         LOWER 12 BITS SHORT DELAY
 TIME2A   DATA   177B        UPPER 12 BITS LONG DELAY 
 TIME2B   DATA   7777B       LOWER 12 BITS LONG DELAY 
          EJECT 
**        DEQP - DROP EQUIPMENT.                                         MLD
*                                                                        MLD
*         RELEASE CONNECT IF 3000, DISCONNECT CHANNNEL IF ACTIVE.        MLD
*                                                                        MLD
*         ENTRY- NONE.                                                   MLD
*                                                                        MLD
*         EXIT - DEVICE IS RELEASED.                                     MLD
*                (LF) = LAST EQUIPMENT FUNCTION SENT.                    MLD
*                (L8) = LAST 668X FUNCTION SENT.                         MLD
*                                                                        MLD
*                ERRAAE  - IF CHANNEL ACTIVE ON ENTRY.                   MLD
*                ERRNIF  - IF NO INACTIVE TO EQUIPMENT FUNCTION.         MLD
*                ERRNI8  - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                                                                        MLD
*         USES - LF, L8, CONNECT.                                        MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 DEQPX    LJM    **                                                      MLD
 DEQP     EQU    *-1                                                     MLD
          LDD    S2          LOOK AT ABT ADDRESS                         MLD
          SBN    77B                                                     MLD
          ZJN    DEQ5        IF RELEASE REQUEST FROM BASIC DRIVER        MLD
          IJM    DEQ1        IF CH IN STATE TO RELEASE                   MLD
          LJM    ERRAAE      ERROR IF CHANNEL ACTIVE AT ENTRY            MLD
                                                                         MLD
 DEQ1     UJN    DEQPX       *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
                                                                         MLD
          LDC    **                                                      MLD
 CONNECT  EQU    *-1         CONNECTED TO 3000 CONTROLLER FLAG           MLD
          ZJN    DEQ4        IF NOT CURRENTLY CONNECTED                  MLD
          LDN    0                                                       MLD
          STM    CONNECT     CLEAR FLAG                                  MLD
          STD    LF          SET LAST FUNCTION = 0 (RELEASE)             MLD
          RJM    FNCDEL      ISSUE FUNCTION 
          UJN    DEQ4 
                                                                         MLD
          IFEQ   NOSBE,1                                                 MLD
 DEQ4     LDC    DSEL81      INSURE 668X IS DESELECTED IF NOSBE          MLD
          FAN    40B                                                     MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          IJM    DEQPX,0     EXIT IF RESPONSE RECEIVED                   MLD
          LJM    ERRNI8      ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ENDIF                                                          MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
 DEQ4     LDC    SEL81       INSURE 668X IS SELECTED IF NOS              MLD
          RJM    FNCSEL      DO 6681 FUNCTION PLUS DELAYS 
          LJM    DEQPX       EXIT 
          ENDIF                                                          MLD
                                                                         MLD
*         IF THE ABORT ADDRESS INDICATES THE CALL IS NOT FROM THE        MLD
*         INSTRUCTION STACK, THE BASIC DRIVER IS TRYING TO RELEASE       MLD
*         THE DEVICE PRIOR TO DROPPING THE PPU. THIS CONDITIONS          MLD
*         REQUIRES THAT NO ABORT OCCUR AND THE CURRENT STATUS OF         MLD
*         REGISTERS AND BUFFERS REMAIN UNCHANGED.                        MLD
                                                                         MLD
 DEQ5     IJM    DEQ6        IF CHANNEL IS INACTIVE                      MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    DEQ7        IF SKIP CHANNEL CLEAN-UP IS REQUESTED       MLD
          DCN    40B                                                     MLD
 DEQ6     LDM    DEQ1                                                    MLD
          ZJN    DEQ8        IF 3000 DEVICE ASSIGNED                     MLD
 DEQ7     LJM    DEQPX       EXIT                                        MLD
                                                                         MLD
 DEQ8     LDM    CONNECT                                                 MLD
          ZJN    DEQ10       IF UNIT IS NOT CONNECTED                    MLD
          LDN    0                                                       MLD
          STM    CONNECT     CLEAR CONNECTED FLAG                        MLD
          FAN    40B         ATTEMPT TO RELEASE THE DEVICE               MLD
          LCN    0           INITIALIZE FOR SHORT DELAY 
 DEQ9     IJM    DEQ10,0     IF RESPONSE RECEIVED                        MLD
          RJM    TIME 
          PJN    DEQ9                                                    MLD
          DCN    40B                                                     MLD
                                                                         MLD
          IFEQ   NOSBE,1                                                 MLD
 DEQ10    LDC    DSEL81      INSURE 668X IS DESELECTED IF NOSBE          MLD
          FAN    40B                                                     MLD
          PSN                                                            MLD
          IJM    DEQPX,0     EXIT IF RESPONSE RECEIVED                   MLD
          DCN    40B                                                     MLD
          UJN    DEQ7        EXIT                                        MLD
          ENDIF                                                          MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
 DEQ10    LDC    SEL81       INSURE 668X IS SELECTED IF NOS              MLD
          FAN    40B         SELECT 668X                                 MLD
          PSN                                                            MLD
          IJM    DEQPX,0     EXIT IF RESPONSE RECEIVED                   MLD
          DCN    40B                                                     MLD
          UJN    DEQ7        EXIT                                        MLD
          ENDIF                                                          MLD
          SPACE  4,20                                                    MLD
**        DELAY LOOP FOR VARIOUS CHANNEL FUNCTIONS
* 
 DELX     LJM    ** 
 DEL      EQU    *-1
          LDN    5           DELAY COUNT
 DEL1     SBN    1
          NJN    DEL1 
          UJN    DELX        EXIT 
  
  
**        PIN - PREPARE FOR INPUT.                                       MLD
*                                                                        MLD
*         PREPARE FOR INPUT ON I/O CHANNEL.                              MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS                                    MLD
*                (D.T0) = CHAINING IN PROGRAESS.                         MLD
*                (D.T1) = WC IS NON ZERO                                 MLD
*                (D.T2) = BUFFER ADDRESS IF (D.T1) NONZERO               MLD
*                (WC)   = WORD COUNT IF (D.T1) IS ZERO                   MLD
*                (BA)   = BEGINNING ADDRESS IF (D.T1) IS ZERO            MLD
*                (BD.CHAIN) = CHAINING FLAG.                             MLD
*                (L8)   = LAST 668X FUNCTION.                            MLD
*                                                                        MLD
*         EXIT - I/O DEVICE IS PREPARED FOR INPUT.                       MLD
*                (WT)    = 0                                             MLD
*                (SC)    = WORDS TO INPUT.                               MLD
*                (IN4)   = FWA TO READ DATA TO.                          MLD
*                (INB1)  = FWA TO READ DATA TO.                          MLD
*                (L8) = LAST FUNCTION.                                   MLD
*                                                                        MLD
*                ERRWC   - IF WORD COUNT ERROR.                          MLD
*                ERRAAE  - IF ACTIVE ON ENTRY.                           MLD
*                ERRCNR  - IF CHANNEL NOT RESERVED.                      MLD
*                ERRNI8  - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRIAA  - IF NO INACTIVE AFTER ACTIVATE.                MLD
*                ERRIOE - IF INACTIVE ON ENTRY AND CHAINING.
*                                                                        MLD
*         USES  - WT, WC, S1, S2, L8, SC, D.T2                           MLD
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
 PINX     LJM    **          ENTRY/EXIT                                  MLD
 PIN      EQU    *-1                                                     MLD
          RJM    SVRA        SAVE ABORT ADDRESSES 
 PIN1     UJN    PIN4        *** JUMP INSTRUCTION IF CHAN NOT ASSIGNED   MLD
*         DATA   0           *** DATA 0 IF CHANNEL ASSIGNED ON ENTRY     MLD
          LDD    D.T1                                                    MLD
          NJN    PIN2        IF WC SPECIFIED BY USER                     MLD
          LDD    BA 
          ADC    IB 
          STD    D.T2 
          LDD    WC          IF NOT, USE (WC) REGISTER                   MLD
 PIN2     STD    SC          SAVE WORD COUNT                             MLD
          ZJN    PIN5        ERROR IF NO WORDS TO INPUT                  MLD
 PIN3     LDD    D.T2                                                    MLD
          STM    IN4         SAVE FWA FOR INPUT                          MLD
          STM    INB1                                                    MLD
          ADC    -IB                                                     MLD
          MJN    PIN5        ERROR IF FWA IS BELOW IB                    MLD
          ADD    SC                                                      MLD
          SBD    LB                                                      MLD
          PJN    PIN5        ERROR IF LWA IS ABOVE IB                    MLD
          LDM    BD.CHAIN                                                MLD
          ZJN    PIN6        IF CHAINING I/O NOT IN PROGRESS             MLD
          AJM    PINX,0      CHAINING--  OK IF STILL ACTIVE              MLD
          LJM    ERRIOE 
                                                                         MLD
 PIN4     LJM    ERRCNR      ERROR IF CHANNEL IS NOT ASSIGNED            MLD
                                                                         MLD
 PIN5     LJM    ERRWC       ERROR IF WC OR WC+BA IS OUT OF RANGE        MLD
                                                                         MLD
 PIN6     AJM    ERRAAE,0    ERROR IF CHANNEL ACTIVE AND NOT CHAINING    MLD
 PIN7     UJN    PIN8        *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE                   MLD
                                                                         MLD
*         3000 DEVICE ASSIGNED - PREPARE FOR INPUT                       MLD
                                                                         MLD
          LDM    L8          LOAD LAST 668X FUNCTION                     MLD
          SHN    -6                                                      MLD
          SBN    14B                                                     MLD
          ZJN    PIN8        IF LAST FUNCTION WAS 14XX                   MLD
          SBN    15B-14B                                                 MLD
          ZJN    PIN8        IF LAST FUNCTION WAS 15XX                   MLD
          LDC    SELIN                                                   MLD
          RJM    FNCSEL      DO 6681 FUNCTION PLUS DELAYS 
 PIN8     ACN    40B                                                     MLD
          IJM    ERRIAA,0    ERROR IF CHANNEL INACTIVE AFTER ACTIVATE    MLD
          LJM    PINX        EXIT TO CALLER                              MLD
          SPACE  4,20                                                    MLD
**        POUT - PREPARE FOR OUTPUT.                                     MLD
*                                                                        MLD
*         PREPARE FOR OUTPUT ON I/O CHANNEL.                             MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS                                    MLD
*                (D.T0) = CHAINING IN PROGRAESS.                         MLD
*                (D.T1) = WC IS NON ZERO                                 MLD
*                (D.T2) = BUFFER ADDRESS IF (D.T1) NONZERO               MLD
*                (WC)   = WORD COUNT IF (D.T1) IS ZERO                   MLD
*                (BA)   = BEGINNING ADDRESS IF (D.T1) IS ZERO            MLD
*                (BD.CHAIN) = CHAINING IN PROGRESS FLAG.                 MLD
*                                                                        MLD
*         EXIT - I/O DEVICE IS PREPARED FOR OUTPUT.                      MLD
*                (WT)    = 0                                             MLD
*                (SC)    = WORDS TO OUTPUT.                              MLD
*                (OUT3)  = FWA TO WRITE DATA FROM.                       MLD
*                (OUTB1) = FWA TO WRITE DATA FROM.                       MLD
*                (L8) = LAST FUNCTION.                                   MLD
*                                                                        MLD
*                ERRWC   = IF WORD COUNT ERROR.                          MLD
*                ERRAAE  = IF ACTIVE ON ENTRY.                           MLD
*                ERRCNR  = IF CHANNEL NOT RESERVED.                      MLD
*                ERRIOE  = IF INACTIVE ON ENTRY.
*                                                                        MLD
*         USES - WT, S1, S2, L8, D.T2.                                   MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 POUTX    LJM    **          ENTRY/EXIT                                  MLD
 POUT     EQU    *-1                                                     MLD
          RJM    SVRA        SAVE ABORT ADDRESSES 
 POUT1    UJN    ERRCNR      ***JUMP INSTRUCTION IF CH NOT ASSIGNED 
*         DATA   0           *** DATA 0 IF CHANNEL ASSIGNED ON ENTRY     MLD
          LDD    D.T1                                                    MLD
          NJN    POUT2       IF WC SPECIFIED BY USER                     MLD
          LDD    BA 
          ADC    OB 
          STD    D.T2 
          LDD    WC          IF NOT, USE (WC) REGISTER                   MLD
 POUT2    STD    SC          SAVE WC                                     MLD
          ZJN    POUT5       ERROR IF NO WORDS TO OUTPUT                 MLD
 POUT3    LDD    D.T2                                                    MLD
          STM    OUT3        SAVE FWA TO OUTPUT DATA FROM                MLD
          STM    OUTB1                                                   MLD
          ADC    -OB                                                     MLD
          MJN    POUT5       ERROR IF FWA IS BELOW OB                    MLD
          ADD    SC                                                      MLD
          SBD    LB                                                      MLD
          PJN    POUT5       ERROR IF LWA IS ABOVE OB                    MLD
          LDM    BD.CHAIN                                                MLD
          ZJN    POUT6       IF CHAINING IS NOT IN PROGRESS              MLD
          AJM    POUTX,0     CHAINING - OK IF STILL ACTIVE               MLD
          LJM    ERRIOE 
                                                                         MLD
 ERRCNR   LDC    ER.CNR 
          LJM    ERR
                                                                         MLD
 POUT5    LJM    ERRWC       ERROR IF WC OR WC+BA PROBLEM                MLD
                                                                         MLD
 POUT6    AJM    ERRAAE,0    ERROR IF ACTIVE AND NOT CHAINING            MLD
 POUT7    UJN    POUT8       *** JUMP INSTRUCTION IF 6000/BC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 3000 DEVICE ASSIGNED          MLD
                                                                         MLD
*         3000 DEVICE ASSIGNED - PREPARE FOR OUTPUT                      MLD
                                                                         MLD
          LDM    L8          LOAD LAST 668X FUNCTION                     MLD
          SHN    -6                                                      MLD
          SBN    16B                                                     MLD
          ZJN    POUT8       IF LAST FUNCTION WAS 16XX                   MLD
          LDC    SELOUT                                                  MLD
          RJM    FNCSEL      DO 6681 FUNCTION PLUS DELAYS 
 POUT8    ACN    40B                                                     MLD
          IJM    ERRIAA,0    ERROR IF INACTIVE AFTER ACTIVATE            MLD
          LJM    POUTX       EXIT TO CALLER                              MLD
  
**        FNCDEL - SEND 6681 FUNCTION AND WAIT FOR INACTIVE.
* 
  
 FNCDELX  LJM    ** 
 FNCDEL   EQU    *-1
          FAN    40B         ISSUE FUNCTION 
          LCN    0
 FNC1     IJM    FNCDELX,0   RETURN IF INACTIVE 
          RJM    TIME 
          PJN    FNC1        LOOP UNTIL DELAY EXPIRED 
          LJM    ERRNIF      ERROR NO INACTIVE TO FUNCTION
          SPACE  4,18                                                    MLD
**        FNCSEL - SEND 6681 FUNCTION AND DELAY 
* 
 FNCSELX  LJM    ** 
 FNCSEL   EQU    *-1
          FAN    40B         SEND FUNCTION
          STM    L8          SAVE IT
          RJM    DEL         WAIT FUNCTION ACCEPTED 
          AJM    ERRNI8,0    NO IACTIVE TO 81 FUNCTION
          UJN    FNCSELX     EXIT 
  
  
**        FUNSEL - SEND 6681 FUNCTION AND DELAY 
* 
 FUNSELX  LJM    ** 
 FUNSEL   EQU    *-1
          FAN    40B         SEND FUNCTION
          STM    L8          SAVE IT
          RJM    DEL         WAIT FUNCTION ACCEPTED 
          AJM    ERRNI8,0    NO IACTIVE TO 81 FUNCTION
          ACN    40B         ACTIVATE THE CHANNEL 
          RJM    DEL         WAIT AGAIN 
          IJM    ERRIAA,0    ERROR CHANNEL INACTIVE AFTER ACTIVATE
          UJN    FUNSELX
  
  
**        SVRA - SAVE ABORT ADDRESSES AND CLEAR WT REGISTER.
* 
*         ENTRY  - (A)  = ABORT ADDRESS.
* 
*         EXIT   - (S1) = LOWER 12 BITS OF (A). 
*                  (S2) = UPPER 6 BITS OF (A).
* 
*         USES   - S1, S2, WT.
* 
*         CALLS  - NONE.
* 
 SVRAX    LJM    ** 
 SVRA     EQU    *-1
          STD    S1 
          SHN    -12
          STD    S2 
          LDN    0
          STD    WT 
          UJN    SVRAX       RETURN ABORT ADDRESS STORED
**        T6S - TEST 668X STATUS.                                        MLD
*                                                                        MLD
*         TEST 668X STATUS FOR ERRORS.                                   MLD
*                                                                        MLD
*         ENTRY- NONE.                                                   MLD
*                                                                        MLD
*         EXIT - 668X STATUS STORED IN SB.                               MLD
*                                                                        MLD
*                ERRAAD  - IF ACTIVE AFTER DEACTIVATE.                   MLD
*                ERRNI8  - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRNF8S - IF NO FULL ON E668X STATUS.                   MLD
*                ERREXT  - IF EXTERNAL REJECT.                           MLD
*                ERRINT  - IF INTERNAL REJECT.                           MLD
*                ERRTPE  - IF XMSN PARITY ERROR.                         MLD
*                                                                        MLD
*         USES - L8, SB.                                                 MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 T6SX     LJM    **                                                      MLD
 T6S      EQU    *-1                                                     MLD
          LDC    SEL81S                                                  MLD
          RJM    FUNSEL      DO 6681 FUNCTION PLUS DELAYS 
          EJM    ERRNF8S,0   ERROR IF NO FULL FOR 668X STATUS            MLD
          IAN    40B                                                     MLD
          STM    SB          STORE 668X STATUS IN FIRST WORD OF SB       MLD
          IJM    ERRIAI8,0   ERROR IF INACTIVE AFTER INPUT OF STATUS     MLD
          DCN    40B                                                     MLD
          AJM    ERRAAD,0    ERROR IF ACTIVE AFTER DEACTIVATE            MLD
          SFM    ERCPE1,CH   CHECK FOR CH PARITY ERROR
          LPN    INT+EXT+TPE                                             MLD
          ZJN    T6SX        EXIT IF NO ERRORS                           MLD
          SHN    15                                                      MLD
          MJN    T6S2        IF TRANSMISSION PARITY ERROR                MLD
          SHN    1                                                       MLD
          MJN    T6S1        IF INTERNAL REJECT                          MLD
          LDC    ER.EXT 
          UJN    ERR0 
                                                                         MLD
 ERCPE1   LDC    ER.CPE 
          UJN    ERR         CHANNEL PARITY ERROR 
  
 T6S1     LDC    ER.INT 
          UJN    ERR0 
                                                                         MLD
 T6S2     LDC    ER.TPE 
          UJN    ERR0 
          EJECT                                                          MLD
 ERRAAE   LDC    ER.AAE      CHANNEL ACTIVE AT COMMAND ENTRY             MLD
 ERR0     UJN    ERR
                                                                         MLD
 ERRNI8   LDC    ER.NI8      NO INACTIVE TO A 668X FUNCTION              MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRIAA   LDC    ER.IAA      CHANNEL INACTIVE AFTER AN ACTIVATE          MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRNF8S  LDC    ER.NF8S     NO FULL AFTER REQUEST FOR 668X STATUS       MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRNFES  LDC    ER.NFES     NO FULL TO REQUEST FOR 668X EQUIP STATUS    MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRIAI8  LDC    ER.IAI8     INACTIVE AFTER INPUT OF 668X STATUS         MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRAAD   LDC    ER.AAD      ACTIVE AFTER DEACTIVATE                     MLD
          UJN    ERR                                                     MLD
                                                                         MLD
                                                                         MLD
 ERRLOL   LDC    ER.LOL      NO RESPONSE FOR LAST OUTPUT BYTE            MLD
 ERR      UJN    ERR1 
                                                                         MLD
 ERRNIF   LDC    ER.NIF      NO INACTIVE TO EQUIPMENT FUNCTION           MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRIOE   LDC    ER.IOE 
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRIBF   LDC    ER.IBF      CHANNEL INACTIVE BEFORE FULL ON STATUS INP  MLD
                                                                         MLD
 ERR1     STD    D.Z1        SAVE MESSAGE INDEX AND ERROR NUMBER         MLD
          SHN    -12                                                     MLD
          STD    D.Z2        SAVE ABORT FLAG                             MLD
          LDM    BD.CHFG                                                 MLD
          ZJN    ERR2        IF CHANNEL IS NOT ASSIGNED                  MLD
          IJM    ERR2,0      CLEAN UP CHANNEL                            MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    ERR2        IF AL INDICATES NO CHAN CLEANUP             MLD
          DCN    40B                                                     MLD
 ERR2     LDD    D.Z1                                                    MLD
          LPN    77B                                                     MLD
          ADC    4000B       ADD IN BIAS FOR LOW LEVEL PRODUCT OVERLAY   MLD
          STD    EC          STORE ERROR CODE                            MLD
          LDD    D.Z1                                                    MLD
          SHN    -6                                                      MLD
          ADC    100B        FLAG MESSAGE INDEX AS OVERLAY MESSAGE       MLD
          STD    EM          STORE MESSAGE INDEX                         MLD
          LDD    P                                                       MLD
          STD    EA          STORE LINE NUMBER WHERE ERROR OCCURRED      MLD
          LDN    0                                                       MLD
          STM    BD.CHAIN    CLEAR CHAINING IN PROGRESS FLAG             MLD
          LDD    D.Z2                                                    MLD
          NJN    ERR4        IF ABORT FLAG SET                           MLD
          LDD    S2                                                      MLD
          SHN    12                                                      MLD
          LMD    S1                                                      MLD
          ZJN    ERR3        IF NO ABT ADDRESS SPECIFIED                 MLD
          LJM    BD.RNI      RNI AT THE REJECT ADDRESS                   MLD
                                                                         MLD
 ERR3     LJM    BD.ERR      TERMINATE OR RESTART MODULE BASED ON SE     MLD
                                                                         MLD
 ERR4     LJM    BD.ABT      TERMINATE MODULE                            MLD
                                                                         MLD
 IB       EQU    6470B       INPUT BUFFER                                MLD
 LIB      EQU    505B                                                    MLD
 OB       EQU    IB+LIB      OUTPUT BUFFER                               MLD
 SB       EQU    OB+LIB      STATUS BUFFER                               MLD
 CH       EQU    SB+70B      CHANNEL UNDER TEST                          MLD
 EQ       EQU    SB+71B      EQ UNDER TEST                               MLD
 UN       EQU    SB+72B      UN UNDER TEST                               MLD
 L8       EQU    SB+73B      LAST 668X FUNCTION                          MLD
 LSB      EQU    74B                                                     MLD
 SBLWA    EQU    SB+LSB                                                  MLD
                                                                         MLD
          ERRPL  *-IB-1      ERROR IF LOW LEVEL PRODUCT OVERLAY OVERFLOW MLD
          EJECT                                                          MLD
*         THE INITIALIZATION CODE THAT FOLLOWS IS OVERLAYED BY THE       MLD
*         PRODUCT OVERLAY BUFFERS ABOVE.                                 MLD
*                                                                        MLD
*                                                                        MLD
*         STORE EQUIPMENT AND CONNECT CODES                              MLD
                                                                         MLD
 INIT     LDN    0                                                       MLD
          STD    D.Z1        CLEAR COUNTER                               MLD
          LDM    BD.AL                                                   MLD
          SBN    10B                                                     MLD
          PJN    INIT0       IF ACCESS LEVEL ALLOWS LOW-LEVEL TESTING    MLD
          LDC    INITA                                                   MLD
**
*         THE FOLLOWING CODE IS ASSEMBLED IF THE SYMBOL 'MVE' IS DEFINED
*         AT UPDATE TIME. THIS DEFINITION MEANS THAT THE ASSEMBLY WILL
*         BE FOR THE NOSVE ENVIRONMENT. 
* 
*         *IF DEF,MVE 
*IF DEF,MVE 
 INIT.1   STM    INIT10.1 
          STM    INIT13.1 
          LJM    INIT9.3     PROCESS ERROR MESSAGE
*ENDIF
*         *ENDIF
**
  
*IF -DEF,MVE
          LJM    START       EXIT WITH ERROR MESSAGE                     MLD
*ENDIF
                                                                         MLD
 INIT0    LDN    0                                                       MLD
          STM    SB,D.Z1     CLEAR STATUS BUFFER                         MLD
          AOD    D.Z1                                                    MLD
          SBN    LSB                                                     MLD
          NJN    INIT0       IF ALL WORDS NOT CLEARED                    MLD
*IF DEF,MVE 
*         *IF DEF,MVE 
          LDD    DC 
          ADC    -ISD1
          ZJN    INIT0.1     IF 834 
          SBN    ISD2-ISD1
          ZJN    INIT0.1     IF 836 
          UJN    INIT0.5
 INIT0.1  LDM    BD.EQ
          LPN    70B
          ZJN    INIT0.2     IF UN IS WITHIN RANGE
          LDC    INITB
          UJN    INIT.1      GO PROCESS ERROR 
 INIT0.2  LDM    BD.EQ
          LPN    77B
          STM    UN 
          LDM    BD.EQ                                                   MLD
          SHN    -6 
          LPN    70B
          RAM    UN          COMBINE CM NUMBER AND UNIT NUMBER
          LJM    INIT1
*         *ENDIF
*ENDIF
 INIT0.5  LDM    BD.EQ
          LPN    77B                                                     MLD
          STM    UN          SAVE UNIT NUMBER IN SB                      MLD
          LDM    BD.EQ                                                   MLD
          STM    CON4        SAVE TOTAL CONNECT CODE FOR 3000 DEVICES    MLD
          STM    CON9                                                    MLD
          LPC    7000B                                                   MLD
          STM    FUN3        SAVE EQUIPMENT NUMBER FOR 6000/BC DEVICES   MLD
          SHN    -9                                                      MLD
          STM    EQ          SAVE EQUIPMENT NUMBER IN SB                 MLD
          SHN    -2                                                      MLD
          ZJN    INIT1       IF EQUIPMENT NUMBER 0 - 3                   MLD
          LDN    0                                                       MLD
          STM    CON3        SET EQUIPMENT NUMBER SWITCH FOR CONNECT     MLD
                                                                         MLD
*         SET DEVICE TYPE ASSIGNED SWITCHES                              MLD
                                                                         MLD
 INIT1    LDM    BD.TYPE                                                 MLD
          NJN    INIT2       IF NOT 3000 DEVICE                          MLD
          LDC    T3000       SET TABLE POINTER FOR 3000 DEVICE           MLD
          UJN    INIT3                                                   MLD
                                                                         MLD
 INIT2    LDC    T6000       SET TABLE POINTER FOR 6000/BC DEVICE        MLD
 INIT3    STD    D.T0                                                    MLD
 INIT4    LDI    D.T0                                                    MLD
          ZJN    INIT5       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDN    0                                                       MLD
          STI    D.T1        STORE PASS INSTRUCTION IN SWITCH            MLD
          AOD    D.T0                                                    MLD
          UJN    INIT4       COMPLETE ALL SWITCHES                       MLD
                                                                         MLD
                                                                         MLD
*         SET DELAY TIME BASED ON SPEED OF PPU                           MLD
                                                                         MLD
 INIT5    LDC    TSPEED 
          STD    D.T0                                                    MLD
 INIT6    LDI    D.T0                                                    MLD
          ZJN    INIT7       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1                                                    MLD
          SCN    77B
          ADM    BD.SPEED 
          STI    D.T1        DECREMENT ADN/SBN VALUE BY 1                MLD
          AOD    D.T0                                                    MLD
          UJN    INIT6       COMPLETE ALL WORDS                          MLD
                                                                         MLD
*         STORE I/O CHANNEL INTO COMMANDS                                MLD
                                                                         MLD
 INIT7    LDM    BD.CHAN                                                 MLD
          LPN    37B         MASK OFF CIO CHANNEL FLAG
          STD    D.T2                                                    MLD
          STM    CH          SAVE CHANNEL IN SB                          MLD
          LDC    TCHAN                                                   MLD
          STD    D.T0        SET FWA OF TABLE CONTAINING ADDRESSES       MLD
 INIT8    LDI    D.T0                                                    MLD
          ZJN    INIT9       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1                                                    MLD
          LPC    7740B                                                   MLD
          ADD    D.T2                                                    MLD
          STI    D.T1                                                    MLD
          AOD    D.T0                                                    MLD
          UJN    INIT8       COMPLETE ALL WORDS                          MLD
**
*         THE FOLLOWING CODE IS ASSEMBLED IF THE SYMBOL 'MVE' IS DEFINED
*         AT UPDATE TIME. THIS DEFINITION MEANS THAT THE ASSEMBLY WILL
*         BE FOR THE NOSVE ENVIRONMENT. 
* 
*         *IF DEF,MVE 
*IF DEF,MVE 
                                                                         MLD
 INIT9    STD    D.T1        CLEAR CELL 
          LDC    MMSGL. 
          STD    D.T0        LENGTH OF PO MSG AREA IN 60 BIT WORDS
 INIT9.1  SBN    3           NUMBER OF 60 BIT WORDS/MESSAGE 
          MJN    INIT9.2     IF NO MESSAGES 
          STD    D.T0 
          AOD    D.T1        INCREMENT MESSAGE COUNT
          LDD    D.T0 
          NJN    INIT9.1     IF MORE MESSAGES 
 INIT9.2  LDD    D.T1 
          STM    BD.MSGS     MESSAGE COUNT
**
*         WRITE PP MESSAGES TO CM 
* 
 INIT9.3  LDN    0
          STD    D.Z1 
          STD    D.Z2 
          STD    D.Z3 
          STD    S1 
 INIT10   LDM    PPMSGS,D.Z1 GET PP MESSAGE WORD
 INIT10.1 EQU    *-1         MODIFIED TO FWA OF INITIALIZATION ERROR
          ZJN    INIT12      IF END OF MESSAGE
 INIT11   STM    D.T4,D.Z2   STORE IN D.T4+ 
          AOD    D.Z1        BUMP PP MESSAGE POINTER
          UJN    INIT13 
 INIT12   LDC    2R          MESSAGE END, STORE BLANKS
          STM    D.T4,D.Z2
 INIT13   AOD    D.Z2        BUMP D.T4+ POINTER 
          SBN    4
          NJN    INIT10      IF NOT 4 PP WORDS
          STD    D.Z2        CLEAR POINTER
          LDC    BD.MSGA     INDEX INTO CM COMM BUFFER TO PO MSG AREA 
          ADD    S1          BIAS TO WORD WITHIN PO MSG AREA
          STM    BD.IDEX
          LDN    BD.CMB      POINTER TO FWA OF CM COMM BUFFER 
          RJM    BD.SETR
          CWDL   D.T4        WRITE MSG WORD TO CM 
          AOD    S1          INCREMENT BIAS INTO PO MSG AREA
          AOD    D.Z3        BUMP CM WORD COUNTER 
          SBN    BD.MSGML+1  EACH MESSAGE OCCUPIES A 4 WORD CM BLOCK
          NJN    INIT10      IF NOT BD.MSGML CM WORDS 
          STD    D.Z3        CLEAR CM WORD COUNTER
          LDC    0
 INIT13.1 EQU    *-1         MODIFIED TO FWA OF INITIALIZATION ERROR
          ZJN    INIT13.2    IF NOT PO INITIALIZATION ERROR 
          LCN    0
          LJM    INIT16      PO INITIALIZATION ERROR (A) = NEG ZERO 
 INIT13.2 LDM    PPMSGS,D.Z1
          ZJN    INIT14      IF MESSAGE ENDED IN ZERO BYTE
          AOD    D.Z1        SKIP ZERO BYTE TERMINATOR
 INIT14   AOD    D.Z1        BUMP PP MESSAGE ADDRESS TO NEXT MESSAGE
          LDM    PPMSGS,D.Z1
          ZJN    INIT14.1    IF LAST MESSAGE
          LJM    INIT11      GET NEXT MESSAGE 
 INIT14.1 EQU    *
*ENDIF
*         *ENDIF
**
  
**
*         THE FOLLOWING CODE IS ASSEMBLED IF THE SYMBOL 'MVE' IS NOT
*         DEFINED AT UPDATE TIME. THIS MEANS THAT THE ASSEMBLY WILL BE
*         FOR THE NOS OR NOSBE ENVIRONMENT. 
* 
*         *IF -DEF,MVE
*IF -DEF,MVE
*         WRITE PP MESSAGES TO CM                                        MLD
                                                                         MLD
 INIT9    LDM    BD.MSGA     GET PP MESSAGE AREA ADDRESS                 MLD
          STD    S1          SAVE IT                                     MLD
          ADC    MMSGL.      ADD LENGTH 
          RJM    BD.TFL      SEE IF IN FL                                MLD
          LDN    P.ZERO      CLEAR CELLS, D.Z1=PP MESSAGE ADDRESS        MLD
          CRD    D.Z1        D.Z2=D.T0-D.T4 POINTER, D.Z3=CM WD COUNTER  MLD
 INIT10   LDM    PPMSGS,D.Z1 GET PP MESSAGE WORD                         MLD
          ZJN    INIT12      IF END OF MESSAGE                           MLD
 INIT11   STM    D.T0,D.Z2   STORE IN D.T0+                              MLD
          AOD    D.Z1        BUMP PP MESSAGE POINTER                     MLD
          UJN    INIT13                                                  MLD
 INIT12   LDC    2R          MESSAGE END, STORE BLANKS                   MLD
          STM    D.T0,D.Z2                                               MLD
 INIT13   AOD    D.Z2        BUMP D.T0+ POINTER                          MLD
          SBN    5                                                       MLD
          NJN    INIT10      IF NOT 5 PP WORDS                           MLD
          STD    D.Z2        CLEAR POINTER                               MLD
          LDD    D.RA        PUT RA IN A REG                             MLD
          SHN    6                                                       MLD
          ADD    S1          ADD MESSAGE ADDRESS                         MLD
          CWD    D.T0        WRITE ONE WORD FROM D.T0                    MLD
          AOD    S1          UPDATED ADDRESS                             MLD
          AOD    D.Z3        BUMP CM WORD COUNTER                        MLD
          SBN    BD.MSGML                                                MLD
          NJN    INIT10      IF NOT BD.MSGML CM WORDS                    MLD
          STD    D.Z3        CLEAR CM WORD COUNTER                       MLD
          LDM    PPMSGS,D.Z1                                             MLD
          ZJN    INIT14      IF MESSAGE ENDED IN ZERO BYTE               MLD
          AOD    D.Z1        SKIP ZERO BYTE TERMINATOR                   MLD
 INIT14   AOD    D.Z1        BUMP PP MESSAGE ADDRESS TO NEXT MESSAGE     MLD
          LDM    PPMSGS,D.Z1                                             MLD
          NJN    INIT11      IF NOT LAST MESSAGE                         MLD
*ENDIF
*         *ENDIF
**
                                                                         MLD
*         SET DIRECT CELLS                                               MLD
                                                                         MLD
          LDN    0                                                       MLD
          STM    BD.CHAIN    CLEAR CHAINING FLAG                         MLD
          STD    WC          CLEAR WORD COUNT REGISTER                   MLD
          STD    BA          CLEAR BEGINNING ADDRESS REGISTER            MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          LDC    LIB+1                                                   MLD
          STD    LB          SET LENGTH OF IB AND OB PLUS 1              MLD
          LDC    IB                                                      MLD
          STD    IA          SET IBFWA                                   MLD
          LDC    OB                                                      MLD
          STD    OA          SET OBFWA                                   MLD
                                                                         MLD
*         SAVE CHANNEL NOT ASSIGNED FLAG WORDS                           MLD
                                                                         MLD
          LDN    0                                                       MLD
          STD    D.T0        CLEAR COUNTER                               MLD
 INIT15   LDM    TABLE,D.T0                                              MLD
          ZJN    INIT16      IF END OF TABLE                             MLD
          STD    D.T1        SAVE ADDRESS                                MLD
          LDI    D.T1        GET INSTRUCTION IN THIS ADDRESS             MLD
          STM    TABLE1,D.T0 SAVE INSTRUCTION IN TABLE1                  MLD
          AOD    D.T0                                                    MLD
          UJN    INIT15                                                  MLD
                                                                         MLD
 INIT16   LJM    START       RETURN TO BASIC DRIVER WITH (A) = 0         MLD
 INITA    DIS    ,*ACCESS LEVEL TOO LOW*                                 MLD
*IF DEF,MVE 
 INITB    DIS    ,*UNIT NUMBER INVALID* 
*ENDIF
          EJECT                                                          MLD
                                                                         MLD
*         TABLE OF 3000 SWITCHES                                         MLD
                                                                         MLD
 T3000    CON    DEQ1 
          CON    FIN3 
          CON    FIN7 
          CON    FOUT3
          CON    FOUT11 
          CON    PIN7 
          CON    IN5A 
          CON    IN7
          CON    INB4 
          CON    POUT7
          CON    OUT8 
          CON    OUTB7
          CON    STS5 
          DATA   0           END OF 3000 SWITCHES TABLE                  MLD
                                                                         MLD
*         TABLE OF 6000 SWITCHES                                         MLD
                                                                         MLD
 T6000    CON    CON1 
          CON    FUN2 
          CON    FN82 
          CON    ST82 
          DATA   0           END OF 6000 SWITCHES TABLE                  MLD
                                                                         MLD
*         TABLE OF PPU SPEED SWITCHES                                    MLD
                                                                         MLD
 TSPEED   CON    OUT1 
          CON    OUT5 
          CON    IN2
          DATA   0           END OF SPEED SWITCHES TABLE                 MLD
          TITLE  ERROR MESSAGES FOR 3000, 6000, BC.                      MLD
 PPMSGS   EQU    *           START OF PP MESSAGES                        MLD
****                                                                     MLD
          MMSG   ER.FLE,EC.FLE,(ADDR OUT OF FL),1 
          MMSG   ER.TL,EC.TL,(I/O TIME OUT ON CH RESERVE),1              MLD
          MMSG   ER.SEE,EC.SEE,(SUBR ENTRY/EXIT ERR),1                   MLD
          MMSG   ER.WC,EC.WC,(BUFFER INDEX OR WC ERR),1                  MLD
          MMSG   ER.RES,EC.RES,(R)                                       MLD
          MMSG   ER.RES1,EC.RES1,(R)                                     MLD
          MMSG   ER.RES2,EC.RES2,(R)                                     MLD
          MMSG   ER.NI8,EC.NI8,(NO INACTIVE TO 668X FUNC)                MLD
          MMSG   ER.NF8S,EC.NF8S,(NO FULL ON 668X STATUS)                MLD
          MMSG   ER.NFES,EC.NFES,(NO FULL ON EQUIP STATUS)               MLD
          MMSG   ER.IAI8,EC.IAI8,(INACTIVE AFTER 668X STATUS)            MLD
          MMSG   ER.TPE,EC.TPE,(668X XMSN PE)                            MLD
          MMSG   ER.INT,EC.INT,(668X INT REJ)                            MLD
          MMSG   ER.EXT,EC.EXT,(668X EXT REJ)                            MLD
          MMSG   ER.AAE,EC.AAE,(CH ACTIVE ON ENTRY)                      MLD
          MMSG   ER.IAA,EC.IAA,(CH INACTIVE AFTER ACN)                   MLD
          MMSG   ER.AAD,EC.AAD,(CH ACTIVE AFTER DCN)                     MLD
          MMSG   ER.CNR,EC.CNR,(CH NOT RESERVED)                         MLD
          MMSG   ER.NIF,EC.NIF,(NO INACTIVE ON EQUIP FUNC)               MLD
          MMSG   ER.ILL,EC.ILL,(ILLEGAL COMMAND),1                       MLD
          MMSG   ER.LOL,EC.LOL,(NO EMPTY ON LAST BYTE OUTPUT)            MLD
          MMSG   ER.AEI,EC.AEI,(CH ACTIVE AND EMPTY ON INPUT)            MLD
          MMSG   ER.IBF,EC.IBF,(CH INACTIVE ON STATUS)                   MLD
          MMSG   ER.AFO,EC.AFO,(CH ACTIVE AND FULL ON OUTPUT)            MLD
          MMSG   ER.CPE,EC.CPE,(CHANNEL PE ON INPUT)
          MMSG   ER.IOE,EC.IOE,(CH INACTIVE ON ENTRY) 
****                                                                     MLD
 MMSGL.   EQU    MMSGL
          DATA   0           SET END                                     MLD
                                                                         MLD
 TCHAN    EQU    *           CREATE CHANNEL TABLE                        MLD
          LIST   D                                                       MLD
          HERE                                                           MLD
          LIST   *                                                       MLD
          DATA   0           END OF CHANNEL TABLE                        MLD
**
*         THE FOLLOWING CODE IS ASSEMBLED IF THE SYMBOL 'MVE' IS NOT
*         DEFINED AT UPDATE TIME. THIS MEANS THAT THE ASSEMBLY IS NOT 
*         FOR THE NOSVE ENVIRONMENT.
* 
*         *IF -DEF,MVE
*IF -DEF,MVE
          IFEQ   NOS,1                                                   MLD
 .1       SET    POVLA                                                   MLD
 .2       SET    10000B                                                  MLD
 .3       SET    *-.1+5+4+500B                                           MLD
 .4       SET    .2-.1+5-1                                               MLD
          ERRNG  .2-.1+5-.3/500B*500B-1  BYTES LEFT AFTER LAST SECTOR    MLD
          ERRNG  .3/500B*500B-5-*+.1-5   BYTES LEFT IN LAST SECTOR       MLD
          ERRNG  .4/500B*500B-5-*+.1-5   BYTES CAN BE ADDED TO OVERLAY   MLD
          ENDIF                                                          MLD
*ENDIF
*         *ENDIF
**
  
**
*         THE FOLLOWING CODE IS ASSEMBLED IF THE SYMBOL 'MVE' IS DEFINED
*         AT UPDATE TIME. THIS MEANS THAT THE ASSEMBLY IS BEING MADE FOR
*         THE NOSVE ENVIRONMENT.
* 
*         *IF DEF,MVE 
*IF DEF,MVE 
          ERRPL  *-7773B     ERROR IF LOW OVERLAY OVERFLOW
*ENDIF
*         *ENDIF
**
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          ERRPL  *-7773B     ERROR IF LOW-LEVEL I/O OVERLAY OVERFLOW     MLD
                                                                         MLD
          QUAL   *                                                       MLD
