*COMDECK,580                                                             MLD
          EJECT                                                          MLD
 58X      SEGMENT POVLA                                                  MLD
          ORG    POVLA                                                   MLD
          QUAL   58X                                                     MLD
*CALL,VERS
          COMMENT 580 PRODUCT OVERLAY FOR MALET "VERS"
          TITLE  HIGH LEVEL 580 PRINTER PRODUCT OVERLAY FOR MALET.       MLD
          EJECT                                                          MLD
**        THE FOLLOWING TABLE DEFINES THE ERROR CODES AND MESSAGES THAT  MLD
*         MAY BE GENERATED FOR EACH COMMAND FOR 580.                     MLD
*                                                                        MLD
*                                          READ------. .----SELECT       MLD
*                                         PRINT----. . . .---SHIFT       MLD
*                                        FILL----. . . . . .--SPACE      MLD
*                                       EJECT--. . . . . . . .-STATUS    MLD
*                                      COUNT-. . . . . . . . . -TIME     MLD
*                                     RES--. . . . . . . . . . . WNB     MLD
* CODE   MESSAGE                     REL-. . . . . . . . . . . . .       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 04 WC OR BUFFER INDEX ERROR            . . X . . X X . X . . X .       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 10 NO INACTIVE TO 668X FUNC            . X X X X X X X . X X X X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 11 NO INACTIVE TO EQUIP FUNC           . X X X X X X X . X X X X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 12 NO FULL FOR 668X STATUS             . X X X X X X X . X X X X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 13 NO FULL FOR EQUIP STATUS            . . X . X X X X . X X X X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 14 CH INACTIVE AFTER 668X STATUS       . X X X X X X X . X X X X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 15 668X XMSN PE                        . X X X X X X X . X X X X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 16 668X INT REJ                        . X X X X X X X . X X X X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 17 668X EXT REJ                        . X X X X X X X . X X X X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 20 CH ACTIVE ON ENTRY                  X X X X X X X X . X X X X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 23 CH NOT RESERVED                     . . X X X X X X . X X X X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 25 ILLEGAL COMMAND                     . . X . X . . X . . . X .       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 26 NO RESPONSE TO LAST OUTPUT          . X . . X X . . . . . . .       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 30 CH ACTIVE AND EMPTY ON INPUT        . . . . . . X . . . . . .       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 32 CH ACTIVE AND FULL ON OUTPUT        . . . . X X . . . . . . .       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 34 CH INACTIVE DURING OUTPUT           . X . . X X . . . . . . .       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 40 UNIT HUNG BUSY                      . . . X X X X X . X . . X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 41 UNIT NOT READY                      . . . X X X X X . X . . X       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 42 UNIT NOT BUSY                       . . . . . . . . . . . . .       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 43 COUNT OVERFLOW                      . X X . X . . . X X . . .       MLD
*    ----------------------------------- - - - - - - - - - - - - -       MLD
* 44 NO STATE CHANGE                     . . X . . . . . . . . X .       MLD
*    -------------------------------------------------------------       MLD
*                                                                        MLD
          EJECT                                                          MLD
*         EQUATES FOR ERROR CODES - FIRST 7 ARE FOR BASIC DRIVER.        MLD
                                                                         MLD
 EC.FLE   EQU    1           ADDRESS OUT OF FIELD LENGTH                 MLD
 EC.TL    EQU    2           TIME LIMIT ERROR FOR COMMUNICATIONS         MLD
 EC.SEE   EQU    3           SUBROUTINE ENTRY/EXIT ERROR                 MLD
 EC.WC    EQU    4           BUFFER REFERENCE OR WC ERROR                MLD
 EC.RES   EQU    5           RESERVED FOR BASIC DRIVER                   MLD
 EC.RES1  EQU    6           RESERVED FOR BASIC DRIVER                   MLD
 EC.RES2  EQU    7           RESERVED FOR BASIC DRIVER                   MLD
                                                                         MLD
 EC.NI8   EQU    10B         NO INACTIVE TO A 668X FUNCTION              MLD
 EC.N8R   EQU    11B         NO RESPONSE FROM 668X TO EQUIPMENT FUNCTION MLD
 EC.NF8S  EQU    12B         NO FULL AFTER REQUEST FOR 668X STATUS       MLD
 EC.NFES  EQU    13B         NO FULL TO REQUEST FOR EQUIPMENT STATUS     MLD
 EC.IAI8  EQU    14B         INACTIVE AFTER INPUT OF 668X STATUS         MLD
 EC.TPE   EQU    15B         668X TRANSMISSION PARITY ERROR              MLD
 EC.INT   EQU    16B         668X INTERNAL REJECT                        MLD
 EC.EXT   EQU    17B         668X EXTERNAL REJECT                        MLD
 EC.AAE   EQU    20B         CHANNEL ACTIVE AT COMMAND ENTRY             MLD
 EC.IAA   EQU    21B         CHANNEL INACTIVE AFTER ACTIVATE             MLD
 EC.CNR   EQU    23B         CHANNEL NOT RESERVED                        MLD
 EC.ILL   EQU    25B         ILLEGAL COMMAND FOR EQUIPMENT ASSIGNED      MLD
 EC.LOL   EQU    26B         NO RESPONSE TO LAST OUTPUT BYTE             MLD
 EC.AEI   EQU    30B         CHANNEL HUNG ACTIVE AND EMPTY ON INPUT      MLD
 EC.IBF   EQU    31B         CHANNEL INACTIVE BEFORE FULL ON STATUS INP. MLD
 EC.AFO   EQU    32B         CHANNEL HUNG ACTIVE AND FULL ON OUTPUT      MLD
 EC.IDO   EQU    34B         CHANNEL WENT INACTIVE DURING OUTPUT         MLD
                                                                         MLD
 EC.UHB   EQU    40B         UNIT HUNG BUSY                              MLD
 EC.UDR   EQU    41B         UNIT DROPPED READY                          MLD
 EC.NB    EQU    42B         UNIT NOT BUSY                               MLD
 EC.COF   EQU    43B         PULSE COUNT OVERFLOW                        MLD
 EC.NSC   EQU    44B         NO STATE CHANGE IN ALLOTTED TIME            MLD
                                                                         MLD
*         DIRECT CELL EQUATES.                                           MLD
                                                                         MLD
 S1       EQU    60B         LOWER 12 BITS OF ABT ADDRESS                MLD
 S2       EQU    61B         UPPER 6 BITS OF ABT ADDRESS                 MLD
 OBL      EQU    62B         LENGTH OF OUTPUT BUFFER                     MLD
 IBL      EQU    63B         LENGTH OF INPUT BUFFER                      MLD
 S4       EQU    64B         SCRATCH CELL FOR USE BY SUBROUTINES         MLD
 S5       EQU    65B         SCRATCH CELL FOR USE BY SUBROUTINES         MLD
 S6       EQU    66B         SCRATCH CELL FOR USE BY SUBROUTINES         MLD
 S7       EQU    67B         SCRATCH CELL FOR USE BY SUBROUTINES         MLD
                                                                         MLD
*         EQUATES FOR EQUIPMENT FUNCTIONS.                               MLD
                                                                         MLD
 RELEASE  EQU    0           RELEASE AND DISCONNECT                      MLD
 SSPACE   EQU    1           SINGLE SPACE                                MLD
 DSPACE   EQU    2           DOUBLE SPACE                                MLD
 LASTL    EQU    3           ADVANCE TO LAST LINE                        MLD
 PAGE     EQU    4           PAGE EJECT                                  MLD
 AUTO     EQU    5           SELECT AUTO PAGE EJECT                      MLD
 SUP      EQU    6           SUPPRESS SPACE ON NEXT LINE                 MLD
 CLEAR    EQU    30B         CLEAR FORMAT SELECTIONS
 EIGHT    EQU    10B         SELECT 8 LPI SPACING                        MLD
 SIX      EQU    11B         SELECT 6 LPI SPACING                        MLD
 IMAGE    EQU    12B         FILL IMAGE                                  MLD
 EXTEND   EQU    13B         SELECT EXTENDED ARRAY                       MLD
 CLREXT   EQU    14B         CLEAR EXTENDED ARRAY                        MLD
 PFC6     EQU    16B         FILL 6LPI PFC ( 580 ONLY )                  MLD
 PFC8     EQU    17B         FILL 8LPI PFC ( 580 ONLY )                  MLD
 SELRNB   EQU    20B         SELECT READY NOT BUSY INTERRUPT             MLD
 CLRRNB   EQU    21B         CLEAR  READY NOT BUSY INTERRUPT             MLD
 SELEOP   EQU    22B         SELECT END OF OPERATION INTERRUPT           MLD
 CLREOP   EQU    23B         CLEAR  END OF OPERATION INTERRUPT           MLD
 SELAEOP  EQU    24B         SELECT ABNORMAL END OF OPERATION INTERRUPT  MLD
 CLRAEOP  EQU    25B         CLEAR  ABNORMAL END OF OPERATION INTERRUPT  MLD
 POST     EQU    30B         FIRST POST PRINT SPACING CODE               MLD
 PRE      EQU    50B         FIRST PREPRINT SPACING CODE                 MLD
 MSTATUS  EQU    65B         SELECT MAINTENANCE STATUS (580 ONLY)        MLD
 CMSTAT   EQU    66B         CLEAR MAINTENANCE STATUS  (580 ONLY)        MLD
                                                                         MLD
*         EQUATES FOR 668X FUNCTIONS.                                    MLD
                                                                         MLD
 SEL81    EQU    2000B       SELECT 668X                                 MLD
 SELCON   EQU    1000B       SELECT MODE 1 CONNECT                       MLD
 SELOUT   EQU    1640B       SELECT OUTPUT                               MLD
 SELIN    EQU    1440B       SELECT INPUT                                MLD
 SEL81S   EQU    1200B       SELECT 668X STATUS                          MLD
 SELEQS   EQU    1300B       SELECT EQUIPMENT STATUS                     MLD
 DSEL81   EQU    2100B       DESELECT 668X                               MLD
                                                                         MLD
*         GENERAL STATUS BIT EQUATES.                                    MLD
                                                                         MLD
 RDY      EQU    1           UNIT READY                                  MLD
 BUSY     EQU    2           UNIT BUSY                                   MLD
 MBUSY    EQU    100B        MEMORY BUSY                                 MLD
                                                                         MLD
*         MAINTENANCE STATUS BIT EQUATES.                                MLD
                                                                         MLD
 THP      EQU    1           TRAIN HOME PULSE                            MLD
 TSS      EQU    2           TRAIN SUBSCAN PULSE                         MLD
 E6       EQU    4           6 LPI SPACING SIGNAL                        MLD
 E8       EQU    10B         8 LPI SPACING SIGNAL                        MLD
 E1       EQU    20B         6 AND 8 LPI SPACING SIGNAL                  MLD
 MSBUSY   EQU    400B        BUSY                                        MLD
 PFC1     EQU   1000B        PFC 1 ERROR                                 MLD
 PFC2     EQU   2000B        PFC 2 ERROR                                 MLD
                                                                         MLD
*         DEVICE CODES SUPPORTED.                                        MLD
                                                                         MLD
 T512     EQU    22B         512                                         MLD
 T12      EQU    23B         580-12 WITHOUT PROGRAMMABLE FORMAT CONTROL  MLD
 T16      EQU    24B         580-16 WITHOUT PROGRAMMABLE FORMAT CONTROL  MLD
 T20      EQU    25B         580-20 WITHOUT PROGRAMMABLE FORMAT CONTROL  MLD
 T12PFC   EQU    26B         580-12 WITH PROGRAMMABLE FORMAT CONTROL     MLD
 T16PFC   EQU    27B         580-16 WITH PROGRAMMABLE FORMAT CONTROL     MLD
 T20PFC   EQU    30B         580-20 WITH PROGRAMMABLE FORMAT CONTROL     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
 START    LJM    **          ENTRY POINT FOR OVERLAY INITIALIZATION      MLD
          LJM    INIT                                                    MLD
                                                                         MLD
          VFD    12/IB       FWA OF INPUT BUFFER                         MLD
          VFD    12/OB       FWA OF OUTPUT BUFFER                        MLD
          VFD    12/SB       FWA OF STATUS BUFFER                        MLD
          VFD    12/LIB      LENGTH OF INPUT BUFFER                      MLD
          VFD    12/LOB      LENGTH OF OUTPUT BUFFER                     MLD
          VFD    12/LSB      LENGTH OF STATUS BUFFER                     MLD
          VFD    12/BD.VERS  VERSION NUMBER 
                                                                         MLD
*         FIXED ADDRESS TABLE OF SUBROUTINE ENTRY POINTS.                MLD
                                                                         MLD
 XREL     LJM    **                                                      MLD
          LJM    REL         RELEASE SUBROUTINE                          MLD
 XRES     LJM    **                                                      MLD
          LJM    RES         RESERVE SUBROUTINE                          MLD
 XCOUNT   LJM    **                                                      MLD
          LJM    COUNT       COUNT TSS/E1 SUBROUTINE                     MLD
 XEJECT   LJM    **                                                      MLD
          LJM    EJECT       EJECT SUBROUTINE                            MLD
 XFILL    LJM    **                                                      MLD
          LJM    FILL        FILL IMAGE/PFC SUBROUTINE                   MLD
 XPRINT   LJM    **                                                      MLD
          LJM    PRINT       PRINT SUBROUTINE                            MLD
 XREAD    LJM    **                                                      MLD
          LJM    READ        READ SUBROUTINE                             MLD
 XSELECT  LJM    **                                                      MLD
          LJM    SELECT      SELECT SUBROUTINE                           MLD
 XSHIFT   LJM    **                                                      MLD
          LJM    SHIFT       SHIFT SUBROUTINE                            MLD
 XSPACE   LJM    **                                                      MLD
          LJM    SPACE       SPACE SUBROUTINE                            MLD
 XSTATUS  LJM    **                                                      MLD
          LJM    STATUS      STATUS SUBROUTINE                           MLD
 XTIME    LJM    **                                                      MLD
          LJM    TIME        TIME SUBROUTINE                             MLD
 XWAITNB  LJM    **                                                      MLD
          LJM    WAITNB      WAIT NOT BUSY SUBROUTINE                    MLD
          EJECT                                                          MLD
**        REL - RELEASE DEVICE.                                          MLD
*                                                                        MLD
*         RELEASE DEVICE AND I/O CHANNEL TO  THE  SYSTEM  IF  ASSIGNED.  MLD
*         CALL  BD.DCH  TO FORCE COMMUNICATIONS WITH THE CPU EXECUTIVE.  MLD
*         THIS COULD CAUSE THE PPU DRIVER TO CHECKPOINT AND DROP IF THE  MLD
*         DROP  OR  CHECKPOINT  FLAGS  ARE  ON FROM THE EXEC.  IF ERROR  MLD
*         FLAGS ARE SET AT OUR CONTROL POINT, THE PPU DRIVER IS DROPPED  MLD
*         ALSO.                                                          MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - DEVICE CONNECT HAS BEEN RELEASED IF A 3000 DEVICE       MLD
*                IS ASSIGNED, AND THE CHANNEL IS RELEASED TO THE SYSTEM. MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- DEQP, BD.DCH.                                           MLD
*                                                                        MLD
 REL      RJM    DEQP        DISCONNECT EQUIPMENT IF CONNECTED           MLD
          RJM    BD.DCH      DROP CHANNEL/TALK TO SYSTEM AND EXEC        MLD
          LJM    XREL        EXIT TO CALLER                              MLD
          SPACE  4,20                                                    MLD
**        RES - RESERVE DEVICE AND I/O CHANNEL.                          MLD
*                                                                        MLD
*         RELEASE DEVICE VIA DEQP.   DROP  THE  I/O  CHANNEL  IF  BEING  MLD
*         REQUESTED  BY  SYSTEM.  COMMUNICATE  WITH  SYSTEM,  AND  TEST  MLD
*         DROP/CHECKPOINT/ERROR FLAGS. THE I/O CHANNEL IS REQUESTED AND  MLD
*         UNIT CONNECTED IF OPTIONS ARE LEGAL.                           MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - I/O CHANNEL ASSIGNED AND CHANNEL ASSIGNED FLAGS ARE SET MLD
*                IN ALL THE OTHER SUBROUTINES.                           MLD
*                                                                        MLD
*                ERRAAE - IF CHANNEL ACTIVE ON ENTRY.                    MLD
*                ERRNI8 - IF NO INACTIVE TO 668X FUNCTION.               MLD
*                ERRLOL - IF NO EMPTY TO OUTPUT OF CONNECT CODE.         MLD
*                ERRIDO - IF CH INACTIVE DURING OUTPUT.                  MLD
*                                                                        MLD
*         USES - LF, P.                                                  MLD
*                                                                        MLD
*         CALLS- DEQP, BD.RCH, FAN, T6S                                  MLD
*                                                                        MLD
 RES      RJM    DEQP        DISCONNECT EQUIPMENT IF CONNECTED           MLD
          RJM    BD.RCH      DROP/REQUEST CHANNEL AS REQUESTED           MLD
          AJM    ERRAAE      ERROR IF CHANNEL ACTIVE ON ENTRY            MLD
          LDC    SEL81                                                   MLD
          FAN    40B         SELECT 668X                                 MLD
          RJM    DEL         GO TO DELAY FOR CHANNEL FUNCTIONS
          AJM    ERRNI8,0    ERROR IF NO INACTIVE                        MLD
 RES1     UJN    RES3        *** JUMP INSTRUCTION IF EQUIPMENT 0-3       MLD
*         DATA   0           *** DATA 0 INSTRUCTION IF EQUIPMENT 4-7     MLD
                                                                         MLD
          LDC    **                                                      MLD
 RES2     EQU    *-1         *** CONNECT CODE STORED HERE                MLD
          RJM    FAN         ISSUE CONNECT                               MLD
          UJN    RES9        BUMP P AND EXIT
                                                                         MLD
 RES3     LDC    SELCON                                                  MLD
          FAN    40B         SELECT 668X FOR MODE 2 CONNECT              MLD
          RJM    DEL         GO TO DELAY FOR CHANNEL FUNCTIONS
          AJM    ERRNI8,0    ERROR IF NO INACTIVE FROM 668X              MLD
          ACN    40B                                                     MLD
          LDC    **                                                      MLD
 RES4     EQU    *-1         *** CONNECT CODE STORED HERE                MLD
          STD    LF                                                      MLD
          OAN    40B         OUTPUT CONNECT CODE                         MLD
 RES5     LDC    128
 RES6     EJM    RES8,0      IF CODE IS TAKEN                            MLD
 RES7     SBN    4           *** SBN 4 IF 1X SPEED PPU ***
*         SBN    2           *** SBN 2 IF 2X SPEED PPU ***
*         SBN    1           *** SBN 1 IF 4X SPEED PPU ***
          PJN    RES6        IF TIME IS NOT UP                           MLD
          LJM    ERRLOL      ERROR IF NOT TAKEN                          MLD
                                                                         MLD
*         TEST 668X STATUS TO INSURE NO PROBLEMS                         MLD
*                                                                        MLD
 RES8     IJM    ERRIDO,0    ERROR IF INACTIVE DURING OUTPUT             MLD
          DCN    40B                                                     MLD
          RJM    T6S         TEST 668X STATUS                            MLD
 RES9     RJM    GETS        GET EQUIPMENT STATUS                        MLD
          LJM    XRES        EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        COUNT- COUNT NUMBER OF PULSES.                                 MLD
*                                                                        MLD
*         COUNT TSS OR E1 PULSES AND STORE RESULT IN SPECIFID AREA.      MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (D.T0) = FLAG FOR ITEM TO COUNT (TSS OR E1).            MLD
*                (D.T1) = BUFFER ADDRESS TO STORE RESULT.                MLD
*                                                                        MLD
*         EXIT - COUNT IS STORED INTO ((D.T1)).                          MLD
*                                                                        MLD
*                ERRILL - IF ILLEGAL COMMAND (512 OR 580 NON-PFC).       MLD
*                ERRWC  - IF ADDRESS TO STORE RESULT OUT OF RANGE.       MLD
*                ERRCOF - IF TSS COUNT EXCEEDS 4000D.                    MLD
*                ERRCOF - IF E1 COUNT EXCEEDS 2048D.                     MLD
*                                                                        MLD
*         USES - WID4, WID10, WID11, WSC3, WSC4, P.                      MLD
*                                                                        MLD
*         CALLS- TCA, GETS, WIDTH, WSC.                                  MLD
*                                                                        MLD
 COUNT    RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
 CNT1     UJN    CNT2        *** JUMP INSTRUCTION IF 580 PFC PRINTER     MLD
*         DATA   0           *** DATA 0 IF 512 OR 580 NO PFC ASSIGNED    MLD
          LJM    ERRILL      ILLEGAL COMMAND FOR 512/580 NO PFC PRINTER  MLD
                                                                         MLD
 CNT2     LDD    D.T1                                                    MLD
          ADC    -IB                                                     MLD
          MJN    CNT3        IF ADDRESS TO STORE COUNT IS .LT. IB        MLD
          SBD    IBL                                                     MLD
          MJN    CNT4        IF WITHIN IB                                MLD
 CNT3     LJM    ERRWC       ERROR IF ADDRESS OUTSIDE IB                 MLD
                                                                         MLD
 CNT4     LDN    0                                                       MLD
          STI    D.T1        CLEAR COUNT                                 MLD
          LDD    D.T0                                                    MLD
          ZJN    CNT10       COUNT TSS PULSES 
                                                                         MLD
*         COUNT E1 PULSES                                                MLD
                                                                         MLD
 CNT5     LDN    1                                                       MLD
          RJM    GETS        GET MAINTENANCE STATUS                      MLD
 CNT6     LDC    1200B+E1                                                MLD
          STM    WID4        SET UP MASKS AND EXPECTED STATUS WORDS      MLD
          STM    WID10                                                   MLD
 CNT7     RJM    WIDTH       WAIT 0-1-0 STATE CHANGES                    MLD
          PJN    CNT9        IF STATE CHANGE IN ALLOTTED TIME            MLD
 CNT8     LJM    XCOUNT 
                                                                         MLD
 CNT9     AOI    D.T1        BUMP NUMBER OF E1 PULSES SEEN               MLD
          SHN    -11                                                     MLD
          ZJN    CNT7        IF 2048 HAVE NOT BEEN COUNTED               MLD
          LJM    ERRCOF      ERROR IF COUNT OVERFLOW                     MLD
                                                                         MLD
*         COUNT TSS PULSES                                               MLD
                                                                         MLD
 CNT10    LDN    1                                                       MLD
          RJM    GETS        GET MAINTENANCE STATUS                      MLD
          LDC    1200B+THP                                               MLD
          STM    WSC3        SET MASK INSTRUCTION                        MLD
          FNC    SELEQS      GET STATUS AGAIN TO SAVE TIME               MLD
          PSN                                                            MLD
          ACN    40B                                                     MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          LPN    THP                                                     MLD
          LMC    1100B+THP                                               MLD
          STM    WSC4        STORE CHANGE OF STATE INSTRUCTIONS          MLD
          LMN    THP                                                     MLD
          STM    CNT12                                                   MLD
          LDC    4000        NUMBER OF 125 USEC SLICES TO WAIT (500 MS)  MLD
          RJM    WSC         WAIT STATE CHANGE ON THP                    MLD
          LDC    1200B+TSS                                               MLD
          STM    WSC3        SET UP MASK AND TEST FOR TSS                MLD
          LDD    D.Z6        GET LAST STATUS                             MLD
          LPN    TSS         CURRENT STATE OF TSS                        MLD
          LMC    1100B+TSS   COMPLEMENT STATE OF TSS                     MLD
          STM    WSC4                                                    MLD
 CNT11    LDN    10          NUMBER OF 125 USEC SLICES TO WAIT           MLD
          RJM    WSC         WAIT STATE CHANGE ON TSS                    MLD
          LDM    WSC4                                                    MLD
          LMN    TSS                                                     MLD
          STM    WSC4        COMPLEMENT EXPECTED STATE OF TSS            MLD
          LDD    D.Z6        GET LAST STATUS FROM WSC                    MLD
          LPN    THP         CHECK CHANGE OF STATE ON THP                MLD
 CNT12    LMN    **          *** MASK INSTRUCTION STORED HERE            MLD
          ZJN    CNT13       IF STATE CHANGE ON THP                      MLD
          AOI    D.T1        BUMP NUMBER OF TSS PULSES SEEN              MLD
          SHN    -12                                                     MLD
          ZJN    CNT11       IF NOT TOO MANY TSS PULSES (4096D)          MLD
          LJM    ERRCOF      ERROR IF COUNT OVERFLOW                     MLD
                                                                         MLD
 CNT13    LJM    CNT8        EXIT WHEN THP CHANGES STATE                 MLD
          SPACE  4,20                                                    MLD
**        DELAY LOOP FOR VARIOUS CHANNEL FUNCTIONS
* 
 DELX     LJM    ** 
 DEL      EQU    *-1
          LDN    5           DELAY COUNT
 DEL1     SBN    1
          NJN    DEL1 
          UJN    DELX        EXIT 
  
  
**        EJECT - PAGE EJECT.                                            MLD
*                                                                        MLD
*         WAIT READY NOT BUSY AND MOVE PAPER TO TOP OF FORM.             MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - PAGE EJECT INITIATED (NOT COMPLETED).                   MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, WNB, FAN.                                          MLD
*                                                                        MLD
 EJECT    RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    BUSY                                                    MLD
          RJM    WNB         WAIT READY, NOT BUSY AND MEMORY NOT BUSY    MLD
          LDN    PAGE                                                    MLD
          RJM    FAN         ISSUE PAGE EJECT FUNCTION                   MLD
          LJM    XEJECT      EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        FILL - FILL IMAGE OR PFC MEMORY.                               MLD
*                                                                        MLD
*         FILL IMAGE OR PFC MEMORY FROM OUTPUT BUFFER(0).                MLD
*                                                                        MLD
*         ENTRY- (D.T0) = MEMORY TO FILL       0 = IMAGE                 MLD
*                                              1 = 6LPI PFC              MLD
*                                              2 = 8LPI PFC              MLD
*                                                                        MLD
*                (D.T1) = SPEED OF I/O TO USE  0 = SINGLE WORD           MLD
*                                              1 = BLOCK OUTPUT          MLD
*                                                                        MLD
*         EXIT - IMAGE OR PFC MEMORY FILLED.                             MLD
*                ERRILL  - IF FILL PFC ON 512 OR 580 WITHOUT PFC.        MLD
*                                                                        MLD
*         USES - WT, D.Z1, D.T0, D.T1, D.T3, P.                          MLD
*                                                                        MLD
*         CALLS- TCA, WNB, FAN, OUT.                                     MLD
*                                                                        MLD
 FILL     RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
 FILL1    UJN    FILL1A      *** JUMP INSTRUCTION IF 580 PFC ASSIGNED 
*         DATA   0           *** DATA 0 IF 512 OR 580 NO PFC ASSIGNED    MLD
          LDD    D.T0                                                    MLD
          ZJN    FILL2       IF FILL IMAGE REQUEST                       MLD
          LJM    ERRILL      ILLEGAL TO FILL PFC ON 512 OR 580 NO PFC    MLD
                                                                         MLD
 FILL1A   LDM    P3 
          ZJN    FILL2       IF 11 INCH PAPER 
          SBN    8
          NJN    FILL1B      IF NOT 8.5 PAPER 
          LDN    52 
          STM    FILLA1      SET WORD COUNT FOR 6LPI 8.5 INCH 
          ADN    17          SET WORD COUNT FOR 8LPI 8.5 INCH 
          UJN    FILL1C      CONTINUE 
  
 FILL1B   SBN    2
          NJN    FILL2       NOT 8.5 OR 12 LEAVE SET TO 11
          LDN    37 
          STM    FILLA1      SET WORD COUNT FOR 6LPI 12 INCH
          ADN    12          SET WORD COUNT FOR 8LPI 12 INCH
 FILL1C   STM    FILLA2      SAVE WORD COUNT
 FILL2    LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          LDM    FILLB,D.T0                                              MLD
          STM    FILL4       SET FUNCTION TO ISSUE                       MLD
          LDD    D.T0                                                    MLD
          STD    D.T3        SAVE MEMORY TO FILL                         MLD
          ZJN    FILL3       IF FILL IMAGE                               MLD
          LDM    FILLA,D.T0                                              MLD
          ADC    OB-1                                                    MLD
          STD    D.Z1                                                    MLD
          LDC    1700B                                                   MLD
          STI    D.Z1        SET LAST WORD OF OUTPUT FOR PFC = 1700B     MLD
 FILL3    LDD    D.T1                                                    MLD
          STD    D.T0        SET SPEED OF I/O                            MLD
          LDM    FILLA,D.T3                                              MLD
          STD    D.T1        SET WORDS TO TRANSMIT                       MLD
          LDN    BUSY                                                    MLD
          RJM    WNB         WAIT NOT BUSY AND MEMORY NOT BUSY           MLD
          LDC    **                                                      MLD
 FILL4    EQU    *-1         *** FUNCTION CODE STORED HERE               MLD
          RJM    FAN         SELECT FILL IMAGE OR FILL PFC               MLD
          LDN    0           INDEX INTO OUTPUT BUFFER FOR FWA            MLD
          RJM    OUT         PERFORM SINGLE WORD OR BLOCK OUTPUT         MLD
          LJM    XFILL       EXIT TO STACK                               MLD
                                                                         MLD
 FILLA    DATA   384         ***  WC FOR FILL IMAGE ON 580               MLD
*         DATA   288         ***  WC FOR FILL IMAGE ON 512               MLD
 FILLA1   DATA   67          WC FOR FILL 6LPI PFC ON 580
 FILLA2   DATA   89          WC FOR FILL 8LPI PFC ON 580
 FILLB    VFD    12/IMAGE    FILL IMAGE FUNCTION CODE                    MLD
          VFD    12/PFC6     FILL 6LPI PFC FUNCTION CODE                 MLD
          VFD    12/PFC8     FILL 8LPI PFC FUNCTION CODE                 MLD
          SPACE  4,20                                                    MLD
**        PRINT- PRINT ONE OR MORE LINES.                                MLD
*                                                                        MLD
*         WAIT READY NOT BUSY AND WRITE DATA FROM THE OUTPUT BUFFER TO   MLD
*         PRINTER.                                                       MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (WC)   = NUMBER OF BYTES TO OUTPUT.                     MLD
*                (BA)   = FWA OF DATA.                                   MLD
*                (D.T0) = FAST/SLOW FLAG.                                MLD
*                                                                        MLD
*         EXIT - LINE(S) PRINTED.                                        MLD
*                ERRWC  - IF WC ERROR.                                   MLD
*                                                                        MLD
*         USES - WT, D.T1, P.                                            MLD
*                                                                        MLD
*         CALLS- TCA, WNB, OUT.                                          MLD
*                                                                        MLD
 PRINT    RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          LDD    D.T1                                                    MLD
          ZJN    PRT0        IF NOT WORD COUNT                           MLD
          LDD    D.T2                                                    MLD
          ADC    -OB         FORM BA                                     MLD
          STD    D.T2                                                    MLD
          UJN    PRT1                                                    MLD
 PRT0     LDD    BA 
          STD    D.T2        SAVE BEGINING ADDRESS
          LDD    WC 
          STD    D.T1        SAVE WORD COUNT
          ZJN    RD1         ERROR IF BUFFER REFERENCE ERROR
                                                                         MLD
 PRT1     LDN    0                                                       MLD
          RJM    WNB         WAIT READY AND MEMORY NOT BUSY              MLD
          LDD    D.T2                                                    MLD
          RJM    OUT         PERFORM SINGLE WORD OR BLOCK OUTPUT         MLD
          LJM    XPRINT      EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        READ - READ ERROR MEMORY.                                      MLD
*                                                                        MLD
*         WAIT READY NOT BUSY AND READ ERROR MEMORY.                     MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (WC)   = NUMBER OF BYTES TO OUTPUT.                     MLD
*                (BA)   = FWA OF DATA.                                   MLD
*                                                                        MLD
*         EXIT - ERROR MEMORY READ TO INPUT BUFFER.                      MLD
*                (WT) = NUMBER OF WORDS INPUT.                           MLD
*                (SB) = 668X STATUS.                                     MLD
*                                                                        MLD
*                ERRWC  - IF BUFFER REFERENCE OR WC ERROR.               MLD
*                ERRNI8 - IF NO INACTIVE TO 668X FUNCTION.               MLD
*                ERRAEI - IF CH HUNG ACTIVE AND EMPTY ON INPUT.          MLD
*                                                                        MLD
*         USES - WT, P.                                                  MLD
*                                                                        MLD
*         CALLS- TCA, WNB, T6S.                                          MLD
*                                                                        MLD
 READ     RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          LDD    WC                                                      MLD
          STD    D.T0        SET WORDS TO READ                           MLD
          ZJN    RD1         ERROR IF NO WORDS TO TRANSMIT               MLD
          ADD    BA                                                      MLD
          SBD    IBL                                                     MLD
          MJN    RD2         IF ADDRESS IS INPUT BUFFER OR ABOVE
 RD1      LJM    ERRWC       ERROR IF OUTSIDE INPUT BUFFER               MLD
                                                                         MLD
 RD2      LDD    BA                                                      MLD
          ADC    IB                                                      MLD
          STM    RD8         STORE FWA FOR INPUT                         MLD
          LDN    BUSY                                                    MLD
          RJM    WNB         WAIT READY NOT BUSY AND MEMORY NOT BUSY     MLD
          LDC    SELIN                                                   MLD
          FAN    40B                                                     MLD
          RJM    DEL         GO TO DELAY FOR CHANNEL FUNCTIONS
          AJM    ERRNI8,0    ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ACN    40B                                                     MLD
 RD3      LDC    1000 
 RD4      FJM    RD7,0       IF DATA IS AVAILABLE                        MLD
 RD5      SBN    4           *** SBN 4 IF 1X SPEED PPU ***
*         SBN    2           *** SBN 2 IF 2X SPEED PPU ***
*         SBN    1           *** SBN 1 IF 4X SPEED PPU ***
          IJM    RD9,0                                                   MLD
          PJN    RD4         IF TIME IS NOT UP                           MLD
          LJM    ERRAEI      ERROR IF NO FULL IN ALLOTTED TIME           MLD
                                                                         MLD
 RD7      IAN    40B         GET WORD                                    MLD
          STM    **,WT       STORE IT INTO INPUT BUFFER                  MLD
 RD8      EQU    *-1         ADDRESS OF INPUT BUFFER STORED HERE         MLD
          AOD    WT          BUMP WORDS TRANSMITTED                      MLD
          SBD    D.T0                                                    MLD
          NJN    RD3         IF REQUESTED WORD COUNT NOT SATISFIED       MLD
          IJM    RD7,0       INSURE CHANNEL INACTIVE                     MLD
          DCN    40B                                                     MLD
 RD9      RJM    T6S         TEST 668X STATUS                            MLD
          LJM    XREAD       EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        SELECT - SELECT SPACING OPTION.                                MLD
*                                                                        MLD
*         SELECT SPACING OPTION AS DEFINED BY USER.                      MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (D.T0) = INDEX OF SPACING OPTION TO SELECT.             MLD
*                (D.T1) = PREPRINT AND POSTPRINT OPTIONS.                MLD
*                                                                        MLD
*         EXIT - OPTION SELECTED.                                        MLD
*                                                                        MLD
*                ERRILL - IF ILLEGAL FORMAT LEVEL SELECTED.              MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, WNB, FAN.                                          MLD
                                                                         MLD
 SELECT   RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDD    D.T0                                                    MLD
          SBN    SELB                                                    MLD
          PJN    SEL1        IF PREPRINT OR POSTPRINT REQUEST            MLD
          LDN    0                                                       MLD
          STD    D.T1        CLEAR ANY SUBFUNCTION                       MLD
          UJN    SEL3                                                    MLD
                                                                         MLD
 SEL1     LDD    D.T1                                                    MLD
          ZJN    SEL2        IF ILLEGAL PREPRINT OR POSTPRINT SELECTION  MLD
          SBN    13                                                      MLD
          MJN    SEL3        IF LEGAL PREPRINT OR POSTPRINT SELECTION    MLD
 SEL2     LJM    ERRILL      ERROR IF NOT LEGAL FORMAT LEVEL             MLD
                                                                         MLD
 SEL3     LDD    D.T0 
          SBN    SELRND-SELA
          PJN    SEL3A       IF A 668X FUNCTION FOR INTERRUPS 
          LDN    BUSY 
          RJM    WNB         WAIT READY NOT BUSY AND MEMORY NOT BUSY     MLD
 SEL3A    LDD    D.T1 
          ADM    SELA,D.T0                                               MLD
          RJM    FAN         SELECT FORMAT LEVEL                         MLD
 SEL4     LJM    XSELECT     EXIT TO STACK
                                                                         MLD
 SELA     VFD    12/EIGHT    8LP1                                        MLD
          VFD    12/SIX      6LPI                                        MLD
          VFD    12/AUTO     AUTO EJECT                                  MLD
          VFD    12/CLEAR    CLEAR                                       MLD
          VFD    12/LASTL    LASTLINE                                    MLD
          VFD    12/SUP      SUPPRESS                                    MLD
          VFD    12/EXTEND   EXTENDED ARRAY                              MLD
          VFD    12/CLREXT   CLEAR EXTENDED ARRAY                        MLD
 SELRND   VFD    12/SELRNB   SELECT READY NOT BUSY INTERRUPT
          VFD    12/CLRRNB   CLEAR  READY NOT BUSY INTERRUPT             MLD
          VFD    12/SELEOP   SELECT END OF OPERATION INTERRUPT           MLD
          VFD    12/CLREOP   CLEAR  END OF OPERATION INTERRUPT           MLD
          VFD    12/SELAEOP  SELECT ABNORMAL END OF OPERATION INTERRUPT  MLD
          VFD    12/CLRAEOP  CLEAR  ABNORMAL END OF OPERATION INTERRUPT  MLD
 SELB     EQU    *-SELA         INDEX TO PREPRINT/POSTPRINT REQUESTS     MLD
          VFD    12/PRE      SELECT PREPRINT  FORMAT LEVEL               MLD
          VFD    12/POST     SELECT POSTPRINT FORMAT LEVEL               MLD
          SPACE  4,20                                                    MLD
**        SHIFT - SHIFT OUTPUT BUFFER.                                   MLD
*                                                                        MLD
*         SHIFT WORDS OF THE OUTPUT BUFFER LEFT END-AROUND BY 6 BITS.    MLD
*                                                                        MLD
*         ENTRY- (A) = NUMBER OF WORDS TO SHIFT.                         MLD
*                                                                        MLD
*         EXIT - OUTPUT BUFFER SHIFTED.                                  MLD
*                                                                        MLD
*         USES - D.T0, D.T1, P.                                          MLD
*                                                                        MLD
*         CALLS- BD.TEST.                                                MLD
*                                                                        MLD
 SHIFT    STD    D.T1        SAVE WORD COUNT                             MLD
          ZJN    SH2         EXIT IF NO WORDS TO SHIFT                   MLD
          ADD    D.T0        ADD FWA                                     MLD
          STD    D.T2        STORE TERMINAL ADDRESS                      MLD
          RJM    BD.TEST     VERIFY BUFFER REFERENCES ARE IN RANGE       MLD
          LDC    OB-1                                                    MLD
          SBD    D.T0        SUBTRACT FWA OF STORE                       MLD
          MJN    SH0         IF FWA IN OB                                MLD
          SBD    D.T1        ADD WORD COUNT                              MLD
          ADN    1                                                       MLD
          PJN    SH0         IF WC NOT GT 500 ON IB STORE                MLD
          LJM    ERRWC       WORD COUNT ERROR OR BUFFER INDEX            MLD
                                                                         MLD
 SH0      LDI    D.T0                                                    MLD
          SHN    -6                                                      MLD
          STD    D.T3        SAVE FIRST CHARACTER FOR WRAP-AROUND        MLD
 SH1      LDM    1,D.T0                                                  MLD
          SHN    6                                                       MLD
          LMI    D.T0                                                    MLD
          SHN    6                                                       MLD
          STI    D.T0        SHIFT LEFT 6 BITS                           MLD
          AOD    D.T0        BUMP STORAGE ADDRESS                        MLD
          SBD    D.T2                                                    MLD
          NJN    SH1         IF TERMINAL ADDRESS NOT REACHED             MLD
          SOD    D.T0                                                    MLD
          LDI    D.T0                                                    MLD
          SCN    77B         CLEAR LOWER CHARACTER                       MLD
          LMD    D.T3        WRAP FIRST CHARACTER AROUND TO THE LAST     MLD
          STI    D.T0                                                    MLD
 SH2      LJM    XSHIFT      EXIT TO STACK
          SPACE  4,20                                                    MLD
**        SPACE - SPACE PAPER.                                           MLD
*                                                                        MLD
*         WAIT READY NOT BUSY AND INITIATE A SINGLE OR DOUBLE SPACE.     MLD
*                                                                        MLD
*         ENTRY- (A)     = ABT ADDRESS.                                  MLD
*                (D.T0)  = SPACING OPTION (SINGLE OR DOUBLE)             MLD
*                                                                        MLD
*         EXIT - SINGLE SPACE OR DOUBLE SPACE OPERATION INITIATED.       MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, WNB, FAN.                                          MLD
                                                                         MLD
 SPACE    RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    BUSY                                                    MLD
          RJM    WNB         WAIT READY NOT BUSY AND MEMORY NOT BUSY     MLD
          LDD    D.T0                                                    MLD
          ZJN    SPA         IF SINGLE SPACE REQUESTED                   MLD
          SBN    1                                                       MLD
          ZJN    SPA         IF SINGLE SPACE REQUESTED                   MLD
          LDN    DSPACE-SSPACE                                           MLD
 SPA      ADN    SSPACE                                                  MLD
          RJM    FAN         ISSUE SINGLE OR DOUBLE SPACE                MLD
          LJM    XSPACE      EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        STATUS- GET STATUS.                                            MLD
*                                                                        MLD
*         INPUT ALL AVAILABLE STATUS FROM THE CONTROLLER TO THE STATUS   MLD
*         BUFFER.                                                        MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - EQUIPMENT STATUS IS IN STATUS BUFFER.                   MLD
*                (WT) = NUMBER OF STATUS WORDS READ.                     MLD
*                                                                        MLD
*                ERRNI8  - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRNF8S - IF NO FULL ON 668X STATUS.                    MLD
*                ERRIAI8 - IF CH INACTIVE AFTER INPUT OF 668X STATUS.    MLD
*                                                                        MLD
*         USES - WT, P.                                                  MLD
*                                                                        MLD
*         CALLS- TCA,GETS.                                               MLD
*                                                                        MLD
 STATUS   RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          LDC    SEL81S                                                  MLD
          FAN    40B         SELECT 668X STATUS                          MLD
          RJM    DEL         GO TO DELAY FOR CHANNEL FUNCTIONS
          AJM    ERRNI8,0    ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ACN    40B                                                     MLD
          RJM    DEL         GO TO DELAY FOR CHANNEL FUNCTIONS
          EJM    ERRNF8S,0   ERROR IF NO FULL AFTER 668X STATUS REQUEST  MLD
          IAN    40B                                                     MLD
          STM    SB          SAVE 668X STATUS                            MLD
          AOD    WT          BUMP WORDS TRANSMITTED                      MLD
          IJM    ERRIAI8,0   ERROR IF INACTIVE AFTER 668X STATUS INPUT   MLD
          DCN    40B                                                     MLD
          LDN    0                                                       MLD
          RJM    GETS        GET GENERAL STATUS AND STORE IT IN SB+1     MLD
          AOD    WT                                                      MLD
 STS1     UJN    STS2        *** JUMP IF 512 OR 580 NO PFC PRINTER       MLD
*         DATA   0           *** DATA 0 IF 580 PFC PRINTER               MLD
          LDN    1                                                       MLD
          RJM    GETS        GET MAINTENANCE STATUS AND STORE IN SB+2    MLD
          AOD    WT                                                      MLD
 STS2     LJM    XSTATUS     EXIT TO STACK
          SPACE  4,20                                                    MLD
**        TIME - MEASURE WIDTH OR INTERVALS OF SIGNALS.                  MLD
*                                                                        MLD
*         TIME THE WIDTH OR INTERVAL BETWEEN REQUESTED PULSES AND STORE  MLD
*         THE RESULTS INTO THE INPUT BUFFER.                             MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (D.T0) = SIGNAL TO TIME.                                MLD
*                (D.T1) = BUFFER ADDRESS WHERE RESULT IS TO BE STORED.   MLD
*                                                                        MLD
*         EXIT - TIME IS STORED INTO BUFFER.                             MLD
*                                                                        MLD
*                ERRILL  - IF 512 OR 580 WITHOUT PFC IS ASSIGNED.        MLD
*                ERRWC   - IF BUFFER ADDRESS IS OUT OF RANGE.            MLD
*                ERRNSC  - IF NO STATE CHANGE ON SIGNAL.                 MLD
*                                                                        MLD
*         USES - WSC3, WSC4, D.T4, D.T5, WID4, WID10, WID11, D.Z2, P.    MLD
*                                                                        MLD
*         CALLS- WSC, GETS, WIDTH                                        MLD
*                                                                        MLD
*                                                                        MLD
 TIME     RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
 TIM1     UJN    TIM2        *** JUMP INSTRUCTION IF 580 PFC DEVICE      MLD
*         DATA   0           *** DATA 0 IF 512 OR 580 NO PFC ASSIGNED    MLD
          LJM    ERRILL      ILLEGAL COMMAND FOR 512 OR 580 NO PFC       MLD
                                                                         MLD
 TIM2     LDD    D.T1                                                    MLD
          ADC    -IB                                                     MLD
          MJN    TIM3        IF RESULT ADDRESS IS BELOW IB - ERROR       MLD
          SBD    IBL                                                     MLD
          MJN    TIM4        IF RESULT IS WITHIN INPUT BUFFER            MLD
 TIM3     LJM    ERRWC       ERROR IF ADDRESS IS OUTSIDE INPUT BUFFER    MLD
                                                                         MLD
 TIM4     LDN    0                                                       MLD
          STI    D.T1        CLEAR RESULT WORD IN INPUT BUFFER           MLD
          LDD    D.T0                                                    MLD
          LPN    3                                                       MLD
          ZJN    TIM5        IF TIME WIDTH/CYCLE OF THP                  MLD
          LJM    TIM7        IF NOT THP                                  MLD
                                                                         MLD
*         TIME THP - WIDTH AND CYCLE HAVE NO MEANING ON THP              MLD
                                                                         MLD
 TIM5     LDN    1                                                       MLD
          RJM    GETS        GET MAINTENANCE STATUS                      MLD
          LPN    THP                                                     MLD
          LMC    1100B+THP   COMPLEMENT CURRENT STATE OF THP             MLD
          STM    WSC4        STORE TEST INSTRUCTION                      MLD
          LDC    1200B+THP                                               MLD
          STM    WSC3        STORE MASK INSTRUCTION                      MLD
          LDC    4000        NUMBER OF 125 USES TO WAIT ( 500 MSEC )     MLD
          RJM    WSC         WAIT FOR STATE CHANGE OF THP                MLD
          LDM    WSC4                                                    MLD
          LMN    THP                                                     MLD
          STM    WSC4        COMPLEMENT EXPECTED STATE OF THP            MLD
          LDC    4000                                                    MLD
          RJM    WSC         WAIT FOR STATE CHANGE OF THP                MLD
          LDC    4000                                                    MLD
          SBD    D.Z7        CALCULATE TIME BETWEEN STATE CHANGES        MLD
 TIM6     STI    D.T1        SAVE TIME                                   MLD
          LJM    XTIME       EXIT TO STACK                               MLD
                                                                         MLD
*         TIME WIDTH OF ALL SIGNALS EXCEPT THP ( E1,E6,E8 )              MLD
                                                                         MLD
 TIM7     LDD    D.T0                                                    MLD
          LPN    3           SIGNAL TO TIME                              MLD
          STD    D.T5                                                    MLD
          LDM    TIMA-1,D.T5 STORE MASK INSTRUCTION FOR BIT BEING TIMED  MLD
          STM    WID4                                                    MLD
          STM    WID10                                                   MLD
          STM    TIM12                                                   MLD
          LDN    1                                                       MLD
          RJM    GETS        GET MAINTENANCE STATUS                      MLD
          RJM    WIDTH       GET WIDTH OF THE REQUESTED SIGNAL           MLD
          MJN    TIM8        IF TIMING ERROR                             MLD
          STD    D.T5        SAVE WIDTH                                  MLD
          LDD    D.T0                                                    MLD
          LPN    4                                                       MLD
          ZJN    TIM9        IF CYCLE REQUEST                            MLD
          LDD    D.T5                                                    MLD
 TIM7A    UJN    TIM6        SAVE TIME, BUMP P AND EXIT 
                                                                         MLD
 TIM8     LJM    ERRNSC      ERROR IF NO STATE CHANGE IN ALLOTTED TIME   MLD
                                                                         MLD
*         TIME CYCLE OF ALL SIGNALS EXCEPT THP ( E1,E6,E8 )              MLD
                                                                         MLD
 TIM9     LDC    30000/16    30 MSEC DELAY TIME                          MLD
 TIM10    EQU    *-1         ***TIME STORED HERE                         MLD
*                            30000/16 IF 1X SPEED PPU                    MLD
*                            60000/16 IF 2X SPEED PPU                    MLD
*                            120000/16 IF 4X SPEED PPU
                                                                         MLD
          STD    D.Z2        SET NUMBER OF 16 USEC LOOPS TO WAIT         MLD
                                                                         MLD
*         THE LOOP THAT FOLLOWS DEPENDS UPON INSTRUCTION TIMING TO       MLD
*         DETERMINE THE WIDTH OF SIGNALS.  THIS LOOP MUST BE 16 USEC     MLD
*         FOR 1X SPEED PPUS.                                             MLD
*         ***************** START CRITICAL TIMING LOOP ************      MLD
                                                                  *      MLD
 TIM11    FNC    SELEQS                                           *      MLD
          PSN                                                     *      MLD
          ACN    40B                                              *      MLD
          PSN                                                            MLD
          IAN    40B                                              *      MLD
 TIM12    LPN    **          *** MASK INSTRUCTION STORED HERE *** *      MLD
          DCN    40B                                              *      MLD
          NJN    TIM14       IF SIGNAL IS IN THE ONE STATE        *      MLD
          SOD    D.Z2        DECREMENT TIMES THOUGH THE LOOP      *      MLD
          NJN    TIM11       IF TIME IS UP                        *      MLD
                                                                  *      MLD
*         **************** END OF CRITICAL TIMING LOOP ************      MLD
                                                                         MLD
          LJM    ERRNSC      ERROR IF NO STATE CHANGE IN ALLOTTED TIME   MLD
                                                                         MLD
 TIM14    LDM    TIM10                                                   MLD
          SBD    D.Z2                                                    MLD
          ADN    2           ADD IN OVERHEAD TIME                        MLD
 TIM15    SHN    0           *** SHN 0 INSTRUCTION IF 1X SPEED PPU       MLD
*         SHN    -1          *** SHN -1 INSTRUCTION IF 2X SPEED PPU      MLD
*         SHN    -2          *** SHN -2 INSTRUCTION IF 4X SPEED PPU 
          ADD    D.T5        ADD WIDTH AND ZERO TIME                     MLD
          UJN    TIM7A       STORE TIME, BUMP P AND EXIT
                                                                         MLD
*         TABLE OF MASK INSTRUCTIONS - MUST BE KEPT IN ORDER( E1,E6,E8)  MLD
                                                                         MLD
 TIMA     LPN    E1                                                      MLD
          LPN    E6                                                      MLD
          LPN    E8                                                      MLD
          SPACE  4,20                                                    MLD
**        WAITNB - WAIT READY NOT BUSY.                                  MLD
*                                                                        MLD
*         VERIFY THAT THE CHANNEL IS ASSIGNED AND WAIT UNTIL THE         MLD
*         PRINTER GOES NOT BUSY OR 4 SECOND HAS ELAPSED.                 MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS                                    MLD
*                (D.T0) = FLAG  0 = WAIT READY AND MEMORY NOT BUSY.      MLD
*                               1 = WAIT READY, NOT BUSY AND MEMORY NB.  MLD
*                                                                        MLD
*         EXIT - PRINTER IN REQUESTED STATE.                             MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, WNB                                                MLD
*                                                                        MLD
 WAITNB   RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDD    D.T0        LOAD FLAG  0= WAIT MEMORY  1= WAIT BUSY     MLD
          RJM    WNB         WAIT READY NOT BUSY AND MEMORY NOT BUSY     MLD
          RJM    XRES+1      RELEASE/COMMUNICATE/RESERVE
          LJM    XWAITNB     EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        DEQP - DROP EQUIPMENT.                                         MLD
*                                                                        MLD
*         RELEASE THE CONNECT ON THE UNIT ASSIGNED.                      MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - DEVICE RELEASED.                                        MLD
*                                                                        MLD
*                ERRAAE - IF CHANNEL ACTIVE ON ENTRY AND REQUEST IS      MLD
*                         FROM USER (NOT BASIC DRIVER REQUEST).          MLD
*                                                                        MLD
*         USES - S1, S2, LF.                                             MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 DEQPX    LJM    **                                                      MLD
 DEQP     EQU    *-1                                                     MLD
          STD    S1          SAVE ABT ADDRESS                            MLD
          SHN    -12                                                     MLD
          STD    S2                                                      MLD
          LDM    BD.CHFG                                                 MLD
          ZJN    DEQPX       EXIT IF CHANNEL NOT ASSIGNED                MLD
          LDD    S2                                                      MLD
          SBN    77B                                                     MLD
          ZJN    DEQ6        IF RELEASE REQUEST FROM BD                  MLD
          IJM    DEQ1,0                                                  MLD
          LJM    ERRAAE      ERROR IF CHANNEL ACTIVE ON ENTRY            MLD
                                                                         MLD
 DEQ1     LDN    RELEASE                                                 MLD
          STD    LF          SET LAST FUNCTION = RELEASE                 MLD
          FAN    40B                                                     MLD
          LDC    128
 DEQ2     IJM    DEQ4,0      IF RESPONSE RECEIVED                        MLD
 DEQ3     SBN    4           *** SBN 4 IF 1X SPEED PPU ***
*         SBN    2           *** SBN 2 IF 2X SPEED PPU ***
*         SBN    1           *** SBN 1 IF 4X SPEED PPU ***
          PJN    DEQ2                                                    MLD
          DCN    40B                                                     MLD
                                                                         MLD
 DEQ4     EQU    *                                                       MLD
                                                                         MLD
          IFEQ   NOSBE,1                                                 MLD
          LDC    DSEL81                                                  MLD
          FAN    40B                                                     MLD
          PSN                                                            MLD
          IJM    DEQPX,0     EXIT IF RESPONSE RECEIVED                   MLD
          DCN    40B                                                     MLD
          ENDIF                                                          MLD
                                                                         MLD
 DEQ5     LJM    DEQPX       EXIT 
                                                                         MLD
*         IF THE ABORT ADDRESS INDICATES THE CALL IS NOT FROM THE        MLD
*         INSTRUCTION STACK, THE BASIC DRIVER IS TRYING TO RELEASE       MLD
*         THE DEVICE PRIOR TO DROPPING THE PPU. THIS CONDITIONS          MLD
*         REQUIRES THAT NO ABORT OCCUR AND THE CURRENT STATUS OF         MLD
*         REGISTERS AND BUFFERS REMAIN UNCHANGED.                        MLD
                                                                         MLD
 DEQ6     IJM    DEQ7        IF CHANNEL IS INACTIVE                      MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    DEQ5        IF SKIP CHANNEL CLEAN-UP IS REQUESTED       MLD
          DCN    40B                                                     MLD
 DEQ7     LDN    0                                                       MLD
          FAN    40B         ATTEMPT TO RELEASE THE DEVICE               MLD
          LDN    63                                                      MLD
 DEQ8     IJM    DEQ4,0      IF RESPONSE RECEIVED                        MLD
          SBN    1                                                       MLD
          PJN    DEQ8                                                    MLD
          DCN    40B                                                     MLD
          UJN    DEQ4        PREPARE TO EXIT                             MLD
          SPACE  4,20                                                    MLD
**        FAN- ISSUE FUNCTION.                                           MLD
*                                                                        MLD
*         SEND FUNCTION TO  CONTROLLER.                                  MLD
*                                                                        MLD
*         ENTRY- (A) = FUNCTION TO ISSUE.                                MLD
*                                                                        MLD
*         EXIT - FUNCTION ISSUED AND STORED INTO LF.                     MLD
*                                                                        MLD
*                ERRN8R  - IF NO INACTIVE TO EQUIPMENT FUNCTION.         MLD
*                                                                        MLD
*         USES - LF.                                                     MLD
*                                                                        MLD
*         CALLS- T6S.                                                    MLD
*                                                                        MLD
 FANX     LJM    **          ENTRY/EXIT                                  MLD
 FAN      EQU    *-1                                                     MLD
          STD    LF                                                      MLD
          FAN    40B                                                     MLD
          LDC    128
 FAN1     IJM    FAN3,0      IF INACTIVE, GO CHECK 668X STATUS           MLD
 FAN2     SBN    4           *** SBN 4 IF 1X SPEED PPU ***
*         SBN    2           *** SBN 2 IF 2X SPEED PPU ***
*         SBN    1           *** SBN 1 IF 4X SPEED PPU ***
          PJN    FAN1                                                    MLD
          LJM    ERRN8R      IF NO INACTIVE TO FUNCTION IN 128 USEC      MLD
                                                                         MLD
*         TEST 668X STATUS TO INSURE NO PROBLEMS                         MLD
*                                                                        MLD
 FAN3     RJM    T6S         TEST 668X STATUS                            MLD
          UJN    FANX        EXIT TO CALLER                              MLD
          SPACE  4,20                                                    MLD
**        GETS - GET STATUS.                                             MLD
*                                                                        MLD
*         REQUEST AND INPUT STATUS.                                      MLD
*                                                                        MLD
*         ENTRY- (A) = STATUS REQUEST.                                   MLD
*                                                                        MLD
*         EXIT - STATUS IN STATUS BUFFER.                                MLD
*                                                                        MLD
*                ERRNI8  - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRNFES - IF NO FULL FOR EQUIPMENT STATUS.              MLD
*                ERRIAI8 - IF CH INACTIVE AFTER INPUT OF STATUS.         MLD
*                                                                        MLD
*         USES - D.Z1, SB.                                               MLD
*                                                                        MLD
*         CALLS- FAN.                                                    MLD
*                                                                        MLD
 GETSX    LJM    **                                                      MLD
 GETS     EQU    *-1                                                     MLD
          STD    D.Z1        SAVE REQUEST                                MLD
 GET1     UJN    GET2        *** JUMP INSTRUCTION IF 512 OR 580 NO PFC   MLD
*         DATA   0           *** DATA 0 IF 580 PFC PRINTER               MLD
          LMN    1           COMPLEMENT BIT 0 OF REQUEST                 MLD
          ADN    MSTATUS     SELECT/CLEAR MAINTENANCE STATUS             MLD
          RJM    FAN         SELECT REQUESTED STATUS                     MLD
 GET2     LDC    SELEQS                                                  MLD
          FAN    40B                                                     MLD
          RJM    DEL         GO TO DELAY FOR CHANNEL FUNCTIONS
          AJM    ERRNI8      ERROR IF NO INACTIVE TO EQUIP STATUS        MLD
          ACN    40B                                                     MLD
          RJM    DEL         GO TO DELAY FOR CHANNEL FUNCTIONS
          EJM    ERRNFES,0   ERROR IF NO FULL FOR EQUIP STATUS           MLD
          IAN    40B                                                     MLD
          IJM    ERRIAI8     ERROR IF INACTIVE AFTER INPUT OF STATUS     MLD
          DCN    40B                                                     MLD
          STM    SB+1,D.Z1   STORE REQUESTED STATUS                      MLD
          UJN    GETSX       EXIT WITH STATUS IN A REGISTER              MLD
          SPACE  4,20                                                    MLD
**        OUT - OUTPUT DATA TO CHANNEL.                                  MLD
*                                                                        MLD
*         PERFORM SINGLE WORD OR BLOCK OUTPUT.                           MLD
*                                                                        MLD
*         ENTRY- (A)    = OB INDEX TO FWA OF DATA TO OUTPUT.             MLD
*                (D.T0) = SINGLE WORD/BLOCK OUTPUT FLAG ( 0 = SINGLE).   MLD
*                (D.T1) = NUMBER OF WORDS TO OUTPUT.                     MLD
*                                                                        MLD
*         EXIT - WORDS OUTPUT.                                           MLD
*                (WT) = NUMBER OF WORDS OUTPUT.                          MLD
*                                                                        MLD
*                ERRNI8  - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRAF0  - IF CH HUNG FULL ON OUTPUT.                    MLD
*                ERRIDO  - IF CH INACTIVE DURING OUTPUT.                 MLD
*                ERRLOL  - IF NO EMPTY TO LAST WORD OUTPUT.              MLD
*                                                                        MLD
*         USES - WT, D.Z1.                                               MLD
*                                                                        MLD
*         CALLS- T6S.                                                    MLD
*                                                                        MLD
 OUTX     LJM    **                                                      MLD
 OUT      EQU    *-1                                                     MLD
          ADC    OB                                                      MLD
          STM    OUT1        SET FWA FOR BOTH OUTPUT LOOPS               MLD
          STM    OUT6                                                    MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          LDC    SELOUT                                                  MLD
          FAN    40B         SELECT OUTPUT                               MLD
          RJM    DEL         GO TO DELAY FOR CHANNEL FUNCTIONS
          AJM    ERRNI8,0    ERROR IF NOT 668X RESPONSE                  MLD
          ACN    40B                                                     MLD
          LDD    D.T0                                                    MLD
          ZJN    OUT2        IF SINGLE WORD OUTPUT                       MLD
          LDD    D.T1        NUMBER OF WORDS TO OUTPUT                   MLD
          OAM    **,0                                                    MLD
 OUT1     EQU    *-1         *** FWA OF OUTPUT STORED HERE               MLD
          STD    D.Z1        SAVE REMAINDER                              MLD
          LDD    D.T1                                                    MLD
          SBD    D.Z1        CALCULATE ACTUAL NUMBER OF BYTES OUTPUT     MLD
          STD    WT          STORE RESULT IN WORDS TRANSMITTED REGISTER  MLD
          UJN    OUT7        WAIT ON LAST WORD                           MLD
                                                                         MLD
 OUT2     LCN    3
 OUT3     EJM    OUT5        IF WORD TAKEN BY DEVICE                     MLD
 OUT4     SBN    4           *** SBN 4 IF 1X SPEED PPU ***
*         SBN    2           *** SBN 2 IF 2X SPEED PPU ***
*         SBN    1           *** SBN 1 IF 4X SPEED PPU ***
          NJN    OUT3        IF TIME IS NOT UP
          LJM    ERRAFO      ERROR IF HUNG ACTIVE AND FULL ON OUTPUT     MLD
                                                                         MLD
 OUT5     IJM    ERRIDO,0    ERROR IF INACTIVE DURING OUTPUT             MLD
          LDM    **,WT                                                   MLD
 OUT6     EQU    *-1         *** FWA OF OUTPUT STORED HERE               MLD
          OAN    40B                                                     MLD
          AOD    WT          BUMP NUMBER OF WORDS OUTPUT                 MLD
          SBD    D.T1                                                    MLD
          NJN    OUT2        IF ALL WORDS NOT DONE
 OUT7     EJM    OUT9,0      IF EMPTY ON LAST WORD                       MLD
 OUT8     ADN    4           *** ADN 4 IF 1X SPEED PPU ***
*         ADN    2           *** ADN 2 IF 2X SPEED PPU ***
*         ADN    1           *** ADN 1 IF 4X SPEED PPU ***
          PJN    OUT7        IF TIME IS NOT UP                           MLD
          LJM    ERRLOL      ERROR IF LAST OUTPUT LOST                   MLD
                                                                         MLD
 OUT9     IJM    ERRIDO,0    ERROR IF INACTIVE DURING OUTPUT             MLD
          DCN    40B                                                     MLD
          RJM    T6S         TEST 668X STATUS                            MLD
          LJM    OUTX        RETURN TO CALLER                            MLD
          SPACE  4,20                                                    MLD
**        TCA - TEST CHANNEL ASSIGNMENT.                                 MLD
*                                                                        MLD
*         VERIFY THAT THE I/O CHANNEL IS ASSIGNED.                       MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - CHANNEL IS ASSIGNED.                                    MLD
*                                                                        MLD
*                ERRCNR  - IF CHANNEL NOT ASSIGNED.                      MLD
*                ERRAAE  - IF CHANNEL ACTIVE ON ENTRY.                   MLD
*                                                                        MLD
*         USES - S1, S2                                                  MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 TCAX     LJM    **          ENTRY/EXIT                                  MLD
 TCA      EQU    *-1                                                     MLD
          STD    S1          SAVE ABT ADDRESS                            MLD
          SHN    -12                                                     MLD
          STD    S2                                                      MLD
          LDM    BD.CHFG                                                 MLD
          ZJN    TCA1        IF CHANNEL NOT ASSIGNED                     MLD
          IJM    TCAX,0      EXIT IF INACTIVE                            MLD
          LJM    ERRAAE      ERROR IF ACTIVE ON COMMAND ENTRY            MLD
                                                                         MLD
 TCA1     LJM    ERRCNR      ERROR IF CHANNEL NOT RESERVED               MLD
          SPACE  4,20                                                    MLD
**        T6S - TEST 668X STATUS.                                        MLD
*                                                                        MLD
*         REQUEST, INPUT AND VERIFY 668X STATUS IS OK.                   MLD
*                                                                        MLD
*         ENTRY- NONE.                                                   MLD
*                                                                        MLD
*         EXIT - 668X STATUS IS IN SB AND IS ERROR FREE.                 MLD
*                                                                        MLD
*                ERRNI8  - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRNF8S - IF NO FULL FOR 668X STATUS.                   MLD
*                ERRIAI8 - IF CH INACTIVE AFTER INPUT OF 668X STATUS.    MLD
*                ERREXT  - IF 668X EXTERNAL REJECT.                      MLD
*                ERRINT  - IF 668X INTERNAL REJECT.                      MLD
*                ERRTPE  - IF 668X TRANSMISSION PARITY ERROR.            MLD
*                                                                        MLD
*         USES - SB.                                                     MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 T6SX     LJM    **                                                      MLD
 T6S      EQU    *-1                                                     MLD
          LDC    SEL81S                                                  MLD
          FAN    40B         REQUEST 668X STATUS                         MLD
          RJM    DEL         GO TO DELAY FOR CHANNEL FUNCTIONS
          AJM    ERRNI8,0    ERROR IF NO INACTIVE TO 668X STATUS REQ.    MLD
          ACN    40B                                                     MLD
          RJM    DEL         GO TO DELAY FOR CHANNEL FUNCTIONS
          EJM    ERRNF8S,0   ERROR IF NO FULL FOR 668X STATUS            MLD
          IAN    40B                                                     MLD
          STM    SB          STORE 668X STATUS IN FIRST WORD OF SB       MLD
          IJM    ERRIAI8,0   ERROR IF INACTIVE AFTER INPUT OF STATUS     MLD
          DCN    40B                                                     MLD
          LPN    7                                                       MLD
          ZJN    T6SX        EXIT IF NO ERRORS                           MLD
          SHN    15                                                      MLD
          MJN    T6S2        IF TRANSMISSION PARITY ERROR                MLD
          SHN    1                                                       MLD
          MJN    T6S1        IF INTERNAL REJECT                          MLD
          LJM    ERREXT      IF EXTERNAL REJECT                          MLD
                                                                         MLD
 T6S1     LJM    ERRINT      INTERNAL REJECT                             MLD
                                                                         MLD
 T6S2     LJM    ERRTPE      TRANSMISSION PARITY ERROR                   MLD
          SPACE  4,20                                                    MLD
**        WNB - WAIT READY NOT BUSY.                                     MLD
*                                                                        MLD
*         LOOP ON STATUS INPUT AND WAIT READY NOT BUSY.                  MLD
*                                                                        MLD
*         ENTRY- (A) = STATUS TO WAIT FOR. (BUSY OR NOT BUSY)            MLD
*                                                                        MLD
*         EXIT - REQUESTED STATE HAS BEEN VERIFIED.                      MLD
*                                                                        MLD
*                ERRUDR - IF UNIT NOT READY.                             MLD
*                ERRUHB - IF UNIT HUNG BUSY.                             MLD
*                                                                        MLD
*         USES - S4, S5, S6, S7, D.T0, D.T1, D.T2.                       MLD
*                                                                        MLD
*         CALLS- GETS, RES.                                              MLD
*                                                                        MLD
 WNBX     LJM    **          ENTRY/EXIT                                  MLD
 WNB      EQU    *-1                                                     MLD
          ADC    MBUSY+RDY                                               MLD
          STM    WNB2        STORE SELECTED STATUS TO WAIT FOR           MLD
          LDN    0                                                       MLD
          STD    S7          SET WAIT LOOP COUNT                         MLD
 WNB1     LDN    0                                                       MLD
          RJM    GETS        GET GENERAL STATUS                          MLD
          LPC    **                                                      MLD
 WNB2     EQU    *-1         *** STATUS CONDITIONS TO TEST STORED HERE   MLD
          LMN    RDY                                                     MLD
          ZJN    WNBX        IF REQUSTED CONDITIONS EXIST                MLD
          LPN    RDY                                                     MLD
          ZJN    WNB3        IF READY HAS NOT DROPPED                    MLD
          LJM    ERRUDR      ERROR IF UNIT HAS DROPPED READY             MLD
                                                                         MLD
 WNB3     LDD    D.T0                                                    MLD
          STD    S4          SAVE DIRECT CELLS ACROSS XRES ROUTINE       MLD
          LDD    D.T1                                                    MLD
          STD    S5                                                      MLD
          LDD    D.T2                                                    MLD
          STD    S6                                                      MLD
          LDD    S2                                                      MLD
          SHN    12                                                      MLD
          LMD    S1                                                      MLD
          RJM    XRES+1      RELEASE/COMMUNICATE/RESERVE                 MLD
          LDD    S4                                                      MLD
          STD    D.T0        RESTORE DIRECT CELLS                        MLD
          LDD    S5                                                      MLD
          STD    D.T1                                                    MLD
          LDD    S6                                                      MLD
          STD    D.T2                                                    MLD
          IANN   14B+40B     GET CURRENT TIME                            MLD
          SHN    -11                                                     MLD
          LMD    S7                                                      MLD
          LPN    1                                                       MLD
          RAD    S7          BUMP NUMBER OF MILLISECONDS THAT PASS       MLD
          SHN    -11                                                     MLD
          NJN    WNB4        IF 4 SECONDS HAVE PASSED                    MLD
          LJM    WNB1        CONTINUE LOOPING                            MLD
                                                                         MLD
 WNB4     LJM    ERRUHB      ERROR IF HUNG BUSY FOR TWO SECONDS          MLD
          SPACE  4,20                                                    MLD
**        WIDTH - MEASURE WIDTH OF A MAINTENANCE STATUS SIGNAL.          MLD
*                                                                        MLD
*         TEST WIDTH OF A REQUESTED SIGNAL.  WAIT UP TO                  MLD
*         30 MSEC FOR THE SIGNAL TO GO TO A ZERO STATE.  THEN            MLD
*         WAIT UP TO 30 MSEC FOR SIGNAL TO GO TO A ONE STATE.            MLD
*         MEASURE THE TIME THE SIGNAL REMAINS IN THE ONE STATE.          MLD
*         ABORT IF IT IS IN THE 1 STATE FOR MORE THAN 4 MSEC             MLD
*         OR THE ZERO STATE FOR MORE THAN 30 MSEC.                       MLD
*                                                                        MLD
*         ENTRY- WID4, WID9 AND WID10 ARE SET TO REQUIRED MASK AND       MLD
*                TEST INSTRUCTIONS.                                      MLD
*                                                                        MLD
*         EXIT - (A) = WIDTH OF THE SIGNAL IN MICROSECONDS.              MLD
*                                                                        MLD
*         USES - D.Z2, D.Z4.                                             MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 WIDTHX   LJM    **          ENTRY/EXIT                                  MLD
 WIDTH    EQU    *-1                                                     MLD
          LDC    30000/16                                                MLD
 WID1     EQU    *-1         *** 30 MSEC DELAY TIME STORED HERE          MLD
*                            *** 30000/16 FOR 1X SPEED PPU ***           MLD
*                            *** 60000/16 FOR 2X SPEED PPU ***           MLD
*                            *** 120000/16 FOR 4X SPEED PPU 
          STD    D.Z2        SET DELAY TIME FOR 1-0 STATE CHANGE         MLD
          LDN    2                                                       MLD
          STD    D.Z4        SET PASS COUNT                              MLD
                                                                         MLD
*         THE LOOP THAT FOLLOWS DEPENDS UPON INSTRUCTION TIMING TO       MLD
*         DETERMINE THE WIDTH OF SIGNALS.  THIS LOOP MUST BE 16 USEC     MLD
*         FOR 1X SPEED PPUS.                                             MLD
*         *************** START CRITICAL TIMING LOOP ***********         MLD
                                                               *         MLD
 WID2     FNC    SELEQS      REQUEST MAINTENANCE STATUS        *         MLD
          PSN                                                  *         MLD
          ACN    40B                                           *         MLD
          PSN                                                  *         MLD
 WID3     IAN    40B                                           *         MLD
 WID4     LPN    **          *** MASK INSTRUCTION STORED HERE  *         MLD
          DCN    40B                                           *         MLD
          ZJN    WID6        IF SIGNAL IS IN THE ZERO STATE    *         MLD
          SOD    D.Z2        DECREMENT                         *         MLD
          NJN    WID2        IF TIME HAS NOT ELAPSED           *         MLD
                                                               *         MLD
*         *************** END OF CRITICAL TIMING LOOP **********         MLD
                                                                         MLD
          LCN    0           SET -A- NEGATIVE TO INDICATE ERROR 
 WID5     UJN    WIDTHX      EXIT WITH -A- SET
                                                                         MLD
 WID6     SOD    D.Z4                                                    MLD
          ZJN    WID13       IF SECOND PASS                              MLD
          LDM    WID1                                                    MLD
          STD    D.Z2        SET WAIT TIME FOR 0-1 STATE CHANGE          MLD
                                                                         MLD
*         THE LOOP THAT FOLLOWS DEPENDS UPON INSTRUCTION TIMING TO       MLD
*         DETERMINE THE WIDTH OF SIGNALS.  THIS LOOP MUST BE 16 USEC     MLD
*         FOR 1X SPEED PPUS.                                             MLD
*         *************** START CRITICAL TIMING LOOP ***********         MLD
                                                               *         MLD
 WID8     FNC    SELEQS      REQUEST MAINTENANCE STATUS        *         MLD
          PSN                                                  *         MLD
          ACN    40B                                           *         MLD
          PSN                                                            MLD
 WID9     IAN    40B                                           *         MLD
 WID10    LPN    **          *** MASK INSTRUCTION STORED HERE  *         MLD
          DCN    40B                                           *         MLD
          NJN    WID11       IF SIGNAL IS IN A ONE STATE       *         MLD
          SOD    D.Z2                                          *         MLD
          NJN    WID8        IF TIME IS NOT UP                 *         MLD
                                                               *         MLD
*         *************** END OF CRITICAL TIMING LOOP **********         MLD
                                                                         MLD
          LCN    1                                                       MLD
 WID10A   UJN    WID5        EXIT WITH -A- NEGATIVE 1 TO INDICATE ERROR 
                                                                         MLD
 WID11    LDC    4000/16     DELAY TIME FOR 4 MSEC                       MLD
 WID12    EQU    *-1         *** 4 MSEC DELAY TIME STORED HERE           MLD
*                            *** 4000/16 FOR 1X SPEED PPU ***            MLD
*                            *** 8000/16 FOR 2X SPEED PPU ***            MLD
*                            *** 16000/16 FOR 4X SPEED PPU ***
                                                                         MLD
          STD    D.Z2        SET TIME TO 4 MSEC WAIT ON 1-0 STATE CHANGE MLD
          LJM    WID2        RE-ENTER WAIT FOR ZERO LOOP                 MLD
                                                                         MLD
 WID13    LDM    WID12       CALCULATE ONE STATE TIME                    MLD
          SBD    D.Z2                                                    MLD
          ADN    1           ADD OVERHEAD TIME                           MLD
                                                                         MLD
*         DIVIDE THE TIME BY 2 IF 2X SPEED PPU                           MLD
                                                                         MLD
 WID14    SHN    0           *** SHN 0 IF 1X SPEED PPU ***               MLD
*         SHN    -1          *** SHN -1 IF 2X SPEED PPU ***              MLD
*         SHN    -2          *** SHN -2 INSTRUCTION IF 4X SPEED PPU 
          UJN    WID10A      EXIT WITH -A- EQUAL THE TIME OF ONE STATE
          SPACE  4,20                                                    MLD
**        WSC - WAIT STATE CHANGE.                                       MLD
*                                                                        MLD
*         WAIT STATE CHANGE OF A MAINTENANCE STATUS BIT.                 MLD
*                                                                        MLD
*                                                                        MLD
*         ENTRY- (A) = NUMBER OF 125 TIME SLICES STATUS IS TO BE CHECKED MLD
*                WHILE WAITING FOR THE CHANGE OF STATE BEFORE AN ERROR   MLD
*                EXIT OCCURS.                                            MLD
*                (WSC3) = MASK INSTRUCTION TO MASK SELECTED STATUS BIT   MLD
*                (WSC4) = TEST INSTRUCTION TO TEST STATE OF SELECTED BIT MLD
*                                                                        MLD
*         EXIT - TO CALLER IF NO ERROR.  (D.Z7) = QUANTUMS OF 125 USEC   MLD
*                                                 REMAINING TO GO.       MLD
*                                        (D.Z6) = LAST MAINTENANCE STAT. MLD
*                                                                        MLD
*                ERRNSC - IF NO STATE CHANGE ON STATUS BIT.              MLD
*                                                                        MLD
*         USES - D.Z6,D.Z7,D.T6,D.T7                                     MLD
*                                                                        MLD
*         CALLS -NONE.                                                   MLD
*                                                                        MLD
 WSCX     LJM    **          ENTRY/EXIT                                  MLD
 WSC      EQU    *-1                                                     MLD
          STD    D.Z7        SET NUMBER OF 125 TIME SLICES ALLOWED       MLD
          IANN   14B+40B                                                 MLD
 WSC1     ADC    125                                                     MLD
          STD    D.T6        SAVE CURRENT TIME + 125 USEC                MLD
 WSC2     FNC    SELEQS      REQUEST STATUS                              MLD
          PSN                                                            MLD
          ACN    40B                                                     MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STD    D.Z6                                                    MLD
 WSC3     LPN    **          *** MASK INSTRUCTION STORED HERE            MLD
 WSC4     LMN    **          *** TEST INSTRUCTION STORED HERE            MLD
          ZJN    WSCX        EXIT IF CONDITION REQUESTED EXISTS          MLD
          IANN   14B+40B                                                 MLD
          STD    D.Z0        SAVE CURRENT TIME                           MLD
          LDD    D.T6        TARGET TIME                                 MLD
          SBD    D.Z0                                                    MLD
          ZJN    WSC5        IF 125 USEC ELAPSED                         MLD
          SHN    17D-11D                                                 MLD
          PJN    WSC2        IF 125 USEC HAS NOT ELAPSED                 MLD
 WSC5     SOD    D.Z7        DECREMENT QUANTUMS OF TIME TO GO            MLD
          ZJN    ERRNSC      IF TIME IS UP
          LDD    D.T6                                                    MLD
          UJN    WSC1        BUMP TIME AND CONTINUE TESTING STATUS       MLD
                                                                         MLD
 ERRNSC   LDC    ER.NSC      NO STATE CHANGE ON TIMING SIGNAL 
          UJN    ERR
          EJECT                                                          MLD
 ERRAAE   LDC    ER.AAE      CHANNEL ACTIVE AT COMMAND ENTRY             MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRNI8   LDC    ER.NI8      NO INACTIVE TO A 668X FUNCTION              MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRN8R   LDC    ER.N8R      NO RESPONSE FROM 668X TO EQUIPMENT FUNCTION MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRNF8S  LDC    ER.NF8S     NO FULL AFTER REQUEST FOR 668X STATUS       MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRNFES  LDC    ER.NFES     NO FULL TO REQUEST FOR 668X EQUIP STATUS    MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRIAI8  LDC    ER.IAI8     INACTIVE AFTER INPUT OF 668X STATUS         MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRTPE   LDC    ER.TPE      668X TRANSMISSION PARITY ERROR              MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRINT   LDC    ER.INT      668X INTERNAL REJECT                        MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERREXT   LDC    ER.EXT      668X EXTERNAL REJECT                        MLD
 ERR      UJN    ERR1                                                    MLD
                                                                         MLD
 ERRWC    LDC    ER.WC       BUFFER REFERENCE OR WORD COUNT ERROR        MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRLOL   LDC    ER.LOL      NO RESPONSE FOR LAST OUTPUT BYTE            MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRCNR   LDC    ER.CNR      CHANNEL NOT RESERVED                        MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRILL   LDC    ER.ILL      ILLEGAL COMMAND FOR EQUIPMENT ASSIGNED      MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRAEI   LDC    ER.AEI      CHANNEL HUNG ACTIVE AND EMPTY ON INPUT      MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRAFO   LDC    ER.AFO      CHANNEL ACTIVE AND FULL ON OUTPUT           MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRIDO   LDC    ER.IDO      CHANNEL INACTIVE DURING OUTPUT              MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRUHB   LDC    ER.UHB      UNIT HUNG BUSY                              MLD
 ERR1     UJN    ERR2                                                    MLD
                                                                         MLD
 ERRUDR   LDC    ER.UDR      UNIT DROPPED READY                          MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRNB    LDC    ER.NB       UNIT NOT BUSY DURING TIMING OF PAPER MOTION MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRCOF   LDC    ER.COF      COUNT OVERLOW ON COUNT TSS/E1               MLD
                                                                         MLD
 ERR2     STD    D.Z1        SAVE MESSAGE INDEX AND ERROR NUMBER         MLD
          SHN    -12                                                     MLD
          STD    D.Z2        SAVE ABORT FLAG                             MLD
          LDM    BD.CHFG                                                 MLD
          ZJN    ERR3        IF CHANNEL IS NOT ASSIGNED                  MLD
          IJM    ERR3,0                                                  MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    ERR3        IF SKIP CHANNEL CLEANUP IS REQUESTED        MLD
          DCN    40B                                                     MLD
 ERR3     LDD    D.Z1                                                    MLD
          LPN    77B                                                     MLD
          ADC    4300B       ADD IN BIAS FOR 580 PRODUCT OVERLAY         MLD
          STD    EC          STORE ERROR CODE                            MLD
          LDD    D.Z1                                                    MLD
          SHN    -6                                                      MLD
          ADC    100B        FLAG MESSAGE INDEX AS OVERLAY MESSAGE       MLD
          STD    EM          STORE MESSAGE INDEX                         MLD
          LDD    P                                                       MLD
          STD    EA          STORE LINE NUMBER WHERE ERROR OCCURRED      MLD
          LDD    D.Z2                                                    MLD
          NJN    ERR5        IF ABORT FLAG SET                           MLD
          LDD    S2                                                      MLD
          SHN    12                                                      MLD
          LMD    S1                                                      MLD
          ZJN    ERR4        IF NO ABT ADDRESS SPECIFIED                 MLD
          LJM    BD.RNI      RNI AT THE REJECT ADDRESS                   MLD
                                                                         MLD
 ERR4     LJM    BD.ERR      TERMINATE OR RESTART MODULE BASED ON SE     MLD
                                                                         MLD
 ERR5     LJM    BD.ABT      TERMINATE MODULE                            MLD
                                                                         MLD
                                                                         MLD
 IB       EQU    6470B       INPUT BUFFER FWA                            MLD
 LIB      EQU    500B        LENGTH OF INPUT BUFFER                      MLD
 OB       EQU    IB+LIB      OUTPUT BUFFER FWA                           MLD
 LOB      EQU    601B        LENGTH OF OUTPUT BUFFER                     MLD
 SB       EQU    OB+LOB      STATUS BUFFER FWA                           MLD
 CH       EQU    SB+3                                                    MLD
 EQ       EQU    SB+4                                                    MLD
 UN       EQU    SB+5                                                    MLD
 LSB      EQU    6                                                       MLD
 SBLWA    EQU    SB+LSB      LWA+1 OF STATUS BUFFER                      MLD
                                                                         MLD
          ERRPL  *-IB-1      ERROR IF 58X PRODUCT OVERLAY OVERFLOW       MLD
          EJECT                                                          MLD
*                                                                        MLD
*         THE INITIALIZATION CODE THAT FOLLOWS IS OVERLAYED BY THE       MLD
*         PRODUCT OVERLAY BUFFERS ABOVE.                                 MLD
*                                                                        MLD
*                                                                        MLD
*         TEST EQUIPMENT AND UNIT NUMBER                                 MLD
*                                                                        MLD
*                                                                        MLD
 INIT     LDM    BD.EQ                                                   MLD
          STM    RES2        STORE CONNECT CODE                          MLD
          STM    RES4                                                    MLD
          LPN    37B                                                     MLD
          STM    UN          SAVE UNIT NUMBER                            MLD
          LDM    BD.EQ                                                   MLD
          SHN    -9                                                      MLD
          STM    EQ          SAVE EQUIPMENT NUMBER IN STATUS BUFFER      MLD
          SHN    -2                                                      MLD
          ZJN    INIT1       IF EQUIPMENT 0 - 3                          MLD
          LDN    0                                                       MLD
          STM    RES1        SET EQUIPMENT FLAG FOR EQUIPMENT 4-7        MLD
*                                                                        MLD
*         SET DELAY TIME BASED ON SPEED OF PPU                           MLD
*                                                                        MLD
 INIT1    LDM    BD.SPEED 
          SHN    -1 
          SBN    2
          LPN    77B
          ADM    TIM15       MODIFY SHIFT COUNT FOR PPU SPEED 
          STM    TIM15
          STM    WID14
          LDN    5
          SBM    BD.SPEED 
          SHN    -1 
          RAM    INIT1A 
          STM    INIT1B 
          LDM    WID1        MODIFY TIMING CONSTANTS
 INIT1A   SHN    0
          STM    WID1 
          STM    TIM10
          SHN    -12
          ADC    2000B
          STM    WID1-1 
          STM    TIM10-1
          LDM    WID12
 INIT1B   SHN    0
          STM    WID12
          LDC    TSPEED                                                  MLD
          STD    D.T0                                                    MLD
 INIT2    LDI    D.T0                                                    MLD
          ZJN    INIT3       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1                                                    MLD
          SCN    77B
          ADM    BD.SPEED 
          STI    D.T1        SET ADN/SBN VALUE
          AOD    D.T0                                                    MLD
          UJN    INIT2       COMPLETE ALL WORDS                          MLD
*                                                                        MLD
*         STORE I/O CHANNEL INTO COMMANDS                                MLD
*                                                                        MLD
 INIT3    LDM    BD.CHAN                                                 MLD
          STM    CH          SAVE CHANNEL IN STATUS BUFFER               MLD
          STD    D.T2                                                    MLD
          LDC    TCHAN                                                   MLD
          STD    D.T0        SET FWA OF TABLE CONTAINING ADDRESSES       MLD
 INIT4    LDI    D.T0                                                    MLD
          ZJN    INIT5       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1                                                    MLD
          LPC    7740B                                                   MLD
          ADD    D.T2                                                    MLD
          STI    D.T1                                                    MLD
          AOD    D.T0                                                    MLD
          UJN    INIT4       COMPLETE ALL WORDS                          MLD
*                                                                        MLD
*         WRITE PP MESSAGES TO CM                                        MLD
*                                                                        MLD
 INIT5    LDM    BD.MSGA     GET PP MESSAGE AREA ADDRESS                 MLD
          STD    S1          SAVE IT                                     MLD
          ADC    MMSGL.      ADD LENGTH 
          RJM    BD.TFL      SEE IF IN FL                                MLD
          LDN    P.ZERO      CLEAR CELLS, D.Z1=PP MESSAGE ADDRESS        MLD
          CRD    D.Z1        D.Z2=D.T0-D.T4 POINTER, D.Z3=CM WD COUNTER  MLD
 INIT6    LDM    PPMSGS,D.Z1 GET PP MESSAGE WORD                         MLD
          ZJN    INIT8       IF END OF MESSAGE                           MLD
 INIT7    STM    D.T0,D.Z2   STORE IN D.T0+                              MLD
          AOD    D.Z1        BUMP PP MESSAGE POINTER                     MLD
          UJN    INIT9                                                   MLD
 INIT8    LDC    2R          MESSAGE END, STORE BLANKS                   MLD
          STM    D.T0,D.Z2                                               MLD
 INIT9    AOD    D.Z2        BUMP D.T0+ POINTER                          MLD
          SBN    5                                                       MLD
          NJN    INIT6       IF NOT 5 PP WORDS                           MLD
          STD    D.Z2        CLEAR POINTER                               MLD
          LDD    D.RA        PUT RA IN A REG                             MLD
          SHN    6                                                       MLD
          ADD    S1          ADD MESSAGE ADDRESS                         MLD
          CWD    D.T0        WRITE ONE WORD FROM D.T0                    MLD
          AOD    S1          UPDATED ADDRESS                             MLD
          AOD    D.Z3        BUMP CM WORD COUNTER                        MLD
          SBN    BD.MSGML                                                MLD
          NJN    INIT6       IF NOT BD.MSGML CM WORDS                    MLD
          STD    D.Z3        CLEAR CM WORD COUNTER                       MLD
          LDM    PPMSGS,D.Z1                                             MLD
          ZJN    INIT10      IF MESSAGE ENDED IN ZERO BYTE               MLD
          AOD    D.Z1        SKIP ZERO BYTE TERMINATOR                   MLD
 INIT10   AOD    D.Z1        BUMP PP MESSAGE ADDRESS TO NEXT MESSAGE     MLD
          LDM    PPMSGS,D.Z1                                             MLD
          NJN    INIT7       IF NOT LAST MESSAGE                         MLD
                                                                         MLD
*                                                                        MLD
*         SET DIRECT CELLS                                               MLD
*                                                                        MLD
          STD    BA          CLEAR BEGINNING ADDRESS REGISTER            MLD
          LDC    LIB+1                                                   MLD
          STD    IBL         SET LENGTH OF IB AND OB                     MLD
          LDC    LOB+1                                                   MLD
          STD    OBL                                                     MLD
          LDC    104B                                                    MLD
          STD    WC          SET DEFAULT VALUE IN WORD COUNT REGISTER    MLD
          LDD    DC          VERIFY THAT THE DEVICE CODE IS SUPPORTED    MLD
          SBN    T512                                                    MLD
          NJN    INIT11      IF NOT 512 PRINTER                          MLD
          LDC    288                                                     MLD
          STM    FILLA       SET 580 FILL IMAGE MEMORY WORD COUNT        MLD
          LDN    0                                                       MLD
          UJN    INIT13                                                  MLD
                                                                         MLD
 INIT11   SBN    T12-T512                                                MLD
          ZJN    INIT13      IF 580-12                                   MLD
          SBN    T16-T12                                                 MLD
          ZJN    INIT13      IF 580-16                                   MLD
          SBN    T20-T16                                                 MLD
          ZJN    INIT13      IF 580-20                                   MLD
          SBN    T12PFC-T20                                              MLD
          ZJN    INIT12      IF 580-12 PFC                               MLD
          SBN    T16PFC-T12PFC                                           MLD
          ZJN    INIT12      IF 580-16 PFC                               MLD
          SBN    T20PFC-T16PFC                                           MLD
          ZJN    INIT12      IF 580-20 PFC                               MLD
          LDC    DNS                                                     MLD
          UJN    INIT14      EXIT IF DEVICE NOT SUPPORTED (A)= MSG       MLD
                                                                         MLD
 INIT12   STM    STS1        SET 580 PFC ASSIGNED FLAGS                  MLD
          STM    GET1                                                    MLD
          UJN    INIT14      EXIT WITH (A) = 0 - NO ERRORS               MLD
                                                                         MLD
 INIT13   STM    FILL1       SET 512/580 NO PFC ASSIGNED FLAGS           MLD
          STM    CNT1                                                    MLD
          STM    TIM1                                                    MLD
 INIT14   LJM    START       RETURN TO BASIC DRIVER AFTER INITIALIZATION MLD
                                                                         MLD
 DNS      DIS    ,*DC NOT SUPPORTED*                                     MLD
          EJECT                                                          MLD
                                                                         MLD
*         TABLE OF PPU SPEED SWITCHES                                    MLD
                                                                         MLD
 TSPEED   VFD    12/RES7                                                 MLD
          VFD    12/RD5                                                  MLD
          VFD    12/DEQ3                                                 MLD
          VFD    12/FAN2                                                 MLD
          VFD    12/OUT4                                                 MLD
          VFD    12/OUT8                                                 MLD
          DATA   0           END OF SPEED SWITCHES TABLE                 MLD
          EJECT                                                          MLD
          TITLE  ERROR MESSAGES FOR 580.                                 MLD
 PPMSGS   EQU    *           START OF PP MESSAGES                        MLD
****                                                                     MLD
          MMSG   ER.FLE,EC.FLE,(ADDR OUT OF FL),1                        MLD
          MMSG   ER.TL,EC.TL,(I/O TIME OUT ON CH RESERVE),1              MLD
          MMSG   ER.SEE,EC.SEE,(SUBR ENTRY/EXIT ERR),1                   MLD
          MMSG   ER.WC,EC.WC,(BUFFER INDEX OR WC ERR),1                  MLD
          MMSG   ER.RES,EC.RES,(R)                                       MLD
          MMSG   ER.RES1,EC.RES1,(R)                                     MLD
          MMSG   ER.RES2,EC.RES2,(R)                                     MLD
          MMSG   ER.NI8,EC.NI8,(NO INACTIVE TO 668X FUNC)                MLD
          MMSG   ER.N8R,EC.N8R,(NO INACTIVE TO EQUIP FUNC)               MLD
          MMSG   ER.NF8S,EC.NF8S,(NO FULL FOR 668X STATUS)               MLD
          MMSG   ER.NFES,EC.NFES,(NO FULL FOR EQUIP STATUS)              MLD
          MMSG   ER.IAI8,EC.IAI8,(CH INACTIVE AFTER 668X STATUS)         MLD
          MMSG   ER.TPE,EC.TPE,(668X XMSN PE)                            MLD
          MMSG   ER.INT,EC.INT,(668X INT REJ)                            MLD
          MMSG   ER.EXT,EC.EXT,(668X EXT REJ)                            MLD
          MMSG   ER.AAE,EC.AAE,(CH ACTIVE ON ENTRY)                      MLD
          MMSG   ER.IAA,EC.IAA,(CH INACTIVE AFTER ACN)                   MLD
          MMSG   ER.CNR,EC.CNR,(CH NOT RESERVED)                         MLD
          MMSG   ER.ILL,EC.ILL,(ILLEGAL COMMAND)                         MLD
          MMSG   ER.LOL,EC.LOL,(NO RESPONSE TO LAST OUTPUT)              MLD
          MMSG   ER.AEI,EC.AEI,(CH ACTIVE AND EMPTY ON INPUT)            MLD
          MMSG   ER.IBF,EC.IBF,(CH INACTIVE ON STATUS)                   MLD
          MMSG   ER.AFO,EC.AFO,(CH ACTIVE AND FULL ON OUTPUT)            MLD
          MMSG   ER.IDO,EC.IDO,(CH INACTIVE DURING OUTPUT)               MLD
          MMSG   ER.UHB,EC.UHB,(UNIT HUNG BUSY)                          MLD
          MMSG   ER.UDR,EC.UDR,(UNIT NOT READY)                          MLD
          MMSG   ER.NB,EC.NB,(UNIT NOT BUSY)                             MLD
          MMSG   ER.COF,EC.COF,(COUNT OVERFLOW)                          MLD
          MMSG   ER.NSC,EC.NSC,(NO STATE CHANGE)                         MLD
 MMSGL.   EQU    MMSGL
          DATA   0                                                       MLD
****                                                                     MLD
 TCHAN    EQU    *           CREATE CHANNEL TABLE                        MLD
          LIST   D                                                       MLD
          HERE                                                           MLD
          LIST   *                                                       MLD
          DATA   0           END OF CHANNEL TABLE                        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 58X OVERLAY OVERFLOW               MLD
                                                                         MLD
          QUAL   *                                                       MLD
