*COMDECK,66X                                                             MLD
          EJECT                                                          MLD
 56X      SEGMENT POVLA                                                  MLD
          ORG    POVLA                                                   MLD
          QUAL   66X                                                     MLD
*CALL,VERS
          COMMENT 66X PRODUCT OVERLAY FOR MALET "VERS"
          TITLE  HIGH LEVEL 66X TAPE PRODUCT OVERLAY FOR MALET.          MLD
**        TAPE HIGH LEVEL LANGUAGE SUPPORT                               MLD
*                                                                        MLD
*         56X IS THE PRODUCT OVERLAY DESIGNED TO SUPPORT THE  66X  TAPE  MLD
*         SUBSYSTEM.  56X  IS  DRIVEN BY THE INSTRUCTION STACK OF MALET  MLD
*         BASIC PPU DRIVER. REQUESTS ARE MADE BY THE DRIVER BY  STORING  MLD
*         PARAMETERS INTO PPU DIRECT CELLS AND PERFORMING A RETURN-JUMP  MLD
*         TO AN OVERLAY SUBROUTINE. ONCE THE REQUEST HAS BEEN COMPLETED  MLD
*         CONTROL IS RETURNED TO THE STACK TO EXECUTE THE NEXT COMMAND.  MLD
*                                                                        MLD
*         ALL  SUBROUTINES  IN  THIS PRODUCT OVERLAY USE A COMMON ERROR  MLD
*         EXIT SEQUENCE WHEN AN ERROR IS DETECTED. THIS SEQUENCE STORES  MLD
*         AN INTERNAL ERROR CODE INTO THE EC REGISTER, AN ERROR MESSAGE  MLD
*         INDEX INTO THE EM REGISTER, AND THE P REGISTER CONTENTS (LINE  MLD
*         NUMBER) INTO THE EA REGISTER.  A CHECK IS THEN MADE TO SEE IF  MLD
*         AN ABT ADDRESS WAS SPECIFIED BY THE USER ON THE COMMAND  THAT  MLD
*         JUST  FAILED.   IF IT WAS, A JUMP IS MADE TO THIS ADDRESS VIA  MLD
*         THE RNI ROUTINE IN THE BASIS PPU DRIVER. IF ABT  ADDRESS  WAS  MLD
*         NOT  SPECIFIED,  THE ABORT ROUTINE IN THE BASIC PPU DRIVER IS  MLD
*         ENTERED. THIS ROUTINE EITHER ABORTS THE TESTING AND DROPS THE  MLD
*         PPU,  OR  RESTARTS  EXECUTION AT MODULE ENTRY POINT DEPENDING  MLD
*         UPON THE CURRENT SETTING OF THE STOP-ON-ERROR  SWITCH  (ABORT  MLD
*         IF SET).                                                       MLD
*                                                                        MLD
*         IT  IS  THE USERS RESPONSIBILITY TO TEST GENERAL STATUS AFTER  MLD
*         EACH I/O OPERATION TO DETERMINE IF THE OPERATION COMPLETED AS  MLD
*         EXPECTED.                                                      MLD
*                                                                        MLD
*         THE  PRODUCT  OVERLAY  ASSUMES  THAT  PARAMETER  REGISTER  P0  MLD
*         CONTAINS THE TAPE SPEED OF THE DEVICE ASSIGNED.                MLD
*                                                                        MLD
*         P0 - TAPE SPEED                                                MLD
*                                                                        MLD
*           100 = 100 INCHES PER SECOND                                  MLD
*           150 = 150 INCHES PER SECOND                                  MLD
*           200 = 200 INCHES PER SECOND                                  MLD
*                                                                        MLD
          EJECT                                                          MLD
**        THE FOLLOWING TABLE DEFINES THE ERROR CODES AND MESSAGES THAT  MLD
*         MAY BE GENERATED FOR EACH COMMAND FOR 66X.                     MLD
*                                                                        MLD
*                                   READ------------. .-----RESET        MLD
*                                  MARGINS--------. . . .----REWIND      MLD
*                                 FSPACE--------. . . . . .---STATUS     MLD
*                                ERASE--------. . . . . . . .--TIME      MLD
*                               ENDFILE-----. . . . . . . . . .-UNLOAD   MLD
*                              BKSP-------. . . . . . . . . . . -WAITNB  MLD
*                             RES-------. . . . . . . . . . . . . WRITE  MLD
*                            REL------. . . . . . . . . . . . . . .      MLD
* CODE      MESSAGE                   . . . . . . . . . . . . . . .      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 04 WC OR BUFFER INDEX ERROR         . . . . . . . . . . . X . . X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 10 ILLEGAL COMMAND                  . X . . . . X . . . . . . . .      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 11 CH ACTIVE FROM SYSTEM            . X X X X X X X X X X X X X X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 14 INACTIVE DURING OUTPUT           . X X . . . . . . . . . . . X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 17 FUNC NOT ACCEPTED                X X X X X X . X X X . X X . X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 20 NO END OF OP                     . . X X X X . X . X . X X . X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 21 UNIT HUNG BUSY                   . . . . . . . . . . . . . X .      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 23 UNIT NOT READY                   . . . . . . . . . X . . . . . 
*    -------------------------------- - - - - - - - - - - - - - - - 
* 25 CH ACTIVE BEFORE FUNC            X X X X X X . X X X . X X . X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 36 NO INACTIVE TO FORMAT FUNC       . X . . . . . . . . . . . . .      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 40 NO INACTIVE TO STATUS FUNC       . X X X X X . X X X X X X X X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 41 NO STATUS RETURNED               . X X X X X . X X X X X X X X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 42 CH ACTIVE AFTER STATUS INPUT     . X X X X X . X . X X X X X X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 47 INCOMPLETE STATUS RETURNED       . X X X X X . X . X X X X X X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 60 UNIT SPEED DISAGREE              . X . . . . . . . . . . . . .      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 61 UNIT TYPES DISAGREE              . X . . . . . . . . . . . . .      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 67 CH TIMEOUT BEFORE INACTIVE       . . X X X X . X . X . X X . X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 70 CH NOT RESERVED                  . . X X X X . X X X X X X X X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 72 NO EMPTY TO LAST OUTPUT BYTE     . X X . . . . . . . . . . . X      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 73 REWIND/UNLOAD STATUS ERROR       . . . . . . . . X X . . X . .      MLD
*    -------------------------------- - - - - - - - - - - - - - - -      MLD
* 74 COMMAND TIME LIMIT               . . . . . . . . X X . . X . .      MLD
*    --------------------------------------------------------------      MLD
*                                                                        MLD
          EJECT                                                          MLD
*         EQUATES FOR ERROR CODES - FIRST 7 ARE FOR BASIC DRIVER.        MLD
                                                                         MLD
 EC.FLE   EQU    1           ADDRESS OUT OF FIELD LENGTH                 MLD
 EC.TL    EQU    2           TIME LIMIT ERROR FOR COMMUNICATIONS         MLD
 EC.SEE   EQU    3           SUBROUTINE ENTRY/EXIT ERROR                 MLD
 EC.WC    EQU    4           BUFFER REFERENCE OR WC ERROR                MLD
 EC.RES   EQU    5           RESERVED FOR BASIC DRIVER                   MLD
 EC.RES1  EQU    6           RESERVED FOR BASIC DRIVER                   MLD
 EC.RES2  EQU    7           RESERVED FOR BASIC DRIVER                   MLD
                                                                         MLD
 EC.ILL   EQU    10B         ILLEGAL COMMAND OR OPTION                   MLD
 EC.CAS   EQU    11B         CHANNEL ACTIVE FROM SYSTEM                  MLD
                                                                         MLD
 EC.IDO   EQU    14B         WRITE DATA XFER INCOMPLETE                  MLD
 EC.FNA   EQU    17B         FUNCTION NOT ACCEPTED                       MLD
 EC.NEO   EQU    20B         NO END OF OPERATION                         MLD
 EC.UHB   EQU    21B         UNIT STILL BUSY AFTER END OF OP             MLD
 EC.UNR   EQU    23B         UNIT NOT READY 
 EC.ABF   EQU    25B         CH ACTIVE BEFORE FUNCTION                   MLD
 EC.FFNA  EQU    36B         FORMAT FUNCTION NOT ACCEPTED                MLD
 EC.SFR   EQU    40B         STATUS FUNCTION NOT ACCEPTED                MLD
 EC.NSR   EQU    41B         NO STATUS RETURNED                          MLD
 EC.AAS   EQU    42B         CH ACTIVE AFTER STATUS INPUT                MLD
 EC.ISR   EQU    47B         INCOMPLETE STATUS RETURNED                  MLD
 EC.SSD   EQU    60B         SELECTED/ACTUAL UNIT SPEEDS DISAGREE        MLD
 EC.STD   EQU    61B         SELECTED/ACTUAL UNIT TYPE DISAGREE          MLD
 EC.CTO   EQU    67B         CHANNEL TIMEOUT BEFORE INACTIVE             MLD
                                                                         MLD
 EC.CNR   EQU    70B         CHANNEL NOT RESERVED                        MLD
 EC.LOL   EQU    72B         LAST OUTPUT WORD LOST                       MLD
 EC.RUE   EQU    73B         REWIND OR UNLOAD ERROR                      MLD
 EC.TLE   EQU    74B         TIME LIMIT EXPIRED ON REWIND/UNLOAD         MLD
                                                                         MLD
*         DIRECT CELL EQUATES.                                           MLD
                                                                         MLD
 S1       EQU    60B         LOWER 12 BITS OF ABT ADDRESS                MLD
 S2       EQU    61B         UPPER 6 BITS OF ABT ADDRESS                 MLD
 BL       EQU    62B         LENGTH OF IB/OB                             MLD
 WL       EQU    63B         WRITE LOOP COUNT ON LAST WRITE COMMAND      MLD
 SC       EQU    64B         SCRATCH DIRECT CELL FOR USE BY SUBROUTINES  MLD
 FORMAT1  EQU    65B         FIRST WORD OF FORMATS TO UNIT               MLD
 FORMAT2  EQU    66B         SECOND WORD OF FORMATS TO UNIT              MLD
 PAUSE    EQU    67B         PAUSE FUNCTION IF NOS OPERATING SYSTEM      MLD
                                                                         MLD
*         EQUATES FOR EQUIPMENT FUNCTIONS.                               MLD
                                                                         MLD
 AUTO     EQU    414B        AUTOLOAD                                    MLD
 BACKSP   EQU    113B        NORMAL BACKSPACE                            MLD
 CBFG     EQU    314B        CONTROL BACKSPACE FIND GAP                  MLD
 CLIP     EQU    6           SELECT READ CLIPS                           MLD
 CS       EQU    212B        CUMULATIVE STATUS                           MLD
 DS       EQU    112B        DETAIL STATUS                               MLD
 EOF      EQU    51B         WRITE END-OF-FILE                           MLD
 ERASER   EQU    52B         ERASE 6 INCHES OF TAPE                      MLD
 FORESP   EQU    13B         FORSPACE ONE RECORD                         MLD
 FORMAT   EQU    30B         FORMAT UNIT                                 MLD
 GS       EQU    12B         GENERAL STATUS                              MLD
 LBKSP    EQU    313B        LONG BACKSPACE                              MLD
 READF    EQU    40B         READ FORWARD                                MLD
 RELEASE  EQU    1           RELEASE UNIT                                MLD
 REW      EQU    10B         REWIND                                      MLD
 STROBE   EQU    7           SELECT READ STROBES                         MLD
 UNL      EQU    110B        UNLOAD                                      MLD
 US       EQU    312B        UNIT STATUS                                 MLD
 WREP     EQU    17B         WRITE REPOSITION                            MLD
 WREPC    EQU    217B        WRITE REPOSITION USING CONTROLLED BACKSPACE MLD
 WREPE    EQU    117B        WRITE REPOSITION TO ERASE                   MLD
 WREPEC   EQU    317B        WRITE REPOSITION TO ERASE USING CONT. BKSP. MLD
 WRITER   EQU    50B         WRITE                                       MLD
                                                                         MLD
*         GENERAL STATUS BIT EQUATES.                                    MLD
                                                                         MLD
 BUSY     EQU    2           UNIT BUSY                                   MLD
 LP       EQU    4           LOAD POINT                                  MLD
 RDY      EQU    1           UNIT READY                                  MLD
 FM       EQU    20B         FILE/TAPE MARK                              MLD
                                                                         MLD
                                                                         MLD
*         DEVICE CODES SUPPORTED.                                        MLD
                                                                         MLD
 T667     EQU    42B         667  7TK UNIT                               MLD
 T669     EQU    52B         669  9TK UNIT                               MLD
          EJECT                                                          MLD
**        ERROR MESSAGES - WRITTEN TO CM DURING INITIALIZATION.          MLD
*                                                                        MLD
*         MMSG MARCO.                                                    MLD
*                                                                        MLD
*         MMSG  MACRO  NAME,ECODE,MSG,FABT                               MLD
*                                                                        MLD
*         NAME  = 6/FABT,6/MESSAGE ORDINAL,6/ECODE.                      MLD
*                                                                        MLD
*         ECODE = ERROR CODE TO BE ASSIGNED (6 BITS).                    MLD
*                                                                        MLD
*         MSG   = ERROR MESSAGE (40 CHARACTERS).                         MLD
*                                                                        MLD
*         FABT  = FORCE ABORT (UPPER 6 BITS OF NAME.                     MLD
*                                                                        MLD
          PURGMAC MMSG                                                   MLD
 MMSG     MACRO  NAME,ECODE,MSG,FABT                                     MLD
          IF     -DEF,MMSGORD,1                                          MLD
 MMSGORD  SET    0                        INITIALIZE ORDINAL             MLD
          IFC    EQ,$FABT$$,2             TEST FOR NO FORCE ABORT        MLD
 NAME     EQU    MMSGORD*100B+ECODE                                      MLD
          ELSE   1                                                       MLD
 NAME     EQU    FABT*10000B+MMSGORD*100B+ECODE                          MLD
 MMSGBGN  SET    *                        SAVE CURRENT ADDRESS           MLD
          IFC    EQ,$MSG$$,2              TEST NULL MESSAGE              MLD
          DATA   1H                       INSURE DATA ITEM               MLD
          ELSE   1                                                       MLD
          DATA   H$MSG$                   STORE MESSAGE                  MLD
          DATA   0                        SET END OF MESSAGE             MLD
          IFGT   *-MMSGBGN,BD.MSGML*5+1,1 TEST MESSAGE TOO LONG          MLD
 P        ERR    MESSAGE TOO LONG                                        MLD
 MMSGORD  SET    MMSGORD+1                BUMP ORDINAL                   MLD
          IFGT   MMSGORD,BD.MSGMN,1       TEST TOO MANY MESSAGES         MLD
 P        ERR    TOO MANY MESSAGES                                       MLD
 MMSGL    SET    MMSGORD*BD.MSGML         SET CM WORD COUNT              MLD
          ENDM                                                           MLD
          EJECT                                                          MLD
 START    LJM    **          ENTRY POINT FOR OVERLAY INITIALIZATION      MLD
          LJM    INIT                                                    MLD
                                                                         MLD
          VFD    12/IB       FWA OF INPUT BUFFER                         MLD
          VFD    12/OB       FWA OF OUTPUT BUFFER                        MLD
          VFD    12/SB       FWA OF STATUS BUFFER                        MLD
          VFD    12/LIB      LENGTH OF INPUT BUFFER                      MLD
          VFD    12/LIB      LENGTH OF OUTPUT BUFFER                     MLD
          VFD    12/LSB      LENGTH OF STATUS BUFFER                     MLD
          VFD    12/BD.VERS  VERSION NUMBER 
                                                                         MLD
                                                                         MLD
*         FIXED ADDRESS TABLE OF SUBROUTINE ENTRY POINTS.                MLD
                                                                         MLD
 XREL     LJM    **                                                      MLD
          LJM    REL         RELEASE SUBROUTINE                          MLD
 XRES     LJM    **                                                      MLD
          LJM    RES         RESERVE SUBROUTINE                          MLD
 XBKSP    LJM    **                                                      MLD
          LJM    BKSP        BACKSPACE SUBROUTINE                        MLD
 XENDFILE LJM    **                                                      MLD
          LJM    ENDFILE     WRITE END-OF-FILE SUBROUTINE                MLD
 XERASE   LJM    **                                                      MLD
          LJM    ERASE       ERASE TAPE SUBROUTINE                       MLD
 XFSPACE  LJM    **                                                      MLD
          LJM    FSPACE      FORESPACE SUBROUTINE                        MLD
 XMARGINS LJM    **                                                      MLD
          LJM    MARGINS     SELECT CLIP AND STROBE MARGINS SUBROUTINE   MLD
 XREAD    LJM    **                                                      MLD
          LJM    READ        HIGH SPEED INPUT SUBROUTINE                 MLD
 XRESET   LJM    **                                                      MLD
          LJM    RESET       RESET (AUTOLOAD) CONTROLLER                 MLD
 XREWIND  LJM    **                                                      MLD
          LJM    REWIND      REWIND TAPE SUBROUTINE                      MLD
 XSTATUS  LJM    **                                                      MLD
          LJM    STATUS      INPUT ALL EQUIPMENT STATUS SUBROUTINE       MLD
 XTIME    LJM    **                                                      MLD
          LJM    TIME        TIME RECORD GAPS ON READ SUBROUTINE         MLD
 XUNLOAD  LJM    **                                                      MLD
          LJM    UNLOAD      UNLOAD TAPE SUBROUTINE                      MLD
 XWAITNB  LJM    **                                                      MLD
          LJM    WAITNB      WAIT NOT BUSY SUBROUTINE                    MLD
 XWRITE   LJM    **                                                      MLD
          LJM    WRITE       HIGH SPEED OUTPUT SUBROUTINE                MLD
          EJECT                                                          MLD
**        REL - RELEASE DEVICE AND I/O CHANNEL.                          MLD
*                                                                        MLD
*         RELEASE DEVICE AND I/O CHANNEL TO  THE  SYSTEM  IF  ASSIGNED.  MLD
*         CALL  BD.DCH  TO FORCE COMMUNICATIONS WITH THE CPU EXECUTIVE.  MLD
*         THIS COULD CAUSE THE PPU DRIVER TO CHECKPOINT AND DROP IF THE  MLD
*         DROP  OR  CHECKPOINT  FLAGS  ARE  ON FROM THE EXEC.  IF ERROR  MLD
*         FLAGS ARE SET AT OUR CONTROL POINT, THE PPU DRIVER IS DROPPED  MLD
*         ALSO.                                                          MLD
*                                                                        MLD
*         ENTRY- (A) = ABORT ADDRESS IN CASE OF AN I/O ERROR DURING      MLD
*                THE RELEASE SEQUENCE.                                   MLD
*                                                                        MLD
*         EXIT - DEVICE CONNECT HAS BEEN RELEASED IF A 3000 DEVICE       MLD
*                IS ASSIGNED, AND THE CHANNEL IS RELEASED TO THE SYSTEM. MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- BD.DCH, DEQP.                                           MLD
*                                                                        MLD
 REL      RJM    DEQP        DISCONNECT EQUIPMENT IF CONNECTED           MLD
          RJM    BD.DCH      DROP CHANNEL/TALK TO SYSTEM AND EXEC        MLD
          LJM    XREL        EXIT TO CALLER                              MLD
          SPACE  4,17                                                    MLD
**        RES - RESERVE EQUIPMENT AND I/O CHANNEL.                       MLD
*                                                                        MLD
*         RELEASE DEVICE VIA DEQP.   DROP  THE  I/O  CHANNEL  IF  BEING  MLD
*         REQUESTED  BY  SYSTEM.  COMMUNICATE  WITH  SYSTEM,  AND  TEST  MLD
*         DROP/CHECKPOINT/ERROR FLAGS. THE I/O CHANNEL IS THEN REQUEST-  MLD
*         ED AND UNIT CONNECTED IF OPTIONS ARE LEGAL.                    MLD
*                                                                        MLD
*         ENTRY- (A) = ABORT ADDRESS IN CASE OF I/O ERROR DURING THE     MLD
*                EXECUTION OF THE RELEASE SEQUENCE.                      MLD
*                                                                        MLD
*         EXIT - I/O CHANNEL ASSIGNED AND CHANNEL ASSIGNED FLAGS ARE SET MLD
*                IN ALL THE OTHER SUBROUTINES.                           MLD
*                                                                        MLD
*                ERRCAS  - IF CHANNEL ACTIVE ON ENTRY.                   MLD
*                ERRFFNA - IF FORMAT FUNCTION NOT ACCEPTED.              MLD
*                ERRSTD  - IF SELECTED TRACKS DISAGREE WITH STATUS.      MLD
*                ERRSSD  - IF SELECTED SPEED DISAGREES WITH STATUS.      MLD
*                ERRILL  - IF FORMAT PARAMETERS NOT ACCEPTED.            MLD
*                                                                        MLD
*         USES - EC, EA, EM, D.T0, D.T1, D.T2, D.T3, D.T4, WAI4, LF, P,  MLD
*                FORMAT1, FORMAT2                                        MLD
*                                                                        MLD
*         CALLS- DEQP, BD.RCH, CCI, OUT, GETS                            MLD
*                                                                        MLD
 RES      RJM    DEQP        DISCONNECT EQUIPMENT IF CONNECTED           MLD
          LCN    3
          STM    RESCTR      STORE COUNT FOR RESERVE RETRIES
          LDN    0                                                       MLD
          STD    EC          CLEAR ERROR REGISTERS                       MLD
          STD    EA                                                      MLD
          STD    EM                                                      MLD
          LDD    D.T0                                                    MLD
          STM    WAI4        STORE LAST SELECTED OPTIONS FOR WAIT SUBR.  MLD
          RJM    BD.RCH      DROP/REQUEST CHANNEL AS REQUESTED           MLD
          AJM    ERRCAS      ERROR IF CHANNEL ACTIVE FROM SYSTEM         MLD
                                                                         MLD
*         POSITION RES OPTION FROM D.T0 TO D.T1 THRU D.T4                MLD
                                                                         MLD
          LDM    WAI4        LOAD SELECTED OPTIONS                       MLD
          STD    D.T0                                                    MLD
          LPC    1000B                                                   MLD
          STD    D.T1        SAVE PARITY                                 MLD
          LDD    D.T0                                                    MLD
          LPC    700B                                                    MLD
          SHN    2                                                       MLD
          STD    D.T2        SAVE XLATE TABLE OPTION                     MLD
          LDD    D.T0                                                    MLD
          LPN    30B                                                     MLD
          SHN    2                                                       MLD
          STD    D.T3        SAVE MODE                                   MLD
          LDD    D.T0                                                    MLD
          LPN    7                                                       MLD
          SHN    6                                                       MLD
          STD    D.T4        SAVE DENSITY                                MLD
          LDD    FORMAT1                                                 MLD
          LPC    4237B       CLEAR OLD XLATE AND MODE SELECTIONS         MLD
          LMD    D.T2        ADD NEW XLATE OPTION                        MLD
          LMD    D.T3        ADD NEW MODE OPTION                         MLD
          STD    FORMAT1     STORE NEW OPTIONS                           MLD
          LDD    FORMAT2                                                 MLD
          LPC    6477B       CLEAR OLD PARITY AND DENSITY SELECTIONS     MLD
          LMD    D.T1        ADD NEW PARITY OPTION                       MLD
          LMD    D.T4        ADD NEW DENSITY OPTION                      MLD
          STD    FORMAT2     STORE NEW OPTIONS                           MLD
 RES0     LDN    FORMAT 
          STD    LF                                                      MLD
          FAN    40B         SELECT FORMAT                               MLD
          LDN    1           WAIT 500 USEC FOR INACTIVE                  MLD
          RJM    CCI                                                     MLD
          NJN    RES1        IF INACTIVE RECEIVED                        MLD
          LDC    ER.FFNA     FORMAT FUNCTION NOT ACCEPTED 
          LJM    ERR
                                                                         MLD
 RES1     ACN    40B         ACTIVATE CHANNEL 
          LDN    2           NUMBER OF PARAMETER WORDS TO OUTPUT
          OAM    FORMAT1,40B
          ZJN    RES1B       ALL DATA ACCEPTED
          SOM    RESCTR 
          NJN    RES0        IF TIME NOT UP RETRY 
 RES1A    LJM    ERRIDO      ELSE ERROR 
  
 RES1B    EJM    RES1C       CHECK LAST WORD OUTPUTTED
          SOM    RESCTR 
          NJN    RES1B       IF TIME NOT UP CHECK EMPTY 
  
 RES1C    DCN    40B         CLEAN UP CHANNEL 
          LDN    1                                                       MLD
          RJM    GETS        GET DETAIL STATUS                           MLD
          LDN    0                                                       MLD
          RJM    GETS        GET GENERAL STATUS                          MLD
          SHN    6                                                       MLD
          MJN    RES6        IF ALERT - CONTROLWARE DID NOT LIKE FORMAT  MLD
          SHN    -12                                                     MLD
          LPN    1                                                       MLD
 RES2     LMN    1           *** LMN 1 IF 9TK UNIT REQUESTED             MLD
*         LMN    0           *** LMN 0 IF 7TK UNIT REQUESTED             MLD
          ZJN    RES3        IF REQUESTED/ACTUAL TRACKS AGREE            MLD
          LJM    ERRSTD                                                  MLD
                                                                         MLD
 RES3     LDM    SB+7        LOAD UNIT SPEED STATUS                      MLD
          SHN    -8                                                      MLD
          LPN    7                                                       MLD
 RES4     LMN    1           *** LMN 1 IF 100 IPS UNIT REQUESTED         MLD
*         LMN    2           *** LMN 2 IF 150 IPS UNIT REQUESTED         MLD
*         LMN    4           *** LMN 4 IF 200 IPS UNIT REQUESTED         MLD
          ZJN    RES5        IF REQUESTED/ACTUAL SPEEDS AGREE            MLD
          LJM    ERRSSD      ERROR IF SELECTED SPEED DISAGREE            MLD
                                                                         MLD
 RESCTR   DATA   0
  
 RES5     LJM    XRES        EXIT TO STACK
                                                                         MLD
 RES6     LJM    ERRILL      ERROR IF FORMAT PARAMETERS NOT ACCEPTED     MLD
          SPACE  4,16                                                    MLD
**        BKSP - BACKSPACE.                                              MLD
*                                                                        MLD
*         BACKSPACE TAPE ACCORDING TO INPUT PARAMETERS.                  MLD
*                                                                        MLD
*         ENTRY- (D.T0) = PARAMETERS FOR BKSP.                           MLD
*                (A)    = ABT ADDRESS.                                   MLD
*                (WC)   = WORD COUNT FOR CONTROL BACKSPACE.              MLD
*                                                                        MLD
*         EXIT - BACKSPACE PERFORMED.                                    MLD
*                (LF)   = LAST FUNCTION ISSUED.                          MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB)   = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, FAN, OUT, WEOP.                                    MLD
*                                                                        MLD
 BKSP     RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDD    D.T0                                                    MLD
          LPN    10B                                                     MLD
          ZJN    BKS         IF NOT LONG CONTROL BACKSPACE               MLD
          LDC    1003B       SHN 3  TO MULTIPLY WC BY 8                  MLD
 BKS      STM    BKS2                                                    MLD
          LDD    D.T0                                                    MLD
          LPN    7           MASK REQUEST                                MLD
          STD    D.T0                                                    MLD
          LDM    BKSA,D.T0   TEST FOR WRITE REPOSITON FUNCTIONS 
          SHN    7
          PJN    BKS0        POSITON USING FRAME COUNT
          LDD    WC 
          UJN    BKS2        POSTION USING 12 BIT BYTE WORD COUNT 
 BKS0     LDD    FORMAT1
          LPC    140B                                                    MLD
          NJN    BKS1        IF PACK/CPU MODE                            MLD
          LDD    WC                                                      MLD
          SHN    1                                                       MLD
          UJN    BKS2                                                    MLD
                                                                         MLD
 BKS1     LDD    WC                                                      MLD
          SHN    1           WC TIMES 2                                  MLD
          ADD    WC          WC TIMES 3                                  MLD
          SHN    -1          WC TIMES 3/2                                MLD
 BKS2     SHN    3           *** SHN 3 IF LONG CONTROL BKSP ***          MLD
*         DATA   0           *** DATA 0 IF NOT LONG CONTROL BKSP ***     MLD
          STD    D.T1        SAVE LOWER 12 BITS 
          SHN    -4 
          STD    D.T2        SAVE 1/16
          SHN    -8          ELIMINATE REST OF LOWER 12 BITS
          SHN    12          REPOSITON
          ADD    D.T1        RESTORE VALUE
          SBD    D.T2        SUB 1/16 = 15/16 THS LEFT
          STM    BKSB+1      SET CHARACTER COUNT TO BACKSPACE OVER       MLD
          SHN    -12                                                     MLD
          STM    BKSB                                                    MLD
          LDM    BKSA,D.T0   LOAD REQUESTED FUNCTION CODE                MLD
          LPC    777B        MASK FUNCTION
          RJM    FAN         ISSUE FUNCTION                              MLD
          LDM    BKSA,D.T0                                               MLD
          SHN    -11         GET FLAG BIT                                MLD
          ZJN    BKS3        IF PARAMETERS NOT REQUESTED                 MLD
          LDC    BKSB                                                    MLD
          RJM    OUT         OUTPUT 2 PARAMETER WORDS FROM (A)           MLD
 BKS3     RJM    WEOP        WAIT END OF OPERATION                       MLD
          LJM    XBKSP       EXIT TO STACK                               MLD
                                                                         MLD
 BKSA     VFD    12/BACKSP       0 = NORMAL BACKSPACE                    MLD
          VFD    12/CBFG+4000B   1 = CONTROLLED BACKSPACE FIND GAP       MLD
          VFD    12/WREP+6000B    2 = WRITE REPOSTION 
          VFD    12/WREPC+6000B   3 = WRITE REPOSTION, CONTROLLED BKSP
          VFD    12/WREPE+6000B   4 = WRITE REPOSTION TO ERASE
          VFD    12/WREPEC+6000B  5 = WRITE REPOSTION TO ERASE, CNT BK
          VFD    12/LBKSP        6 = LONG BACKSPACE                      MLD
          SPACE  4,12                                                    MLD
**        ENDFILE - WRITE END OF FILE.                                   MLD
*                                                                        MLD
*         WRITE A FILE/TAPE MARK ON TAPE.                                MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - END OF FILE WRITTEN.                                    MLD
*                (LF)   = LAST FUNCTION ISSUED.                          MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB)   = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, FAN, WEOP                                          MLD
*                                                                        MLD
 ENDFILE  RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    EOF                                                     MLD
          RJM    FAN         WRITE FILE MARK                             MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
          LJM    XENDFILE    EXIT TO STACK                               MLD
          SPACE  4,12                                                    MLD
**        ERASE - ERASE TAPE.                                            MLD
*                                                                        MLD
*         ERASE APPROXIMATELY 6 INCHES OF TAPE.                          MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - ERASE PERFORMED.                                        MLD
*                (LF)   = LAST FUNCTION ISSUED.                          MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB)   = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, FAN, WEOP.                                         MLD
*                                                                        MLD
 ERASE    RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    ERASER                                                  MLD
          RJM    FAN         ERASE TAPE                                  MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
          LJM    XERASE      EXIT TO STACK                               MLD
          SPACE  4,12                                                    MLD
**        FSPACE - FORWARD SPACE.                                        MLD
*                                                                        MLD
*         MOVE TAPE FORWARD ONE RECORD.                                  MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - TAPE MOVED FORWARE ONE RECORD.                          MLD
*                (LF)   = LAST FUNCTION ISSUED.                          MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB)   = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, FAN, WEOP.                                         MLD
*                                                                        MLD
 FSPACE   RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    FORESP                                                  MLD
          RJM    FAN         FORESPACE ONE RECORD                        MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
          LJM    XFSPACE     EXIT TO STACK                               MLD
          SPACE  4,12                                                    MLD
**        MARGINS - PROCESS MARGIN SELECTION.                            MLD
*                                                                        MLD
*         STORE SELECTED MARGINS FOR NEXT READ/WRITE OPERATION.          MLD
*                                                                        MLD
*         ENTRY- (A) = MARGIN SELECTION.                                 MLD
*                                                                        MLD
*         EXIT - MARGINS SAVED FOR SUBSEQUENT OPERATIONS.                MLD
*                (STROBES) = STROBE FUNCTION                             MLD
*                (CLIPS)   = CLIP FUNCTION                               MLD
*                                                                        MLD
*                ERRILL - IF ILLEGAL CLIP/STROBE OPTION.                 MLD
*                                                                        MLD
*         USES - STROBES, CLIPS, P, S1, S2.                              MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 MARGINS  STD    D.T0        SAVE MARGINS SELECTIONS                     MLD
          SHN    -3          GET STROBE SELECTIONS                       MLD
          ZJN    MAR1        IF NORMAL SELECTION IS MADE                 MLD
          SBN    3                                                       MLD
          PJN    MAR3        IF ILLEGAL STROBE SELECTION                 MLD
          ADN    3                                                       MLD
          SHN    6                                                       MLD
          ADN    STROBE      FORM FUNCTON CODE TO ISSUE                  MLD
 MAR1     STM    STROBES     STORE FUNCTION ( ZERO IF NONE TO DO)        MLD
          LDD    D.T0                                                    MLD
          LPN    3           GET CLIPS                                   MLD
          ZJN    MAR2        IF NORMAL SELECTION IS MADE                 MLD
          SHN    6                                                       MLD
          ADN    CLIP        FORM FUNCTION CODE TO ISSUE                 MLD
 MAR2     STM    CLIPS       STORE FUNCTION( ZERO IF NONE TO DO)         MLD
          LJM    XMARGINS    EXIT TO STACK                               MLD
                                                                         MLD
 MAR3     LDN    0                                                       MLD
          STD    S1          INDICATE NO ABT ADDRESS                     MLD
          STD    S2                                                      MLD
          LJM    ERRILL      ERROR IF ILLEGAL PARAMETERS FOR CLIP/STROBE MLD
          SPACE  4,16                                                    MLD
**        READ - READ RECORD.                                            MLD
*                                                                        MLD
*         READ  ONE  RECORD  TO  THE  INPUT BUFFER.  SAVE THE NUMBER OF  MLD
*         WORDS REQUESTED IN THE WC REGISTER OR THE  FIRST  500B  WORDS  MLD
*         AND CONTINUE READING UNTIL END-OF-RECORD.                      MLD
*                                                                        MLD
*         ENTRY- (A)  = ABT ADDRESS.                                     MLD
*                (WC) = WORD COUNT TO READ.                              MLD
*                                                                        MLD
*         EXIT - ONE RECORD READ TO INPUT BUFFER.                        MLD
*                (WT) = WORDS TRANSMITTED.                               MLD
*                (LF)   = LAST FUNCTION ISSUED.                          MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB)   = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*         USES - D.T1, SC, WT, D.T2, P.                                  MLD
*                                                                        MLD
*         CALLS- TCA, FAN, WEOP                                          MLD
*                                                                        MLD
 READ     RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STM    WTA                                                     MLD
          STD    D.T1        CLEAR LOOP COUNT                            MLD
          LDD    WC                                                      MLD
          STD    SC          SET WORDS TO READ TO IB                     MLD
          SBD    BL                                                      MLD
          MJN    RD1         IF WC IS LESS THAN BUFFER SIZE              MLD
          LDD    BL                                                      MLD
          STD    SC          SET IT TO BUFFER SIZE IF LARGER             MLD
 RD1      LDM    STROBES                                                 MLD
          ZJN    RD2         IF NORMAL STROBES TO BE USED                MLD
          RJM    FAN         ISSUE REQUESTED STROBE FUNCTION             MLD
 RD2      LDM    CLIPS                                                   MLD
          ZJN    RD3         IF NORMAL CLIPS TO BE USED                  MLD
          RJM    FAN         ISSUE REQUESTED CLIP FUNCTION               MLD
 RD3      LDD    D.T0        GET FWD/REV READ FLAG                       MLD
          LPN    1                                                       MLD
          SHN    6                                                       MLD
          ADN    READF                                                   MLD
          RJM    FAN         ISSUE FORWARD OR REVERSE READ               MLD
          ACN    40B                                                     MLD
          LDD    SC                                                      MLD
          ZJN    RD4         IF NO WORDS REQUESTED - SKIP RECORD         MLD
          IAM    IB          READ DATA TO INPUT BUFFER                   MLD
          NJN    RD5         IF END OF RECORD                            MLD
 RD4      LDD    BL 
          IAM    OB          READ 500B MORE WORD TO THE OUTPUT BUFFER 
          NJN    RD6         IF END OF RECORD                            MLD
          AOD    D.T1        BUMP LOOP COUNTER                           MLD
          UJN    RD4         CONTINUE THE READ                           MLD
                                                                         MLD
 RD5      STD    D.T2        SAVE REMAINER                               MLD
          LDD    SC          WORDS REQUESTED TO BE READ                  MLD
          UJN    RD7         GO CALCULATE TOTAL WORDS READ               MLD
                                                                         MLD
 RD6      STD    D.T2                                                    MLD
          LDD    BL 
          ADD    SC                                                      MLD
 RD7      SBD    D.T2                                                    MLD
          STD    D.T2                                                    MLD
          LDD    D.T1                                                    MLD
          SHN    3           MULTIPLY TIMES THROUGH LOOP BY 8            MLD
          STD    WT          SAVE IT
          LDD    D.T1 
          SHN    5           MULTIPLY TIME THROUGH LOOP BY 32 
          ADD    WT          TIMES 8 + TIMES 32 = TIMES 40
          SHN    3           TIMES 40 * 8 = TIMES 320D (500B) 
          ADD    D.T2                                                    MLD
          STD    WT          STORE TOTAL                                 MLD
          SHN    -12                                                     MLD
          STM    WTA                                                     MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
          LJM    XREAD       EXIT TO STACK                               MLD
          SPACE  4,17                                                    MLD
**        RESET - AUTOLOAD CONTROLLER.                                   MLD
*                                                                        MLD
*         ENTRY - (A) = ABT ADDRESS.                                     MLD
*                                                                        MLD
*         EXIT  - AUTOLOAD FUNCTION ISSUED AND BC RESTARTED.             MLD
*                 (LF) = LAST FUNCTION ISSUED.                           MLD
*                                                                        MLD
*         USES  - P.                                                     MLD
*                                                                        MLD
*         CALLS - TCA, RAN, WEOP, WAIT.                                  MLD
*                                                                        MLD
 RESET    RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDC    AUTO                                                    MLD
          RJM    FAN         ISSUE AUTOLOAD FUNCTION                     MLD
          ACN    40B         ACTIVATE CHANNEL                            MLD
          PSN                PERFORM WARM START                          MLD
          DCN    40B         DEACTIVATE CHANNEL                          MLD
          LJM    XRESET      EXIT TO STACK                               MLD
          SPACE  4,17                                                    MLD
**        REWIND - REWIND TAPE.                                          MLD
*                                                                        MLD
*         REWIND  TAPE  IF NOT ALREADY AT LOAD POINT.  THE REWIND FUNC-  MLD
*         TION IS ISSUED AND THE PPU IS CHECKPOINTED AND DROPPED FOR  5  MLD
*         SECONDS.   WHEN BROUGHT BACK IN, THE PPU TESTS FOR READY, NOT  MLD
*         BUSY, AND LOAD POINT.  IF NOT IT REPEATS  THE  DROP  SEQUENCE  MLD
*         UNTIL  THESE CONDITIONS EXISTS OR UNTIL 5 MINUTES HAS ELAPSED  MLD
*         (ERROR SITUATION).                                             MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - REWIND OPERATION COMPLETED.                             MLD
*                (LF)   = LAST FUNCTION ISSUED.                          MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB)   = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*         USES  - P.                                                     MLD
*                                                                        MLD
*         CALLS - TCA, FAN, WEOP, WAIT.                                  MLD
*                                                                        MLD
 REWIND   RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    0           GENERAL STATUS 
          RJM    GETS 
          SHN    17-0 
          MJN    REW1        UNIT IS READY
          LDC    ER.UNR 
          LJM    ERR         UNIT NOT READY BEFORE REWIND 
  
 REW1     LDN    REW
          RJM    FAN         ISSUE REWIND FUNCTION                       MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
          LDN    RDY+LP                                                  MLD
          RJM    WAIT        GO WAIT 5 MINUTES FOR READY/NBSY/LP         MLD
          LJM    XREWIND     EXIT TO STACK                               MLD
          SPACE  4,14                                                    MLD
**        STATUS - INPUT STATUS.                                         MLD
*                                                                        MLD
*         INPUT  REQUESTED  STATUS  FROM  THE  CONTROLLER TO THE STATUS  MLD
*         BUFFER.                                                        MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (D.T0) = TYPE OF STATUS WANTED.                         MLD
*                                                                        MLD
*         EXIT - STATUS READ TO THE STATUS BUFFER.                       MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, GETS.                                              MLD
*                                                                        MLD
 STATUS   RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDD    D.T0                                                    MLD
          LPN    3                                                       MLD
          RJM    GETS        GET REQUESTED STATUS                        MLD
          LJM    XSTATUS     EXIT TO STACK                               MLD
          SPACE  4,14                                                    MLD
**        TIME - TIME RECORD GAPS.                                       MLD
*                                                                        MLD
*         TIME THE REQUESTED NUMBER OF GAPS  AND  STORE  THE  RESULTING  MLD
*         DECIMAL GAP SIZES INTO THE INPUT BUFFER.                       MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (D.T0) = NUMBER OF GAPS TO TIME.                        MLD
*                                                                        MLD
*         EXIT - (D.T0) TIMES RECORDED IN INPUT BUFFER.                  MLD
*                (WT) = NUMBER OF RECORDS TIMED.                         MLD
*                (LF)   = LAST FUNCTION ISSUED.                          MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB)   = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*                ERRWC  - IF ILLEGAL RECORD COUNT SPECIFIED.             MLD
*                                                                        MLD
*         USES - D.Z1 THRU D.T7, P, SC, WT, WTA.                         MLD
*                                                                        MLD
*         CALLS- TCA, FAN, WEOP.                                         MLD
*                                                                        MLD
 TIME     RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    0                                                       MLD
          STD    SC          SET FIRST PASS FLAG                         MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STM    WTA                                                     MLD
          LDD    D.T0                                                    MLD
          STD    D.T2        SET NUMBER OF RECORDS TO DO                 MLD
          NJN    TIM2        IF LEGAL NUMBER OF RECORDS                  MLD
 TIM1     LJM    ERRWC       ERROR IF ILLEGAL RECORD COUNT               MLD
                                                                         MLD
 TIM2     SBN    51                                                      MLD
          PJN    TIM1        IF ILLEGAL NUMBER OF RECORDS                MLD
          ADN    51                                                      MLD
          SHN    1                                                       MLD
          ADD    D.T2        NUMBER OF RECORDS TIMES 3 (WORDS TO STORE)  MLD
          STD    D.Z1                                                    MLD
          LDD    D.T1        GET BUFFER ADDRESS                          MLD
          STD    D.T3        STORE ADDRESS OF INPUT BUFFER               MLD
          ADC    -IB                                                     MLD
          MJN    TIM1        ERROR IF ILLEGAL BUFFER ADDRESS             MLD
          ADD    D.Z1                                                    MLD
          SBD    BL                                                      MLD
          SBN    1                                                       MLD
          PJN    TIM1        ERROR IF ILLEGAL BUFFER ADDRESS             MLD
 TIM3     LDN    READF                                                   MLD
          RJM    FAN         ISSUE FORWARD READ FUNCTION                 MLD
          ACN    40B                                                     MLD
          LDD    D.Z3        LOAD STARTING TIME - TIME OF LAST BYTE      MLD
          STD    D.T5        SET LOWER BYTE OF TIMER                     MLD
          STD    D.T6        SET LOWER BYTE OF COMPARE TIMER             MLD
          SHN    -11                                                     MLD
          STD    D.T4        SET UPPER BYTE OF TIMER                     MLD
          LDN    0                                                       MLD
          STD    D.Z1        CLEAR TIMES THROUGH INPUT LOOP COUNTER      MLD
 TIM4     FJM    TIM5        IF DATA IS AVAILABLE                        MLD
          IANN   14B+40B                                                 MLD
          STD    D.Z6        SAVE LOWER BYTE OF COMPARE TIMER            MLD
          FJM    TIM5        IF DATA IS AVAILABLE                        MLD
          SHN    -11         CAPTURE TIME OF FIRST BYTE                  MLD
          LMD    D.T4                                                    MLD
          LPN    1                                                       MLD
          FJM    TIM5        IF DATA IS AVAILABLE                        MLD
          RAD    D.T4        COUNT MILLISECONDS AS THEY GO BY            MLD
          LDD    D.Z6                                                    MLD
          STD    D.T6        UPDATE LOWER BYTE OF COMPARE TIMER          MLD
          FJM    TIM5        IF DATA IS AVAILABLE                        MLD
          LDD    D.T4        2 MSEC COUNT                                MLD
          SBN    31                                                      MLD
          NJN    TIM4        IF 62 MILLISECONDS HAS NOT PASSED           MLD
 TIM5     LDN    10B                                                     MLD
          IAM    RDA         READ 8 WORDS                                MLD
          NJN    TIM6        IF END OF RECORD                            MLD
          AOD    D.Z1        BUMP BLOCK COUNTER                          MLD
          UJN    TIM5        KEEP ON READING                             MLD
                                                                         MLD
 TIM6     STD    D.Z2        CALCULATE BYTES READ                        MLD
          IANN   14B+40B     GET TIME OF LAST BYTE                       MLD
          STD    D.Z3        SAVE AS THE STARTING TIME FOR NEXT RECORD   MLD
          LDN    10B                                                     MLD
          SBD    D.Z2                                                    MLD
          STD    D.Z2                                                    MLD
          LDD    D.Z1                                                    MLD
          SHN    3                                                       MLD
          ADD    D.Z2                                                    MLD
          STD    D.T7        SAVE BYTES READ                             MLD
          LDD    D.T6                                                    MLD
          SHN    7                                                       MLD
          SCN    77B                                                     MLD
          ADD    D.T4                                                    MLD
          SHN    11                                                      MLD
          SBD    D.T5                                                    MLD
          SHN    -4          DIVIDE TIME BY 16D                          MLD
          STI    D.T3        STORE TIME IN INPUT BUFFER                  MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
          LDD    SC                                                      MLD
          NJN    TIM7        IF NOT FIRST PASS                           MLD
          AOD    SC          INDICATE NOT FIRST PASS                     MLD
 TIM8     LJM    TIM3        TAPE IS NOW IN MOTION - START TIMING 
                                                                         MLD
 TIM7     AOD    D.T3        BUMP BUFFER ADDRESS                         MLD
          LDM    SB+1        GENERAL STATUS                              MLD
          STI    D.T3        SAVE GENERAL STATUS FOR THIS RECORD         MLD
          AOD    D.T3        BUMP BUFFER ADDRESS                         MLD
          LDD    D.T7                                                    MLD
          STI    D.T3        STORE WORDS READ FOR THIS RECORD            MLD
          AOD    D.T3        BUMP BUFFER ADDRESS                         MLD
          SOD    D.T2                                                    MLD
          NJN    TIM8        CONTINUE THE READ
                                                                         MLD
 TIM9     LDC    GAPS                                                    MLD
          STD    D.Z1        SET POINTER TO GAPS BUFFER                  MLD
          LDC    TIMES                                                   MLD
          STD    D.Z2        SET POINTER TO TIMES BUFFER                 MLD
          LDN    0                                                       MLD
          STD    D.Z5        CLEAR TOTAL GAP SIZE                        MLD
 TIM10    LDI    D.T1        GET TIME FROM INPUT BUFFER                  MLD
          SHN    4           MULTIPLY TIME BY 16D                        MLD
 TIM11    SBI    D.Z2                                                    MLD
          MJN    TIM13       IF UNDERFLOW                                MLD
          STD    D.Z3        STORE REMAINDER                             MLD
          SHN    -12                                                     MLD
          STD    D.Z4                                                    MLD
          LDI    D.Z1        GET SIZE FROM GAPS                          MLD
          RAD    D.Z5        BUMP TOTAL GAP SIZE                         MLD
 TIM12    LDD    D.Z4        RESTORE REMAINDER                           MLD
          SHN    12                                                      MLD
          ADD    D.Z3                                                    MLD
          UJN    TIM11       CONTINUE THE DIVIDE                         MLD
                                                                         MLD
 TIM13    ADI    D.Z2        MAKE THE REMAINDER POSITIVE                 MLD
          STD    D.Z3        SAVE REMAINDER                              MLD
          SHN    -12                                                     MLD
          STD    D.Z4                                                    MLD
          AOD    D.Z2        BUMP POINTER TO TIMES                       MLD
          AOD    D.Z1        BUMP POINTER TO GAPS                        MLD
          LDI    D.Z1                                                    MLD
          NJN    TIM12       IF NOT END OF TABLE, CONTINUE DIVIDE        MLD
          LDD    D.Z5                                                    MLD
 TIM14    STI    D.T1        STORE GAP SIZE INTO THE IB                  MLD
          LDN    3                                                       MLD
          RAD    D.T1        BUMP POINTER TO THE IB                      MLD
          AOD    WT          BUMP WORDS TRANSMITTED                      MLD
          SBD    D.T0        CHECK RECORDS TO DO                         MLD
          ZJN    TIM15       IF ALL RECORDS DONE                         MLD
          LJM    TIM9        CONTINUE CONVERSION TO INCHES               MLD
                                                                         MLD
 TIM15    LJM    XTIME       EXIT TO THE STACK
                                                                         MLD
 GAPS     DATA   40          RECORD SIZE FOR .40 INCHES                  MLD
          DATA   20          RECORD SIZE FOR .20 INCHES                  MLD
          DATA   10          RECORD SIZE FOR .10 INCHES                  MLD
          DATA   5           RECORD SIZE FOR .05 INCHES                  MLD
          DATA   1           RECORD SIZE FOR .01 INCHES                  MLD
 LGAPS    EQU    *-GAPS                                                  MLD
          DATA   0           END OF GAPS TABLE                           MLD
                                                                         MLD
 TIMES    BSSZ   LGAPS       TIMES STORED HERE BASED ON UNIT SPEED       MLD
*                                DECIMAL VALUES ARE AS FOLLOWS           MLD
*                                                                        MLD
*                                     .40  .20  .10   .05  .01           MLD
*                                                                        MLD
*                            200IPS = 2000 1000  500  250   50           MLD
*                            150IPS = 2666 1333  666  333   66           MLD
*                            100IPS = 4000 2000 1000  500  100           MLD
          SPACE  4,12                                                    MLD
**        UNLOAD - UNLOAD TAPE.                                          MLD
*                                                                        MLD
*         UNLOAD TAPE WITH UNLOAD FUNCTION.                              MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - REWIND UNLOAD OPERATION COMPLETE.                       MLD
*                (LF)   = LAST FUNCTION ISSUED.                          MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB)   = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, FAN, WEOP, WAIT.                                   MLD
*                                                                        MLD
 UNLOAD   RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDC    UNL                                                     MLD
          RJM    FAN         ISSUE UNLOAD FUNCTION                       MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
          LDN    0                                                       MLD
          RJM    WAIT        WAIT 5 MINUTES FOR NOT BUSY/NOT RDY         MLD
          LJM    XUNLOAD     EXIT TO STACK                               MLD
          SPACE  4,14                                                    MLD
**        WAITNB - WAIT NOT BUSY.                                        MLD
*                                                                        MLD
*         VERIFY THAT THE CHANNEL IS ASSIGNED AND WAIT UNTIL  THE  UNIT  MLD
*         GOES  NOT  BUSY  OR  1  SECOND  HAS  ELAPSED. (ERROR IF DELAY  MLD
*         EXPIRES BEFORE BUSY DROPS)                                     MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - UNIT IS READY AND NOT BUSY.                             MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB)   = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*                ERRUHB  - IF UNIT HUNG BUSY FOR ONE SECOND.             MLD
*                                                                        MLD
*         USES - D.T1, P.                                                MLD
*                                                                        MLD
*         CALLS- TCA, GETS.                                              MLD
*                                                                        MLD
 WAITNB   RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    1                                                       MLD
          STD    D.T1        SET TIME COUNTER                            MLD
 WNB1     LDN    0                                                       MLD
          RJM    GETS        GET GENERAL STATUS                          MLD
          LPN    BUSY                                                    MLD
          NJN    WNB2        IF STILL BUSY                               MLD
          LJM    XWAITNB     EXIT TO CALLER                              MLD
                                                                         MLD
 WNB2     IANN   14B+40B     GET CURRENT TIME                            MLD
          SHN    -10                                                     MLD
          LMD    D.T1                                                    MLD
          LPN    1                                                       MLD
          RAD    D.T1        COUNT MILLISECONDS AS THEY PASS BY          MLD
          SHN    -10                                                     MLD
          NJN    WNB3        IF ONE SECOND HAS PASSED                    MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
          LDD    D.PPOR                                                  MLD
          CWD    PAUSE       WRITE PAUSE FUNCTION                        MLD
          ENDIF                                                          MLD
                                                                         MLD
          UJN    WNB1                                                    MLD
 WNB3     LJM    ERRUHB      ERROR IF HUNG BUSY FOR ONE SECOND           MLD
          SPACE 4,14                                                     MLD
**        WRITE - WRITE RECORD.                                          MLD
*                                                                        MLD
*         WRITE A RECORD ON TAPE.                                        MLD
*                                                                        MLD
*         ENTRY- (A)  = ABT ADDRESS.                                     MLD
*                (WC) = WORD COUNT TO WRITE.                             MLD
*                                                                        MLD
*         EXIT - ONE RECORD WRITTEN TO TAPE.                             MLD
*                (WT) AND (WTA) = WORDS TRANSMITTED.                     MLD
*                (LF)   = LAST FUNCTION ISSUED.                          MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB)   = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*                ERRWC  - IF (WC) IS ZERO.                               MLD
*                ERRLOL - IF NO EMPTY ON LAST WORD OUTPUT.               MLD
*                ERRIDO - IF CH INACTIVE DURING OUTPUT.                  MLD
*                                                                        MLD
*         USES - WT, WTA, WL, D.T1, D.T2, D.T3, SC, D.Z1, D.Z2, D.Z3     MLD
*                                                                        MLD
*         CALLS- TCA, FAN, WEOP                                          MLD
*                                                                        MLD
 WRITE    RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STM    WTA                                                     MLD
          STD    WL          CLEAR WRITE LOOP COUNTER                    MLD
          LDD    WC                                                      MLD
          NJN    WR1         IF LEGAL WORD COUNT                         MLD
          LJM    ERRWC       ERROR IF WORD COUNT OUT OF RANGE            MLD
                                                                         MLD
 WR1      STD    D.T1        SAVE WORD COUNT                             MLD
                                                                         MLD
*         SEND STROBE AND CLIP FUNCTIONS IF SELECTED                     MLD
                                                                         MLD
          LDC    **                                                      MLD
 STROBES  EQU    *-1         *** STROBE FUNCTION STORED HERE BY MARGINS  MLD
          ZJN    WR2         IF NORMAL STROBE SELECTED                   MLD
          RJM    FAN         ISSUE REQUESTED STROBE FUNCTION             MLD
 WR2      LDC    **                                                      MLD
 CLIPS    EQU    *-1         *** CLIP FUNCTION STORED HERE BY MARGINS    MLD
          ZJN    WR3         IF NORMAL CLIP SELECTED                     MLD
          RJM    FAN         ISSUE REQUESTED CLIP FUNCTION               MLD
 WR3      LDD    D.T0                                                    MLD
          LMN    1                                                       MLD
          ZJN    WR4         IF LONG WRITE                               MLD
          LDD    FORMAT1                                                 MLD
          LPC    140B        CHECK FOR PACKED OR CPU MODE                MLD
          ZJN    WR4         IF MODE 0                                   MLD
          LDD    WC                                                      MLD
          SHN    1                                                       MLD
          ADD    WC          WC*3                                        MLD
          SHN    -1          WC*3/2                                      MLD
          LPN    1                                                       MLD
          SHN    7           MOVE ODD/EVEN FRAME BIT UP                  MLD
 WR4      ADN    WRITER                                                  MLD
          RJM    FAN         ISSUE CORRECT WRITE FUNCTION                MLD
          ACN    40B         START TAPE MOTION                           MLD
          LDD    BL                                                      MLD
          STD    SC                                                      MLD
          LDD    D.T0                                                    MLD
          ZJN    WR5         IF NOT LONG WRITE                           MLD
          LDD    BL                                                      MLD
          SHN    -3          DIVIDE BL BY 8 FOR LONG WRITE               MLD
          STD    SC                                                      MLD
          LDC    1003B       SHN 3  FOR LONG WRITE                       MLD
 WR5      STM    WR8                                                     MLD
          STM    WR15                                                    MLD
 WR6      LDD    D.T1                                                    MLD
          SBD    SC          CALCULATE NUMBER OF LOOPS REQUIRED          MLD
          MJN    WR7         IF UNDERFLOW                                MLD
          STD    D.T1                                                    MLD
          AOD    WL          BUMP LOOP COUNT                             MLD
          UJN    WR6         CONTINUE THE DIVIDE                         MLD
                                                                         MLD
 WR7      ADD    SC          TAKE CARE OF UNDERFLOW                      MLD
 WR8      SHN    3           *** SHN 3 IF LONG WRITE                     MLD
*         DATA   0           *** DATA 0 IF NOT LONG WRITE                MLD
          STD    D.T2        SAVE REMAINDER                              MLD
          LDD    WL                                                      MLD
          STD    D.Z1        SET LOOP COUNT                              MLD
          ZJN    WR10        IF WORD COUNT IS LESS THAN BUFFER SIZE      MLD
 WR9      LDD    BL                                                      MLD
          OAM    OB          OUTPUT ONE BUFFER SIZE                      MLD
          NJN    WR16        IF ALL WORDS NOT TAKEN BY THE BC            MLD
          SOD    D.Z1        DECREMENT THE LOOP COUNT                    MLD
          NJN    WR9         IF ALL NOT DONE                             MLD
 WR10     LDD    D.T2        REMAINING WORDS TO DO                       MLD
          ZJN    WR11        IF NO REMAINDER
          OAM    OB          OUTPUT REMAINING BYTES                      MLD
          NJN    WR18        IF ALL WORDS NOT TAKEN BY THE BC            MLD
 WR11     LDC    6000 
 WR12     EJM    WR14        IF LAST WORD TAKEN                          MLD
 WR13     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    WR12        IF TIME IS NOT UP                           MLD
 WR14     DCN    40B                                                     MLD
          STD    D.Z3        SAVE REMAINING TIME                         MLD
          LDD    WC                                                      MLD
 WR15     SHN    3           *** SHN 3 IF LONG WRITE                     MLD
*         DATA   0           *** DATA 0 IF NOT LONG WRITE                MLD
          STD    WT          SAVE WORDS TRANSMITTED                      MLD
          SHN    -12                                                     MLD
          STM    WTA                                                     MLD
          LDD    D.Z3                                                    MLD
          NJN    WR17        IF LAST WORD TAKEN (TIME DID NOT EXPIRE)    MLD
          LJM    ERRLOL      ERROR IF LAST OUTPUT IS LOST                MLD
                                                                         MLD
 WR16     STD    D.Z2        SAVE WORDS NOT TAKEN IN FIRST LOOP          MLD
          LDD    BL                                                      MLD
          UJN    WR19                                                    MLD
                                                                         MLD
 WR17     RJM    WEOP        WAIT END OF OPERATION                       MLD
          LJM    XWRITE      EXIT TO STACK                               MLD
                                                                         MLD
 WR18     STD    D.Z2                                                    MLD
          LDD    D.T2                                                    MLD
 WR19     SBD    D.Z2                                                    MLD
          STD    WT          SET WORDS TRANSMITTED                       MLD
 WR20     AOD    D.Z1                                                    MLD
          SBD    WL                                                      MLD
          PJN    WR21        IF NUMBER OF WORDS IN REPEAT LOOP ADDED     MLD
          LDD    BL                                                      MLD
          RAD    WT          BUMP TOTAL WORDS TRANSMITTED                MLD
          SHN    -12                                                     MLD
          RAM    WTA                                                     MLD
          UJN    WR20                                                    MLD
                                                                         MLD
 WR21     RJM    WEOP                                                    MLD
          LJM    ERRIDO      ERROR IF INACTIVE DURING OUTPUT             MLD
          SPACE  4,14                                                    MLD
**        DEQP - DROP EQUIPMENT                                          MLD
*                                                                        MLD
*         RELEASE THE CONNECT ON THE UNIT ASSIGNED.                      MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - ABT ADDRESS STORED IN S1/S2.                            MLD
*                DEVICE RELEASED.                                        MLD
*                                                                        MLD
*         USES - S1,S2                                                   MLD
*                                                                        MLD
*         CALLS- FAN,CCI                                                 MLD
*                                                                        MLD
 DEQPX    LJM    **                                                      MLD
 DEQP     EQU    *-1                                                     MLD
          STD    S1          SAVE ABT ADDRESS                            MLD
          SHN    -12                                                     MLD
          STD    S2                                                      MLD
          LDM    BD.CHFG                                                 MLD
          ZJN    DEQPX       EXIT IF CHANNEL IS NOT ASSIGNED             MLD
          LDD    S2                                                      MLD
          SBN    77B                                                     MLD
          ZJN    DEQ1        IF REQUEST IS FROM THE BASIC DRIVER         MLD
          LDN    RELEASE                                                 MLD
          RJM    FAN         ISSUE RELEASE FUNCTION                      MLD
          UJN    DEQPX       EXIT TO CALLER IF FUNCTION ACCEPTED         MLD
                                                                         MLD
*         THE CALL IS FROM THE BASIC DRIVER.  THEREFORE, NO ABORT        MLD
*         IS ALLOWED AND THE REGISTERS AND BUFFERS MUST REMAIN           MLD
*         INTACT.                                                        MLD
                                                                         MLD
 DEQ1     IJM    DEQ2        IF CHANNEL IS INACTIVE                      MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    DEQPX       EXIT IF SKIP CHANNEL CLEANUP REQUESTED      MLD
          DCN    40B         CLEAN-UP CHANNEL                            MLD
 DEQ2     LDN    RELEASE                                                 MLD
          FAN    40B                                                     MLD
          LDN    1                                                       MLD
          RJM    CCI         WAIT INACTIVE                               MLD
          NJN    DEQPX       EXIT IF INACTIVE RECEIVED                   MLD
          DCN    40B         DEACTIVATE CHANNEL                          MLD
          UJN    DEQPX       EXIT                                        MLD
          SPACE  4,14                                                    MLD
**        GETS - GET STATUS.                                             MLD
*                                                                        MLD
*         REQUEST AND INPUT THE STATUS SPECIFIED BY THE USER.            MLD
*                                                                        MLD
*         ENTRY- (A) = CODE FOR STATUS TO GET.                           MLD
*                                                                        MLD
*         EXIT - STATUS STORED INTO STATUS BUFFER.                       MLD
*                                                                        MLD
*                ERRSFR  - IF STATUS FUNCTION NOT ACCEPTED.              MLD
*                ERRNSR  - IF NO STATUS RETURNED.                        MLD
*                ERRISR  - IF INCOMPLETE STATUS RETURNED.                MLD
*                ERRAAS  - IF CH ACTIVE AFTER STATUS INPUT.              MLD
*                                                                        MLD
*         USES - D.Z0,D.Z3,D.Z5                                          MLD
*                                                                        MLD
*         CALLS- CCI                                                     MLD
*                                                                        MLD
*                                                                        MLD
 GETSX    LJM    **          ENTRY/EXIT                                  MLD
 GETS     EQU    *-1                                                     MLD
          STD    D.Z5        SAVE CODE FOR STATUS REQUESTED              MLD
          LDM    GETW,D.Z5   GET NUMBER OF WORDS OF STATUS TO INPUT      MLD
          STD    D.Z0                                                    MLD
          LDM    GETA,D.Z5   GET ADDRESS TO READ STATUS INTO             MLD
          STM    GET5        SAVE ADDRESS                                MLD
          STD    D.Z3                                                    MLD
 GET0     LCN    0                                                       MLD
          STI    D.Z3        SET STATUS WORDS TO NEGATIVE ZERO           MLD
          AOD    D.Z3        BUMP ADDRESS                                MLD
          SOD    D.Z0                                                    MLD
          NJN    GET0        IF ALL WORDS NOT DONE                       MLD
          LDM    GETC,D.Z5   FUNCTION CODE TO ISSUE                      MLD
          STM    LSF         SAVE LAST STATUS FUNCTION IN SB             MLD
          FAN    40B         ISSUE STATUS REQUEST                        MLD
          LDN    1                                                       MLD
          RJM    CCI         WAIT 500 USEC FOR INACTIVE                  MLD
          NJN    GET1        IF FUNCTION ACCEPTED                        MLD
          LJM    ERRSFR      ERROR IF STATUS FUNCTION NOT ACCEPTED       MLD
                                                                         MLD
 GET1     ACN    40B                                                     MLD
          LDC    100
 GET2     FJM    GET4        IF STATUS IS READY                          MLD
 GET3     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    GET2        IF TIME IS NOT UP                           MLD
          LJM    ERRNSR      ERROR IF NO STATUS RETURNED                 MLD
                                                                         MLD
 GET4     LDM    GETW,D.Z5   WORDS TO INPUT                              MLD
          IAM    **                                                      MLD
 GET5     EQU    *-1         *** ADDRESS TO READ STATUS IS STORED HERE   MLD
          ZJN    GET7        IF ALL WORDS PROVIDED                       MLD
          SCN    1                                                       MLD
          NJN    GET6        IF MORE THAN 1 WORD TO GO                   MLD
          LDD    D.Z5                                                    MLD
          ZJN    GET7        IF GENERAL STATUS - 1 WORD IS OK            MLD
 GET6     LJM    ERRISR      ERROR IF INCOMPLETE STATUS RETURNED         MLD
                                                                         MLD
 GET7     LDN    1                                                       MLD
          RJM    CCI         WAIT 500 USEC FOR CHANNEL INACTIVE          MLD
          NJN    GET8        IF INACTIVE RECEIVED                        MLD
          DCN    40B         DISCONNECT CHANNEL IF STILL ACTIVE          MLD
                                                                         MLD
 GET8     LDM    SB+1        INDICATE STATUS OBTAINED OK ( A IS POS)     MLD
          LJM    GETSX       EXIT TO CALLER                              MLD
                                                                         MLD
*         NUMBER OF WORDS TO READ FOR EACH STATUS TYPE                   MLD
                                                                         MLD
 GETW     DATA   2           GENERAL STATUS                              MLD
          DATA   8           DETAIL STATUS                               MLD
          DATA   8           CUMULATIVE STATUS                           MLD
                                                                         MLD
*         STATUS FUNCTION CODES FOR EACH STATUS TYPE                     MLD
                                                                         MLD
 GETC     VFD    12/GS       GENERAL STATUS                              MLD
          VFD    12/DS       DETAIL STATUS                               MLD
          VFD    12/CS       CUMULATIVE STATUS                           MLD
                                                                         MLD
*         ADDRESS TO INPUT DATA FOR EACH STATUS TYPE                     MLD
                                                                         MLD
 GETA     VFD    12/SB+1     GENERAL STATUS                              MLD
          VFD    12/SB+3     DETAIL STATUS                               MLD
          VFD    12/SB+20B   CUMULATIVE STATUS                           MLD
          SPACE  4,12                                                    MLD
**        CCI  - CHECK CHANNEL INACTIVE.                                 MLD
*                                                                        MLD
*         VERIFY THAT THE CHANNEL GOES INACTIVE IN REQUESTED TIME.       MLD
*                                                                        MLD
*         ENTRY- (A) = NUMBER OF 500 USEC INTERVALS TO WAIT.             MLD
*                                                                        MLD
*         EXIT - (A) = 0 IF NO INACTIVE RECEIVED.                        MLD
*                (A) = NONZERO IF INACTIVE RECEIVED.                     MLD
*                                                                        MLD
*         USES - D.Z0                                                    MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 CCIXX    LDN    1           INDICATE INACTIVE RECEIVED                  MLD
 CCIX     LJM    **          ENTRY/EXIT                                  MLD
 CCI      EQU    *-1                                                     MLD
          STD    D.Z0        SAVE NUMBER OF 500 USEC INTERVALS TO DELAY  MLD
 CCI1     LDC    500
 CCI2     IJM    CCIXX       EXIT IF INACTIVE RECEIVED                   MLD
 CCI3     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    CCI2        IF TIME IS NOT UP                           MLD
          SOD    D.Z0                                                    MLD
          NJN    CCI1        IF LOOP COUNT NOT SATISFIED                 MLD
          UJN    CCIX        EXIT                                        MLD
          SPACE  4,14                                                    MLD
**        FAN  - FUNCTION.                                               MLD
*                                                                        MLD
*         SEND FUNCTION TO BUFFER CONTROLLER.                            MLD
*                                                                        MLD
*         ENTRY- (A) = FUNCTION CODE TO ISSUE.                           MLD
*                                                                        MLD
*         EXIT - FUNCTION ISSUED, STORED IN LF, AND CHANNEL INACTIVE.    MLD
*                                                                        MLD
*                ERRABF  - IF CH ACTIVE BEFORE FUNCTION.                 MLD
*                ERRFNA  - IF FUNCTION NOT ACCEPTED.                     MLD
*                                                                        MLD
*         USES - LF                                                      MLD
*                                                                        MLD
*         CALLS- CCI                                                     MLD
*                                                                        MLD
 FANX     LJM    **          ENTRY/EXIT                                  MLD
 FAN      EQU    *-1                                                     MLD
          IJM    FAN1        IF CHANNEL IN CORRECT STATE                 MLD
          LJM    ERRABF      ERROR IF ACTIVE BEFORE FUNCTION             MLD
                                                                         MLD
 FAN1     STD    LF          SAVE (A) AS LAST FUNCTION                   MLD
          FAN    40B         SEND FUNCTION                               MLD
          LDN    1           WAIT 500 USEC FOR INACTIVE                  MLD
          RJM    CCI                                                     MLD
          NJN    FANX        EXIT IF RESPONSE RECEIVED                   MLD
          LJM    ERRFNA      ERROR IF FUNCTION NOT ACCEPTED              MLD
          SPACE  4,16                                                    MLD
**        OUT -  OUTPUT.                                                 MLD
*                                                                        MLD
*         OUTPUT TWO PARAMETER WORDS TO THE BC.                          MLD
*                                                                        MLD
*         ENTRY- (A) = FWA OF THE PARAMETERS TO OUTPUT.                  MLD
*                                                                        MLD
*         EXIT - PARAMETERS OUTPUT AND CHANNEL INACTIVE.                 MLD
*                                                                        MLD
*                ERRLOL  - IF NO EMPTY TO OUTPUT.                        MLD
*                ERRIDO  - IF CH INACTIVE DURING OUTPUT.                 MLD
*                                                                        MLD
*         USES - D.Z5,D.Z6.                                              MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 OUTX     LJM    **          ENTRY/EXIT                                  MLD
 OUT      EQU    *-1                                                     MLD
          STD    D.Z5        SAVE ADDRESS OF PARAMETERS                  MLD
          LDN    3                                                       MLD
          STD    D.Z6        SET LOOP COUNTER                            MLD
          ACN    40B                                                     MLD
 OUT1     LDC    100
 OUT2     EJM    OUT4        IF BC IS READY FOR A WORD                   MLD
 OUT3     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    OUT2        IF TIME IS NOT UP                           MLD
          LJM    ERRLOL      ERROR IF NO EMPTY ON OUTPUT                 MLD
                                                                         MLD
 OUT4     IJM    ERRIDO      ERROR IF INACTIVE DURING OUTPUT             MLD
          SOD    D.Z6        DECREMENT LOOP COUNT                        MLD
          ZJN    OUT5        IF ALL WORDS OUTPUT                         MLD
          LDI    D.Z5        GET NEXT PARAMETER WORD                     MLD
          OAN    40B         OUTPUT PARAMETER                            MLD
          AOD    D.Z5        BUMP POINTER TO NEXT PARAMETER              MLD
          UJN    OUT1        WAIT UNTIL THIS WORD IS ACCEPTED            MLD
                                                                         MLD
 OUT5     DCN    40B                                                     MLD
          UJN    OUTX        EXIT TO CALLER                              MLD
          SPACE  4,12                                                    MLD
**        TCA  - TEST CHANNEL ASSIGNMENT.                                MLD
*                                                                        MLD
*         VERIFY THAT THE I/O CHANNEL IS ASSIGNED.                       MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - ABT ADDRESS STORED AND CHANNEL IS ASSIGNED.             MLD
*                                                                        MLD
*                ERRCNR  - IF CHANNEL IS NOT ASSIGNED.                   MLD
*                ERRCTO  - IF CHANNEL IS ACTIVE ON ENTRY.                MLD
*                                                                        MLD
*         USES -S1, S2                                                   MLD
*                                                                        MLD
 TCAX     LJM    **          ENTRY/EXIT                                  MLD
 TCA      EQU    *-1                                                     MLD
          STD    S1          SAVE ABT ADDRESS                            MLD
          SHN    -12                                                     MLD
          STD    S2                                                      MLD
          LDM    BD.CHFG                                                 MLD
          NJN    TCA1        IF CHANNEL ASSIGNED                         MLD
          LJM    ERRCNR      ERROR IF CHANNEL NOT RESERVED               MLD
                                                                         MLD
 TCA1     IJM    TCAX        EXIT IF CHANNEL IN CORRECT STATE            MLD
 TCA3     LJM    ERRCTO      ERROR IF CHANNEL ACTIVE
          SPACE  4,14                                                    MLD
**        WEOP - WAIT END OF OPERATION.                                  MLD
*                                                                        MLD
*         WAIT UNTIL BC RESPONDS TO A STATUS REQUEST (END OF OP).        MLD
*                                                                        MLD
*         ENTRY- NONE.                                                   MLD
*                                                                        MLD
*         EXIT - END OF OPERATION HAS OCCURRED.                          MLD
*                (SB+1) = GENERAL STATUS.                                MLD
*                (SB )  = DETAIL STATUS IF ALERT.                        MLD
*                                                                        MLD
*                ERRCTO  - IF CHANNEL HANGS ACTIVE FOR 1 SECOND.         MLD
*                ERRCTO  - IF NO INACTIVE TO GS FUNCTION IN 1 SECOND.    MLD
*                ERRNEO  - IF NO EOP IN 4 SECONDS.                       MLD
*                ERRAAS  - IF NO CH INACTIVE AFTER STATUS INPUT.         MLD
*                                                                        MLD
*         USES - D.Z7,SB                                                 MLD
*                                                                        MLD
*         CALLS- CCI, GETS                                               MLD
*                                                                        MLD
 WEOPX    LJM    **          ENTRY/EXIT                                  MLD
 WEOP     EQU    *-1                                                     MLD
          LDN    1                                                       MLD
          STD    D.Z7        SET TIME                                    MLD
          LDC    2000                                                    MLD
          RJM    CCI         WAIT 1 SECOND FOR CHANNEL INACTIVE          MLD
          ZJN    TCA3        ERROR IF CHANNEL TIMEOUT BEFORE INACTIVE 
                                                                         MLD
 WEO1     LDN    GS                                                      MLD
          FAN    40B         SELECT GENERAL STATUS                       MLD
          LDC    2000                                                    MLD
          RJM    CCI         WAIT 1 SECOND FOR CHANNEL INACTIVE          MLD
          ZJN    TCA3        ERROR IF CHANNEL TIMEOUT BEFORE INACTIVE 
                                                                         MLD
 WEO2     ACN    40B                                                     MLD
          LDN    24          SET LOOP COUNT 
 WEO3     FJM    WEO6        IF STATUS IS READY                          MLD
 WEO4     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    WEO3        IF TIME IS NOT UP                           MLD
          DCN    40B                                                     MLD
          IANN   14B+40B                                                 MLD
          SHN    -10                                                     MLD
          LMD    D.Z7                                                    MLD
          LPN    1                                                       MLD
          RAD    D.Z7        COUNT MILLISECONDS AS THEY PASS BY          MLD
          SHN    -12                                                     MLD
          NJN    WEO5        IF 4 SECONDS HAVE PASSED                    MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
          LDD    D.PPOR                                                  MLD
          CWD    PAUSE       WRITE PAUSE FUNCTION TO MONITOR             MLD
          ENDIF                                                          MLD
                                                                         MLD
          UJN    WEO1 
                                                                         MLD
 WEO5     LJM    ERRNEO      ERROR IF NO END OF OPERATION IN 4 SECONDS   MLD
                                                                         MLD
 WEO6     LDN    2           NUMBER OF WORDS REQUIRED FOR GENERAL STATUS MLD
          IAM    SB+1        READ GENERAL STATUS                         MLD
 WEO7     LDN    1                                                       MLD
          RJM    CCI         WAIT 500 USEC FOR INACTIVE                  MLD
          NJN    WEO8        IF INACTIVE RECEIVED                        MLD
          DCN    40B                                                     MLD
                                                                         MLD
 WEO8     LDM    SB+1                                                    MLD
          SHN    6                                                       MLD
          PJN    WEO9        IF NO ALERT                                 MLD
          LDN    1                                                       MLD
          RJM    GETS        GET DETAIL STATUS                           MLD
 WEO9     LDM    SB+1        LOAD GENERAL STATUS                         MLD
          LJM    WEOPX       EXIT TO CALLER                              MLD
          SPACE  4,14                                                    MLD
**        WAIT - WAIT FOR REWIND/UNLOAD TO COMPLETE.                     MLD
*                                                                        MLD
*         WAIT  UP TO 5 MINUTES FOR REQUESTED CONDITIONS ON A REWIND OR  MLD
*         UNLOAD FUNCTION.  A TEST IS DONE AND IF NOT REQUIRED  STATUS,  MLD
*         THE  PPU IS DROPPED FOR 5 SECONDS.  THIS SEQUENCE IS REPEATED  MLD
*         UNTIL THE EXPECTED STATUS IS RECEIVED OR UNTIL 5  MINUTES  IS  MLD
*         UP.                                                            MLD
*                                                                        MLD
*         ENTRY- (A) = EXPECTED STATUS AFTER OPERATION COMPLETES.        MLD
*                                                                        MLD
*         EXIT - TO CALLER AFTER UNIT TERMINATES THE OPERATION.          MLD
*                                                                        MLD
*                ERRRUE  - IF REWIND OR UNLOAD STATUS ERROR.             MLD
*                ERRTLE  - IF 5 MINUTES ELAPSES BEFORE OPERATION ENDS.   MLD
*                                                                        MLD
*         USES - BD.REQP,D.T0                                            MLD
*                                                                        MLD
*         CALLS- BD.REQ,GETS,RES                                         MLD
                                                                         MLD
 WAITX    LJM    **          ENTRY/EXIT                                  MLD
 WAIT     EQU    *-1                                                     MLD
          STM    WAI2        SAVE EXPECTED STATUS                        MLD
          LDN    0                                                       MLD
          STM    WAI6        CLEAR COUNTER                               MLD
          LDD    S2          SAVE CURRENT ABT ADDRESS                    MLD
          ADC    2000B                                                   MLD
          STM    WAI5                                                    MLD
          LDD    S1                                                      MLD
          STM    WAI5+1                                                  MLD
 WAI1     LDN    0                                                       MLD
          RJM    GETS        GET GENERAL STATUS                          MLD
          SHN    17-1        POSITION BUSY BIT                           MLD
          MJN    WAI3        IF STILL BUSY                               MLD
          SHN    18-16                                                   MLD
          LPN    LP+RDY                                                  MLD
          LMC    **                                                      MLD
 WAI2     EQU    *-1         *** EXPECTED LP AND RDY STATUS STORED HERE  MLD
          ZJN    WAITX       EXIT IF ACTUAL EQUALS EXPECTED              MLD
          LDC    ER.RUE      ERROR IF REWIND OR UNLOAD ERROR
          UJN    WAI5A
                                                                         MLD
 WAI3     LDN    1                                                       MLD
          STM    BD.REQP+4   SET DROP TIME                               MLD
          LDN    BD.DREQ                                                 MLD
          RJM    BD.REQ      REQUEST A DROP FOR 1 SECOND                 MLD
                                                                         MLD
*         CONTROL RETURNS AFTER A 1 SECOND DROP OF THE PPU               MLD
                                                                         MLD
          LDC    **                                                      MLD
 WAI4     EQU    *-1         *** LAST SELECTED RES OPTIONS STORED HERE   MLD
          STD    D.T0        INDICATE OPTIONS TO USE                     MLD
 WAI5     LDC    **          *** LOAD INSTRUCTION STORED HERE- ABT ADDR  MLD
          RJM    XRES+1      RESERVE CHANNEL AND UNIT                    MLD
          AOM    WAI6        BUMP 1 SECOND COUNTER                       MLD
          ADC    -300                                                    MLD
          NJN    WAI1        IF 5 MINUTES HAS NOT ELAPSED                MLD
 ERRTLE   LDC    ER.TLE      ERROR IF TIME LIMIT EXPIRED
 WAI5A    UJN    ERR
          EJECT                                                          MLD
 ERRWC    LDC    ER.WC       BUFFER REFERENCE OR WC ERROR                MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRCAS   LDC    ER.CAS      CHANNEL ACTIVE ON ENTRY                     MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRIDO   LDC    ER.IDO      CHANNEL INACTIVE DURING OUTPUT              MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRNEO   LDC    ER.NEO      NO END-OF-OPERATION                         MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRUHB   LDC    ER.UHB      UNIT HUNG BUSY                              MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRFNA   LDC    ER.FNA      FUNCTION NOT ACCEPTED                       MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRABF   LDC    ER.ABF      CH ACTIVE BEFORE FUNCTION                   MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRSFR   LDC    ER.SFR      STATUS FUNCTION NOT ACCEPTED                MLD
          UJN    ERR                                                     MLD
                                                                         MLD
 ERRNSR   LDC    ER.NSR      NO STATUS RETURNED                          MLD
 ERR      UJN    ERR1                                                    MLD
                                                                         MLD
 ERRISR   LDC    ER.ISR      INCOMPLETE STATUS RETURNED                  MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRCTO   LDC    ER.CTO      CHANNEL TIME-OUT BEFORE INACTIVE            MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRCNR   LDC    ER.CNR      CHANNEL NOT RESERVED                        MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRILL   LDC    ER.ILL      ILLEGAL COMMAND OR PARAMETERS               MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRLOL   LDC    ER.LOL      LAST OUTPUT WORD LOST                       MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRSSD   LDC    ER.SSD      SELECTED/ACTUAL SPEEDS DISAGREE             MLD
 ERR1     UJN    ERR2                                                    MLD
                                                                         MLD
 ERRSTD   LDC    ER.STD      SELECTED/ACTUAL TRACKS DISAGREE             MLD
                                                                         MLD
 ERR2     STD    D.Z1        SAVE MESSAGE INDEX AND ERROR NUMBER         MLD
          SHN    -12                                                     MLD
          STD    D.Z2        SAVE ABORT FLAG                             MLD
          LDM    BD.CHFG                                                 MLD
          ZJN    ERR3        IF CHANNEL IS NOT ASSIGNED                  MLD
          IJM    ERR3,0      CLEAN UP CHANNEL                            MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    ERR3        IF AL REQUEST TO SKIP CHANNEL CLEANUP       MLD
          DCN    40B                                                     MLD
 ERR3     LDD    D.Z1                                                    MLD
          LPN    77B                                                     MLD
          ADC    4200B       ADD IN BIAS FOR 66X PRODUCT OVERLAY         MLD
          STD    EC          STORE ERROR CODE                            MLD
          LDD    D.Z1                                                    MLD
          SHN    -6                                                      MLD
          ADC    100B        FLAG MESSAGE INDEX AS OVERLAY MESSAGE       MLD
          STD    EM          STORE MESSAGE INDEX                         MLD
          LDD    P                                                       MLD
          STD    EA          STORE LINE NUMBER WHERE ERROR OCCURRED      MLD
          LDD    D.Z2                                                    MLD
          NJN    ERR5        IF ABORT FLAG SET                           MLD
          LDD    S2                                                      MLD
          SHN    12                                                      MLD
          LMD    S1                                                      MLD
          ZJN    ERR4        IF NO ABT ADDRESS SPECIFIED                 MLD
          LJM    BD.RNI      RNI AT THE REJECT ADDRESS                   MLD
                                                                         MLD
 ERR4     LJM    BD.ERR      TERMINATE OR RESTART MODULE BASED ON SE     MLD
                                                                         MLD
 ERR5     LJM    BD.ABT      TERMINATE MODULE                            MLD
                                                                         MLD
 IB       EQU    6530B       INPUT BUFFER                                MLD
 LIB      EQU    500B        LENGTH OF INPUT AND OUTPUT BUFFERS          MLD
 OB       EQU    IB+LIB      OUTPUT BUFFER                               MLD
 SB       EQU    OB+LIB      STATUS BUFFER                               MLD
 LSF      EQU    SB          LAST STATUS FUNCTION ISSUED                 MLD
 CH       EQU    SB+24                                                   MLD
 EQ       EQU    SB+25                                                   MLD
 UN       EQU    SB+26                                                   MLD
 WTA      EQU    SB+27                                                   MLD
 LSB      EQU    28                                                      MLD
 SBLWA    EQU    SB+LSB      STATUS BUFFER LWA+1                         MLD
 RDA      EQU    SBLWA       8 WORD BUFFER FOR READ ROUTINE              MLD
 BKSB     EQU    RDA+8       2 WORD BUFFER FOR CONTROL BACKSPACE WC      MLD
 WAI6     EQU    BKSB+2      1 WORD BUFFER FOR WAIT ROUTINE              MLD
                                                                         MLD
          ERRPL  *-IB-1      ERROR IF 66X PRODUCT OVERLAY OVERFLOW       MLD
          EJECT                                                          MLD
**        THE INITIALIZATION CODE THAT FOLLOWS IS OVERLAYED BY THE       MLD
*         PRODUCT OVERLAY BUFFERS ABOVE.                                 MLD
*                                                                        MLD
*         TEST EQUIPMENT AND UNIT NUMBER                                 MLD
*                                                                        MLD
 INIT     LDN    0                                                       MLD
          STD    D.Z1                                                    MLD
 INIT1    LDN    0                                                       MLD
          STM    SB,D.Z1     CLEAR STATUS BUFFER                         MLD
          AOD    D.Z1                                                    MLD
          SBN    LSB                                                     MLD
          NJN    INIT1       IF ALL WORDS NOT CLEARED                    MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
          LDN    PRLM                                                    MLD
          STD    PAUSE       SET PAUSE FUNCTION IN PAUSE FOR NOS         MLD
          ENDIF                                                          MLD
                                                                         MLD
          LDM    BD.EQ                                                   MLD
          LPN    7                                                       MLD
          STM    UN                                                      MLD
          ADC    4220B       ADD IN NEW PARAMETER BITS                   MLD
          STD    FORMAT1     SET UNIT NUMBER IN FORMAT                   MLD
          LDC    6440B                                                   MLD
          STD    FORMAT2     SET NEW PARAMETER BITS                      MLD
                                                                         MLD
*         SET DELAY TIME BASED ON SPEED OF PPU                           MLD
                                                                         MLD
          LDC    TSPEED                                                  MLD
          STD    D.T0                                                    MLD
 INIT2    LDI    D.T0                                                    MLD
          ZJN    INIT3       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1                                                    MLD
          SCN    77B
          ADM    BD.SPEED 
          STI    D.T1        SET ADN/SBN VALUE
          AOD    D.T0                                                    MLD
          UJN    INIT2       COMPLETE ALL WORDS                          MLD
                                                                         MLD
*         STORE I/O CHANNEL INTO COMMANDS                                MLD
                                                                         MLD
 INIT3    LDM    BD.CHAN                                                 MLD
          STM    CH                                                      MLD
          STD    D.T2                                                    MLD
          LDC    TCHAN                                                   MLD
          STD    D.T0        SET FWA OF TABLE CONTAINING ADDRESSES       MLD
 INIT4    LDI    D.T0                                                    MLD
          ZJN    INIT5       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1                                                    MLD
          LPC    7740B                                                   MLD
          ADD    D.T2                                                    MLD
          STI    D.T1                                                    MLD
          AOD    D.T0                                                    MLD
          UJN    INIT4       COMPLETE ALL WORDS                          MLD
                                                                         MLD
*         WRITE PP MESSAGES TO CM                                        MLD
                                                                         MLD
 INIT5    LDM    BD.MSGA     GET PP MESSAGE AREA ADDRESS                 MLD
          STD    S1          SAVE IT                                     MLD
          ADC    MMSGL.      ADD LENGTH 
          RJM    BD.TFL      SEE IF IN FL                                MLD
          LDN    P.ZERO      CLEAR CELLS, D.Z1=PP MESSAGE ADDRESS        MLD
          CRD    D.Z1        D.Z2=D.T0-D.T4 POINTER, D.Z3=CM WD COUNTER  MLD
 INIT6    LDM    PPMSGS,D.Z1 GET PP MESSAGE WORD                         MLD
          ZJN    INIT8       IF END OF MESSAGE                           MLD
 INIT7    STM    D.T0,D.Z2   STORE IN D.T0+                              MLD
          AOD    D.Z1        BUMP PP MESSAGE POINTER                     MLD
          UJN    INIT9                                                   MLD
 INIT8    LDC    2R          MESSAGE END, STORE BLANKS                   MLD
          STM    D.T0,D.Z2                                               MLD
 INIT9    AOD    D.Z2        BUMP D.T0+ POINTER                          MLD
          SBN    5                                                       MLD
          NJN    INIT6       IF NOT 5 PP WORDS                           MLD
          STD    D.Z2        CLEAR POINTER                               MLD
          LDD    D.RA        PUT RA IN A REG                             MLD
          SHN    6                                                       MLD
          ADD    S1          ADD MESSAGE ADDRESS                         MLD
          CWD    D.T0        WRITE ONE WORD FROM D.T0                    MLD
          AOD    S1          UPDATED ADDRESS                             MLD
          AOD    D.Z3        BUMP CM WORD COUNTER                        MLD
          SBN    BD.MSGML                                                MLD
          NJN    INIT6       IF NOT BD.MSGML CM WORDS                    MLD
          STD    D.Z3        CLEAR CM WORD COUNTER                       MLD
          LDM    PPMSGS,D.Z1                                             MLD
          ZJN    INIT10      IF MESSAGE ENDED IN ZERO BYTE               MLD
          AOD    D.Z1        SKIP ZERO BYTE TERMINATOR                   MLD
 INIT10   AOD    D.Z1        BUMP PP MESSAGE ADDRESS TO NEXT MESSAGE     MLD
          LDM    PPMSGS,D.Z1                                             MLD
          NJN    INIT7       IF NOT LAST MESSAGE                         MLD
                                                                         MLD
*         SET DIRECT CELLS                                               MLD
                                                                         MLD
          STD    WL          CLEAR WRITE LOOP COUNT FOR LAST WRITE       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STD    BA          CLEAR BEGINNING ADDRESS REGISTER            MLD
          LDC    LIB                                                     MLD
          STD    BL          SET LENGTH OF IB AND OB                     MLD
          LDC    5000B                                                   MLD
          STD    WC          SET DEFAULT VALUE IN WORD COUNT REGISTER    MLD
                                                                         MLD
*         CHECK DC FOR CORRECT DEVICE CODE                               MLD
                                                                         MLD
          LDD    DC                                                      MLD
          SBN    T667                                                    MLD
          ZJN    INIT10A     IF 667                                      MLD
          SBN    T669-T667                                               MLD
          ZJN    INIT10A     IF 669                                      MLD
          LDC    INITB                                                   MLD
          LJM    INIT15      REPORT DEVICE NOT SUPPORTED                 MLD
                                                                         MLD
*         SET TIMES TABLE BASED ON SPEED OF UNIT IN P0 REGISTER          MLD
*         IF P0 REGISTER = 0, DEFAULT TO 200 IPS UNIT FOR SPEED          MLD
                                                                         MLD
 INIT10A  LDC    T200                                                    MLD
          STD    D.T0        SETUP FOR 200 IPS UNIT                      MLD
          LDM    P0 
 INIT11   ADC    -200B                                                   MLD
          ZJN    INIT12      IF 200 IPS UNIT                             MLD
          LDC    T150        SETUP FOR 150 IPS UNIT                      MLD
          STD    D.T0                                                    MLD
          LDM    P0 
          ADC    -150B                                                   MLD
          ZJN    INIT12      IF 150 IPS UNIT                             MLD
          LDC    T100                                                    MLD
          STD    D.T0        SETUP FOR 100 IPS UNIT                      MLD
          LDM    P0 
          ADC    -100B                                                   MLD
          ZJN    INIT12      IF 100 IPS UNIT                             MLD
          LDC    INITA                                                   MLD
          LJM    INIT15      REPORT ILLEGAL UNIT SPEED REQUESTED         MLD
                                                                         MLD
 INIT12   LDN    0                                                       MLD
          STD    D.T1        CLEAR COUNTER                               MLD
 INIT13   LDI    D.T0        GET TIME                                    MLD
          STM    TIMES,D.T1  STORE IT IN TIMES TABLE                     MLD
          AOD    D.T0                                                    MLD
          AOD    D.T1                                                    MLD
          SBN    5                                                       MLD
          NJN    INIT13      IF NOT DONE                                 MLD
          LDI    D.T0        GET SPEED MASK INSTRUCTION                  MLD
          STM    RES4        SAVE                                        MLD
 INIT14   LDD    DC                                                      MLD
          LPN    10B                                                     MLD
          SHN    -3                                                      MLD
          ADC    1100B       FORM LMN INSTRUCTION                        MLD
          STM    RES2        STORE LMN INSTRUCTION INTO RES ROUTINE      MLD
          LDN    0           INDICATE NO ERRORS                          MLD
 INIT15   LJM    START       RETURN TO BASIC DRIVER ( A=MSG OR ZERO )    MLD
          EJECT                                                          MLD
                                                                         MLD
 INITA    DIS    ,*  ILLEGAL UNIT SPEED SELECTED*                        MLD
 INITB    DIS    ,*  DEVICE CODE NOT SUPPORTED*                          MLD
                                                                         MLD
*         TABLE OF PPU SPEED SWITCHES                                    MLD
                                                                         MLD
 TSPEED   VFD    12/CCI3                                                 MLD
          VFD    12/GET3                                                 MLD
          VFD    12/OUT3                                                 MLD
          VFD    12/WEO4     SETS PPU SPEED FOR -WEOP- SUBROUTINE 
          VFD    12/WR13                                                 MLD
          DATA   0           END OF SPEED SWITCHES TABLE                 MLD
                                                                         MLD
*         TABLE OF GAP TIMES FOR 200 IPS UNIT                            MLD
                                                                         MLD
 T200     DATA   2000        TIME FOR .40 INCHES                         MLD
          DATA   1000        TIME FOR .20 INCHES                         MLD
          DATA   500         TIME FOR .10 INCHES                         MLD
          DATA   250         TIME FOR .05 INCHES                         MLD
          DATA   50          TIME FOR .01 INCHES                         MLD
          LMN    4           EXPECTED SPEED STATUS FOR 200 IPS UNIT      MLD
                                                                         MLD
*         TABLE OF GAP TIMES FOR 150 IPS UNIT                            MLD
                                                                         MLD
 T150     DATA   2666        TIME FOR .40 INCHES                         MLD
          DATA   1333        TIME FOR .20 INCHES                         MLD
          DATA   666         TIME FOR .10 INCHES                         MLD
          DATA   333         TIME FOR .05 INCHES                         MLD
          DATA   66          TIME FOR .01 INCHES                         MLD
          LMN    2           EXPECTED SPEED STATUS FOR 150 IPS UNIT      MLD
                                                                         MLD
*         TABLE OF GAP TIMES FOR 100 IPS UNIT                            MLD
                                                                         MLD
 T100     DATA   4000        TIME FOR .40 INCHES                         MLD
          DATA   2000        TIME FOR .20 INCHES                         MLD
          DATA   1000        TIME FOR .10 INCHES                         MLD
          DATA   500         TIME FOR .05 INCHES                         MLD
          DATA   100         TIME FOR .01 INCHES                         MLD
          LMN    1           EXPECTED SPEED STATUS FOR 100 IPS UNIT      MLD
          EJECT                                                          MLD
          TITLE  ERROR MESSAGES FOR 66X.                                 MLD
 PPMSGS   EQU    *           START OF PP MESSAGES                        MLD
****                                                                     MLD
          MMSG   ER.FLE,EC.FLE,(ADDR OUT OF FL),1                        MLD
          MMSG   ER.TL,EC.TL,(I/O TIME OUT ON CH RESERVE),1              MLD
          MMSG   ER.SEE,EC.SEE,(SUBR ENTRY/EXIT ERR),1                   MLD
          MMSG   ER.WC,EC.WC,(BUFFER INDEX OR WC ERR),1                  MLD
          MMSG   ER.RES,EC.RES,(R)                                       MLD
          MMSG   ER.RES1,EC.RES1,(R)                                     MLD
          MMSG   ER.RES2,EC.RES2,(R)                                     MLD
          MMSG   ER.CAS,EC.CAS,(CH ACTIVE FROM SYSTEM)                   MLD
          MMSG   ER.IDO,EC.IDO,(INACTIVE DURING OUTPUT)                  MLD
          MMSG   ER.NEO,EC.NEO,(NO END-OF-OP)                            MLD
          MMSG   ER.UHB,EC.UHB,(UNIT HUNG BUSY)                          MLD
          MMSG   ER.FNA,EC.FNA,(FUNC NOT ACCEPTED)                       MLD
          MMSG   ER.ABF,EC.ABF,(CH ACTIVE BEFORE FUNC)                   MLD
          MMSG   ER.FFNA,EC.FFNA,(NO INACTIVE TO FORMAT FUNC)            MLD
          MMSG   ER.SFR,EC.SFR,(NO INACTIVE TO STATUS FUNC)              MLD
          MMSG   ER.NSR,EC.NSR,(NO STATUS RETURNED)                      MLD
          MMSG   ER.ISR,EC.ISR,(INCOMPLETE STATUS RETURNED)              MLD
          MMSG   ER.SSD,EC.SSD,(UNIT SPEEDS DISAGREE)                    MLD
          MMSG   ER.STD,EC.STD,(UNIT TYPES DISAGREE)                     MLD
          MMSG   ER.CTO,EC.CTO,(CH TIMEOUT BEFORE INACTIVE)              MLD
          MMSG   ER.CNR,EC.CNR,(CH NOT RESERVED)                         MLD
          MMSG   ER.LOL,EC.LOL,(NO EMPTY TO LAST OUTPUT BYTE)            MLD
          MMSG   ER.RUE,EC.RUE,(REWIND/UNLOAD STATUS ERROR)              MLD
          MMSG   ER.TLE,EC.TLE,(COMMAND TIME LIMIT)                      MLD
          MMSG   ER.ILL,EC.ILL,(ILLEGAL COMMAND)                         MLD
          MMSG   ER.UNR,EC.UNR,(UNIT NOT READY) 
 MMSGL.   EQU    MMSGL
          DATA   0                                                       MLD
****                                                                     MLD
 TCHAN    EQU    *           CREATE CHANNEL TABLE                        MLD
          LIST   D                                                       MLD
          HERE                                                           MLD
          LIST   *                                                       MLD
          DATA   0           END OF CHANNEL TABLE                        MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
 .1       SET    POVLA                                                   MLD
 .2       SET    10000B                                                  MLD
 .3       SET    *-.1+5+4+500B                                           MLD
 .4       SET    .2-.1+5-1                                               MLD
          ERRNG  .2-.1+5-.3/500B*500B-1  BYTES LEFT AFTER LAST SECTOR    MLD
          ERRNG  .3/500B*500B-5-*+.1-5   BYTES LEFT IN LAST SECTOR       MLD
          ERRNG  .4/500B*500B-5-*+.1-5   BYTES CAN BE ADDED TO OVERLAY   MLD
          ENDIF                                                          MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          ERRPL  *-7773B     ERROR IF 66X OVERLAY OVERFLOW               MLD
                                                                         MLD
          QUAL   *                                                       MLD
