*COMDECK,MUX                                                             MLD
          EJECT                                                          MLD
 5MU      SEGMENT POVLA                                                  MLD
          ORG    POVLA                                                   MLD
          QUAL   MUX                                                     MLD
*CALL,VERS
          COMMENT MUX PRODUCT OVERLAY FOR MALET "VERS"
*CALL,CPYCOM                                                             MLD
          TITLE  MALET 667X/2550-100 MULTIPLEXER PP OVERLAY FOR MALET.   MLD
**        THE PPU MULTIPLEXER DRIVER PORTION OF THE CUSTOMER ENGINEERING MLD
*         PROGRAM - MALET.                                               MLD
*                                                                        MLD
*         AUTHOR - P. V. EVANS  AUGUST,1976.                             MLD
*                  MAINTENANCE SOFTWARE ENGINEERING.                     MLD
*                  ENGINEERING SERVICES.                                 MLD
*                                                                        MLD
*         THIS 667X PRODUCT OVERLAY IS DESIGNED TO SUPPORT THE 667X      MLD
*         HIGH LEVEL MALET LANGUAGE AND DRIVE THE 6676,6671 AND 2550-100 MLD
*         HARDWARE DEVICES.                                              MLD
          EJECT                                                          MLD
**        THE 667X PRODUCT OVERLAY IS DRIVEN BY THE INSTRUCTION STACK OF MLD
*         THE  MALET  BASIC PPU DRIVER.  REQUESTS ARE MADE BY THE DRIVER MLD
*         BY STORING PARAMETERS INTO PPU DIRECT CELLS AND  PERFORMING  A MLD
*         RETURN-JUMP  TO  AN  OVERLAY SUBROUTINE.  ONCE THE REQUEST HAS MLD
*         BEEN SUCCESSFULLY EXECUTED, CONTROL IS RETURNED TO  THE  BASIC MLD
*         PPU DRIVER INSTRUCTION STACK TO EXECUTE THE NEXT COMMAND. THIS MLD
*         PRODUCT OVERLAY IS DESIGNED TO DRIVE ONE OR TWO PORTS  ON  THE MLD
*         ASSIGNED  DEVICE - AN  INPUT  PORT  AND  AN  OUTPUT PORT.  THE MLD
*         ASSIGNMENT OF THESE PORTS IS ACCOMPLISHED VIA THE USE  OF  THE MLD
*         PARAMETER  REGISTERS  P0  AND P1.  THE CONTENTS OF P0 REGISTER MLD
*         DEFINES THE OUTPUT PORT AND THE CONTENTS OF P1 REGISTER IS THE MLD
*         INPUT PORT ( INPUT AND OUTPUT PORTS MAY BE THE SAME).          MLD
*                                                                        MLD
*         THE  USER  MUST ALSO SUPPLY A BAUD INDEX TO THE OVERLAY IN THE MLD
*         P2 REGISTER.  THE INDEX DEFINES THE BAUD  RATE  OF  THE  PORTS MLD
*         BEING DRIVEN.                                                  MLD
*                                                                        MLD
*                110 =    110 BAUD ASYNC. (103 MODE)                     MLD
*                134 =  134.5 BAUD ASYNC. (103 MODE)                     MLD
*                150 =    150 BAUD ASYNC. (103 MODE)                     MLD
*                300 =    300 BAUD ASYNC. (103 MODE)                     MLD
*                600 =    600 BAUD ASYNC. (103 MODE)                     MLD
*               1200 =   1200 BAUD ASYNC. (103 MODE)                     MLD
*                                                                        MLD
*               2000 =   2000 BAUD SYNC. (201 MODE)  SIMULATOR/LOOPBACK  MLD
*               2400 =   2400 BAUD SYNC. (201 MODE)  SIMULATOR           MLD
*               4000 =   4800 BAUD SYNC. (201 MODE)  SIMULATOR           MLD
*               6000 =   9600 BAUD SYNC. (201 MODE)  SIMULATOR           MLD
*                                                                        MLD
*               2401 =   2400 BAUD SYNC. (201 MODE)  MODEM LOOP-BACK     MLD
*               4001 =   4800 BAUD SYNC. (201 MODE)  MODEM LOOP-BACK     MLD
*               6001 =   9600 BAUD SYNC. (201 MODE)  MODEM LOOP-BACK     MLD
*                                                                        MLD
*                                                                        MLD
*                                                                        MLD
*         THE USER MAY SUPPLY A VALUE OF 0 THRU 7 IN THE P3  REGISTER TO MLD
*         DEFINE THE NUMBER OF EXTRA BIT TIME TO APPLY TO THE INPUT,     MLD
*         OUTPUT, AND WAIT COMMANDS AND VARIOUS FLAG BITS.               MLD
*                                                                        MLD
*                                                                        MLD
*              P3 = 2*0 = TRANSPARENT MODE MUX                           MLD
*                 = 2*1 = FULL DUPLEX (CONSTANT CARRIER OPERATION)       MLD
*                 = 2*2 =                                                MLD
*                 = 2*3 =                                                MLD
*                 = 2*4 =                                                MLD
*                 = 2*5 =                                                MLD
*                 = 2*6 = 2550-100 EMULATOR                              MLD
*                 = 2*7 = 8 PORT MUX (ASSUMED IF 9600 BAUD 6671)         MLD
*                 = 2*8 = FULL WORD COUNT I/O (NORMALLY TO P0 OR P1)     MLD
*                 = 2*9 - 2*11 = EXTRA BIT TIMES                         MLD
*                                                                        MLD
*                                                                        MLD
*         P4 MAY BE USED TO SET THE SYNC CODE (LOWER 8 BITS) FOR         MLD
*         SYNCHRONOUS OPERATION IF OTHER THAN 026.                       MLD
*                                                                        MLD
*                                                                        MLD
          EJECT                                                          MLD
**        ALL SUBROUTINES IN THIS PRODUCT OVERLAY  USE  A  COMMON  ERROR MLD
*         EXIT  SEQUENCE  IF AN ERROR IS DETECTED.  THIS SEQUENCE STORES MLD
*         AN INTERNAL ERROR CODE INTO THE EC REGISTER, AN ERROR  MESSAGE MLD
*         INDEX INTO THE EM REGITER, AND THE CURRENT P REGISTER CONTENTS MLD
*         INTO  THE  EA REGISTER.  A CHECK IS THEN MADE TO SEE IF AN ABT MLD
*         ADDRESS WAS SPECIFIED BY THE USER ON  THE  COMMAND  THAT  JUST MLD
*         FAILED.  IF IT WAS, A JUMP IS MADE TO THIS ADDRESS VIA THE RNI MLD
*         ROUTINE IN THE BASIC PPU DRIVER. IF AN  ABT  ADDRESS  WAS  NOT MLD
*         SPECIFIED,  THE  ABORT  ROUTINE  IN  THE  BASIC  PPU DRIVER IS MLD
*         ENTERED.  THIS ROUTINE WILL EITHER ABORT THE TESTING AND  DROP MLD
*         THE  PPU,  OR  WILL RESTART THE MODULE EXECUTION AT THE MODULE MLD
*         ENTRY POINT DEPENDING UPON THE CURRENT SETTING  OF  THE  STOP- MLD
*         ON-ERROR SWITCH.( ABORT IF SET).                               MLD
*                                                                        MLD
          EJECT                                                          MLD
**        THE FOLLOWING TABLE DEFINES THE ERROR CODES AND MESSAGES THAT  MLD
*         MAY BE GENERATED FOR EACH COMMAND FOR MUX.                     MLD
*                                                                        MLD
*                                     MEMRD--------. .------MEMWR        MLD
*                                    MCLEAR------. . . .-----OUTPUT      MLD
*                                   MAINTWR----. . . . . .----READ       MLD
*                                  MAINTRD---. . . . . . . .---STATUS    MLD
*                                 INPUT----. . . . . . . . . .--WAIT     MLD
*                                REL---- . . . . . . . . . . . .-WRITE   MLD
* CODE   MESSAGE                RES----. . . . . . . . . . . . .         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 01 CH NOT RESERVED                   . . X X X X X X X X X . X         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 02 MUX WORD NUMBER ERROR             . . . X X . . . . . . . .         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 03 ILLEGAL COMMAND FOR EQUIP TYPE    . . . X X X X X . . . . .         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 04 BUFFER REFERENCE ERROR            . . X X . . . . . X X . .         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 10 CH ACTIVE BEFORE FUNCTION         . . X X X X X X X X X . X         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 11 CH ACTIVE AFTER FUNCTION          . . X X X X X X X X X . X         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 12 CH ACTIVE BEFORE ACTIVATE         . . X X X X X X X X X . X         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 13 CH INACTIVE AFTER ACTIVATE        . . X X X X X X X X X . X         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 14 CH FULL BEFORE OUTPUT             . . . . X X . X X . . . X         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 15 CH FULL AFTER OUTPUT              . . . . X X . X X . . . X         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 16 CH INACTIVE DURING OUTPUT         . . . . X X . X X . . . X         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 17 CH EMPTY BEFORE STATUS INPUT      . . X X . . X . . X . . .         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 20 CH INACTIVE DURING INPUT          . . X X . . X . . X . . .         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 21 CH INACTIVE BEFORE DEACTIVATE     . . X X X X X X X X X . X         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 22 CH ACTIVE AFTER DEACTIVATE        . . X X X X X X X X X . X         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 40 TIMEOUT ON NO VALID CHAR STATUS   . . X . . . . . . . . . .         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 41 TERMINAL NOT READY,NO DSR OR CO   . . X . . . . . X . . . .         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 42 LOST DATA                         . . X . . . . . . . . . .         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 43 MEMORY PARITY ERROR               . . X . . . . . X . . . .         MLD
*    --------------------------------- - - - - - - - - - - - - -         MLD
* 44 TIMEOUT ON CHARACTER REJECT       . . . . . . . . X . . . .         MLD
*    -----------------------------------------------------------         MLD
*                                                                        MLD
          EJECT                                                          MLD
**        DIRECT CELLS.                                                  MLD
                                                                         MLD
* B0      INDEX REGISTERS                                                MLD
* B1                                                                     MLD
* B2                                                                     MLD
* B3                                                                     MLD
* B4                                                                     MLD
* B5                                                                     MLD
* B6                                                                     MLD
* B7                                                                     MLD
                                                                         MLD
* WC      WORD COUNT REG N/U                                             MLD
* BA      BEGINNIG ADDRESS REG N/U                                       MLD
* P0      PARAMETER REGISTERS - OUTPUT PORT                              MLD
* P1      INPUT PORT                                                     MLD
* P2      BAUD RATE INDEX                                                MLD
* P3      EXTRA BIT COUNT                                                MLD
* P4      N/U                                                            MLD
* P5      N/U                                                            MLD
                                                                         MLD
* P6      N/U                                                            MLD
* P7      N/U                                                            MLD
* P8      N/U                                                            MLD
* P9      N/U                                                            MLD
* WT      I/O WORD COUNT FOR MEMRD/WR AND MAINTRD/WR                     MLD
* LF      LAST FUNCTION REG                                              MLD
* P       PROGRAM ADDRESS REG                                            MLD
* EC      ERROR CODE REG                                                 MLD
                                                                         MLD
* EA      ERROR LINE NUMBER REG (P)                                      MLD
* EM      ERROR MESSAGE ADDRESS                                          MLD
* DC      DEVICE CODE REG                                                MLD
* RT                                                                     MLD
                                                                         MLD
 DA       EQU    60B         HOLDS REMAINING TIME FOR DELAY              MLD
 DB       EQU    61B                                                     MLD
 TM       EQU    62B         HOLDS CURRENT TIME FOR DELAY                MLD
 WF       EQU    63B         FLAG FOR 6676 TO SLOW IO RATE               MLD
 SP       EQU    64B         STATUS BUFFER POINTER                       MLD
 AA       EQU    65B         ABORT ADDRESS                               MLD
 AB       EQU    66B                                                     MLD
                                                                         MLD
**        PPU EQUATES.                                                   MLD
                                                                         MLD
 SVN1DC   EQU    60B         6671 DEVICE CODE                            MLD
 SVN6DC   EQU    61B         6676 DEVICE CODE                            MLD
 T551DC   EQU    62B         2550-100 6671 MODE DEVICE CODE              MLD
 T556DC   EQU    63B         2550-100 6676 MODE DEVICE CODE              MLD
 IOBUFL   EQU    500B        I/O BUFFER LENGTHS                          MLD
                                                                         MLD
**        ERROR CODE TABLE.                                              MLD
                                                                         MLD
 EC.FLE   EQU    1           ERROR CODES NEEDED BY BASIC DRIVER          MLD
 EC.TL    EQU    2                                                       MLD
 EC.SEE   EQU    3                                                       MLD
 EC.WC    EQU    4                                                       MLD
 EC.RES   EQU    5                                                       MLD
 EC.RES1  EQU    6                                                       MLD
 EC.RES2  EQU    7                                                       MLD
                                                                         MLD
 EC.CONST EQU    4400B       CONSTANT ADDED TO ALL 667X ERROR CODES      MLD
                                                                         MLD
 EC.CNR   EQU    1           CHANNEL NOT RESERVED                        MLD
 EC.WORDE EQU    2           WORD ERROR                                  MLD
 EC.ILLCM EQU    3           ILLEGAL COMMAND FOR EQUIPMENT TYPE          MLD
 EC.BUFE  EQU    4           BUFFER REFERENCE ERROR                      MLD
                                                                         MLD
 EC.ABF   EQU    10B         CHANNEL ACTIVE BEFORE FUNCTION              MLD
 EC.AAF   EQU    11B         CHANNEL ACTIVE AFTER FUNCTION               MLD
 EC.ABA   EQU    12B         CHANNEL ACTIVE BEFORE ACTIVATE              MLD
 EC.IAA   EQU    13B         CHANNEL INACTIVE AFTER ACTIVATE             MLD
 EC.FBO   EQU    14B         CHANNEL FULL BEFORE OUTPUT                  MLD
 EC.FAO   EQU    15B         CHANNEL FULL AFTER OUTPUT                   MLD
 EC.IDO   EQU    16B         CHANNEL DEACTIVE DURING OUTPUT              MLD
 EC.EBI   EQU    17B         CHANNEL EMTPY BEFORE INPUT                  MLD
 EC.IDI   EQU    20B         CHANNEL DEACTIVE DURING INPUT               MLD
 EC.IBD   EQU    21B         CHANNEL INACTIVE BEFORE DEACTIVATE          MLD
 EC.AAD   EQU    22B         CHANNEL ACTIVE AFTER DEACTIVATE             MLD
                                                                         MLD
 EC.VCNS  EQU    40B         NO VALID CHARACTER STATUS                   MLD
 EC.TNR   EQU    41B         TERMINAL NOT READY                          MLD
 EC.LD    EQU    42B         LOST DATA                                   MLD
 EC.MPE   EQU    43B         MEMORY PARITY ERROR                         MLD
 EC.CHRJ  EQU    44B         CHARACTER REJECT                            MLD
          EJECT                                                          MLD
**        ERROR MESSAGES - WRITTEN TO CM DURING INITIALIZATION.          MLD
*                                                                        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
                                                                         MLD
**        ENTRY/EXIT POINTS FROM BASIC DRIVER AND INSTRUCTION STACK.     MLD
                                                                         MLD
 START    LJM    *           ENTRY/EXIT FOR INITIALIZATION               MLD
          LJM    INIT                                                    MLD
                                                                         MLD
          VFD    12D/IBUF    INPUT BUFFER ADDRESS                        MLD
          VFD    12D/OBUF    OUTPUT BUFFER ADDRESS                       MLD
          VFD    12D/SBUF    STATUS BUFFER ADDRESS                       MLD
          VFD    12D/IOBUFL  LENGTH OF INPUT BUFFER                      MLD
          VFD    12D/IOBUFL  LENGTH OF OUTPUT BUFFER                     MLD
          VFD    12D/LSB     LENGTH OF STATUS BUFFER                     MLD
          VFD    12/BD.VERS  VERSION NUMBER 
                                                                         MLD
 XREL     LJM    *           ENTRY/EXIT FOR *REL*                        MLD
          LJM    RELEASE                                                 MLD
 XRES     LJM    *           ENTRY/EXIT FOR *RES*                        MLD
          LJM    RESERVE                                                 MLD
 XINPUT   LJM    *           ENTRY/EXIT FOR *INPUT*                      MLD
          LJM    INPUT                                                   MLD
 XMAINTRD LJM    *           ENTRY/EXIT FOR *MAINTRD*                    MLD
          LJM    MRD                                                     MLD
 XMAINTWR LJM    *           ENTRY/EXIT FOR *MAINTWR*                    MLD
          LJM    MWR                                                     MLD
 XMCLEAR  LJM    *           ENTRY/EXIT FOR *MCLEAR*                     MLD
          LJM    MCLEAR                                                  MLD
 XMEMRD   LJM    *           ENTRY/EXIT FOR *MEMRD*                      MLD
          LJM    MEMRD                                                   MLD
 XMEMWR   LJM    *           ENTRY/EXIT FOR *MEMWR*                      MLD
          LJM    MEMWR                                                   MLD
 XOUTPUT  LJM    *           ENTRY/EXIT FOR *OUTPUT*                     MLD
          LJM    OUTPUT                                                  MLD
 XREAD    LJM    *           ENTRY/EXIT FOR *READ*                       MLD
          LJM    READIT                                                  MLD
 XSTATUS  LJM    *           ENTRY/EXIT FOR *STATUS*                     MLD
          LJM    STAT                                                    MLD
 XWAIT    LJM    *           ENTRY/EXIT FOR *WAIT*                       MLD
          LJM    WAIT                                                    MLD
 XWRITE   LJM    *           ENTRY/EXIT FOR *WRITE*                      MLD
          LJM    WRITEIT                                                 MLD
          EJECT                                                          MLD
**        NAME - INPUT (*INPUT*).                                        MLD
*                                                                        MLD
*         DESCRIPTION - LOOP READING MUX UNTIL VALID CHARACTER SET AND   MLD
*                       STORE DATA IN INPUT BUFFER OR UNTIL CHARACTER    MLD
*                       TIMED OUT. CHECKS DSR OR CO TO BE UP, NO LOST    MLD
*                       DATA, AND TESTS FOR MEMORY PARITY ERROR.         MLD
*                                                                        MLD
*         ENTRY - P1= INPUT PORT, D.TO= INPUT BUFFER ADDRESS,            MLD
*                     (A)= ABT ADDR.                                     MLD
*                                                                        MLD
*         EXIT - DATA IN INPUT BUFFER (D.T0).                            MLD
*                                                                        MLD
*         USES - AA,AB,D.T0,P1,P.                                        MLD
*                                                                        MLD
*         CALLS - STD,RDD,DLP,STT.                                       MLD
*                                                                        MLD
 INPUT    STD    AB          SAVE ABT ADDRESS                            MLD
          SHN    -12D                                                    MLD
          STD    AA                                                      MLD
          LDD    D.T0        GET INPUT BUFFER ADDRESS                    MLD
          ADC    -IBUF       TEST FOR WITHIN INPUT BUFFER                MLD
          MJN    INPUTE      IF .LT. BUFFER                              MLD
          ADC    -IOBUFL                                                 MLD
          MJN    INPUT1      IF WITHIN BUFFER                            MLD
 INPUTE   LDC    ER.BUFE     SET BUFFER ERROR                            MLD
          UJN    INPUT6                                                  MLD
 INPUT1   LDC    0           CHARACTER TIME *** PROGRAM MODIFIED ***     MLD
          RJM    STD         START DELAY TIME                            MLD
 INPUT2   RJM    RDD         READ                                        MLD
          LDM    MUXIN1 
 MUXIN1   EQU    *-1
          SHN    6                                                       MLD
          MJN    INPUT4      IF VALID CHARACTER SET                      MLD
          RJM    DLP         CHECK TIME DELAY  *** PROGRAM MODIFIED ***  MLD
*         RJM    WTI         SLOW I/O FOR 6676                           MLD
 INPUT3   EQU    *-1                                                     MLD
          PJN    INPUT2      IF DELAY NOT FINSHED                        MLD
          LDC    ER.VCNS     NO VALID CHARACTER STATUS ERROR             MLD
          UJN    INPUT6                                                  MLD
 INPUT4   SHN    3           SHIFT DSR+DCD TO LOWER 3 BITS               MLD
          LPN    3                                                       MLD
          NJN    INPUT5      IF DSR OR CO SET                            MLD
          LDC    ER.TNR      TERMINAL NOT READY ERROR                    MLD
          UJN    INPUT6                                                  MLD
 INPUT5   SBN    3                                                       MLD
          NJN    INPUT7      IF NOT LOST DATA                            MLD
          LDC    ER.LD       LOST DATA ERROR                             MLD
 INPUT6   LJM    ERR         ERROR EXIT                                  MLD
 INPUT7   LDN    2                                                       MLD
          RJM    STT         GET STATUS                                  MLD
          LPN    40B                                                     MLD
          ZJN    INPUT8      IF NO MPE                                   MLD
          LDC    ER.MPE      MEMORY PARITY ERROR                         MLD
          UJN    INPUT6                                                  MLD
 INPUT8   LDM    MUXIN2      GET DATA FROM MUX INPUT BUFFER 
 MUXIN2   EQU    *-1
          STI    D.T0        SAVE IT IN INPUT BUFFER                     MLD
          LJM    XINPUT      EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - MCLEAR (*MCLEAR*) *** 6671 ONLY ***.                    MLD
*                                                                        MLD
*                                                                        MLD
*         DESCRIPTION - WRITES ZEROS TO OUTPUT AND INPUT INFO WORDS,     MLD
*                       AND THE LOWER 12 BITS OF THE OUTPUT BUFFER       MLD
*                       WORD USING A MAINTENANCE WRITE.                  MLD
*                                                                        MLD
*         ENTRY - (A)= ABT ADDR.                                         MLD
*                                                                        MLD
*         EXIT - OPERATION COMPLETE.                                     MLD
*                                                                        MLD
*         USES - AA,AB,P0,P1,P.                                          MLD
*                                                                        MLD
*         CALLS - SPW.                                                   MLD
*                                                                        MLD
 MCLEAR   STD    AB          SAVE ABT ADDRESS                            MLD
          SHN    -12D                                                    MLD
          STD    AA                                                      MLD
 MCLEAR1  LDN    0                                                       MLD
          STM    MUXOUT 
 MCPIN    EQU    *-1
          STM    MUXOUT 
 MCPOUT   EQU    *-1
          LDN    60B                                                     MLD
          RJM    SPW         CLEAR UPPER OUTPUT INFO WORD                MLD
          LDN    64B                                                     MLD
          RJM    SPW         CLEAR LOWER OUTPUT INFO WORD                MLD
          LDN    63B                                                     MLD
          RJM    SPW         CLEAR UPPER INPUT INFO WORD                 MLD
          LDN    67B                                                     MLD
          RJM    SPW         CLEAR LOWER INPUT INFO WORD                 MLD
          LDN    65B                                                     MLD
          RJM    SPW         CLEAR LOWER OUTPUT BUFFER WORD              MLD
          LJM    XMCLEAR     EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - MEMRD (*MEMRD*) *** 6671 AND 2550-100 ONLY ***.         MLD
*                                                                        MLD
*                                                                        MLD
*         DESCRIPTION - READS 8 WORDS FROM ALL PORTS TO THE INPUT        MLD
*                       BUFFER, WORD 0 OF ALL PORTS ARE IN THE           MLD
*                       INPUT BUFFER STARTING AT LOCATION 0. USES        MLD
*                       THE MAINTENANCE READ FUNCTION WITH HOLD.         MLD
*                                                                        MLD
*         ENTRY - (A)= ABT ADDR, WT= I/O WORD COUNT.                     MLD
*                                                                        MLD
*         EXIT - INPUT BUFFER CONTAINS DATA.                             MLD
*                                                                        MLD
*         USES - AA,AB,D.T0,D.T1,D.T2,WT,P.                              MLD
*                                                                        MLD
*         CALLS - SPR.                                                   MLD
*                                                                        MLD
 MEMRD    STD    AB          SAVE ABT ADDRESS                            MLD
          SHN    -12D                                                    MLD
          STD    AA                                                      MLD
 MEMRD1   LDN    0           CLEAR CELLS                                 MLD
          STD    D.T0                                                    MLD
          STD    D.T1                                                    MLD
          STD    D.T2                                                    MLD
 MEMRD2   LDD    D.T2        GET WORD NUMBER                             MLD
          ADN    50B         MAINTENANCE READ WITH HOLD                  MLD
          RJM    SPR         READ WORD FROM ALL PORTS                    MLD
 MEMRD3   LDM    MUXIN,D.T1  MOVE DATA TO INPUT BUFFER                   MLD
          STM    IBUF,D.T0                                               MLD
          AOD    D.T0        BUMP STORE ADDRESS                          MLD
          AOD    D.T1        BUMP BUFFER ADDRESS                         MLD
          SBD    WT          SUBTRACT I/O WORD COUNT                     MLD
          NJN    MEMRD3      IF MORE DATA                                MLD
          STD    D.T1        CLEAR BUFFER ADDRESS                        MLD
          AOD    D.T2        BUMP WORD NUMBER                            MLD
          SBN    8D                                                      MLD
          NJN    MEMRD2      IF MORE WORDS                               MLD
          LJM    XMEMRD      EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - MEMWR (*MEMWR*) *** 6671 AND 2550-100 ***.              MLD
*                                                                        MLD
*                                                                        MLD
*         DESCRIPTION - WRITES OUTPUT BUFFER TO ALL 8 WORDS OF ALL PORTS MLD
*                       STARTING FROM LOCATION 0. USES THE MAINTENANCE   MLD
*                       WRITE FUNCTION WITH HOLD.                        MLD
*                                                                        MLD
*         ENTRY - (A)= ABT ADDR, WT= I/O WORD COUNT.                     MLD
*                                                                        MLD
*         EXIT - DATA FROM OUTPUT BUFFER WRITTEN TO MUX.                 MLD
*                                                                        MLD
*         USES - AA,AB,D.T0,D.T1,D.T2,WT,P.                              MLD
*                                                                        MLD
*         CALLS - SPW,CLM.                                               MLD
*                                                                        MLD
 MEMWR    STD    AB          SAVE ABT ADDRESS                            MLD
          SHN    -12D                                                    MLD
          STD    AA                                                      MLD
 MEMWR1   LDN    0           CLEAR CELLS                                 MLD
          STD    D.T0                                                    MLD
          STD    D.T1                                                    MLD
          STD    D.T2                                                    MLD
 MEMWR2   LDM    OBUF,D.T0   MOVE DATA FROM OUTPUT BUFFER                MLD
          STM    MUXOUT,D.T1                                             MLD
          AOD    D.T0        BUMP BUFFER ADDRESS                         MLD
          AOD    D.T1        BUMP STORE ADDRESS                          MLD
          SBD    WT          SUBTRACT I/O WORD COUNT                     MLD
          NJN    MEMWR2      IF MORE DATA                                MLD
          STD    D.T1        CLEAR BUFFER ADDRESS                        MLD
          LDD    D.T2        GET WORD NUMBER                             MLD
          ADN    60B         MAINTENANCE WRITE WITH HOLD                 MLD
          RJM    SPW         WRITE WORD TO ALL PORTS                     MLD
          AOD    D.T2        BUMP WPRD NUMBER                            MLD
          SBN    8D                                                      MLD
          NJN    MEMWR2      IF MORE WORDS                               MLD
          RJM    CLM         CLEAR MUX OUTPUT BUFFER                     MLD
          LJM    XMEMWR      EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - MRD (*MAINTRD*) *** 6671 ONLY ***.                      MLD
*                                                                        MLD
*                                                                        MLD
*         DESCRIPTION - DOES MAINTENANCE READ FUNCTION PUTTING DATA      MLD
*                       IN THE INPUT BUFFER.                             MLD
*                                                                        MLD
*         ENTRY - D.T0= WORD TO READ, D.T1= INPUT BUFFER ADDRESS         MLD
*                 D.T2= PORT NUMBER, D.T3= HOLD BIT, (A)= ABT ADDR.      MLD
*                                                                        MLD
*         EXIT - DATA IN INPUT BUFFER.                                   MLD
*                                                                        MLD
*         USES - AA,AB,D.T0,D.T1,D.T2,D.T3,P.                            MLD
*                                                                        MLD
*         CALLS - SPR.                                                   MLD
*                                                                        MLD
 MRD      STD    AB          SAVE ABT ADDRESS                            MLD
          SHN    -12D                                                    MLD
          STD    AA                                                      MLD
          LDD    D.T0        GET WORD NUMBER                             MLD
          SBN    10B                                                     MLD
          PJN    MWR1        IF OUT OF RANGE                             MLD
          LDD    D.T1        GET BUFFER ADDRESS                          MLD
          ADC    -IBUF       TEST FOR WITHIN INPUT BUFFER                MLD
          MJN    MRDE        IF .LT. BUFFER                              MLD
          ADC    -IOBUFL                                                 MLD
          MJN    MRD1        IF WITHIN BUFFER                            MLD
 MRDE     LDC    ER.BUFE     BUFFER ERROR                                MLD
          UJN    MWR2                                                    MLD
 MRD1     LDD    D.T3        GET HOLD BIT                                MLD
          SHN    5           SHIFT UP                                    MLD
          ADD    D.T0        ADD WORD NUMBER                             MLD
          ADN    10B         ADD READ BIT                                MLD
          RJM    SPR         READ                                        MLD
          LDM    MUXIN,D.T2  GET DATA FROM MUX INPUT BUFFER              MLD
          STI    D.T1        STORE IN INPUT BUFFER                       MLD
          LJM    XMAINTRD    EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - MWR (*MAINTWR*) *** 6671 ONLY ***.                      MLD
*                                                                        MLD
*                                                                        MLD
*         DESCRIPTION - DOES MAINTENANCE WRITE FUNCTION.                 MLD
*                                                                        MLD
*         ENTRY - D.T0= DATA, D.T1= WORD NUMBER, D.T2= PORT NUMBER,      MLD
*                 D.T3= HOLD BIT, (A)= ABT ADDR.                         MLD
*                                                                        MLD
*         EXIT - DATA WRITTEN TO MUX.                                    MLD
*                                                                        MLD
*         USES - AA,AB,D.T0,D.T1,D.T2,D.T3,P.                            MLD
*                                                                        MLD
*         CALLS - SPW.                                                   MLD
*                                                                        MLD
 MWR      STD    AB          SAVE ABT ADDRESS                            MLD
          SHN    -12D                                                    MLD
          STD    AA                                                      MLD
          LDD    D.T1        GET WORD NUMBER                             MLD
          SBN    10B                                                     MLD
          MJN    MWR3        IF OK                                       MLD
 MWR1     LDC    ER.WORDE    WORD NUMBER ERROR                           MLD
 MWR2     LJM    ERR                                                     MLD
 MWR3     LDD    D.T0        GET DATA                                    MLD
          STM    MUXOUT,D.T2 STORE IN MUX OUTPUT BUFFER                  MLD
          LDD    D.T3        GET HOLD BIT                                MLD
          SHN    5           SHIFT UP                                    MLD
          ADD    D.T1        ADD WORD NUMBER                             MLD
          ADN    20B         ADD WRITE BIT                               MLD
          RJM    SPW         WRITE                                       MLD
          LDN    0                                                       MLD
          STM    MUXOUT,D.T2 CLEAR MUX OUTPUT BUFFER                     MLD
          LJM    XMAINTWR    EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - OUTPUT (*OUTPUT*).                                      MLD
*                                                                        MLD
*                                                                        MLD
*         DESCRIPTION - WRITES DATA TO MUX UNTIL NO CHARACTER REJECT OR  MLD
*                       CHARACTER TIMEOUT. CHECKS DSR OR CO UP AND TESTS MLD
*                       MEMORY PARITY ERROR. CHECKS VALID CHARACTER      MLD
*                       STATUS ON INPUT PORT TO INSURE WE DONT WIPE OUT  MLD
*                       A CHARACTER, P AND DATA STORED IN STATUS BUFFER  MLD
*                       IF SO.                                           MLD
*                                                                        MLD
*         ENTRY - D.T0= DATA, D.T1= PORT NUMBER, (A)= ABT ADDR.          MLD
*                                                                        MLD
*         EXIT - DATA OUTPUTED AND ANY VALID CHARACTERS SAVED IN STATUS  MLD
*                BUFFER.                                                 MLD
*                                                                        MLD
*         USES - AA,AB,D.T0,D.T1,P1,SP,P.                                MLD
*                                                                        MLD
*         CALLS - STD,WRT,RDD,DLP,STT.                                   MLD
*                                                                        MLD
 OUTPUT   STD    AB          SAVE ABT ADDRESS                            MLD
          SHN    -12D                                                    MLD
          STD    AA                                                      MLD
          LDD    D.T0        GET DATA                                    MLD
          STM    MUXOUT,D.T1 STORE DATA IN MUX OUTPUT BUFFER             MLD
 OUTPUT1  LDC    0           CHARACTER TIME *** PROGRAM MODIFIED ***     MLD
          RJM    STD         START DELAY TIME                            MLD
 OUTPUT2  RJM    WRT         WRITE                                       MLD
          RJM    RDD         READ                                        MLD
          LDM    MUXIN3      GET INPUT PORT 
 MUXIN3   EQU    *-1
          SHN    6                                                       MLD
          PJN    OUTPUT3     IF NO VALID CHARACTER IS NORMAL             MLD
          LDD    SP                                                      MLD
          SBN    LSB                                                     MLD
          PJN    OUTPUT3     IF NO ROOM IN TABLE                         MLD
          LDM    MUXIN4 
 MUXIN4   EQU    *-1
          STM    SBUF,SP     STORE DATA                                  MLD
          LDD    P                                                       MLD
          STM    SBUF+1,SP   STORE OPERATION NUMBER                      MLD
          LDN    2                                                       MLD
          RAD    SP          BUMP POINTER                                MLD
          LDN    0                                                       MLD
          STM    SBUF,SP     CLEAR NEXT ENTRY                            MLD
 OUTPUT3  LDM    MUXIN,D.T1  GET DATA FROM OUTPUT PORT                   MLD
          SHN    9D                                                      MLD
          PJN    OUTPUT5     IF NO CHARACTER REJECT                      MLD
          RJM    DLP         CHECK TIME DELAY  *** PROGRAM MODIFIED ***  MLD
*         RJM    WTI         SLOW I/O FOR 6676                           MLD
 OUTPUT4  EQU    *-1                                                     MLD
          PJN    OUTPUT2     IF DELAY NOT FINSHED                        MLD
          LDC    ER.CHRJ     CHARACTER REJECT TIME OUT ERROR             MLD
          UJN    OUTPUT6                                                 MLD
 OUTPUT5  LPN    3           MASK DSR+DCD                                MLD
          NJN    OUTPUT7     IF DSR OR CO UP                             MLD
          LDC    ER.TNR      TERMINAL NOT READY ERROR                    MLD
 OUTPUT6  LJM    ERR         ERROR EXIT                                  MLD
 OUTPUT7  LDN    2                                                       MLD
          RJM    STT         GET STATUS                                  MLD
          LPN    40B                                                     MLD
          ZJN    OUTPUT8     IF NO MPE                                   MLD
          LDC    ER.MPE      MEMORY PARITY ERROR                         MLD
          UJN    OUTPUT6                                                 MLD
 OUTPUT8  STM    MUXOUT,D.T1 CLEAR MUX OUTPUT BUFFER                     MLD
          LJM    XOUTPUT     EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - READIT (*READ*).                                        MLD
*                                                                        MLD
*                                                                        MLD
*         DESCRIPTION - READS MUX AND STORES PORT DATA IN INPUT BUFFER.  MLD
*                                                                        MLD
*         ENTRY - D.T0= INPUT BUFFER ADDRESS, D.T1= PORT NUMBER,         MLD
*                 (A)= ABT ADDR.                                         MLD
*                                                                        MLD
*         EXIT - DATA STORED IN INPUT BUFFER.                            MLD
*                                                                        MLD
*         USES - AA,AB,D.T0,D.T1,P.                                      MLD
*                                                                        MLD
*         CALLS - RDD.                                                   MLD
*                                                                        MLD
 READIT   STD    AB          SAVE ABT ADDRESS                            MLD
          SHN    -12D                                                    MLD
          STD    AA                                                      MLD
          LDD    D.T0        GET BUFFER ADDRESS                          MLD
          ADC    -IBUF       TESTS FOR WITHIN INPUT BUFFER               MLD
          MJN    READITE     IF .LT. BUFFER                              MLD
          ADC    -IOBUFL                                                 MLD
          MJN    READIT1     IF WITHIN BUFFER                            MLD
 READITE  LDC    ER.BUFE     BUFFER ERROR                                MLD
          UJN    OUTPUT6                                                 MLD
 READIT1  RJM    RDD         READ DATA                                   MLD
          LDM    MUXIN,D.T1  GET DATA MUX INPUT BUFFER                   MLD
          STI    D.T0        STORE IN INPUT BUFFER                       MLD
          LJM    XREAD       EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - RELEASE (*REL*).                                        MLD
*                                                                        MLD
*         DESCRIPTION - RELEASES RESERVE ON CHANNEL.                     MLD
*                                                                        MLD
*         ENTRY - BD.CHFG HAS RESERVE FLAG.                              MLD
*                                                                        MLD
*         EXIT - CHANNEL RELEASED.                                       MLD
*                                                                        MLD
*         USES - BD.CHFG,P.                                              MLD
*                                                                        MLD
*         CALLS - BD.DCH,DCH,BD.PAUSE.                                   MLD
*                                                                        MLD
 RELEASE  LDM    BD.CHFG     GET CHANNEL FLAG                            MLD
          ZJN    RELEASE1    IF NOT RESERVED                             MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    RELEASE1    SKIP CLEANUP IF REQUESTED                   MLD
          RJM    DCH         INSURE CHANNEL INACTIVE                     MLD
 RELEASE1 RJM    BD.DCH      DROP CHANNEL THRU BASIC DRIVER              MLD
          LJM    XREL        EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - RESERVE (*RES*).                                        MLD
*                                                                        MLD
*         DESCRIPTION - RESERVES CHANNEL, IF ALREADY RESERVED, A PAUSE   MLD
*                       IS DONE SO BASIC DRIVER CAN DO TIME              MLD
*                       SLOT CALCULATIONS. CLEARS STATUS BUFFER POINTER  MLD
*                       AND STATUS BUFFER FWA, ERROR CODE REG, ERROR     MLD
*                       ADDRESS REG, ERROR MESSAGE ADDRESS, AND MUX      MLD
*                       OUTPUT BUFFER.                                   MLD
*                                                                        MLD
*         ENTRY - BD.CHFG HAS RESERVE FLAG.                              MLD
*                                                                        MLD
*         EXIT - CHANNEL RESERVED.                                       MLD
*                                                                        MLD
*         USES - BD.CHFG,SP,EC,EA,EM,P.                                  MLD
*                                                                        MLD
*         CALLS - BD.PAUSE,BD.RCH,DCH,CLM.                               MLD
*                                                                        MLD
 RESERVE  LDM    BD.CHFG     GET CHANNEL FLAG                            MLD
          ZJN    RESERVE1    IF NOT RESERVED                             MLD
          RJM    DCH         INSURE CHANNEL INACTIVE                     MLD
 RESERVE1 RJM    BD.RCH      RESERVE CHANNEL                             MLD
          RJM    DCH         INSURE CHANNEL INACTIVE                     MLD
          LDN    0           CLEAR STATUS BUFFER AND POINTER             MLD
          STD    SP                                                      MLD
          STM    SBUF                                                    MLD
          STD    EC          ERROR CODE                                  MLD
          STD    EA          ERROR ADDRESS                               MLD
          STD    EM          ERROR MESSAGE POINTER                       MLD
          RJM    CLM         CLEAR MUX OUTPUT BUFFER                     MLD
          LJM    XRES        EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - STAT (*STATUS*).                                        MLD
*                                                                        MLD
*         DESCRIPTION - READS MUX STATUS AND STORES IT IN THE INPUT      MLD
*                       BUFFER.                                          MLD
*                                                                        MLD
*         ENTRY - D.T0= INPUT BUFFER ADDRESS, D.T1= HOLD BIT,            MLD
*                 (A)= ABT ADDR.                                         MLD
*                                                                        MLD
*         EXIT - STATUS IN INPUT BUFFER.                                 MLD
*                                                                        MLD
*         USES - AA,AB,D.T0,D.T1,P.                                      MLD
*                                                                        MLD
*         CALLS - STT.                                                   MLD
*                                                                        MLD
 STAT     STD    AB          SAVE ABT ADDR                               MLD
          SHN    -12D                                                    MLD
          STD    AA                                                      MLD
          LDD    D.T0        GET INPUT BUFFER ADDRESS                    MLD
          ADC    -IBUF       TESTS FOR WITHIN INPUT BUFFER               MLD
          MJN    STATE       IF .LT. BUFFER                              MLD
          ADC    -IOBUFL                                                 MLD
          MJN    STAT1       IF WITHIN BUFFER                            MLD
 STATE    LDC    ER.BUFE     BUFFER ERROR                                MLD
          LJM    ERR                                                     MLD
 STAT1    LDD    D.T1        GET HOLD BIT                                MLD
          SHN    8D          SHIFT UP                                    MLD
          ADN    2           ADD STATUS FUNCTION                         MLD
          RJM    STT         GET STATUS                                  MLD
          STI    D.T0        STORE IT                                    MLD
          LJM    XSTATUS     EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - WAIT (*WAIT*).                                          MLD
*                                                                        MLD
*         DESCRIPTION - DOES WAIT CHARACTER, WAIT HALF CHARACTER, AND    MLD
*                       WAIT BIT FUNCTIONS. USES TABLE TO GET ADDRESS    MLD
*                       OF PROPER ROUTINE.                               MLD
*                                                                        MLD
*         ENTRY - D.TO= 0 FOR WAIT CHARACTER, 1 FOR WAIT HALF CHARACTER, MLD
*                       AND 2 FOR WAIT BIT.                              MLD
*                                                                        MLD
*         EXIT - WAIT COMPLETE.                                          MLD
*                                                                        MLD
*         USES - D.T0.                                                   MLD
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
 WAIT     STD    D.T0        SAVE WAIT POINTER                           MLD
          LDM    WTJTBL,D.T0 GET ADDRESS FROM JUMP TABLE                 MLD
          STM    WAIT1+1     STORE IN JUMP INSTRUCTION                   MLD
 WAIT1    LJM    *           JUMP TO PROPER WAIT ROUTINE                 MLD
                                                                         MLD
 WTJTBL   VFD    12D/WAITC                                               MLD
          VFD    12D/WAITHC                                              MLD
          VFD    12D/WAITB                                               MLD
          SPACE  4,20                                                    MLD
**        NAME - WAITC (WAIT CHARACTER).                                 MLD
*                                                                        MLD
*         DESCRIPTION - PERFORMS WAIT CHARACTER FOR WAIT FUNCTION.       MLD
*                                                                        MLD
*         ENTRY - NONE.                                                  MLD
*                                                                        MLD
*         EXIT - WAIT COMPLETE.                                          MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS - STD,DLP.                                               MLD
*                                                                        MLD
 WAITC    LDC    0           CHARACTER TIME  *** PROGRAM MODIFIED ***    MLD
          RJM    STD         START DELAY TIME                            MLD
 WAITC1   RJM    DLP         CHECK TIME DELAY                            MLD
          PJN    WAITC1      IF DELAY NOT FINSHED                        MLD
          LJM    XWAIT       EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - WAITHC (WAIT HALF CHARACTER).                           MLD
*                                                                        MLD
*         DESCRIPTION - PERFORMS WAIT HALF CHARACTER FOR WAIT FUNCTION.  MLD
*                                                                        MLD
*         ENTRY - NONE.                                                  MLD
*                                                                        MLD
*         EXIT - WAIT COMPLETE.                                          MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS - STD,DLP.                                               MLD
*                                                                        MLD
 WAITHC   LDC    0           CHARACTER TIME  *** PROGRAM MODIFIED ***    MLD
          RJM    STD         START DELAY TIME                            MLD
 WAITHC1  RJM    DLP         CHECK TIME DELAY                            MLD
          PJN    WAITHC1     IF DELAY NOT FINSHED                        MLD
          LJM    XWAIT       EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - WAITB (WAIT BIT).                                       MLD
*                                                                        MLD
*         DESCRIPTION - PERFORMS WAIT BIT FOR WAIT FUNCTION.             MLD
*                                                                        MLD
*         ENTRY - NONE.                                                  MLD
*                                                                        MLD
*         EXIT - WAIT COMPLETE.                                          MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS - STD,DLP.                                               MLD
*                                                                        MLD
 WAITB    LDC    0           BIT TIME  *** PROGRAM MODIFIED ***          MLD
          RJM    STD         SET DELAY TIME                              MLD
 WAITB1   RJM    DLP         CHECK TIME DELAY                            MLD
          PJN    WAITB1      IF DELAY NOT FINISHED                       MLD
          LJM    XWAIT       EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - WRITEIT (*WRITE*).                                      MLD
*                                                                        MLD
*         DESCRIPTION - WRITES DATA TO MUX PORT.                         MLD
*                                                                        MLD
*         ENTRY - D.T0= DATA, D.T1= PORT NUMBER, (A)= ABT ADR.           MLD
*                                                                        MLD
*         EXIT - DATA WRITTEN TO MUX PORT.                               MLD
*                                                                        MLD
*         USES - AA,AB,D.T0,D.T1,P.                                      MLD
*                                                                        MLD
*         CALLS - WRT.                                                   MLD
*                                                                        MLD
 WRITEIT  STD    AB          SAVE ABT ADDR                               MLD
          SHN    -12D                                                    MLD
          STD    AA                                                      MLD
          LDD    D.T0        GET DATA                                    MLD
          STM    MUXOUT,D.T1 STORE IN MUX OUTPUT BUFFER                  MLD
          RJM    WRT         WRITE OUT                                   MLD
          LDN    0                                                       MLD
          STM    MUXOUT,D.T1 CLEAR MUX OUTPUT BUFFER                     MLD
          LJM    XWRITE      EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - ERR (ERROR ROUTINE).                                    MLD
*                                                                        MLD
*         DESCRIPTION - SETS UP *EM*, *EC*, *EA* REGISTERS AND CLEARS    MLD
*                       MUX OUTPUT BUFFER OF GARBAGE, AND GOES           MLD
*                       TO ABORT ADDRESS IF PROVIDED. IF NO ABORT        MLD
*                       ADDRESS IS PROVIDED WE GO TO THE BASIC DRIVER    MLD
*                       ERROR ROUTINE TO REPORT THE ERROR. ON FATAL      MLD
*                       ERRORS WE GO TO THE ABORT ROUTINE.               MLD
*                                                                        MLD
*         ENTRY - (A)= 6/MSG ORD,6/ERROR CODE, IF (A) NEG WE WILL        MLD
*                 UNCONDITIONALLY GO TO THE BASIC DRIVER ABORT           MLD
*                 ROUTINE.                                               MLD
*                                                                        MLD
*         EXIT - TO THE ABORT ADDRESS PROVIDED OR TO THE BASIC DRIVER    MLD
*                ERROR ROUTINE OR ABORT.                                 MLD
*                                                                        MLD
*         USES - D.Z2,EM,EC,P,EA,AA,AB.                                  MLD
*                                                                        MLD
*         CALLS - BASIC DRIVER *RNI*, *ERR*, *ABT*, CLM.                 MLD
*                                                                        MLD
 ERR      SHN    6           FLAG TO LOWER 6 BITS                        MLD
          STD    D.Z2        SAVE UPPER 6 BITS                           MLD
          SCN    77B         CLEAR FLAG                                  MLD
          SHN    6                                                       MLD
          ADC    100B        ADD BIAS                                    MLD
          STD    EM          SET ERROR MESSAGE ADDRESS                   MLD
          SHN    -12D                                                    MLD
          ADC    EC.CONST                                                MLD
          STD    EC          STORE ERROR CODE                            MLD
          IJM    ERR0        IF CHANNEL IN STATE TO EXIT                 MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    ERR0        IF SKIP CHAN CLEANUP REQUESTED              MLD
          DCN    40B                                                     MLD
 ERR0     LDD    P                                                       MLD
          STD    EA          STORE P                                     MLD
          RJM    CLM         CLEAR MUX OUTPUT BUFFER                     MLD
          LDD    D.Z2        GET UNCONDITIONAL ABORT FLAG                MLD
          LPN    77B         MASK FLAG BITS                              MLD
          NJN    ERR2        IF FORCE ABORT                              MLD
          LDD    AA          GET ABT ADDRESS IF ANY                      MLD
          SHN    12D                                                     MLD
          ADD    AB                                                      MLD
          ZJN    ERR1        IF NO ABORT ADDRESS                         MLD
          LJM    BD.RNI      GO TO RNI                                   MLD
 ERR1     LJM    BD.ERR      GO TO BASIC DRIVER ERROR ROUTINE            MLD
 ERR2     LJM    BD.ABT      GO TO ABORT                                 MLD
          SPACE  4,20                                                    MLD
**        NAME - SPR                                                     MLD
*                                                                        MLD
*         DESCRIPTION - READS DATA FROM MUX USING MAINTENANCE READ       MLD
*                       FUNCTION.                                        MLD
*                                                                        MLD
*         ENTRY - WORD AND HOLD BIT IN A REG, WT= I/O WORD COUNT.        MLD
*                                                                        MLD
*         EXIT - DATA READ FROM MUX.                                     MLD
*                                                                        MLD
*         USES - WT.                                                     MLD
*                                                                        MLD
*         CALLS - FAN,ACN,IAM,DCN.                                       MLD
*                                                                        MLD
 SPRX     LJM    *                                                       MLD
 SPR      EQU    *-1                                                     MLD
          SHN    3           SHIFT BYTE ADDRESS                          MLD
          RJM    FAN         FUNCTION CHANNEL                            MLD
          RJM    ACN         ACTIVATE CHANNEL                            MLD
          LDD    WT          I/O WORD COUNT                              MLD
          RJM    IAM         INPUT DATA                                  MLD
          RJM    DCN         DEACTIVATE CHANNEL                          MLD
          UJN    SPRX        EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - SPW                                                     MLD
*                                                                        MLD
*         DESCRIPTION - WRITES DATA TO MUX USING MAINTENANCE WRITE       MLD
*                       FUNCTION.                                        MLD
*                                                                        MLD
*         ENTRY - MUX OUTPUT BUFFER CONTAINS DATA, WORD AND HOLD BIT     MLD
*                 IN A REG, WT= I/O WORD COUNT.                          MLD
*                                                                        MLD
*         EXIT - DATA WRITTEN TO MUX.                                    MLD
*                                                                        MLD
*         USES - WT.                                                     MLD
*                                                                        MLD
*         CALLS - FAN,ACN,OAM,DCN.                                       MLD
*                                                                        MLD
 SPWX     LJM    *                                                       MLD
 SPW      EQU    *-1                                                     MLD
          SHN    3           SHIFT BYTE ADDRESS                          MLD
          RJM    FAN         FUNCTION CHANNEL                            MLD
          RJM    ACN         ACTIVATE CHANNEL                            MLD
          LDD    WT          I/O WORD COUNT                              MLD
          RJM    OAM         OUTPUT DATA                                 MLD
          RJM    DCN         DEACTIVATE CHANNEL                          MLD
          UJN    SPWX        EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - WRT                                                     MLD
*                                                                        MLD
*         DESCRIPTION - WRITES DATA TO MUX.                              MLD
*                                                                        MLD
*         ENTRY - DATA IN MUX OUTPUT BUFFER.                             MLD
*                                                                        MLD
*         EXIT - DATA WRITEN TO MUX.                                     MLD
*                                                                        MLD
*         USES - NONE.                                                   MLD
*                                                                        MLD
*         CALLS - FAN,ACN,OAM,DCN.                                       MLD
*                                                                        MLD
 WRTX     LJM    *                                                       MLD
 WRT      EQU    *-1                                                     MLD
          LDN    1           WRITE FUNCTION                              MLD
          RJM    FAN         FUNCTION CHANNEL                            MLD
          RJM    ACN         ACTIVATE CHANNEL                            MLD
          LDC    0           PICKUP WORD COUNT  *** PROGRAM MODIFIED *** MLD
 WRT1     EQU    *-1                                                     MLD
          RJM    OAM         OUTPUT DATA                                 MLD
          RJM    DCN         DEACTIVATE CHANNEL                          MLD
          UJN    WRTX        EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - RDD                                                     MLD
*                                                                        MLD
*         DESCRIPTION - READS DATA FROM MUX.                             MLD
*                                                                        MLD
*         ENTRY - NONE.                                                  MLD
*                                                                        MLD
*         EXIT - DATA READ FROM MUX.                                     MLD
*                                                                        MLD
*         USES - NONE.                                                   MLD
*                                                                        MLD
*         CALLS - FAN,ACN,IAM,DCN.                                       MLD
*                                                                        MLD
 RDDX     LJM    *                                                       MLD
 RDD      EQU    *-1                                                     MLD
          LDN    3           READ FUNCTION                               MLD
          RJM    FAN         FUNCTION CHANNEL                            MLD
          RJM    ACN         ACTIVATE CHANNEL                            MLD
          LDC    0           PICKUP WORD COUNT  *** PROGRAM MODIFIED *** MLD
 RDD1     EQU    *-1                                                     MLD
          RJM    IAM         INPUT DATA                                  MLD
          RJM    DCN         DEACTIVATE CHANNEL                          MLD
          UJN    RDDX        EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - STT                                                     MLD
*                                                                        MLD
*         DESCRIPTION - READS MUX STATUS.                                MLD
*                                                                        MLD
*         ENTRY - STATUS FUNCTION IN A REG.                              MLD
*                                                                        MLD
*         EXIT - STATUS IN A REG.                                        MLD
*                                                                        MLD
*         USES - NONE.                                                   MLD
*                                                                        MLD
*         CALLS - FAN,ACN,DCN.                                           MLD
*                                                                        MLD
 STTX     LJM    *                                                       MLD
 STT      EQU    *-1                                                     MLD
          RJM    FAN         FUNCTION CHANNEL                            MLD
          RJM    ACN         ACTIVE CHANNEL                              MLD
          LDN    77B                                                     MLD
 STT1     FJM    STT2,0      IF CHANNEL FULL                             MLD
          SBN    1                                                       MLD
          NJN    STT1        LOOP FOR 256/128 USEC                       MLD
                                                                         MLD
          LDC    ER.EBI      CHANNEL EMPTY ERROR                         MLD
          LJM    ERR                                                     MLD
                                                                         MLD
 STT2     IAN    0           INPUT STATUS                                MLD
          RJM    DCN         DEACTIVATE CHANNEL                          MLD
          UJN    STTX        EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - I/O ROUTINES.                                           MLD
*                                                                        MLD
*         DESCRIPTION - THESE ROUTINES DO ALL PHYSICAL I/O WTIH MUX.     MLD
*                                                                        MLD
*         ENTRY - FUNCTION OR WORD COUNT IN A REG.                       MLD
*                                                                        MLD
*         EXIT - OPERATION COMPLETE.                                     MLD
*                                                                        MLD
*         USES - BD.CHFG, LF(FCN).                                       MLD
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
 IAMX     LJM    *                                                       MLD
 IAM      EQU    *-1                                                     MLD
 IAM1     IAM    MUXIN,0     INPUT (A) WORDS                             MLD
          ZJN    IAMX        IF (A) NON-ZERO                             MLD
                                                                         MLD
          LDC    ER.IDI                                                  MLD
          LJM    ERR         INACTIVE DURING INPUT ERROR                 MLD
                                                                         MLD
 OAMX     LJM    *                                                       MLD
 OAM      EQU    *-1                                                     MLD
 OAM1     FJM    OAM4,0      FULL BEFORE OUTPUT                          MLD
 OAM2     OAM    MUXOUT,0    OUTPUT (A) WORDS                            MLD
          NJN    OAM5        IF (A) NON-ZERO                             MLD
 OAM3     EJM    OAMX,0      EXIT IF LAST WORD ACCEPTED                  MLD
          ADN    1           LOOP FOR 256/128 USEC                       MLD
          LPN    77B                                                     MLD
          NJN    OAM3                                                    MLD
                                                                         MLD
          LDC    ER.FAO                                                  MLD
          UJN    ACN5        FULL AFTER OUTPUT ERROR                     MLD
 OAM4     LDC    ER.FBO                                                  MLD
          UJN    ACN5        FULL BEFORE OUTPUT ERROR                    MLD
 OAM5     LDC    ER.IDO                                                  MLD
          UJN    ACN5        INACTIVE DURING OUTPUT ERROR                MLD
                                                                         MLD
 ACNX     LJM    *                                                       MLD
 ACN      EQU    *-1                                                     MLD
 ACN1     AJM    ACN4,0      ACTIVE BEFORE ACTIVATE ERROR                MLD
 ACN2     ACN    0           ACTIVATE CHANNEL                            MLD
 ACN3     AJM    ACNX,0      EXIT IF ACTIVE                              MLD
                                                                         MLD
          LDC    ER.IAA                                                  MLD
          UJN    ACN5        INACTIVE AFTER ACTIVATE ERROR               MLD
 ACN4     LDC    ER.ABA      ACTIVE BEFORE ACTIVATE ERROR                MLD
 ACN5     LJM    ERR                                                     MLD
                                                                         MLD
 DCNX     LJM    *                                                       MLD
 DCN      EQU    *-1                                                     MLD
 DCN1     IJM    DCN4,0      INACTIVE BEFORE DEACTIVATE ERROR            MLD
 DCN2     DCN    0           DEACTIVATE CHANNEL                          MLD
 DCN3     IJM    DCNX,0      EXIT IF INACTIVE                            MLD
                                                                         MLD
          LDC    ER.AAD                                                  MLD
          UJN    ACN5        ACTIVE AFTER DEACTIVATE ERROR               MLD
 DCN4     LDC    ER.IBD                                                  MLD
          UJN    ACN5        INACTIVE BEFORE DEACTIVATE ERROR            MLD
                                                                         MLD
 FANX     LJM    *                                                       MLD
 FAN      EQU    *-1                                                     MLD
          ADC    0           ADD EQUIPMENT NUMBER                        MLD
 EQUIP    EQU    *-1                                                     MLD
          STD    LF          SAVE FUNCTION CODE                          MLD
          LDM    BD.CHFG     TEST CHANNEL RESERVED                       MLD
          ZJN    FAN5        IF CHANNEL NOT RESERVED                     MLD
          LDD    LF          GET FUNCTION CODE                           MLD
 FAN1     AJM    FAN4,0      ACTIVE BEFORE FUNCTION ERROR                MLD
 FAN2     FAN    0           FUNCTION CHANNEL                            MLD
          LDN    77B                                                     MLD
 FAN3     IJM    FANX,0      EXIT IF CHANNEL INACTIVE                    MLD
          SBN    1                                                       MLD
          NJN    FAN3        LOOP FOR 256/128 USEC                       MLD
                                                                         MLD
          LDC    ER.AAF                                                  MLD
          UJN    FAN6        ACTIVE AFTER FUNCTION ERROR                 MLD
 FAN4     LDC    ER.ABF                                                  MLD
          UJN    FAN6        ACTIVE BEFORE FUNCTION ERROR                MLD
 FAN5     LDC    ER.CNR      CHANNEL NOT RESERVED ERROR                  MLD
 FAN6     LJM    ERR                                                     MLD
                                                                         MLD
 DCHX     LJM    *           DEACTIVATE CHANNEL (NO TESTING)             MLD
 DCH      EQU    *-1                                                     MLD
 DCH1     IJM    DCHX,0                                                  MLD
 DCH2     DCN    0                                                       MLD
          UJN    DCHX                                                    MLD
          SPACE  4,20                                                    MLD
**        NAME - STD AND DLP.                                            MLD
*                                                                        MLD
*         DESCRIPTION - RJM TO STD WITH 18 BIT DELAY CONSTANT IN         MLD
*                       THE A REG TO SET UP. THERE AFTER RJM TO DLP      MLD
*                       TESTING A NEG TO INDICATE END OF DELAY.          MLD
*                                                                        MLD
*         ENTRY - (A)= DELAY CONSTANT FOR STD.                           MLD
*                                                                        MLD
*         EXIT - (A)= NEG FOR DELAY EXHAUSTED FOR DLP.                   MLD
*                                                                        MLD
*         USES - DA,DB,TM,WF,D.Z1.                                       MLD
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
 RTC      EQU    14B         REAL TIME CLOCK CHANNEL                     MLD
                                                                         MLD
 STDX     LJM    *                                                       MLD
 STD      EQU    *-1                                                     MLD
          STD    DB          STORE DELAY TIME                            MLD
          SHN    -12D                                                    MLD
          STD    DA                                                      MLD
          IANN   RTC         GET RTC                                     MLD
          STD    TM          REAL CLOCK START TIME                       MLD
          LDN    0                                                       MLD
          STD    WF          CLEAR WAITIO FLAG                           MLD
          UJN    STDX        EXIT                                        MLD
                                                                         MLD
 DLPX     LJM    *                                                       MLD
 DLP      EQU    *-1                                                     MLD
          IANN   RTC         GET RTC                                     MLD
          SBD    TM          TIME DIFFERENCE                             MLD
          PJN    DLP1        IF NO OVERFLOW                              MLD
          ADC    4096D       ACCOUNT FOR OVERFLOW                        MLD
 DLP1     SHN    -5          MOD 32                                      MLD
          STD    D.Z1                                                    MLD
          SHN    5                                                       MLD
          RAD    TM          UPDATE RUNNING TIME                         MLD
          LDD    DB          GET REMAINING TIME LOWER                    MLD
          SBD    D.Z1        SUBTRACT TIME LAPSE                         MLD
          STD    DB          UPDATE TIME TO GO LOWER                     MLD
          PJN    DLPX        IF LOWER 12 BITS NOT EXHAUSTED              MLD
          AOD    DB          CORRECT FOR SKIPPED NEGATIVE ZERO           MLD
          SOD    DA          DECREMENT REMAINING TIME UPPER              MLD
          UJN    DLPX        EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        NAME - WTI.                                                    MLD
*                                                                        MLD
*         DESCRIPTION - USED TO SLOW DOWN I/O ON 6676 TO ONCE EACH       MLD
*                       1/4 CHARACTER TIME. RJM WAITIO FOR DELAY.        MLD
*                       RJM STARTDL TO SET UP CHARACTER TIME.            MLD
*                       FORCES ONE MORE PASS AT CHARACTER TIMEOUT.       MLD
*                                                                        MLD
*         ENTRY - NONE.                                                  MLD
*                                                                        MLD
*         EXIT - AFTER 1/4 CHARACTER TIME, (A) NEG IF CHARACTER TIME     MLD
*                IS UP.                                                  MLD
*                                                                        MLD
*         USES - D.Z2,D.Z1,WF.                                           MLD
*                                                                        MLD
*         CALLS - DLP.                                                   MLD
*                                                                        MLD
 WTIX     LDN    0           EXIT WITH (A) = POSITIVE                    MLD
                                                                         MLD
 WTIY     LJM    *                                                       MLD
 WTI      EQU    *-1                                                     MLD
          LDC    0           1/4 CHARACTER TIME *** PROGRAM MODIFIED *** MLD
 WTI1     EQU    *-1                                                     MLD
          STD    D.Z2        SAVE TIME                                   MLD
          LDD    WF          FLAG FOR TIME OUT (CLEARED BY *STARTDL*)    MLD
          ZJN    WTI2        IF FLAG NOT SET                             MLD
          LCN    0           SET A NEG FOR TIMEOUT                       MLD
          UJN    WTIY        TIME OUT EXIT                               MLD
 WTI2     RJM    DLP         CHECK TIME OUT                              MLD
          PJN    WTI3        IF NO TIME OUT                              MLD
          AOD    WF          SET FLAG FOR TIME OUT                       MLD
          UJN    WTIX        FORCE ONE MORE PASS                         MLD
 WTI3     LDD    D.Z2        GET REMAINING TIME                          MLD
          SBD    D.Z1        ELAPSE TIME FROM *DELOOP*                   MLD
          STD    D.Z2        UPDATE TIME TO GO                           MLD
          PJN    WTI2        IF TIME NOT UP LOOP TO WAIT SOME MORE       MLD
          UJN    WTIX        EXIT TO DO I/O                              MLD
          SPACE  4,20                                                    MLD
**        NAME - CLM.                                                    MLD
*                                                                        MLD
*         DESCRIPTION - CLEARS MUX OUTPUT BUFFER.                        MLD
*                                                                        MLD
*         ENTRY - NONE.                                                  MLD
*                                                                        MLD
*         EXIT - MUX OUTPUT BUFFER CLEARED.                              MLD
*                                                                        MLD
*         USES - D.Z1.                                                   MLD
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
 CLMX     LJM    *                                                       MLD
 CLM      EQU    *-1                                                     MLD
          LDC    MUXOUT      MUX OUTPUT BUFFER ADDRESS                   MLD
          STD    D.Z1                                                    MLD
 CLM1     LDN    0                                                       MLD
          STI    D.Z1        CLEAR WORD                                  MLD
          AOD    D.Z1                                                    MLD
          LMC    0           SET BY INITIALIZATION                       MLD
 CLM2     EQU    *-1                                                     MLD
          NJN    CLM1        IF NOT DONE LOOP                            MLD
          UJN    CLMX        EXIT                                        MLD
**        BUFFERS.                                                       MLD
*                                                                        MLD
                                                                         MLD
 MUXOUT   EQU    *           MUX OUTPUT BUFFER                           MLD
 MUXIN    EQU    MUXOUT+64D  MUX INPUT BUFFER                            MLD
 IBUF     EQU    6500B       INPUT BUFFER                                MLD
                                                                         MLD
          ERRPL  *-IBUF      ERROR IF PRODUCT OVERLAY OVERFLOW           MLD
                                                                         MLD
 OBUF     EQU    IBUF+IOBUFL OUTPUT BUFFER                               MLD
 SBUF     EQU    OBUF+IOBUFL STATUS BUFFER                               MLD
 LSB      EQU    60D                                                     MLD
                                                                         MLD
          ERRPL  MUXIN+64D-IBUF   TEST MUXIN OVERFLOW TO IBUF            MLD
          ERRNZ  OBUF-IBUF-IOBUFL TEST DECLARE LENGTH EQUAL ACTUAL       MLD
          ERRNZ  SBUF-OBUF-IOBUFL TEST OBUF OVERFLOWS SBUF               MLD
          EJECT                                                          MLD
**        INIT - GET EQUIPMENT AND PP MESSAGE ADDRESS FROM BASIC DRIVER. MLD
*                (OVERLAYED BY BUFFERS)                                  MLD
*                                                                        MLD
                                                                         MLD
 INIT     LDM    BD.EQ                                                   MLD
          LPC    7000B                                                   MLD
          STM    EQUIP       SAVE EQUIPMENT                              MLD
          LDM    BD.MSGA     MOVE PP MESSAGE ADDRESS                     MLD
          STD    DA                                                      MLD
          LDD    DC          GET DEVICE CODE                             MLD
          SBN    T551DC      IF 2550 TYPE,OVERRIDE PARAM BIT             MLD
          PJN    INIT1                                                   MLD
          LDM    P3          GET PARAM BIT
          SHN    -5          SHIFT                                       MLD
          LPN    2           MASK                                        MLD
          RAD    DC          MAKE DC = 2550 TYPE IF BIT SET              MLD
                                                                         MLD
**        SET UP CHANNEL INSTRUCTIONS.                                   MLD
                                                                         MLD
 INIT1    LDC    TCHN                                                    MLD
          STD    D.Z1        SET CHANNEL TABLE ADDRESS                   MLD
 INIT2    LDI    D.Z1        LOAD ADDRESS OF IO INSTRUCTION              MLD
          ZJN    INIT3       IF DONE,EXIT                                MLD
          STD    D.Z2        SAVE ADDRESS                                MLD
          LDI    D.Z2        LOAD IO INST                                MLD
          LPC    7740B       MASK OFF CHANNEL                            MLD
          ADM    BD.CHAN     SET CHANNEL                                 MLD
          STI    D.Z2        RESTORE MODIFIED I/O INSTRUCTION            MLD
          AOD    D.Z1        BUMP ADDRESS                                MLD
          UJN    INIT2       LOOP                                        MLD
                                                                         MLD
**        TEST DEVICE CODE AGAINST BAUD INDEX (P2) AND SHUT OFF          MLD
*         SOME COMMANDS DEPENDING ON EQUIPMENT TYPE. SET *WTI*           MLD
*         IF 6676.                                                       MLD
*                                                                        MLD
*         1. 6671= ALL COMMANDS LEGAL                                    MLD
*                                                                        MLD
*         2. 2550-100= MAINTENANCE READ AND WRITE, AND MASTER            MLD
*                      CLEAR ILLEGAL                                     MLD
*                                                                        MLD
*         3. 6676= MAINTENANCE READ AND WRITE, MEMORY READ AND           MLD
*                  WRITE, AND MASTER CLEAR ILLEGAL.                      MLD
*                                                                        MLD
 INIT3    STD    D.Z3        CLEAR POINTER                               MLD
          LDN    16D                                                     MLD
          STD    WT          SET UP MAINTRD/WR AND MEMRD/WR I/O COUNT    MLD
 INIT4    LDM    TBDP,D.Z3   GET TABLE ENTRY                             MLD
          NJN    *+3         IF MORE ENTRIES                             MLD
          LJM    INITER      END OF TABLE                                MLD
          LMM    P2          COMPARE
          ZJN    INIT5       IF HIT                                      MLD
          AOD    D.Z3                                                    MLD
          UJN    INIT4       LOOP FOR MORE                               MLD
 INIT5    LDD    DC                                                      MLD
          LMN    SVN1DC                                                  MLD
          NJN    INIT6       IF NOT 6671                                 MLD
          LDM    P2          SPEED PARAMETER
          LPN    2           CHECK FOR HIGH SPEED ASYNC 
          NJN    INIT6A      IF SPEED ILLEGAL FOR 6671
          LJM    INIT10      6671                                        MLD
 INIT6    LDC    MCLEAR      SHUT OFF COMANDS                            MLD
          RJM    ISO                                                     MLD
          LDC    MRD                                                     MLD
          RJM    ISO                                                     MLD
          LDC    MWR                                                     MLD
          RJM    ISO                                                     MLD
          LDD    DC                                                      MLD
          LMN    SVN6DC                                                  MLD
          NJN    INIT8       IF NOT 6676                                 MLD
          LDM    P2          SPEED PARAMETER
          LPN    2           CHECK FOR HIGH SPEED ASYNC 
 INIT6A   NJN    INITER      IF SPEED ILLEGAL FOR 6676
          LDC    MEMRD       SHUT OFF COMMANDS                           MLD
          RJM    ISO                                                     MLD
          LDC    MEMWR                                                   MLD
          RJM    ISO                                                     MLD
 INIT7    LDD    D.Z3                                                    MLD
          SBN    SYNC 
          PJN    INITER      IF SYNCRONOUS SPEED SELECTED 
          LDC    WTI         SET WAITIO TO SLOW I/O FPR 6676             MLD
          STM    OUTPUT4                                                 MLD
          STM    INPUT3                                                  MLD
          LDC    64D         CHANGE WORD COUNT TO 64                     MLD
          UJN    INIT12                                                  MLD
 INIT8    LMN    T556DC&SVN6DC                                           MLD
          ZJN    INIT7       IF 2550-100 6676 MODE                       MLD
          LMN    T551DC&T556DC                                           MLD
          NJN    INITER      IF NOT 2550-100 6671 MODE                   MLD
          LDD    D.Z3                                                    MLD
          SBN    SYNC 
          MJN    INIT10      IF ASYNCRONOUS SPEED SELECTED
          ZJN    INITER      IF ILLEGAL SPEED SELECTED - 2000 BAUD
          SBN    MODEM-SYNC 
          MJN    INIT9       IF SYNCRONOUS SIMULATOR LOOPBACK 
 INITER   LDC    INITBBD     ILLEGAL BAUD RATE FOR DEVICE                MLD
          LJM    START       FLAG PARAMETER ERROR                        MLD
 INIT9    LDC    TABC        CHANGE TABLE POINTER FOR CHARACTER TIME     MLD
          STM    INIT17                                                  MLD
          LDC    TACT        CHANGE TABLE POINTER FOR I/O COUNT          MLD
          STM    INIT11                                                  MLD
 INIT10   LDM    TCNT,D.Z3   PICKUP WORD COUNT                           MLD
 INIT11   EQU    *-1                                                     MLD
 INIT12   STD    D.Z1        STORE IN CELL                               MLD
          LDM    P3          TEST FORCE 8 PORT MUX
          SHN    10D                                                     MLD
          PJN    INIT12A     IF NOT SET USE TABLE COUNT                  MLD
          LDN    8D                                                      MLD
          STD    D.Z1                                                    MLD
 INIT12A  LDD    D.Z1                                                    MLD
          STM    RDD1        SET WORD COUNT IN READ                      MLD
          STM    WRT1        IN WRITE                                    MLD
          SBN    16D                                                     MLD
          PJN    INIT13      IF WC 16 OR GREATER, DONT CHANGE MAINT FUNC MLD
          ADN    16D                                                     MLD
          STD    WT          CHANGE I/O WORD COUNT                       MLD
                                                                         MLD
**        TEST INPUT AND OUTPUT PORT NOT ABOVE MAXIMUM                   MLD
*         FOR EQUIPMENT TYPE AND EXTRA BITS BELOW MAXIMUM.               MLD
                                                                         MLD
 INIT13   LDM    P0 
          SBD    D.Z1                                                    MLD
          PJN    INIT13A     IF OUTPUT PORT TOO LARGE                    MLD
          LDM    P1 
          SBD    D.Z1                                                    MLD
          MJN    INIT13B     IF INPUT PORT OK                            MLD
 INIT13A  LDC    INITIPN     ILLEGAL PORT NUMBER                         MLD
          LJM    START       EXIT                                        MLD
 INIT13B  LDC    MUXOUT                                                  MLD
          ADD    D.Z1                                                    MLD
          STM    CLM2        SET MUX OUTPUT BUFFER LWA IN CLRMO          MLD
                                                                         MLD
**        TEST FOR FULL I/O WANTED. IF SO GO WITH MAXIMUM , ELSE         MLD
*         FIND HIGHEST PORT NUMBER TO DETERMINE I/O WORD COUNT.          MLD
                                                                         MLD
          LDM    P3          GET I/O LENGTH FLAG
          SHN    9D                                                      MLD
          MJN    INIT16      IF SET USE MAXIUM I/O WORD COUNT            MLD
          LDM    P0 
          SBM    P1 
          PJN    INIT14      IF P0 IS GREATER                            MLD
          LDM    P1 
          UJN    INIT15                                                  MLD
 INIT14   LDM    P0 
 INIT15   ADN    1           SET I/O WORD COUNT                          MLD
          STM    RDD1        CHANGE I/O WORD COUNT IN READ               MLD
          STM    WRT1        IN WRITE                                    MLD
                                                                         MLD
**        CALCULATE CHARACTER AND HALF CHARACTER TIMES FROM              MLD
*         TABLE AND EXTRA BITS PARAMETER.                                MLD
                                                                         MLD
 INIT16   LDM    P3 
          SHN    -9D                                                     MLD
          ADN    1           ADD ONE BIT TIME                            MLD
          STD    D.Z4        SAVE EXTRA BIT TIMES                        MLD
          LDM    TBDB,D.Z3                                               MLD
          STM    INIT21+1    SAVE BIT TIME FOR EXTRA CALCULATION         MLD
          STM    WAITB+1     SAVE BIT TIME FOR WAIT BIT                  MLD
          LDM    TBDC,D.Z3                                               MLD
 INIT17   EQU    *-1                                                     MLD
          STM    INIT23+1    SAVE CHARACTER TIME FOR EXTRA CALCULATION   MLD
          STM    WAITC+1     SAVE CHARACTER TIME IN WAIT                 MLD
          SHN    -1                                                      MLD
          STM    WAITHC+1    STORE IN WAIT 1/2 CHARACTER TIME            MLD
          SHN    -1                                                      MLD
          STM    WTI1        STORE 1/4 CHARACTER TIME FOR WAITIO         MLD
          LDN    0           INITIALIZE CELLS                            MLD
 INIT20   STD    D.Z2        SET X2                                      MLD
          SHN    -12         POSITION X1                                 MLD
          STD    D.Z1        SET X1                                      MLD
          SOD    D.Z4        DECREMENT EXTRA BIT COUNT                   MLD
          MJN    INIT22      IF COMPLETE                                 MLD
          LDD    D.Z1        PICKUP ADDEND                               MLD
          SHN    12          POSITION                                    MLD
          ADD    D.Z2        FORM ADDEND                                 MLD
 INIT21   ADC    *           ADD BIT TIME TO RUNNING SUM                 MLD
          UJN    INIT20      CONTINUE                                    MLD
 INIT22   LDD    D.Z1        PICKUP EXTRA TIME                           MLD
          SHN    12          POSITION                                    MLD
          ADD    D.Z2        FORM EXTRA TIME                             MLD
 INIT23   ADC    *           ADD CHARACTER TIME TO EXTRA TIME            MLD
          STM    OUTPUT1+1   SET CHARACTER TIME IN OUTPUT                MLD
          STM    INPUT1+1    SET CHARACTER TIME IN INPUT                 MLD
          SHN    -12D                                                    MLD
          ADC    2000B                                                   MLD
          STM    OUTPUT1                                                 MLD
          STM    INPUT1                                                  MLD
                                                                         MLD
**        CHECK FOR DECLARED SYNC CODE - SET = 4026 IF NOT DECLARED      MLD
*         OTHERWISE USE LOWER 8 BITS AND ADD 4000B.                      MLD
                                                                         MLD
          LDM    P4 
          LPC    377B                                                    MLD
          NJN    INIT24      IF DECLARED                                 MLD
          LDN    26B         SET 026B                                    MLD
 INIT24   ADC    4000B       ADD OUTPUT CODE                             MLD
          STM    P4          STORE IT BACK
  
**        INITIALIZE INSTRUCTIONS FOR IN/OUTPUT PORTS 
  
          LDM    P1 
          ADC    MUXIN
          STM    MUXIN1 
          STM    MUXIN2 
          STM    MUXIN3 
          STM    MUXIN4 
          LDM    P1 
          ADC    MUXOUT 
          STM    MCPIN
          LDM    P0 
          ADC    MUXOUT 
          STM    MCPOUT 
                                                                         MLD
**        WRITE PP MESSAGES TO CM                                        MLD
                                                                         MLD
          LDD    DA          GET PP MESSAGE AREA ADDRESS                 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
 INIT30   LDM    PPMSGS,D.Z1 GET PP MESSAGE WORD                         MLD
          ZJN    INIT32      IF END OF MESSAGE                           MLD
 INIT31   STM    D.T0,D.Z2   STORE IN D.T0+                              MLD
          AOD    D.Z1        BUMP PP MESSAGE POINTER                     MLD
          UJN    INIT33                                                  MLD
 INIT32   LDC    2R          MESSAGE END, STORE BLANKS                   MLD
          STM    D.T0,D.Z2                                               MLD
 INIT33   AOD    D.Z2        BUMP D.T0+ POINTER                          MLD
          SBN    5                                                       MLD
          NJN    INIT30      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    DA          ADD MESSAGE ADDRESS                         MLD
          CWM    D.T0,D.PPONE WRITE ONE WORD FROM D.T0                   MLD
          AOD    DA          UPDATED ADDRESS                             MLD
          AOD    D.Z3        BUMP CM WORD COUNTER                        MLD
          SBN    BD.MSGML                                                MLD
          NJN    INIT30      IF NOT BD.MSGML CM WORDS                    MLD
          STD    D.Z3        CLEAR CM WORD COUNTER                       MLD
          LDM    PPMSGS,D.Z1                                             MLD
          ZJN    INIT34      IF MESSAGE ENDED IN ZERO BYTE               MLD
          AOD    D.Z1        SKIP ZERO BYTE TERMINATOR                   MLD
 INIT34   AOD    D.Z1        BUMP PP MESSAGE ADDRESS TO NEXT MESSAGE     MLD
          LDM    PPMSGS,D.Z1                                             MLD
          NJN    INIT31      IF NOT LAST MESSAGE                         MLD
          LJM    START       RETURN TO BASIC DRIVER AFTER INITIALIZING   MLD
                                                                         MLD
**        INITIALIZATION ERROR MESSAGES                                  MLD
                                                                         MLD
 INITBBD  DIS    ,*ILLEGAL BAUD RATE FOR DEVICE*                         MLD
 INITIPN  DIS    ,*ILLEGAL PORT NUMBER FOR DEVICE*                       MLD
 ISO      EJECT                                                          MLD
**        NAME - ISO                                                     MLD
*                                                                        MLD
*         DESCRIPTION - SHUT OFF COMMANDS BY OVERWRITING FIRST FOUR      MLD
*                       WORDS FROM A TABLE.                              MLD
*                                                                        MLD
*         ENTRY - (A)= COMMAND ADDRESS.                                  MLD
*                                                                        MLD
*         EXIT - COMMAND SHUT OFF.                                       MLD
*                                                                        MLD
*         USES - D.Z1,D.Z2.                                              MLD
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
 ISOX     LJM    *                                                       MLD
 ISO      EQU    *-1                                                     MLD
          STD    D.Z1        SAVE ADDRESS OFF COMMAND TO SHUT OFF        MLD
          LDN    0                                                       MLD
          STD    D.Z2                                                    MLD
 ISO1     LDM    ISOCMD,D.Z2 MOVE SHUT OFF CODE                          MLD
          STI    D.Z1                                                    MLD
          AOD    D.Z1                                                    MLD
          AOD    D.Z2                                                    MLD
          SBN    4                                                       MLD
          NJN    ISO1        IF MORE CODE                                MLD
          UJN    ISOX        EXIT                                        MLD
                                                                         MLD
 ISOCMD   LDC    ER.ILLCM                                                MLD
          LJM    ERR         ERROR EXIT                                  MLD
                                                                         MLD
**        PARAMETER BAUD RATE TABLE.                                     MLD
                                                                         MLD
 TBDP     BSS    0                                                       MLD
          LOC    0                                                       MLD
          DATA   110B          110 BAUD 71/76/2550                       MLD
          DATA   134B        134.5 BAUD                                  MLD
          DATA   150B          150 BAUD                                  MLD
          DATA   300B          300 BAUD                                  MLD
          DATA   600B          600 BAUD                                  MLD
          DATA   1200B        1200 BAUD                                  MLD
          DATA   2402B       2400 BAUD 2550 ASYNC 
          DATA   4002B       4800 BAUD 2550 ASYNC 
          DATA   6002B       9600 BAUD 2550 ASYNC 
 SYNC     BSS    0
          DATA   2000B        2000 BAUD 71 SIM/LOOP                      MLD
          DATA   2400B        2400 BAUD 71/2550 SIM                      MLD
          DATA   4000B        4800 BAUD                                  MLD
          DATA   6000B        9600 BAUD                                  MLD
 MODEM    BSS    0
          DATA   2401B        2400 BAUD 71 LOOP                          MLD
          DATA   4001B        4800 BAUD                                  MLD
          DATA   6001B        9600 BAUD                                  MLD
          DATA   0           END OF TABLE                                MLD
          LOC    *O                                                      MLD
**        BAUD RATE CONSTANTS.                                           MLD
*                                                                        MLD
*                           BIT TIMES.                                   MLD
*                           ---------                                    MLD
*                                                                        MLD
*            1/BAUD RATE (2000 FOR 6671 SYNCHRONOUS SIMULATOR).          MLD
*                                                                        MLD
*                   ASYNCHRONOUS CHARACTER TIMES.                        MLD
*                   ----------------------------                         MLD
*                                                                        MLD
*                 1/BAUD RATE * BITS + 7.5 PERCENT.                      MLD
*                                                                        MLD
*            6671 SIMULATOR SYNCHRONOUS CHARACTER TIMES.                 MLD
*            ------------------------------------------                  MLD
*                                                                        MLD
*      1/2000 * BITS + 1 1/2 BITS (2 1/2 FOR 4800-9600) + 5 PERCENT.     MLD
*                                                                        MLD
*                6671 MODEM SYNCHRONOUS CHARACTER TIMES.                 MLD
*                --------------------------------------                  MLD
*      1/BAUD RATE * 8 + 1 1/2 BITS (2 1/2 FOR 4800-9600) + 5 PERCENT.   MLD
*                                                                        MLD
*                                                                        MLD
*                  2550 SYNCHRONOUS CHARACTER TIMES.                     MLD
*                  ------------------------------                        MLD
*                                                                        MLD
*                   1/BAUD RATE * 8 + 5 PERCENT.                         MLD
*                                                                        MLD
*                                                                        MLD
*         *** NOTE - ALL TIMES ARE IN 32 USEC PERIODS ***.               MLD
*                                                                        MLD
                                                                         MLD
****                                                                     MLD
          BASE   D                                                       MLD
 TBDB     BSS    0                                                       MLD
          LOC    0                                                       MLD
          DATA   306         71/76/2550 - 110   BAUD BIT TIME            MLD
          DATA   250         71/76/2550 - 134.5 BAUD BIT TIME            MLD
          DATA   224         71/76/2550 - 150   BAUD BIT TIME            MLD
          DATA   112         71/76/2550 - 300   BAUD BIT TIME            MLD
          DATA   56          71/76/2550 - 600   BAUD BIT TIME            MLD
          DATA   28          71/76/2550 - 1200  BAUD BIT TIME            MLD
          DATA   14          2550-2400  BAUD BIT TIME 
          DATA   7           2550-4800  BAUD BIT TIME 
          DATA   4           2550-9600  BAUD BIT TIME 
          DATA   17          6671 - 2000  BAUD BIT TIME (SIMULATOR)      MLD
          DATA   17          6671 - 2400  BAUD BIT TIME (SIMULATOR)      MLD
          DATA   17          6671 - 4800  BAUD BIT TIME (SIMULATOR)      MLD
          DATA   17          6671 - 9600  BAUD BIT TIME (SIMULATOR)      MLD
          DATA   14          6671 - 2400  BAUD BIT TIME (MODEM)          MLD
          DATA   7           6671 - 4800  BAUD BIT TIME (MODEM)          MLD
          DATA   4           6671 - 9600  BAUD BIT TIME (MODEM)          MLD
          LOC    *O                                                      MLD
 TBDC     BSS    0                                                       MLD
          LOC    0                                                       MLD
          DATA   3360        71/76/2550 - 110   BAUD CHARACTER TIME      MLD
          DATA   2248        71/76/2550 - 134.5 BAUD CHARACTER TIME      MLD
          DATA   2240        71/76/2550 - 150   BAUD CHARACTER TIME      MLD
          DATA   1120        71/76/2550 - 300   BAUD CHARACTER TIME      MLD
          DATA   560         71/76/2550 - 600   BAUD CHARACTER TIME      MLD
          DATA   280         71/76/2550 - 1200  BAUD CHARACTER TIME      MLD
          DATA   140         2550 - 2400 BAUD CHARACTER TIME
          DATA   70          2550 - 4800 BAUD CHARACTER TIME
          DATA   35          2550 - 9600 BAUD CHARACTER TIME
          DATA   156         6671 - 2000  BAUD CHARACTER TIME (SIMULATOR MLD
          DATA   156         6671 - 2400  BAUD CHARACTER TIME (SIMULATOR MLD
          DATA   173         6671 - 4800  BAUD CHARACTER TIME (SIMULATOR MLD
          DATA   173         6671 - 9600  BAUD CHARACTER TIME (SIMULATOR MLD
          DATA   130         6671 - 2400  BAUD CHARACTER TIME (MODEM)    MLD
          DATA   72          6671 - 4800  BAUD CHARACTER TIME (MODEM)    MLD
          DATA   36          6671 - 9600  BAUD CHARACTER TIME (MODEM)    MLD
          LOC    *O                                                      MLD
 TABC     EQU    *-10 
          LOC    7                                                       MLD
          DATA   110         2550 - 2400  BAUD CHARACTER TIME            MLD
          DATA   55          2550 - 4800  BAUD CHARACTER TIME            MLD
          DATA   28          2550 - 9600  BAUD CHARACTER TIME            MLD
          LOC    *O                                                      MLD
 TCNT     BSS    0                                                       MLD
          LOC    0                                                       MLD
          DATA   16          WC - 11 BIT - 110   BAUD - 6671             MLD
          DATA   16          WC -  9 BIT - 134.5 BAUD - 6671             MLD
          DATA   16          WC - 10 BIT - 150   BAUD - 6671             MLD
          DATA   16          WC - 10 BIT - 300   BAUD - 6671             MLD
          DATA   16          WC - 10 BIT - 600   BAUD - 6671             MLD
          DATA   16          WC - 10 BIT - 1200  BAUD - 6671             MLD
          DATA   16          WC - 10 BIT - 2400  BAUD - 2550
          DATA   16          WC - 10 BIT - 4800  BAUD - 2550
          DATA   16          WC - 10 BIT - 9600  BAUD - 2550
          DATA   16          WC -  8 BIT - 2000  BAUD - 6671             MLD
          DATA   16          WC -  8 BIT - 2400  BAUD - 6671             MLD
          DATA   16          WC -  9 BIT - 4800  BAUD - 6671             MLD
          DATA   8           WC -  9 BIT - 9600  BAUD - 6671             MLD
          DATA   16          WC -  8 BIT - 2400  BAUD - 6671 (MODEM)     MLD
          DATA   16          WC -  8 BIT - 4800  BAUD - 6671 (MODEM)     MLD
          DATA   8           WC -  8 BIT - 9600  BAUD - 6671 (MODEM)     MLD
          LOC    *O                                                      MLD
 TACT     EQU    *-10 
          LOC    7                                                       MLD
          DATA   16          WC -  8 BIT - 2400  BAUD - 2550             MLD
          DATA   16          WC -  8 BIT - 4800  BAUD - 2550             MLD
          DATA   16          WC -  8 BIT - 9600  BAUD - 2550             MLD
          LOC    *O                                                      MLD
          BASE   *                                                       MLD
****                                                                     MLD
          EJECT                                                          MLD
          TITLE  ERROR MESSAGES FOR 667X.                                MLD
 PPMSGS   EQU    *           START OF PP MESSAGES                        MLD
                                                                         MLD
*         BASIC DRIVER ERROR MESSAGES.                                   MLD
****                                                                     MLD
          MMSG   ER.NR1,EC.FLE,(ADDR OUT OF FL),1 
          MMSG   ER.TL,EC.TL,(I/O TIME OUT ON CH RESERVE),1              MLD
          MMSG   ER.NR3,EC.SEE,(SUBR ENTRY/EXIT ERROR),1                 MLD
          MMSG   ER.NR4,EC.WC,(BUFFER INDEX OR WC ERROR),1
          MMSG   ER.NR5,EC.RES,(R)                                       MLD
          MMSG   ER.NR6,EC.RES1,(R)                                      MLD
          MMSG   ER.NR7,EC.RES2,(R)                                      MLD
                                                                         MLD
*         667X ERROR MESSAGES.                                           MLD
                                                                         MLD
          MMSG   ER.CNR,EC.CNR,(CH NOT RESERVED),1                       MLD
          MMSG   ER.WORDE,EC.WORDE,(MUX WORD NUMBER ERROR),1             MLD
          MMSG   ER.ILLCM,EC.ILLCM,(ILLEGAL COMMAND FOR EQUIP),1         MLD
          MMSG   ER.BUFE,EC.BUFE,(BUFFER REFERENCE ERROR),1              MLD
                                                                         MLD
          MMSG   ER.ABF,EC.ABF,(CH ACTIVE BEFORE FUNCTION)               MLD
          MMSG   ER.AAF,EC.AAF,(CH ACTIVE AFTER FUNCTION)                MLD
          MMSG   ER.ABA,EC.ABA,(CH ACTIVE BEFORE ACTIVATE)               MLD
          MMSG   ER.IAA,EC.IAA,(CH INACTIVE AFTER ACTIVATE)              MLD
          MMSG   ER.FBO,EC.FBO,(CH FULL BEFORE OUTPUT)                   MLD
          MMSG   ER.FAO,EC.FAO,(CH FULL AFTER OUTPUT)                    MLD
          MMSG   ER.IDO,EC.IDO,(CH INACTIVE DURING OUTPUT)               MLD
          MMSG   ER.EBI,EC.EBI,(CH EMPTY BEFORE STATUS INPUT)            MLD
          MMSG   ER.IDI,EC.IDI,(CH INACTIVE DURING INPUT)                MLD
          MMSG   ER.IBD,EC.IBD,(CH INACTIVE BEFORE DEACTIVATE)           MLD
          MMSG   ER.AAD,EC.AAD,(CH ACTIVE AFTER DEACTIVATE)              MLD
                                                                         MLD
          MMSG   ER.VCNS,EC.VCNS,(TIMEOUT-NO VALID CHAR STATUS)          MLD
          MMSG   ER.TNR,EC.TNR,(TERMINAL NOT RDY,NO DSR OR CO)           MLD
          MMSG   ER.LD,EC.LD,(LOST DATA)                                 MLD
          MMSG   ER.MPE,EC.MPE,(MEMORY PARITY ERROR)                     MLD
          MMSG   ER.CHRJ,EC.CHRJ,(TIMEOUT ON CHARACTER REJECT)           MLD
 MMSGL.   EQU    MMSGL
****                                                                     MLD
          DATA   0           SET END                                     MLD
                                                                         MLD
*         CHANNEL LINKAGE TABLE.                                         MLD
                                                                         MLD
 TCHN     EQU    *                                                       MLD
          LIST   D                                                       MLD
          HERE                                                           MLD
          LIST   *                                                       MLD
          DATA   0                                                       MLD
                                                                         MLD
          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
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          ERRPL  *-7773B     TEST FOR MUX OVERLAY OVERFLOW               MLD
          QUAL   *                                                       MLD
