*COMDECK,67X                                                             MLD
          EJECT 
 57X      SEGMENT POVLA                                                  MLD
          ORG    POVLA                                                   MLD
          QUAL   67X                                                     MLD
*CALL,VERS
          COMMENT 67X PRODUCT OVERLAY FOR MALET "VERS"
          TITLE  HIGH LEVEL 67X PRODUCT OVERLAY FOR MALET.               MLD
**        THIS PRODUCT OVERLAY SUPPORTS AND A PROGRAMMABLE INPUT BUFFER  MLD
*         (IB) OF 500B PP WORDS, AN OUTPUT BUFFER (OB) OF 500B PP WORDS  MLD
*         AND  A  STATUS  BUFFER (SB) OF 25B PP WORDS.  DATA IS WRITTEN  MLD
*         TO TAPE FROM THE OUTPUT BUFFER AND IS READ FROM TAPE  TO  THE  MLD
*         INPUT BUFFER. THE STATUS BUFFER IS USED TO HOLD THE FOLLOWING  MLD
*         WORDS_                                                         MLD
*                                                                        MLD
*           WORD  0     = LAST STATUS FUNCTION ISSUED                    MLD
*           WORD  1     = GENERAL STATUS (FIRST WORD)                    MLD
*           WORD  2     = GENERAL STATUS (SECOND WORD)                   MLD
*           WORDS 3 -10 = DETAIL STATUS                                  MLD
*           WORDS 11-16 = UNIT STATUS                                    MLD
*           WORD 17     = I/O CHANNEL UNDER TEST (RIGHT JUSTIFIED)       MLD
*           WORD 18     = EQUIPMENT NUMBER UNDER TEST (RIGHT JUSTIFIED)  MLD
*           WORD 19     = UNIT NUMBER UNDER TEST (RIGHT JUSTIFIED)       MLD
*           WORD 20     = 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 4 INCHES ON TAPE.               MLD
*           FSPACE - MOVE FORWARD ONE RECORD.                            MLD
*           MARGINS- SELECT CLIP LEVELS.                                 MLD
*           MEASURE- MEASURE RECORD GAP SIZES OR START TIMES.            MLD
*           READ   - READ A RECORD FROM TAPE OR (RAM) TO INPUT BUFFER.   MLD
*           REL    - RELEASE UNIT, CONTROLLER AND I/O CHANNEL.           MLD
*           RES    - RESERVE I/O CHANNEL, CONTROLLER AND UNIT.           MLD
*           RESET  - MASTER CLEAR CONTROLLER TO IDLE LOOP.               MLD
*           REWIND - REWIND TAPE.                                        MLD
*           SELECT - SELECT A DIAGNOSTIC FEATURE.                        MLD
*           STATUS - INPUT GENERAL, DETAIL, AND/OR UNIT STATUS TO SB.    MLD
*           UNLOAD - UNLOAD TAPE.                                        MLD
*           WAITNB - WAIT UNIT NOT BUSY (PARKED).                        MLD
*           WRITE  - WRITE ONE RECORD FROM THE OUTPUT BUFFER.            MLD
*                                                                        MLD
*                                                                        MLD
*         THE  SELECT COMMAND SUPPORTS THE HARDWARE WRITE-TO-READ LOOPS  MLD
*         IN  THE TCU AND THE UNIT. ONCE THIS LOOP IS ENABLED, COMMANDS  MLD
*         OTHER THAN ENDFILE, MARGINS, REL,  RESET,  STATUS  AND  WRITE  MLD
*         ARE  ILLEGAL  TO  EXECUTE  AND  A COMMAND SEQUENCING ERROR IS  MLD
*         REPORTED.  THE LOOP REMAINS ACTIVE  UNTIL  AN  ENDFILE,  REL,  MLD
*         RESET OR WRITE IS EXECUTED.                                    MLD
*                                                                        MLD
*         OTHER  SELECT  OPTIONS  PUT THE  TCU INTO A MODE FOR THE NEXT  MLD
*         READ OR WRITE.  USE THIS COMMAND WITH UNDERSTANDING.           MLD
          EJECT                                                          MLD
**        IT  IS  THE USERS RESPONSIBILITY TO TEST GENERAL STATUS AFTER  MLD
*         EACH I/O OPERATION TO DETERMINE IF THE OPERATION COMPLETED AS  MLD
*         EXPECTED.                                                      MLD
*                                                                        MLD
*         ALL SUBROUTINES IN THIS PRODUCT OVERLAY USE  A  COMMON  ERROR  MLD
*         EXIT SEQUENCE WHEN AN ERROR IS DETECTED. THIS SEQUENCE STORES  MLD
*         AN INTERNAL ERROR CODE INTO THE EC REGISTER, AN ERROR MESSAGE  MLD
*         INDEX INTO THE EM REGISTER, AND THE P REGISTER CONTENTS (LINE  MLD
*         NUMBER) INTO THE EA REGISTER.  A CHECK IS THEN MADE TO SEE IF  MLD
*         AN  ABT ADDRESS WAS SPECIFIED BY THE USER ON THE COMMAND THAT  MLD
*         JUST FAILED. IF IT WAS, A JUMP IS MADE TO  THIS  ADDRESS  VIA  MLD
*         THE  RNI ROUTINE IN THE PP DRIVER.  IF AN ABT ADDRESS WAS NOT  MLD
*         SPECIFIED, THE ABORT ROUTINE IN THE PP DRIVER IS  ENTERED  TO  MLD
*         REPORT THE ERROR AND DROP THE PP.                              MLD
*                                                                        MLD
*                                                                        MLD
          EJECT                                                          MLD
***       THE FOLLOWING TABLE DEFINES THE ERROR CODES AND MESSAGES THAT  MLD
*         MAY BE GENERATED FOR EACH COMMAND FOR 67X.                     MLD
*                                                                        MLD
*                                  BKSP----------. .-------RES           MLD
*                                 ENDFILE------. . . .------RESET        MLD
*                                ERASE-------. . . . . .-----REWIND      MLD
*                               FSPACE-----. . . . . . . .----SELECT     MLD
*                              MARGINS---. . . . . . . . . .---STATUS    MLD
*                             MEASURE--. . . . . . . . . . . .--UNLOAD   MLD
*                            READ--- . . . . . . . . . . . . . .-WAITNB  MLD
*                           REL----. . . . . . . . . . . . . . . .WRITE  MLD
* CODE     MESSAGE                 . . . . . . . . . . . . . . . .       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 04 WC OR BUFFER INDEX ERROR      . X . . . . . X . . . . . . . X       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 10 CH NOT ASSIGNED               . X . . . . . . . X . . X . . .       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 11 CH ACTIVE ON ENTRY            . . . . . . . . X . X . . X . .       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 12 NO INACTIVE TO LAST FUNC      X X X . X X X X X X X X . X X X       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 13 NO INACTIVE TO STATUS FUNC    . X X . X X X X X X X X X X X X       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 15 NO STATUS RETURNED            . X X . X X X X X X X X X X X X       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 16 INCOMPLETE STATUS RETURNED    . X X . X X X X X X X X X X X X       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 17 FUNC PARAMETERS NOT ACCEPTED  . X . . . . . . X . . X . . . .       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 20 ALL DATA NOT ACCEPTED FROM PP . . . . . . . X . . . . . . . X       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 21 INCOMPLETE DATA RETURNED TO PP. X . . . . . . . . . . . . . .       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 22 CONTROLLER/UNIT NOT CONNECTED . X X . X X X X . . X X . X X X       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 25 ABNORMAL GENERAL STATUS       . . . . . . . . . . X   . X . .       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 27 UNIT HUNG BUSY                . . . . . . . . . . X . . X . .       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 32 DEVICE CODE/STATUS MISMATCH   . . . . . . . . X . X . . X . .       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 34 NO END OF OPERATION           . X X . X X X X . X . X . . X X       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 36 COMMAND SEQUENCING ERROR      . X X . X X X X . . X . . X X .       MLD
*    ----------------------------- - - - - - - - - - - - - - - - -       MLD
* 37 PARAMETER OUT OF RANGE        . X . . . . . . . . . X . . . .       MLD
*    -------------------------------------------------------------       MLD
* 40 CH PE ON INPUT                . X . . . . . . . . . . X . . .
*    -------------------------------------------------------------
*                                                                        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         CHANNEL NOT RESERVED                        MLD
 EC.CAS   EQU    11B         CHANNEL ACTIVE FROM SYSTEM                  MLD
 EC.NIF   EQU    12B         NO INACTIVE TO FUNCTION                     MLD
 EC.NISF  EQU    13B         NO INACTIVE TO STATUS FUNCTION              MLD
 EC.NSR   EQU    15B         NO STATUS RETURNED                          MLD
 EC.ISR   EQU    16B         INCOMPLETE STATUS RETURNED                  MLD
 EC.FPNA  EQU    17B         FUNCTION PARAMETERS NOT ACCEPTED            MLD
 EC.DNA   EQU    20B         ALL DATA NOT ACCEPTED FROM PP               MLD
 EC.IDR   EQU    21B         INCOMPLETE DATA RETURNED TO PP              MLD
 EC.UNC   EQU    22B         UNIT NOT CONNECTED                          MLD
 EC.AGS   EQU    25B         ABNORMAL GENERAL STATUS                     MLD
 EC.UHB   EQU    27B         UNIT HUNG BUSY                              MLD
 EC.DCSM  EQU    32B         DEVICE CODE/STATUS MISMATCH                 MLD
 EC.NEOP  EQU    34B         NO END OF OPERATION                         MLD
 EC.CSE   EQU    36B         COMMAND SEQUENCE ERROR                      MLD
 EC.POR   EQU    37B         PARAMETER OUT OF LEGAL RANGE                MLD
 EC.CPE   EQU    40B         CHANNEL PARITY ERROR ON INPUT
                                                                         MLD
*         DIRECT CELL EQUATES.                                           MLD
                                                                         MLD
 S1       EQU    60B         LOWER 12 BITS OF ABT ADDRESS                MLD
 S2       EQU    61B         UPPER 6 BITS OF ABT ADDRESS                 MLD
 BL       EQU    62B         LENGTH OF IB/OB                             MLD
 WL       EQU    63B         WRITE LOOP COUNT ON LAST WRITE COMMAND      MLD
 SC       EQU    64B         SCRATCH DIRECT CELL FOR USE BY SUBROUTINES  MLD
 CONNECT  EQU    65B         CONNECTED TO UNIT FLAG                      MLD
 MFA      EQU    66B         MAINTENANCE FEATURE ACTIVE FLAGS            MLD
                                                                         MLD
*         EQUATES FOR EQUIPMENT FUNCTIONS.                               MLD
                                                                         MLD
 BACKSP   EQU    113B        NORMAL BACKSPACE                            MLD
 CBKSP    EQU    114B        CONTROL BACKSPACE                           MLD
 CLEAR    EQU    0           CLEAR TAPE UNIT                             MLD
 CLIP     EQU    6           SELECT READ CLIPS                           MLD
 CONN     EQU    20B         CONNECT UNIT                                MLD
 DATAERR  EQU    77B         SELECT BAD TRACK(S)                         MLD
 DS       EQU    112B        DETAIL STATUS                               MLD
 ECC      EQU    74B         SELECT ECC TRANSMISSION ON GCR              MLD
 EOF      EQU    51B         WRITE END-OF-FILE                           MLD
 ERASER   EQU    52B         ERASE 6 INCHES OF TAPE                      MLD
 FORESP   EQU    13B         FORSPACE ONE RECORD                         MLD
 FORMAT   EQU    4           FORMAT UNIT                                 MLD
 FWDGAP   EQU    72B         MEASURE FWD GAP                             MLD
 FWDSTRT  EQU    73B         MEASURE FWD START                           MLD
 GS       EQU    12B         GENERAL STATUS                              MLD
 LOOPHD   EQU    375B        SELECT LWR HEAD                             MLD
 LOOPTCU  EQU    75B         SELECT LWR TCU                              MLD
 LOOPUN   EQU    175B        SELECT LWR UNIT                             MLD
 MC       EQU    414B        MASTER CLEAR                                MLD
 OPDEN    EQU    105B        SELECT OPPOSITE DENSITY                     MLD
 OPPAR    EQU    5           SELECT OPPOSITE PARITY                      MLD
 PATHERR  EQU    76B         SELECT TCU PATH ERROR                       MLD
 RDRAM    EQU    47B         READ RAM TABLE                              MLD
 READF    EQU    40B         READ FORWARD                                MLD
 READR    EQU    140B        READ REVERSE                                MLD
 RELEASE  EQU    1           RELEASE UNIT                                MLD
 REVGAP   EQU    172B        MEASURE REV GAP                             MLD
 REVSTRT  EQU    173B        MEASURE REV START                           MLD
 REW      EQU    10B         REWIND                                      MLD
 STOPTM   EQU    11B         STOP TAPE MOTION                            MLD
 UNL      EQU    110B        UNLOAD                                      MLD
 US       EQU    212B        UNIT STATUS                                 MLD
 VELOCITY EQU    71B         TEST VELOCITY                               MLD
 WRITER   EQU    50B         WRITE                                       MLD
 FSCWR    EQU    70B         FSC ADAPTER LOOP WRITE TO READ 
 SSB      EQU    312B 
                                                                         MLD
*         GENERAL STATUS BIT EQUATES.                                    MLD
                                                                         MLD
 BUSY     EQU    2           UNIT BUSY                                   MLD
 LP       EQU    4           LOAD POINT                                  MLD
 RDY      EQU    1           UNIT READY                                  MLD
                                                                         MLD
*         DEVICE CODES SUPPORTED.                                        MLD
                                                                         MLD
 T677     EQU    44B         677  7TK UNIT                               MLD
 T698     EQU    53B         698 9TK GCR UNIT 
 T679     EQU    54B         679  9TK UNIT                               MLD
 TGCR     EQU    55B         679  GCR UNIT                               MLD
 TFSC7    EQU    45B         *7 TRK FSC UNIT
 TFSC9    EQU    56B         *9 TRK FSC UNIT
 TISMT    EQU    57B         NINE TRK ISMT
          EJECT                                                          MLD
                                                                         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
                                                                         MLD
          EJECT                                                          MLD
 START    LJM    **          ENTRY POINT FOR OVERLAY INITIALIZATION      MLD
          LJM    INIT                                                    MLD
                                                                         MLD
          CON    IB          FWA OF INPUT BUFFER
          CON    OB          FWA OF OUTPUT BUFFER 
          CON    SB          FWA OF STATUS BUFFER 
          CON    LIB         LENGTH OF INPUT BUFFER 
          CON    LIB         LENGTH OF OUTPUT BUFFER
          CON    LSB         LENGTH OF STATUS BUFFER
          CON    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
 XFUNC    LJM    **                                                      MLD
          LJM    FUNC        EOF,ERASE,FSPACE,MEASURE,WAITNB REW,UNL     MLD
 XMARGINS LJM    **                                                      MLD
          LJM    MARGINS     SELECT CLIP MARGINS SUBROUTINE              MLD
 XREAD    LJM    **                                                      MLD
          LJM    READ        HIGH SPEED INPUT SUBROUTINE                 MLD
 XRESET   LJM    **                                                      MLD
          LJM    RESET       RESET SUBROUTINE                            MLD
 XSELECT  LJM    **                                                      MLD
          LJM    SELECT      SELECT SUBROUTINE                           MLD
 XSTATUS  LJM    **                                                      MLD
          LJM    STATUS      INPUT STATUS SUBROUTINE                     MLD
 XWRITE   LJM    **                                                      MLD
          LJM    WRITE       HIGH SPEED OUTPUT SUBROUTINE                MLD
          EJECT                                                          MLD
**        REL    - RELEASE                                               MLD
*                                                                        MLD
*         RELEASE UNIT, CONTROLLER AND CHANNEL                           MLD
*                                                                        MLD
*         ENTRY  - (A) = ABT ADDRESS.                                    MLD
*                                                                        MLD
*         EXIT   - DEVICE AND CHANNEL RELEASED.                          MLD
*                                                                        MLD
*         USES   - P.                                                    MLD
*                                                                        MLD
*         CALLS  - DEQP, BD.RCH                                          MLD
*                                                                        MLD
                                                                         MLD
**     1. GO TO STEP 4 IF THE I/O CHANNEL IS NOT ASSIGNED  OR  THE       MLD
*         UNIT IS NOT CONNECTED.                                         MLD
*                                                                        MLD
*      2. ISSUE A CONNECT FUNCTION (E02X/3X) TO CLEAR ANY SELECTED       MLD
*         MAINTENANCE OPTIONS IF ANY ARE ACTIVE. OTHERWISE, ISSUE        MLD
*         ISSUE A RELEASE FUNCTION TO RELEASE THE UNIT.                  MLD
*                                                                        MLD
*      3. CLEAR MAINTENANCE OPTIONS ACTIVE FLAGS.                        MLD
                                                                         MLD
 REL      RJM    DEQP        DISCONNECT EQUIPMENT IF CONNECTED           MLD
                                                                         MLD
**     4. CALL THE PP DRIVER TO DROP THE CHANNEL IF  ASSIGNED  AND       MLD
*         COMMUNICATE  WITH  THE  OPERATING  SYSTEM  AND THE MALET       MLD
*         EXECUTIVE.                                                     MLD
                                                                         MLD
          RJM    BD.DCH      DROP CHANNEL/TALK TO SYSTEM AND EXEC        MLD
          LJM    XREL        EXIT TO CALLER                              MLD
          SPACE  4,16                                                    MLD
**        RES    - RESERVE                                               MLD
*                                                                        MLD
*         RESERVE CHANNEL, CONTROLLER AND UNIT                           MLD
*                                                                        MLD
*         ENTRY  - (A)    = ABT ADDRESS.                                 MLD
*                  (D.T0) = RESERVE OPTIONS.                             MLD
*                                                                        MLD
*         EXIT   - ERRPOR  - IF RESERVE OPTION OUT OF RANGE.             MLD
*                  ERRDCSM - IF SELECTED AND ACTUAL (7TK/9TK) DISAGREE.  MLD
*                  ERRCAS  - IF CHANNEL ACTIVE FROM THE SYSTEM.          MLD
*                                                                        MLD
*         USES   - EA, EC, EM, D.T0, D.T1, D.T2, D.T3, FORMAT1, FORMAT2  MLD
*                  WAI4, CONNECT, MFA, P.                                MLD
*                                                                        MLD
*         CALLS  - DEQP, BD.RCH, FAN, OUTPAR, GETS                       MLD
*                                                                        MLD
*                                                                        MLD
**     1. EXECUTE THE REL SEQUENCE IF THE I/O CHANNEL IS ASSIGNED.       MLD
                                                                         MLD
 RES      RJM    DEQP        DISCONNECT EQUIPMENT IF CONNECTED           MLD
                                                                         MLD
**     2. CLEAR ERROR EXIT REGISTERS AND OBTAIN THE I/O CHANNEL FROM     MLD
*         THE SYSTEM.                                                    MLD
                                                                         MLD
          LCN    3
          STM    RESCTR      STORE COUNT FOR RESERVE RETRIES
 RES0     LDN    0
          STD    EC          CLEAR ERROR REGISTERS                       MLD
          STD    EA                                                      MLD
          STD    EM                                                      MLD
          LDD    D.T0                                                    MLD
          STM    WAI4        STORE LAST SELECTED OPTIONS FOR WAIT SUBR.  MLD
          RJM    BD.RCH      DROP/REQUEST CHANNEL AS REQUESTED           MLD
                                                                         MLD
**     3. VERIFY THAT THE I/O CHANNEL IS NOT ACTIVE.                     MLD
                                                                         MLD
          AJM    ERRCAS      ERROR IF CHANNEL ACTIVE FROM SYSTEM         MLD
                                                                         MLD
**     4. ISSUE A FORMAT UNIT FUNCTION (E004).                           MLD
                                                                         MLD
*         POSITION RES OPTION FROM D.T0 TO D.T1 THRU D.T4                MLD
                                                                         MLD
          LDM    WAI4        LOAD SELECTED OPTIONS                       MLD
          STD    D.T0                                                    MLD
          LPC    2000B
          ADC    4000B
          STM    FORMAT3     ENABLE/DISABLE ERROR CORRECTION
          LDD    D.T0 
          LPC    1000B                                                   MLD
          STD    D.T1        SAVE PARITY                                 MLD
          LDD    D.T0                                                    MLD
          LPC    700B                                                    MLD
          SHN    2                                                       MLD
          STD    D.T2        SAVE XLATE TABLE OPTION                     MLD
          LDD    D.T0                                                    MLD
          LPN    30B                                                     MLD
          SHN    2                                                       MLD
          STD    D.T3        SAVE MODE                                   MLD
          LDD    D.T0                                                    MLD
          LPN    7                                                       MLD
          SBN    5                                                       MLD
          MJN    RES2        IF DENSITY CODE IS IN RANGE                 MLD
 RES1     LJM    ERRPOR      ERROR IF PARAMETER OUT OF RANGE             MLD
                                                                         MLD
 RES2     ADN    5                                                       MLD
          STD    D.T4        SAVE DENSITY INDEX                          MLD
          LDM    DTAB,D.T4   GET DENSITY CODE                            MLD
          SHN    6                                                       MLD
          MJN    RES1        IF DENSITY IS ILLEGAL ON DC ASSIGNED        MLD
          STD    D.T4        SAVE DENSITY CODE                           MLD
          LDM    FORMAT1                                                 MLD
          LPC    4237B       CLEAR OLD XLATE AND MODE SELECTIONS         MLD
          LMD    D.T2        ADD NEW XLATE OPTION                        MLD
          LMD    D.T3        ADD NEW MODE OPTION                         MLD
          STM    FORMAT1     STORE NEW OPTIONS                           MLD
          LDM    FORMAT2                                                 MLD
          LPC    6477B       CLEAR OLD PARITY AND DENSITY SELECTIONS     MLD
          LMD    D.T1        ADD NEW PARITY OPTION                       MLD
          LMD    D.T4        ADD NEW DENSITY OPTION                      MLD
          STM    FORMAT2     STORE NEW OPTIONS                           MLD
 RES2A    LDN    FORMAT 
          RJM    FAN         SELECT FORMAT                               MLD
                                                                         MLD
**     5. OUTPUT  3  WORDS  OF  PARAMETERS, ONE WORD AT A TIME AND       MLD
*         SET UNIT CONNECTED FLAG.                                       MLD
                                                                         MLD
          ACN    40B         ACTIVATE CHANNEL 
          LDN    3           NUMBER OF PARAMETER WORDS TO OUTPUT
          OAM    FORMAT1,40B
          ZJN    RES2C       ALL DATA ACCEPTED
          SOM    RESCTR 
          NJN    RES2A       IF TIME NOT UP RETRY 
 RES2B    LJM    OPP6        ELSE ERROR 
  
 RES2C    EJM    RES2D       CHECK LAST WORD OUTPUTTED
          SOM    RESCTR 
          NJN    RES2C       IF TIME NOT UP CHECK EMPTY 
  
 RES2D    DCN    40B         CLEAN UP CHANNEL 
          LDN    1                                                       MLD
          STD    CONNECT     INDICATE UNIT CONNECTED                     MLD
                                                                         MLD
**     6. REQUEST AND INPUT ALL STATUS TO THE STATUS BUFFER AND CLEAR    MLD
*         MAINTENANCE FEATURES ACTIVE FLAGS.                             MLD
                                                                         MLD
          LDN    0                                                       MLD
          STD    MFA         CLEAR MAINTENANCE FEATURES ACTIVE FLAGS     MLD
          RJM    GETS        GET ALL STATUS                              MLD
                                                                         MLD
**     7. VERIFY FROM STATUS THAT THE UNIT TYPE (7TK OR 9TK) AGREES      MLD
*         WITH THE DEVICE ASSIGNED.                                      MLD
                                                                         MLD
          SHN    -6                                                      MLD
          LPN    1                                                       MLD
 RES3     LMN    1           *** LMN 1 IF 9TK UNIT REQUESTED             MLD
*         LMN    0           *** LMN 0 IF 7TK UNIT REQUESTED             MLD
          ZJN    RES4        IF REQUESTED/ACTUAL TRACKS AGREE            MLD
 ERRDCSM  LDC    ER.DCSM     DEVICE CODE/STATUS MISMATCH
          UJN    BKS2A
                                                                         MLD
 RESCTR   DATA   0
  
**     8. BUMP LINE NUMBER AND EXIT.                                     MLD
                                                                         MLD
 RES4     LJM    XRES        EXIT TO STACK
                                                                         MLD
*         LEGAL DENSITY TABLE                                            MLD
  
 DTAB     DATA   1           *** 556 LEGAL ON 7TK 
*         DATA   7777B       *** 556 ILLEGAL ON 9TK 
 DTAB1    DATA   0           *** 800 LEGAL ON 7TK 
*         DATA   1           *** 800 LEGAL ON 9TK 
 DTAB2    DATA   2           *** 1600 LEGAL ON 9TK
*         DATA   7777B       *** 1600 ILLEGAL ON 7TK                     MLD
 DTAB3    DATA   3           *** 200 LEGAL ON 7TK                        MLD
*         DATA   7777B       *** 200 ILLEGAL ON 9TK                      MLD
 DTAB4    DATA   3           *** 6250 LEGAL ON 9TK                       MLD
*         DATA   7777B       *** 6250 ILLEGAL ON 7TK                     MLD
          SPACE  4,16                                                    MLD
**        BKSP   - BACKSPACE                                             MLD
*                                                                        MLD
*         BACKSPACE TAPE ACCORDING TO INPUT PARAMETERS                   MLD
*                                                                        MLD
*         ENTRY  - (A)    = ABT ADDRESS.                                 MLD
*                  (D.T0) = BACKSPACE TYPE FLAG. 0 = NORMAL BKSP         MLD
*                                                1 = SHORT CONTROL BKSP  MLD
*                                                3 = LONG CONTROL BKSP   MLD
*                                                                        MLD
*                  (WC)   = NUMBER OF WORDS ON CONTROL BACKSPACE.        MLD
*                           (15/16 THS OF THIS VALUE WILL BE USED).      MLD
*                                                                        MLD
*         EXIT   - ONE RECORD BACKSPACED, END OF OPERATION DETECTED,     MLD
*                  AND ALL STATUS IS STORED IN SB.                       MLD
*                  (WT) AND (WTA) = ACTUAL NUMBER OF WORDS XMITTED ON    MLD
*                  A CONTROL BACKSPACE.                                  MLD
*                                                                        MLD
*                  ERRWC  - IF WC IS ZERO ON CONTROL BKSP.               MLD
*                  ERRDNA - IF ALL DATA NOT ACCEPTED ON CONTROL BKSP.    MLD
*                                                                        MLD
*         USES   - P, D.T0, D.T1, D.T2, D.T3, D.T4, D.T5, WT, WTA.       MLD
*                                                                        MLD
*         CALLS  - TCAL, FAN, WEOP.                                      MLD
                                                                         MLD
                                                                         MLD
**     1. VERIFY UNIT IS CONNECTED.                                      MLD
*                                                                        MLD
*      2. INSURE THAT THE WRITE-TO-READ LOOP IS NOT ACTIVE.              MLD
                                                                         MLD
 BKSP     RJM    TCAL        TEST CONTROLLER ASSIGNMENT AND LWR          MLD
                                                                         MLD
**     3. GO TO STEP 7 IF CONTROL BACKSPACE.                             MLD
*                                                                        MLD
*      4. ISSUE A BACKSPACE FUNCTION (E014).                             MLD
*                                                                        MLD
          LDD    D.T0                                                    MLD
          NJN    BKS2        IF CONTROL BACKSPACE                        MLD
          LDC    BACKSP                                                  MLD
          RJM    FAN         ISSUE BACKSPACE FUNCTION                    MLD
                                                                         MLD
**     5. WAIT UP TO 4 SECONDS FOR END-OF-OPERATION AND STORE 
*         GENERAL STATUS INTO THE STATUS BUFFER.                         MLD
*                                                                        MLD
*      6. IF ALERT IS ON IN GENERAL STATUS INPUT ALL STATUS TO SB.       MLD
                                                                         MLD
          LDC    4000 
          RJM    WEOP        WAIT END OF OPERATION                       MLD
 BKS1     LJM    XBKSP       EXIT TO STACK
                                                                         MLD
**     7. VERIFY WORDS TO OUTPUT IS NOT 0.                               MLD
*                                                                        MLD
                                                                         MLD
 BKS2     LDD    WC                                                      MLD
          NJN    BKS3        IF WORD COUNT IS NOT ZERO                   MLD
 ERRWC    LDC    ER.WC       BUFFER REFERENCE OR WC ERROR 
 BKS2A    LJM    ERR
                                                                         MLD
**     8. ISSUE A CONTROL BACKSPACE FUNCTION (E114).                     MLD
                                                                         MLD
 BKS3     LDN    0                                                       MLD
          STD    D.T2        CLEAR UPPER WORD COUNT                      MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STM    WTA                                                     MLD
          LDC    CBKSP                                                   MLD
          RJM    FAN         SELECT CONTROL BACKSPACE                    MLD
          ACN    40B         START TAPE MOTION                           MLD
                                                                         MLD
**     9. OUTPUT 15/16 OF THE REQUESTED NUMBER OF WORDS.                 MLD
*                                                                        MLD
          LDD    WC                                                      MLD
          SHN    -4                                                      MLD
          STD    SC                                                      MLD
          LDD    WC                                                      MLD
          SBD    SC                                                      MLD
          NJN    BKS4        IF 15/16 OF WC IS NOT ZERO                  MLD
          LDN    1           OTHERWISE, SET WC TO 1                      MLD
 BKS4     STD    D.T3        SET WORD COUNT FOR OUTPUT                   MLD
          LDD    D.T0                                                    MLD
          LPN    2                                                       MLD
          ZJN    BKS5        IF NOT LONG CONTROL BACKSPACE               MLD
          LDD    D.T3                                                    MLD
          SHN    3           MULTIPLY WC BY 8                            MLD
          STD    D.T3                                                    MLD
          SHN    -12                                                     MLD
          STD    D.T2                                                    MLD
          SHN    12                                                      MLD
 BKS5     ADD    D.T3        FORM WORD COUNT                             MLD
          OAM    OB          OUTPUT REQUEST WORD COUNT                   MLD
          STD    D.T5        SAVE REMAINING WORDS                        MLD
          SHN    -12                                                     MLD
          STD    D.T4                                                    MLD
          LDN    0                                                       MLD
          IJM    BKS9        IF ALL WORDS NOT TAKEN                      MLD
          LDC    8000 
 BKS6     EJM    BKS8        IF LAST WORD TAKEN                          MLD
 BKS7     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    BKS6        IF TIME IS NOT UP                           MLD
 BKS8     DCN    40B         TERMINATE OUTPUT                            MLD
 BKS9     STD    D.T1        SAVE ERROR/NO ERROR FLAG                    MLD
          LDD    D.T2                                                    MLD
          SHN    12                                                      MLD
          ADD    D.T3                                                    MLD
          SBD    D.T5                                                    MLD
          SHN    6                                                       MLD
          SBD    D.T4                                                    MLD
          SHN    12                                                      MLD
          STD    WT          SAVE WORDS ACTUALLY TRANSMITTED             MLD
          SHN    -12                                                     MLD
          STM    WTA                                                     MLD
                                                                         MLD
**    10  WAIT UP TO 100 MSEC FOR END-OF-OPERATION.                      MLD
*                                                                        MLD
*     11. REQUEST AND INPUT GENERAL STATUS TO THE STATUS  BUFFER.        MLD
*                                                                        MLD
*     12. IF ALERT IS ON IN GENERAL STATUS INPUT ALL STATUS TO SB.       MLD
                                                                         MLD
          LDC    100                                                     MLD
          RJM    WEOP        WAIT END OF OP                              MLD
          LDD    D.T1        GET ERROR FLAG                              MLD
          ZJN    ERRDNA      IF  ALL WORDS NOT TAKEN
          LJM    BKS1        BUMP P AND EXIT                             MLD
                                                                         MLD
 ERRDNA   LDC    ER.DNA      ERROR IF DATA NOT ACCEPTED 
          UJN    FUNCA
          SPACE  4,16                                                    MLD
**        FUNC   - FUNCTION THE CONTROLLER.                              MLD
*                                                                        MLD
*         PERFORM AN ENDFILE, ERASE, FSPACE OR MEASURE OPERATION BASED   MLD
*         ON THE REQUEST.                                                MLD
*                                                                        MLD
*         ENTRY  - (A)    = ABORT ADDRESS                                MLD
*                  (D.T0) = INDEX TO OPERATION                           MLD
*                           0 = MEASURE FWD GAP                          MLD
*                           1 = MEASURE REV GAP                          MLD
*                           2 = MEASURE FWD START                        MLD
*                           3 = MEASURE REV START                        MLD
*                           4 = ENDFILE                                  MLD
*                           5 = ERASE                                    MLD
*                           6 = FSPACE                                   MLD
*                           7 = WAITNB                                   MLD
*                          10 = UNLOAD                                   MLD
*                          11 = REWIND                                   MLD
*                                                                        MLD
*         EXIT   - THE OPERATION IS COMPLETED AND RESULTS STORED.        MLD
*                                                                        MLD
*                  ERRCNR  - IF CHANNEL NOT RESERVED.                    MLD
*                  ERRUNC  - IF UNIT NOT CONNECTED.                      MLD
*                  ERRCSE  - IF NOT EOF REQUEST AND LWR IS ACTIVE.       MLD
*                  ERRNOEP - IF EOP NOT RECEIVED IN 1 SECOND.            MLD
*                                                                        MLD
*         USES   - P.                                                    MLD
*                                                                        MLD
*         CALLS  - TCA, FAN, WEOP                                        MLD
                                                                         MLD
**     1. VERIFY THAT THE UNIT IS CONNECTED.                             MLD
*                                                                        MLD
*      2. INSURE THAT THE WRITE-TO-READ LOOP IS NOT ACTIVE.              MLD
                                                                         MLD
 FUNC     RJM    TCA         TEST CONTROLLER ASSIGNMENT                  MLD
          LDD    D.T0                                                    MLD
          SBN    TFUNEOF                                                 MLD
          ZJN    FUN1        IF EOF REQUEST                              MLD
          LDD    MFA                                                     MLD
          LPN    1                                                       MLD
          ZJN    FUN1        IF LWR IS NOT ACTIVE                        MLD
 ERRCSE   LDC    ER.CSE      COMMAND SEQUENCE ERROR 
 FUNCA    LJM    ERR
                                                                         MLD
**     3. ISSUE THE REQUESTED FUNCTION.                                  MLD
                                                                         MLD
 FUN1     LDM    TFUN,D.T0   LOAD FUNCTION                               MLD
          RJM    FAN         PERFORM THE FUNCTION                        MLD
                                                                         MLD
**     4. WAIT UP TO 4 SECONDS FOR END-OF-OPERATION.
*                                                                        MLD
*      5. REQUEST AND INPUT GENERAL STATUS TO THE STATUS  BUFFER.        MLD
*                                                                        MLD
*      6. IF ALERT IS ON IN GENERAL STATUS INPUT ALL STATUS TO SB.       MLD
                                                                         MLD
          LDC    4000 
          RJM    WEOP        WAIT END OF OPERATION                       MLD
          LDD    D.T0                                                    MLD
          SBN    TFUNUNL                                                 MLD
          ZJN    FUN2        IF UNLOAD FUNCTION                          MLD
          SBN    TFUNREW-TFUNUNL                                         MLD
          NJN    FUN3        IF NOT REWIND FUNCTION                      MLD
          LDN    RDY+LP      EXPECTED STATUS IN A                        MLD
 FUN2     RJM    WAIT        WAIT FOR OPERATION TO COMPLETE              MLD
 FUN3     LJM    XFUNC       EXIT TO STACK
                                                                         MLD
*         TABLE OF FUNCTIONS - MUST BE KEPT IN ORDER                     MLD
                                                                         MLD
 TFUN     CON    FWDGAP      MEASURE FORWARD GAP FUNCTION 
          CON    REVGAP      MEASURE REVERSE GAP FUNCTION 
          CON    FWDSTRT     MEASURE FORWARD START FUNCTION 
          CON    REVSTRT     MEASURE REVERSE START FUNCTION 
 TFUNEOF  EQU    *-TFUN      INDEX CODE FOR ENDFILE                      MLD
          CON    EOF         ENDFILE FUNCTION 
          CON    ERASER      ERASE FUNCTION 
          CON    FORESP      FORESPACE FUNCTION 
          CON    STOPTM      WAIT NOT BUSY (STOP TAPE MOTION) FUNCTION
 TFUNUNL  EQU    *-TFUN      INDEX CODE FOR UNLOAD                       MLD
          CON    UNL         UNLOAD FUNCTION
 TFUNREW  EQU    *-TFUN      INDEX CODE FOR REWIND                       MLD
          CON    REW         REWIND FUNCTION
          SPACE  4,17                                                    MLD
**        MARGINS- SELECT MARGINS.                                       MLD
*                                                                        MLD
*         STORE SELECTED MARGINS FOR NEXT READ/WRITE OPERATIONS.         MLD
*                                                                        MLD
*         ENTRY  - (A) = MARGIN SELECTION                                MLD
*                                                                        MLD
*                  XXX0 = NORMAL READ CLIP.                              MLD
*                  XXX1 = HIGH READ CLIP.                                MLD
*                  XXX2 = LOW READ CLIP.                                 MLD
*                  XXX3 = HYPER READ CLIP.                               MLD
*                                                                        MLD
*         EXIT   - MARGINS STORED IN CLIPS.                              MLD
*                                                                        MLD
*         USES   - CLIPS, P.                                             MLD
*                                                                        MLD
*         CALLS  - NONE.                                                 MLD
*                                                                        MLD
 MARGINS  LPN    3           MASK MARGINS SELECTIONS                     MLD
          ZJN    MAR1        IF NORMAL SELECTION IS MADE                 MLD
          SHN    6                                                       MLD
          ADN    CLIP        FORM FUNCTION CODE TO ISSUE                 MLD
 MAR1     STM    CLIPS       STORE FUNCTION( ZERO IF NONE TO DO)         MLD
          LJM    XMARGINS    EXIT TO STACK                               MLD
          SPACE  4,16                                                    MLD
**        READ   - READ A RECORD OR RDRAM OR WRRAM.                      MLD
*                                                                        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) = OPERATION CODE. 0 = READ TAPE FORWARD.        MLD
*                                          1 = READ TAPE REVERSE.        MLD
*                                          2 = READ RDRAM (D.T1)         MLD
*                                          3 = READ WRRAM (D.T1)         MLD
*                                                                        MLD
*                 (D.T1) = VALUE OF 1 TO 4 TO SPECIFY WHICH RAM TO       MLD
*                          READ IF (D.T0) IS 2 OR 3.                     MLD
*                 (WC)   = NUMBER OF WORDS TO TRANSFER TO IB.            MLD
*                                                                        MLD
*         EXIT  - OPERATION COMPLETE AND DATA IS IN INPUT BUFFER.        MLD
*                                                                        MLD
*                 ERRCNR  - IF CHANNEL NOT ASSIGNED.                     MLD
*                 ERRUNC  - IF UNIT NOT CONNECTED ON READ FWD OR REV.    MLD
*                 ERRCSE  - IF READ FWD OR REV AND LWR IS ACTIVE.        MLD
*                 ERRPOR  - IF (D.T1) IS .LT. 1 OR .GT. 4                MLD
*                 ERRIDR  - IF ALL WORDS NOT RETURNED ON READ OF RAM.    MLD
*                                                                        MLD
*         USES  - D.T1, D.T2, SC, WC, WT, WTA, P.                        MLD
*                                                                        MLD
*         CALLS - TCA, FAN, WEOP.                                        MLD
                                                                         MLD
**     1. VERIFY THAT THE CHANNEL IS ASSIGNED.                           MLD
                                                                         MLD
 READ     RJM    TCHA        TEST CHANNEL ASSIGNMENT                     MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STM    WTA                                                     MLD
          LDD    WC                                                      MLD
          STD    SC          SET WORDS TO READ TO IB                     MLD
          SBD    BL                                                      MLD
          MJN    RD1         IF WC IS LESS THAN BUFFER SIZE              MLD
          LDD    BL                                                      MLD
          STD    SC          SET IT TO BUFFER SIZE IF LARGER             MLD
                                                                         MLD
**     2. GO TO STEP 10 IF RDRAM OR WRRAM REQUEST                        MLD
                                                                         MLD
 RD1      LDD    D.T0                                                    MLD
          SBN    2                                                       MLD
          MJN    RD2         IF READ FWD OR REV                          MLD
          LJM    RD20        IF RDRAM OR WRRAM                           MLD
                                                                         MLD
**     3. VERIFY THAT THE UNIT IS CONNECTED.                             MLD
                                                                         MLD
 RD2      LDD    CONNECT                                                 MLD
          NJN    RD3         IF CONNECTED                                MLD
          LJM    ERRUNC      ERROR IF UNIT NOT CONNECTED                 MLD
                                                                         MLD
                                                                         MLD
**     4. VERIFY THAT THE WRITE-TO-READ LOOP IS NOT ACTIVE.              MLD
                                                                         MLD
 RD3      LDD    MFA                                                     MLD
          LPN    1                                                       MLD
          ZJN    RD4         IF WRITE-TO-READ LOOP IS NOT ACTIVE         MLD
          LJM    ERRCSE      COMMAND SEQUENCING ERROR IF LWR IS ACTIVE   MLD
                                                                         MLD
**     5. ISSUE MARGINS SELECTED BY PREVIOUS MARGINS COMMANDS.           MLD
*           E006 = NORMAL CLIP    E106 = HIGH CLIP                       MLD
*           E206 = LOW CLIP       E306 = HYPER CLIP                      MLD
                                                                         MLD
 RD4      STD    D.T1        CLEAR LOOP COUNT                            MLD
          LDC    **                                                      MLD
 CLIPS    EQU    *-1         *** CLIP FUNCTIONS STORED HERE***           MLD
          ZJN    RD5         IF NORMAL CLIPS TO BE USED                  MLD
          RJM    FAN         ISSUE REQUESTED CLIP FUNCTION               MLD
                                                                         MLD
**     6. ISSUE  A  FORWARD  READ  (E040) OR REVERSE READ FUNCTION       MLD
*         (E140) BASED ON THE KEYWORD FWD OR REV.                        MLD
                                                                         MLD
 RD5      LDD    D.T0        GET FWD/REV READ FLAG                       MLD
          SHN    6                                                       MLD
          ADN    READF                                                   MLD
          RJM    FAN         ISSUE FORWARD OR REVERSE READ               MLD
                                                                         MLD
**     7. INPUT ONE RECORD. STORE (WC) WORDS INTO THE INPUT BUFFER       MLD
*         AND THE NUMBER OF TOTAL BYTES READ INTO THE WT  REGISTER       MLD
*         AND SB (20).  NOTE THAT IF THE WC REGISTER CONTAINS ZERO       MLD
*         A RECORD IS READ, BUT NO DATA IS TRANSMITTED TO  THE  PP       MLD
*         INPUT BUFFER.                                                  MLD
                                                                         MLD
          ACN    40B         START TAPE MOTION                           MLD
          LDD    BL                                                      MLD
          SBD    SC                                                      MLD
          STD    D.T3        REMAINING WC TO GET TO 500B WORD BOUNDARY   MLD
          LDD    SC                                                      MLD
          ZJN    RD6         IF NO WORDS REQUESTED - SKIP RECORD         MLD
          IAM    IB          READ DATA TO INPUT BUFFER                   MLD
          NJN    RD12        IF END OF RECORD                            MLD
 RD6      LDD    D.T3                                                    MLD
          ZJN    RD7         IF NO WORDS TO GET TO 500B WORD BOUNDARY    MLD
          IAM    OB          READ                                        MLD
          NJN    RD13        IF END OF RECORD                            MLD
 RD7      LDD    BL                                                      MLD
 RD8      IAM    OB          READ ANOTHER BLOCK INTO THE OUTPUT BUFFER   MLD
          NJN    RD14        IF END OF RECORD                            MLD
                                                                         MLD
*         SIMULATE THE PING-PONG PPU CONCEPT BY DEACTIVATING THE I/O     MLD
*         CHANNEL AT 500B WORD BOUNDARIES.
                                                                         MLD
 RD9      DCN    40B         SIMULATE BOUNCING PPS
*         PSN                PASS FOR ISMT NO PING-PONG 
          AOD    D.T1        BUMP LOOP COUNTER                           MLD
 RD9A     ACN    40B         RE-ACTIVATE THE CHANNEL
*         PSN                PASS FOR ISMT NO PING-PONG 
          UJN    RD7         CONTINUE THE READ
                                                                         MLD
 RD12     STD    D.T2        SAVE REMAINER                               MLD
          LDD    SC          WORDS REQUESTED TO BE READ                  MLD
          UJN    RD15        GO CALCULATE TOTAL WORDS READ               MLD
                                                                         MLD
 RD13     STD    D.T2        SAVE REMAINDER                              MLD
          LDD    D.T3                                                    MLD
          ADD    SC          WORDS TO DO THUS FAR                        MLD
          UJN    RD15                                                    MLD
                                                                         MLD
 RD14     STD    D.T2                                                    MLD
          LDD    BL                                                      MLD
          ADD    BL          WORDS TO DO THUS FAR                        MLD
 RD15     SBD    D.T2                                                    MLD
          STD    WT                                                      MLD
          SFM    ERCPE1,CH   CHECK FOR CH PARITY ERROR
 RD16     SOD    D.T1        DECREMENT LOOP COUNT                        MLD
          MJN    RD17        IF NO MORE LOOPS MADE                       MLD
          LDD    BL                                                      MLD
          RAD    WT                                                      MLD
          SHN    -12                                                     MLD
          RAM    WTA                                                     MLD
          UJN    RD16                                                    MLD
                                                                         MLD
**     8. WAIT  UP TO  5  MSECS  FOR  END-OF-OPERATION  AND  STORE       MLD
*         GENERAL STATUS INTO THE STATUS BUFFER.                         MLD
*                                                                        MLD
*      9. IF ALERT IS ON IN GENERAL STATUS INPUT ALL STATUS TO SB.       MLD
                                                                         MLD
 RD17     LDC    5
*         LDC    1000D       FOR ISMT 
 RD17A    EQU    *-1
          RJM    WEOP        WAIT END OF OPERATION                       MLD
 RD18     LJM    XREAD       EXIT TO STACK
                                                                         MLD
**    10. A READ OF RDRAM OR WRRAM IS REQUESTED.  VERIFY THAT (WC)       MLD
*         IS NOT ZERO.                                                   MLD
                                                                         MLD
 RD20     LDD    WC                                                      MLD
          NJN    RD21        IF LEGAL WORD COUNT                         MLD
          LJM    ERRWC       IF WORD COUNT ERROR                         MLD
                                                                         MLD
                                                                         MLD
**    11. VERIFY THAT Y DOES NOT EXCEED THE RANGE OF 1 TO 4.             MLD
                                                                         MLD
 RD21     LDD    D.T1                                                    MLD
          NJN    RD23        IF Y IS NOT ZERO                            MLD
 RD22     LJM    ERRPOR      ERROR IF PARAMETER IS OUT OF RANGE          MLD
                                                                         MLD
 RD23     SBN    5                                                       MLD
          PJN    RD22        IF Y IS .GT. 4                              MLD
                                                                         MLD
**    12. ISSUE  A  RELEASE UNIT FUNCTION (0001) TO DISCONNECT THE       MLD
*         UNIT. CLEAR THE UNIT CONNECTED FLAG.                           MLD
                                                                         MLD
          LDD    CONNECT                                                 MLD
          ZJN    RD24        IF UNIT IS NOT CONNECTED                    MLD
          LDN    RELEASE                                                 MLD
          RJM    FAN         RELEASE UNIT                                MLD
          LDN    0                                                       MLD
          STD    CONNECT     INDICATE UNIT IS NOT CONNECTED              MLD
                                                                         MLD
**    13. ISSUE  A FORMAT FUNCTION (E004) AND OUTPUT PARAMETERS TO       MLD
*         SET A/D MODE TO 1 AND IDENTIFY THE CODE TABLE THAT IS TO       MLD
*         BE READ.                                                       MLD
                                                                         MLD
 RD24     LDD    D.T1                                                    MLD
          SHN    8                                                       MLD
          ADC    4240B                                                   MLD
          STD    D.T2        CREATE FORMAT FUNCTION PARAMTER             MLD
          LDN    FORMAT                                                  MLD
          RJM    FAN         FUNCTION FORMAT                             MLD
          LDC    D.T2+10000B                                             MLD
          RJM    OUTPAR      OUTPUT FORMAT                               MLD
                                                                         MLD
**    14. ISSUE A COPY CODE TRANSLATION READ RAM  FUNCTION  (E047)       MLD
*         OR COPY CODE TRANSLATION WRITE RAM FUNCTION (E247) BASED       MLD
*         ON THE KEYWORD RDRAM OR WRRAM THAT IS DEFINED.                 MLD
                                                                         MLD
          LDD    D.T0                                                    MLD
          LPN    1                                                       MLD
          SHN    7                                                       MLD
          ADN    RDRAM                                                   MLD
          RJM    FAN         FUNCTION RDRAM OR WRRAM                     MLD
                                                                         MLD
**     8. INPUT  (WC) WORDS TO THE PP INPUT BUFFER.  THE NUMBER OF       MLD
*         WORDS ACTUALLY TRANSMITTED IS STORED IN THE WT REGISTER.       MLD
                                                                         MLD
          LDD    SC          WORDS TO READ                               MLD
          ACN    40B         ACTIVATE CHANNEL                            MLD
          IAM    IB          READ DATA TO THE INPUT BUFFER               MLD
          STD    WT                                                      MLD
          LDD    SC                                                      MLD
          SBD    WT          CALCULATE WORDS ACTUALLY READ               MLD
          STD    WT                                                      MLD
          SFM    ERCPE1,CH   CHECK FOR CH PARITY ERROR
          IJM    RD25                                                    MLD
          DCN    40B                                                     MLD
 RD25     SBD    SC                                                      MLD
          NJN    ERRIDR      IF REQUESTED WORDS WERE NOT READ 
          LJM    RD18        BUMP P AND EXIT                             MLD
                                                                         MLD
 ERRIDR   LDC    ER.IDR      INCOMPLETE DATA RETURNED TO PP 
          UJN    ERRPOR1     ERROR EXIT 
          SPACE  4,16                                                    MLD
**        RESET  - MASTER CLEAR.                                         MLD
*                                                                        MLD
*         MASTER CLEAR THE CONTROLLER AND WAIT FOR MICRODIAGNOSTICS TO   MLD
*         RUN.                                                           MLD
*                                                                        MLD
*         ENTRY  - (A) = ABT ADDRESS.                                    MLD
*                                                                        MLD
*         EXIT   - THE MASTER CLEAR IS COMPLETE, MICRODIAGNOSTICS HAVE   MLD
*                  TERMINATED AND END OF OPERATION DETECTED.             MLD
*                                                                        MLD
*                  ERRCNR - IF CHANNEL NOT ASSIGNED.                     MLD
*                  ERRNIF - IF NO INACTIVE TO FUNCTION.                  MLD
*                  ERRNEOP- IF NO EOP WITHIN 1 SECOND.                   MLD
*                                                                        MLD
*         USES   - CONNECT, P.                                           MLD
*                                                                        MLD
*         CALLS  - TCHA, FAN, WEOP                                       MLD
                                                                         MLD
**     1. INSURE THE I/O CHANNEL IS ASSIGNED.                            MLD
                                                                         MLD
 RESET    RJM    TCHA        TEST CHANNEL ASSIGNEMENT                    MLD
                                                                         MLD
**     2. ISSUE A MASTER CLEAR FUNCTION (E414).                          MLD
                                                                         MLD
          LDC    MC                                                      MLD
          RJM    FAN         ISSUE MASTER CLEAR FUNCTION                 MLD
                                                                         MLD
**     3. CLEAR ALL MAINTENANCE FEATURES ACTIVE FLAGS.                   MLD
*                                                                        MLD
*      4. WAIT UP TO 1 SECOND FOR MICRO-DIAGNOSTICS TO EXECUTE.          MLD
*                                                                        MLD
*      5. REQUEST AND INPUT GENERAL STATUS. IF ALERT IS SET IN GENERAL   MLD
*         STATUS, INPUT ALL STATUS.                                      MLD
                                                                         MLD
          LDN    0                                                       MLD
          STD    CONNECT     INDICATE UNIT NOT CONNECTED                 MLD
          LDC    1000D                                                   MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
                                                                         MLD
**     6. BUMP P AND EXIT.                                               MLD
                                                                         MLD
          LJM    XRESET      EXIT TO STACK                               MLD
          SPACE  4,16                                                    MLD
**        SELECT - SELECT A MAINTENANCE FEATURE.                         MLD
*                                                                        MLD
*         SELECT A MAINTENANCE FEATURE IN THE CONTROLLER/UNIT.           MLD
*                                                                        MLD
*         ENTRY  - (A)    = ABT ADDRESS.                                 MLD
*                  (D.T0) = INDEX TO OPTION TO SELECT.                   MLD
*                           0 = LOOPTCU                                  MLD
*                           1 = LOOPUNIT                                 MLD
*                           2 = PATHERR                                  MLD
*                           3 = DATAERR                                  MLD
*                           4 = ECC                                      MLD
*                           5 = VELOCITY                                 MLD
*                           6 = OPPARITY                                 MLD
*                           7 = OPDENSITY                                MLD
*                          10 = LOOPHEAD                                 MLD
*                          11 = CLEAR 
*                           *12=LOOPFSC 
*                                                                        MLD
*                  (D.T1) = LOOP TCU OPTIONS OR DATAERR OPTIONS.         MLD
*                                                                        MLD
*         EXIT   - OPERATION COMPLETED.                                  MLD
*                                                                        MLD
*                  ERRPOR - IF LOOPTCU PARAMETER ERROR.                  MLD
*                                                                        MLD
*         USES   - MFA,P.                                                MLD
*                                                                        MLD
*         CALLS  - TCAL,FAN,OUTPAR,WEOP.                                 MLD
*                                                                        MLD
                                                                         MLD
**     1. VERIFY THAT THE UNIT IS CONNECTED.                             MLD
*                                                                        MLD
                                                                         MLD
 SELECT   RJM    TCA         TEST CONTROLLER ASSIGNMENT                  MLD
          LDD    D.T0        GET REQUEST                                 MLD
          NJN    SEL4        IF NOT LOOP TCU REQUEST                     MLD
                                                                         MLD
**     3. IF THE REQUEST IS NOT LOOP TCU, GO TO STEP 6.                  MLD
*         IF LOOP TCU REQUEST, VERIFY THAT THE REQUESTED OPTION          MLD
*         IS IN LEGAL RANGE.   ISSUE FUNCTION AND OUTPUT FORMAT          MLD
*         PARAMETER ACCORDING TO REQUEST.                                MLD
                                                                         MLD
          LDD    D.T1                                                    MLD
          SBN    14B                                                     MLD
          MJN    SEL1        IF PARAMETERS OK 
 ERRPOR   LDC    ER.POR      PARAMETER OUT OF RANGE 
 ERRPOR1  LJM    ERR         ERROR EXIT 
                                                                         MLD
 SEL1     LDN    LOOPTCU                                                 MLD
          RJM    FAN         FUNCTION LOOP TCU                           MLD
          LDD    D.T1                                                    MLD
          ADC    TCU+10000B                                              MLD
          RJM    OUTPAR      OUTPUT ONE PARAMETER WORD                   MLD
                                                                         MLD
**     4. SET THE WRITE TO READ LOOP ACTIVE.                             MLD
                                                                         MLD
 SEL2     LDD    MFA                                                     MLD
          SCN    1                                                       MLD
          LMN    1                                                       MLD
          STD    MFA         SET WRITE TO READ LOOP ACTIVE               MLD
                                                                         MLD
**     5. BUMP THE LINE NUMBER AND EXIT.                                 MLD
                                                                         MLD
 SEL3     LJM    XSELECT     EXIT TO STACK
                                                                         MLD
**     6. IF THE REQUEST IS NOT LOOP UNIT, GO TO STEP 7. OTHERWISE       MLD
*         ISSUE THE LOOP UNIT FUNCTION AND GO TO STEP 4.                 MLD
                                                                         MLD
 SEL4     SBN    1                                                       MLD
          NJN    SEL5        IF NOT LOOP UNIT                            MLD
          LDC    LOOPUN                                                  MLD
 SEL4A    RJM    FAN
          UJN    SEL2        SET LWR ACTIVE, BUMP P AND EXIT             MLD
                                                                         MLD
**     7. IF THE REQUEST IS NOT PATHERR, GO TO STEP 9.  OTHERWISE        MLD
*         ISSUE THE PATHERR FUNCTION .                                   MLD
                                                                         MLD
 SEL5     SBN    1                                                       MLD
          NJN    SEL7        IF NOT PATHERR                              MLD
          LDN    PATHERR                                                 MLD
          RJM    FAN         FUNCTION TCU PATH ERROR                     MLD
                                                                         MLD
**     8. SET MAINTENANCE ACTIVE FLAG, BUMP P AND EXIT.                  MLD
                                                                         MLD
 SEL6     LDD    MFA                                                     MLD
          SCN    2                                                       MLD
          LMN    2                                                       MLD
          STD    MFA         SET MAINTENANCE FEATURE ACTIVE FLAG         MLD
 SEL6A    UJN    SEL3        BUMP P AND EXIT
                                                                         MLD
**     9. IF THE REQUEST IS NOT DATAERR, GO TO STEP 10.  OTHERWISE       MLD
*         ISSUE THE PATHERR FUNCTION, OUTPUT THE REQUESTED PARAMETER     MLD
*         TO DEFINE THE TRACKS TO CAUSE ERRORS ON AND GO TO STEP 8.      MLD
                                                                         MLD
 SEL7     SBN    1                                                       MLD
          NJN    SEL8        IF NOT DATAERR                              MLD
          LDN    DATAERR                                                 MLD
          RJM    FAN         FUNCTION DATA ERROR                         MLD
          LDC    D.T1+10000B                                             MLD
          RJM    OUTPAR      OUTPUT PARAMETER TO DEFINE BAD TRACKS       MLD
          UJN    SEL6        BUMP P AND EXIT                             MLD
                                                                         MLD
**     9. IF THE REQUEST IS NOT ECC, GO TO STEP 10.  OTHERWISE           MLD
*         ISSUE THE ECC FUNCTION AND GO TO STEP 8.                       MLD
                                                                         MLD
 SEL8     SBN    1                                                       MLD
          NJN    SEL9        IF NOT ECC                                  MLD
          LDN    ECC                                                     MLD
          RJM    FAN         FUNCTION ECC                                MLD
          UJN    SEL6        SET MAINT. ACTIVE FLAG, BUMP P AND EXIT     MLD
                                                                         MLD
**    10. IF THE REQUEST IS NOT VELOCITY, GO TO STEP 12.  OTHERWISE      MLD
*         ISSUE THE VELOCITY FUNCTION, WAIT UP TO 100 MSEC FOR END-OP-   MLD
*         OPERATION, SAVE ALL STATUS.                                    MLD
                                                                         MLD
 SEL9     SBN    1                                                       MLD
          NJN    SEL11       IF NOT VELOCITY                             MLD
          LDN    VELOCITY                                                MLD
          RJM    FAN         FUNCTION VELOCITY                           MLD
          LDC    100                                                     MLD
          RJM    WEOP        WAIT END OF OPERATION                       MLD
                                                                         MLD
**    11. BUMP P AND EXIT.                                               MLD
                                                                         MLD
 SEL10    UJN    SEL6A       BUMP P AND EXIT
                                                                         MLD
**    12. IF THE REQUEST IS NOT  OPPARITY, GO TO STEP 13.  OTHERWISE     MLD
*         ISSUE THE OPPARITY FUNCTION AND GO TO STEP 11.                 MLD
                                                                         MLD
 SEL11    SBN    1                                                       MLD
          NJN    SEL13       IF NOT OPPARITY                             MLD
          LDN    OPPAR                                                   MLD
 SEL12    RJM    FAN         FUNCTION OPPOSITE PARITY                    MLD
          UJN    SEL10       BUMP AND EXIT                               MLD
                                                                         MLD
                                                                         MLD
**    13. IF THE REQUEST IS NOT OPDENSITY, GO TO STEP 14.  OTHERWISE     MLD
*         FUNCTION OPPOSITE DENSITY.                                     MLD
                                                                         MLD
 SEL13    SBN    1                                                       MLD
          NJN    SEL14       IF NOT OPDENSITY                            MLD
          LDC    OPDEN                                                   MLD
          UJN    SEL12       ISSUE FUNCTION, BUMP P AND EXIT             MLD
                                                                         MLD
**    14. IF THE REQUEST IS NOT LOOPHEAD, GOTO STEP 15. 
*         OTHERWISE, FUNCTION LOOP HEAD AND GO TO STEP 4. 
  
 SEL14    SBN    1
          NJN    SEL15       IF NOT LOOPHEAD
          LDC    LOOPHD 
          RJM    FAN         SELECT LOOP BACK THROUGH HEAD               MLD
          LJM    SEL2                                                    MLD
                                                                         MLD
**    15. FUNCTION CLEAR UNIT AND GO TO STEP 11.
  
 SEL15    SBN    1
          NJN    SEL16
          LDN    CLEAR
          RJM    FAN         CLEAR UNIT 
          UJN    SEL10       BUMP P AND EXIT
  
 SEL16    LDN    FSCWR
          LJM    SEL4A
*         TABLE OF FUNCTION PARAMETERS FOR LOOP TCU OPTION.              MLD
                                                                         MLD
 TCU      DATA   153B        GCR100                                      MLD
          DATA   152B        GCR150                                      MLD
          DATA   350B        GCR200                                      MLD
          DATA   557B        PE100                                       MLD
          DATA   556B        PE150                                       MLD
          DATA   754B        PE200                                       MLD
          DATA   553B        9T100                                       MLD
          DATA   552B        9T150                                       MLD
          DATA   750B        9T200                                       MLD
          DATA   473B        7T100                                       MLD
          DATA   472B        7T150                                       MLD
          DATA   670B        7T200                                       MLD
          SPACE  4,20                                                    MLD
**        STATUS - REQUEST AND INPUT STATUS.                             MLD
*                                                                        MLD
*         INPUT REQUESTED STATUS FROM THE CONTROLLER TO THE STATUS       MLD
*         BUFFER.                                                        MLD
*                                                                        MLD
*         ENTRY  - (A)    = ABT ADDRESS.                                 MLD
*                  (D.T0) = STATUS CODE.  0 = GET ALL STATUS             MLD
*                                         1 = GET GENERAL STATUS         MLD
*                                         2 = GET DETAIL STATUS          MLD
*                                         3 = GET UNIT STATUS            MLD
*                                                                        MLD
*         EXIT   - REQUESTED STATUS IS STORED IN SB.                     MLD
*                                                                        MLD
*         USES   - P.                                                    MLD
*                                                                        MLD
*         CALLS  - TCHA, GETS.                                           MLD
*                                                                        MLD
 STATUS   RJM    TCHA        TEST CHANNEL ASSIGNMENT                     MLD
          LDD    D.T0                                                    MLD
          LPN    7
          RJM    GETS        GET REQUESTED STATUS                        MLD
          LJM    XSTATUS     EXIT TO STACK                               MLD
          SPACE  4,20                                                    MLD
**        WRITE  - WRITE A RECORD.                                       MLD
*                                                                        MLD
*         WRITE A RECORD ON TAPE OR THROUGH THE WRITE-TO-READ LOOP.      MLD
*                                                                        MLD
*         ENTRY  - (A)    = ABT ADDRESS.                                 MLD
*                  (D.T0) = SHORT WRITE OR LONG WRITE FLAG (0= SHORT)    MLD
*                  (WC)   = NUMBER OF WORDS TO WRITE (THIS VALUE IS      MLD
*                           MULTIPLIED BY 8 IF LONG WRITE.               MLD
*                                                                        MLD
*         EXIT   - RECORD IS WRITTEN TO TAPE OR THROUGH THE WRITE-       MLD
*                  TO READ LOOPS AND (MFA) IS CLEARED TO INDICATE        MLD
*                  NO MAINTENANCE FEATURES REMAIN ACTIVE.                MLD
*                  (WC) AND (WTA) = NUMBER OF WORDS TRANSMITTED.         MLD
*                                                                        MLD
*                  ERRWC  - IF (WC) IS ZERO.                             MLD
*                  ERRDNA - IF ALL WORDS NOT ACCEPTED ON THE WRITE.      MLD
*                                                                        MLD
*         USES   - WT, WTA, WL, SC, D.Z3, D.T1, D.T2, P.                 MLD
*                                                                        MLD
*         CALLS  - TCA, FAN,                                             MLD
                                                                         MLD
**     1. VERIFY UNIT IS CONNECTED.                                      MLD
                                                                         MLD
 WRITE    RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
                                                                         MLD
**     2. VERIFY WC REGISTER IS NOT ZERO.                                MLD
                                                                         MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WT REGISTER                           MLD
          STM    WTA                                                     MLD
          STD    WL          CLEAR WRITE LOOP COUNTER                    MLD
          LDD    WC                                                      MLD
          STD    D.T1        SET WORDS TO WRITE                          MLD
          NJN    WRT1        IF LEGAL WC                                 MLD
          LJM    ERRWC       ERROR IF WC IS ZERO                         MLD
                                                                         MLD
**     3. ISSUE A WRITE (E050) OR SHORT WRITE(E250) FUNCTION BASED       MLD
*         ON THE NUMBER OF CHARATERS BEING WRITTEN.                      MLD
                                                                         MLD
 WRT1     LDD    D.T0                                                    MLD
          LMN    1                                                       MLD
          ZJN    WRT2        IF LONG WRITE                               MLD
          LDM    FORMAT1                                                 MLD
          LPN    40B         CHECK FOR PACKED MODE
          ZJN    WRT2        IF MODE 0                                   MLD
          LDD    WC                                                      MLD
          SHN    1                                                       MLD
          ADD    WC          WC*3                                        MLD
          SHN    -1          WC*3/2                                      MLD
          LPN    1                                                       MLD
          SHN    7           MOVE ODD/EVEN FRAME BIT UP                  MLD
 WRT2     ADN    WRITER                                                  MLD
          RJM    FAN                                                     MLD
                                                                         MLD
**     4. CLEAR THE WRITE-TO-READ LOOP ACTIVE FLAG.                      MLD
                                                                         MLD
          LDN    0
          STD    MFA         CLEAR MAINTENANCE FEATURES ACTIVE FLAGS     MLD
                                                                         MLD
**     5. OUTPUT THE REQUESTED NUMBER OF  WORDS  FROM  THE  OUTPUT       MLD
*         BUFFER AND STORE THE NUMBER OF WORDS ACTUALLY WRITTEN IN       MLD
*         THE WT REGISTER AND WORD 19 OF THE STATUS BUFFER.              MLD
                                                                         MLD
 WRT2A    LDD    BL                                                      MLD
          STD    SC                                                      MLD
          STD    D.Z3        SET ERROR/NO ERROR FLAG                     MLD
          LDD    D.T0                                                    MLD
          ZJN    WRT3        IF NOT LONG WRITE                           MLD
          LDD    BL                                                      MLD
          SHN    -3          DIVIDE BL BY 8 FOR LONG WRITE               MLD
          STD    SC                                                      MLD
          LDC    1003B       SHN 3  FOR LONG WRITE                       MLD
 WRT3     STM    WRT6                                                    MLD
          STM    WRT18                                                   MLD
 WRT4     LDD    D.T1                                                    MLD
          SBD    SC          CALCULATE NUMBER OF LOOPS REQUIRED          MLD
          MJN    WRT5        IF UNDERFLOW                                MLD
          STD    D.T1                                                    MLD
          AOD    WL          BUMP LOOP COUNT                             MLD
          UJN    WRT4        CONTINUE THE DIVIDE                         MLD
                                                                         MLD
 WRT5     ADD    SC          TAKE CARE OF UNDERFLOW                      MLD
 WRT6     SHN    3           *** SHN 3 IF LONG WRITE                     MLD
*         DATA   0           *** DATA 0 IF NOT LONG WRITE                MLD
          STD    D.T2        SAVE REMAINDER                              MLD
          EJECT                                                          MLD
*         *************************************************************  MLD
*         THE FOLLOWING LOOP IS TIME CRITICAL FOR SUPPORT OF GCR      *  MLD
*         OPERATIONS ON 200 IPS UNITS.  MODIFICATIONS SHOULD  BE      *  MLD
*         HANDLED WITH CAUTION.                                       *  MLD
*         *************************************************************  MLD
                                                                      *  MLD
          ACN    40B         START THE WRITE                          *  MLD
 WRT6A    LDD    WL                                                   *  MLD
          STD    D.Z1        SET LOOP COUNT                           *  MLD
          ZJN    WRT13       IF WORD COUNT IS LESS THAN BUFFER SIZE   *  MLD
          LDD    BL                                                   *  MLD
          UJN    WRT11       ENTER WRITE LOOP                         *  MLD
                                                                      *  MLD
 WRT7     EJM    WRT10                                                *  MLD
          LCN    3           MULT OF 4 FOR SBN 4
 WRT8     EJM    WRT10                                                *  MLD
 WRT9     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    WRT8                                                 *  MLD
          UJN    WRT11A      ERROR IF ALL DATA NOT ACCEPTED 
                                                                      *  MLD
*         SIMULATE THE PING-PONG PPU CONCEPT                          *  MLD
                                                                      *  MLD
 WRT10    DCN    40B                                                  *  MLD
*         PSN                PASS FOR ISMT NO PING-PONG 
          LDD    BL                                                   *  MLD
 WRT10A   ACN    40B         RE-ACTIVATE THE CHANNEL
*         PSN                PASS FOR ISMT NO PING-PONG 
 WRT11    OAM    OB          OUTPUT                                   *  MLD
          ZJN    WRT12       IF ALL DATA ACCEPTED                     *  MLD
 WRT11A   UJN    WRT21
                                                                      *  MLD
 WRT12    SOD    D.Z1        DECREMENT LOOP COUNTER                   *  MLD
          NJN    WRT7        IF ALL BLOCKS NOT WRITTEN                *  MLD
 WRT13    LDD    D.T2                                                 *  MLD
          ZJN    WRT14       IF NO REMAINDING WORDS TO OUTPUT         *  MLD
          OAM    OB                                                   *  MLD
          NJN    WRT22       IF ALL WORDS NOT ACCEPTED                *  MLD
 WRT14    EJM    WRT17       IF LAST BYTE ACCEPTED                    *  MLD
          LCN    3           MULT OF 4 FOR SBN 4
 WRT15    EJM    WRT17                                                *  MLD
 WRT16    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    WRT15                                                *  MLD
          STD    D.Z3        INDICATE ALL DATA NOT ACCEPTED           *  MLD
 WRT17    DCN    40B         TERMINATE OUTPUT                         *  MLD
                                                                      *  MLD
*         *************************************************************  MLD
*         THE PREVIOUS LOOP IS TIME CRITICAL FOR SUPPORT OF GCR       *  MLD
*         OPERATIONS ON 200 IPS UNITS.  MODIFICATIONS SHOULD BE       *  MLD
*         HANDLED WITH CAUTION.                                       *  MLD
*         *************************************************************  MLD
                                                                         MLD
          LDD    WC                                                      MLD
 WRT18    SHN    3           *** SHN 3 IF LONG WRITE                     MLD
*         DATA   0           *** DATA 0 IF NOT LONG WRITE                MLD
          STD    WT          SAVE WORDS TRANSMITTED                      MLD
          SHN    -12                                                     MLD
          STM    WTA                                                     MLD
                                                                         MLD
**     6. WAIT UP TO 1 SECOND FOR END-OF-OPERATION.                      MLD
*                                                                        MLD
*      7. VERIFY  THAT  ALL WORDS WERE ACTUALLY TRANSMITTED DURING       MLD
*         THE WRITE.                                                     MLD
*                                                                        MLD
*      8. REQUEST AND INPUT ALL STATUS TO THE STATUS  BUFFER.            MLD
                                                                         MLD
 WRT19    LDC    1000                                                    MLD
*         LDC    2000        FOR ISMT 
 WRT19A   EQU    *-1
          RJM    WEOP        WAIT FOR END OF OPERATION                   MLD
          LDD    D.Z3                                                    MLD
          NJN    WRT20       IF LAST WORD TAKEN (TIME DID NOT EXPIRE)    MLD
          LJM    ERRDNA      ERROR IF LAST OUTPUT IS LOST                MLD
                                                                         MLD
 WRT21    STD    D.Z2        SAVE WORDS NOT TAKEN IN FIRST LOOP          MLD
          LDD    BL                                                      MLD
          UJN    WRT23                                                   MLD
                                                                         MLD
 WRT22    STD    D.Z2                                                    MLD
          LDD    D.T2                                                    MLD
 WRT23    SBD    D.Z2                                                    MLD
          STD    WT          SET WORDS TRANSMITTED                       MLD
          LDN    0                                                       MLD
          STD    D.Z3        INDICATE ALL WORDS NOT ACCEPTED             MLD
 WRT24    AOD    D.Z1                                                    MLD
          SBD    WL                                                      MLD
          PJN    WRT19       IF NUMBER OF WORDS IN REPEAT LOOP ADDED     MLD
          LDD    BL                                                      MLD
          RAD    WT          BUMP TOTAL WORDS TRANSMITTED                MLD
          SHN    -12                                                     MLD
          RAM    WTA                                                     MLD
          UJN    WRT24                                                   MLD
 WRT20    LJM    XWRITE      EXIT TO STACK
          SPACE  4,20                                                    MLD
**        CCI    - CHECK CHANNEL INACTIVE.                               MLD
*                                                                        MLD
*         CHECK CHANNEL FOR INACTIVE IN 500 USEC.                        MLD
*                                                                        MLD
*         ENTRY  - NONE.                                                 MLD
*                                                                        MLD
*         EXIT   - (A) IS POSITIVE IF INACTIVE RECEIEVED, NEGATIVE       MLD
*                  IF NOT RECEIVED.                                      MLD
*                                                                        MLD
*         USES   - NONE.                                                 MLD
*                                                                        MLD
*         CALLS  - NONE.                                                 MLD
*                                                                        MLD
 CCIX     LJM    **          ENTRY/EXIT                                  MLD
 CCI      EQU    *-1                                                     MLD
 CCI0     LDN    1
          STD    D.Z3 
 CCI1     LDC    500
 CCI2     IJM    CCIX        EXIT IF INACTIVE RECEIVED                   MLD
 CCI3     SBN    4           *** SBN 4 IF 1X SPEED PPU ***
*         SBN    2           *** SBN 2 IF 2X SPEED PPU ***
*         SBN    1           *** SBN 1 IF 4X SPEED PPU ***
          NJN    CCI2        IF TIME IS NOT UP
          SOD    D.Z3        DECREMENT TRIP COUNTER 
          NJN    CCI1        NO-ZERO MAKE ANOTHER PASS
          UJN    CCIX        EXIT                                        MLD
          SPACE  4,20                                                    MLD
**        DEQP   - DROP EQUIPMENT                                        MLD
*                                                                        MLD
*         RELEASE THE CONNECT ON THE UNIT ASSIGNED. IF A MAINTENANCE     MLD
*         FEATURE IS CURRENTLY ACTIVE, A CONNECT FUNCTION IS ISSUED      MLD
*         (AN ACTION FUNCTION) TO CLEAR THE MAINTENANCE FEATURE.         MLD
*         A RELEASE FUNCTION IS ISSUED TO RELEASE THE UNIT.              MLD
*                                                                        MLD
*         ENTRY  - (A) = ABT ADDRESS (NEGATIVE ZERO IF FROM BASIC        MLD
*                        DRIVER).                                        MLD
*                                                                        MLD
*         EXIT   - DEVICE RELEASED AND CONNECT AND MAINTENANCE FLAGS     MLD
*                  CLEARED.                                              MLD
*                                                                        MLD
*                  ERRCAS - IF CHANNEL ACTIVE ON ENTRY.                  MLD
*                                                                        MLD
*         USES   - S1, S2, CONNECT.                                      MLD
*                                                                        MLD
*         CALLS  - FAN, MFA, CCI                                         MLD
*                                                                        MLD
 DEQPX    LJM    **                                                      MLD
 DEQP     EQU    *-1                                                     MLD
          STD    S1          SAVE ABT ADDRESS                            MLD
          SHN    -12                                                     MLD
          STD    S2                                                      MLD
          LDM    BD.CHFG                                                 MLD
          ZJN    DEQPX       EXIT IF CHANNEL IS NOT ASSIGNED             MLD
          LDD    CONNECT                                                 MLD
          ZJN    DEQPX       EXIT IF UNIT NOT CONNECTED                  MLD
          LDD    S2                                                      MLD
          SBN    77B                                                     MLD
          ZJN    DEQ3        IF RELEASE REQUEST FROM BASIC DRIVER        MLD
          AJM    ERRCAS      ERROR IF CH ACTIVE                          MLD
          LDD    MFA                                                     MLD
          ZJN    DEQ1        IF MAINTENACE FEATURES ARE NOT ACTIVE       MLD
          LDN    CONN                                                    MLD
          ADM    UN          ADD UNIT NUMBER TO CONNECT FUNCTION         MLD
          ADM    EQ          FORM CONNECT FUNCTION                       MLD
          RJM    FAN         ISSUE CONNECT FUNCTION TO CLEAR FEATURES    MLD
          LDN    0                                                       MLD
          STD    MFA         CLEAR MAINTENANCE FEATURES ACTIVE FLAGS     MLD
 DEQ1     STD    CONNECT     INDICATE UNIT NOT CONNECTED                 MLD
          LDN    RELEASE                                                 MLD
          RJM    FAN         ISSUE RELEASE FUNCTION                      MLD
 DEQ2     UJN    DEQPX       EXIT TO CALLER                              MLD
                                                                         MLD
                                                                         MLD
 DEQ3     STD    CONNECT     INDICATE UNIT NOT CONNECTED                 MLD
          STD    MFA         CLEAR MAINTENANCE FEATURES ACTIVE.          MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    DEQ2        EXIT IF ACCESS LEVEL TO BYPASS CLEANUP      MLD
          IJM    DEQ4        IF CH INACTIVE                              MLD
          DCN    40B                                                     MLD
 DEQ4     LDN    CONN                                                    MLD
          ADM    UN          ADD UNIT NUMBER TO CONNECT FUNCTION         MLD
          ADM    EQUIP       FORM CONNECT CODE                           MLD
          FAN    40B                                                     MLD
          RJM    CCI         WAIT FOR INACTIVE                           MLD
          NJN    DEQ5        IF CHANNEL INACTIVE
 DEQ4A    DCN    40B
          UJN    DEQ2        EXIT                                        MLD
  
 DEQ5     LDN    RELEASE     RELEASE UNIT FUNCTION CODE 
          ADM    EQUIP       ADD EQUIPMENT NUMBER 
          FAN    40B         ISSUE RELEASE FUNCTION 
          RJM    CCI         WAIT FOR INACTIVE
          NJN    DEQ2        EXIT IF INACTIVE RECEIVED
          UJN    DEQ4A       DCN THE CHANNEL
          SPACE  4,16                                                    MLD
**        FAN    - FUNCTION EQUIPMENT                                    MLD
*                                                                        MLD
*         SEND FUNCTION TO CONTROLLER                                    MLD
*                                                                        MLD
*         ENTRY  - (A) = FUNCTION TO ISSUE.                              MLD
*                                                                        MLD
*         EXIT   - FUNCTION ISSUED, STORED IN LF AND INACTIVE RECEIVED.  MLD
*                                                                        MLD
*                  ERRNIF - IF NO INACTIVE TO FUNCTION.                  MLD
*                                                                        MLD
*         USES   - LF                                                    MLD
*                                                                        MLD
*         CALLS  - CCI.                                                  MLD
*                                                                        MLD
 FANX     LJM    **          ENTRY/EXIT                                  MLD
 FAN      EQU    *-1                                                     MLD
          ADC    **                                                      MLD
 EQUIP    EQU    *-1         *** EQUIPMENT NUMBER STORED HERE ***        MLD
          STD    LF          SAVE (A) AS LAST FUNCTION                   MLD
          FAN    40B         SEND FUNCTION                               MLD
          RJM    CCI                                                     MLD
          NJN    FANX        EXIT IF RESPONSE RECEIVED
          LDC    ER.NIF      NO INACTIVE TO FUNCTION
          UJN    GET0A
          SPACE  4,16                                                    MLD
**        GETS   - GET STATUS                                            MLD
*                                                                        MLD
*         GET STATUS AS REQUESTED IN THE A REGISTER.                     MLD
*                                                                        MLD
*         ENTRY  - (A) = CODE FOR STATUS TO GET. 0 = ALL                 MLD
*                                                1 = GENERAL             MLD
*                                                2 = DETAIL              MLD
*                                                3 = UNIT                MLD
*                           4 =FSC SENSE BYTE 
*                                                                        MLD
*         EXIT   - STATUS STORED IN SB.  LAST STATUS FUNCTION STORED     MLD
*                  IN STATUS BUFFER.                                     MLD
*                                                                        MLD
*                  ERRNISF - IF NO INACTIVE TO STATUS FUNCTION.          MLD
*                  ERRNSR  - IF NO STATUS RETURNED.                      MLD
*                  ERRISR  - IF INCOMPLETE STATUS RETURNED.              MLD
*                                                                        MLD
*         USES   - D.Z0, D.Z3, D.Z5, SB                                  MLD
*                                                                        MLD
*         CALLS  - CCI                                                   MLD
*                                                                        MLD
 GETSX    LJM    **          ENTRY/EXIT                                  MLD
 GETS     EQU    *-1                                                     MLD
          STD    D.Z5        SAVE CODE FOR STATUS REQUESTED              MLD
          LDM    GETW,D.Z5   GET NUMBER OF WORDS OF STATUS TO INPUT      MLD
          STD    D.Z0                                                    MLD
          LDM    GETA,D.Z5   GET ADDRESS TO READ STATUS INTO             MLD
          STM    GET5        SAVE ADDRESS                                MLD
          STD    D.Z3                                                    MLD
 GET0     LCN    0                                                       MLD
          STI    D.Z3        SET STATUS WORDS TO NEGATIVE ZERO           MLD
          AOD    D.Z3        BUMP ADDRESS                                MLD
          SOD    D.Z0                                                    MLD
          NJN    GET0        IF ALL WORDS NOT DONE                       MLD
          LDM    GETC,D.Z5   FUNCTION CODE TO ISSUE                      MLD
          ADM    EQUIP       ADD EQUIPMENT NUMBER                        MLD
          FAN    40B         ISSUE STATUS REQUEST                        MLD
          STM    LSF         SAVE LAST STATUS FUNCTION                   MLD
          RJM    CCI         WAIT 500 USEC FOR INACTIVE                  MLD
          NJN    GET1        IF FUNCTION ACCEPTED 
          LDC    ER.NISF     NO INACTIVE TO STATUS FUNCTION 
 GET0A    LJM    ERR
                                                                         MLD
 GET1     ACN    40B                                                     MLD
          LDC    100
 GET2     FJM    GET4        IF STATUS IS READY                          MLD
 GET3     SBN    4           *** SBN 4 IF 1X SPEED PPU ***
*         SBN    2           *** SBN 2 IF 2X SPEED PPU ***
*         SBN    1           *** SBN 1 IF 4X SPEED PPU ***
          PJN    GET2        IF TIME IS NOT UP                           MLD
          LDC    ER.NSR      NO STATUS RETURNED 
          UJN    GET0A
                                                                         MLD
 GET4     LDM    GETW,D.Z5   WORDS TO INPUT                              MLD
          IAM    **                                                      MLD
 GET5     EQU    *-1         *** ADDRESS TO READ STATUS IS STORED HERE   MLD
          SFM    ERCPE3,CH   CHECK FOR CH PARITY ERROR
          ZJN    GET6        IF ALL WORDS PROVIDED                       MLD
          LJM    ERRISR      ERROR IF INCOMPLETE STATUS RETURNED         MLD
                                                                         MLD
 GET6     LDM    SB+1                                                    MLD
          IJM    GETSX       IF INACTIVE                                 MLD
          DCN    40B         DEACTIVATE CHANNEL                          MLD
          LJM    GETSX       EXIT TO CALLER                              MLD
                                                                         MLD
*         NUMBER OF WORDS TO READ FOR EACH STATUS TYPE                   MLD
                                                                         MLD
 GETW     DATA   16          ALL STATUS                                  MLD
          DATA   2           GENERAL STATUS                              MLD
          DATA   8           DETAIL STATUS                               MLD
          DATA   6           UNIT STATUS                                 MLD
          DATA   24B
                                                                         MLD
*         STATUS FUNCTION CODES FOR EACH STATUS TYPE                     MLD
                                                                         MLD
 GETC     CON    GS          ALL STATUS 
          CON    GS          GENERAL STATUS 
          CON    DS          DETAIL STATUS
          CON    US          UNIT STATUS
          CON    SSB         *SENSE BYTE STATUS 
                                                                         MLD
*         ADDRESS TO INPUT DATA FOR EACH STATUS TYPE                     MLD
                                                                         MLD
 GETA     CON    SB+1        ALL STATUS 
          CON    SB+1        GENERAL STATUS 
          CON    SB+3        DETAIL STATUS
          CON    SB+13B      UNIT STATUS
          CON    IB+454B
          SPACE  4,16                                                    MLD
**        OUTPAR - OUTPUT PARAMETERS                                     MLD
*                                                                        MLD
*         OUTPUT (A) UPPER PARAMETER WORDS FROM (A) LOWER                MLD
*                                                                        MLD
*         ENTRY  - UPPER 3 BITS  (A) = NUMBER OF WORDS TO OUTPUT.        MLD
*                  LOWER 12 BITS (A) = FWA OF WORDS TO OUTPUT.           MLD
*                                                                        MLD
*         EXIT   - ERRFPNA - IF FUNCTION PARAMETERS NOT ACCEPTED.        MLD
*                                                                        MLD
*         USES   - D.Z5, D.Z6.                                           MLD
*                                                                        MLD
*         CALLS  - NONE                                                  MLD
*                                                                        MLD
 OUTPARX  LJM    **          ENTRY/EXIT                                  MLD
 OUTPAR   EQU    *-1                                                     MLD
          STD    D.Z5        SAVE ADDRESS OF PARAMETERS                  MLD
          SHN    -12                                                     MLD
          ADN    1                                                       MLD
          STD    D.Z6        SET WORD COUNTER + 1                        MLD
          ACN    40B                                                     MLD
 OPP1     LDC    6000 
 OPP2     EJM    OPP4        IF CONTROLLER IS READY FOR A WORD           MLD
 OPP3     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    OPP2        IF TIME IS NOT UP                           MLD
          UJN    ERRFPNA     ERROR IF NO EMPTY ON OUTPUT
                                                                         MLD
 OPP4     IJM   OPP6         ERROR IF INACTIVE DURING OUTPUT
          SOD    D.Z6        DECREMENT LOOP COUNT                        MLD
          ZJN    OPP5        IF ALL WORDS OUTPUT                         MLD
          LDI    D.Z5        GET NEXT PARAMETER WORD                     MLD
          OAN    40B         OUTPUT PARAMETER                            MLD
          AOD    D.Z5        BUMP POINTER TO NEXT PARAMETER              MLD
          UJN    OPP1        WAIT UNTIL THIS WORD IS ACCEPTED            MLD
                                                                         MLD
 OPP5     DCN    40B                                                     MLD
          UJN    OUTPARX     EXIT TO CALLER                              MLD
  
 OPP6     LDN    0
          RJM    GETS        GET ALL STATUS 
 ERRFPNA  LDC    ER.FPNA     FUNCTION PARAMETERS NOT ACCEPTED 
          UJN    ERRUNC1     ERROR EXIT 
          SPACE  4,16                                                    MLD
**        TCA    - TEST CONTROLLER ASSIGNMENT                            MLD
*                                                                        MLD
*         SAVE ABT ADDRESS AND TEST CHANNEL/CONTROLLER ASSIGNMENT.       MLD
*                                                                        MLD
*         ENTRY  - (A) = ABT ADDRESS.                                    MLD
*                                                                        MLD
*         EXIT   - ERRCNR - IF CHANNEL NOT ASSIGNED.                     MLD
*                  ERRUNC - IF UNIT NOT CONNECTED.                       MLD
*                  ERRCAS - IF CHANNEL ACTIVE ON ENTRY.                  MLD
*                                                                        MLD
*         USES   - S1, S2                                                MLD
*                                                                        MLD
*         CALLS  - NONE.                                                 MLD
*                                                                        MLD
 TCAX     LJM    **          ENTRY/EXIT                                  MLD
 TCA      EQU    *-1                                                     MLD
          STD    S1          SAVE ABT ADDRESS                            MLD
          SHN    -12                                                     MLD
          STD    S2                                                      MLD
          LDM    BD.CHFG                                                 MLD
          NJN    TCA1        IF CHANNEL ASSIGNED                         MLD
          UJN    ERRCNR      ERROR IF CHANNEL NOT RESERVED
                                                                         MLD
 TCA1     LDD    CONNECT                                                 MLD
          NJN    TCA2        IF CONNECTED                                MLD
 ERRUNC   LDC    ER.UNC      UNIT NOT CONNECTED 
 ERRUNC1  UJN    ERRCAS1     ERROR EXIT 
                                                                         MLD
 TCA2     IJM    TCAX        EXIT IF CHANNEL INACTIVE                    MLD
          UJN    ERRCAS      ERROR IF CHANNEL ACTIVE
          SPACE  4,16                                                    MLD
**        TCAL   - TEST CONTROLLER ASSIGNMENT AND LWR                    MLD
*                                                                        MLD
*         SAVE ABT ADDRESS AND TEST CHANNEL/CONTROLLER ASSIGNMENT.       MLD
*         VERIFY NO COMMAND SEQUENCING ERROR (LWR ACTIVE).               MLD
*                                                                        MLD
*         ENTRY  - (A) = ABT ADDRESS.                                    MLD
*                                                                        MLD
*         EXIT   - CONDITIONS EXIST FOR PROPER COMMAND EXECUTION.        MLD
*                                                                        MLD
*                  ERRCSE - IF COMMAND SEQUENCING ERROR (LWR ACTIVE).    MLD
*                                                                        MLD
*         USES   - NONE.                                                 MLD
*                                                                        MLD
*         CALLS  - TCA.                                                  MLD
*                                                                        MLD
 TCALX    LJM    **          ENTRY/EXIT                                  MLD
 TCAL     EQU    *-1                                                     MLD
          RJM    TCA         TEST CONTROLLER ASSIGNMENT                  MLD
          LDD    MFA                                                     MLD
          LPN    1                                                       MLD
          ZJN    TCALX       EXIT IF LWR NOT ACTIVE                      MLD
          LJM    ERRCSE      COMMAND SEQUENCING ERROR IF ACTIVE          MLD
          SPACE  4,16                                                    MLD
**        TCHA - TEST CHANNEL ASSIGNMENT                                 MLD
*                                                                        MLD
*         SAVE ABT ADDRESS AND TEST CHANNEL ASSIGNMENT.                  MLD
*                                                                        MLD
*         ENTRY - (A) = ABT ADDRESS.                                     MLD
*                                                                        MLD
*         EXIT  - CHANNEL VERIFIED TO BE ASSIGNED AND INACTIVE.          MLD
*                                                                        MLD
*                 ERRCNR - IF CHANNEL NOT RESERVED.                      MLD
*                 ERRCAS - IF CHANNEL ACTIVE ON ENTRY.                   MLD
*                                                                        MLD
*         USES  - S1, S2                                                 MLD
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
 TCHAX    LJM    **          ENTRY/EXIT                                  MLD
 TCHA     EQU    *-1                                                     MLD
          STD    S1          SAVE ABT ADDRESS                            MLD
          SHN    -12                                                     MLD
          STD    S2                                                      MLD
          LDM    BD.CHFG                                                 MLD
          NJN    TCHA1       IF CHANNEL ASSIGNED                         MLD
 ERRCNR   LDC    ER.CNR      CHANNEL NOT RESERVED 
          UJN    ERRCAS1     ERROR EXIT 
                                                                         MLD
 TCHA1    IJM    TCHAX       EXIT IF CHANNEL INACTIVE                    MLD
 ERRCAS   LDC    ER.CAS      CHANNEL ACTIVE ON ENTRY
 ERRCAS1  UJN    WEO5A       ERROR EXIT 
          SPACE  4,16                                                    MLD
**        WEOP- WAIT END OF OP                                           MLD
*                                                                        MLD
*         REQUEST STATUS AND WAIT FOR END OF OPERATION.                  MLD
*                                                                        MLD
*         ENTRY - (A) = NUMBER OF MSEC TO WAIT FOR EOP.                  MLD
*                                                                        MLD
*         EXIT  - EOP RECEIVED AND STATUS STORED IN SB.                  MLD
*                 MAINTENANCE FEATURES ACTIVE FLAGS ARE CLEARED.         MLD
*                                                                        MLD
*                 ERRNEOP - IF NO EOP IN ALLOTTED TIME.                  MLD
*                 ERRISR  - IF INCOMPLETE STATUS RETURNED.               MLD
*                                                                        MLD
*         USES  - D.Z5, D.Z6, D.Z7, MFA, SB.                             MLD
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
 WEOPX    LJM    **          ENTRY/EXIT                                  MLD
 WEOP     EQU    *-1                                                     MLD
          STD    D.Z7        SAVE WAIT TIME                              MLD
          LDN    0                                                       MLD
          STD    MFA         CLEAR MAINTENANCE FEATURES ACTIVE FLAGS     MLD
          STD    D.Z0        CLEAR OUTSIDE LOOP COUNTER 
          LDN    77B
          STD    D.Z5 
 WEO1     LDN    GS                                                      MLD
          ADM    EQUIP                                                   MLD
          FAN    40B         SELECT GENERAL STATUS                       MLD
          STM    LSF         SAVE LAST STATUS FUNCTION                   MLD
 WEO4     LDC    1000 
 WEO2     IJM    WEO6        IF INACTIVE TO GS FUNCTION                  MLD
 WEO3     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    WEO2        WAIT                                        MLD
          SOD    D.Z7        DECREMENT MSEC TO GO                        MLD
          PJN    WEO4        IF TIME REMAINS
 WEO5     LDC    ER.NEOP     ERROR IF NO EOP IN ALLOTED TIME
 WEO5A    UJN    WEO10       ERROR EXIT 
                                                                         MLD
 WEO6     ACN    40B         FUNCTION ACCEPTED, TRY TO READ STATUS       MLD
          LDN    12 
 WEO7     FJM    WEO9        IF STATUS IS READY                          MLD
 WEO8     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    WEO7        WAIT 11 USEC                                MLD
          DCN    40B
          SOD    D.Z0 
          NJN    WEO1        IF NOT TIME UP 
          SOD    D.Z5 
          ZJN    WEO5        IF EOP TIME IS UP
          UJN    WEO1 
                                                                         MLD
 WEO9     LDN    16                                                      MLD
          IAM    SB+1        READ ALL STATUS                             MLD
          NJN    ERRISR      IF ALL WORDS NOT RECEIVED
          SFM    ERCPE3,CH   CHECK FOR CH PARITY ERROR
          LDM    SB+1                                                    MLD
          IJM    WEOPX       IF INACTIVE RECEIVED                        MLD
          DCN    40B                                                     MLD
          LJM    WEOPX                                                   MLD
                                                                         MLD
 ERRISR   LDC    ER.ISR      ERROR IF INCOMPLETE STATUS RETURNED
 WEO10    UJN    ERRAG1      ERROR EXIT 
          SPACE  4,16                                                    MLD
**        WAIT - WAIT FOR REWIND OR UNLOAD TO COMPLETE.                  MLD
*                                                                        MLD
*         WAIT UP TO 3 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 3 MINUTES IS UP.                   MLD
*                                                                        MLD
*         ENTRY - (A) = EXPECTED STATUS AT END OF OPERATION.             MLD
*                                                                        MLD
*         EXIT  - REWIND OR UNLOAD OPERATION COMPLETED AND STATUS        MLD
*                 IS IN STATUS BUFFER.                                   MLD
*                                                                        MLD
*                 ERRUHB  - IF REWIND OR UNLOAD NOT COMPLETE IN          MLD
*                           3 MINUTES.                                   MLD
*                 ERRAGS  - IF READY/LP STATUS IS NOT CORRECT ONCE       MLD
*                           BUSY DROPS.                                  MLD
*                                                                        MLD
*         USES  - SC, BD.REQP, D.T0, P.                                  MLD
*                                                                        MLD
*         CALLS - GETS, BD.REQ, RES.                                     MLD
                                                                         MLD
 WAITX    LJM    **          ENTRY/EXIT                                  MLD
 WAIT     EQU    *-1                                                     MLD
          STM    WAI2        SAVE EXPECTED STATUS                        MLD
          LDC    180                                                     MLD
          STD    SC          SET COUNTER FOR 3 MINUTES( 180 SEC)         MLD
          LDD    S2          SAVE CURRENT ABT ADDRESS                    MLD
          ADC    2000B                                                   MLD
          STM    WAI5                                                    MLD
          LDD    S1                                                      MLD
          STM    WAI5+1                                                  MLD
 WAI1     LDN    0                                                       MLD
          RJM    GETS        GET ALL STATUS                              MLD
          SHN    17-1        POSITION BUSY BIT                           MLD
          MJN    WAI3        IF STILL BUSY                               MLD
          SHN    18-16                                                   MLD
          LPN    LP+RDY                                                  MLD
          LMC    **                                                      MLD
 WAI2     EQU    *-1         *** EXPECTED LP AND RDY STATUS STORED HERE  MLD
          ZJN    WAITX       EXIT IF ACTUAL EQUALS EXPECTED              MLD
 ERRAGS   LDC    ER.AGS      ABNORMAL GENERAL STATUS
 ERRAG1   UJN    ERR         ERROR EXIT 
                                                                         MLD
 WAI3     LDN    1                                                       MLD
*IF DEF,MVE 
          STM    BD.REQP+3   SET DROP TIME
*ENDIF
*IF -DEF,MVE
          STM    BD.REQP+4   SET DROP TIME                               MLD
*ENDIF
  
          LDN    BD.DREQ                                                 MLD
          RJM    BD.REQ      REQUEST A DROP FOR 1 SECOND                 MLD
                                                                         MLD
*         CONTROL RETURNS AFTER A 1 SECOND DROP OF THE PPU               MLD
                                                                         MLD
          LDC    **                                                      MLD
 WAI4     EQU    *-1         *** LAST SELECTED RES OPTIONS STORED HERE   MLD
          STD    D.T0        INDICATE OPTIONS TO USE                     MLD
 WAI5     LDC    **          *** LOAD INSTRUCTION STORED HERE- ABT ADDR  MLD
          RJM    XRES+1      RESERVE CHANNEL AND UNIT                    MLD
          SOD    SC          DECREMENT SECONDS COUNTER                   MLD
          NJN    WAI1        IF 3 MINUTES HAS NOT ELAPSED                MLD
 ERRUHB   LDC    ER.UHB      UNIT HUNG BUSY 
          UJN    ERR         ERROR EXIT 
  
 ERCPE1   LDN    0           GET ALL STATUS 
 ERCPE2   RJM    GETS 
 ERCPE3   LDC    ER.CPE      CHANNEL PARITY ERROR 
          EJECT                                                          MLD
 ERR      STD    D.Z1        SAVE MESSAGE INDEX AND ERROR NUMBER
          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       GET ACCESS LEVEL                            MLD
          SBN    BD.AL21                                                 MLD
          ZJN    ERR3        IF SKIP CH CLEANUP REQUESTED                MLD
          DCN    40B                                                     MLD
 ERR3     LDD    D.Z1                                                    MLD
          LPN    77B                                                     MLD
          ADC    5100B       ADD 67X ERROR CODE BIAS                     MLD
          STD    EC          SAVE 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    ERR6        IF ABORT FLAG SET                           MLD
          LDD    S2                                                      MLD
          SHN    12                                                      MLD
          LMD    S1                                                      MLD
          ZJN    ERR5        IF NO ABT ADDRESS SPECIFIED                 MLD
          LJM    BD.RNI      RNI AT THE REJECT ADDRESS                   MLD
                                                                         MLD
 ERR5     LJM    BD.ERR      TERMINATE OR RESTART MODULE BASED ON SE     MLD
                                                                         MLD
 ERR6     LJM    BD.ABT      TERMINATE MODULE                            MLD
 FORMAT1  BSSZ   1
 FORMAT2  BSSZ   1
 FORMAT3  BSSZ   1
                                                                         MLD
                                                                         MLD
 IB       EQU    6550B       INPUT BUFFER                                MLD
 LIB      EQU    500B        LENGTH OF INPUT AND OUTPUT BUFFERS          MLD
 OB       EQU    IB+LIB      OUTPUT BUFFER                               MLD
 SB       EQU    OB+LIB      STATUS BUFFER                               MLD
 LSF      EQU    SB          LAST STATUS FUNCTION                        MLD
 CH       EQU    SB+17D      CHANNEL UNDER TEST                          MLD
 EQ       EQU    SB+18D      EQUIPMENT UNDER TEST                        MLD
 UN       EQU    SB+19D      UNIT UNDER TEST                             MLD
 WTA      EQU    SB+20D      UPPER BITS OF WORDS TRANSMITTED REG.        MLD
 LSB      EQU    21D         LENGTH OF STATUS BUFFER                     MLD
 SBLWA    EQU    SB+LSB      STATUS BUFFER LWA+1                         MLD
                                                                         MLD
          ERRPL  *-IB-1      ERROR IF 67X 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     LDM    BD.EQ                                                   MLD
          LPN    17B         MASK UNIT NUMBER                            MLD
          ADC    4220B       ADD IN NEW PARAMETER BITS                   MLD
          STM    FORMAT1     SET UNIT NUMBER IN FORMAT                   MLD
          LDC    2440B                                                   MLD
          STM    FORMAT2     SET NEW PARAMETER BITS                      MLD
          LDC    4000B                                                   MLD
          STM    FORMAT3                                                 MLD
          LDM    BD.EQ                                                   MLD
          LPC    7000B                                                   MLD
          STM    EQUIP       SAVE EQUIPMENT NUMBER                       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
          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
**
*         THE FOLLOWING CODE IS ASSEMBLED IF THE SYMBOL 'MVE' IS DEFINED
*         AT UPDATE TIME. THIS DEFINITION MEANS THAT THE ASSEMBLY WILL BE 
*         FOR THE NOSVE ENVIRONMENT.
* 
*         *IF DEF,MVE 
*IF DEF,MVE 
 INIT5    STD    D.T1        CLEAR CELL 
          LDC    MMSGL. 
          STD    D.T0        LENGTH OF PO MSG AREA IN 60 BIT WORDS
 INIT5.1  SBN    3           NUMBER OF 60 BIT WORDS/MESSAGE 
          MJN    INIT5.2     IF NO MESSAGES 
          STD    D.T0        UPDATED LENGTH 
          AOD    D.T1        INCREMENT MESSAGE COUNT
          LDD    D.T0 
          NJN    INIT5.1     IF MORE MESSAGES 
 INIT5.2  LDD    D.T1 
          STM    BD.MSGS     MESSAGE COUNT
**
*         WRITE PP MESSAGES TO CM 
* 
 INIT5.3  LDN    0
          STD    D.Z1 
          STD    D.Z2 
          STD    D.Z3 
          STD    S1 
 INIT6    LDM    PPMSGS,D.Z1 GET PP MESSAGE WORD
 INIT6.1  EQU    *-1         MODIFIED TO FWA OF INITIALIZATION ERROR
          ZJN    INIT8       IF END OF MESSAGE
 INIT7    STM    D.T4,D.Z2   STORE IN D.T4+ 
          AOD    D.Z1        BUMP PP MESSAGE POINTER
          UJN    INIT9
 INIT8    LDC    2R          MESSAGE END, STORE BLANKS
          STM    D.T4,D.Z2
 INIT9    AOD    D.Z2        BUMP D.T4+ POINTER 
          SBN    4
          NJN    INIT6       IF NOT 4 PP WORDS
          STD    D.Z2        CLEAR POINTER
          LDC    BD.MSGA     INDEX INTO CM COMM BUFFER TO PO MSG AREA 
          ADD    S1          BIAS TO WORD WITHIN PO MSG AREA
          STM    BD.IDEX
          LDN    BD.CMB      POINTER TO FWA OF CM COMM BUFFER 
          RJM    BD.SETR
          CWDL   D.T4        WRITE MSG WORD TO CM 
          AOD    S1          INCREMENT BIAS INTO PO MSG AREA
          AOD    D.Z3        BUMP CM WORD COUNTER 
          SBN    BD.MSGML+1  EACH MESSAGE OCCUPIES A 4 WORD CM BLOCK
          NJN    INIT6       IF NOT BD.MSGML CM WORDS 
          STD    D.Z3        CLEAR CM WORD COUNTER
          LDC    0
 INIT9.1  EQU    *-1         MODIFIED TO FWA OF INITIALIZATION ERROR
          ZJN    INIT9.2     IF NOT PO INITIALIZATION ERROR 
          LCN    0
          LJM    INIT16      PO INITIALIZATION ERROR (A) = NEG ZERO 
 INIT9.2  LDM    PPMSGS,D.Z1
          ZJN    INIT10      IF MESSAGE ENDED IN ZERO BYTE
          AOD    D.Z1        SKIP ZERO BYTE TERMINATOR
 INIT10   AOD    D.Z1        BUMP PP MESSAGE ADDRESS TO NEXT MESSAGE
          LDM    PPMSGS,D.Z1
          ZJN    INIT10.1    IF LAST MESSAGE
          LJM    INIT7       GET NEXT MESSAGE 
 INIT10.1 EQU    *
                                                                         MLD
*ENDIF
*         *ENDIF
**
  
**
*         THE FOLLOWING CODE IS ASSEMBLED IF THE SYMBOL 'MVE' IS NOT DEFINED
*         AT UPDATE TIME. THIS MEANS THAT THE ASSEMBLY WILL BE FOR THE NOS
*         OR NOSBE ENVIRONMENT. 
* 
*         *IF -DEF,MVE
*IF -DEF,MVE
*         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
*ENDIF
*         *ENDIF
**
                                                                         MLD
* 
*         SET DIRECT CELLS                                               MLD
                                                                         MLD
          STD    D.T0        CLEAR COUNTER                               MLD
          STD    S1          CLEAR ABT ADDRESS                           MLD
          STD    S2                                                      MLD
          STD    WL          CLEAR WRITE LOOP COUNT FOR LAST WRITE       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STD    BA          CLEAR BEGINNING ADDRESS REGISTER            MLD
          LDC    LIB                                                     MLD
          STD    BL          SET LENGTH OF IB AND OB                     MLD
          LDC    5000B                                                   MLD
          STD    WC          SET DEFAULT VALUE IN WORD COUNT REGISTER    MLD
 INIT11   LDN    0                                                       MLD
          STM    SB,D.T0     CLEAR STATUS BUFFER                         MLD
          AOD    D.T0                                                    MLD
          SBN    LSB                                                     MLD
          NJN    INIT11      IF ALL WORDS NOT CLEARED                    MLD
          LDM    BD.CHAN                                                 MLD
          STM    CH          SAVE CHANNEL UNDER TEST IN SB               MLD
          LDM    EQUIP                                                   MLD
          SHN    -9                                                      MLD
          STM    EQ          SAVE EQUIPMENT NUMBER UNDER TEST IN SB      MLD
          LDM    BD.EQ                                                   MLD
          LPN    17B                                                     MLD
          STM    UN          SAVE UNIT UNIT NUMBER UNDER TEST IN SB      MLD
          LDD    DC                                                      MLD
          SBN    T677                                                    MLD
          ZJN    INIT11.1 
          SBN    TFSC7-T677 
          NJN    INIT12 
          LDC    2037B
          STM    CCI1 
 INIT11.1 LDC    1100B
          STM    RES3        INDICATE A 7TK UNIT ASSIGNED                MLD
          LCN    0                                                       MLD
          STM    DTAB2       INDICATE ILLEGAL 7TK DENSITY SELECTIONS     MLD
          STM    DTAB4                                                   MLD
          LJM    INIT14 
                                                                         MLD
 INIT12   LDD    DC                                                      MLD
          SBN    T698 
          ZJN    INIT122     IF 698 TYPE UNIT 
          SBN    T679-T698
          ZJN    INIT120     IF 679 
          SBN    TGCR-T679
 INIT120  ZJN    INIT13 
          SBN    TFSC9-TGCR 
          ZJN    INIT12A     IF 9 TRK FSC 
          SBN    TISMT-TFSC9  CHECK FOR 9 TRK ISMT
          ZJN    INIT121     IF ISMT
  
          LJM    INIT15      ELSE EXIT
 INIT121  STM    RD9         PASS FOR ISMT NO PING-PONG 
          STM    RD9A        PASS FOR ISMT NO PING-PONG 
          STM    WRT10       PASS FOR ISMT NO PING-PONG 
          STM    WRT10A      PASS FOR ISMT NO PING-PONG 
          LDC    1000        TIME FOR EOP AND ISMT
          STM    RD17A
 INIT122  ADC    2000        3 SECS FOR 639 AND 2 SECS FOR 698 WRITE
          STM    WRT19A 
 INIT12A  LDC    2052B
          STM    CCI1 
          LDC    1410B
          STM    CCI0        INCREASE TIME FOR 698
 INIT13   LDC    1101B                                                   MLD
          STM    RES3        INDICATE A 9TK UNIT IS ASSIGNED             MLD
          LDN    1
          STM    DTAB1       MODIFY LEGAL DENSITY TABLE FOR 9TRACK
          LCN    0                                                       MLD
          STM    DTAB        INDICATE ILLEGAL 9TK DENSITY SELECTIONS     MLD
          STM    DTAB3                                                   MLD
 INIT14   LDN    0                                                       MLD
          UJN    INIT16      INDICATE NO ERRORS DETECTED BY INIT         MLD
                                                                         MLD
 INIT15   LDC    INITA                                                   MLD
**
*         THE FOLLOWING CODE IS ASSEMBLED IF THE SYMBOL 'MVE' IS DEFINED
*         AT UPDATE TIME. THIS DEFINITION MEANS THAT THE ASSEMBLY WILL
*         BE FOR THE NOSVE ENVIRONMENT. 
* 
*         *IF DEF,MVE 
*IF DEF,MVE 
          STM    INIT6.1
          STM    INIT9.1
          LJM    INIT5.3     PROCESS ERROR MESSAGE
*ENDIF
*         *ENDIF
**
 INIT16   LJM    START       RETURN TO BASIC DRIVER ( A=MSG OR ZERO )    MLD
          EJECT                                                          MLD
                                                                         MLD
 INITA    DIS    ,*  DC NOT SUPPORTED*                                   MLD
                                                                         MLD
*         TABLE OF PPU SPEED SWITCHES                                    MLD
                                                                         MLD
 TSPEED   CON    BKS7 
          CON    WRT9 
          CON    WRT16
          CON    CCI3 
          CON    GET3 
          CON    OPP3 
          CON    WEO3 
          CON    WEO8 
          DATA   0           END OF SPEED SWITCHES TABLE                 MLD
          EJECT                                                          MLD
          TITLE  ERROR MESSAGES                                          MLD
                                                                         MLD
 PPMSGS   EQU    *           START OF PP MESSAGES                        MLD
****                                                                     MLD
          MMSG   ER.FLE,EC.FLE,(ADDR OUT OF FL),1                        MLD
          MMSG   ER.TL,EC.TL,(I/O TIME OUT ON CH RESERVE),1              MLD
          MMSG   ER.SEE,EC.SEE,(SUBR ENTRY/EXIT ERR),1                   MLD
          MMSG   ER.WC,EC.WC,(BUFFER INDEX OR WC ERR),1                  MLD
          MMSG   ER.RES,EC.RES,(R)                                       MLD
          MMSG   ER.RES1,EC.RES1,(R)                                     MLD
          MMSG   ER.RES2,EC.RES2,(R)                                     MLD
          MMSG   ER.CNR,EC.CNR,(CH NOT RESERVED)                         MLD
          MMSG   ER.CAS,EC.CAS,(CH ACTIVE ON ENTRY)                      MLD
          MMSG   ER.NIF,EC.NIF,(NO INACTIVE TO FUNC)                     MLD
          MMSG   ER.NISF,EC.NISF,(NO INACTIVE TO STATUS FUNC)            MLD
          MMSG   ER.NSR,EC.NSR,(NO STATUS RETURNED)                      MLD
          MMSG   ER.ISR,EC.ISR,(INCOMPLETE STATUS RETURNED)              MLD
          MMSG   ER.FPNA,EC.FPNA,(FUNC PARAMS NOT ACCEPTED) 
          MMSG   ER.DNA,EC.DNA,(ALL DATA NOT ACCEPTED FROM PP)           MLD
          MMSG   ER.IDR,EC.IDR,(ALL DATA NOT RETURNED TO PP)             MLD
          MMSG   ER.UNC,EC.UNC,(UNIT NOT CONNECTED)                      MLD
          MMSG   ER.AGS,EC.AGS,(ABNORMAL GENERAL STATUS)                 MLD
          MMSG   ER.UHB,EC.UHB,(UNIT HUNG BUSY)                          MLD
          MMSG   ER.DCSM,EC.DCSM,(DC/STATUS MISMATCH) 
          MMSG   ER.NEOP,EC.NEOP,(NO EOP) 
          MMSG   ER.CSE,EC.CSE,(COMMAND SEQUENCE ERR) 
          MMSG   ER.CPE,EC.CPE,(CH PE ON INPUT) 
          MMSG   ER.POR,EC.POR,(PARAM OUT OF RANGE),1 
 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
**
*         THE FOLLOWING CODE IS ASSEMBLED IF THE SYMBOL 'MVE' IS NOT
*         DEFINED AT UPDATE TIME. THIS MEANS THAT THE ASSEMBLY IS NOT 
*         FOR THE NOSVE ENVIRONMENT.
* 
*         *IF -DEF,MVE
*IF -DEF,MVE
          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
*ENDIF
*         *ENDIF
**
  
**
*         THE FOLLOWING CODE IS ASSEMBLED IF THE SYMBOL 'MVE' IS DEFINED
*         AT UPDATE TIME. THIS MEANS THAT THE ASSEMBLY IS BEING MADE FOR
*         THE NOSVE ENVIRONMENT.
* 
*         *IF DEF,MVE 
*IF DEF,MVE 
          ERRPL  *-7773B     ERROR IF 67X OVERLAY OVERFLOW
*ENDIF
*         *ENDIF
**
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          ERRPL  *-7773B     ERROR IF 66X OVERLAY OVERFLOW               MLD
                                                                         MLD
          QUAL   *                                                       MLD
