*DECK,MLD                                                                MLD
          IDENT  MLD,INIT                                                MLD
          PERIPH                                                         MLD
*CALL,VERS
          COMMENT MAINTENANCE LANGUAGE DRIVER FOR MALET "VERS"
          SST                                                            MLD
          TITLE   MAINTENANCE LANGUAGE DRIVER FOR MALET.                 MLD
*CALL,CPYCOM                                                             MLD
          EJECT                                                          MLD
**        MAINTENANCE LANGUAGE DRIVER.                                   MLD
*                                                                        MLD
*         J. E. SIPPER   77/03/04.                                       MLD
*         G. L. GOLDEN   77/03/04.                                       MLD
*         P. V. EVANS    77/03/04.                                       MLD
*         D. L. SIEMERS  77/03/04.                                       MLD
*         R. E. HARDY    77/03/04.                                       MLD
*                                                                        MLD
*         THE MLD PPU IS A SLAVE TO *MALET*, THE CDC  CONCURRENT  MAIN-  MLD
*         TENANCE EXECUTIVE.                                             MLD
*                                                                        MLD
*                              PPU STRUCTURE-                            MLD
*              0 ----------------------------------------------          MLD
*                I    SCRATCH CELLS                           I          MLD
*             17 I--------------------------------------------I          MLD
*             20 I    PREDEFINED CELLS USED BY MLD            I          MLD
*             54 I--------------------------------------------I          MLD
*             55 I    SYSTEM CELLS                            I          MLD
*             56 I--------------------------------------------I          MLD
*             57 I    PRODUCT OVERLAY CELLS                   I          MLD
*             67 I--------------------------------------------I          MLD
*             70 I                                            I          MLD
*                I    SYSTEM PPU RESIDENT ROUTINES            I          MLD
*                I                                            I          MLD
*           1077 I--------------------------------------------I          MLD
*           1100 I                       I                    I          MLD
*                I    INSTRUCTION STACK  I INITILIZATION      I          MLD
*                I                       I  OVERLAY           I          MLD
*           2277 I--------------------------------------------I          MLD
*           2300 I                                            I          MLD
*                I    BASIC DRIVER                            I          MLD
*                I                                            I          MLD
*           4477 I--------------------------------------------I          MLD
*           4500 I                                            I          MLD
*                I    PRODUCT OVERLAY                         I          MLD
*                I                                            I          MLD
*           6477 I--------------------------------------------I          MLD
*           6500 I                       I                    I          MLD
*                I    INPUT BUFFER       I                    I          MLD
*                I                       I                    I          MLD
*           7177 I-----------------------I       PRODUCT      I          MLD
*           7200 I                       I                    I          MLD
*                I    OUTPUT BUFFER      I       OVERLAY      I          MLD
*                I                       I                    I          MLD
*           7677 I-----------------------I    INITIALIZATION  I          MLD
*           7700 I                       I                    I          MLD
*                I    STATUS BUFFER      I                    I          MLD
*                I                       I                    I          MLD
*           7777 ----------------------------------------------          MLD
*                                                                        MLD
          EJECT                                                          MLD
**        CALLING SEQUENCE-                                              MLD
*                                                                        MLD
*                AUTO-RECALL WILL BE USED BY THE CPU TO CALL MLD WITH A  MLD
*                DUMMY FET.                                              MLD
*                                                                        MLD
*                       ----------------------------                     MLD
*                       I                          I                     MLD
*                RA+1   I XXXX XXY0 0000 0000 ZZZZ I                     MLD
*                       ----------------------------                     MLD
*                                                                        MLD
*                          XXXXXX = MLD IN DISPLAY CODE.                 MLD
*                          Y = AUTO RECALL BIT.                          MLD
*                          ZZZZ = DUMMY FET ADDRESS.                     MLD
*                                                                        MLD
*                       ----------------------------                     MLD
*                       I                          I                     MLD
*                   Z   I 0000 0000 AAAA 0000 BBBB I                     MLD
*                       ----------------------------                     MLD
*                                                                        MLD
*                        AAAA = FWA  OF  THE COMMUNICATIONS BLOCK IN CM  MLD
*                               (POINTS TO SECURE).                      MLD
*                        BBBB = 0002 (BIT 0 IS THE COMPLETE BIT).        MLD
*                                                                        MLD
*                THE PPU WILL READ THE DUMMY FET WORD (ZZZZ) AND VERIFY  MLD
*                THAT BYTE BBBB IS EQUAL TO 0002.   IF  NOT,  AN  ABORT  MLD
*                SEQUENCE,  DESCRIBED  LATER,  IS ENTERED. THE PPU WILL  MLD
*                SAVE AAAA AND WILL READ THE  FIRST  CM  WORD  AT  THAT  MLD
*                ADDRESS (SECURE).                                       MLD
*                                                                        MLD
*                       ----------------------------                     MLD
*                       I                          I                     MLD
*                SECURE I NNNN NNNN NNNN NNNN NNNN I                     MLD
*                       ----------------------------                     MLD
*                                                                        MLD
*                       NN-NN = XXXXXXXXXX IN DISPLAY CODE.              MLD
*                                                                        MLD
*                IF THE FORMAT OF THE SECURITY WORD IS NOT CORRECT, THE  MLD
*                PPU ENTERS THE ABORT SEQUENCE.                          MLD
*                                                                        MLD
*                THE  PPU  THEN  READS  THE  INPUT REGISTER IN THE COM-  MLD
*                MUNICATIONS BLOCK AND VERIFIES THAT  BYTE  0  CONTAINS  MLD
*                EITHER A START OR RESUME COMMAND (DESCRIBED LATER). IF  MLD
*                NOT,THE ABORT SEQUENCE IS ENTERED.                      MLD
*                                                                        MLD
          EJECT                                                          MLD
**        COMMUNICATIONS-                                                MLD
*                                                       NUMBER           MLD
*                      *COMMUNICATION BLOCK*              OF             MLD
*                                                        WORDS           MLD
*                                                                        MLD
*                -----------------------------------------------         MLD
*                I                                       I     I         MLD
*                I    SECURITY WORD                      I   1 I         MLD
*                I---------------------------------------------I         MLD
*                I                                       I     I         MLD
*                I    INPUT REGISTER                     I   1 I         MLD
*                I---------------------------------------------I         MLD
*                I                                       I     I         MLD
*                I    OUTPUT REGISTER                    I   1 I         MLD
*                I---------------------------------------------I         MLD
*                I                                       I     I         MLD
*                I    MESSAGE BUFFER                     I   5 I         MLD
*                I---------------------------------------------I         MLD
*                I                                       I     I         MLD
*                I    PPU DISPLAY BUFFER                 I 164 I
*                I---------------------------------------------I         MLD
*                I                                       I     I         MLD
*                I    PPU PLOT BUFFER                    I  40 I         MLD
*                I---------------------------------------------I         MLD
*                I                                       I     I         MLD
*                I    PPU CHECKPOINT BUFFER              I 975 I
*                I---------------------------------------------I         MLD
*                I                                       I     I         MLD
*                I    SCRATCH FILE WORKING BUFFER        I  70 I
*                I---------------------------------------------I         MLD
*                I                                       I     I         MLD
*                I    MODULE BUFFER                      I1453 I
*                I---------------------------------------------I         MLD
*                I                                       I     I         MLD
*                I    PRODUCT OVERLAY ERROR MESSAGE BFR. I 120 I         MLD
*                I---------------------------------------------I         MLD
*                I                                       I     I         MLD
*                I    STANDBY PPU COMMUNICATIONS         I   2 I         MLD
*                -----------------------------------------------         MLD
*                                                                        MLD
                                                                         MLD
 L.SEC    EQU    1                                                       MLD
 L.IR     EQU    1                                                       MLD
 L.OR     EQU    1                                                       MLD
 L.MB     EQU    5                                                       MLD
 L.DB     EQU    164         L.DB = DB + WDB
 L.PB     EQU    40                                                      MLD
 L.CB     EQU    975         L.CB INCREASED FOR 16-BIT WLD
 L.SFB    EQU    70          L.SFB INCREASED FOR NEW 77 TABLES FOR DEMOT
 L.MOD    EQU    1453        L.MOD INCREASED FOR 16-BIT MALET 
 L.POMB   EQU    120                                                     MLD
 L.SBPIR  EQU    1                                                       MLD
 L.SBPOR  EQU    1                                                       MLD
 VERS     EQU    2           VERSION NUMBER 
          EJECT                                                          MLD
**        THE  VERS  EQUATE  ABOVE CHANGES THE VERSION NUMBER FOR ALL 
*         THE PRODUCT  OVERLAYS FOR MLD. THIS  MAKES THE  CHANGING OF 
*         THE VERSION NUMBER MUCH SIMPLER.  THE VERSION NUMBER SHOULD 
*         BE CHANGED WHENEVER A COMPILER/PRODUCT OVERLAY CHANGE COULD 
*         CAUSE A SYSTEM CRASH  OR  FALSE ERRORS IF THE BINARY IS NOT 
*         REASSEMBLED AT THE SAME TIME A NEW MALET AND PRODUCT  OVER- 
*         LAYS ARE INSTALLED. CHANGES MUST ALSO GO INTO DECK MALET ON 
*         CML AT THE TAG NAME VERSION AND DECK SBP ON REL2B AND  PL5A 
*         AT THE TAG NAME VERSION.
* 
* 
*                            -NOTE- 
* 
*         THE FOLLOWING  STATEMENT  SHOULD BE UPDATED EACH TIME THE 
*         VERSION NUMBER IS CHANGED TO REFLECT THE CML LEVEL AT THE 
*         TIME OF CHANGE. 
* 
*         VERSION NUMBER 2 IS EQUAL TO CML LEVEL 142. 
* 
* 
* 
********************************************************************* 
* 
*         DEFINES-
* 
*         THE DEFINES FOR ALL THE PRODUCT OVERLAYS  ARE PERMANENTLY 
*         INSTALLED ON THE  OLDPL.  THE  DEFINES CAN BE OBTAINED BY 
*         USING THE FOLLOWING UPDATE COMMAND AND PRINTING LFN.
* 
*         UPDATE,Q,O=LFN. 
* 
*         TO DELETE OR MODIFY THE DEFINES OBTAIN THE UPDATE OUTPUT. 
*         DELETE THE LINE  NUMBER  INDICATED  AND INSERT THE PROPER 
*         DEFINES  FOR  THE  PRODUCT  OVERLAYS  DESIRED.
* 
********************************************************************* 
          EJECT 
**        ENTRY- MLD  IS CALLED BY THE CPU PROGRAM DURING A MAINTENANCE  MLD
*                ACTION.   MLD  EXAMINES  THE  INPUT  REGISTER  IN  THE  MLD
*                COMMUNICATION BLOCK.                                    MLD
*                                                                        MLD
*                THE INPUT REGISTER WILL CONTAIN THE FOLLOWING_          MLD
*                                                                        MLD
*                 ----------------------------                           MLD
*                 I                          I                           MLD
*                 I FFFF LLLL PPPP AAAA SSSS I                           MLD
*                 ----------------------------                           MLD
*                                                                        MLD
*                WHERE F = 0001  FOR A START MLD REQUEST.                MLD
*                          0002  FOR A RESUME MLD REQUEST.               MLD
*                                                                        MLD
*                LLLL  =  IF = 0  THE   MODULE   BINARY  HAS  NOT  BEEN  MLD
*                                 CHANGED SINCE THE LAST TIME  THE  PPU  MLD
*                                 DRIVER WAS UP.                         MLD
*                         IF = 1  A SECONDARY MODULE HAS BEEN LOADED     MLD
*                         IF = 2  A PRIMARY MODULE HAS BEEN LOADED       MLD
*                                                                        MLD
*                PPPP  =  LINE NUMBER IF RETURNING TO A MODULE THAT      MLD
*                         EXECUTED A *CALL* COMMAND                      MLD
*                                                                        MLD
*                AAAA  =  STACK ADDRESS IF RETURNING TO A MODULE THAT    MLD
*                         EXECUTED A *CALL* COMMAND.  ZERO OTHERWISE.    MLD
*                                                                        MLD
*                SSSS  =  SWITCHES FROM THE CPU.                         MLD
*                                                                        MLD
*                                                                        MLD
 SEF      EQU    1           STOP-ON-ERROR FLAG                          MLD
 RMF      EQU    2           REPEAT-MODULE FLAG                          MLD
 RCF      EQU    4           REPEAT-CONDITION FLAG                       MLD
 SL       EQU    10B         SCOPING LOOP FLAG                           MLD
 DF       EQU    20B         DROP FLAG                                   MLD
 CF       EQU    40B         CHECKPOINT FLAG                             MLD
 PLF      EQU    100B        PRINT LOG ACTIVE FLAG                       MLD
 DFF      EQU    200B        DAYFILE LOG ACTIVE FLAG                     MLD
 KLF      EQU    400B        SYSTEM K/L DISPLAY ACTIVE FLAG              MLD
 SBF      EQU    1000B       STANDBY PPU OPTION ACTIVE FLAG              MLD
 RTF      EQU    2000B       REPEAT TEST FLAG                            MLD
 TM       EQU    4000B       TERMINAL MODE FLAG                          MLD
          EJECT                                                          MLD
**        MESSAGE BUFFER FORMAT ON *START* AND *RESUME* REQUESTS         MLD
*                                                                        MLD
*                ------------------------------------------------------  MLD
*                I   DC   I AC  CEVALI  CONNECT I I/0  I   OVL NAME   I 
*                I        ICODE   AL I   CODE   I CHAN I              I 
*                I--------+----------+----------+----------+----------I  MLD
*             +1 I        I          I          I          I          I  MLD
*                I  P0    I  P1      I   P2     I   P3     I   P4     I  MLD
*                I--------+----------+----------+----------+----------I  MLD
*             +2 I        I          I          I          I          I  MLD
*                I  P5    I  P6      I   P7     I   P8     I   P9     I  MLD
*                I--------+----------+----------+----------+----------I  MLD
*                I  AC  S IBFZ TCU P I P8 P7 P6 I P5 P4 P3 I P2 P1 P0 I 
*                I CODE H I        9 I          I    SN    I    SN    I 
*                ------------------------------------------------------  MLD
*                                                                        MLD
*         MODULE HEADER FORMAT ON *START* AND *RESUME* REQUESTS          MLD
*                                                                        MLD
*                -----------------------------------------------------I  MLD
*                I                              I          I  DEVICE  I  MLD
*            0   I    MODULE  NAME              I RESERVED I   TYPE   I  MLD
*                I------------------------------+----------+----------I  MLD
*                I         I         I          I          I          I  MLD
*           +1   I  DC 0   I   DC 1  I  DC 2    I  DC 3    I  DC 4    I  MLD
*                I---------+---------+----------+----------+----------I  MLD
*                I         I         I          I          I          I  MLD
*           +2   I  DC 5   I   DC 6  I  DC 7    I  DC 8    I  DC 9    I  MLD
*                I---------+---------+----------+----------+----------I  MLD
*                IL        I         I          I          I          I  MLD
*                IO        I  FORMAT I SOURCE   I SOURCE   I MODULE   I  MLD
*           +3   IC VERSIONI  BLOCK  I BLOCK    I BLOCK    I LENGTH   I  MLD
*                IK        I  LENGTH I LENGTH   I FWA      I          I  MLD
*                I---------+---------+----------+----------+----------I  MLD
*                I  CODE   I  CODE   I DATA     I DATA     I OBFWA    I  MLD
*           +4   I  BLOCK  I  BLOCK  I BLOCK    I BLOCK    I FOR      I  MLD
*                I  LENGTH I  FWA    I LENGTH   I FWA      I DATA     I  MLD
*                I---------+---------+----------+----------+----------I  MLD
*                I  ENTRY  I ENTRY   I          I          I          I  MLD
*           +5   I  LINE   I PPU     I RESERVED I RESERVED I RESERVED I  MLD
*                I  NUMBER I ADDRESS I          I          I          I  MLD
*                I----------------------------------------------------I  MLD
*           +6   I                                                    I  MLD
*                I                     RESERVED                       I  MLD
*                ------------------------------------------------------  MLD
*                                                                        MLD
          EJECT                                                          MLD
**        START REQUEST-                                                 MLD
*                                                                        MLD
*                THE PPU INITIALIZATION OVERLAY WILL LOAD THE OPERATING  MLD
*                REGISTERS  INTO  THE  DIRECT  CELLS  FROM  THE MESSAGE  MLD
*                BUFFER.  ALSO, THE INSTRUCTION STACK WILL  BE  LOADED,  MLD
*                AND  THE  PARTICULAR PRODUCT OVERLAY THAT IS REQUESTED  MLD
*                (MAY NOT BE NECESSARY). ALL CHANNEL  INSTRUCTIONS  ARE  MLD
*                MODIFIED,  AND  THE  OUTPUT  BUFFER IS PRESET WITH ITS  MLD
*                DATA BUFFER IF REQUIRED.                                MLD
*                                                                        MLD
*                THE PPU DRIVER WILL THEN SAVE THE  SWITCHES  FROM  THE  MLD
*                INPUT  REGISTER,  AND  ZERO OUT BYTE 0 TO TELL THE CPU  MLD
*                EXEC THAT THE START REQUEST WAS ACCEPTED.  IT SETS THE  MLD
*                BBBB  BYTE  TO 0003 (SETS BIT 0) IN THE DUMMY FET, AND  MLD
*                REQUESTS THE CPU FROM THE OPERATING SYSTEM IF  REQUIR-  MLD
*                ED.                                                     MLD
*                                                                        MLD
*                EXECUTION  THEN  BEGINS  FROM THE ADDRESS IN THE STACK  MLD
*                SPECIFIED BY THE P REGISTER IN THE DIRECT CELLS.        MLD
*                                                                        MLD
*                                                                        MLD
*         RESUME REQUEST-                                                MLD
*                                                                        MLD
*                THE RESUME REQUEST INITIALIZES AND LOADS IN A  SIMILAR  MLD
*                FASHION  TO THE START REQUEST.  HOWEVER, THE OPERATING  MLD
*                REGISTERS (DIRECT CELLS), DRIVER, AND PRODUCT  OVERLAY  MLD
*                ARE LOADED FROM THE CHECKPOINT AREAS IN THE COMMUNICA-  MLD
*                TION TABLE.                                             MLD
*                                                                        MLD
*         SYSTEM EQUATES.                                                MLD
                                                                         MLD
*CALL,ASSYTAG                                                            MLD
          IFEQ   NOS,1                                                   MLD
 P.ZERO   EQU    ZERL                                                    MLD
 D.Z0     EQU    0                                                       MLD
 D.Z1     EQU    1                                                       MLD
 D.Z2     EQU    2                                                       MLD
 D.Z3     EQU    3                                                       MLD
 D.Z4     EQU    4                                                       MLD
 D.Z5     EQU    5                                                       MLD
 D.Z6     EQU    6                                                       MLD
 D.Z7     EQU    7                                                       MLD
 D.T0     EQU    10B                                                     MLD
 D.T1     EQU    11B                                                     MLD
 D.T2     EQU    12B                                                     MLD
 D.T3     EQU    13B                                                     MLD
 D.T4     EQU    14B                                                     MLD
 D.T5     EQU    15B                                                     MLD
 D.T6     EQU    16B                                                     MLD
 D.T7     EQU    17B                                                     MLD
                                                                         MLD
 D.RA     EQU    RA                                                      MLD
 D.FL     EQU    FL                                                      MLD
 D.PPTR   EQU    TR 
 D.CPAD   EQU    CP                                                      MLD
 D.PPIR   EQU    IA                                                      MLD
 D.PPOR   EQU    OA                                                      MLD
 D.PPMSG  EQU    MA                                                      MLD
 D.PPIRB  EQU    IR                                                      MLD
 D.PPONE  EQU    ON                                                      MLD
 M.DPP    EQU    DPPM                                                    MLD
 M.ABORT  EQU    ABTM        ABORT CONTROL POINT
 M.RCL    EQU    RCLM                                                    MLD
 M.DCP    EQU    DCPM                                                    MLD
 C.PPFWA  EQU    PPFW                                                    MLD
 M.RCP    EQU    RCPM                                                    MLD
 L.CPNUM  EQU    37B                                                     MLD
 W.CPSTAT EQU    STSW                                                    MLD
*                                                                        MLD
 R.IDLE   EQU    PPR                                                     MLD
          XTEXT  COMPMAC
 R.DFM    EQU    DFM                                                     MLD
 R.OVL    EQU    EXR                                                     MLD
 R.MTR    EQU    FTN                                                     MLD
          ENDIF                                                          MLD
          EJECT                                                          MLD
                                                                         MLD
*         OPERATING REGISTERS.                                           MLD
                                                                         MLD
 B0       EQU    20B                                                     MLD
 B1       EQU    21B                                                     MLD
 B2       EQU    22B                                                     MLD
 B3       EQU    23B                                                     MLD
 B4       EQU    24B                                                     MLD
 B5       EQU    25B                                                     MLD
 B6       EQU    26B                                                     MLD
 B7       EQU    27B                                                     MLD
 WC       EQU    30B                                                     MLD
 BA       EQU    31B                                                     MLD
 B8       EQU    32B
 B9       EQU    33B
 B10      EQU    34B
 B11      EQU    35B
 B12      EQU    36B
 B13      EQU    37B
 B14      EQU    40B
 B15      EQU    41B
 XREG     EQU    42B         SCRATCH REGISTER FOR COMPILER CODE 
 YREG     EQU    43B         SCRATCH REGISTER FOR COMPILER CODE 
 WT       EQU    44B                                                     MLD
 LF       EQU    45B                                                     MLD
 P        EQU    46B                                                     MLD
 EC       EQU    47B                                                     MLD
 EA       EQU    50B                                                     MLD
 EM       EQU    51B                                                     MLD
 DC       EQU    52B                                                     MLD
 AL       EQU    53B                                                     MLD
 RT       EQU    54B                                                     MLD
*   D.RA  EQU    55B                                                     MLD
*   D.FL  EQU    56B                                                     MLD
 ES       EQU    57B                                                     MLD
                                                                         MLD
                                                                         MLD
 F.ABT    EQU    1                                                       MLD
 F.BLANK  EQU    2                                                       MLD
 F.DROP   EQU    3           PPU  FUNCTION CODES TO EXEC                 MLD
 F.END    EQU    4                                                       MLD
 F.ERR    EQU    5                                                       MLD
 F.HALT   EQU    6                                                       MLD
 F.LOAD   EQU    7                                                       MLD
 F.PIC    EQU    10B                                                     MLD
 F.SYS    EQU    11B                                                     MLD
 F.TERM   EQU    12B                                                     MLD
 F.MSG    EQU    13B                                                     MLD
 F.ROLL   EQU    14B
                                                                         MLD
 F.EOF    EQU    0           SYS SUBFUNCTIONS                            MLD
 F.POS    EQU    1                                                       MLD
 F.READ   EQU    2                                                       MLD
 F.REW    EQU    3                                                       MLD
 F.WRITE  EQU    4                                                       MLD
                                                                         MLD
 F.START  EQU    1           CPU EXEC FUNCTION CODES TO PPU              MLD
 F.RESUME EQU    2                                                       MLD
          EJECT                                                          MLD
*         MACROS FOR BASIC DRIVER AND ALL PRODUCT OVERLAYS.              MLD
                                                                         MLD
          PURGMAC ACN                                                    MLD
 ACN      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/7400B+X                                              MLD
          ENDM                                                           MLD
          PURGMAC AJM                                                    MLD
                                                                         MLD
 AJM      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/6400B                                                MLD
          VFD    12/X                                                    MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC CHOP                                                   MLD
 CHOP     MACRO                                                          MLD
          LOCAL  A                                                       MLD
 A        SET    *L                                                      MLD
          RMT                                                            MLD
          VFD    12/A                                                    MLD
          RMT                                                            MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC DCN                                                    MLD
 DCN      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/7500B+X                                              MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC EJM                                                    MLD
 EJM      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/6700B                                                MLD
          VFD    12/X                                                    MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC FAN                                                    MLD
 FAN      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/7600B+X                                              MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC FJM                                                    MLD
 FJM      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/6600B                                                MLD
          VFD    12/X                                                    MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC FNC                                                    MLD
 FNC      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/7700B                                                MLD
          VFD    12/X                                                    MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC IAM                                                    MLD
 IAM      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/7100B                                                MLD
          VFD    12/X                                                    MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC IAN                                                    MLD
 IAN      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/7000B+X                                              MLD
          ENDM                                                           MLD
                                                                         MLD
 IANN     MACRO  X                                                       MLD
          VFD    12/7000B+X                                              MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC IJM                                                    MLD
 IJM      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/6500B                                                MLD
          VFD    12/X                                                    MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC OAM                                                    MLD
 OAM      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/7300B                                                MLD
          VFD    12/X                                                    MLD
          ENDM                                                           MLD
                                                                         MLD
          PURGMAC OAN                                                    MLD
 OAN      MACRO  X                                                       MLD
          CHOP                                                           MLD
          VFD    12/7200B+X                                              MLD
          ENDM                                                           MLD
  
          PURGMAC SFM 
 SFM      MACRO  X
          CHOP
          VFD    12/6640B 
          VFD    12/X 
          ENDM
          EJECT                                                          MLD
*                                                                        MLD
          ORG    C.PPFWA                                                 MLD
 STACK    EQU    1100B                                                   MLD
 LSTACK   EQU    1200B                                                   MLD
 LSTACKCM EQU    LSTACK/5                                                MLD
                                                                         MLD
**     STEP 01 - SET CONTROL POINT ADDRESS AND D.PPONE.                  MLD
*                                                                        MLD
 INIT     LDD    D.PPIR      READ SYSTEM IR                              MLD
          CRD    D.PPIRB                                                 MLD
          LDD    D.PPIRB+1   ISOLATE CONTROL POINT NUMBER                MLD
          LPN    L.CPNUM                                                 MLD
          SHN    7           FORM CONTROL POINT ADDRESS                  MLD
          STD    D.CPAD                                                  MLD
          LDN    1                                                       MLD
          STD    D.PPONE                                                 MLD
                                                                         MLD
**     STEP 02 - PAUSE TO SET D.RA AND D.FL.  ABORT IF ERROR FLAGS SET.  MLD
*                                                                        MLD
          IFEQ   NOS,1,1
          PAUSE 
  
          IFEQ   NOSBE,1,1
          RJM    R.RAFL 
          LDD    D.T0+1      TEST ERROR FLAGS                            MLD
          ZJN    INIT0       IF ERROR FLAGS NOT SET                      MLD
          LJM    END2        DROP PPU ERROR FLAGS SET                    MLD
                                                                         MLD
**     STEP 03 - READ THE DUMMY FET POINTED TO BY BYTE 4 OF THE INPUT    MLD
*                REGISTER AND ABORT IF BYTE 4 IS NOT 0002.               MLD
*                                                                        MLD
 INIT0    RJM    CUA
          LDD    D.T0 
          ZJN    INIT0A      IF USER ACCESS OK
          LDC    IUERR
          LJM    ABORT       ABORT WITH MESSAGE ILLEGAL USER ACESS
  
 INIT0A   LDD    D.PPIRB+4
          STM    FET         SAVE DUMMY FET ADDRESS                      MLD
          RJM    ITFL        FIND OUT IF IN RANGE                        MLD
          CRD    D.T0        READ THE FET                                MLD
          LDD    D.T0+4      CHECK FOR BYTE 4 = 0002                     MLD
          SBN    2                                                       MLD
          ZJN    INIT2       OK                                          MLD
 INIT1    LDC    PCERR       INITIALIZATION ERROR EXIT                   MLD
          LJM    ABORT                                                   MLD
                                                                         MLD
**     STEP 04 - USE BYTE 2 OF THE FET TO  GENERATE  ALL  COMMUNICATION  MLD
*                ADDRESSES  BETWEEN THE DRIVER AND THE EXECUTIVE. ABORT  MLD
*                IF THE LAST ADDRESS IS NOT IN FL OR IS GREATER THAN 12  MLD
*                BITS.                                                   MLD
*                                                                        MLD
 INIT2    LDD    D.T0+2      GET ADDRESS OF COMM BLOCK                   MLD
          STM    P.SECURE    POINTER TO SECURITY WORD                    MLD
          ADN    L.SEC                                                   MLD
          STM    P.IR        POINTER TO INPUT REGISTER                   MLD
          ADN    L.IR                                                    MLD
          STM    P.OR        POINTER TO OUTPUT REGISTER                  MLD
          ADN    L.OR                                                    MLD
          STM    P.MB        POINTER TO MESSAGE BUFFER                   MLD
          ADN    L.MB                                                    MLD
          STM    P.DB        POINTER TO DISPLAY BUFFER                   MLD
          ADC    L.DB                                                    MLD
          STM    P.PB        POINTER TO PLOT BUFFER                      MLD
          ADN    L.PB                                                    MLD
          STM    P.CB        POINTER TO CHECKPOINT BUFFER                MLD
          ADC    L.CB-1                                                  MLD
          STM    P.PDS       POINTER TO SUBROUTINE ENTRY POINTS          MLD
          ADN    1                                                       MLD
          STM    P.SFB       POINTER TO SCRATCH FILE BUFFER              MLD
          ADC    L.SFB                                                   MLD
          STM    P.MOD       POINTER TO MODULE BUFFER                    MLD
          ADC    L.MOD                                                   MLD
          STM    P.POMB      POINTER TO PRODUCT OVERLAY MESSAGE BUFFER   MLD
          ADC    L.POMB                                                  MLD
          ADN    L.SBPIR                                                 MLD
          STM    P.SBPOR     POINTER TO SBP OUTPUT REGISTER              MLD
          ADN    L.SBPOR                                                 MLD
          STM    P.LAST      POINTER TO END OF COMM BLOCK + 1            MLD
          SHN    -12                                                     MLD
          ZJN    INIT4       IF LAST ADDRESS IN 12 BIT FIELD             MLD
          LDC    PCERR                                                   MLD
          LJM    ABORT       ABORT IF NOT IN 12 BIT FIELD                MLD
                                                                         MLD
 INIT3    LDC    SERR                                                    MLD
          LJM    ABORT       ABORT IF SECURITY/ ERROR                    MLD
                                                                         MLD
                                                                         MLD
 INIT4    LDM    P.LAST      POINTER TO DS REGISTER 
          RJM    ITFL        VERIFY IT IS IN RANGE
          CRD    D.T0 
          LDD    D.T4        GET DS REGISTER
          STM    DS          SAVE REGISTER CONTENTS 
                                                                         MLD
**     STEP 05 - ABORT IF THE SECURITY WORD AND VERSION NUMBER FROM THE  MLD
*                EXECUTIVE DOES NOT MATCH THE PPU DRIVER.                MLD
*                                                                        MLD
 INIT5    LDC    **                                                      MLD
 P.SECURE EQU    *-1                                                     MLD
          RJM    ITFL                                                    MLD
          CRD    D.T0                                                    MLD
          LDN    D.T0        NOW TEST FOR A SECURITY WORD MATCH          MLD
          STD    D.T5                                                    MLD
 INIT6    LDM    SECURE-D.T0,D.T5                                        MLD
          LMI    D.T5        COMPARE WORDS                               MLD
          NJN    INIT3       NO, ABORT                                   MLD
          AOD    D.T5                                                    MLD
          SBN    D.T0+5                                                  MLD
          NJN    INIT6       NOT FINISHED                                MLD
                                                                         MLD
**     STEP 06 - READ  THE  EXECUTIVE INPUT REGISTER AND SAVE BYTE 4 AS  MLD
*                THE EXECUTIVE SWITCHES.  SAVE BYTE 2 AS THE LOAD  FLAG  MLD
*                THAT INDICATES A NEW MODULE HAS BEEN LOADED, AND ABORT  MLD
*                IF BYTE 0 IS NOT A *START* OR *RESUME* REQUEST.         MLD
*                                                                        MLD
          LDM    P.IR                                                    MLD
          RJM    ITFL                                                    MLD
          CRD    D.T0                                                    MLD
          LDD    D.T4                                                    MLD
          STD    ES          SAVE EXECUTIVE SWITCHES FOR MODULES         MLD
          LDD    D.T1                                                    MLD
          STM    LOAD        SAVE MODULE BINARY CHANGED FLAG             MLD
          LDD    D.T0                                                    MLD
          SBN    F.START     TEST FOR START OR RESUME FUNCTION           MLD
          NJN    INIT6A                                                  MLD
          LJM    INIT8       START REQUEST                               MLD
 INIT6A   SBN    F.RESUME-F.START                                        MLD
          ZJN    INIT7       IF RESUME REQUEST                           MLD
          LDC    IRERR                                                   MLD
          LJM    ABORT       ABORT IF ILLEGAL REQUEST FROM EXECUTIVE     MLD
**                                                                       MLD
*      STEP 07- IF IT IS A RESUME REQUEST, READ THE CHECKPOINTED DRIVER  MLD
*               AND PRODUCT OVERLAY FROM CENTRAL MEMORY, SET THE RESUME  MLD
*               FLAG, AND GO TO STEP 11 TO CONTINUE PROCESSING.          MLD
*                                                                        MLD
 INIT7    LDC    LPPU/5                                                  MLD
          STD    D.Z1        SAVE FIRST WORD COUNT                       MLD
          LDN    50B/5                                                   MLD
          STD    D.Z2        SAVE SECOND WORD COUNT                      MLD
          LDM    P.CB                                                    MLD
          RJM    ITFL                                                    MLD
          CRM    DRIVER,D.Z1 READ DRIVER AND PRODUCT OVERLAY             MLD
          CRM    B0,D.Z2     READ DIRECT CELLS                           MLD
          IFEQ   NOS,1,1
          PAUSE 
  
          IFEQ   NOSBE,1,1
          RJM    R.RAFL 
          LDN    77B                                                     MLD
          STM    RESUME      SET RESUME FLAG FOR USE IN EXIT ROUTINE     MLD
          LDM    P.IR                                                    MLD
          RJM    ITFL                                                    MLD
          CRD    D.T1        RE-READ IR                                  MLD
          LDD    D.T4                                                    MLD
          ZJN    INIT7A      IF NOT RETURNING TO A CALL ENTRY POINT      MLD
          LDN    0                                                       MLD
          STM    RESUME      FAKE A START REQUEST FROM HERE ON OUT       MLD
          LDM    P.PDS       POINTER TO SUBROUTINE TABLE                 MLD
          RJM    ITFL                                                    MLD
          CRM    PDS,D.PPONE   READ PUSH-DOWN STACK                      MLD
          LJM    INIT28A       GO STORE JUMP ADDRESSES                   MLD
                                                                         MLD
 INIT7A   LJM    INIT14      GO VERIFY CORRECT PRODUCT OVERLAY LOADED    MLD
                                                                         MLD
**     STEP 08- CLEAR  THE RESUME FLAG TO INDICATE A *START* REQUEST IS  MLD
*               IN PROGRESS AND SET THE LOAD FLAG  TO  INDICATE  A  NEW  MLD
*               PRIMARY  MODULE  HAS  BEEN  LOADED.  LOAD THE PARAMETER  MLD
*               REGISTERS FROM WORDS 1 AND 2 OF THE  EXECUTIVE  MESSAGE  MLD
*               BUFFER, AND SAVE THE DEVICE CODE, ACCESS LEVEL, CONNECT  MLD
*               CODE, I/O CHANNEL, AND OVERLAY NAME FROM WORD 0 OF  THE  MLD
*               MESSAGE BUFFER.                                          MLD
*                                                                        MLD
 INIT8    LDN    0                                                       MLD
          STM    RESUME      INDICATE A START REQUEST IS IN PROGRESS     MLD
 INIT8A   IANN   14B                                                     MLD
          STD    D.T0                                                    MLD
          IANN   14B                                                     MLD
          SBD    D.T0                                                    MLD
          MJN    INIT8A 
          SBN    2
          MJN    INIT8A2     IF 4X SPEED
          SBN    2
          MJN    INIT8A1     IF 2X SPEED
          LDN    4           PPU IS 1X SPEED
          UJN    INIT8A3
 INIT8A1  LDN    2
          UJN    INIT8A3     PPU IS 2X SPEED
 INIT8A2  LDN    1           PPU IS 4X SPEED
 INIT8A3  STM    SPEED       SET SPEED FLAG 4=1X,2=2X,1=4X
          LDC    TSPEED 
          STD    D.T0                                                    MLD
 INIT8B   LDI    D.T0                                                    MLD
          ZJN    INIT8C      IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1 
          SCN    77B
          ADM    SPEED       MODIFY DELAYS
          STI    D.T1 
          AOD    D.T0                                                    MLD
          UJN    INIT8B      COMPLETE ALL WORDS                          MLD
                                                                         MLD
 INIT8C   LDN    2                                                       MLD
          STM    LOAD        SET PRIMARY MODULE LOADED FLAG              MLD
          LDN    2
          STD    D.Z1        SET WORD COUNT FOR READ
          LDM    P.MB                                                    MLD
          RJM    ITFL                                                    MLD
          CRD    D.T0                                                    MLD
          ADN    1                                                       MLD
          CRM    P0,D.Z1     LOAD PARAMETER REGISTERS P0-P9 
          LDD    D.T0                                                    MLD
          STD    DC          SET DEVICE CODE                             MLD
          LDD    D.T1                                                    MLD
          LPN    77B
          STD    AL          SAVE THE CEVAL ACCESS LEVEL                 MLD
          LDD    D.T2                                                    MLD
          STM    CCODE       SAVE THE CONNECT CODE                       MLD
          LDD    D.T3                                                    MLD
          SHN    -6                                                      MLD
          STM    CHAN        SAVE I/O CHANNEL                            MLD
          STD    D.Z1                                                    MLD
                                                                         MLD
**     STEP 09 - GENERATE INSTRUCTIONS FOR THE  RCHAN  SUBROUTINE  THAT  MLD
*                DETERMINES  IF  OUR  ASSIGNED I/O CHANNEL IS NEEDED BY  MLD
*                THE SYSTEM.                                             MLD
*                                                                        MLD
          IFEQ   NOSBE,1                                                 MLD
          LDN    P.CHRQ                                                  MLD
          STM    RCH2        SET ADDRESS TO READ                         MLD
          LDC    3000B+D.Z4                                              MLD
          STM    RCH3        SET BYTE TO LOAD                            MLD
          LDD    D.Z1                                                    MLD
          SBN    14B                                                     MLD
          MJN    INIT9       IF CHANNEL 0 - 13                           MLD
          AOM    RCH3        SET NEW BYTE TO LOAD                        MLD
 INIT9    LDD    D.Z1        GET CHANNEL                                 MLD
          LPN    17B         MAKE IT IN RANGE OF 0 TO 13B                MLD
          ADC    1007B       FORM SHIFT INSTRUCTION TO CHANNEL BIT       MLD
          STM    RCH4        SET SHIFT FOR OUR CHANNEL REQUEST FLAG      MLD
          ENDIF                                                          MLD
                                                                         MLD
          IFEQ   NOS+NOS4+NOS5,1
          LDC    CHTP        GET ADDRESS OF CHANNEL TABLE 
          CRD    D.T0 
          LDD    D.T2 
          LPN    77B         MASK FOR LDC INST
          RAM    RCH1 
          LDD    D.T3 
          ENDIF 
          IFEQ   NOS+NOS4+NOS5,2,1
          LDC    CTIL                                                    MLD
          IFEQ   NOS,1
          STM    RCH2        STORE ADDRESS TO READ                       MLD
          LDC    3000B+D.Z1                                              MLD
          STM    RCH3        SET BYTE TO LOAD                            MLD
          LDC    1007B                                                   MLD
          STM    RCH4        SET SHIFT FOR CHANNEL REQUEST FLAG          MLD
 INIT9    LDD    D.Z1        GET CHANNEL                                 MLD
          SBN    5                                                       MLD
          MJN    INIT10      IF WORD FOUND                               MLD
          STD    D.Z1                                                    MLD
          AOM    RCH2        BUMP ADDRESS TO READ                        MLD
          UJN    INIT9                                                   MLD
                                                                         MLD
 INIT10   ADN    5                                                       MLD
          STD    D.Z1                                                    MLD
 INIT11   SOD    D.Z1                                                    MLD
          MJN    INIT14      IF BYTE FOUND                               MLD
          AOM    RCH3        BUMP BYTE TO LOAD                           MLD
          UJN    INIT11                                                  MLD
          ENDIF                                                          MLD
                                                                         MLD
**     STEP 10- IF  THE PRODUCT OVERLAY THAT IS CURRENTLY LOADED IS NOT  MLD
*               THE OVERLAY INDICATED AS BEING  REQUIRED  TO  RUN  THIS  MLD
*               MODULE,  LOAD AND INITIALIZE THE REQUIRED OVERLAY.  SET  MLD
*               VALUES FOR THE INPUT BUFFER FWA, OUTPUT BUFFER FWA, AND  MLD
*               CM WORD COUNT FOR THE LENGTH OF THESE BUFFERS.           MLD
*                                                                        MLD
 INIT14   LDM    P.MOD                                                   MLD
          RJM    ITFL                                                    MLD
          CRD    D.T0                                                    MLD
          LDM    TYPE                                                    MLD
          SBD    D.T4                                                    MLD
          NJN    INIT15      IF NEW OVERLAY NEEDED                       MLD
          LJM    INIT20                                                  MLD
                                                                         MLD
 INIT15   LDD    D.T4                                                    MLD
          STM    TYPE                                                    MLD
          LDM    P.MB                                                    MLD
          RJM    ITFL                                                    MLD
          CRD    D.T0                                                    MLD
          ADN    3                                                       MLD
          CRM    SN,D.PPONE  READ SERIAL NUMBER FOR DISK                 MLD
          LDM    SN+1 
          STM    CCODE1      STORE BD.EQ1 FOR MSS 
          LDM    SN 
          LPN    3
          STM    SHARE       SAVE SHARE FLAG
          NJN    INIT15A     IF NOT SHARE 
          LDC    1401B       CODE FOR LDN 1 
          STM    RCH5        MODIFY REQUEST CHANNEL TO RELEASE CHANNEL
 INIT15A  LDD    D.T1 
          SHN    -6 
          SHN    2
          STM    BD.XSYS     SAVE UPPER 8 BITS OF AC FOR LCN DRIVER 
          LDD    D.T3                                                    MLD
          LPN    77B                                                     MLD
          SHN    12                                                      MLD
          ADD    D.T4        FORM OVERLAY NAME                           MLD
                                                                         MLD
          IFEQ   NOSBE,1                                                 MLD
          SHN    12                                                      MLD
          STD    D.T6                                                    MLD
          SHN    -6                                                      MLD
          SCN    77B                                                     MLD
          STD    D.T7                                                    MLD
          LDC    POVLA-5     ADDRESS OF PRODUCT OVERLAY                  MLD
          ENDIF                                                          MLD
                                                                         MLD
          RJM    R.OVL       LOAD OVERLAY                                MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          RJM    POVL        INITIALIZE PRODUCT OVERLAY                  MLD
                                                                         MLD
          STM    INIT30      SET/CLEAR ERROR FLAG                        MLD
          ZJN    INIT16      IF NO OVERLAY INITIALIZATION ERRORS         MLD
          RJM    R.DFM       ISSUE REQUESTED DAYFILE MESSAGE             MLD
          LDN    F.TERM                                                  MLD
          STD    D.T0                                                    MLD
          LDM    P.OR                                                    MLD
          RJM    ITFL                                                    MLD
          CWD    D.T0        SEND TERM FUNCTION TO THE EXECUTIVE         MLD
          LJM    INIT29      RECALL CPU AND DROP PPU                     MLD
                                                                         MLD
 INIT16   LDM    OBFWA                                                   MLD
          STM    SYS3        SET OB FWA FOR SYS COMMANDS                 MLD
          LDM    IBFWA                                                   MLD
          STM    SYS4        SET IB FWA FOR SYS COMMANDS                 MLD
                                                                         MLD
**     STEP 11 - IF  A  NEW OVERLAY HAS BEEN LOADED OR IF A NEW PRIMARY  MLD
*                MODULE HAS BEEN LOADED, ZERO REGISTERS B0 THRU B9, WT,  MLD
*                LF,  P, EC, EA, EM, AND ZERO DATA BUFFERS (OB,IB) IF A  MLD
*                SECONDARY MODULE HAS  BEEN  LOADED,  GO  TO  STEP  12.  MLD
*                OTHERWISE, GO TO STEP 14.                               MLD
*                                                                        MLD
 INIT20   LDM    P.MOD                                                   MLD
          RJM    ITFL                                                    MLD
          CRD    D.Z1        READ MODULE NAME                            MLD
          ADN    4                                                       MLD
          CRD    D.T0        READ DATA HEADER WORD                       MLD
          LDC    **                                                      MLD
 LOAD     EQU    *-1         NEW BINARY MODULE LOADED FLAG FROM EXEC     MLD
          NJN    INIT21      IF NEW MODULE HAS BEEN LOADED               MLD
          LJM    INIT29      IF A NEW MODULE HAS NOT BEEN LOADED         MLD
                                                                         MLD
 INIT21   LDN    0                                                       MLD
          STM    PDS         CLEAR GOSUB RETURN ADDRESSES                MLD
          STM    PDS+2                                                   MLD
          LDM    LOAD                                                    MLD
          SBN    1                                                       MLD
          ZJN    INIT23      IF A SECONDARY MODULE HAS BEEN LOADED       MLD
          LDD    D.Z3                                                    MLD
          LPN    77B                                                     MLD
          NJN    INIT23      IF NOT A PRIMARY MODULE                     MLD
          LDN    P.ZERO                                                  MLD
          CRD    B0          CLEAR B0 THRU B4                            MLD
          CRD    B3          CLEARS B3,B4,B5,B6,B7
          CRD    BA          CLEARS BA,B8,B9,B10,B11
          CRD    B12         CLEARS B12,B13,B14,B15,XREG
          LDN    0                                                       MLD
          STD    EA                                                      MLD
          STD    EC                                                      MLD
          STD    LF                                                      MLD
          STD    EM          CLEAR  EM                                   MLD
          STD    YREG        CLEAR YREG 
          LDM    IBFWA                                                   MLD
          STD    D.Z1        SET BUFFERS FWA                             MLD
          ADM    IBWL        LENGTH OF IB                                MLD
          ADM    OBWL        LENGTH OF OB                                MLD
          STD    D.Z2        SET BUFFERS LWA                             MLD
 INIT22   LDN    0                                                       MLD
          STI    D.Z1                                                    MLD
          AOD    D.Z1                                                    MLD
          SBD    D.Z2                                                    MLD
          NJN    INIT22      IF ALL WORDS NOT CLEARED                    MLD
                                                                         MLD
**     STEP 12 - LOAD COMPILED DATA FROM THE MODULE BUFFER AS SPECIFIED  MLD
*                BY WORD 4 OF THE MODULE BUFFER.                         MLD
*                                                                        MLD
 INIT23   LDD    D.T2        CHECK WORD COUNT OF DATA                    MLD
          ZJN    INIT26      IF NO DATA TO LOAD                          MLD
          SHN    2                                                       MLD
          ADD    D.T2        MULTIPLY BY 5 TO GET BYTE COUNT             MLD
          STD    D.T5        SAVE BYTE COUNT                             MLD
          LDD    D.T4                                                    MLD
          ADM    OBFWA                                                   MLD
          STM    INIT25      SAVE ADDRESS TO READ TO                     MLD
          ADD    D.T5                                                    MLD
          SBM    OBFWA                                                   MLD
          SBM    OBWL                                                    MLD
          SBN    1                                                       MLD
          MJN    INIT24      IF ADDRESS IS IN RANGE                      MLD
          LDC    MPERR                                                   MLD
          LJM    ABORT       ABORT IF BUFFER INDEX ERROR
                                                                         MLD
 INIT24   LDD    D.T3                                                    MLD
          ADM    P.MOD                                                   MLD
          RJM    ITFL                                                    MLD
          CRM    **,D.T2     READ COMPILED DATA TO OUTPUT BUFFER         MLD
 INIT25   EQU    *-1         BUFFER ADDRESS STORED HERE                  MLD
                                                                         MLD
**     STEP 13- ABORT IF THE VERISON NUMBER OF THE  MODULE  IN  WORD  3  MLD
*               BYTE  0  DOES  NOT  AGREE  WITH  THE VERSION OF THE PPU  MLD
*               DRIVER AND PRODUCT OVERLAY.  SET THE STARTING LINE  AND  MLD
*               STACK  ADDRESS  FROM  WORD  5  OF THE MODULE BUFFER AND  MLD
*               ABORT IF THEY ARE OUT OF LEGAL RANGE.                    MLD
*                                                                        MLD
 INIT26   LDM    P.MOD                                                   MLD
          ADN    3                                                       MLD
          RJM    ITFL                                                    MLD
          CRD    D.Z6        READ VERSION NUMBER OF MODULE COMPILER      MLD
          ADN    2                                                       MLD
          CRD    D.T3        READ LINE/ADDRESS DATA                      MLD
          LDD    D.Z6                                                    MLD
          LPC    3777B       MASK OFF LOCK BIT                           MLD
          STD    D.Z6                                                    MLD
          SBM    VERSION                                                 MLD
          ZJN    INIT28      IF MODULE/DRIVER VERSION MATCH              MLD
 INIT27   LDC    SERR                                                    MLD
          LJM    ABORT       IF NO MATCH
                                                                         MLD
 INIT28   LDD    D.Z6                                                    MLD
          SBM    VER                                                     MLD
          NJN    INIT27      IF MODULE/PRODUCT OVERLAY VERSION ERROR     MLD
 INIT28A  LDD    D.T3                                                    MLD
          STD    P           SET LINE NUMBER                             MLD
          ADC    -120                                                    MLD
          PJN    INIT28B     IF NOT WITHIN RANGE
          LDD    D.T4        GET STARTING ADDRESS WITHIN THE STACK       MLD
          STM    FADDR       SAVE FIRST ADDRESS IN STACK                 MLD
          ADC    -STACK                                                  MLD
          MJN    INIT28B     IF BELOW MINIMUM ADDRESS 
          ADC    -LSTACK                                                 MLD
          MJN    INIT29      IF NOT ABOVE MAXIMUM ADDRESS 
 INIT28B  LJM    INIT31      ELSE ERROR 
                                                                         MLD
**     STEP 14 - SET COMPLETE BIT AND RECALL THE CPU EXECUTIVE. GO LOAD  MLD
*                THE INSTRUCTION STACK OVER THIS CODE.                   MLD
*                                                                        MLD
 INIT29   LDM    FET                                                     MLD
          RJM    ITFL                                                    MLD
          CRD    D.T0        READ DUMMY FET                              MLD
          LDN    3                                                       MLD
          STD    D.T4                                                    MLD
          LDM    FET                                                     MLD
          RJM    ITFL                                                    MLD
          CWD    D.T0        SEND COMPLETE BIT TO EXECUTIVE              MLD
                                                                         MLD
          IFEQ   NOS+NOS4+NOS5,1
          PAUSE 
  
          LDD    D.T2 
          SHN    17 
          MJN    INIT29A     ROLLOUT SET DO NOT RECALL CPU
          LDD    D.T0 
          SHN    -9 
          SBN    6
          NJN    INIT29A     MALET IN * I * STATUS DO NOT RECALL CPU
          ENDIF 
          IFEQ   NOS,1                                                   MLD
          LDN    RCPM                                                    MLD
          RJM    R.MTR       RECALL CPU                                  MLD
          ENDIF                                                          MLD
                                                                         MLD
 INIT29A  LDC    **          *** P.O. INITIALIZATION ERROR FLAG 
 INIT30   EQU    *-1                                                     MLD
          NJN    INIT32      IF INITIALIZATION ERROR - DROP PPU          MLD
          LJM    EXI2        GO LOAD INSTRUCTION STACK OVER THIS CODE    MLD
 INIT31   LDC    MPERR                                                   MLD
          LJM    ABORT       ABORT IF PARAMETER ERROR IN MODULE BUFFER
 INIT32   LJM    END2        DROP PPU                                    MLD
                                                                         MLD
**        NAME - ITFL                                                    MLD
*                                                                        MLD
*         DESCRIPTION - TEST ADDRESS IN THE A REGSITER FOR BEING WITHIN  MLD
*                FIELD LENGTH.                                           MLD
*                                                                        MLD
*         ENTRY- (A) = RELATIVE ADDRESS IN CENTRAL MEMORY                MLD
*                                                                        MLD
*         EXIT - (A) = (A) + D.RA IF IN RANGE                            MLD
*                POST A DAYFILE MESSAGE AND DROP  PPU IF NOT IN RANGE    MLD
*                                                                        MLD
*         USES - D.Z0                                                    MLD
*                                                                        MLD
*         CALLS- END, R.DFM                                              MLD
*                                                                        MLD
 ITFL1    LDD    D.RA                                                    MLD
          SHN    6                                                       MLD
          ADD    D.Z0                                                    MLD
                                                                         MLD
 ITFLX    LJM    **                                                      MLD
 ITFL     EQU    *-1                                                     MLD
          STD    D.Z0                                                    MLD
          SHN    -6                                                      MLD
          SBD    D.FL                                                    MLD
          MJN    ITFL1       IF IN RANGE OF FL                           MLD
          LDC    FLERR       ERROR MESSAGE TO POST                       MLD
 ABORT    RJM    R.DFM       REPORT DAYFILE MESSAGE TO USER              MLD
 ABORT1   LDN    M.ABORT
          RJM    R.MTR       ABORT CONTROL 7OINT
          LJM    R.IDLE      IDLE PP
                                                                         MLD
 SECURE   DATA   8HMALET     SECURITY TEST MATCHES SECURE AND VERSION    MLD
 VERSION  VFD    12/VERS     VERSION NUMBER 
 SN       BSSZ   5           BUFFER FOR DISK PACK SERIAL NUMBER          MLD
 FET      DATA   0                                                       MLD
                                                                         MLD
*         TSPEED - TABLE OF PPU SPEED 1X/2X CONSTANTS TO CHANGE.         MLD
                                                                         MLD
 TSPEED   VFD    12/DLY1                                                 MLD
          VFD    12/DLY5                                                 MLD
          VFD    12/DCH5A 
          VFD    12/0                                                    MLD
                                                                         MLD
 FLERR    DIS    ,*MLD FL ERR*
 PCERR    DIS    ,*MLD PARAM CALL ERR*
 SERR     DIS    ,*MLD VERS ERR*
 IRERR    DIS    ,*MLD ILLEG CPU REQ* 
 MPERR    DIS    ,*MLD MOD HEAD ERR*
 IUERR    DIS    ,*MLD ILLEG USER ACC*
  
  
          IFEQ   NOS,1,6
          BASE   O
 SSJ$     EQU    1
 DIAG$    EQU    1
          XTEXT  COMSSSJ
          XTEXT  COMPCUA
          BASE   *
  
          IFEQ   NOSBE+NOSBE6,1,1 
 OPL1B    XTEXT  COMPCUA
*IF DEF,NOSBE6,1
*CALL COMPCUA 
  
                                                                         MLD
          ERRPL  *-STACK-LSTACK        TEST FOR OVERFLOW INTO DRIVER     MLD
          EJECT                                                          MLD
*         BASIC DRIVER FIXED ENTRY POINTS.                               MLD
          BSS    STACK+LSTACK-*                                          MLD
 DRIVER   EQU    *                                                       MLD
 LDRIVER  EQU    4500B-*                                                 MLD
 LPPU     EQU    10000B-DRIVER                                           MLD
 XAND     LJM    **                                                      MLD
          LJM    AND         LOGICAL PRODUCT SUBROUTINE                  MLD
 XBLANK   LJM    **                                                      MLD
          LJM    BLANK       BLANK FILL PPU DISPLAY AREA SUBROUTINE      MLD
 XCBF     LJM    **                                                      MLD
          LJM    CBF         COMPARE BUFFERS FORWARD                     MLD
 XCOPY    LJM    **                                                      MLD
          LJM    COPY        COPY BUFFER TO BUFFER SUBROUTINE            MLD
 XDELAY   LJM    **                                                      MLD
          LJM    DELAY       DELAY SUBROUTINE                            MLD
 XDUP     LJM    **                                                      MLD
          LJM    DUP         DUPLICATE DATA TO BUFFER SUBROUTINE         MLD
 XEND     LJM    END         END SUBROUTINE                              MLD
 XENDSUB  LJM    **                                                      MLD
          LJM    ENDSUB      ENDSUB SUBROUTINE                           MLD
 XERROR   LJM    **                                                      MLD
          LJM    ERROR       ERROR SUBROUTINE                            MLD
 XEXIT    LJM    **                                                      MLD
          LJM    EXIT        EXIT/CALL SUBROUTINE                        MLD
 XGOSUB   LJM    **                                                      MLD
          LJM    GOSUB       GOSUB SUBROUTINE                            MLD
 XHALT    LJM    **                                                      MLD
          LJM    HALT        HALT/PAUSE SUBROUTINE                       MLD
 XLOG     LJM    **                                                      MLD
          LJM    LOG         LOG ENTRIES INTO ERROR FILE                 MLD
 XLS      LJM    **                                                      MLD
          LJM    LS          LEFT SHIFT SUBROUTINE                       MLD
 XMSG     LJM    **                                                      MLD
          LJM    MSG         MESSAGE TO PPU DISPLAY AREA SUBROUTINE      MLD
 XOR      LJM    **                                                      MLD
          LJM    OR          LOGICAL SUM SUBROUTINE                      MLD
 XPICTUR  LJM    **                                                      MLD
          LJM    PICTURE     PICTURE TAKING SUBROUTINE                   MLD
 XPLOT    LJM    **                                                      MLD
          LJM    PLOT        PLOT SUBROUTINE                             MLD
 XRANDOM  LJM    **                                                      MLD
          LJM    RANDOM      RANDOM DATA GENERATION SUBROUTINE           MLD
 XRETURN  LJM    RETURN      EXIT A SUBROUTINE                           MLD
 XRNI     LJM    RNI         READ NEXT INSTRUCTION SUBROUTINE            MLD
 XRS      LJM    **                                                      MLD
          LJM    RS          RIGHT SHIFT SUBROUTINE                      MLD
 XSYS     LJM    **                                                      MLD
          LJM    SYS         SCRATCH FILE OPERATIONS SUBROUTINE          MLD
 XTESTBI  LJM    **                                                      MLD
          LJM    TESTBI      TEST BUFFER INDEX                           MLD
          SPACE  4,18                                                    MLD
**        REQ - REQUEST CPU ASSISTANCE.                                  MLD
*                                                                        MLD
*         COMMUNICATE  REQUEST  TO  CPU EXECUTIVE AND WAIT FOR IT TO BE  MLD
*         HONORED. FOR ALL REQUESTS EXCEPT *SYS*  WHILE  CHAINING,  THE  MLD
*         PPU IS CHECKPOINTED, THE REQUEST WRITTEN TO THE EXEC, AND THE  MLD
*         PPU IS DROPPED.                                                MLD
*                                                                        MLD
*         ENTRY - (A) = FUNCTION CODE                                    MLD
*                 REQP+1 THRU REQP+4 = FUNCTION PARAMETERS               MLD
*                                                                        MLD
*         EXIT -  TO CALLING ROUTINE IF THE FUNCTION IS  ACCEPTED.  THE  MLD
*                 CONTENTS  OF  REQP+1  THRU  REQP+4  CONTAIN EXECUTIVE  MLD
*                 RESPONSES TO THE REQUESTED FUNCTION (IF ANY)           MLD
*                                                                        MLD
*         USES -  REQP,DCHAN,REQP,ES,P                                   MLD
*                                                                        MLD
*         CALLS- CKP, DCHAN, END, RACM, RELEASE, R.TAFL, TFL             MLD
*                                                                        MLD
 XREQ     LJM    **                                                      MLD
 REQ      EQU    *-1                                                     MLD
          STM    REQP        SAVE FUNCTION CODE                          MLD
          SBN    F.SYS                                                   MLD
          NJN    REQ1        IF NOT *SYS* REQUEST                        MLD
          LDC    **                                                      MLD
 CHAIN    EQU    *-1         CHAINING IN PROGRESS FLAG                   MLD
          NJN    REQ3        IF *SYS* REQUEST AND CHAININIG              MLD
 REQ1     LDM    CHFLG                                                   MLD
          ZJN    REQ2        IF CHANNEL NOT ASSIGNED                     MLD
          LCN    0           SET ABORT ADDRESS TO INDICATE BD REQUEST    MLD
          RJM    RELEASE     RELEASE I/O DEVICE AND I/O CHANNEL          MLD
 REQ2     RJM    RACM        REQUEST ACCESS TO CM AND PAUSE              MLD
          LDC    REQ4                                                    MLD
          STM    DCHAN       STORE RESUME ADDRESS AFTER CHECKPOINT       MLD
          RJM    CKP         CHECKPOINT THE PPU                          MLD
          LDC    **                                                      MLD
 P.OR     EQU    *-1         POINTER TO CPU OUTPUT REGISTER STORED HERE  MLD
          RJM    TFL                                                     MLD
          CWM    REQP,D.PPONE    WRITE REQUEST TO OUTPUT REGISTER        MLD
 REQ2A    LJM    END2        DROP THE PPU 
                                                                         MLD
 REQ3     RJM    RACM        REQUEST ACCESS TO CM AND PAUSE              MLD
          LDC    4000B                                                   MLD
          RAM    REQP        SET FLAG TO EXECUTIVE THAT PPU IS ALIVE     MLD
          LDM    P.OR                                                    MLD
          RJM    TFL                                                     MLD
          CWM    REQP,D.PPONE    WRITE REQUEST TO OUTPUT REGISTER        MLD
                                                                         MLD
 REQ4     RJM    RACM        REQUEST ACCESS TO CM AND PAUSE              MLD
          LDD    D.T0+1                                                  MLD
          ZJN    REQ7        IF NO ERROR FLAGS SET                       MLD
 REQ5     LCN    0           SET ABORT ADDRESS TO INDICATE BD REQUEST    MLD
          RJM    RELEASE     ENTER RELEASE ROUTINE                       MLD
 REQ6     UJN    REQ2A       DROP PPU (SHOULD NOT RETURN FROM DCHAN)
                                                                         MLD
 REQ7     LDM    P.OR                                                    MLD
          RJM    TFL                                                     MLD
          CRM    REQP,D.PPONE   READ CPU RESPONSE TO REQUEST             MLD
          LDM    REQP                                                    MLD
          NJN    REQ4        IF NOT HONORED BY THE EXEC YET              MLD
          LDM    P.LAST 
          RJM    TFL
          CRD    D.Z1 
          LDD    D.Z5 
          STM    DS         SAVE SWITCHS IN ESR REGISTER
          LDM    P.IR                                                    MLD
          RJM    TFL                                                     MLD
          CRD    D.Z1        READ EXECUTIVE INPUT REGISTER               MLD
          LDD    D.Z5                                                    MLD
          STD    ES          SET EXECUTIVE SWITCHES                      MLD
          LPN    DF+CF       DROP FLAG OR CHECKPOINT FLAG 
          ZJN    REQ8        IF NO DROP FLAG
          LPN    CF 
          ZJN    REQ5        DROP FLAG NOT SET
  
          LDM    CHFLG
          NJN    REQ8        CHANNEL ASSIGNED DO NOT SET TIME LIMIT 
  
 REQ7A    LDC    7777B
          STD    RT          SET 4 SEC TIME LIMIT 
 REQ8     EQU    *
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          RJM    R.TAFL      TERMINATE ACCESS TO CM                      MLD
                                                                         MLD
          LJM    XREQ        IF ACCEPTED                                 MLD
          SPACE  4,16                                                    MLD
**        ABT/ERR - PROCESS ERROR/ABORT FUNCTION.                        MLD
*                                                                        MLD
*         STORE SUPPLIED DATA INTO EC/EM/EA REGISTERS                    MLD
*         RELEASE DEVICE AND I/O CHANNEL, AND SEND ABT OR ERR            MLD
*         FUNCTION TO EXECUTIVE.                                         MLD
*                                                                        MLD
*         ENTRY- (A) = ERROR CODE/MESSAGE INDEX                          MLD
*                (P) = CURRENT LINE NUMBER                               MLD
*                                                                        MLD
*         EXIT - EC,EM,EA REGISTERS SET AND EXECUTIVE FUNCTION SENT.     MLD
*                                                                        MLD
*         USES - D.Z1,EA,EM,EC,ABT5,REQP,P.                              MLD
*                                                                        MLD
*         CALLS- DCHAN, EXIT, RELEASE                                    MLD
*                                                                        MLD
 ABT      STD    D.Z1        SAVE ERROR CODE/MESSAGE INDEX               MLD
          LPN    77B                                                     MLD
          ADC    4000B       ADD BIAS                                    MLD
          STD    EC          SET ERROR CODE                              MLD
          LDD    D.Z1                                                    MLD
          SHN    -6                                                      MLD
          ADC    100B                                                    MLD
          STD    EM          SET ERROR MESSAGE INDEX                     MLD
          LDD    P                                                       MLD
          STD    EA          SET ERROR ADDRESS                           MLD
                                                                         MLD
 ABT1     LDN    F.ABT                                                   MLD
          UJN    ABT2                                                    MLD
                                                                         MLD
 ERR      LDN    F.ERR                                                   MLD
 ABT2     STM    ABT4        SAVE FUNCTION CODE                          MLD
          LDD    EM                                                      MLD
          STM    REQP+1      STORE REQUEST PARAMETERS                    MLD
          LDD    EC                                                      MLD
          STM    REQP+2                                                  MLD
          LDD    EA                                                      MLD
          STM    REQP+3                                                  MLD
          LDM    CHFLG                                                   MLD
          ZJN    ABT3        IF I/O CHANNEL IS NOT ASSIGNED              MLD
          LDD    AL 
          SBN    21B
          ZJN    ABT3        NO CLEAN-UP IF ACCESS LEVEL 21 
          LCN    0           SET REJECT ADDRESS TO INDICATE BD REQUEST   MLD
          RJM    RELEASE     RELEASE I/O DEVICE AND CHANNEL              MLD
 ABT3     LDC    **                                                      MLD
 ABT4     EQU    *-1         FUNCTION CODE STORED HERE                   MLD
          RJM    REQ         SEND ERR OR ABT REQUEST TO EXECUTIVE        MLD
          LJM    EXI1        IF RESUME ISSUED, RESTART MODULE            MLD
          SPACE  4,11                                                    MLD
**        AND - PERFORM .AND. OPERATION.                                 MLD
*                                                                        MLD
*         PERFORM .AND. OPERATION.                                       MLD
*                                                                        MLD
*         ENTRY- D.T0 = OPERAND 1.                                       MLD
*                (A)  = OPERAND 2.                                       MLD
*                                                                        MLD
*         EXIT - (A)  = LOCICAL PRODUCT OF OP1 AND OP2.                  MLD
*                                                                        MLD
*         USES - AND1.                                                   MLD
*                                                                        MLD
 AND      STM    AND1        PUT OPERAND INTO LPC INSTR                  MLD
          LDD    D.T0        READ SECOND OPERAND                         MLD
          LPC    **                                                      MLD
 AND1     EQU    *-1                                                     MLD
          LJM    XAND        EXIT TO STACK                               MLD
          SPACE  4,18                                                    MLD
**        BLANK - REQUEST CPU TO BLANK PB/DB.                            MLD
*                                                                        MLD
*         REQUEST EXECUTIVE TO ZERO FILL THE PLOT BUFFER,                MLD
*         DISPLAY BUFFER, OR BOTH.                                       MLD
*                                                                        MLD
*         ENTRY -(A) = BLANK OPTION CODE                                 MLD
*                                                                        MLD
*         EXIT - PPU DISPLAY/PLOT BUFFER IN CENTRAL MEMORY IS ZERO       MLD
*                FILLED                                                  MLD
*                                                                        MLD
*         USES - REQP,P.                                                 MLD
*                                                                        MLD
*         CALLS- REQ                                                     MLD
*                                                                        MLD
 BLANK    STM    REQP+4      SAVE BLANK OPTION IN REQUEST BUFFER         MLD
          LDN    F.BLANK                                                 MLD
          RJM    REQ         REQUEST CPU EXEC TO BLANK                   MLD
          LJM    XBLANK      EXIT TO STACK                               MLD
          SPACE  4,18                                                    MLD
**        CBF - COMPARE BUFFERS.                                         MLD
*                                                                        MLD
*         EXECUTE THE FOLLOWING COMMAND WHICH COMPARES TWO BUFFER AREAS  MLD
*         TO EACH OTHER.                                                 MLD
*                                                                        MLD
*         COMPARE W TO X FOR Y, ABT Z                                    MLD
*                                                                        MLD
*         ENTRY- D.T0 = W.                                               MLD
*                D.T1 = X.                                               MLD
*                D.T2 = Y.                                               MLD
*                (A)  = Z.                                               MLD
*                                                                        MLD
*         EXIT - TO P+1 IF NO COMPARE ERROR.                             MLD
*                TO Z ON THE FIRST NON-COMPARE (Y) SET TO WD IN ERROR.   MLD
*                                                                        MLD
*         USES - D.T0, D.T1, D.T2, D.T3, D.T6, D.T7,P.                   MLD
*                                                                        MLD
*         CALLS- RNI.                                                    MLD
*                                                                        MLD
 CBF      STD    D.T6        SAVE ABT ADDRESS                            MLD
          SHN    -11                                                     MLD
          STD    D.T7                                                    MLD
          LDI    D.T2                                                    MLD
          ZJN    CBF2        IF NO WORDS TO COMPARE                      MLD
          STD    D.T3        STORE NUMBER OF WORDS TO COMPARE            MLD
 CBF1     LDI    D.T0                                                    MLD
          LMI    D.T1                                                    MLD
          NJN    CBF3        IF NO COMPARE                               MLD
          AOD    D.T0                                                    MLD
          AOD    D.T1                                                    MLD
          SOD    D.T3                                                    MLD
          NJN    CBF1        IF ALL WORDS NOT DONE                       MLD
 CBF2     LJM    XCBF 
                                                                         MLD
 CBF3     LDI    D.T2                                                    MLD
          SBD    D.T3                                                    MLD
          STI    D.T2        STORE POINT OF FAILURE IN REGISTER Y        MLD
          LDD    D.T7                                                    MLD
          LJM    RNI1        JUMP TO Z VIA RNI                           MLD
          SPACE  4,18                                                    MLD
**        COPY - COPY ONE BUFER AREA TO ANOTHER.                         MLD
*                                                                        MLD
*         COPY  ONE  BUFFER  AREA TO ANOTHER BY EXECUTING THE FOLLOWING  MLD
*         COMMAND.                                                       MLD
*                                                                        MLD
*         COPY X TO Y FOR Z                                              MLD
*                                                                        MLD
*         ENTRY- D.T2 = SOURCE BUFFER FIRST WORD ADDRESS.                MLD
*                D.T0 = DESTINATION BUFFER FIRST WORD ADDRESS.           MLD
*                (A)  = NUMBER OF WORDS TO COPY.                         MLD
*                                                                        MLD
*         EXIT - ABORT IF AN ATTEMPT IS MADE TO STORE OUT                MLD
*                OF RANGE OF THE DESTINATION BUFFER.                     MLD
*                ELSE, P+1 AND EXIT.                                     MLD
*                                                                        MLD
*         USES - D.T0, D.T1, D.T2,P.                                     MLD
*                                                                        MLD
*         CALLS- ABT, TESTBR.                                            MLD
*                                                                        MLD
 COPY     STD    D.T1        SAVE NUMBER OF WORDS                        MLD
          ZJN    CPY2        IF NO WORDS TO COPY                         MLD
          RJM    TESTBR      VERIFY BUFFER REFERENCES ARE IN RANGE       MLD
 CPY1     LDI    D.T2                                                    MLD
          STI    D.T0        MOVE ONE WORD                               MLD
          AOD    D.T2        BUMP SOURCE POINTER                         MLD
          AOD    D.T0        BUMP DESTINATION POINTER                    MLD
          SOD    D.T1        DECREMENT WORDS TO DO                       MLD
          NJN    CPY1        IF NOT DONE                                 MLD
 CPY2     LJM    XCOPY       EXIT TO STACK
          SPACE  4,20                                                    MLD
**        DELAY - PROCESS DELAY COMMAND.                                 MLD
*                                                                        MLD
*         DELAY EXECUTION BY THE NUMBER OF MILLISECONDS OR MICROSECONDS  MLD
*         SPECIFIED BY THE FOLLOWING COMMAND.                            MLD
*                                                                        MLD
*         DELAY X USEC       DELAY X MSEC                                MLD
*                                                                        MLD
*         ENTRY -(A)  = USEC OR MSEC DELAY FLAG IN BIT 17,               MLD
*                       AND DELAY COUNT IN BITS 0 - 11                   MLD
*                       ( MSEC DELAY IF BIT 17 IS ZERO )                 MLD
*                                                                        MLD
*         EXIT-  DELAY HAS BEEN EXECUTED                                 MLD
*                                                                        MLD
*         USES-  RT, D.Z1                                                MLD
*                                                                        MLD
*         CALLS- DCHAN, RNI                                              MLD
*                                                                        MLD
 DELAY    PJN    DLY3        IF MILLISECOND DELAY REQUEST                MLD
          LPC    7777B       MASK MICROSECOND DELAY 
          SHN    1
 DLY1     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    DLY1 
 DLY2     LJM    XDELAY      EXIT TO STACK
  
 DLY3     ZJN    DLY2        IF NO TIME TO DELAY
          STD    D.T5 
 DLY4     LDC    1988 
 DLY5     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    DLY5 
          AOD    RT 
          ADC    -7777B 
          PJN    DLY8        IF 4 SECONDS PASSED
 DLY6     EQU    *                                                       MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
          LDD    RT                                                      MLD
          LPC    377B                                                    MLD
          NJN    DLY7        IF 256 MSEC HAS NOT PASSED                  MLD
          PAUSE  ST          PAUSE WITHOUT STATUS 
          ENDIF                                                          MLD
                                                                         MLD
 DLY7     SOD    D.T5        DECREMENT DELAY TIME 
          NJN    DLY4        IF DELAY TIME IS NOT UP                     MLD
          UJN    DLY2                                                    MLD
                                                                         MLD
 DLY8     LDM    CHFLG                                                   MLD
          NJN    DLY9        IF CHANNEL IS ASSIGNED - ERROR              MLD
          RJM    DCHAN       COMMUNICATE WITH THE SYSTEM                 MLD
          UJN    DLY6                                                    MLD
                                                                         MLD
 DLY9     LJM    RNI5        2 SECOND DELAY SINCE SYSTEM COMM ERROR      MLD
          SPACE  4,24                                                    MLD
**        DUP - DUPLICATE PATTERNS COMMAND PROCESSOR.                    MLD
*                                                                        MLD
*         DUPLICATE V BITS OF WORDS W/X TO Y FOR Z TIMES. 
* 
*         ENTRY- D.T0 = BUFFER ADDRESS                  -Y- 
*                D.T2 = BYTE WIDTH (6,8 OR 12)          -V- 
*                D.T3 = FIRST DATA WORD                 -W- 
*                D.T4 = SECOND DATA WORD                -X- 
*                (A)  = NUMBER OF WORDS TO STORE        -Z- 
* 
*         EXIT - TO ABT IF BUFFER INDEX OR WC ERROR OR IF ILLEGAL 
*                BYTE SIZE SPECIFIED (V). 
* 
*         USES - D.Z1 - D.T7
* 
*         CALLS- TESTBR 
* 
* 
 DUP      STD    D.T1        SAVE WORDS TO DO 
          ZJN    DUP5        IF NO WOERDS TO DO 
          RJM    TESTBR      VERIFY BUFFER ADDRESS AND WORD COUNT 
          LDD    D.T2        V BITS 
          SBN    12 
          ZJN    DUP1        IF 12 BIT STORES 
          ADN    6
          ZJN    DUP6        IF 6 BIT STORES
          SBN    2
          ZJN    DUP8        IF 8 BIT STORES
          LJM    TST1        ABORT - ILLEGAL BIT SIZE 
  
*         BUILD 4 12-BIT WORDS TO STORE IN D.T3-D.T7
  
 DUP1     LDD    D.T3 
          STD    D.T5 
          LDD    D.T4 
          STD    D.T6 
  
*         STORE DATA INTO SELECTED BUFFER 
  
 DUP2     LDN    D.T3 
          STD    D.T2        SET POINTER TO DATA
 DUP3     LDI    D.T2        GET A DATA WORD
          STI    D.T0        STORE IT INTO BUFFER 
          AOD    D.T0        BUMP BUFFER INDEX
          SOD    D.T1        DECREMENT WORDS TO DO
          ZJN    DUP5        IF ALL WORDS STORED
          AOD    D.T2        BUMP POINTER TO DATA 
          SBN    D.T7 
          NJN    DUP3        IF ALL 4 WORDS NOT USED YET
 DUP4     UJN    DUP2        RESET POINTER TO THE TOP 
  
*         BUMP THE P REGISTER AND EXIT
  
 DUP5     LJM    XDUP        EXIT TO STACK
  
*         6 BIT STORES SELECTED.  BUILD 2 WORDS 
  
 DUP6     LDD    D.T3 
          SHN    6
          STD    D.T3 
          LDD    D.T4 
          LPN    77B
          RAD    D.T3 
          STD    D.T4 
          UJN    DUP1        EXPAND 2 WORD TO 4 AND STORE 
  
*         8 BIT STORES SELECTED.  BUILD 4 WORDS 
  
 DUP8     LDD    D.T4 
          LPC    377B        MASK 8 BITS OF 2ND BYTE
          STD    D.Z2        SAVE 2ND BYTE
          LDD    D.T3 
          LPC    377B        MASK 8 BITY OF 1ST BYTE
          STD    D.Z1        SAVE 1ST BYTE
          SHN    8
          LMD    D.Z2        FORM A/B 
          STD    D.T6        STORE WORD 4 - AL/B
          SHN    -4 
          STD    D.T3        STORE WORD 1 - A/BU
          LDD    D.Z2 
          SHN    8
          LMD    D.Z1        FORM B/A 
          STD    D.T4        STORE WORD 2 - BL/A
          SHN    -4 
          STD    D.T5        STORE WORD 3 - B/AU
          UJN    DUP4        GO STORE WORDS 
          SPACE  4,12                                                    MLD
**        END - PROCESS END COMMAND.                                     MLD
*                                                                        MLD
*         STOP EXECUTION  AND  SEND  THE  EXECUTIVE  AN  END  FUNCTION.  MLD
*                                                                        MLD
*         ENTRY- NONE.                                                   MLD
*                                                                        MLD
*         EXIT - PPU DROPS AND GOES TO IDLE.                             MLD
*                                                                        MLD
*         USES - NONE.                                                   MLD
*                                                                        MLD
*         CALLS- EXIT, REQ, R.IDLE, R.MTR, R.TAFL                        MLD
*                                                                        MLD
 END      LDN    F.END                                                   MLD
 END1     RJM    REQ                                                     MLD
                                                                         MLD
*         CONTROL IS RETURNED ONLY IF THE EXEC HAS MORE MODULES TO RUN   MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          RJM    R.TAFL      TERMINATE ACCESS TO CM                      MLD
                                                                         MLD
          LJM    EXI1        ENTER EXIT SEQUENCE TO RUN NEW MODULE       MLD
                                                                         MLD
 END2     BSSZ   0
          LDN    M.DPP
 END3     RJM    R.MTR
          LJM    R.IDLE      IDLE PPU                                    MLD
          SPACE  4,18                                                    MLD
**        ENDSUB - PROCESS ENDSUB COMMAND.                               MLD
*                                                                        MLD
*         TERMINATE SUBROUTINE MODE BY CLEARING  THE  PUSH-DOWN  STACK.  MLD
*                                                                        MLD
*         ENTRY- (A) = 0 IF NO JUMP ADDRESS - OTHERWISE,                 MLD
*                                                                        MLD
*                        BITS 17-11 NEW LINE NUMBER.                     MLD
*                        BITS 10-0  ABSOLUTE STACK ADDRESS FOR RNI.      MLD
*                                                                        MLD
*         EXIT - TO RNI IF JUMP ADDRESS  OR TO THE STACK (P+1) IF NOT    MLD
*                                                                        MLD
*         USES - D.T6, D.T7.                                             MLD
*                                                                        MLD
*         CALLS- RNI.                                                    MLD
*                                                                        MLD
 ENDSUB   STD    D.T6                                                    MLD
          SHN    -11                                                     MLD
          STD    D.T7                                                    MLD
          LDN    0                                                       MLD
          STM    PDS         ZERO FILL THE PUSH DOWN STACK               MLD
          STM    PDS+2                                                   MLD
          LDD    D.T6                                                    MLD
          ZJN    ENS1        IF NO JUMP ADDRESS SUPPLIED                 MLD
          LDD    D.T7                                                    MLD
          LJM    RNI1        EXIT TO STACK VIA RNI                       MLD
                                                                         MLD
 ENS1     LJM    XENDSUB     EXIT TO STACK
          SPACE  4,16                                                    MLD
**        ERROR - PROCESS ERROR CONDITION.                               MLD
*                                                                        MLD
*         SET  ERROR  MESSAGE,  CODE, AND LINE ADDRESS INTO THE EM, EC,  MLD
*         AND EA REGISTERS.                                              MLD
*                                                                        MLD
*         ENTRY- (A) =  BITS 12-17 -  ERROR MESSAGE NUMBER.              MLD
*                       BITS 0 -11 -  ERROR CODE.                        MLD
*                                                                        MLD
*         EXIT - ERROR CODE STORED INTO EC REGISTER.                     MLD
*                ERROR MESSAGE INDEX STORED INTO EM REGISTER.            MLD
*                CURRENT LINE NUMBER STORED INTO THE EA REGISTER.        MLD
*                                                                        MLD
*         USES - EA, EC, EM.                                             MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 ERROR    STD    EC          STORE ERROR CODE                            MLD
          SHN    -12                                                     MLD
          STD    EM          STORE ERROR MESSAGE                         MLD
          LDD    P                                                       MLD
          STD    EA          STORE CURRENT LINE NUMBER                   MLD
          LJM    XERROR      EXIT                                        MLD
          SPACE  4,16                                                    MLD
**        EXIT - PROCESS EXIT COMMAND.                                   MLD
*                                                                        MLD
*         EXIT THIS MODULE TO THE MODULE SPECIFIED BY THE (A).  IF  (A)  MLD
*         IS  ZERO,  REQUEST  THE CPU TO LOAD THE NEXT SELECTED MODULE.  MLD
*         IF (A) IS NOT ZERO, REQUEST THE CPU  TO  LOAD  THIS  SPECIFIC  MLD
*         MODULE.                                                        MLD
*                                                                        MLD
*         ENTRY- (A) = MODULE NUMBER TO LOAD IN DISPLAY CODE.            MLD
*                                                                        MLD
*         EXIT - START EXECUTION OF THE NEXT MODULE IF ONE IS LOADED.    MLD
*                IF ONE IS NOT LOADED, THE PPU DRIVER IS NOT RECALLED.   MLD
*                                                                        MLD
*         USES - REQP,P,D.T0,STACK.                                      MLD
*                                                                        MLD
*         CALLS- ABORT, DCHAN, ITFL, REQ, R.TAFL                         MLD
*                                                                        MLD
 EXIT     STM    REQP+4      SAVE MODULE NUMBER REQUESTED                MLD
          SHN    -12                                                     MLD
          STM    REQP+3      SAVE UPPER DIGIT OF MODULE NUMBER           MLD
          LDD    D.T0                                                    MLD
          ZJN    EXI0        IF NOT A CALL COMMAND                       MLD
          RJM    RACM        REQUEST ACCESS TO CM                        MLD
          LDC    **                                                      MLD
 P.PDS    EQU    *-1         *** POINTER TO PDS SAVE AREA STORED HERE    MLD
          RJM    TFL                                                     MLD
          CWM    PDS,D.PPONE           SAVE SUBROUTINE ENTRY POINTS      MLD
          LDD    P
          STM    REQP+1      SAVE RENTRY LINE NUMBER                     MLD
          LDM    XEXIT+1     SAVE REENTRY STACK ADDRESS                  MLD
 EXI0     STM    REQP+2                                                  MLD
          LDN    F.LOAD                                                  MLD
          RJM    REQ         REQUEST CPU ASSISTANCE                      MLD
                                                                         MLD
*         WHEN CONTROL IS RETURNED FROM REQ, ALL CONDITIONS ARE READY    MLD
*         TO ENTER THE STACK AT THE ENTRY POINT DEFINED BY FLINE AND     MLD
*         FADDR.                                                         MLD
                                                                         MLD
 EXI1     LJM    **                                                      MLD
 FADDR    EQU    *-1         *** ABSOLUTE ADDRESS IN STACK STORED HERE   MLD
                                                                         MLD
*         LOAD THE INSTRUCTION STACK - CONTINUATION OF INITIALIZATION    MLD
                                                                         MLD
 EXI2     LDC    **                                                      MLD
 P.MOD    EQU    *-1         POINTER TO MODULE BUFFER STORED HERE        MLD
          ADN    4                                                       MLD
          RJM    ITFL                                                    MLD
          CRD    D.T0                                                    MLD
          LDD    D.T0                                                    MLD
          ADC    -LSTACKCM-1                                             MLD
          PJN    EXI3        IF MODULE TOO LARGE FOR STACK               MLD
          LDD    D.T1                                                    MLD
          ADM    P.MOD                                                   MLD
          RJM    ITFL                                                    MLD
          CRM    STACK,D.T0  READ INSTRUCTION STACK                      MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          RJM    R.TAFL      TERMINATE ACCESS TO CM                      MLD
                                                                         MLD
          LDC    00                                                      MLD
 RESUME   EQU    *-1         *** LDC 0000 IF START REQUEST PROCESSING**  MLD
*         LDC    77          *** LDC 0077 IF RESUME REQUEST IN PROGRESS  MLD
          ZJN    EXI1        IF START REQUEST                            MLD
                                                                         MLD
          LJM    DCHANX      RE-ENTER MODULE WHERE IT WAS SUSPENDED      MLD
                                                                         MLD
 EXI3     LDC    PCERR                                                   MLD
          LJM    ABORT       ABORT IF PARAMETER CALL ERROR
                                                                         MLD
 CCODE    BSSZ   1           CONNECT CODE                                MLD
 CCODE1   BSSZ   1
          SPACE  4,18                                                    MLD
**        GOSUB - PROCESS GOSUB COMMAND.                                 MLD
*                                                                        MLD
*         ENTER A SUBROUTINE WITHIN A MODULE.                            MLD
*                                                                        MLD
*         ENTRY- (A) = 18 BITS, 17-11 = 7 BIT P ADDRESS (LINE NUMBER)    MLD
*                                                                        MLD
*         EXIT - TO ABORT IF PUSH DOWN STACK IS FILLED.                  MLD
*                TO RNI IF NOT FULL, ADDRESS SAVED IN STACK.             MLD
*                                                                        MLD
*         USES - D.T6, D.T7.                                             MLD
*                                                                        MLD
*         CALLS- ABT, RNI.                                               MLD
*                                                                        MLD
 PDS      BSS    4           STACK IS 2 WORDS PER ENTRY                  MLD
                                                                         MLD
*           ---------------------------                                  MLD
*           I                         I                                  MLD
*         0 I ABSOLUTE RETURN ADDRESS I                                  MLD
*           I-------------------------I                                  MLD
*           I                         I                                  MLD
*         1 I P - CURRENT LINE NUMBER I                                  MLD
*           ---------------------------                                  MLD
                                                                         MLD
 GOSUB    STD    D.T6        SAVE A REGISTER                             MLD
          SHN    -11                                                     MLD
          STD    D.T7        FORM LDC INSTRUCTION                        MLD
          LDM    PDS         CHECK FIRST ENTRY FULL                      MLD
          NJN    GOS2        FULL-USE NEXT ENTRY                         MLD
 GOS1     LDD    P                                                       MLD
          STM    PDS+1       SAVE LINE NUMBER                            MLD
          LDM    XGOSUB+1    GET ADDRESS OF RETURN                       MLD
          STM    PDS         SAVE IT                                     MLD
          LDD    D.T7                                                    MLD
          LJM    RNI1        EXIT TO ROUTINE VIA RNI                     MLD
                                                                         MLD
 GOS2     LDM    PDS+2       CHECK FOR FULL STACK                        MLD
          NJN    GOS3        FULL - ABORT                                MLD
          LDM    PDS                                                     MLD
          STM    PDS+2       PUSH THE STACK DOWN                         MLD
          LDM    PDS+1                                                   MLD
          STM    PDS+3                                                   MLD
          UJN    GOS1                                                    MLD
*                                                                        MLD
 GOS3     LDC    BD.SEER     SUBROUTINE ENTRY/EXIT ERROR                 MLD
          LJM    ABT                                                     MLD
          SPACE  4,18                                                    MLD
**        HALT/PAUSE  - PROCESS HALT AND PAUSE COMMANDS.                 MLD
*                                                                        MLD
*         STOP  EXECUTION  OF  THE STACK, POST A MESSAGE TO LINE 50 AND  MLD
*         SEND A HALT REQUEST TO THE EXECUTIVE IF STOP-ON-ERROR IS SET.  MLD
*         IF  NOT  SET,  RNI AT P+1.  IF A STOP IS EXECUTED, THE PPU IS  MLD
*         RESUMED AT P+1 AFTER A *GO* FROM THE OPERATOR.                 MLD
*                                                                        MLD
*         ENTRY- (A)  = HALT/PAUSE FLAG  (PAUSE IF NON-ZERO).            MLD
*                                                                        MLD
*         EXIT - MESSAGE POSTED AND OPERATOR *GO* RECEIVED IF SE IS ON.  MLD
*                                                                        MLD
*         USES - D.Z1, D.T7, P.                                          MLD
*                                                                        MLD
*         CALLS- REQ.                                                    MLD
*                                                                        MLD
 HALT     STM    REQP+4      SAVE HALT/PAUSE FLAG                        MLD
          NJN    HAL         IF PAUSE REQUEST                            MLD
          LDD    ES          EXECUTIVE SWITCHES                          MLD
          LPN    SEF                                                     MLD
          ZJN    HAL1        IF STOP-ON-ERROR IS CLEAR                   MLD
 HAL      LDN    F.HALT                                                  MLD
          RJM    REQ         SEND HALT REQUEST TO EXECUTIVE              MLD
 HAL1     LJM    XHALT       EXIT TO STACK
          SPACE  4,18                                                    MLD
**        LOG - LOG OB INTO ERROR FILE.                                  MLD
*                                                                        MLD
*         WRITE THE CONTENTS OF THE OUTPUT BUFFER  TO  THE  ENGINEERING  MLD
*         FILE.                                                          MLD
*                                                                        MLD
*         ENTRY- (A)  = FIRST WORD ADDRESS OF ENGINEERING FILE DATA.     MLD
*                                                                        MLD
*         EXIT - DATA FROM FWA TO THE FIRST ZERO BYTE WRITTEN TO THE     MLD
*                ENGINEERING FILE.                                       MLD
*                                                                        MLD
*         USES - D.Z1 - D.T7, P.                                         MLD
*                                                                        MLD
*         CALLS- R.DFM.                                                  MLD
*                                                                        MLD
          IFEQ   NOS,1,1                                                 MLD
 LOG      ADC    60000B      ADD MESSAGE CONTROL WORD                    MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
 LOG      ADC    200000B     ADD MESSAGE CONTROL WORD                    MLD
                                                                         MLD
          RJM    R.DFM       LOG MESSAGE INTO ERROR FILE                 MLD
          LJM    XLOG        EXIT TO STACK                               MLD
          SPACE  4,14                                                    MLD
**        LS - PROCESS THE LEFT SHIFT OPERAND.                           MLD
*                                                                        MLD
*         SHIFT THE OPERAND IN D.T0 LEFT (A) PLACES.                     MLD
*                                                                        MLD
*         ENTRY- D.T0 = OPERAND TO SHIFT.                                MLD
*                (A)  = LEFT SHIFT COUNT.                                MLD
*                                                                        MLD
*         EXIT - (A)  = OPERAND LEFT SHIFTED ENDARROUND AS A 12 BIT      MLD
*                       VALUE.                                           MLD
*         USES - D.T0, D.T1.
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 LS       LPN    37B                                                     MLD
          STD    D.T1        SAVE SHIFT COUNT 
          ZJN    LS2         IF SHIFT COUNT ZERO
 LS1      LDD    D.T0        GET VALUE TO BE SHIFTED
          SHN    1
          STD    D.T0        SAVE SHIFTED VALUE 
          SHN    -12         POSITION BIT 2**12 TO 2**0 
          RAD    D.T0        MOVE BIT 2**12 TO 2**0 
          SOD    D.T1        DECREMENT SHIFT COUNT
          NJN    LS1         IF NOT DONE LOOP 
 LS2      LDD    D.T0        GET FINAL SHIFTED VALUE INTO A REGISTER
          LJM    XLS         EXIT TO STACK                               MLD
          SPACE  4,14                                                    MLD
**        MSG - PROCESS THE MESSAGE  COMMAND.                            MLD
*                                                                        MLD
*         ADD SPECIFIED MESSAGE TO THE PPU DISPLAY BUFFER.               MLD
*                                                                        MLD
*         ENTRY- D.Z1 - D.T7 = MESSAGE OPTIONS.                          MLD
*                (A) = LINE NUMBER WHERE MESSAGE IS TO BE WRITTEN.       MLD
*                                                                        MLD
*         EXIT - MESSAGE WRITTEN TO CM DISPLAY BUFFER.                   MLD
*                                                                        MLD
*         USES - D.Z1 - D.T7, P.                                         MLD
*                                                                        MLD
*         CALLS- RACM,REQ.                                               MLD
*                                                                        MLD
 MSG      STD    D.Z4        SAVE Z - LINE NUMBER                        MLD
          SBN    60B                                                     MLD
          MJN    SET1        IF IN LEGAL RANGE                           MLD
          LDN    50B                                                     MLD
          STD    D.Z4        SET IT TO MAXIMUM                           MLD
          IFEQ   NOSBE,1
 SET1     LDN    0                                                       MLD
          STD    D.T3        CLEAR COUNTER                               MLD
 SET2     LDM    D.Z1,D.T3   MOVE PARAMETERS TO SAFE AREA                MLD
          STM    SETB,D.T3                                               MLD
          AOD    D.T3                                                    MLD
          SBN    15                                                      MLD
          NJN    SET2        IF ALL WORDS NOT MOVED                      MLD
          RJM    RACM        REQUEST ACCESS TO CENTRAL MEMORY            MLD
          LDN    0                                                       MLD
          STD    D.T3                                                    MLD
 SET3     LDM    SETB,D.T3   MOVE PARAMETERS BACK TO DIRECT CELLS        MLD
          STM    D.Z1,D.T3                                               MLD
          AOD    D.T3                                                    MLD
          SBN    15                                                      MLD
          NJN    SET3        IF ALL WORDS NOT MOVED                      MLD
          ENDIF 
          IFEQ   NOS,1
 SET1     LDD    D.PPMSG
          CWM    D.Z1,D.PPTR    SAVE LOW CORE TO SAFE AREA
          RJM    RACM           REQUEST ACCESS TO CM
          LDD    D.PPMSG
          CRM    D.Z1,D.PPTR    RELOAD LOW CORE FROM SAFE AREA
          ENDIF 
          LDD    D.Z2                                                    MLD
          ADC    -100B                                                   MLD
          MJN    SET4        IF MESSAGE INDEX IS .LT.100 - FROM USER     MLD
                                                                         MLD
*         THE MESSAGE INDEX IS FROM THE DRIVERS. FORMAT WORD 2 OF THE    MLD
*         MESSAGE AS FOLLOWS..                                           MLD
*                                                                        MLD
*         (SEQ NUM)   (MSG INDEX)  ( EC )  (  EA )  ( N/A/)              MLD
                                                                         MLD
          LDD    D.Z2                                                    MLD
          STD    D.Z7                                                    MLD
          LDD    EC                                                      MLD
          STD    D.T0                                                    MLD
          LDD    EA                                                      MLD
          STD    D.T1                                                    MLD
          UJN    SET7        GO INSERT SEQUENCE TAGS AND WRITE IT        MLD
                                                                         MLD
 SET4     LDD    D.Z1        X DEFINED FLAG                              MLD
          ZJN    SET7        IF NOT DEFINED                              MLD
          LDD    D.Z3        NUMBER OF DATA ITEMS                        MLD
          STD    D.Z1        SAVE IT                                     MLD
          LDN    D.Z7                                                    MLD
          STD    D.T3        SET STORAGE ADDRESS                         MLD
 SET5     LDI    D.Z6        GET DATA WORD                               MLD
          STI    D.T3                                                    MLD
          AOD    D.Z6        BUMP POINTER TO SOURCE                      MLD
          AOD    D.T3        BUMP POINTER TO DESTINATION                 MLD
          SBN    D.T3                                                    MLD
          NJN    SET6        IF NOT SPECIAL CASE                         MLD
          AOD    D.T3        SKIP OVER D.T3                              MLD
 SET6     SBN    B0-D.T3                                                 MLD
          ZJN    SET7        IF 8 ITEMS DONE                             MLD
          SOD    D.Z1                                                    MLD
          NJN    SET5        IF REQUESTED NUMBER DONE                    MLD
 SET7     AOM    SETA        BUMP MESSAGE NUMBER                         MLD
          SHN    -12                                                     MLD
          RAM    SETA        INSURE IT IS NEVER ZERO                     MLD
          STD    D.Z1        PUT IT IN ALL WORDS                         MLD
          STD    D.Z6                                                    MLD
          STD    D.T3                                                    MLD
          LDN    3                                                       MLD
          STD    D.Z5        SET CM WORD COUNT                           MLD
          LDD    D.Z4        LINE NUMBER                                 MLD
          SBN    51B                                                     MLD
          MJN    SET8        IF IN LEGAL RANGE OF THE MSG BUFFER         MLD
          LDC    50B*3       SET IT TO MAXIMUM                           MLD
          UJN    SET9                                                    MLD
                                                                         MLD
 SET8     LDD    D.Z4                                                    MLD
          SHN    1                                                       MLD
          ADD    D.Z4        LINE NUMBER TIMES 3                         MLD
 SET9     ADC    **          ADD POINTER TO DISPLAY BUFFER               MLD
 P.DB     EQU    *-1         POINTER TO DISPLAY BUFFER IS STORED HERE    MLD
          RJM    TFL                                                     MLD
          CWM    D.Z1,D.Z5                                               MLD
          LDD    D.Z4                                                    MLD
          SBN    50B                                                     MLD
          MJN    SET10       IF NOT SPECIAL CASE                         MLD
          LPN    3                                                       MLD
          ZJN    SET10       IF NOT PRINT OR DAYFILE REQUEST             MLD
          LDN    F.MSG                                                   MLD
          RJM    REQ         REQUEST CPU TO PRINT OR ISSUE DAYFILE       MLD
                                                                         MLD
 SET10    EQU    *                                                       MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          RJM    R.TAFL      TERMINATE ACCESS TO CENTRAL MEMORY          MLD
                                                                         MLD
          LJM    XMSG        RETURN TO STACK                             MLD
                                                                         MLD
 SETA     DATA   0           MESSAGE NUMBER                              MLD
                                                                         MLD
*         TO SAVE CORE, THE FOLLOWING WORDS ARE TIME-SHARED AS SCRATCH   MLD
                                                                         MLD
          SPACE  4,14                                                    MLD
**        OR - PROCESS OR OPERAND.                                       MLD
*                                                                        MLD
*         PERFORM A LOGICAL SUM OF TWO OPERANDS.                         MLD
*                                                                        MLD
*         ENTRY- D.T0 = OPERAND 1.                                       MLD
*                (A)  = OPERAND 2.                                       MLD
*                                                                        MLD
*         EXIT - (A)  = LOGICAL SUM OF OPERAND 1 AND OPERAND 2.          MLD
*                                                                        MLD
*         USES - D.T0, D.T1.                                             MLD
*                                                                        MLD
*         CALLS- NONE                                                    MLD
*                                                                        MLD
 OR       STD    D.T1        SAVE OPERAND 2                              MLD
          LMC    7777B       COMPLEMENT IT FOR MASK                      MLD
          STM    OR1                                                     MLD
          LDD    D.T0        GET OPERAND 1                               MLD
          LPC    **                                                      MLD
 OR1      EQU    *-1         MASK STORED HERE                            MLD
          LMD    D.T1                                                    MLD
          LJM    XOR         EXIT TO STACK                               MLD
          SPACE  4,14                                                    MLD
**        PICTURE - PROCESS PICTURE COMMAND.                             MLD
*                                                                        MLD
*         TAKE A SNAPSHOT OF THE PPU DISPLAY/PLOT BUFFER AND SEND IT TO  MLD
*         THE OUTPUT FILE. BLANK THE  DISPLAY  AFTER  THE  SNAPSHOT  IF  MLD
*         REQUESTED.                                                     MLD
*                                                                        MLD
*         ENTRY- (A) = BLANK OPTION AFTER THE SNAPSHOT.                  MLD
*                                                                        MLD
*         EXIT - SNAPSHOT TAKEN AND DISPLAY(S) BLANKED AS REQUESTED.     MLD
*                                                                        MLD
*         USES - D.Z1 - D.T7, P.                                         MLD
*                                                                        MLD
*         CALLS- REQ.                                                    MLD
*                                                                        MLD
 PICTURE  STM    REQP+4      STORE BLANK FLAGS                           MLD
          LDN    F.PIC                                                   MLD
          RJM    REQ         REQUEST SNAPSHOT FROM CPU                   MLD
          LJM    XPICTUR     EXIT TO STACK                               MLD
          SPACE  4,14                                                    MLD
**        PLOT- PROCESS PLOT COMMAND.                                    MLD
*                                                                        MLD
*         ADD A PLOT CHARACTER TO THE PLOT BUFFER IN CM.                 MLD
*                                                                        MLD
*         ENTRY- (A)  = CHARACTER POSITION TO PLOT.                      MLD
*                D.T0 = LINE NUMBER TO PLOT.                             MLD
*                                                                        MLD
*         EXIT - BIT ADDED TO THE PLOT BUFFER TO IDENTIFY THE CHARACTER  MLD
*                AND LINE TO PLOT.                                       MLD
*                                                                        MLD
*         USES - D.T0 - D.T4, P.                                         MLD
*                                                                        MLD
*         CALLS- RACM, R.TAFL, XOR.                                      MLD
*                                                                        MLD
 PLOT     STM    PLO3        SAVE CHARACTER                              MLD
          SBN    60                                                      MLD
          MJN    PLO0        IF IN RANGE                                 MLD
          LDN    59                                                      MLD
          UJN    PLOT        SET IT TO MAXIMUM                           MLD
                                                                         MLD
 PLO0     LDN    39                                                      MLD
          SBD    D.T0        INVERT LINE NUMBER AND MAKE IT IN RANGE     MLD
          PJN    PLO1        IF IN RANGE                                 MLD
          LDN    0           SET IT TO TOP OF PLOT IF OUT OF RANGE       MLD
 PLO1     STM    PLO2        SAVE LINE                                   MLD
          RJM    RACM        REQUEST ACCESS TO CM                        MLD
          LDC    **                                                      MLD
 PLO2     EQU    *-1         *** LINE STORED HERE                        MLD
          ADC    **                                                      MLD
 P.PB     EQU    *-1         *** POINTER TO PLOT BUFFER STORE HERE       MLD
          RJM    TFL                                                     MLD
          CRD    D.T3        READ SELECTED WORD FROM PLOT BUFFER         MLD
          LDN    D.T3                                                    MLD
          STD    D.T2        SET POINTER                                 MLD
          LDC    **                                                      MLD
 PLO3     EQU    *-1         *** CHARACTER STORED HERE                   MLD
 PLO4     SBN    12                                                      MLD
          MJN    PLO5        IF BYTE IS FOUND                            MLD
          STD    D.T1        SAVE REMAINDER                              MLD
          AOD    D.T2        BUMP POINTER TO SELECTED BYTE               MLD
          LDD    D.T1                                                    MLD
          UJN    PLO4        CONTINUE DIVIDE                             MLD
                                                                         MLD
 PLO5     ADN    12          FORM REMAINDER                              MLD
          LMC    1077B       FORM RIGHT SHIFT INSTRUCTION                MLD
          STM    PLO6        STORE IT FOR EXECUTION                      MLD
          LDC    4000B                                                   MLD
 PLO6     SHN    0           *** SHIFT INSTRUCTION STORED HERE ***       MLD
          STD    D.T0        SAVE DATA BIT TO ADD TO PLOT                MLD
          LDI    D.T2        GET BYTE BEING MODIFIED                     MLD
          RJM    XOR+1       FORM *OR* OF D.T0 AND (A)                   MLD
          STI    D.T2        STORE NEW RESULT                            MLD
          LDM    PLO2                                                    MLD
          ADM    P.PB                                                    MLD
          RJM    TFL                                                     MLD
          CWD    D.T3        RE-WRITE PLOT WORD                          MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          RJM    R.TAFL      TERMINATE ACCESS TO CM                      MLD
                                                                         MLD
          LJM    XPLOT       EXIT TO STACK                               MLD
          SPACE  4,24                                                    MLD
**        RANDOM - PROCESS RANDOM COMMAND.                               MLD
*                                                                        MLD
*         EXECUTE THE FOLLOWING COMMAND FORMATS TO GENERATE RANDOM DATA  MLD
*         IN THE INPUT/OUTPUT BUFFERS.                                   MLD
*                                                                        MLD
*         RANDOM TO X FOR Y                                              MLD
*         RANDOM TO X FOR Y, START Z                                     MLD
*                                                                        MLD
*         ENTRY- D.T0 = ADDRESS OF X.                                    MLD
*                D.T1 = Y - NUMBER OF WORDS TO GENERATE.                 MLD
*                (A)  = Z PLUS FLAG.                                     MLD
*                       IF BIT 17 IS SET, NO RANDOM STARTER WAS          MLD
*                       SUPPLIED, SO USE REAL-TIME CLOCK.                MLD
*                                                                        MLD
*                       IF BIT 17 IS NOT SET, THE LOWER 12 BITS OF       MLD
*                       A IS THE RANDOM STARTER.                         MLD
*                                                                        MLD
*         EXIT-  MODULE ABORTED IF BUFFER SIZE IS EXCEEDED.              MLD
*                OTHERWISE, Y WORDS ARE GENERATED AND STORED INTO        MLD
*                SEQUENTIAL WORDS OF THE BUFFER ADDRESS SPECIFIED BY X.  MLD
*                                                                        MLD
*         USES - D.Z2, D.Z4 - D.T4, P.                                   MLD
*                                                                        MLD
*         CALLS- TESTBR.                                                 MLD
*                                                                        MLD
 RANDOM   STD    D.T2        SAVE POSSIBLE STARTER                       MLD
          SHN    -12                                                     MLD
          STD    D.T3        STORE FLAG BIT                              MLD
          LDD    D.T1        WC                                          MLD
          ZJN    RAN4        IF NO WORDS TO STORE                        MLD
          RJM    TESTBR      VERIFY BUFFER REFERENCES ARE IN RANGE       MLD
          LDD    D.T3        FLAG BIT                                    MLD
          ZJN    RAN1        IF STARTER SUPPLIED                         MLD
          IANN   14B+40B     GET REAL TIME CLOCK AS STARTER              MLD
          STD    D.T2                                                    MLD
 RAN1     LDD    D.T2        FIRST WORD IS ALWAYS THE STARTER            MLD
 RAN2     STI    D.T0        STORE DATA INTO BUFFER                      MLD
          LDD    D.T0                                                    MLD
          RAD    D.T1        LWA+1 TO STORE                              MLD
          LDN    P.ZERO                                                  MLD
          CRD    D.T3        CLEAR TEMPORARY CELLS                       MLD
 RAN3     AOD    D.T0                                                    MLD
          SBD    D.T1                                                    MLD
          NJN    RAN5        IF NOT DONE WITH DATA STORE                 MLD
 RAN4     LJM    XRANDOM     EXIT TO STACK
                                                                         MLD
 RAN5     LDD    D.T2                                                    MLD
          ZJN    RAN6                                                    MLD
          LMC    7777B                                                   MLD
          NJN    RAN7                                                    MLD
          LDD    D.T6                                                    MLD
          STD    D.T4                                                    MLD
          LDD    D.T7                                                    MLD
          STD    D.T5                                                    MLD
          UJN    RAN7                                                    MLD
                                                                         MLD
 RAN6     LDD    D.T4                                                    MLD
          STD    D.T5                                                    MLD
          LDD    D.T6                                                    MLD
          STD    D.T7                                                    MLD
 RAN7     AOD    D.T2        BUMP STARTER                                MLD
          RAD    D.T4        ACCUMULATE RESULT                           MLD
          RAD    D.T5                                                    MLD
          STI    D.T0                                                    MLD
          UJN    RAN3        GO BUMP ADDRESSING                          MLD
          SPACE  4,16                                                    MLD
**        RETURN - PROCESS RETURN COMMAND.                               MLD
*                                                                        MLD
*         EXIT A SUBROUTINE WITHIN A MODULE WITH THE RETURN STATEMENT.   MLD
*                                                                        MLD
*         ENTRY- NONE.                                                   MLD
*                                                                        MLD
*         EXIT - ABORT MODULE IF THERE IS NOT AN ACTIVE SUBROUTINE       MLD
*                JUMP TO THE STACK AT P+1 OF THE LAST EXECUTED GOSUB     MLD
*                IF THERE IS AN ACTIVE SUBROUTINE.  PUSH THE STACK OF    MLD
*                SUBROUTINE ADDRESSES UP FOR NEXT GOSUB/RETURN.          MLD
*                                                                        MLD
*         USES - D.T0, P, PDS.                                           MLD
*                                                                        MLD
*         CALLS- GOSUB.                                                  MLD
*                                                                        MLD
 RETURN   LDM    PDS         LOOK FOR AN ENTRY AT THE TOP OF THE PDS     MLD
          ZJN    RET1        ABORT IF EMPTY                              MLD
          STD    D.T0                                                    MLD
          LDM    PDS+1                                                   MLD
          STD    P           RESET LINE NUMBER IN P                      MLD
          LDM    PDS+2                                                   MLD
          STM    PDS         PUSH THE STACK UP                           MLD
          LDM    PDS+3                                                   MLD
          STM    PDS+1                                                   MLD
          LDN    0                                                       MLD
          STM    PDS+2                                                   MLD
          LJM    0,D.T0      EXIT DIRECTLY TO THE STACK - NOT VIA RNI    MLD
                                                                         MLD
 RET1     LJM    GOS3        SUBROUTINE ENTRY/EXIT ERROR EXIT            MLD
          SPACE  4,35                                                    MLD
**        RNI - ADVANCE PROGRAM ADDRESS.                                 MLD
*                                                                        MLD
*         READ NEXT INSTRUCTION IN THE STACK.  PRIOR TO EXITING TO  THE  MLD
*         STACK,  BUMP  THE TIME SINCE THE LAST SYSTEMS COMMUNICATIONS.  MLD
*         ABORT IF 2 SECONDS PASS WHILE THE I/O  CHANNEL  IS  ASSIGNED.  MLD
*         IF  2  SECONDS  PASS WHILE THE CHANNEL IS NOT ASSIGNED, FORCE  MLD
*         COMMUNICATIONS.                                                MLD
*                                                                        MLD
*         ENTRY- RNI HAS TWO ENTRY POINTS TO SAVE TIME IN THE EXECUTION  MLD
*                SPEED OF A JUMP. THE ENTRY AT *RNI* HAS THE FOLLOWING   MLD
*                INPUT PARAMETERS.                                       MLD
*                                                                        MLD
*                  (A) = LINE NUMBER AND STACK ADDRESS OF NEXT COMMAND.  MLD
*                                                                        MLD
*                      BITS 0 - 10 = ABSOLUTE STACK ADDRESS.             MLD
*                      BITS 11- 17 = LINE NUMBER.                        MLD
*                                                                        MLD
*                THE SECOND ENTRY POINT AT *RNI1* HAS THE FOLLOWING      MLD
*                PARAMETERS.                                             MLD
*                                                                        MLD
*                  D.T6 = STACK ADDRESS.                                 MLD
*                  (A)  = LINE NUMBER.                                   MLD
*                                                                        MLD
*         EXIT - MODULE IS ABORTED IF THE NUMBER OF DETECTED REALTIME    MLD
*                CLOCK WRAP-AROUNDS INDICATE THAT MORE THAN 2 SECONDS    MLD
*                HAVE ELAPSED SINCE LAST DROP OF THE I/O CHANNEL.        MLD
*                OTHERWISE, JUMP TO THE STACK AFTER UPDATING THE CLOCK   MLD
*                                                                        MLD
*         USES - D.T6, D.T7, D.Z1, RT.                                   MLD
*                                                                        MLD
*         CALLS- ABT, DCHAN.                                             MLD
*                                                                        MLD
 RNI      STD    D.T6        SAVE STACK ADDRESS                          MLD
          SHN    -11                                                     MLD
 RNI1     STD    P           SET LINE NUMBER IN P                        MLD
          SHN    11                                                      MLD
          ADD    D.T6        GET RID OF BIT 12 IN STACK ADDRESS SAVED    MLD
          STM    RNI4        SAVE EXIT ADDRESS                           MLD
          IANN   14B                                                     MLD
          SHN    -10                                                     MLD
          LMD    RT                                                      MLD
          LPN    1                                                       MLD
          RAD    RT                                                      MLD
          ADC    -7777B 
          MJN    RNI2        IF NOT 4 SEC SINCE LAST SYSTEM COMMUNICATIONS
          LDM    CHFLG                                                   MLD
          NJN    RNI5        IF CHANNEL IS ASSIGNED - ERROR              MLD
          RJM    DCHAN       PAUSE, TEST ERROR/DROP/CHECKPOINT FLAGS     MLD
 RNI2     EQU    *                                                       MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
          LDD    RT                                                      MLD
          LPC    377B                                                    MLD
          NJN    RNI3        IF 256 MSEC HAS NOT PASSED                  MLD
          PAUSE  ST          PAUSE WITHOUT STATUS 
          AOD    RT          BUMP COUNT TO PREVENT CONSTANT PAUSES       MLD
          ENDIF                                                          MLD
                                                                         MLD
 RNI3     LJM    **                                                      MLD
 RNI4     EQU    *-1         JUMP TO THE STACK                           MLD
                                                                         MLD
 RNI5     LDC    BD.TLER     2 SECONDS SINCE LAST COMM ERROR EXIT        MLD
          LJM    ABT                                                     MLD
          SPACE  4,18                                                    MLD
**        RS - PROCESS RIGHT SHIFT OPERAND.                              MLD
*                                                                        MLD
*         RIGHT SHIFT THE OPERAND IN D.T0 (A) PLACES RIGHT WITH NO SIGN  MLD
*         EXTENSION                                                      MLD
*                                                                        MLD
*         ENTRY- D.TO = VALUE TO SHIFT.                                  MLD
*                (A)  = SHIFT COUNT.                                     MLD
*                                                                        MLD
*         EXIT - (A)  = SHIFTED RESULT.                                  MLD
*                                                                        MLD
*         USES - D.T0, RS1.                                              MLD
*                                                                        MLD
*         CALLS- NONE                                                    MLD
*                                                                        MLD
 RS       LPN    37B         MASK SHIFT COUNT                            MLD
          LMC    1077B       FORM RIGHT SHIFT INSTRUCTION                MLD
          STM    RS1         STORE IT FOR EXECUTION                      MLD
          LDD    D.T0        GET OPERAND TO SHIFT                        MLD
 RS1      SHN    0           SHIFT INSTRUCTION STORED HERE               MLD
          LJM    XRS         EXIT TO STACK                               MLD
          SPACE  4,22                                                    MLD
**        SYS - PROCESS SYS COMMANDS.                                    MLD
*                                                                        MLD
*         EXECUTE  THE  *SYS* COMMANDS THAT REFERENCE THE SCRATCH FILE.  MLD
*         THESE COMMANDS PERFORM THE FOLLOWING FUNCTIONS ON THE SCRATCH  MLD
*         FILE.                                                          MLD
*                                                                        MLD
*         SYSREW - REWIND                                                MLD
*         SYSRD  - READ                                                  MLD
*         SYSWR  - WRITE                                                 MLD
*                                                                        MLD
*         ENTRY- (A)  = SUBFUNCTION CODE TO ISSUE TO CPU FOR HELP.       MLD
*                D.T0 = POSITION COUNT FOR SYSPOS, REGISTER TO STORE     MLD
*                       STATUS ON SYSRD.                                 MLD
*                                                                        MLD
*         EXIT - FUNCTION COMPLETED.                                     MLD
*                                                                        MLD
*         USES - D.Z1, D.T4, REQP, P, WT, CMBL.                          MLD
*                                                                        MLD
*         CALLS- RACM, REQ, R.TAFL, TFL.                                 MLD
*                                                                        MLD
 SYS      STM    REQP+1 
          ZJN    SYSB1       IF ESM SYSREAD 
          SBN    2
          ZJN    SYSB1       IF SYSREAD 
          MJN    SYSB        IF ESM SYSWRITE
          SBN    2
          ZJN    SYSB        IF SYSWRITE
          IFEQ   NOS,1,4
          SBN    2
          ZJN    SYSB        IF SYSWRCM 
          SBN    1
          ZJN    SYSB1       IF SYSRDCM 
          LDN    1
          UJN    SYSB1       IF ESM OR SYSREWIND
  
 SYSB     LDN    2
 SYSB1    STD    D.T1 
          LDM    SYSA,D.T1   GET ENTRY POINT                             MLD
          STD    D.T2                                                    MLD
          LJM    0,D.T2      ENTER SUBROUTINE                            MLD
                                                                         MLD
 SYSREW   EQU    *                                                       MLD
 SYS1     LDN    F.SYS                                                   MLD
          RJM    REQ                                                     MLD
 SYS2     LJM    XSYS        EXIT TO STACK
                                                                         MLD
 SYSWR    RJM    RACM        REQUEST ACCESS TO CM                        MLD
          LDM    OBWL 
          RJM    SYSDIV      WORD COUNT = MIN(OBWL/5,L.SFB) 
          LDC    **                                                      MLD
 P.SFB    EQU    *-1         POINTER TO SCRATCH FILE BUFFER STORED HERE  MLD
          RJM    TFL                                                     MLD
          CWM    **,D.Z1                                                 MLD
 SYS3     EQU    *-1         ADDRESS OF OUTPUT BUFFER STORE HERE         MLD
          UJN    SYS1                                                    MLD
                                                                         MLD
 SYSRD    LDD    D.T0                                                    MLD
          STM    SYS5        SAVE REGISTER TO GET STATUS                 MLD
          LDM    IBWL 
          RJM    SYSDIV      WORD COUNT = MIN(IBWL/5,L.SFB) 
          LDN    F.SYS                                                   MLD
          RJM    REQ                                                     MLD
          RJM    RACM        GET ACCESS TO CM                            MLD
          LDM    SYSDA       GET WORD COUNT 
          STD    D.Z1        WORD COUNT FOR READ/WRITE                   MLD
          LDM    P.SFB                                                   MLD
          RJM    TFL                                                     MLD
          CRM    **,D.Z1                                                 MLD
 SYS4     EQU    *-1         ADDRESS OF INPUT BUFFER STORED HERE         MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          RJM    R.TAFL      TERMINATE ACCESS TO CM                      MLD
                                                                         MLD
          LDC    **                                                      MLD
 SYS5     EQU    *-1                                                     MLD
          STD    D.T0                                                    MLD
          LDM    REQP+4                                                  MLD
          STI    D.T0        STORE STATUS INTO SPECIFIED REGISTER        MLD
          LDM    REQP+3                                                  MLD
          STD    WT          STORE BYTES TRANSMITTED                     MLD
          LJM    SYS2                                                    MLD
                                                                         MLD
 SYSA     VFD    12/SYSRD 
          VFD    12/SYSREW                                               MLD
          VFD    12/SYSWR                                                MLD
* 
*         CALCULATE SYS I/O WORD COUNT = MIN((A),L.SFB) 
* 
 SYSDIVX  LJM    ** 
 SYSDIV   EQU    *-1
          STM    SYSDA             SAVE BUFFER LENGTH 
          LDN    0
          STD    D.Z1 
 SYSD1    LCN    5                 DIVIDE BY 5
          RAM    SYSDA
          MJN    SYSD2
          AOD    D.Z1 
          UJN    SYSD1
* 
 SYSDA    DATA   0
* 
 SYSD2    LDC    L.SFB-6           CHECK MIN(A,L.SFB-6) 
          SBD    D.Z1 
          PJN    SYSD3
          RAD    D.Z1 
 SYSD3    LDD    D.Z1              SAVE WORD COUNT
          STM    SYSDA
          STM    REQP+2            SET WORD COUNT IN EXEC CALL
          UJN    SYSDIVX
* 
          SPACE  4,14                                                    MLD
**        TESTBI - TEST BUFFER INDEX.                                    MLD
*                                                                        MLD
*         TEST BUFFER INDEX TO BE IN RANGE  OF  THE  INPUT  AND  OUTPUT  MLD
*         BUFFERS.                                                       MLD
*                                                                        MLD
*         ENTRY- (A) = BUFFER INDEX VALUE.                               MLD
*                                                                        MLD
*         EXIT - TO THE STACK IF VALUE IS IN RANGE.  ABORT IF NOT.       MLD
*                                                                        MLD
*         USES - IBWL, OBWL, IBFWA.                                      MLD
*                                                                        MLD
*         CALLS- COPY                                                    MLD
*                                                                        MLD
 TESTBI   SBM    IBFWA                                                   MLD
          MJN    TST1        ERROR IF BELOW INPUT BUFFER                 MLD
          SBM    IBWL                                                    MLD
          SBM    OBWL                                                    MLD
          PJN    TST1        ERROR IF ABOVE OUTPUT BUFFER                MLD
          LJM    XTESTBI     EXIT TO STACK                               MLD
          SPACE  4,12                                                    MLD
**        TESTBR - TEST BUFFER REFERENCE.                                MLD
*                                                                        MLD
*         VERIFY BUFFER REFERENCES ARE IN RANGE OF THE INPUT AND OUTPUT  MLD
*         BUFFERS.                                                       MLD
*                                                                        MLD
*         ENTRY- D.T0 = BUFFER FWA.                                      MLD
*                D.T1 = NUMBER OF WORDS THAT WILL BE REFERENCED.         MLD
*                                                                        MLD
*         EXIT - EXIT IF VALUES ARE IN RANGE.  ABORT IF NOT.             MLD
*                                                                        MLD
*         CALLS- ABT.                                                    MLD
*                                                                        MLD
 TESTBRX  LJM    **          ENTRY/EXIT                                  MLD
 TESTBR   EQU    *-1                                                     MLD
          LDD    D.T0                                                    MLD
          SBM    IBFWA                                                   MLD
          MJN    TST1        ABORT IF FWA IS BELOW INPUT BUFFER          MLD
          ADD    D.T1        ADD WORD COUNT                              MLD
          SBM    IBWL        SUBTRACT IB WORD LENGTH                     MLD
          SBM    OBWL        SUBTRACT OB WORD LENGTH                     MLD
          MJN    TESTBRX     EXIT IF IN RANGE                            MLD
          ZJN    TESTBRX     EXIT IF IN RANGE                            MLD
 TST1     LDC    BD.BIER     BUFFER REFERENCE ERROR                      MLD
 TST2     LJM    ABT         ABORT
          SPACE  4,16                                                    MLD
**        RACM - REQUEST ACCESS TO CM.                                   MLD
*                                                                        MLD
*         REQUEST  ACCESS  TO CENTRAL MEMORY. FOR NOSBE, CALL R.RAFL TO  MLD
*         GET ACCESS TO CM.  FOR NOS, WAIT FOR THE OUTPUT  REGISTER  TO  MLD
*         CLEAR, THEN CALL R.RAFL.                                       MLD
*                                                                        MLD
*         ENTRY- NONE.                                                   MLD
*                                                                        MLD
*         EXIT - D.RA AND D.FL SET.  FOR NOSBE, THE FL ACCESS FLAG IS    MLD
*                SET.                                                    MLD
*                                                                        MLD
*         USES - D.RA, D.FL, D.Z1 - D.T7.                                MLD
*                                                                        MLD
*         CALLS- R.RAFL.                                                 MLD
*                                                                        MLD
 RACMX    LJM    **                                                      MLD
 RACM     EQU    *-1                                                     MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
 RAC1     LDD    D.PPOR                                                  MLD
          CRD    D.Z1                                                    MLD
          LDD    D.Z1                                                    MLD
          NJN    RAC1        WAIT FOR LAST PAUSE FUNCTION TO CLEAR       MLD
          ENDIF                                                          MLD
                                                                         MLD
          IFEQ   NOS,1,1
          PAUSE 
  
          IFEQ   NOSBE,1,1
          RJM    R.RAFL 
          UJN    RACMX       EXIT                                        MLD
          SPACE  4,14                                                    MLD
**        TFL - TEST ADDRESS IN FL.                                      MLD
*                                                                        MLD
*         TEST ADDRESS (A) FOR BEING WITHIN FIELD LENGTH.                MLD
*                                                                        MLD
*         ENTRY- (A) = RELATIVE ADDRESS.                                 MLD
*                                                                        MLD
*         EXIT - (A) = RELATIVE ADDRESS + D.RA IF IN RANGE               MLD
*                JUMP TO ABT IF OUT OF RANGE.                            MLD
*                                                                        MLD
*         USES - D.Z0, D.FL.                                             MLD
*                                                                        MLD
*         CALLS- ABT.                                                    MLD
*                                                                        MLD
 TFL1     LDD    D.RA                                                    MLD
          SHN    6                                                       MLD
          ADD    D.Z0                                                    MLD
                                                                         MLD
 TFLX     LJM    **          ENTRY/EXIT                                  MLD
 TFL      EQU    *-1                                                     MLD
          STD    D.Z0        SAVE ADDRESS                                MLD
          SHN    -6                                                      MLD
          SBD    D.FL                                                    MLD
          MJN    TFL1        IF IN RANGE                                 MLD
          LDC    BD.FLER     ABORT MODULE DUE TO FIELD LENGTH ERROR      MLD
          UJN    TST2        ABORT
          SPACE  4,14                                                    MLD
**        CKP - CHECKPOINT PPU DRIVER.                                   MLD
*                                                                        MLD
*         CHECKPOINT  THE  PPU  DRIVER,  PRODUCT  OVERLAY AND OPERATING  MLD
*         REGISTERS TO CENTRAL MEMORY.                                   MLD
*                                                                        MLD
*         ENTRY- NONE.                                                   MLD
*                                                                        MLD
*         EXIT - CM BUFFER CKB CONTAINS BINARY OF MLD + OVERLAY.         MLD
*                                                                        MLD
*         USES - D.Z1, D.Z2.                                             MLD
*                                                                        MLD
*         CALLS- TFL.                                                    MLD
*                                                                        MLD
 CKPX     LJM    **                                                      MLD
 CKP      EQU    *-1                                                     MLD
          LDC    LPPU/5                                                  MLD
          STD    D.Z1        SET FIRST WORD COUNT                        MLD
          LDN    50B/5                                                   MLD
          STD    D.Z2        SET SECOND WORD COUNT                       MLD
          LDC    **                                                      MLD
 P.CB     EQU    *-1         POINTER TO CHECKPOINT BUFFER STORED HERE    MLD
          RJM    TFL                                                     MLD
          CWM    DRIVER,D.Z1 SAVE STACK, DRIVER, OVERLAY, AND BUFFERS    MLD
          CWM    B0,D.Z2     SAVE OPERATING REGISTERS                    MLD
          UJN    CKPX        EXIT                                        MLD
          SPACE  4,18                                                    MLD
**        DCHAN  - DROP I/O CHANNEL TO THE OPERATING SYSTEM.             MLD
*                                                                        MLD
*         DROP  I/O  CHANNEL TO THE OPERATING SYSTEM IF IT IS ASSIGNED.  MLD
*         THE CHANNEL IS DROPPED UNLESS DFLAG  IS  SET  ZERO  PRIOR  TO  MLD
*         ENTRY.   IF  DFLAG  IS ZERO, THIS ROUTINE BECOMES A PAUSE AND  MLD
*         TEST FOR ERROR,DROP, AND CHECKPOINT FLAGS.                     MLD
*                                                                        MLD
*                                                                        MLD
*         ENTRY -  IF DFLAG IS SET TO 4 PRIOR TO ENTRY, AN AUTOMATIC     MLD
*                  CHECKPOINT AND DROP PPU IS PERFORMED.                 MLD
*                                                                        MLD
*         EXIT  -  CHANNEL IS DROPPED IF ASSIGNED, AND CONTROL           MLD
*                  RETURNED TO THE CALLING ROUTINE.                      MLD
*                                                                        MLD
*         CALLS - R.TAFL, R.DCH, TFL, CKP.                               MLD
*                                                                        MLD
 DCHANX   LJM    **                                                      MLD
 DCHAN    EQU    *-1                                                     MLD
          IFEQ   NOSBE,1,2
          LDN    0
          STM    ADRF        CLEAR ERROR CODE RETAINER
          LDN    1                                                       MLD
          STD    RT          SET TIME SINCE LAST SYS COMMUNICATIONS      MLD
          RJM    RACM        REQUEST ACCESS TO CM                        MLD
          LDD    D.T0+1                                                  MLD
          NJN    DCH1A       IF ERROR FLAGS 
          IFEQ   NOS+NOS4+NOS5,1
          LDD    D.T2        READ ROLLOUT INFO
          SHN    17 
          PJN    DCH2        NO ROLLOUT FLAG
          LDM    CHFLG
          ZJN    DCH1        CHANNEL FLAG NOT SET DO NOT DROP 
          LDM    CHAN 
          DCHAN 
          LDN    0
          STM    CHFLG       CLEAR CHANNEL FLAG 
 DCH1     LDN    F.ROLL 
          LJM    DCH6B       CHECKPOINT PP
          ENDIF 
          IFEQ   NOS+NOS4+NOS5,2,1
          UJN    DCH2        CONTINUE 
          IFEQ   NOSBE,1,1
          UJN    DCH2        CONTINUE 
 DCH1A    BSSZ   0
          IFEQ   NOSBE,1,1
          STM    ADRF        STORE ERROR CODE 
          LDN    2
          STM    DFLAG       SET FLAG TO INDICATE END REQUEST            MLD
          UJN    DCH5                                                    MLD
                                                                         MLD
 DCH2     LDC    ** 
 P.LAST   EQU    *-1         POINTER TO DS REGISTERS
          RJM    TFL
          CRD    D.Z1 
          LDD    D.Z5 
          STM    DS         SAVE SWITCHS IN ESR REGISTER
          LDC    **          POINTER TO IR
 P.IR     EQU    *-1         POINTER TO INPUT REQISTER IS STORED HERE    MLD
          RJM    TFL
          CRD    D.T0                                                    MLD
          LDD    D.T4                                                    MLD
          STD    ES          SET EXECUTIVE SWITCHES REGISTER             MLD
          LPN    DF+CF                                                   MLD
          ZJN    DCH3        IF DROP OR CHECKPOINT FLAGS ARE NOT SET     MLD
          LDN    4                                                       MLD
          STM    DFLAG       SET FLAG TO INDICATE DROP REQUEST           MLD
 DCH3     LDC    1                                                       MLD
 DFLAG    EQU    *-1         *** DROP CHANNEL FLAG STORED HERE           MLD
          NJN    DCH5        IF REASON TO DROP CHANNEL                   MLD
 DCH4     LDN    1                                                       MLD
          STM    DFLAG       SET FLAG TO FORCE DROP UPON NEXT ENTRY      MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          RJM    R.TAFL      TERMINATE ACCESS TO CM                      MLD
                                                                         MLD
          LJM    DCHANX      EXIT TO CALLER                              MLD
                                                                         MLD
 DCH5     LDM    CHFLG                                                   MLD
          ZJN    DCH6        IF CHANNEL IS NOT ASSIGNED                  MLD
          LDM    CHAN                                                    MLD
          IFEQ   NOS3+NOS4,1,1
          RJM    DCH
  
          IFEQ   NOS+NOS3+NOS4,1,1
          DCHAN 
  
          IFEQ   NOSBE,1,1
          RJM    R.DCH
          LDC    1           *** DELAY FOR 1 MSEC IF NON-RMS DEVICE 
*         LDC    100D        *** MODIFIED FOR 100D MSEC IF RMS ***
 DLYDCH   EQU    *-1
          STD    RT          SET RT TO MSEC DELAY 
 DCH5AA   LDC    2000 
 DCH5A    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    DCH5A       DELAY 1 MSEC 
          RJM    RACM        PAUSE FOR STORAGE RELOCATION 
          SOD    RT 
          NJN    DCH5AA      LOOP TO UNTIL RT MSEC DELAY DONE 
          STD    D.T4 
          STM    CHFLG
          AOD    RT          SET RT TO 1
          LDM    P.SBPOR                                                 MLD
          RJM    TFL                                                     MLD
          CWD    D.T0        CLEAR FLAG BIT FOR CHANNEL TO SBP           MLD
                                                                         MLD
 DCH6     BSSZ   0
          IFEQ   NOSBE,1,4
          LDM    ADRF 
          LPN    77B
          SBN    F.ERTI 
          ZJN    DCH6AA      TERMINAL INTERRUPT 
          LDM    DFLAG
          SHN    17-1                                                    MLD
          MJN    DCH7        IF END FLAG SET                             MLD
          SHN    17                                                      MLD
          MJN    DCH6A       DROP REQUEST 
          LJM    DCH4        IF NO DROP REQUEST                          MLD
                                                                         MLD
*         CHECKPOINT THE PPU TO CM                                       MLD
                                                                         MLD
          IFEQ   NOSBE,1,2
 DCH6AA   LDN    F.ROLL 
          UJN    DCH6B
 DCH6A    LDN    F.DROP 
 DCH6B    STD    D.T0 
          LDN    1
          STM    DFLAG       SET DROP FLAG
          RJM    CKP         CHECKPOINT THE PP
          LDN    0                                                       MLD
          STD    D.T4        CLEAR TIME DELAY BYTE                       MLD
          LDM    P.OR                                                    MLD
          RJM    TFL                                                     MLD
          CWD    D.T0        WRITE END OR DROP REQUEST TO EXEC           MLD
 DCH7     LJM    END2        DROP PPU                                    MLD
  
          IFEQ   NOSBE,1,1
 ADRF     DATA   0           ERROR CODE FOR NOSBE 
          SPACE  4,22                                                    MLD
**        RCHAN - REQUEST I/O CHANNEL FROM THE OPERATING SYSTEM.         MLD
*                                                                        MLD
*         REQUEST  I/O  CHANNEL  FROM THE OPERATING SYSTEM IF IT IS NOT  MLD
*         ALREADY ASSIGNED. CHFLG IS SET TO INDICATE THAT  THE  CHANNEL  MLD
*         IS ASSIGNED.                                                   MLD
*                                                                        MLD
*         IF  THE CHANNEL IS ALREADY ASSIGNED, A TEST IS MADE TO SEE IF  MLD
*         THERE IS AN OUTSTANDING REQUEST FOR OUR CHANNEL. IF SO, IT IS  MLD
*         DROPPED,  A  50 MSEC DELAY OCCURS, AND IT IS REQUESTED AGAIN.  MLD
*                                                                        MLD
*         IF RCHAN IS CALLED WHILE THE CHANNEL IS ASSIGNED, THE CHANNEL  MLD
*         AND  I/O  DEVICE  MUST  BE  IN  A  STATE TO BE DROPPED TO THE  MLD
*         SYSTEM.                                                        MLD
*                                                                        MLD
*         ENTRY- RJM  RCHAN.                                             MLD
*                                                                        MLD
*         EXIT - CH IS ASSIGNED AND THE CALLING ROUTINE IS ENTERED.      MLD
*                                                                        MLD
*         USES - CHFLG, ES, SBF, D.T0-D.T4.                              MLD
*                                                                        MLD
*         CALLS - DCHAN, R.RCH, RACM, TFL, R.TAFL.                       MLD
*                                                                        MLD
 RCHANX   LJM    **                                                      MLD
 RCHAN    EQU    *-1                                                     MLD
          LDM    CHFLG                                                   MLD
          NJN    RCH1        IF CHANNEL IS ASSIGNED                      MLD
          RJM    DCHAN       PAUSE AND CHECK ERROR/DROP FLAGS            MLD
          UJN    RCH6        GET CHANNEL AND EXIT                        MLD
                                                                         MLD
 RCH1     LDC    **                                                      MLD
 RCH2     EQU    *-1         ADDRESS OF CH REQUEST WORD STORED HERE      MLD
          CRD    D.Z1                                                    MLD
 RCH3     LDD    0           WORD TO LOAD IS STORED HERE                 MLD
 RCH4     SHN    0           SHIFT COUNT IS STORED HERE TO PUT BIT IN 0  MLD
 RCH5     LPN    1           *** IF SHARE SET TO 0
*         LDN    1           *** IF SHARE SET TO NON ZERO 
          STM    DFLAG       SET DFLAG IF ACTIVE REQUEST, CLEAR IF NONE  MLD
          RJM    DCHAN       DROP CHANNEL IF IT IS BEING REQUESTED       MLD
          LDC    **                                                      MLD
 CHFLG    EQU    *-1         HAVE CHANNEL FLAG                           MLD
          NJN    RCHANX      IF CHANNEL IS STILL ASSIGNED, EXIT          MLD
          IFEQ   NOS4+NOS5+NOSBE,1
          LDN    0
          STM    CHCNT       INITIALIZE RETRY COUNTERS
          STM    CHCNT1 
          ENDIF 
 RCH6     LDC    **                                                      MLD
 CHAN     EQU    *-1         I/O CHANNEL OF THE DEVICE ASSIGNED          MLD
          IFEQ   NOS+NOS4+NOS5,1
          STD    D.T1 
 RCH6A    MONITOR CCHM       CHECK CHANNEL
          LDD    D.T1 
          LPN    40B
          ZJN    RCH6B       DOWNED CHANNEL NOT IN USE BY ANOTHER USER
          LDC    CHERR       ERROR MESSAGE TO POST
          RJM    R.DFM       REPORT DAYFILE MESSAGE TO USER 
          LDN    M.ABORT
          LJM    END3        DROP THE PPU 
  
 RCH6B    LDD    D.T2 
          NJN    RCH6C       CHANNEL ASSIGNED TO MLD
          RJM    DCHAN       PAUSE FOR RELOCATION 
          UJN    RCH6        TEST AGAIN FOR CHANNEL ASSIGNED
          ENDIF 
          IFEQ   NOS3+NOS4+NOS5,1 
          STD    D.T1 
          MONITOR CCHM       CHECK CHANNEL
          LDD    D.T2        RESPONSE 
          NJN    RCH6A       IF CHANNEL ASSIGNED
          IFEQ   NOS3+NOS4,1,1
          RJM    PRL         PAUSE FOR STORAGE MOVE 
          IFEQ   NOS5,1,1 
          RJM    R.MTR       PAUSE FOR STORAGE MOVE 
          ENDIF 
          IFEQ   NOSBE,1
          STD    D.T1        SET CHANNEL FOR REQUEST
          LDN    0
          STD    D.T2        CLEAR BYTE OTHER CHANNELS
          STD    D.T3        NORMAL CHARGE FOR CHANNEL TIME 
          STD    D.T4        REQUEST IMMEDIATE REPLY
          LDN    M.RCH
          RJM    R.MTR       REQUEST CHANNEL
          LDD    D.T4 
          NJN    RCH6A       IF CHANNEL ASSIGNED
          RJM    RACM        PAUSE FOR STORAGE RELOCATION 
          ENDIF 
          IFEQ   NOS3+NOS4+NOS5+NOSBE,1 
          AOM    CHCNT
          SHN    -12
          RAM    CHCNT1      ADD TO UPPER COUNTER 
          SBN    50 
          MJN    RCH6        IF RETRIES NOT EXAUSTED
          LDC    CHERR
          RJM    R.DFM       DAYFILE MESSAGE
          LDN    M.ABORT
          LJM    END3        ABORT CONTROL POINT
 RCH6A    EQU    *
          ENDIF 
  
                                                                         MLD
 RCH6C    LDD    ES 
          LPC    SBF                                                     MLD
          ZJN    RCH7        IF SB OPTION OFF                            MLD
          RJM    RACM                                                    MLD
          LDM    CHAN                                                    MLD
          IFEQ   NOS,1,1
          LPN    37B         REMOVE CIO BIAS FOR SBP
          ADN    40B                                                     MLD
          STD    D.T4        STORE CHANNEL INTO BYTE 4                   MLD
          LDC    **                                                      MLD
 P.SBPOR  EQU    *-1                                                     MLD
          RJM    TFL                                                     MLD
          CWD    D.T0        SET HAVE CHANNEL FLAG FOR SBP               MLD
          IFEQ   NOSBE,1,1                                               MLD
          RJM    R.TAFL      TERMINATE CM FIELD ACCESS                   MLD
                                                                         MLD
 RCH7     AOM    CHFLG       SET HAVE CHANNEL FLAG                       MLD
          LJM    RCHANX                                                  MLD
  
          IFEQ   NOS4+NOS5+NOSBE,1
 CHCNT    DATA   0           CHANNEL RESERVE RETRY COUNTER 1
 CHCNT1   DATA   0           CHANNEL RESERVE RETRY COUNTER 2
          ENDIF 
          IFEQ   NOS,1
 CHERR    DIS    ,*MLD CH IN USE* 
          ENDIF 
          IFEQ   NOSBE,1
 CHERR    DIS    ,*CH N/A*
          ENDIF 
          EJECT                                                          MLD
 P.POMB   BSSZ   1           POINTER TO PRODUCT OVERLAY MESSAGES BUFFER  MLD
 P.MB     BSSZ   1           POINTER TO MESSAGE BUFFER STORED HERE       MLD
 TYPE     DATA   7777B       DEVICE TYPE ASSIGNED (SET TO ILLEGAL TYPE) 
 SPEED    DATA   4           SPEED OF PPU 4=1X,2=2X,1=4X
 SHARE    DATA   2           2=DO NOT SHARE MAINFRAMES 0=SHARE MAIN.
 SETB     EQU    *           BUFFER AREA FOR MSG COMMAND 15 WORDS 
 REQP     EQU    *           5 WORDS USED FOR CPU REQUESTS BY REQ 
                                                                         MLD
*         EQUATES FOR BASIC DRIVER ERROR MESSAGES IN PRODUCT OVERLAY.    MLD
                                                                         MLD
 BD.FLER  EQU    1           ORD.0, EC 1 - ADDRESS OUT OF FIELD LENGTH   MLD
 BD.TLER  EQU    102B        ORD.1, EC 2 - 2 SECOND TIME LIMIT ERROR     MLD
 BD.SEER  EQU    203B        ORD.2, EC 3 - SUBROUTINE ENTRY/EXIT ERROR   MLD
 BD.BIER  EQU    304B        ORD.3, EC 4 - BUFFER REF. OR WC ERROR       MLD
 BD.RES   EQU    405B        RESERVED FOR BASIC DRIVER                   MLD
 BD.RES1  EQU    506B        RESERVED FOR BASIC DRIVER                   MLD
 BD.RES2  EQU    607B        RESERVED FOR BASIC DRIVER                   MLD
                                                                         MLD
*         EQUATES FOR THE BASIC DRIVER INTO THE PRODUCT OVERLAYS.        MLD
                                                                         MLD
 POVLA    EQU    DRIVER+LDRIVER                                          MLD
 POVL     EQU    POVLA+1     ENTRY POINT OF PRODUCT OVERLAY              MLD
 IBFWA    EQU    POVL+3      ADDRESS OF IB FWA                           MLD
 OBFWA    EQU    IBFWA+1     ADDRESS OF OB FWA                           MLD
 SBFWA    EQU    OBFWA+1     ADDRESS OF SB FWA                           MLD
 IBWL     EQU    SBFWA+1     LENGTH OF IB                                MLD
 OBWL     EQU    IBWL+1      LENGTH OF OB                                MLD
 SBWL     EQU    OBWL+1      LENGTH OF SB                                MLD
 VER      EQU    SBWL+1      ADDRESS OF PRODUCT OVERLAY VERSION NUMBER   MLD
 RELEASE  EQU    VER+2       ENTRY POINT FOR THE P.O. RELEASE ROUTINE    MLD
 RESERVE  EQU    RELEASE+4   ENTRY POINT FOR THE P.O. RESERVE ROUTINE    MLD
 DS       EQU    4460B       DIAGNOSTIC SWITCHS 
 P0       EQU    4461B       PARAMETER REGISTER P0
 P1       EQU    4462B       PARAMETER REGISTER P1
 P2       EQU    4463B       PARAMETER REGISTER P2
 P3       EQU    4464B       PARAMETER REGISTER P3
 P4       EQU    4465B       PARAMETER REGISTER P4
 P5       EQU    4466B       PARAMETER REGISTER P5
 P6       EQU    4467B       PARAMETER REGISTER P6
 P7       EQU    4470B       PARAMETER REGISTER P7
 P8       EQU    4471B       PARAMETER REGISTER P8
 P9       EQU    4472B       PARAMETER REGISTER P9
                                                                         MLD
*         EQUATES FOR THE PRODUCT OVERLAYS INTO THE BASIC DRIVER.        MLD
                                                                         MLD
 BD.AL    EQU    AL                                                      MLD
 BD.AL21  EQU    21B         ACCESS LEVEL FOR NO CHAN CLEANUP            MLD
 BD.ABT   EQU    ABT1                                                    MLD
 BD.CHAIN EQU    CHAIN                                                   MLD
 BD.CHAN  EQU    CHAN                                                    MLD
 BD.CHFG  EQU    CHFLG                                                   MLD
 BD.CMB   EQU    P.SFB       POINTER TO CM BUFFER FOR SYSCM 
 BD.DCH   EQU    DCHAN                                                   MLD
 BD.DREQ  EQU    F.DROP      EXECUTIVE DROP REQUEST                      MLD
 BD.ERR   EQU    ERR                                                     MLD
 BD.EQ    EQU    CCODE                                                   MLD
 BD.EQ1   EQU    CCODE1 
 BD.MSGA  EQU    P.POMB      ADDRESS OF P.O. MESSAGE BUFFER              MLD
 BD.MSGML EQU    3           MAXIMUM LENGTH OF P.O. MSGS IN CM WORDS     MLD
 BD.MSGMN EQU    L.POMB/BD.MSGML MAXIMUM NUMBER OF P.O. MSGS ALLOWED     MLD
 BD.PAR   EQU    SN+2        UPPER 4 BITS OF P1-P3 FOR LCN
 BD.RCH   EQU    RCHAN                                                   MLD
 BD.REQ   EQU    REQ         EXECUTIVE REQUEST PROCESSOR ENTRY POINT     MLD
 BD.REQP  EQU    REQP        EXECUTIVE REQUEST PROCESSOR PARAMETERS      MLD
 BD.RNI   EQU    RNI                                                     MLD
 BD.SHARE EQU    SHARE
 BD.SN    EQU    SN+3        POINTER TO DISK PACK SERIAL NUMBER          MLD
 BD.SPEED EQU    SPEED       FLAG WORD CONTAINING PPU SPEED 0=1X 1=2X    MLD
 BD.XSYS  EQU    XSYS+1      SYS COMMAND ENTRY POINT
 BD.TEST  EQU    TESTBR      VERIFY BUFFER REFERENCE IN RANGE OF IB/OB   MLD
 BD.TFL   EQU    ITFL        INITIALIZATION TEST FIELD LENGTH            MLD
 BD.TYPE  EQU    TYPE        DEVICE TYPE FOR LOW LEVEL I/O               MLD
 BD.USER  EQU    DRIVER      LWA+1 OF USER STACK                         MLD
 BD.VERS  EQU    VERS 
                                                                         MLD
 BD.RCH5  EQU    RCH5        SHARE MAINFRAME INSTRUCTION MODFICATION
          ERRPL  *+15B-DS    ERROR IF DRIVER OVERFLOWED 
*CALL,LOW                                                                MLD
*IF,DEF,MUX,1                                                            MLD
*CALL,MUX                                                                MLD
*IF,DEF,580,1                                                            MLD
*CALL,580                                                                MLD
*IF,DEF,65X,1                                                            MLD
*CALL,65X                                                                MLD
*IF,DEF,66XM,1
*CALL,66X                                                                MLD
*IF,DEF,67XM,1
*CALL,67X                                                                MLD
*IF,DEF,841,1                                                            MLD
*CALL,841                                                                MLD
*IF,DEF,844M,3
*CALL,844HT 
*CALL,844FT 
*IF,-DEF,844M,4 
*IF,DEF,844HT,3 
*IF,-DEF,844FT,2
*CALL,844HT 
*CALL,844FT 
*IF,-DEF,844M,4 
*IF,-DEF,844HT,3
*IF,DEF,844FT,2 
*CALL,844HT 
*CALL,844FT 
*IF,-DEF,844M,4 
*IF,DEF,844HT,3 
*IF,DEF,844FT,2 
*CALL,844HT 
*CALL,844FT 
*IF,DEF,FMD,3 
*CALL,FMDHT 
*CALL,FMDFT 
*IF,-DEF,FMD,4
*IF,DEF,FMDHT,3 
*IF,-DEF,FMDFT,2
*CALL,FMDHT 
*CALL,FMDFT 
*IF,-DEF,FMD,4
*IF,-DEF,FMDHT,3
*IF,DEF,FMDFT,2 
*CALL,FMDHT 
*CALL,FMDFT 
*IF,-DEF,FMD,4
*IF,DEF,FMDHT,3 
*IF,DEF,FMDFT,2 
*CALL,FMDHT 
*CALL,FMDFT 
*IF DEF,MSS,2 
*IF DEF,NOS,1 
*CALL,MSSCSU
*IF DEF,MSS,2 
*IF DEF,NOS,1 
*CALL,MSSMST
*IF DEF,MSS,2 
*IF DEF,NOS,1 
*CALL,MSSMSC
*IF,DEF,LCN,2 
*CALL,LCN1
*CALL,LCN2
*IF,DEF,DEMA,4
*IF DEF,NOS,3 
*CALL,DEMA1 
*CALL,DEMA2 
*CALL,DEMA3 
*IF -DEF,895M,2 
*IF DEF,FSD,1 
*CALL,ISD 
*IF -DEF,FSD,2
*IF DEF,895M,1
*CALL,ISD1
*IF -DEF,895M,2 
*IF DEF,FSD,1 
*CALL,ISD1
*IF DEF,895M,3
*IF DEF,FSD,2 
*CALL,ISD 
*CALL,ISD1
*IF DEF,LS885,2 
*CALL,LSFMD1
*CALL,LSFMD2
*IF DEF,895M,1
*CALL,P895D 
*IF DEF,895M,1
*CALL,D895
*IF DEF,ESM,1 
*CALL,DESM
*IF DEF,CART,1
*CALL,DCART 
          END                                                            MLD
