*COMDECK,65X                                                             MLD
          EJECT 
 55X      SEGMENT POVLA                                                  MLD
          ORG    POVLA                                                   MLD
          QUAL   65X                                                     MLD
*CALL,VERS
          COMMENT 65X PRODUCT OVERLAY FOR MALET "VERS"
          TITLE  HIGH LEVEL 60X/65X TAPE PRODUCT OVERLAY FOR MALET.      MLD
**        THE FOLLOWING COMMANDS ARE DESIGNED TO SUPPORT  THE  60X  AND  MLD
*         65X TAPE SUBSYSTEMS. 55X IS THE PRODUCT OVERLAY THAT EXECUTES  MLD
*         THESE COMMANDS AND IS DRIVEN BY THE INSTRUCTON STACK  OF  THE  MLD
*         MALET  PP  DRIVER. REQUESTS ARE MADE BY THE DRIVER BY STORING  MLD
*         PARAMETERS INTO PP DIRECT CELLS AND PERFORMING A  RETURN-JUMP  MLD
*         TO  AN  OVERLAY  SUBROUTINE.   WHEN THE REQUEST IS COMPLETED,  MLD
*         CONTROL IS RETURNED TO THE STACK TO EXECUTE THE NEXT COMMAND.  MLD
*                                                                        MLD
*         THE 60X/65X PRODUCT OVERLAY  SUPPORTS  A  PROGRAMMABLE  INPUT  MLD
*         BUFFER  (IB)  OF 500B PP WORDS, AN OUTPUT BUFFER (OB) OF 500B  MLD
*         PP WORDS AND A STATUS BUFFER (SB) OF 8  PP  WORDS.   DATA  IS  MLD
*         WRITTEN  TO TAPE FROM THE OUTPUT BUFFER AND IS READ FROM TAPE  MLD
*         TO THE INPUT BUFFER.  THE STATUS BUFFER IS USED TO  HOLD  THE  MLD
*         FOLLOWING WORDS_                                               MLD
*                                                                        MLD
*           WORD 0 = EQUIPMENT STATUS (FIRST WORD)                       MLD
*           WORD 1 = EQUIPMENT STATUS (SECOND WORD IF 65X)               MLD
*           WORD 2 = 668X STATUS                                         MLD
*           WORD 3 = LAST 668X FUNCTION                                  MLD
*           WORD 4 = I/O CHANNEL UNDER TEST (RIGHT JUSTIFIED)            MLD
*           WORD 5 = EQUIPMENT NUMBER UNDER TEST (RIGHT JUSTIFIED)       MLD
*           WORD 6 = UNIT NUMBER UNDER TEST (RIGHT JUSTIFIED)            MLD
*           WORD 7 = UPPER 12 BITS OF WORDS TRANSMITTED REGISTER         MLD
*                                                                        MLD
*         THE FOLLOWING COMMANDS ARE SUPPORTED BY THIS PRODUCT OVERLAY.  MLD
*                                                                        MLD
*           BKSP   - BACKSPACE ONE RECORD ON TAPE.                       MLD
*           ENDFILE- WRITE A FILE MARK/TAPE MARK.                        MLD
*           ERASE  - ERASE APPROXIMATELY 6 INCHES ON TAPE.               MLD
*           FSPACE - MOVE FORWARD ONE RECORD.                            MLD
*           MARGINS- SELECT CLIP LEVELS.                                 MLD
*           READ   - READ ONE RECORD FROM TAPE TO INPUT BUFFER.          MLD
*           REL    - RELEASE UNIT, CONTROLLER AND I/O CHANNEL.           MLD
*           RES    - RESERVE I/O CHANNEL, CONTROLLER AND UNIT.           MLD
*           REWIND - REWIND TAPE.                                        MLD
*           STATUS - INPUT 668X AND EQUIPMENT STATUS TO SB.              MLD
*           TIME   - MEASURE RECORD GAP SIZES IN HUNDREDS INCHES.        MLD
*           UNLOAD - UNLOAD TAPE.                                        MLD
*           WAITNB - WAIT UNIT/CONTROLLER NOT BUSY.                      MLD
*           WRITE  - WRITE ONE RECORD ON TAPE FROM OUTPUT BUFFER.        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
*            37 =  37.5 INCHES PER SECOND                                MLD
*            75 =  75   INCHES PER SECOND                                MLD
*           112 = 112.5 INCHES PER SECOND                                MLD
*           150 = 150   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 60X,65X.               MLD
*                                                                        MLD
*                                      BKSP--------. .------RES          MLD
*                                     ENDFILE----. . . .-----REWIND      MLD
*                                    ERASE-----. . . . . .----STATUS     MLD
*                                   FSPACE---. . . . . . . .---TIME      MLD
*                                  MARGINS-. . . . . . . . . .--UNLOAD   MLD
*                                 READ---. . . . . . . . . . . .-WAITNB  MLD
* CODES        MESSAGES          REL---. . . . . . . . . . . . . .WRITE  MLD
*                                      . . . . . . . . . . . . . .       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 04 WC OR BUFFER INDEX ERROR          . X . . . . . . . . X . . X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 10 I/O CH NOT ASSIGNED               . . . . . . . . . X . . . .       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 11 I/O CH ACTIVE FROM SYSTEM         . . . . . . . X X . . . . .       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 20 ALL DATA NOT ACCEPTED FROM PP     . . . . . . X . . . . . . X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 22 UNIT NOT CONNECTED                . X . X X X X . X . X X X X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 26 ABNORMAL EQUIPMENT STATUS         . . . . . . . . X . . X . .       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 27 UNIT HUNG BUSY                    . . . X X X X . X . . X X .       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 33 UNIT NOT READY                    . X . X X X X X X X X X X X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 34 NO END OF OPERATION               . X . X X X X . . . X . . X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 35 NO WRITE ENABLE                   . . . . X X . . . . . . . X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 40 668X TPE ON FUNCTION              X X . X X X X X X X X X X X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 41 668X TPE ON DATA                  . X . . . . . . . . . . . X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 42 668X INT OR EXT REJECT            X X . X X X X X X X X X X X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 43 NO INACTIVE TO LAST EQUIP FUNC    X X . X X X X X X X X X X X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 44 NO INACTIVE TO LAST 668X FUNC     X X . X X X X X X X X X X X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 45 EQUIPMENT STATUS NOT RETURNED     X X . X X X X X X X X X X X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 46 668X STATUS NOT RETURNED          X X . X X X X X X X X X X X       MLD
*    --------------------------------- - - - - - - - - - - - - - -       MLD
* 47 ILLEGAL COMMAND OR PARAMETER      . . . . . . . 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.CNR   EQU    10B         CH NOT RESERVED                             MLD
 EC.CAS   EQU    11B         CHANNEL ACTIVE FROM SYSTEM                  MLD
 EC.DNA   EQU    20B         ALL DATA NOT ACCEPTED FROM PP               MLD
 EC.UNC   EQU    22B         UNIT NOT CONNECTED                          MLD
 EC.AES   EQU    26B         ABNORMAL EQUIPMENT STATUS                   MLD
 EC.UHB   EQU    27B         UNIT HUNG BUSY                              MLD
 EC.UNR   EQU    33B         UNIT NOT READY                              MLD
 EC.NEOP  EQU    34B         NO END OF OPERATION                         MLD
 EC.NWE   EQU    35B         NO WRITE ENABLE                             MLD
 EC.TOF   EQU    40B         668X TPE ON FUNCTION                        MLD
 EC.TOD   EQU    41B         668X TPE ON DATA                            MLD
 EC.IER   EQU    42B         668X INT OR EXT REJECT                      MLD
 EC.NIEF  EQU    43B         NO INACTIVE TO LAST EQUIP. FUNCTION         MLD
 EC.NI8F  EQU    44B         NO INACTIVE TO LAST 668X FUNCTION           MLD
 EC.ESNR  EQU    45B         EQUIP STATUS NOT RETURNED                   MLD
 EC.8SNR  EQU    46B         668X STATUS NOT RETURNED                    MLD
 EC.ILL   EQU    47B         ILLEGAL COMMAND OR PARAMETER                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
 WA       EQU    63B         WRITE ACTIVE FLAG                           MLD
 WL       EQU    64B         WRITE LOOP COUNT FOR WRITE COMMAND          MLD
 SC       EQU    65B         SCRATCH DIRECT CELL FOR USE BY SUBROUTINES  MLD
 CONNECT  EQU    66B         CONTROLLER CONNNECTED FLAG                  MLD
 RP       EQU    67B         RESERVE PARAMETERS                          MLD
          EJECT                                                          MLD
                                                                         MLD
*         EQUATES FOR EQUIPMENT FUNCTIONS.                               MLD
                                                                         MLD
 RELEASE  EQU    0           RELEASE UNIT                                MLD
 BINARY   EQU    1           BINARY MODE                                 MLD
 CODED    EQU    2           CODED MODE                                  MLD
 D556     EQU    3           556 BPI                                     MLD
 D200     EQU    4           200 BPI                                     MLD
 D800     EQU    6           800 BPI                                     MLD
 D1600    EQU    7           1600 BPI                                    MLD
 REW      EQU    10B         REWIND                                      MLD
 UNL      EQU    11B         UNLOAD                                      MLD
 BACKSP   EQU    12B         NORMAL BACKSPACE                            MLD
 EOF      EQU    15B         WRITE END OF FILE                           MLD
 ERASER   EQU    16B         SKIP BAD SPOT                               MLD
 AEOP     EQU    24B         ABNORMAL END OF OPERATION INTERRUPT         MLD
 CAEOP    EQU    25B         CLEAR ABNORMAL EOP INTERRUPT                MLD
 READF    EQU    40B         READ FORWARD                                MLD
 READR    EQU    41B         READ REVERSE                                MLD
 CMMODE   EQU    42B         CLEAR MEMORY MODE                           MLD
 CCMODE   EQU    44B         CLEAR CONVERSION MODE                       MLD
 SCMODE   EQU    45B         SELECT CONVERSION MODE                      MLD
 CLEARCB  EQU    46B         CLEAR CONTROL BACKSPACE                     MLD
 CBKSP    EQU    47B         CONTROL BACKSPACE                           MLD
 CLIPS    EQU    50B         SELECT READ CLIPS                           MLD
 CLEAR3N  EQU    52B         CLEAR 3N+2                                  MLD
 SET3N    EQU    53B         SET 3N+2 ACTIVE                             MLD
 CLEARS2  EQU    56B         CLEAR STATUS 2                              MLD
 SETS2    EQU    57B         SELECT STATUS 2                             MLD
                                                                         MLD
*         GENERAL STATUS BIT EQUATES.                                    MLD
                                                                         MLD
 RDY      EQU    1           UNIT READY                                  MLD
 BUSY     EQU    2           UNIT BUSY                                   MLD
 WE       EQU    4           WRITE ENABEL                                MLD
 LP       EQU    20B         LOAD POINT                                  MLD
 EOP      EQU    1000B       END OF OPERATION                            MLD
 OPRES    EQU    4000B       RESERVED TO OPPOSITE ACCESS                 MLD
                                                                         MLD
*         EQUATES FOR 668X FUNCTIONS.                                    MLD
                                                                         MLD
 SELCON   EQU    1000B       CONNECT                                     MLD
 SEL8S    EQU    1200B       668X STATUS                                 MLD
 SELES    EQU    1300B       EQUIPMENT STATUS                            MLD
 SELIN    EQU    1460B       INPUT                                       MLD
 SELOUT   EQU    1660B       OUTPUT                                      MLD
 SEL81    EQU    2000B       SELECT 668X                                 MLD
 DSEL81   EQU    2100B       DESELECT 668X                               MLD
                                                                         MLD
*         DEVICE CODES SUPPORTED.                                        MLD
                                                                         MLD
 T60X     EQU    40B         604/607 - 7 TK                              MLD
 T657     EQU    41B         657     - 7 TK                              MLD
 T659     EQU    51B         659     - 9 TK                              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
*         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 MARGINS SUBROUTINE              MLD
 XREAD    LJM    **                                                      MLD
          LJM    READ        HIGH SPEED INPUT SUBROUTINE                 MLD
 XREWIND  LJM    **                                                      MLD
          LJM    REWIND      REWIND TAPE SUBROUTINE                      MLD
 XSTATUS  LJM    **                                                      MLD
          LJM    STATUS      INPUT ALL 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 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- DEQP, BD.DCH                                            MLD
*                                                                        MLD
                                                                         MLD
**     1. GO TO STEP 3 IF THE UNIT IS NOT CONNECTED.                     MLD
*                                                                        MLD
*      2. ISSUE THE FOLLOWING FUNCTIONS TO PLACE THE CONTROLLER IN       MLD
*         A MASTER CLEARED STATE. VERIFY  THAT  EACH  FUNCTION  IS       MLD
*         ACCEPTED AND NO TRANSMISSION PARITY ERROR IS DETECTED.         MLD
*                                                                        MLD
*          A. CLEAR REVERSE READ            (0040)                       MLD
*          B. CLEAR CONTROL BACKSPACE       (0046)                       MLD
*          C. CLEAR ABNORMAL INTERRUPT      (0025)                       MLD
*          D. CLEAR MEMORY MODE IF 65X      (0042)                       MLD
*          E. CLEAR CONVERSION MODE IF 65X  (0044)                       MLD
*          F. CLEAR 3N+2 IF 65X             (0052)                       MLD
*          G. CLEAR STATUS 2 IF 65X         (0056)                       MLD
*          H. RELEASE AND DISCONNECT        (0000)                       MLD
                                                                         MLD
 REL      RJM    DEQP        DISCONNECT EQUIPMENT IF CONNECTED           MLD
                                                                         MLD
**     3. CALL  THE  PP DRIVER TO DROP I/O CHANNEL AND COMMUNICATE       MLD
*         WITH THE OPERATING SYSTEM AND MALET EXECUTIVE.                 MLD
                                                                         MLD
          RJM    BD.DCH      DROP CHANNEL/TALK TO SYSTEM AND EXEC        MLD
          LJM    XREL        EXIT TO CALLER                              MLD
          SPACE  4,20                                                    MLD
**        RES - RESERVE DEVICE AND I/O CHANNEL.                          MLD
*                                                                        MLD
*         RELEASE DEVICE VIA DEQP.   DROP  THE  I/O  CHANNEL  IF  BEING  MLD
*         REQUESTED  BY  SYSTEM.  COMMUNICATE  WITH  SYSTEM,  AND  TEST  MLD
*         DROP/CHECKPOINT/ERROR FLAGS. THE I/O CHANNEL IS THEN REQUEST-  MLD
*         TED 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     MLD
*                SET IN ALL THE OTHER SUBROUTINES.                       MLD
*                                                                        MLD
*                ERRCAS  - IF CHANNEL ACTIVE ON ENTRY.                   MLD
*                ERRNI8F - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRDNA  - IF CONNECT CODE NOT ACCEPTED AS OUTPUT.       MLD
*                ERRAES  - IF CONTROLLER RESERVED TO OPPOSITE ACCESS.    MLD
*                ERRILL  - IF ILLEGAL DENSITY OPTION REQUESTED.          MLD
*                                                                        MLD
*         USES - EC, EA, EM, D.T0, D.T1, L8, RP,CONNECT, CD, P.          MLD
*                                                                        MLD
*         CALLS- DEQP, BD.RCH, GES, FAN.                                 MLD
*                                                                        MLD
                                                                         MLD
**     1. PERFORM THE RELEASE SEQUENCE IF THE UNIT IS CONNECTED.         MLD
*         CLEAR ERROR EXIT REGISTERS.                                    MLD
                                                                         MLD
 RES      RJM    DEQP        DISCONNECT EQUIPMENT IF CONNECTED           MLD
          LDN    0                                                       MLD
          STD    EC          CLEAR ERROR REGISTERS                       MLD
          STD    EA                                                      MLD
          STD    EM                                                      MLD
          LDD    D.T0                                                    MLD
          STD    RP          STORE LAST SELECTED RES PARAMETERS.         MLD
          RJM    BD.RCH      DROP/REQUEST CHANNEL AS REQUESTED           MLD
          AJM    ERRCAS      ERROR IF CHANNEL ACTIVE FROM SYSTEM         MLD
                                                                         MLD
**     2. SELECT THE 668X WITH A 2000 FUNCTION.                          MLD
                                                                         MLD
          LDC    SEL81                                                   MLD
          FAN    40B         SELECT 668X                                 MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
                                                                         MLD
**     3. IF THE EQUIPMENT NUMBER OF THE CONTROLLER IS 4 THRU 7, A       MLD
*         MODE I CONNECT IS ISSUED. OTHERWISE,  ISSUE  A  MODE  II       MLD
*         CONNECT FUNCTION (1000) AND OUTPUT THE CONNECT CODE.           MLD
                                                                         MLD
 RES1     UJN    RES3        *** JUMP INSTRUCTION IF EQUIP 0 THRU 3      MLD
*         DATA   0           *** DATA 0 IF EQUIPMENT IS 4 THRU 7         MLD
          LDC    **          CONNECT CODE STORED HERE                    MLD
 RES2     EQU    *-1                                                     MLD
          RJM    FAN         CONNECT                                     MLD
          UJN    RES6                                                    MLD
                                                                         MLD
*         COMPLETE CONNECT SEQUENCE FOR  EQUIPMENTS 0 THRU 3             MLD
                                                                         MLD
 RES3     LDC    SELCON                                                  MLD
          FAN    40B         SELECT MODE II CONNECT                      MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ACN    40B                                                     MLD
          LDM    RES2        CONNECT CODE                                MLD
          OAN    40B         OUTPUT CONNECT CODE                         MLD
          LDC    128
 RES4     EJM    RES5A       IF CONNECT CODE IS ACCEPTED
 RES5     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    RES4        IF TIME IS NOT UP                           MLD
          LJM    ERRDNA      ERROR IF CONNECT CODE NOT ACCEPTED          MLD
 RES5A    DCN    40B         DISCONNECT CHAN AFTER OUTPUT 
                                                                         MLD
**     4. SET THE CONNECTED FLAG.                                        MLD
                                                                         MLD
 RES6     LDN    1                                                       MLD
          STD    CONNECT     SET THE CONNECTED FLAG                      MLD
                                                                         MLD
**     5. VERIFY THAT THE UNIT IS NOT RESERVED TO OPPOSITE ACCESS.       MLD
                                                                         MLD
          RJM    GES         GET EQUIPMENT STATUS 
          SHN    6                                                       MLD
          PJN    RES6A       IF NOT RESERVED BY OPPOSITE ACCESS          MLD
          LJM    ERRAES      ERROR IF ABNORMAL STATUS                    MLD
                                                                         MLD
**     5. ISSUE  FUNCTIONS TO SELECT THE SPECIFIED OPTIONS (PARITY       MLD
*         3N+2 MODE AND CONVERSION).                                     MLD
                                                                         MLD
 RES6A    LDD    RP          LOOK AT SELECTED OPTIONS                    MLD
          SHN    -9                                                      MLD
          LPN    1                                                       MLD
          ADN    BINARY                                                  MLD
          RJM    FAN         ISSUE SELECTED PARITY (ODD OR EVEN)         MLD
          LDD    RP                                                      MLD
          SHN    -6                                                      MLD
          LPN    1                                                       MLD
          ADN    CCMODE                                                  MLD
          STM    FTAB3       SAVE CONVERSION MODE (SET OR CLEAR)         MLD
          LDD    RP                                                      MLD
          SHN    -3                                                      MLD
          LPN    1                                                       MLD
          ADN    CLEAR3N                                                 MLD
          STM    FTAB4       SAVE 3N+2 OPTION (SET OR CLEAR)             MLD
          LDD    RP                                                      MLD
          LPN    3                                                       MLD
          STD    D.T1                                                    MLD
          LDM    DTAB,D.T1   GET DENSITY SELECTION                       MLD
          ZJN    RES10       IF ILLEGAL DENSITY FOR UNIT ASSIGNED        MLD
          STM    CD          SAVE CURRENT DENSITY SELECTION              MLD
          LDN    0                                                       MLD
          STD    D.T1        CLEAR INDEX TO FUNCTION TABLE               MLD
                                                                         MLD
*         ISSUE FUNCTIONS FROM FUNCTION TABLE TO PUT IT IN SELECTED      MLD
*         STATES.                                                        MLD
                                                                         MLD
 RES7     LDM    FTAB1,D.T1  GET FUNCTION                                MLD
          ZJN    RES8        IF END OF TABLE                             MLD
          RJM    FAN         ISSUE FUNCTION                              MLD
          AOD    D.T1                                                    MLD
          UJN    RES7        CONTINUE UNTIL END OF TABLE FOUND           MLD
                                                                         MLD
**     6. IF STATUS INDICATES THE UNIT IS AT LOAD POINT, ISSUE THE       MLD
*         THE  SELECTED  DENSITY FUNCTION.                               MLD
*         FUNCTION.                                                      MLD
                                                                         MLD
 RES8     LDM    SB                                                      MLD
          LPN    LP                                                      MLD
          ZJN    RES9        IF NOT AT LOADPOINT                         MLD
          LDM    CD          CURRENT DENSITY FUNCTION                    MLD
          RJM    FAN         ISSUE CURRENT DENSITY FUNCTION              MLD
 RES9     LJM    XRES        EXIT TO STACK
                                                                         MLD
 RES10    LJM    ERRILL      ILLEGAL COMMAND OR PARAMETER                MLD
                                                                         MLD
*         FUNCTION TABLE FOR RES AND REL SUBROUTINES                     MLD
                                                                         MLD
 FTAB1    VFD    12/CAEOP    CLEAR ABNORMAL EOP INTERRUPT                MLD
          VFD    12/READF    CLEAR REVERSE READ                          MLD
 FTAB2    VFD    12/CMMODE   *** CLEAR MEMORY MODE IF 65X ***            MLD
*         DATA   0           *** DATA 0 IF 60X ASSIGNED ***              MLD
 FTAB3    VFD    12/CCMODE   CLEAR/SET CONVERSION MODE IF 65X            MLD
 FTAB4    VFD    12/CLEAR3N  SET/CLEAR 3N+2 OPTION                       MLD
          DATA   0           END OF FUNCTION TABLE                       MLD
                                                                         MLD
*         FUNCTION TABLE OF LEGAL DENSITY OPTIONS                        MLD
                                                                         MLD
 DTAB     VFD    12/D556     *** D556 IF 60X ***                         MLD
*         DATA   0           *** DATA 0 IF 65X ***                       MLD
          VFD    12/D800     800 BPI                                     MLD
 DTAB1    VFD    12/D1600    *** D1600 FOR 65X ***                       MLD
*         DATA   0           *** DATA 0 FOR 60X - ILLEGAL DENSITY **     MLD
 DTAB2    VFD    12/D200     *** D200 IF 60X ***                         MLD
*         DATA   0           *** DATA 0 IF 65X ***                       MLD
          SPACE  4,20                                                    MLD
**        BKSP - BACKSPACE.                                              MLD
*                                                                        MLD
*         WAIT READY NOT BUSY AND BACKSPACE TAPE ACCORDING TO REQUEST.   MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (D.T0) = TYPE OF BACKSPACE FLAG  0 = NORMAL             MLD
*                                                 1 = SHORT CBKSP        MLD
*                                                 2 = LONG CBKSP         MLD
*                                                                        MLD
*         EXIT - TAPE BACKSPACED ONE RECORD, END OF OP DETECTED AND      MLD
*                668X AND EQUIPMENT STATUS STORED INTO SB.               MLD
*                                                                        MLD
*                ERRILL  - IF BKSP REQUESTED AT LOAD POINT.              MLD
*                                                                        MLD
*         USES - D.T0, P.                                                MLD
*                                                                        MLD
*         CALLS- WRNB, FAN, WEOP, OUT, WWA.                              MLD
*                                                                        MLD
                                                                         MLD
**     1. VERIFY UNIT IS CONNECTED.                                      MLD
*                                                                        MLD
*      2. REQUEST  AND  INPUT  668X  AND  EQUIPMENT  STATUS TO THE       MLD
*         STATUS BUFFER AND TEST FOR READY AND NOT BUSY.  WAIT  UP       MLD
*         TO 6 MILLISECONDS FOR THE UNIT TO DROP BUSY.                   MLD
                                                                         MLD
 BKSP     RJM    WRNB        WAIT READY AND NOT BUSY                     MLD
          LPN    LP                                                      MLD
          ZJN    BKS         IF NOT AT LOAD POINT                        MLD
          LJM    ERRILL      ILLEGAL COMMAND AT LOAD POINT               MLD
                                                                         MLD
 BKS      LDD    D.T0                                                    MLD
          NJN    BKS1        IF CONTROL BACKSPACE REQUESTED              MLD
                                                                         MLD
**        THE FOLLOWING STEPS ARE PERFORMED FOR A NORMAL BACKSPACE.      MLD
*                                                                        MLD
*      3. ISSUE A BACKSPACE FUNCTION (0012).                             MLD
*      4. REQUEST  AND  INPUT 668X STATUS TO THE STATUS BUFFER AND       MLD
*         VERIFY NO REJECT OR TRANSMISSION PARITY  ERROR  OCCURRED       MLD
*         ON THE BACKSPACE FUNCTION.                                     MLD
                                                                         MLD
          LDN    BACKSP                                                  MLD
          RJM    FAN         ISSUE BACKSPACE FUNCTION                    MLD
                                                                         MLD
**     5. WAIT UP TO 8 SECONDS FOR END-OF-OPERATION AND STORE 668X       MLD
*         AND EQUIPMENT STATUS INTO THE STATUS BUFFER.                   MLD
                                                                         MLD
          LDC    8000/2      DELAY TIME IN QUANTUMS OF 2 MSEC            MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
          UJN    BKS2        BUMP P AND EXIT                             MLD
                                                                         MLD
**        THE FOLLOWING STEPS ARE PERFORMED FOR A CONTROL BACKSPACE.     MLD
*                                                                        MLD
*      1. ISSUE A CONTROL BACKSPACE FUNCTION (0047).                     MLD
*      2. REQUEST AND INPUT 668X STATUS TO THE STATUS  BUFFER  AND       MLD
*         VERIFY  NO  REJECT OR TRANSMISSION PARITY ERROR OCCURRED       MLD
*         ON THE CONTROL BACKSPACE FUNCTION.                             MLD
*                                                                        MLD
 BKS1     LDN    CBKSP                                                   MLD
          RJM    FAN         SELECT CONTROL BACKSPACE                    MLD
                                                                         MLD
                                                                         MLD
**     3. VERIFY THAT THE UNIT IS WRITE ENABLED.                         MLD
*      4. SELECT ABNORMAL END OF OPERATION INTERRUPT (0024).             MLD
*      5. REQUEST AND INPUT 668X STATUS TO THE STATUS  BUFFER  AND       MLD
*         VERIFY  NO  REJECT OR TRANSMISSION PARITY ERROR OCCURRED       MLD
*         ON THE INTERRUPT FUNCTION.                                     MLD
*      6. ISSUE  A  668X  WRITE  FUNCTION  (1640)  AND  OUTPUT THE       MLD
*         REQUESTED NUMBER OF WORDS FROM THE OUTPUT BUFFER.              MLD
*      7. VERIFY  THAT  ALL WORDS WERE ACTUALLY TRANSMITTED DURING       MLD
*         THE WRITE.                                                     MLD
*      8. REQUEST AND INPUT EQUIPMENT STATUS TO THE STATUS BUFFER.       MLD
*         WAIT UP TO 5 MSEC FOR END-OF-OPERATION.                        MLD
                                                                         MLD
          LDD    D.T0                                                    MLD
          SHN    -1          GET RID OF CONTROL BACKSPACE FLAG           MLD
          STD    D.T0        MOVE PARAMETER TO AGREE WITH WRITE          MLD
          RJM    OUT         PERFORM OUTPUT                              MLD
                                                                         MLD
**     8. ISSUE A CLEAR CONTROL BACKSPACE FUNCTION (0046).               MLD
*      9. REQUEST AND INPUT 668X STATUS TO THE STATUS  BUFFER  AND       MLD
*         VERIFY  NO  REJECT OR TRANSMISSION PARITY ERROR OCCURRED       MLD
*         ON THE CLEAR CONTROL BACKSPACE FUNCTION.                       MLD
                                                                         MLD
          RJM    WWA         WAIT WRITE ACTIVITY                         MLD
          LDN    CLEARCB                                                 MLD
          RJM    FAN         CLEAR CONTROL BACKSPACE                     MLD
 BKS2     LJM    XBKSP       EXIT TO STACK
          SPACE  4,20                                                    MLD
**        ENDFILE - WRITE A FILE/TAPE MARK.                              MLD
*                                                                        MLD
*         WAIT READY NOT BUSY, VERIFY WRITE ENABLE AND WRITE A FILE      MLD
*         MARK ON TAPE.                                                  MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - FILE MARK WRITTEN ON TAPE, END OF OP DETECTED AND       MLD
*                668X AND EQUIPMENT STATUS STORED IN SB.                 MLD
*                                                                        MLD
*                ERRNWE  - IF NO WRITE ENABLE.                           MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- WRNB, FAN, WEOP, WWA.                                   MLD
*                                                                        MLD
                                                                         MLD
**     1. VERIFY UNIT IS CONNECTED.                                      MLD
*      2. REQUEST AND INPUT  668X  AND  EQUIPMENT  STATUS  TO  THE       MLD
*         STATUS  BUFFER AND TEST FOR READY AND NOT BUSY.  WAIT UP       MLD
*         TO 6 MILLISECONDS FOR THE UNIT TO DROP BUSY.                   MLD
                                                                         MLD
 ENDFILE  RJM    WRNB        WAIT READY AND NOT BUSY.                    MLD
                                                                         MLD
**     3. VERIFY THAT THE UNIT IS WRITE ENABLED.                         MLD
                                                                         MLD
          LPN    WE                                                      MLD
          NJN    EOF1        IF WRITE ENABLED                            MLD
          LJM    ERRNWE      ERROR IF NO WRITE ENABLE                    MLD
                                                                         MLD
**     4. ISSUE A CLEAR CONVERSION MODE FUNCTION (0044) IF  A  65X       MLD
*         UNIT IS ASSIGNED.                                              MLD
*      5. REQUEST AND INPUT 668X STATUS TO THE STATUS  BUFFER  AND       MLD
*         VERIFY  NO REJECT OR TRANSMISSION PARITY ERROR  OCCURRED       MLD
*         ON THE CLEAR CONVERSION MODE FUNCTION.                         MLD
                                                                         MLD
 EOF1     UJN    EOF2        *** JUMP INSTRUCTION IF 60X                 MLD
*         DATA   0           *** DATA 0 IF 65X                           MLD
          LDN    CCMODE                                                  MLD
          RJM    FAN         CLEAR CONVERSION MODE                       MLD
                                                                         MLD
**     6. ISSUE A WRITE END OF FILE FUNCTION (0015).                     MLD
*      7. REQUEST  AND  INPUT 668X STATUS TO THE STATUS BUFFER AND       MLD
*         VERIFY NO REJECT OR TRANSMISSION PARITY  ERROR  OCCURRED       MLD
*         ON THE WRITE END OF FILE FUNCTION.                             MLD
                                                                         MLD
 EOF2     LDN    EOF                                                     MLD
          STD    WA          SET WRITE ACTIVE FLAG                       MLD
          RJM    FAN         WRITE END OF FILE                           MLD
                                                                         MLD
**     8. WAIT UP TO 200 MILLISECONDS FOR  END  OF  OPERATION.           MLD
                                                                         MLD
          LDC    200/2       DELAY TIME IN QUANTUMS OF 2 MSEC            MLD
          RJM    WEOP        WAIT END OF OPERATION.                      MLD
                                                                         MLD
**     9. IF A 65X IS ASSIGNED, RESELECT CONVERSION MODE IF IT WAS       MLD
*         SELECTED INITIALLY.                                            MLD
                                                                         MLD
 EOF3     UJN    EOF4        *** JUMP INSTRUCTION IF A 60X IS ASSIGNED   MLD
*         DATA   0           *** DATA 0 IF A 65X IS ASSIGNED             MLD
          RJM    WWA         WAIT WRITE ACTIVITY                         MLD
          LDM    FTAB3       GET LAST SELECTED MODE                      MLD
          RJM    FAN         SET/CLEAR CONVERSION MODE                   MLD
 EOF4     LJM    XENDFILE    EXIT TO STACK
          SPACE  4,20                                                    MLD
**        ERASE - ERASE 6 INCHES OF TAPE.                                MLD
*                                                                        MLD
*         WAIT READY NOT BUSY, VERIFY WRITE ENABLE AND PERFORM A         MLD
*         SKIP BAD SPOT FUNCTION.                                        MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - TAPE ERASED, END OF OP DETECTED AND 668X AND            MLD
*                EQUIPMENT STATUS STORED IN SB.                          MLD
*                                                                        MLD
*                ERRNWE  - IF NO WRITE ENABLE.                           MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- WRNB, FAN, WEOP.                                        MLD
                                                                         MLD
**     1. VERIFY UNIT IS CONNECTED.                                      MLD
*      2. REQUEST AND INPUT  668X  AND  EQUIPMENT  STATUS  TO  THE       MLD
*         STATUS  BUFFER AND TEST FOR READY AND NOT BUSY.  WAIT UP       MLD
*         TO 6 MILLISECONDS FOR THE UNIT TO DROP BUSY.                   MLD
                                                                         MLD
 ERASE    RJM    WRNB        WAIT READY NOT BUSY                         MLD
                                                                         MLD
**     3. VERIFY THAT THE UNIT IS WRITE ENABLED.                         MLD
                                                                         MLD
          LPN    WE                                                      MLD
          NJN    ERA1        IF WRITE ENABLED                            MLD
          LJM    ERRNWE      ERROR IF NO WRITE ENABLE                    MLD
                                                                         MLD
**     4. ISSUE A SKIP BAD SPOT FUNCTION (0016).                         MLD
*      5. REQUEST  AND  INPUT 668X STATUS TO THE STATUS BUFFER AND       MLD
*         VERIFY NO REJECT OR TRANSMISSION PARITY  ERROR  OCCURRED       MLD
*         ON THE SKIP BAD SPOT FUNCTION.                                 MLD
                                                                         MLD
 ERA1     LDN    ERASER                                                  MLD
          STD    WA          SET WRITE ACTIVE FLAG                       MLD
          RJM    FAN         SKIP BAD SPOT                               MLD
                                                                         MLD
**     6. WAIT UP TO 200 MILLISECONDS FOR END OF OPERATION AND           MLD
*         PERFORM A NORMAL EXIT.                                         MLD
                                                                         MLD
          LDC    200/2       DELAY TIME IN QUANTUMS OF 2 MSEC            MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
          LJM    XERASE      EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        FSPACE - MOVE ONE RECORD FORWARD ON TAPE.                      MLD
*                                                                        MLD
*         WAIT READY NOT BUSY, SELECT REVERSE READ AND PERFORM A         MLD
*         BACKSPACE TO MOVE TAPE FORWARD, THEN CLEAR REVERSE READ.       MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - TAPE MOVED FORWARE ONE RECORD, END OF OP DETECTED AND   MLD
*                668X AND EQUIPMENT STATUS STORED IN SB.                 MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- WRNB, FAN, WEOP.                                        MLD
                                                                         MLD
**     1. VERIFY UNIT IS CONNECTED.                                      MLD
*      2. REQUEST AND INPUT  668X  AND  EQUIPMENT  STATUS  TO  THE       MLD
*         STATUS  BUFFER AND TEST FOR READY AND NOT BUSY.  WAIT UP       MLD
*         TO 6 MILLISECONDS FOR THE UNIT TO DROP BUSY.                   MLD
                                                                         MLD
 FSPACE   RJM    WRNB        WAIT READY NOT BUSY                         MLD
                                                                         MLD
**     3. ISSUE A REVERSE READ FUNCTION (0041).                          MLD
*      4. REQUEST  AND  INPUT 668X STATUS TO THE STATUS BUFFER AND       MLD
*         VERIFY NO REJECT OR TRANSMISSION PARITY  ERROR  OCCURRED       MLD
*         ON THE REVERSE READ FUNCTION.                                  MLD
                                                                         MLD
          LDN    READR                                                   MLD
          RJM    FAN         SELECT REVERSE READ                         MLD
                                                                         MLD
**     4. ISSUE  A  BACKSPACE FUNCTION (0012) TO MOVE TAPE FORWARD       MLD
*         ONE RECORD.                                                    MLD
*      5. REQUEST AND INPUT 668X STATUS TO THE STATUS  BUFFER  AND       MLD
*         VERIFY  NO REJECT OR TRANSMISSION PARITY ERROR  OCCURRED       MLD
*         ON THE BACKSPACE FUNCTION.                                     MLD
                                                                         MLD
          LDN    BACKSP                                                  MLD
          RJM    FAN         FORESPACE                                   MLD
                                                                         MLD
**     6. WAIT UP TO 8 SECONDS FOR END OF OPERATION.                     MLD
                                                                         MLD
          LDC    8000/2      DELAY TIME IN QUANTUMS OF 2 MSEC            MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
                                                                         MLD
**     7. ISSUE A CLEAR REVERSE READ FUNCTION (0040).                    MLD
*      8. REQUEST AND INPUT 668X STATUS TO THE STATUS  BUFFER  AND       MLD
*         VERIFY  NO REJECT OR TRANSMISSION PARITY ERROR  OCCURRED       MLD
*         ON THE CLEAR REVERSE READ FUNCTION.                            MLD
                                                                         MLD
          LDN    READF                                                   MLD
          RJM    FAN         SELECT READ FORWARD                         MLD
          LJM    XFSPACE     EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        MARGINS - SELECT MARGINS.                                      MLD
*                                                                        MLD
*         STORE SELECTED MARGINS FOR SUBSEQUENT READS.                   MLD
*                                                                        MLD
*         ENTRY- (A) = MARGIN SELECTION                                  MLD
*                                                                        MLD
*         EXIT - MARGINS STORED.                                         MLD
*                                                                        MLD
*         USES - RD1, P.                                                 MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
                                                                         MLD
 MARGINS  LPN    7                                                       MLD
          SHN    6                                                       MLD
          ADN    CLIPS       FORM FUNCTION CODE                          MLD
          STM    RD1         SAVE MARGINS FUNCTION IN THE READ ROUTINE   MLD
          LJM    XMARGINS    EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        READ - READ ONE RECORD.                                        MLD
*                                                                        MLD
*         SELECT READ CLIPS, FORWARD OR REVERSE READ AND                 MLD
*         READ ONE RECORD TO THE INPUT BUFFER.  SAVE  THE                MLD
*         NUMBER OF WORDS REQUESTED IN THE WC REGISTER OR                MLD
*         THE FIRST 500B WORDS AND CONTINUE READING UNTIL                MLD
*         END-OF-RECORD.                                                 MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (D.T0) = FORWARD OR REVERSE FLAG  (FWD IF ZERO).        MLD
*                                                                        MLD
*         EXIT - ONE RECORD READ, WORDS TRANSMITTED STORED INTO          MLD
*                WT AND STATUS BUFFER, END OF OPERATION DETECTED,        MLD
*                AND 668X AND EQUIPMENT STATUS STORED INTO SB.           MLD
*                                                                        MLD
*                ERRILL  - IF REVERSE READ ATTEMPTED AT LOAD POINT.      MLD
*                ERRNI8F - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                                                                        MLD
*         USES - WT, WTA, D.T1, D.T2, SC, P.                             MLD
*                                                                        MLD
*         CALLS- TCA, FAN, WEOP.                                         MLD
*                                                                        MLD
**     1. VERIFY UNIT IS CONNECTED AND READY.                            MLD
                                                                         MLD
 READ     RJM    TCA         TEST CONTROLLER ASSIGNMENT                  MLD
                                                                         MLD
**     2. CLEAR WT REGISTER.                                             MLD
                                                                         MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STM    WTA                                                     MLD
                                                                         MLD
**     2. ISSUE PROGRAMMABLE CLIP FUNCTION (0X50) AS SPECIFIED  BY       MLD
*         ANY PREVIOUS MARGINS COMMAND.                                  MLD
*      3. REQUEST AND INPUT 668X AND EQUIPMENT STATUS  TO  THE  PP       MLD
*         STATUS  BUFFER  AND  VERIFY   NO  REJECT OR TRANSMISSION       MLD
*         PARITY ERROR OCCURRED ON THE PROGRAMMABLE CLIP FUNCTION.       MLD
                                                                         MLD
          LDC    0                                                       MLD
 RD1      EQU    *-1         CLIP FUNCTION STORED HERE                   MLD
          ZJN    RD2         IF NO CLIPS SELECTED                        MLD
          RJM    FAN         ISSUE SELECTED CLIPS                        MLD
                                                                         MLD
**     4. ISSUE   A  SELECT  ABNORMAL  END-OF-OPERATION  INTERRUPT       MLD
*         FUNCTION (0024).                                               MLD
*      5. REQUEST  AND  INPUT 668X STATUS TO THE STATUS BUFFER AND       MLD
*         VERIFY NO REJECT OR TRANSMISSION PARITY  ERROR  OCCURRED       MLD
*         ON THE INTERRUPT FUNCTION.                                     MLD
                                                                         MLD
 RD2      LDN    AEOP                                                    MLD
          RJM    FAN         SELECT ABNORMAL END-OF-OP INTERRUPT         MLD
                                                                         MLD
**     6. ISSUE A REVERSE READ FUNCTION (0041)  OR  CLEAR  REVERSE       MLD
*         READ FUNCTION (0040) BASED ON THE KEYWORD FWD OR REV.          MLD
*      7. REQUEST AND INPUT 668X STATUS TO THE STATUS  BUFFER  AND       MLD
*         VERIFY  NO  REJECT OR TRANSMISSION PARITY ERROR OCCURRED       MLD
*         ON THE DIRECTION FUNCTION.                                     MLD
                                                                         MLD
          LDD    D.T0                                                    MLD
          ZJN    RD2B        IF NOT REVERSE READ                         MLD
          LDM    SB                                                      MLD
          LPN    LP                                                      MLD
          ZJN    RD2A        IF NOT REVERSE READ AT LOAD POINT           MLD
          LJM    ERRILL      ILLEGAL TO READ REVERSE AT LOAD POINT       MLD
                                                                         MLD
 RD2A     LDD    D.T0                                                    MLD
 RD2B     ADN    READF                                                   MLD
          RJM    FAN         SELECT FWD OR REV READ                      MLD
                                                                         MLD
**     8. ISSUE  A  READ  FUNCTION TO THE 668X (1460) AND INPUT WC       MLD
*         WORDS TO THE INPUT BUFFER. STORE THE NUMBER OF WORDS           MLD
*         READ INTO THE WT REGISTER AND THE OVERFLOW WORD OF THE         MLD
*         STATUS BUFFER.                                                 MLD
                                                                         MLD
          LDC    SELIN                                                   MLD
          FAN    40B         SELECT 668X READ                            MLD
          STM    L8          SAVE LAST 668X FUNCTION.                    MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION.      MLD
          ACN    40B         START TAPE MOTION                           MLD
          LDN    0                                                       MLD
          STD    D.T1        CLEAR LOOP COUNT                            MLD
          LDD    WC                                                      MLD
          STD    SC          SET WORDS TO READ TO IB                     MLD
          SBD    BL                                                      MLD
          MJN    RD3         IF WC IS LESS THAN BUFFER SIZE              MLD
          LDD    BL                                                      MLD
          STD    SC          SET IT TO BUFFER SIZE IF LARGER             MLD
 RD3      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      LDN    10B                                                     MLD
          IAM    RDA         READ 8 MORE WORDS                           MLD
          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
          LDN    10B                                                     MLD
          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
          ADD    D.T2                                                    MLD
          STD    WT          STORE TOTAL                                 MLD
          SHN    -12                                                     MLD
          STM    WTA         SAVE UPPER BITS OF WT REGISTER IN SB        MLD
                                                                         MLD
**    10. WAIT  UP  TO  6 MSEC FOR END-OF-OPERATION AND STORE 668X       MLD
*         AND EQUIPMENT STATUS INTO THE STATUS BUFFER.                   MLD
                                                                         MLD
          LDN    6/2         DELAY TIME IN QUANTUMS OF 2 MSEC            MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
                                                                         MLD
**    11. IF REVERSE READ WAS SELECTED, ISSUE A CLEAR REVERSE READ       MLD
*         FUNCTION (0040).                                               MLD
                                                                         MLD
          LDD    LF                                                      MLD
          SBN    READR                                                   MLD
          NJN    RD8         IF LAST FUNCTION WAS NOT READ REVERSE       MLD
          LDN    READF                                                   MLD
          RJM    FAN         SELECT FORWARD READ                         MLD
 RD8      LJM    XREAD       EXIT TO STACK
          SPACE  4,20                                                    MLD
**        REWIND - REWIND TAPE.                                          MLD
*                                                                        MLD
*         REWIND TAPE IF NOT ALREADY AT LOAD POINT.  THE                 MLD
*         REWIND FUNCTION IS ISSUED AND THE PPU IS CHECKPOINTED          MLD
*         AND DROPPED FOR 5 SECONDS.  WHEN BROUGHT BACK IN, THE          MLD
*         PPU TESTS FOR READY, NOT BUSY, AND LOAD POINT.  IF NOT         MLD
*         IT REPEATS THE DROP SEQUENCE UNTIL THESE CONDITIONS            MLD
*         EXISTS OR UNTIL 5 MINUTES HAS ELAPSED(ERROR SITUATION)         MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - THE REWIND IS COMPLETE, UNIT IS READY NOT BUSY          MLD
*                AND AT LOAD POINT.  668X AND EQUIPMENT STATUS           MLD
*                ARE STORED IN SB.                                       MLD
*                                                                        MLD
*         USES - NONE.                                                   MLD
*                                                                        MLD
*         CALLS- WRNB, FAN, WAIT.                                        MLD
                                                                         MLD
**     1. VERIFY UNIT IS CONNECTED.                                      MLD
*      2. REQUEST AND INPUT  668X  AND  EQUIPMENT  STATUS  TO  THE       MLD
*         STATUS  BUFFER AND TEST FOR READY AND NOT BUSY.  WAIT UP       MLD
*         TO 6 MILLISECONDS FOR THE UNIT TO DROP BUSY.                   MLD
                                                                         MLD
 REWIND   RJM    WRNB        WAIT READY NOT BUSY                         MLD
                                                                         MLD
**     3. ISSUE A REWIND FUNCTION (0010).                                MLD
*      4. REQUEST  AND  INPUT 668X STATUS TO THE STATUS BUFFER AND       MLD
*         VERIFY NO REJECT OR TRANSMISSION PARITY  ERROR  OCCURRED       MLD
*         ON THE REWIND FUNCTION.                                        MLD
                                                                         MLD
          LDN    REW                                                     MLD
          RJM    FAN         REWIND                                      MLD
                                                                         MLD
**     5. EXECUTE THE REL SEQUENCE TO RELEASE  THE  UNIT  AND  I/O       MLD
*         CHANNEL.  CHECKPOINT THE PP FOR ONE SECOND.                    MLD
*      6. WHEN THE PP IS RESTARTED, EXECUTE THE  RES  SEQUENCE  TO       MLD
*         OBTAIN THE I/O CHANNEL AND TO CONNECT THE UNIT.                MLD
*      7. REQUEST  AND  INPUT  668X  AND  EQUIPMENT  STATUS TO THE       MLD
*         STATUS BUFFER AND TEST FOR READY AND NOT BUSY.  WAIT  UP       MLD
*         TO  6  MILLISECONDS  FOR  THE UNIT TO DROP BUSY. IF BUSY       MLD
*         DOES  NOT  DROP,  GO  TO  STEP  5  IF 5 MINUTES HAVE NOT       MLD
*         ELAPSED.                                                       MLD
*      8. WHEN  BUSY DROPS, VERIFY THAT THE UNIT IS AT LOAD POINT.       MLD
                                                                         MLD
          LDN    RDY+LP                                                  MLD
          RJM    WAIT        WAIT UP TO 5 MINUTES FOR COMPLETION.        MLD
                                                                         MLD
**     9. ISSUE  THE  DENSITY FUNCTION  AS DEFINED ON THE LAST RES       MLD
*         COMMAND.                                                       MLD
*     10. REQUEST  AND  INPUT 668X STATUS TO THE STATUS BUFFER AND       MLD
*         VERIFY NO REJECT OR TRANSMISSION PARITY  ERROR  OCCURRED       MLD
*         ON THE DENSITY FUNCTION.                                       MLD
*                                                                        MLD
          LDC    **                                                      MLD
 CD       EQU    *-1         ***CURRENT DENSITY FUNCTION STORED HERE     MLD
          RJM    FAN         SELECT DENSITY                              MLD
          LJM    XREWIND     EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        STATUS - GET STATUS.                                           MLD
*                                                                        MLD
*         INPUT REQUESTED STATUS FROM THE CONTROLLER                     MLD
*         TO THE STATUS BUFFER.                                          MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - STATUS STORED IN SB.                                    MLD
*                                                                        MLD
*                ERRCNR  - IF CHANNEL NOT RESERVED.                      MLD
*                ERRUNC  - IF UNIT NOT CONNECTED.                        MLD
*                ERRCAS  - IF CHANNEL ACTIVE ON ENTRY.                   MLD
*                                                                        MLD
*         USES - S1, S2, P.                                              MLD
*                                                                        MLD
*         CALLS- G8S, GES, WWA.                                          MLD
*                                                                        MLD
                                                                         MLD
 STATUS   STD    S1          SAVE ABT ADDRESS                            MLD
          SHN    -12                                                     MLD
          STD    S2                                                      MLD
          LDM    BD.CHFG                                                 MLD
          NJN    STA1        IF CHANNEL IS ASSIGNED                      MLD
          LJM    ERRCNR      ERROR IF CHANNEL IS NOT RESERVED            MLD
                                                                         MLD
 STA1     UJN    STA2        *** JUMP IF 60X ASSIGNED                    MLD
*         DATA   0           *** DATA 0 IF 65X ASSIGNED                  MLD
          RJM    WWA         WAIT WRITE ACTIVITY                         MLD
          LDD    CONNECT                                                 MLD
          NJN    STA2        IF CONNECTED                                MLD
          LJM    ERRUNC      ERROR IF 65X UNIT IS NOT CONNECTED          MLD
                                                                         MLD
 STA2     IJM    STA3        IF CHANNEL IN CORRECT STATE                 MLD
          LJM    ERRCAS      ERROR IF CHANNEL ACTIVE                     MLD
                                                                         MLD
 STA3     RJM    G8S         GET 668X STATUS                             MLD
          RJM    GES         GET EQUIPMENT STATUS                        MLD
          LJM    XSTATUS     EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        TIME - TIME RECORD GAPS.                                       MLD
*                                                                        MLD
*         TIME THE REQUESTED NUMBER OF GAPS AND STORE THE                MLD
*         RESULTING DECIMAL GAP SIZES INTO THE INPUT BUFFER.             MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (D.T0) = NUMBER OF RECORDS TO TIME.                     MLD
*                (D.T1) = FWA OF INPUT BUFFER TO STORE TIMES.            MLD
*                                                                        MLD
*         EXIT - THE REQUESTED NUMBER OF GAPS ARE TIMED AND RESULTS      MLD
*                STORED INTO THE INPUT BUFFER (3 WORDS PER GAP TIMED).   MLD
*                                                                        MLD
*                ERRWC   - IF NUMBER OF RECORDS EXCEEDS 50.              MLD
*                ERRWC   - IF INPUT BUFFER SIZE WOULD BE EXCEEDED.       MLD
*                ERRNI8F - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                                                                        MLD
*         USES - SC, WT, WTA, D.Z1, D.Z2, D.Z3, D.Z4, D.Z5, D.Z6, D.T2,  MLD
*                D.T3, D.T4, D.T5, D.T6, D.T7, P.                        MLD
*                                                                        MLD
*         CALLS- TCA, FAN, GES.                                          MLD
                                                                         MLD
**     1. VERIFY UNIT IS CONNECTED AND READY.                            MLD
                                                                         MLD
 TIME     RJM    TCA         TEST CONTROLLER ASSIGNMENT                  MLD
                                                                         MLD
**     2. VERIFY THAT Y +(X*3) DOES NOT  EXCEED THE RANGE  OF  THE       MLD
*         INPUT BUFFER.                                                  MLD
                                                                         MLD
          LDN    0                                                       MLD
          STD    SC          SET FIRST PASS FLAG                         MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STM    WTA         CLEAR UPPER WT REGISTER IN SB               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
                                                                         MLD
**     3. EXECUTE  THE READ SEQUENCE TO GET TAPE IN MOTION.  START       MLD
*         THE GAP TIMER WHEN END OF OPERATION IS DETECTED  ON  THE       MLD
*         FIRST  RECORD.   THE  READ  SEQUENCE  IS COMPOSED OF THE       MLD
*         FOLLOWING STEPS.                                               MLD
*                                                                        MLD
*           A. ISSUE  A SELECT ABNORMAL END-OF-OPERATION INTERRUPT       MLD
*              FUNCTION (0024).                                          MLD
*           B. REQUEST  AND INPUT 668X STATUS TO THE STATUS BUFFER       MLD
*              AND VERIFY NO REJECT OR TRANSMISSION  PARITY  ERROR       MLD
*              OCCURRED ON THE INTERRUPT FUNCTION.                       MLD
*           C. ISSUE A CLEAR  REVERSE READ FUNCTION (0040).              MLD
*           D. REQUEST  AND INPUT 668X STATUS TO THE STATUS BUFFER       MLD
*              AND VERIFY NO REJECT OR TRANSMISSION  PARITY  ERROR       MLD
*              OCCURRED ON THE CLEAR REVERSE READ FUNCTION.              MLD
*           E. ISSUE A READ FUNCTION TO THE 668X (1460). COUNT THE       MLD
*              NUMBER  OF  MICROSECONDS  THAT  PASS  BY BEFORE THE       MLD
*              FIRST WORD IS AVAILABLE FROM THE CONTROLLER.  INPUT       MLD
*              ONE  RECORD  TO  A SCRATCH BUFFER AND CALCULATE THE       MLD
*              NUMBER OF WORDS READ.                                     MLD
*           F. REQUEST  AND  INPUT  EQUIPMENT STATUS TO THE STATUS       MLD
*              BUFFER.                                                   MLD
*                                                                        MLD
*      4. EXECUTE THE READ SEQUENCE TO OBTAIN THE GAP TIME, NUMBER       MLD
*         OF  BYTES  READ AND EQUIPMENT STATUS FOR THE RECORD GAP.       MLD
*         STORE THESE VALUES INTO THE INPUT BUFFER  WORDS  POINTED       MLD
*         BY PARAMETER Y, AND UPDATE POINTER Y BY THREE.                 MLD
                                                                         MLD
          LDN    READF                                                   MLD
          RJM    FAN         ISSUE FORWARD READ FUNCTION                 MLD
 TIM3     LDN    AEOP                                                    MLD
          RJM    FAN         SELECT ABNORMAL END OF OP INTERRUPT         MLD
          LDC    SELIN                                                   MLD
          FAN    40B         SELECT 668X INPUT                           MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ACN    40B         START TAPE MOTION                           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
          LDN    0                                                       MLD
          STD    D.Z1        CLEAR TIMES THROUGH INPUT LOOP COUNTER      MLD
                                                                         MLD
*         THE FOLLOWING LOOP UPDATES THE TIME THAT HAS PASSED THUS       MLD
*         FAR.  NOTE THAT THE TWO-WORD TIMER IS NOT UPDATED UNTIL        MLD
*         BOTH PARTS HAVE BEEN CALCULATED.                               MLD
                                                                         MLD
 TIM4     FJM    TIM5        IF DATA IS AVAILABLE                        MLD
          IANN   14B+40B                                                 MLD
          SHN    -4 
          FJM    TIM5        IF DATA IS AVAILABLE 
          STD    D.Z6        SAVE CURRENT TIME/16 
          LMD    D.T6 
          FJM    TIM5        IF DATA IS AVAILABLE 
          LPC    200B        MASK OVERFLOW BIT
          ADD    D.T6 
          FJM    TIM5        IF DATA IS AVAILABLE 
          LPC    7400B       MASK UPPER 4 BITS OF TIME
          ADD    D.Z6        ADD LOWER 8 BITS 
          FJM    TIM5        IF DATA IS AVAILABLE 
          STD    D.T6        SAVE NEW TIME
          SHN    6
          PJN    TIM4        IF 32D MSEC HAS NOT ELAPSED
 TIM5     IAN    40B
          LDN    7
 TIM5A    IAM    RDA         READ 8 WORDS 
          NJN    TIM6        IF END OF RECORD                            MLD
          AOD    D.Z1        BUMP BLOCK COUNTER                          MLD
          LDN    10B
          UJN    TIM5A       KEEP ON READING
                                                                         MLD
 TIM6     STD    D.Z2        CALCULATE BYTES READ                        MLD
          IANN   14B+40B     GET TIME OF LAST BYTE                       MLD
          SHN    -4          DIVIDE TIME BY 16
          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
          SBD    D.T5                                                    MLD
          STI    D.T3        STORE TIME IN INPUT BUFFER                  MLD
          RJM    GES         GET EQUIPMENT STATUS                        MLD
          LPN    1
          NJN    TIM6A       IF TAPE UNIT IS READY
          LJM    ERRUNR      REPORT NOT READY ERROR 
 TIM6A    LDD    SC 
          NJN    TIM7        IF NOT FIRST PASS                           MLD
          AOD    SC          INDICATE NOT FIRST PASS                     MLD
          LJM    TIM3        TAPE IS NOW IN MOTION - START TIMING        MLD
                                                                         MLD
**     5. DECREMENT X (NUMBER OF GAPS TO TIME) BY ONE.  GO TO STEP       MLD
*         4 TO CONTINUE THE PROCESS IF MORE GAPS TO TIME.                MLD
                                                                         MLD
 TIM7     AOD    D.T3        BUMP BUFFER ADDRESS                         MLD
          LDM    SB          EQUIPMENT STATUS                            MLD
          STI    D.T3        SAVE EQUIPMENT 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
          ZJN    TIM9        IF ALL RECORDS DONE                         MLD
          LJM    TIM3        CONTINUE THE READ                           MLD
                                                                         MLD
**     6. CONVERT TIMES TO GAP SIZES.                                    MLD
                                                                         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 STACK
                                                                         MLD
 GAPS     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
*                                     .10   .05  .01                     MLD
*                                     ----  ---- ----                    MLD
*                          150IPS   =  666  333   66                     MLD
*                          112.5IPS =  888  444   89                     MLD
*                           75 IPS  = 1333  666  133                     MLD
*                          37.5 IPS = 2666 1333  266                     MLD
                                                                         MLD
          SPACE  4,20                                                    MLD
**        UNLOAD - UNLOAD TAPE.                                          MLD
*                                                                        MLD
*         WAIT READY NOT BUSY, REWIND UNLOAD TAPE AND WAIT FOR UNIT      MLD
*         TO GO NOT READY AND NOT BUSY.                                  MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - UNIT UNLOADED AND 668X AND EQUIPMENT STATUS ARE         MLD
*                STORED IN THE SB.                                       MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- WRNB, FAN, WAIT.                                        MLD
*                                                                        MLD
**     1. VERIFY UNIT IS CONNECTED.                                      MLD
*      2. REQUEST  AND  INPUT  668X  AND  EQUIPMENT  STATUS TO THE       MLD
*         STATUS BUFFER AND TEST FOR READY AND NOT BUSY.  WAIT  UP       MLD
*         TO 6 MILLISECONDS FOR THE UNIT TO DROP BUSY.                   MLD
                                                                         MLD
 UNLOAD   RJM    WRNB        WAIT READY NOT BUSY                         MLD
                                                                         MLD
**     3. ISSUE A UNLOAD FUNCTION (0011).                                MLD
*      4. REQUEST  AND  INPUT 668X STATUS TO THE STATUS BUFFER AND       MLD
*         VERIFY NO REJECT OR TRANSMISSION PARITY  ERROR  OCCURRED       MLD
*         ON THE UNLOAD FUNCTION.                                        MLD
                                                                         MLD
          LDN    UNL                                                     MLD
          RJM    FAN         UNLOAD                                      MLD
                                                                         MLD
**     5. EXECUTE THE REL SEQUENCE TO RELEASE  THE  UNIT  AND  I/O       MLD
*         CHANNEL.  CHECKPOINT THE PP FOR ONE SECOND.                    MLD
*      6. WHEN THE PP IS RESTARTED, EXECUTE THE  RES  SEQUENCE  TO       MLD
*         OBTAIN THE I/O CHANNEL AND TO CONNECT THE UNIT.                MLD
*      7. REQUEST AND INPUT  668X  AND  EQUIPMENT  STATUS  TO  THE       MLD
*         STATUS  BUFFER  AND TEST FOR NOT READY OR NOT BUSY. WAIT       MLD
*         UP TO 6 MILLISECONDS FOR THE UNIT TO DROP READY OR  DROP       MLD
*         BUSY.   IF NEITHER DROPS, GO TO STEP 5 IF 5 MINUTES HAVE       MLD
*         NOT ELAPSED.                                                   MLD
*      8. WHEN BUSY DROPS, VERIFY THAT THE UNIT IS NOT AT LOAD           MLD
*         POINT AND IS NOT READY.                                        MLD
                                                                         MLD
          LDN    0                                                       MLD
          RJM    WAIT        WAIT 5 MINUTES FOR NOT BUSY/NOT RDY         MLD
          LJM    XUNLOAD     EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        WAITNB - WAIT READY NOT BUSY.                                  MLD
*                                                                        MLD
*         VERIFY THAT THE CHANNEL IS ASSIGNED AND WAIT                   MLD
*         UNTIL THE UNIT GOES NOT BUSY OR 6 MSEC HAS ELAPSED.            MLD
*         ( ERROR IF DELAY EXPIRES BEFORE BUSY DROPS )                   MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - UNIT IS READY AND NOT BUSY.  668X AND EQUIPMENT         MLD
*                STATUS ARE STORED IN SB.                                MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- WRNB.                                                   MLD
*                                                                        MLD
                                                                         MLD
**     1. VERIFY UNIT IS CONNECTED.                                      MLD
*      2. REQUEST  AND  INPUT  668X  AND  EQUIPMENT  STATUS TO THE       MLD
*         STATUS BUFFER AND TEST FOR READY AND NOT BUSY.  WAIT  UP       MLD
*         TO 6 MILLISECONDS FOR THE UNIT TO DROP BUSY.                   MLD
                                                                         MLD
                                                                         MLD
 WAITNB   RJM    WRNB        WAIT READY AND NOT BUSY.                    MLD
          LJM    XWAITNB     EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        WRITE - WRITE ONE RECORD ON TAPE.                              MLD
*                                                                        MLD
*         VERIFY READY AND WRITE ENABLE AND WRITE A RECORD ON TAPE.      MLD
*                                                                        MLD
*         ENTRY- (A)    = ABT ADDRESS.                                   MLD
*                (D.T0) = SHORT WRITE OR LONG WRITE FLAG (0 = SHORT).    MLD
*                                                                        MLD
*         EXIT - RECORD WRITTEN, END OF OP DETECTED AND 668X AND         MLD
*                EQUIPMENT STATUS ARE STORED IN SB.                      MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- TCA, OUT.                                               MLD
*                                                                        MLD
                                                                         MLD
**     1. VERIFY UNIT IS CONNECTED.                                      MLD
*      2. REQUEST AND INPUT 668X AND EQUIPMENT STATUS  TO  THE  PP       MLD
*         STATUS  BUFFER AND VERIFY THAT THE UNIT IS READY.              MLD
                                                                         MLD
 WRITE    RJM    TCA         TEST CONTROLLER ASSIGNMENT                  MLD
                                                                         MLD
**     3. VERIFY THAT THE UNIT IS WRITE ENABLED.                         MLD
*      4. CALCULATE WORDS TO OUTPUT.  ERROR EXIT IF (WC) IS ZERO.        MLD
*      5. ISSUE   A  SELECT  ABNORMAL  END-OF-OPERATION  INTERRUPT       MLD
*         FUNCTION (0024).                                               MLD
*      6. REQUEST  AND  INPUT 668X STATUS TO THE STATUS BUFFER AND       MLD
*         VERIFY NO REJECT OR TRANSMISSION PARITY  ERROR  OCCURRED       MLD
*         ON THE INTERRUPT FUNCTION.                                     MLD
*      7. ISSUE A WRITE FUNCTION TO THE 668X (1660) AND OUTPUT THE       MLD
*         CALCULATED  NUMBER  OF  WORDS  FROM  THE  OUTPUT  BUFFER       MLD
*         STARTING AT THE WORD SPECIFIED BY THE BA  REGISTER.  THE       MLD
*         PP BLOCK OUTPUT INSTRUCTION (OAM) IS USED.  WHEN THE END       MLD
*         OF THE OUTPUT BUFFER  IS  REACHED,  THE  OUTPUT  IS  END       MLD
*         ARROUND  FROM  THE TOP OF THE OUTPUT BUFFER.  THE NUMBER       MLD
*         OF WORDS ACTUALLY TRANSMITTED  IS  STORED  INTO  THE  WT       MLD
*         REGISTER  AND  THE STATUS BUFFER - THE LOWER 12 BITS ARE       MLD
*         STORED INTO THE WT REGISTER AND THE  UPPER  6  BITS  ARE       MLD
*         STORED INTO THE STATUS BUFFER WORD 7.                          MLD
*      8. WAIT UP TO 5 MSEC FOR END-OF-OPERATION AND STORE 668X          MLD
*         AND EQUIPMENT STATUS INTO THE STATUS BUFFER.                   MLD
                                                                         MLD
 WR1      RJM    OUT         OUTPUT DATA TO TAPE                         MLD
          LJM    XWRITE      EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        DEQP - DROP EQUIPMENT.                                         MLD
*                                                                        MLD
*         RELEASE THE CONNECT ON THE UNIT ASSIGNED.                      MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - UNIT RELEASED AND CONNECT FLAG CLEARED.                 MLD
*                                                                        MLD
*                ERRNI8F - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                                                                        MLD
*         USES - S1, S2, D.Z1, L8, CONNECT.                              MLD
*                                                                        MLD
*         CALLS- WWA, FAN.                                               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    CONNECT                                                 MLD
          ZJN    DEQPX       EXIT IF CONTROLLER IS NOT CONNECTED         MLD
          RJM    WWA         WAIT WRITE ACTIVITY                         MLD
 DEQ0     LDD    S2                                                      MLD
          SBN    77B                                                     MLD
          ZJN    DEQ4        IF RELEASE REQUEST FROM BASIC DRIVER        MLD
          LDN    RELEASE                                                 MLD
          RJM    FAN         ISSUE UNIT RELEASE                          MLD
          LDN    0                                                       MLD
          STD    CONNECT     CLEAR CONNECTED FLAG                        MLD
          STD    D.Z1        CLEAR INDEX TO FUNCTION TABLE               MLD
 DEQ1     LDM    FTAB1,D.Z1                                              MLD
          ZJN    DEQ2        IF END OF TABLE                             MLD
          SCN    1           CLEAR LOWER BIT OF FUNCTION CODE            MLD
          RJM    FAN         ISSUE FUNCTION                              MLD
          AOD    D.Z1        BUMP INDEX                                  MLD
          UJN    DEQ1                                                    MLD
                                                                         MLD
 DEQ2     EQU    *                                                       MLD
                                                                         MLD
          IFEQ   NOSBE,1                                                 MLD
          LDC    DSEL81                                                  MLD
          FAN    40B         DESELECT 668X                               MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ENDIF                                                          MLD
                                                                         MLD
 DEQ3     LJM    DEQPX       EXIT TO CALLER                              MLD
                                                                         MLD
 DEQ4     IJM    DEQ5        IF CHANNEL IN CORRECT STATE                 MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    DEQ3        IF SKIP CHANNEL CLEANUP IS REQUESTED        MLD
          DCN    40B                                                     MLD
 DEQ5     LCN    0                                                       MLD
          STD    D.Z1        PRESET INDEX TO FUNCTION TABLE              MLD
          LDN    0                                                       MLD
          STD    CONNECT     CLEAR CONNECTED FLAG                        MLD
 DEQ6     FAN    40B                                                     MLD
          LDN    63                                                      MLD
 DEQ7     IJM    DEQ8                                                    MLD
          SBN    1                                                       MLD
          PJN    DEQ7        IF TIME IS NOT UP                           MLD
          DCN    40B                                                     MLD
 DEQ8     AOD    D.Z1                                                    MLD
          LDM    FTAB1,D.Z1                                              MLD
          ZJN    DEQ9        IF END OF TABLE                             MLD
          SCN    1           CLEAR LOWER BIT OF FUNCTION CODE            MLD
          UJN    DEQ6        ISSUE CLEANUP FUNCTION                      MLD
                                                                         MLD
 DEQ9     EQU    *                                                       MLD
                                                                         MLD
          IFEQ   NOSBE,1                                                 MLD
          LDC    DSEL81                                                  MLD
          FAN    40B         DESELECT 668X                               MLD
          PSN                                                            MLD
          IJM    DEQPX       IF INACTIVE TO 668X FUNCTION                MLD
          DCN    40B                                                     MLD
          ENDIF                                                          MLD
                                                                         MLD
          LJM    DEQPX       EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        FAN - ISSUE FUNCTION.                                          MLD
*                                                                        MLD
*         SEND FUNCTION TO CONTROLLER.                                   MLD
*                                                                        MLD
*         ENTRY- (A) = FUNCTION TO ISSUE.                                MLD
*                                                                        MLD
*         EXIT - FUNCTION ISSUED AND STORED IN LF.  668X STATUS          MLD
*                IS IN SB.                                               MLD
*                                                                        MLD
*                ERRNIEF - IF NO INACTIVE TO EQUIPMENT FUNCTION.         MLD
*                ERRIER  - IF 668X INTERNAL OR EXTERNAL REJECT.          MLD
*                ERRTOF  - IF 668X TRANSMISSION PARITY ERROR.            MLD
*                                                                        MLD
*         USES - LF                                                      MLD
*                                                                        MLD
*         CALLS- G8S.                                                    MLD
*                                                                        MLD
 FANX     LJM    **          ENTRY/EXIT                                  MLD
 FAN      EQU    *-1                                                     MLD
          STD    LF          SAVE (A) AS LAST FUNCTION                   MLD
          FAN    40B         SEND FUNCTION                               MLD
          LDC    128
 FAN1     IJM    FAN3        IF INACTIVE RECEIVED                        MLD
 FAN2     SBN    4           *** SBN 4 IF 1X SPEED PPU ***
*         SBN    2           *** SBN 2 IF 2X SPEED PPU ***
*         SBN    1           *** SBN 1 IF 4X SPEED PPU ***
          PJN    FAN1        IF TIME IS NOT UP                           MLD
          LJM    ERRNIEF     ERROR IF NO INACTIVE IN 128 USEC            MLD
                                                                         MLD
 FAN3     RJM    G8S         GET 668X STATUS                             MLD
          LPN    7                                                       MLD
          ZJN    FANX        EXIT IF NO ERRORS                           MLD
          SHN    15                                                      MLD
          MJN    FAN4        IF TRANSMISSION PARITY ERROR                MLD
          LJM    ERRIER      ERROR IF INTERNAL OR EXTERNAL REJECT        MLD
                                                                         MLD
 FAN4     LJM    ERRTOF      ERROR IF TPE ON FUNCTION                    MLD
          SPACE  4,20                                                    MLD
**        GES - GET EQUIPMENT STATUS.                                    MLD
*                                                                        MLD
*         REQUEST AND INPUT EQUIPMENT STATUS.                            MLD
*                                                                        MLD
*         EXIT - STATUS STORED IN SB.                                    MLD
*                                                                        MLD
*                ERRNI8F - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRESNR - IF EQUIPMENT STATUS NOT RETURNED.             MLD
*                                                                        MLD
*         USES - D.Z1, L8, SB.                                           MLD
*                                                                        MLD
*         CALLS- FAN.                                                    MLD
*                                                                        MLD
 GESX     LJM    **          ENTRY/EXIT                                  MLD
 GES      EQU    *-1                                                     MLD
          LDN    1
          STD    D.Z1        SAVE REQUEST                                MLD
 GES1     UJN    GES2        *** JUMP IF 65X ASSIGNED                    MLD
*         DATA   0           *** DATA 0 IF 60X ASSIGNED                  MLD
          LDN    0                                                       MLD
          STD    D.Z1        CLEAR COUNTER                               MLD
          UJN    GES3                                                    MLD
                                                                         MLD
 GES2     ADN    CLEARS2     FORM STATUS FUNCTION                        MLD
          RJM    FAN         SELECT STATUS FUNCTION                      MLD
 GES3     LDC    SELES                                                   MLD
          FAN    40B         SELECT EQUIPMENT STATUS                     MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERRESNR     ERROR IF EQUIP STATUS NOT RETURNED          MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB,D.Z1     SAVE STATUS                                 MLD
          SOD    D.Z1        DECREMENT REQUEST                           MLD
          PJN    GES2        IF BOTH STATUS 1 AND 2 REQUESTED            MLD
          LDM    SB          LOAD EQUIPMENT STATUS WORD 1                MLD
          LJM    GESX        EXIT TO CALLER                              MLD
          SPACE  4,20                                                    MLD
**        G8S- GET 668X STATUS.                                          MLD
*                                                                        MLD
*         REQUEST AND INPUT 668X STATUS.                                 MLD
*                                                                        MLD
*         ENTRY- NONE.                                                   MLD
*                                                                        MLD
*         EXIT - 668X STATUS STORED IN SB AND IN (A).                    MLD
*                                                                        MLD
*                ERRNI8F - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERR8SNR - IF 668X STATUS NOT RETURNED.                  MLD
*                                                                        MLD
*         USES - L8, SB.                                                 MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
*                                                                        MLD
 G8SX     LJM    **          ENTRY/EXIT                                  MLD
 G8S      EQU    *-1                                                     MLD
          LDC    SEL8S                                                   MLD
          FAN    40B         SELECT 668X STATUS                          MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERR8SNR     ERROR IF 668X STATUS NOT RETURNED           MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB+2        SAVE STATUS IN STATUS BUFFER                MLD
          UJN    G8SX        EXIT TO CALLER                              MLD
          SPACE  4,20                                                    MLD
**        OUT - OUTPUT TO CONTROLLER.                                    MLD
*                                                                        MLD
*         OUTPUT DATA TO CONTROLLER.                                     MLD
*                                                                        MLD
*         ENTRY- (D.T0) = WRITE SHORT OR LONG FLAG (0 = SHORT)           MLD
*                (WC)   = NUMBER OF WORDS TO WRITE.                      MLD
*                                                                        MLD
*         EXIT - RECORD OUT TO TAPE, END OF OP DETECTED AND              MLD
*                668X AND EQUIPMENT STATUS STORED IN SB.                 MLD
*                (WT) AND (WTA) = WORD COUNT ACTUALLY OUTPUT.            MLD
*                                                                        MLD
*                ERRNWE  - IF UNIT IS NOT WRITE ENABLED.                 MLD
*                ERRWC   - IF (WC) IS ZERO.                              MLD
*                ERRNI8F - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRDNA  - IF ALL DATA NOT ACCEPTED ON OUTPUT.           MLD
*                                                                        MLD
*         USES - WT, WTA, WL, D.Z1, D.Z3, D.T1, D.T2, WA, L8, SC.        MLD
*                                                                        MLD
*         CALLS- FAN, WEOP.                                              MLD
*                                                                        MLD
                                                                         MLD
 OUTX     LJM    **          ENTRY/EXIT                                  MLD
 OUT      EQU    *-1                                                     MLD
                                                                         MLD
*         VERIFY THAT THE UNIT IS WRITE ENABLED                          MLD
                                                                         MLD
          LDM    SB                                                      MLD
          LPN    WE                                                      MLD
          NJN    OUT1        IF WRITE ENABLED                            MLD
          LJM    ERRNWE      ERROR IF NOT WRITE ENABLE                   MLD
                                                                         MLD
*         VERIFY THAT WC IS LEGAL                                        MLD
                                                                         MLD
 OUT1     LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STM    WTA                                                     MLD
          STD    WL          CLEAR WRITE LOOP COUNT                      MLD
          LDD    WC                                                      MLD
          NJN    OUT2        IF LEGAL WORD COUNT                         MLD
          LJM    ERRWC       ERROR IF ILLEGAL WORD COUNT                 MLD
                                                                         MLD
 OUT2     STD    D.T1        SAVE WORD COUNT                             MLD
          STD    WA          SET WRITE ACTIVE FLAG                       MLD
                                                                         MLD
*         SELECT ABNORMAL END OF OP, SELECT 668X OUTPUT AND START        MLD
*         TAPE MOTION.                                                   MLD
                                                                         MLD
          LDN    AEOP                                                    MLD
          RJM    FAN         SELECT ABNORMAL END OF OP INTERRUPT         MLD
          LDC    SELOUT                                                  MLD
          FAN    40B         SELECT 668X OUTPUT                          MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ACN    40B         START TAPE MOTION                           MLD
                                                                         MLD
*         CALCULATE WRITE LOOP COUNT. CHANGE SHIFT VALUES BASED ON       MLD
*         WHETHER LONG WRITE IS SPECIFIED OR NOT (WC TIME 8).            MLD
                                                                         MLD
          LDD    WC          SET WT TO EXPECTED WORDS TO OUTPUT 
          STD    WT 
          LDD    D.T0 
          ZJN    OUT3        IF SHORT WRITE 
          LDD    WC 
          SHN    3
          STD    WT          SET WT/WTA TO WC*8 
          SHN    -12
          STM    WTA
 OUT3     LDC    1440B
          STM    OUT8        SET SWITCH TO LDN 40B
          LDD    WT 
          LPN    77B
          ZJN    OUT4        IF EXACT MULTIPLE OF 100B WORDS
          ADC    1400B       FORM LDN XX INSTRUCTION
          UJN    OUT5 
  
 OUT4     LDC    0300B+OUT10-OUT9      FORM UJN OUT10 INSTRUCTION 
 OUT5     STM    OUT9        STORE LDN OR UJN INSTRUCTION 
          LDN    0
          STD    D.T1        CLEAR 100B WORD LOOP COUNTER 
          STD    D.T2        CLEAR ERROR FLAG 
          LDM    WTA
          SHN    12 
          LMD    WT 
          SBD    BL 
          MJN    OUT6        IF LESS THAN 500B WORDS TO WRITE 
          SHN    -6 
          STD    D.T1        SET NUMBER OF 100B WORD LOOPS
          LDD    BL 
          UJN    OUT7        GO OUTPUT 500B WORDS 
  
 OUT6     LDC    0300B+OUT10-OUT8     FORM UJN OUT10 INSTRUCTION
          STM    OUT8 
          LDC    0300B+OUT10-OUT9     FORM UJN OUT10 INSTRUCTION
          STM    OUT9 
          LDD    WT 
 OUT7     OAM    OB          OUTPUT 500B WORDS OR ALL REQUESTED 
          LDD    D.T1 
          ZJN    OUT9        IF NO 100B BLOCKS TO WRITE 
 OUT8     LDN    40B         *** LDN 40B   IF MORE THAN 500B TO OUTPUT
*         UJN    OUT10       *** UJN OUT10 IF 500B WORDS OR LESS
          OAM    OB+100B
          SOD    D.T1        DECREMENT LOOP COUNT 
          LDN    40B
          OAM    OB+140B
          LDD    D.T1 
          NJN    OUT8        IF ALL WORDS NOT OUTPUT
 OUT9     LDN    0           *** LDN XX   IF ODD WORDS TO OUTPUT
*         UJN    OUT10       *** UJN OUT10  IF NO ODD WORDS TO OUTPUT 
          OAM    OB+100B
 OUT10    FJM    OUT10
          DCN    40B
          ZJN    OUT12       IF ALL WORDS ACCEPTED
 OUT11    STD    D.T2        SET ERROR FLAG 
 OUT12    LDC    500         DELAY TIME 1 SECOND
          RJM    WEOP        WAIT END OF OPERATION
          LDD    D.T2 
          ZJN    OUT13       IF NO ERROR
          LJM    ERRDNA      ERROR IF ALL WORDS NOT ACCEPTED
  
 OUT13    LJM    OUTX        EXIT 
          SPACE  4,20                                                    MLD
**        DTD - DECREMENT TIME DELAY.                                    MLD
*                                                                        MLD
*         COUNT TIME WHILE GETTING STATUS.                               MLD
*                                                                        MLD
*         ENTRY- (D.Z7) = TARGET TIME (WHEN 2 MSEC HAVE ELAPSED)         MLD
*                (D.Z5) = NUMBER OF MSEC *2 TO MONITOR BEFORE TIME UP.   MLD
*                                                                        MLD
*         EXIT - (A) = STATUS AND POSITIVE IF TIME HAS NOT RUN OUT.      MLD
*                (A) = NEGATIVE IF TIME HAS EXPIRED.                     MLD
*                                                                        MLD
*         USES - D.Z6, D.Z7.                                             MLD
*                                                                        MLD
*         CALLS- GES.                                                    MLD
*                                                                        MLD
 DTDX     LJM    *                                                       MLD
 DTD      EQU    *-1                                                     MLD
 DTD1     IANN   14B                                                     MLD
          STD    D.Z6        SAVE CURRENT TIME                           MLD
          LDD    D.Z7        GET TARGET TIME                             MLD
          SBD    D.Z6        SUBTRACT CURRENT TIME                       MLD
          ZJN    DTD2        IF WE ARE SO LUCKY TO HIT IT EXACTLY        MLD
          SHN    17D-11D                                                 MLD
          PJN    DTD3        IF 2 MSEC HAVE NOT ELAPSED                  MLD
 DTD2     SOD    D.Z5        DECREMENT MSEC TO GO                        MLD
          MJN    DTDX        EXIT WITH (A) NEG IF TIME HAS ELAPSED       MLD
          LDC    2000D                                                   MLD
          RAD    D.Z7        BUMP NEW TARGET TIME                        MLD
 DTD3     RJM    GES         GET EQUIPMENT STATUS 
          UJN    DTDX        EXIT WITH (A) = EQUIPMENT STATUS            MLD
          SPACE  4,20                                                    MLD
**        TCA - TEST CONTROLLER ASSIGNMENT.                              MLD
*                                                                        MLD
*         SAVE ABT ADDRESS AND VERIFY THAT THE CONTROLLER IS ASSIGNED.   MLD
*         IF THE LAST OPERATION WAS A WRITE, DELAY TO ALLOW THE WRITE    MLD
*         TIME TO COMPLETE.                                              MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - ABT ADDRESS SAVED AND CHANNEL AND CONTROLLER VERIFIED   MLD
*                TO BE ASSIGNED.                                         MLD
*                                                                        MLD
*                ERRCNR  - IF CHANNEL NOT RESERVED.                      MLD
*                ERRUNC  - IF UNIT NOT CONNECTED.                        MLD
*                ERRCAS  - IF CHANNEL ACTIVE ON ENTRY.                   MLD
*                ERRUNR  - IF UNIT NOT READY.                            MLD
*                                                                        MLD
*         USES - S1, S2.                                                 MLD
*                                                                        MLD
*         CALLS- WWA.                                                    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     LDD    CONNECT                                                 MLD
          NJN    TCA2        IF CONTROLLER IS CONNECTED                  MLD
          LJM    ERRUNC      ERROR IF CONTROLLER IS NOT CONNECTED        MLD
                                                                         MLD
 TCA2     IJM    TCA3        IF CHANNEL IS INACTIVE                      MLD
          LJM    ERRCAS      ERROR IF CHANNEL IN WRONG STATE             MLD
                                                                         MLD
 TCA3     RJM    GES         GET EQUIPMENT STATUS 
          LPN    RDY                                                     MLD
          NJN    TCA4        IF READY                                    MLD
          LJM    ERRUNR      ERROR IF UNIT NOT READY                     MLD
                                                                         MLD
 TCA4     RJM    WWA         WAIT WRITE ACTIVITY
          UJN    TCAX        EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        WEOP - WAIT END OF OPERATION.                                  MLD
*                                                                        MLD
*         REQUEST AND INPUT EQUIPMENT STATUS AND WAIT FOR END OF OP.     MLD
*                                                                        MLD
*         ENTRY- (A) = NUMBER OF 2 MSEC TIME FRAMES TO WAIT FOR EOP.     MLD
*                                                                        MLD
*         EXIT - END OF OP DETECTED AND EQUIPMENT STATUS (FIRST WORD)    MLD
*                IS STORED IN SB.                                        MLD
*                                                                        MLD
*                ERRNEOP - IF NO END OF OP IN ALLOTED TIME.              MLD
*                                                                        MLD
*         USES - D.Z5, D.Z7.                                             MLD
*                                                                        MLD
*         CALLS- DTD.                                                    MLD
*                                                                        MLD
 WEOPX    LJM    **          ENTRY/EXIT                                  MLD
 WEOP     EQU    *-1                                                     MLD
          STD    D.Z5        SAVE TIME TO WAIT FOR EOP                   MLD
          IANN   14B+40B                                                 MLD
          ADC    2000D                                                   MLD
          STD    D.Z7        SET TARGET TIME = CURRENT TIME + 2 MSEC     MLD
 WEO1     RJM    DTD         MONITOR TIME AND GET STATUS                 MLD
          MJN    WEO2        IF TIME HAS RUN OUT                         MLD
          SHN    8                                                       MLD
          MJN    WEOPX       EXIT IF EOP ENCOUNTERED                     MLD
          UJN    WEO1        TRY AGAIN                                   MLD
                                                                         MLD
 WEO2     LJM    ERRNEOP     ERROR IF NO END OF OP IN ALLOTTED TIME      MLD
          SPACE  4,20                                                    MLD
**        WRNB - WAIT READY NOT BUSY.                                    MLD
*                                                                        MLD
*         VERIFY CONTROLLER ASSIGNED AND  WAIT READY NOT BUSY.           MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - UNIT READY AND NOT BUSY.  EQUIPMENT STATUS IS STORED    MLD
*                IN SB. (FIRST WORD OF EQUIP STATUS ONLY). STATUS IS     MLD
*                IN THE (A).                                             MLD
*                                                                        MLD
*                ERRUHB - IF UNIT HUNG BUSY FOR MORE THAN 60 MSEC.       MLD
*                ERRUNR - IF UNIT NOT READY.                             MLD
*                                                                        MLD
*         USES - D.Z5, D.Z7.                                             MLD
*                                                                        MLD
*         CALLS- TCA, DTD.                                               MLD
*                                                                        MLD
 WRNBX    SHN    2           REPOSITION STATUS IN A REGISTER             MLD
          LJM    **          ENTRY/EXIT                                  MLD
 WRNB     EQU    *-1                                                     MLD
          RJM    TCA         TEST CONTROLLER ASSIGNMENT                  MLD
          LDN    60/2        DELAY TIME IN QUANTUMS OF 2 MSEC            MLD
          STD    D.Z5        SET TIME DELAY                              MLD
          IANN   14B+40B                                                 MLD
          ADC    2000D                                                   MLD
          STD    D.Z7        SET TARGET TIME = CURRENT + 2 MSEC          MLD
 WRB1     RJM    DTD         MONITOR TIME AND GET STATUS                 MLD
          MJN    WRB2        IF TIME HAS RUN OUT                         MLD
          SHN    17                                                      MLD
          PJN    WRB3        IF UNIT DROPPED READY                       MLD
          SHN    17                                                      MLD
          PJN    WRNBX       IF UNIT IS READY AND NOT BUSY               MLD
          UJN    WRB1        TRY AGAIN                                   MLD
                                                                         MLD
 WRB2     LJM    ERRUHB      ERROR IF UNIT HUNG BUSY                     MLD
                                                                         MLD
 WRB3     LJM    ERRUNR      ERROR IF UNIT NOT READY                     MLD
          SPACE  4,20                                                    MLD
**        WWA - WAIT WRITE ACTIVITY.                                     MLD
*                                                                        MLD
*         WAIT WRITE ACTIVITY IF THE LAST OPERATION WAS A WRITE.         MLD
*                                                                        MLD
*         ENTRY- (WA) INDICATES IF THE LAST OPERATION WAS A WRITE.       MLD
*                (ZERO IF NOT).                                          MLD
*                (WWA1) IS SET TO INDICATE THE NUMER OF MSEC TO          MLD
*                DELAY.                                                  MLD
*                                                                        MLD
*         EXIT - A DELAY HAS BEEN COMPLETED TO ALLOW A PREVIOUS          MLD
*                WRITE TO COMPLETE AND (WA) IS ZEROED.                   MLD
*                                                                        MLD
*         USES - D.Z0, WA.                                               MLD
*                                                                        MLD
*         CALLS- NONE.                                                   MLD
                                                                         MLD
 WWAX     LJM    **                                                      MLD
 WWA      EQU    *-1                                                     MLD
          LDD    WA 
          ZJN    WWAX        EXIT IF LAST OPERATION WAS NOT A WRITE 
          LDC    **                                                      MLD
 WWA1     EQU    *-1         *** DELAY TIME STORED HERE                  MLD
          STD    D.Z0                                                    MLD
 WWA2     LDC    2000 
 WWA3     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    WWA3                                                    MLD
          SOD    D.Z0                                                    MLD
          NJN    WWA2        IF TIME IS NOT UP                           MLD
          STD    WA          CLEAR WRITE ACTIVE FLAG                     MLD
          UJN    WWAX        RETURN                                      MLD
          SPACE  4,20                                                    MLD
**        WAIT - WAIT FOR A REWIND OR REWIND UNLOAD TO COMPLETE.         MLD
*                                                                        MLD
*         WAIT UP TO 5 MINUTES FOR REQUESTED CONDITIONS                  MLD
*         ON A REWIND OR UNLOAD FUNCTION.  A TEST IS DONE AND            MLD
*         IF NOT REQUIRED STATUS, THE PPU IS DROPPED FOR 1               MLD
*         SECOND.  THIS SEQUENCE IS REPEATED UNTIL THE EXPECTED          MLD
*         STATUS IS RECEIVED OR UNTIL 5 MINUTES IS UP.                   MLD
*                                                                        MLD
*         ENTRY- (A) = EXPECTED STATUS FOR THE REWIND OR UNLOAD.         MLD
*                                                                        MLD
*         EXIT - OPERATION COMPLETED AND FIRST WORD OF EQUIPMEMT         MLD
*                STATUS IS STORED IN SB.                                 MLD
*                                                                        MLD
*                ERRAES  - IF ABNORMAL EQUIPMENT STATUS AFTER BUSY       MLD
*                          DROPS.                                        MLD
*                ERRNEOP - IF OPERATION DOES NOT TERMINATE IN 5 MIN.     MLD
*                                                                        MLD
*                                                                        MLD
*         USES - SC, BD.REQP+4, D.T0.                                    MLD
*                                                                        MLD
*         CALLS- GES, BD.REQ, RES.                                       MLD
                                                                         MLD
 WAITX    LJM    **          ENTRY/EXIT                                  MLD
 WAIT     EQU    *-1                                                     MLD
          STM    WAI2        SAVE EXPECTED STATUS                        MLD
          LDN    0                                                       MLD
          STD    SC          CLEAR COUNTER                               MLD
          LDD    S1                                                      MLD
          STM    WAI4+1      SAVE ABT ADDRESS                            MLD
          LDD    S2                                                      MLD
          ADC    2000B                                                   MLD
          STM    WAI4                                                    MLD
          STD    WA          SET WR ACTIVE FOR REWIND OR UNLOAD COMMAND 
 WAI1     RJM    GES         GET EQUIPMENT STATUS 
          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
          LJM    ERRAES      ERROR IF REWIND OR UNLOAD ERROR             MLD
                                                                         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
          LDD    RP          LAST SELECTED RES OPTIONS                   MLD
          STD    D.T0        INDICATE OPTIONS TO USE                     MLD
 WAI4     LDC    **          ***  CURRENT ABT ADDRESS STORED HERE        MLD
          RJM    XRES+1      RESERVE CHANNEL AND UNIT                    MLD
          AOD    SC          BUMP 1 SECOND COUNTER                       MLD
          ADC    -300                                                    MLD
          NJN    WAI1        IF 5 MINUTES HAS NOT ELAPSED                MLD
          LJM    ERRNEOP     ERROR IF TIME LIMIT EXPIRED                 MLD
          EJECT                                                          MLD
                                                                         MLD
 ERRWC    LDC    ER.WC       ILLEGAL WC OR BUFFER INDEX                  MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRCNR   LDC    ER.CNR      CHANNEL NOT RESERVED                        MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRCAS   LDC    ER.CAS      CHANNEL ACTIVE FROM SYSTEM                  MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRDNA   LDC    ER.DNA      ALL DATA NOT ACCEPTED FROM PP ON OUTPUT     MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRAES   LDC    ER.AES      ABNORMAL EQUIPMENT STATUS                   MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRUHB   LDC    ER.UHB      UNIT HUNG BUSY                              MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRUNR   LDC    ER.UNR      UNIT NOT READY                              MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRNEOP  LDC    ER.NEOP     NO END-OF-OPERATION                         MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRNWE   LDC    ER.NWE      NO WRITE ENABLE                             MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRTOF   LDC    ER.TOF      668X TPE ON FUNCTION                        MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRTOD   LDC    ER.TOD      668X TPE ON DATA                            MLD
 ERR1     UJN    ERR2                                                    MLD
                                                                         MLD
 ERRIER   LDC    ER.IER      668X INT OR EXT REJECT                      MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRNIEF  LDC    ER.NIEF     NO INACTIVE TO LAST EQUIP. FUNCTION         MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRNI8F  LDC    ER.NI8F     NO INACTIVE TO LAST 668X FUNCTION           MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRESNR  LDC    ER.ESNR     EQUIP STATUS NOT RETURNED                   MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERR8SNR  LDC    ER.8SNR     668X STATUS NOT RETURNED                    MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRILL   LDC    ER.ILL      ILLEGAL COMMAND OR PARAMETER                MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRUNC   LDC    ER.UNC      UNIT NOT CONNECTED                          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 SKIP CHAN CLEANUP REQUESTED              MLD
          DCN    40B                                                     MLD
 ERR3     LDD    D.Z1                                                    MLD
          LPN    77B         ISOLATE ERROR CODE                          MLD
          ADC    5000B       ADD IN BIAS FOR 65X PRODUCT OVERLAY         MLD
          STD    EC          STORE ERROR CODE                            MLD
          LDD    D.Z1                                                    MLD
          SHN    -6                                                      MLD
          ADC    100B        FLAG MESSAGE INDEX AS OVERLAY MESSAGE       MLD
          STD    EM          STORE MESSAGE INDEX                         MLD
          LDD    P                                                       MLD
          STD    EA          STORE LINE NUMBER WHERE ERROR OCCURRED      MLD
          LDD    D.Z2                                                    MLD
          NJN    ERR5        IF ABORT FLAG SET                           MLD
          LDD    S2                                                      MLD
          SHN    12                                                      MLD
          LMD    S1                                                      MLD
          ZJN    ERR4        IF NO ABT ADDRESS SPECIFIED                 MLD
          LJM    BD.RNI      RNI AT THE REJECT ADDRESS                   MLD
                                                                         MLD
 ERR4     LJM    BD.ERR      TERMINATE OR RESTART MODULE BASED ON SE     MLD
                                                                         MLD
 ERR5     LJM    BD.ABT      TERMINATE MODULE                            MLD
                                                                         MLD
                                                                         MLD
 IB       EQU    6560B       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
 L8       EQU    SB+3        LAST 668X FUNCTION                          MLD
 CH       EQU    SB+4                                                    MLD
 EQ       EQU    SB+5                                                    MLD
 UN       EQU    SB+6                                                    MLD
 WTA      EQU    SB+7        UPPER BITS OF THE WT REGISTER               MLD
 LSB      EQU    10B                                                     MLD
 SBLWA    EQU    SB+LSB      STATUS BUFFER LWA+1                         MLD
 RDA      EQU    SBLWA       8 WORD BUFFER FOR READ ROUTINE              MLD
                                                                         MLD
          ERRPL  *-IB-1      ERROR IF 65X 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
 INIT0    LDN    0                                                       MLD
          STM    SB,D.Z1     CLEAR STATUS BUFFER                         MLD
          AOD    D.Z1                                                    MLD
          SBN    LSB                                                     MLD
          NJN    INIT0                                                   MLD
          LDM    BD.EQ                                                   MLD
          STM    RES2        SAVE CONNECT CODE                           MLD
          LPN    17B                                                     MLD
          STM    UN          SAVE UNIT NUMBER IN STATUS BUFFER           MLD
          LDM    BD.EQ                                                   MLD
          SHN    -9                                                      MLD
          STM    EQ          SAVE EQUIPMENT NUMBER IN STATUS BUFFER      MLD
          SHN    -2                                                      MLD
          ZJN    INIT1       IF EQUIPMENT NUMBER IS 0 - 3                MLD
          LDN    0                                                       MLD
          STM    RES1        SET EQUIPMENT NUMBER SWITCH                 MLD
                                                                         MLD
*         SET DELAY TIME BASED ON SPEED OF PPU                           MLD
                                                                         MLD
 INIT1    LDC    TSPEED 
          STD    D.T0                                                    MLD
 INIT2    LDI    D.T0                                                    MLD
          ZJN    INIT3       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1                                                    MLD
          SCN    77B
          ADM    BD.SPEED 
          STI    D.T1        SET ADN/SBN VALUE
          AOD    D.T0                                                    MLD
          UJN    INIT2       COMPLETE ALL WORDS                          MLD
                                                                         MLD
*         STORE I/O CHANNEL INTO COMMANDS                                MLD
                                                                         MLD
 INIT3    LDM    BD.CHAN                                                 MLD
          STM    CH          SAVE CHANNEL IN STATUS BUFFER               MLD
          STD    D.T2                                                    MLD
          LDC    TCHAN                                                   MLD
          STD    D.T0        SET FWA OF TABLE CONTAINING ADDRESSES       MLD
 INIT4    LDI    D.T0                                                    MLD
          ZJN    INIT5       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1                                                    MLD
          LPC    7740B                                                   MLD
          ADD    D.T2                                                    MLD
          STI    D.T1                                                    MLD
          AOD    D.T0                                                    MLD
          UJN    INIT4       COMPLETE ALL WORDS                          MLD
                                                                         MLD
*         WRITE PP MESSAGES TO CM                                        MLD
                                                                         MLD
 INIT5    LDM    BD.MSGA     GET PP MESSAGE AREA ADDRESS                 MLD
          STD    S1          SAVE IT                                     MLD
          ADC    MMSGL.      ADD LENGTH 
          RJM    BD.TFL      SEE IF IN FL                                MLD
          LDN    P.ZERO      CLEAR CELLS, D.Z1=PP MESSAGE ADDRESS        MLD
          CRD    D.Z1        D.Z2=D.T0-D.T4 POINTER, D.Z3=CM WD COUNTER  MLD
 INIT6    LDM    PPMSGS,D.Z1 GET PP MESSAGE WORD                         MLD
          ZJN    INIT8       IF END OF MESSAGE                           MLD
 INIT7    STM    D.T0,D.Z2   STORE IN D.T0+                              MLD
          AOD    D.Z1        BUMP PP MESSAGE POINTER                     MLD
          UJN    INIT9                                                   MLD
 INIT8    LDC    2R          MESSAGE END, STORE BLANKS                   MLD
          STM    D.T0,D.Z2                                               MLD
 INIT9    AOD    D.Z2        BUMP D.T0+ POINTER                          MLD
          SBN    5                                                       MLD
          NJN    INIT6       IF NOT 5 PP WORDS                           MLD
          STD    D.Z2        CLEAR POINTER                               MLD
          LDD    D.RA        PUT RA IN A REG                             MLD
          SHN    6                                                       MLD
          ADD    S1          ADD MESSAGE ADDRESS                         MLD
          CWD    D.T0        WRITE ONE WORD FROM D.T0                    MLD
          AOD    S1          UPDATED ADDRESS                             MLD
          AOD    D.Z3        BUMP CM WORD COUNTER                        MLD
          SBN    BD.MSGML                                                MLD
          NJN    INIT6       IF NOT BD.MSGML CM WORDS                    MLD
          STD    D.Z3        CLEAR CM WORD COUNTER                       MLD
          LDM    PPMSGS,D.Z1                                             MLD
          ZJN    INIT10      IF MESSAGE ENDED IN ZERO BYTE               MLD
          AOD    D.Z1        SKIP ZERO BYTE TERMINATOR                   MLD
 INIT10   AOD    D.Z1        BUMP PP MESSAGE ADDRESS TO NEXT MESSAGE     MLD
          LDM    PPMSGS,D.Z1                                             MLD
          NJN    INIT7       IF NOT LAST MESSAGE                         MLD
                                                                         MLD
*         SET DIRECT CELLS                                               MLD
                                                                         MLD
          STD    S1          CLEAR ABT ADDRESS                           MLD
          STD    S2                                                      MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STD    BA          CLEAR BEGINNING ADDRESS REGISTER            MLD
          STD    CONNECT     CLEAR CONNECTED FLAG                        MLD
          STD    RP          CLEAR RESERVE OPTIONS                       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    T60X                                                    MLD
          ZJN    INIT10A     IF 60X                                      MLD
          SBN    T657-T60X                                               MLD
          ZJN    INIT10A     IF  657                                     MLD
          SBN    T659-T657                                               MLD
          ZJN    INIT10A     IF  659                                     MLD
          LDC    INITB                                                   MLD
          LJM    INIT15                                                  MLD
                                                                         MLD
*         SET TIMES TABLE BASED ON SPEED OF UNIT IN P0 REGISTER          MLD
*         IF P0 REGISTER = 0, DEFAULT TO 150 IPS UNIT FOR SPEED          MLD
                                                                         MLD
 INIT10A  LDN    0                                                       MLD
          STD    D.T0                                                    MLD
 INIT11   LDM    P0 
          SBM    SPEED,D.T0                                              MLD
          ZJN    INIT12      IF SPEED FOUND IN TABLE                     MLD
          AOD    D.T0                                                    MLD
          SBN    LSPEED                                                  MLD
          NJN    INIT11      IF END OF TABLE NOT REACHED                 MLD
          LDC    INITA                                                   MLD
          LJM    START       EXIT WITH ERROR MESSAGE                     MLD
                                                                         MLD
 INIT12   STD    D.T1        CLEAR COUNTER                               MLD
          LDM    USPEED,D.T0                                             MLD
          STD    D.T0        SET POINTER TO TIME TABLE                   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    3                                                       MLD
          NJN    INIT13      IF NOT DONE                                 MLD
          LDI    D.T0                                                    MLD
          STM    WWA1        SET DELAY BASED ON UNIT SPEED               MLD
          LDD    DC                                                      MLD
          SBN    T60X                                                    MLD
          NJN    INIT14      IF NOT 60X                                  MLD
          STM    DTAB1       INDICATE 60X IS ASSIGNED                    MLD
          STM    FTAB2                                                   MLD
          STM    GES1                                                    MLD
          UJN    INIT15                                                  MLD
                                                                         MLD
 INIT14   LDN    0                                                       MLD
          STM    EOF1                                                    MLD
          STM    EOF3                                                    MLD
          STM    STA1                                                    MLD
          LDD    DC                                                      MLD
          SBN    T657                                                    MLD
          ZJN    INIT15      IF 657 DEVICE CODE ASSIGNED                 MLD
          LDN    0                                                       MLD
          STM    DTAB        CLEAR SELECTION FOR 556 BPI FOR 659         MLD
          STM    DTAB2       CLEAR SELECTION FOR 200 BPI FOR 659         MLD
 INIT15   LJM    START       RETURN TO BASIC DRIVER ( A=MSG OR ZERO )    MLD
          EJECT                                                          MLD
                                                                         MLD
 INITA    DIS    ,*  ILLEGAL UNIT SPEED -P0*
 INITB    DIS    ,*  DEVICE CODE NOT SUPPORTED*                          MLD
                                                                         MLD
*         TABLE OF PPU SPEED SWITCHES                                    MLD
                                                                         MLD
 TSPEED   VFD    12/RES5                                                 MLD
          VFD    12/FAN2                                                 MLD
          VFD    12/WWA3                                                 MLD
          DATA   0           END OF SPEED SWITCHES TABLE                 MLD
                                                                         MLD
*         TABLE OF LEGAL SPEED VALUES IN P0 REGISTER AND POINTERS        MLD
                                                                         MLD
 SPEED    VFD    12/150B                                                 MLD
          VFD    12/112B                                                 MLD
          VFD    12/75B                                                  MLD
          VFD    12/37B                                                  MLD
 LSPEED   EQU    *-SPEED     LENGTH OF SPEED TABLE                       MLD
 USPEED   VFD    12/T150                                                 MLD
          VFD    12/T112                                                 MLD
          VFD    12/T75                                                  MLD
          VFD    12/T37                                                  MLD
                                                                         MLD
*         TABLE OF GAP TIMES FOR 150 IPS UNIT                            MLD
                                                                         MLD
 T150     DATA   666         TIME FOR .10 INCHES                         MLD
          DATA   333         TIME FOR .05 INCHES                         MLD
          DATA   66          TIME FOR .01 INCHES                         MLD
          DATA   10D         WRITE DELAY TIME FOR 150 IPS 
                                                                         MLD
*         TABLE OF GAP TIMES FOR 112.5 IPS UNIT                          MLD
                                                                         MLD
 T112     DATA   888         TIME FOR .10 INCHES                         MLD
          DATA   444         TIME FOR .05 INCHES                         MLD
          DATA   89          TIME FOR .01 INCHES                         MLD
          DATA   12D         WRITE DELAY TIME FOR 112.5 IPS 
                                                                         MLD
*         TABLE OF GAP TIMES FOR 75 IPS UNIT                             MLD
                                                                         MLD
 T75      DATA   1333        TIME FOR .10 INCHES                         MLD
          DATA   666         TIME FOR .05 INCHES                         MLD
          DATA   133         TIME FOR .01 INCHES                         MLD
          DATA   14D         WRITE DELAY TIME FOR 75 IPS
                                                                         MLD
*         TABLE OF GAP TIMES FOR 37.5 IPS UNIT                           MLD
                                                                         MLD
 T37      DATA   2666        TIME FOR .10 INCHES                         MLD
          DATA   1333        TIME FOR .05 INCHES                         MLD
          DATA   266         TIME FOR .01 INCHES                         MLD
          DATA   22D         WRITE DELAY TIME FOR 37.5 IPS
          EJECT                                                          MLD
          TITLE  ERROR MESSAGES FOR 65X.                                 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 ERROR),1 
          MMSG   ER.RES,EC.RES,(R)                                       MLD
          MMSG   ER.RES1,EC.RES1,(R)                                     MLD
          MMSG   ER.RES2,EC.RES2,(R)                                     MLD
          MMSG   ER.CNR,EC.CNR,(CH NOT RESERVED)                         MLD
          MMSG   ER.CAS,EC.CAS,(CH ACTIVE ON ENTRY)                      MLD
          MMSG   ER.DNA,EC.DNA,(ALL DATA NOT ACCEPTED FROM PP)           MLD
          MMSG   ER.UNC,EC.UNC,(UNIT NOT CONNECTED)                      MLD
          MMSG   ER.AES,EC.AES,(ABNORMAL EQUIP STATUS)                   MLD
          MMSG   ER.UHB,EC.UHB,(UNIT HUNG BUSY)                          MLD
          MMSG   ER.UNR,EC.UNR,(UNIT NOT READY)                          MLD
          MMSG   ER.NEOP,EC.NEOP,(NO END OF OP)                          MLD
          MMSG   ER.NWE,EC.NWE,(NO WRITE ENABLE)                         MLD
          MMSG   ER.TOF,EC.TOF,(668X TPE ON FUNC)                        MLD
          MMSG   ER.TOD,EC.TOD,(668X TPE ON DATA)                        MLD
          MMSG   ER.IER,EC.IER,(668X INT OR EXT REJECT)                  MLD
          MMSG   ER.NIEF,EC.NIEF,(NO INACTIVE TO EQUIP FUNC)
          MMSG   ER.NI8F,EC.NI8F,(NO INACTIVE TO 668X FUNC) 
          MMSG   ER.ESNR,EC.ESNR,(EQUIP STATUS NOT RETURNED)             MLD
          MMSG   ER.8SNR,EC.8SNR,(668X STATUS NOT RETURNED)              MLD
          MMSG   ER.ILL,EC.ILL,(ILLEGAL COMMAND),1                       MLD
 MMSGL.   EQU    MMSGL
          DATA   0                                                       MLD
****                                                                     MLD
 TCHAN    EQU    *           CREATE CHANNEL TABLE                        MLD
          LIST   D                                                       MLD
          HERE                                                           MLD
          LIST   *                                                       MLD
          DATA   0           END OF CHANNEL TABLE                        MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
 .1       SET    POVLA                                                   MLD
 .2       SET    10000B                                                  MLD
 .3       SET    *-.1+5+4+500B                                           MLD
 .4       SET    .2-.1+5-1                                               MLD
          ERRNG  .2-.1+5-.3/500B*500B-1  BYTES LEFT AFTER LAST SECTOR    MLD
          ERRNG  .3/500B*500B-5-*+.1-5   BYTES LEFT IN LAST SECTOR       MLD
          ERRNG  .4/500B*500B-5-*+.1-5   BYTES CAN BE ADDED TO OVERLAY   MLD
          ENDIF                                                          MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          ERRPL  *-7773B     ERROR IF 65X OVERLAY OVERFLOW               MLD
                                                                         MLD
          QUAL   *                                                       MLD
