*COMDECK,841                                                             MLD
          EJECT                                                          MLD
 541      SEGMENT POVLA                                                  MLD
          ORG    POVLA                                                   MLD
          QUAL   841                                                     MLD
*CALL,VERS
          COMMENT 841 PRODUCT OVERLAY FOR MALET "VERS"
          TITLE  HIGH LEVEL 841 DISK PRODUCT OVERLAY FOR MALET.          MLD
          EJECT                                                          MLD
**        THE PPU 841 DRIVER PORTION OF THE CUSTOMER ENGINEERING         MLD
*         PROGRAM - MALET.                                               MLD
*                                                                        MLD
*         AUTHOR  G. L. GOLDEN   77/03/30.                               MLD
*                 ENGINEERING SERVICES.                                  MLD
*                 MAINTENANCE SOFTWARE ENGINEERING.                      MLD
*                                                                        MLD
*         THE FOLLOWING COMMANDS ARE DESIGNED FOR  THE  841  DISK  SUB-  MLD
*         SYSTEMS.   541  IS  THE  PRODUCT  OVERLAY THAT EXECUTES THESE  MLD
*         COMMANDS AND IS DRIVEN BY THE INSTRUCTION STACK OF THE  MALET  MLD
*         PP  DRIVER.   REQUESTS  ARE  MADE  BY  THE  DRIVER BY STORING  MLD
*         PARAMETERS INTO PP DIRECT CELLS AND PERFORMING  A RETURN JUMP  MLD
*         TO  AN  OVERLAY  SUBROUTINE.  WHEN  THE REQUEST IS COMPLETED,  MLD
*         CONTROL IS RETURNED TO THE STACK TO EXECUTE THE NEXT COMMAND.  MLD
*         THE  841 PRODUCT OVERLAY SUPPORTS A PROGRAMMABLE INPUT BUFFER  MLD
*         (IB) OF 505B PP WORDS, AN OUTPUT BUFFER (OB) OF 505B PP WORDS  MLD
*         AND  A  STATUS BUFFER (SB) OF 7 PP WORDS.  DATA IS WRITTEN TO  MLD
*         THE DISK FROM THE OUTPUT BUFFER AND IS READ FROM THE DISK  TO  MLD
*         THE  INPUT  BUFFER.   THE  STATUS  BUFFER IS USED TO HOLD THE  MLD
*         FOLLOWING WORDS_                                               MLD
*                                                                        MLD
*           WORD 0 = EQUIPMENT STATUS                                    MLD
*           WORD 1 = 668X STATUS                                         MLD
*           WORD 2 = LAST 668X FUNCTION                                  MLD
*           WORD 3 = MILLISECONDS REQUIRED TO COMPLETE LAST SEEK         MLD
*           WORD 4 = I/O CHANNEL UNDER TEST (RIGHT JUSTIFIED)            MLD
*           WORD 5 = EQUIPMENT NUMBER UNDER TEST (RIGHT JUSTIFIED)       MLD
*           WORD 6 = UNIT NUMBER UNDER TEST (RIGHT JUSTIFIED)            MLD
*                                                                        MLD
*         THE FOLLOWING COMMANDS ARE SUPPORTED BY THIS PRODUCT OVERLAY.  MLD
*                                                                        MLD
*           READ   - SEEK AND READ 0 TO 4095 SECTORS FROM DISK TO IB.    MLD
*           READCW - SEEK AND READ CHECKWORD ON ONE SECTOR.              MLD
*           REL    - RELEASE DRIVE, CONTROLLER AND I/O CHANNEL.          MLD
*           RES    - RESERVE I/O CHANNEL, CONTROLLER AND DRIVE.          MLD
*           RESET  - MASTER CLEAR 668X TO FREE UP HUNG CONTROLLER.       MLD
*           RTNADDR- READ LAST CYLINDER ADDRESS TO IB.                   MLD
*           SEEK   - MOVE DRIVE POSITIONER.                              MLD
*           STATUS - INPUT 668X AND EQUIPMENT STATUS TO SB.              MLD
*           VERIFY - SEEK AND WRITE VERIFY 0 TO 4095 SECTORS ON DISK.    MLD
*           WRITE  - SEEK AND WRITE 0 TO 4095 SECTORS ON DISK.           MLD
*                                                                        MLD
*         ALL OUTPUTS BEGIN WITH THE FIRST WORD OF THE  OUTPUT  BUFFER,  MLD
*         OB(0),  AND  ALL READS BEGIN WITH THE FIRST WORD OF THE INPUT  MLD
*         BUFFER, IB(0).  THE WC REGISTER IS SET   TO   502B   BY   THE  MLD
*         PRODUCT OVERLAY AND IS NOT NORMALLY CHANGED. ALL  SUBROUTINES  MLD
*         IN THIS PRODUCT OVERLAY USE A COMMON ERROR EXIT SEQUENCE WHEN  MLD
*         AN  ERROR  IS  DETECTED.   THIS  SEQUENCE STORES  AN INTERNAL  MLD
*         ERROR CODE INTO THE  EC REGISTER, AN ERROR MESSAGE INDEX INTO  MLD
*         THE  EM REGISTER AND THE CURRENT P REGISTER  CONTENTS   (LINE  MLD
*         NUMBER) INTO THE  EA  REGISTER.  I/O CHANNEL CLEAN-UP  OCCURS  MLD
*         AND  A  JUMP IS MADE TO THE STATEMENT NUMBER SPECIFIED BY THE  MLD
*         ABT ADDRESS IN THE COMMAND.                                    MLD
*                                                                        MLD
          EJECT                                                          MLD
**        THE FOLLOWING TABLE DEFINES THE ERROR CODES AND MESSAGES THAT  MLD
*         MAY BE GENERATED FOR EACH COMMAND FOR 841.                     MLD
*                                                                        MLD
*                                     READ------------. .-----RTNADDR    MLD
*                                    READCW---------. . . .----SEEK      MLD
*                                   REL-----------. . . . . .---STATUS   MLD
*                                  RES----------. . . . . . . .--VERIFY  MLD
*                                 RESET-------. . . . . . . . . .-WRITE  MLD
*                                             . . . . . . . . . .        MLD
* CODE        MESSAGE                         . . . . . . . . . .        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 04  BUFFER INDEX OR WC ERR                  . . . . . X . . . .        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 10  CH NOT RESERVED                         X . . X X X X X X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 11  CH ACTIVE ON ENTRY                      X X . X X X X X X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 20  ALL DATA OUTPUT NOT ACCEPTED            . X . . . . . . X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 21  INCOMPLETE DATA RETURNED                . . . X X X . . . .        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 22  CONTROLLER NOT CONNECTED                X . . X X X X X X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 23  ACCESS LEVEL TOO LOW FOR REQ            X . . X X . . . X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 26  ABNORMAL EQUIPMENT STATUS               . . . X X X X . X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 27  UNIT HUNG BUSY ON SEEK                  . . . X X . X . X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 31  DATA COMPARE ERROR                      . . . . X . . . . .        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 33  UNIT NOT READY                          X . . X X X X . X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 34  SEEK CYL BYTE NOT ACCEPTED              . . . X X . X . X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 35  SEEK SEC/TRK BYTE NOT ACCEPTED          . . . X X . X . X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 40  668X TRANSMISSION PARITY                X X X X X X X . X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 42  668X INT OR EXT REJECT                  X X X X X X X . X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 43  NO INACTIVE TO LAST EQUIP FUNC          . X X X X X X . X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 44  NO INACTIVE TO LAST 668X FUNC           X X X X X X X X X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 45  EQUIP STATUS NOT RETURNED               X X . X X X X X X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 46  668X STATUS NOT RETURNED                X X X X X X X X X X        MLD
*     --------------------------------------- - - - - - - - - - -        MLD
* 47  ILLEGAL COMMAND OR PARAMETER            . . . X X . X . X X        MLD
*     -----------------------------------------------------------        MLD
*                                                                        MLD
          EJECT                                                          MLD
                                                                         MLD
*         EQUATES FOR ERROR CODES - FIRST 7 ARE FOR BASIC DRIVER.        MLD
                                                                         MLD
 EC.FLE   EQU    1           ADDRESS OUT OF FIELD LENGTH                 MLD
 EC.TL    EQU    2           TIME LIMIT ERROR FOR COMMUNICATIONS         MLD
 EC.SEE   EQU    3           SUBROUTINE ENTRY/EXIT ERROR                 MLD
 EC.WC    EQU    4           BUFFER REFERENCE OR WC ERROR                MLD
 EC.RES   EQU    5           RESERVED FOR BASIC DRIVER                   MLD
 EC.RES1  EQU    6           RESERVED FOR BASIC DRIVER                   MLD
 EC.RES2  EQU    7           RESERVED FOR BASIC DRIVER                   MLD
                                                                         MLD
 EC.CNR   EQU    10B         CH NOT RESERVED                             MLD
 EC.CAS   EQU    11B         CHANNEL ACTIVE ON ENTRY                     MLD
 EC.DNA   EQU    20B         ALL DATA OUTPUT NOT ACCEPTED                MLD
 EC.IDR   EQU    21B         INCOMPLETE DATA RETURNED                    MLD
 EC.CNC   EQU    22B         CONTROLLER NOT CONECTED                     MLD
 EC.ALTL  EQU    23B         ACCESS LEVEL TOO LOW FOR REQ                MLD
 EC.AES   EQU    26B         ABNORMAL EQUIPMENT STATUS                   MLD
 EC.UHB   EQU    27B         UNIT HUNG BUSY ON SEEK                      MLD
 EC.DCE   EQU    31B         DATA COMPARE ERROR                          MLD
 EC.UNR   EQU    33B         UNIT NOT READY                              MLD
 EC.CBNA  EQU    34B         SEEK CYL BYTE NOT ACCEPTED                  MLD
 EC.SBNA  EQU    35B         SEEK SEC/TRK BYTE NOT ACCEPTED              MLD
 EC.TP    EQU    40B         668X TRANSMISSION PARITY                    MLD
 EC.IER   EQU    42B         668X INT OR EXT REJECT                      MLD
 EC.NIEF  EQU    43B         NO INACTIVE TO LAST EQUIP FUNC              MLD
 EC.NI8F  EQU    44B         NO INACTIVE TO LAST 668X FUNC               MLD
 EC.ESNR  EQU    45B         EQUIP STATUS NOT RETURNED                   MLD
 EC.8SNR  EQU    46B         668X STATUS NOT RETURNED                    MLD
 EC.ILL   EQU    47B         ILLEGAL COMMAND OR PARAMETER                MLD
                                                                         MLD
*         DIRECT CELL EQUATES.                                           MLD
                                                                         MLD
 S1       EQU    60B         LOWER 12 BITS OF ABT ADDRESS                MLD
 S2       EQU    61B         UPPER 6 BITS OF ABT ADDRESS                 MLD
 CONNECT  EQU    62B         CONTROLLER CONNNECTED FLAG                  MLD
 NS       EQU    63B         NUMBER OF SECTORS INDEX                     MLD
 SC       EQU    64B         SCRATCH                                     MLD
 CYL      EQU    65B         INDEX TO CYLINDER NUMBER                    MLD
 TRK      EQU    66B         INDEX TO TRACK NUMBER                       MLD
 SEC      EQU    67B         INDEX TO SECTOR NUMBER                      MLD
          EJECT                                                          MLD
                                                                         MLD
*         EQUATES FOR EQUIPMENT FUNCTIONS.                               MLD
                                                                         MLD
 FREL     EQU    0           RELEASE AND DISCONNECT                      MLD
 FLOAD11  EQU    10B         LOAD ADDRESS 1_1 INTERLACE                  MLD
 FRTNADR  EQU    11B         RETURN ADDRESS                              MLD
 FSEOP    EQU    22B         SELECT END OF OPERATION INTERRUPT           MLD
 FCEOP    EQU    23B         CLEAR  END OF OPERATION INTERRUPT           MLD
 FSAEOP   EQU    24B         SELECT ABNORMAL END OF OPERATION INTERRUPT  MLD
 FCAEOP   EQU    25B         CLEAR  ABNORMAL END OF OPERATION INTERRUPT  MLD
 FRD      EQU    40B         READ                                        MLD
 FWR      EQU    41B         WRITE                                       MLD
 FSCOMP   EQU    42B         SEARCH COMPARE                              MLD
 FRDCHK   EQU    45B         READ CHECKWORD                              MLD
 FEOR     EQU    54B         END OF RECORD MODE                          MLD
                                                                         MLD
*         EQUATES FOR 668X FUNCTIONS.                                    MLD
                                                                         MLD
 SEL8X    EQU    2000B       SELECT 668X                                 MLD
 SELCON   EQU    1000B       SELECT MODE 1 CONNECT                       MLD
 SELOUT   EQU    1640B       SELECT OUTPUT                               MLD
 SELIN    EQU    1440B       SELECT INPUT                                MLD
 SEL8XS   EQU    1200B       SELECT 668X STATUS                          MLD
 SELEQS   EQU    1300B       SELECT EQUIPMENT STATUS                     MLD
 DSEL8X   EQU    2100B       DESELECT 668X                               MLD
 MCH8X    EQU    1700B       MASTER CLEAR 668X                           MLD
                                                                         MLD
*         STATUS BIT EQUATES.                                            MLD
                                                                         MLD
 RDY      EQU    1           UNIT READY                                  MLD
 BSY      EQU    2           UNIT BUSY                                   MLD
 POSRDY   EQU    200B        POSITIONER READY                            MLD
 EOP      EQU    400B        END OF OPERATION INTERRUPT                  MLD
                                                                         MLD
*         DEVICE CODES SUPPORTED.                                        MLD
                                                                         MLD
 T841     EQU    1           841                                         MLD
                                                                         MLD
*         EQUATES FOR USE BY OVERLAY.                                    MLD
                                                                         MLD
 MAXSECW  EQU    503B        MAXIMUM SECTOR WORD SIZE + 1                MLD
 MAXWRDS  EQU    502B        MAXIMUM SECTOR WORD SIZE                    MLD
 MAXSEC   EQU    16B         MAXIMUM SECTOR NUMBERS + 1                  MLD
 MAXTRK   EQU    24B         MAXIMUM TRACK NUMBERS + 1                   MLD
 MAXCYL   EQU    313B        MAXIMUM CYLINDER NUMBERS + 1                MLD
 PREA1    EQU    311B        PREALOCATED CYLINDER                        MLD
 PREA2    EQU    312B        PREALOCATED CYLINDER                        MLD
          EJECT                                                          MLD
**        ERROR MESSAGES - WRITTEN TO CM DURING INITIALIZATION.          MLD
*                                                                        MLD
*         MMSG MARCO.                                                    MLD
*                                                                        MLD
*         MMSG  MACRO  NAME,ECODE,MSG,FABT                               MLD
*                                                                        MLD
*         NAME = 6/FABT,6/MESSAGE ORDINAL,6/ECODE.                       MLD
*                                                                        MLD
*         ECODE = ERROR CODE TO BE ASSIGNED (6 BITS).                    MLD
*                                                                        MLD
*         MSG = ERROR MESSAGE (40 CHARACTERS).                           MLD
*                                                                        MLD
*         FABT = FORCE ABORT (UPPER 6 BITS OF NAME.                      MLD
*                                                                        MLD
          PURGMAC MMSG                                                   MLD
 MMSG     MACRO  NAME,ECODE,MSG,FABT                                     MLD
          IF     -DEF,MMSGORD,1                                          MLD
 MMSGORD  SET    0                        INITIALIZE ORDINAL             MLD
          IFC    EQ,$FABT$$,2             TEST FOR NO FORCE ABORT        MLD
 NAME     EQU    MMSGORD*100B+ECODE                                      MLD
          ELSE   1                                                       MLD
 NAME     EQU    FABT*10000B+MMSGORD*100B+ECODE                          MLD
 MMSGBGN  SET    *                        SAVE CURRENT ADDRESS           MLD
          IFC    EQ,$MSG$$,2              TEST NULL MESSAGE              MLD
          DATA   1H                       INSURE DATA ITEM               MLD
          ELSE   1                                                       MLD
          DATA   H$MSG$                   STORE MESSAGE                  MLD
          DATA   0                        SET END OF MESSAGE             MLD
          IFGT   *-MMSGBGN,BD.MSGML*5+1,1 TEST MESSAGE TOO LONG          MLD
 P        ERR    MESSAGE TOO LONG                                        MLD
 MMSGORD  SET    MMSGORD+1                BUMP ORDINAL                   MLD
          IFGT   MMSGORD,BD.MSGMN,1       TEST TOO MANY MESSAGES         MLD
 P        ERR    TOO MANY MESSAGES                                       MLD
 MMSGL    SET    MMSGORD*BD.MSGML         SET CM WORD COUNT              MLD
          ENDM                                                           MLD
          EJECT                                                          MLD
 START    LJM    **          ENTRY POINT FOR OVERLAY INITIALIZATION      MLD
          LJM    INIT                                                    MLD
                                                                         MLD
          VFD    12/IB       FWA OF INPUT BUFFER                         MLD
          VFD    12/OB       FWA OF OUTPUT BUFFER                        MLD
          VFD    12/SB       FWA OF STATUS BUFFER                        MLD
          VFD    12/LIB      LENGTH OF INPUT BUFFER                      MLD
          VFD    12/LIB      LENGTH OF OUTPUT BUFFER                     MLD
          VFD    12/LSB      LENGTH OF STATUS BUFFER                     MLD
          VFD    12/BD.VERS  VERSION NUMBER 
                                                                         MLD
*         FIXED ADDRESS TABLE OF SUBROUTINE ENTRY POINTS.                MLD
                                                                         MLD
 XREL     LJM    **                                                      MLD
          LJM    REL         RELEASE SUBROUTINE                          MLD
 XRES     LJM    **                                                      MLD
          LJM    RES         RESERVE SUBROUTINE                          MLD
 XREAD    LJM    **                                                      MLD
          LJM    READ        READ SUBROUTINE                             MLD
 XREADCW  LJM    **                                                      MLD
          LJM    READCW      READ CHECKWORD SUBROUTINE                   MLD
 XRESET   LJM    **                                                      MLD
          LJM    RESET       MASTER CLEAR 668X SUBROUTINE                MLD
 XRTNADR  LJM    **                                                      MLD
          LJM    RTNADR      READ LAST CYL ADDR  SUBROUTINE              MLD
 XSEEK    LJM    **                                                      MLD
          LJM    SEEK        SEEK SUBROUTINE                             MLD
 XSTATUS  LJM    **                                                      MLD
          LJM    STATUS      STATUS SUBROUTINE                           MLD
 XVERIFY  LJM    **                                                      MLD
          LJM    VERIFY      VERIFY SUBROUTINE                           MLD
 XWRITE   LJM    **                                                      MLD
          LJM    WRITE       WRITE SUBROUTINE                            MLD
          EJECT                                                          MLD
**        REL - RELEASE I/O CHANNEL.                                     MLD
*                                                                        MLD
*         THIS COMMAND IS USED TO RELEASE THE DRIVE, CONTROLLER AND I/O  MLD
*         CHANNEL IF THEY ARE CURRENTLY ASSIGNED AND  COMMUNICATE  WITH  MLD
*         THE  OPERATING SYSTEM AND THE MALET EXECUTIVE.                 MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - DEVICE CONNECT HAS BEEN RELEASED IF A 3000 DEVICE       MLD
*                IS ASSIGNED, AND THE CHANNEL IS RELEASED TO THE SYSTEM. MLD
*                                                                        MLD
*         USES - P.                                                      MLD
*                                                                        MLD
*         CALLS- BD.DCH, DEQP.                                           MLD
*                                                                        MLD
 REL      RJM    DEQP        DISCONNECT EQUIPMENT IF CONNECTED           MLD
          RJM    BD.DCH      DROP CHANNEL/TALK TO SYSTEM AND EXEC        MLD
          LJM    XREL        EXIT TO CALLER                              MLD
          SPACE  4,16                                                    MLD
**        RES, ABT Z                                                     MLD
*                                                                        MLD
*         THIS  COMMAND  IS  USED TO RESERVE AN I/O CHANNEL, CONTROLLER  MLD
*         AND DRIVE FROM THE OPERATING SYSTEM.                           MLD
*                                                                        MLD
*         ENTRY- (A) = ABT ADDRESS.                                      MLD
*                                                                        MLD
*         EXIT - I/O CHANNEL ASSIGNED AND CHANNEL ASSIGNED FLAGS ARE SET MLD
*                IN ALL THE OTHER SUBROUTINES.                           MLD
*                                                                        MLD
*                ERRCAS  - IF CHANNEL ACTIVE FROM SYSTEM.                MLD
*                ERRNI8F - IF NO INACTIVE TO 668X FUNCTION.              MLD
*                ERRESNR - IF EQUIPMENT STATUS NOT RETURNED.             MLD
*                ERRDNA  - IF CONNECT CODE NOT ACCEPTED.                 MLD
*                                                                        MLD
*         USES - SB, EC, EA, EM, L8, P.                                  MLD
*                                                                        MLD
*         CALLS- DEQP, BD.RCH, FAN.                                      MLD
*                                                                        MLD
                                                                         MLD
**        1. PERFORM THE RELEASE SEQUENCE IF THE UNIT IS CONNECTED.      MLD
*            CLEAR ERROR EXIT REGISTERS.                                 MLD
                                                                         MLD
 RES      RJM    DEQP        DISCONNECT EQUIPMENT IF CONNECTED           MLD
          LDN    0                                                       MLD
          STD    EC          CLEAR ERROR REGISTERS                       MLD
          STD    EA                                                      MLD
          STD    EM                                                      MLD
          RJM    BD.RCH      DROP/REQUEST CHANNEL AS REQUESTED           MLD
          AJM    ERRCAS      ERROR IF CHANNEL ACTIVE FROM SYSTEM         MLD
                                                                         MLD
**        2. SELECT THE 668X WITH A 2000 FUNCTION.                       MLD
                                                                         MLD
          LDC    SEL8X                                                   MLD
          FAN    40B         SELECT 668X                                 MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
                                                                         MLD
**        3. IF THE EQUIPMENT NUMBER OF THE CONTROLLER IS 4 THRU 7, A    MLD
*            MODE I CONNECT IS ISSUED. OTHERWISE,  ISSUE  A  MODE  II    MLD
*            CONNECT FUNCTION (1000) AND OUTPUT THE CONNECT CODE.        MLD
                                                                         MLD
 RES1     UJN    RES3        *** JUMP INSTRUCTION IF EQUIP 0 THRU 3      MLD
*         DATA   0           *** DATA 0 IF EQUIPMENT IS 4 THRU 7         MLD
          LDC    **          CONNECT CODE STORED HERE                    MLD
 RES2     EQU    *-1                                                     MLD
          RJM    FAN         CONNECT                                     MLD
          UJN    RES6                                                    MLD
                                                                         MLD
*            COMPLETE CONNECT SEQUENCE FOR  EQUIPMENTS 0 THRU 3          MLD
                                                                         MLD
 RES3     LDC    SELCON                                                  MLD
          FAN    40B         SELECT MODE II CONNECT                      MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ACN    40B                                                     MLD
          LDM    RES2        CONNECT CODE                                MLD
          OAN    40B         OUTPUT CONNECT CODE                         MLD
          LDC    128         WAIT FOR 64 USEC 
 RES4     EJM    RES6        IF CONNECT CODE ACCEPTED                    MLD
 RES5     SBN    4           *** SBN 4 IF 1X SPEED PPU ***
*         SBN    2           *** SBN 2 IF 2X SPEED PPU ***
*         SBN    1           *** SBN 1 IF 4X SPEED PPU ***
          PJN    RES4        IF TIME IS NOT UP                           MLD
          LJM    ERRDNA      ERROR IF CONNECT CODE NOT ACCEPTED          MLD
                                                                         MLD
**        4. SET THE CONNECTED FLAG.                                     MLD
                                                                         MLD
 RES6     LDN    1                                                       MLD
          STD    CONNECT     SET THE CONNECTED FLAG                      MLD
          LDN    FEOR                                                    MLD
          RJM    FAN         SELECT END OF RECORD MODE                   MLD
          LDC    SELEQS                                                  MLD
          FAN    40B         SELECT EQUIPMENT STATUS                     MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO EQUIPMENT STATUS    MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERRESNR     ERROR IF STATUS NOT RETURNED                MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB                                                      MLD
          LJM    XRES        EXIT TO STACK                               MLD
          SPACE  4,24                                                    MLD
**        READ V SECTORS AT CYL W TRK X SEC Y, ABT Z                     MLD
*         READ V CODED SECTORS AT CYL W TRK X SEC Y, ABT Z               MLD
*                                                                        MLD
*         THIS  COMMAND  IS  USED  TO  SEEK  TO THE CYLINDER, TRACK AND  MLD
*         SECTOR SPECIFIED BY REGISTERS W/X/Y AND TO READ THE NUMBER OF  MLD
*         SECTORS  SPECIFIED BY REGISTER V IN A 2_1 INTERLACE MODE OR    MLD
*         UNTIL END OF CYLINDER.                                         MLD
*                                                                        MLD
*         ENTRY -  ((SEC)) = SECTOR TO READ.                             MLD
*                  ((TRK)) = TRACK TO READ.                              MLD
*                  ((CYL)) = CYLINDER TO READ.                           MLD
*                  (A)     = ABT ADDRESS.                                MLD
*                  (D.T0)  = CODED FLAG.                                 MLD
*                  (NS)    = NUMBER OF SECTORS TO READ.                  MLD
*                                                                        MLD
*         EXIT  -  IF END OF CYLINDER ENCOUNTERED IN UPDATING POSITION   MLD
*                  READ UPDATES P SETS SECTOR AND TRACK TO MAXIMUM THEN  MLD
*                  RETURNS TO STACK.                                     MLD
*                                                                        MLD
*                  ERRDCE - IF DATA COMPARE ERROR.                       MLD
*                                                                        MLD
*         USES  -  SC, NS, P.                                            MLD
*                                                                        MLD
*         CALLS - TCA, SEEKER, RDIN, UPOS.                               MLD
*                                                                        MLD
                                                                         MLD
**        1. VERIFY THE DRIVE IS CONNECTED.                              MLD
*                                                                        MLD
 READ     RJM    TCA         TEST CONTROLLER ASSIGNMENT                  MLD
          LDC    IB                                                      MLD
          STM    RDI1                                                    MLD
          LDC    MAXWRDS                                                 MLD
          STD    SC                                                      MLD
                                                                         MLD
**        2. VALIDATE  ACCESS  TO  THE  CYLINDER  SPECIFIED  BY W AND    MLD
*            EXECUTE THE SEEK SEQUENCE TO MOVE THE DISK POSITIONER.      MLD
*                                                                        MLD
 RED2     LDN    0           ACCESS FOR READ                             MLD
          RJM    SEEKER                                                  MLD
                                                                         MLD
**        3. EXECUTE A NORMAL EXIT IF THE CONTENTS OF REGISTER  V  IS    MLD
*            ZERO (NO SECTORS TO READ).                                  MLD
*                                                                        MLD
          LDI    NS          GET NUMBER OF SECTORS                       MLD
          NJN    RED4                                                    MLD
 RED3     LJM    XREAD       EXIT TO STACK
                                                                         MLD
**        4. CALL RDIN TO READ THE NEXT SECTOR, THEN STEP 5.             MLD
*                                                                        MLD
 RED4     LDN    FRD         LOAD FUNCTION FOR READ                      MLD
          RJM    RDIN                                                    MLD
                                                                         MLD
**        5. IF THE KEYWORD CODED IS SPECIFIED IN THE  READ  COMMAND,    MLD
*            COMPARE THE FOLLOWING WORDS_                                MLD
*                                                                        MLD
*               IB(1) = REGISTER W (CYLINDER)                            MLD
*               IB(2) = REGISTER X (TRACK)                               MLD
*               IB(3) = REGISTER Y (SECTOR)                              MLD
*                                                                        MLD
*            EXECUTE  THE  ERROR  EXIT SEQUENCE IF A COMPARE ERROR IS    MLD
*            DETECTED.                                                   MLD
*                                                                        MLD
 RED5     LDD    D.T0        GET CODED FLAG                              MLD
          ZJN    RED7                                                    MLD
          LDI    CYL                                                     MLD
          LMM    IB+1                                                    MLD
          NJN    RED6        IF NO COMPARE ON CYLINDER                   MLD
          LDI    TRK                                                     MLD
          LMM    IB+2                                                    MLD
          NJN    RED6        IF NO COMPARE ON TRACK                      MLD
          LDI    SEC                                                     MLD
          LMM    IB+3                                                    MLD
          ZJN    RED7        IF SECTOR COMPARES                          MLD
 RED6     LJM    ERRDCE                                                  MLD
                                                                         MLD
**        6. CHECK  THE  CONTENTS  OF  REGISTER V AND EXECUTE A NORMAL   MLD
*            EXIT IF IT IS ZERO.                                         MLD
*                                                                        MLD
 RED7     SOI    NS                                                      MLD
          ZJN    RED3        IF NOT DONE YET                             MLD
                                                                         MLD
**        7. UPDATE THE CONTENTS OF REGISTERS W,X AND Y  TO  POINT  TO   MLD
*            THE NEXT SECTOR TO PROCESS, THEN STEP 4.                    MLD
*                                                                        MLD
 RED8     RJM    UPOS        UPDATE POSITION                             MLD
          MJN    RED4                                                    MLD
          LJM    RED3        CYLINDER CHANGE GO TO RETURN                MLD
          SPACE  4,20                                                    MLD
**        READCW CYL W TRK X SEC Y, ABT Z                                MLD
*                                                                        MLD
*         THIS  COMMAND  IS  USED  TO  SEEK  TO THE CYLINDER, TRACK AND  MLD
*         SECTOR SPECIFIED BY REGISTERS W/X/Y AND PERFORM A READ CHECK-  MLD
*         WORD  OPERATION  ON  ONE SECTOR IN A 2_1 INTERLACE MODE.  THE  MLD
*         READ CHECKWORD SEQUENCE READS 503B WORDS OF DATA FROM DISK TO  MLD
*         THE  PP  INPUT  BUFFER  (IB).                                  MLD
*                                                                        MLD
*         ENTRY -  ((SEC)) = SECTOR TO READ.                             MLD
*                  ((TRK)) = TRACK TO READ.                              MLD
*                  ((CYL)) = CYLINDER TO READ.                           MLD
*                  (A)     = ABT ADDRESS.                                MLD
*                                                                        MLD
*         EXIT   -  NONE.                                                MLD
*                                                                        MLD
*         USES   -  SC, D.T1, P.                                         MLD
*                                                                        MLD
*         CALLS  - SEEKER, TCA, RDIN.                                    MLD
*                                                                        MLD
                                                                         MLD
**        1. VERIFY THAT THE DRIVE IS CONNECTED.                         MLD
*                                                                        MLD
 READCW   RJM    TCA         TEST EQUIPMENT CONNECTED                    MLD
          LDC    IB                                                      MLD
          STM    RDI1        STORE ADDRESS FOR INPUT                     MLD
                                                                         MLD
**        2. VALIDATE ACCESS TO  THE  CYLINDER  SPECIFIED  BY  W  AND    MLD
*            EXECUTE THE SEEK SEQUENCE TO MOVE THE DISK POSITIONER.      MLD
*                                                                        MLD
          LDC    MAXSECW                                                 MLD
          STD    SC          STORE WORD COUNT FOR READ CHECKWORD         MLD
          LDN    0           ACCESS FOR READ                             MLD
          RJM    SEEKER                                                  MLD
                                                                         MLD
**        3. CALL RDIN TO READ IN THE CHECKWORD INTO THE INPUT BUFFER.   MLD
*                                                                        MLD
          LDN    FRDCHK      LOAD FUNCTION FOR CHECK WORD READ           MLD
          RJM    RDIN                                                    MLD
                                                                         MLD
**        4. ADVANCE P ADDRESS AND RETURN TO STACK.                      MLD
*                                                                        MLD
          LJM    XREADCW     RETURN                                      MLD
          SPACE  4,16                                                    MLD
**        RESET, ABT Z                                                   MLD
*                                                                        MLD
*         THIS  COMMAND  IS  USED  TO REINITIALIZE A HUNG CONTROLLER BY  MLD
*         ISSUING A MASTER CLEAR FUNCTION (1700) TO THE 668X.            MLD
*                                                                        MLD
*         ENTRY  - (A) = ABT ADDRESS.                                    MLD
*                                                                        MLD
*         EXIT   - CONNECT - 0  CONNECT SET TO NOT CONNDECTED.           MLD
*                  SB      - EQUIPMENT STATUS.                           MLD
*                  SB+1    - 668X STATUS.                                MLD
*                  L8      - LAST 668X FUNCTION.                         MLD
*                                                                        MLD
*                  ERRNI8F - IF NO INACTIVE ON FUNCTION.                 MLD
*                  ERRALTL - IF ACCESS LEVEL TOO LOW.                    MLD
*                  ERRESNR - IF EQUIPMENT STATUS NOT RETURNED.           MLD
*                  ERR8SNR - IF 668X STATUS NOT RETURNED.                MLD
*                  ERRIER  - IF 668X INTERNAL/EXTERNAL REJECT.           MLD
*                  ERRTP   - IF 668X TRANMISSION PARITY.                 MLD
*                                                                        MLD
*         USES  -  L8, CONNECT, P, SB, SB+1.                             MLD
*                                                                        MLD
*         CALLS - TCA.                                                   MLD
*                                                                        MLD
                                                                         MLD
**        1. TEST CONTROLLER CONNECTED, TEST ACCESS LEVEL IF HIGH ENOUGH MLD
*            FOR MASTER CLEAR IF YES THEN STEP 2, ELSE GO TO ERRALTL.    MLD
*                                                                        MLD
 RESET    RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDD    BD.AL                                                   MLD
          SBN    MCAL                                                    MLD
          PJN    RSE1        IF ACCESS OK                                MLD
          LJM    ERRALTL     ACCESS LEVEL TOO LOW FOR REQUEST            MLD
                                                                         MLD
**        2. SEND MASTER CLEAR TO 841, IF ACCEPTED THEN STEP 3, ELSE     MLD
*            ERRNI8F.                                                    MLD
*                                                                        MLD
 RSE1     LDC    MCH8X                                                   MLD
          FAN    40B                                                     MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     NO INACTIVE TO FUNCTION                     MLD
                                                                         MLD
**        3. CLEAR CONNECT FLAG, DELAY 200 USEC THEN INPUT EQUIPMENT     MLD
*            STATUS AND 668X STATUS.                                     MLD
*                                                                        MLD
          LDN    0                                                       MLD
          STD    CONNECT     CLEAR CONNECT                               MLD
          LDC    200         DELAY 100USEC
 RSE2     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    RSE2                                                    MLD
          LDC    SELEQS                                                  MLD
          FAN    40B         SELECT EQUIPMENT STATUS                     MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO EQUIPMENT STATUS    MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERRESNR     ERROR IF STATUS NOT RETURNED                MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB                                                      MLD
          LDC    SEL8XS                                                  MLD
          FAN    40B         SELECT 668X STATUS                          MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO STATUS FUNCTION     MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERR8SNR     ERROR IF 668X STATUS NOT RETURNED           MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB+1        STORE 668X STATUS                           MLD
          LPN    7                                                       MLD
          ZJN    RSE4        IF NO ERRORS                                MLD
          SHN    15                                                      MLD
          MJN    RSE3        IF TRANSMISSION PARITY ERROR                MLD
          LJM    ERRIER      ERROR INTERNAL/EXTERNAL REJECT              MLD
                                                                         MLD
 RSE3     LJM    ERRTP       ERROR XMSN PARITY ERROR                     MLD
                                                                         MLD
**        4. ADVANCE P THEN RETURN.                                      MLD
*                                                                        MLD
 RSE4     LJM    XRESET      EXIT TO STACK
                                                                         MLD
 MCAL     EQU    20B         ACCESS LEVEL FOR MASTER CLEARS ON CHANNEL   MLD
          SPACE 4,18                                                     MLD
**        RTNADDR TO Y, ABT Z                                            MLD
*                                                                        MLD
*         THIS  COMMAND IS USED TO PERFORM A RETURN ADDRESS FUNCTION BY  MLD
*         READING TWO WORDS FROM THE 841  SUBSYSTEM  TO  THE  PP  INPUT  MLD
*         BUFFER STARTING AT THE ADDRESS SPECIFIED BY Y. IE_ IB(20) THE  MLD
*         WORDS READ ARE THE DISK ADDRESS RECEIVED BY THE  841  ON  THE  MLD
*         LAST SEEK FUNCTION.                                            MLD
*                                                                        MLD
*         ENTRY  - (A)    = ABT ADDRESS.                                 MLD
*                  (D.T0) = ADDRESS TO STORE DATA.                       MLD
*                                                                        MLD
*         EXIT   - ERRWC - ERROR IF WC TOO LARGE ON IB ADDRESS.          MLD
*                                                                        MLD
*         USES   - SC, P, RDI1.                                          MLD
*                                                                        MLD
*         CALLS  - RDIN.                                                 MLD
*                                                                        MLD
                                                                         MLD
**        1. TEST CHANNEL ASSIGNMENT THEN STEP 2.                        MLD
                                                                         MLD
 RTNADR   RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDD    D.T0                                                    MLD
          STM    RDI1        STORE INPUT ADDRESS                         MLD
                                                                         MLD
**        2. TEST IF ADDRESS IN RANGE IF YES THEN STEP 3, ELSE JUMP TO   MLD
*            ERRWC.                                                      MLD
*                                                                        MLD
          ADC    -IB                                                     MLD
          PJN    RTN2        IF .GE. IB                                  MLD
 RTN1     LJM    ERRWC       ILLEAGL COMMAND OR PARAMETER                MLD
                                                                         MLD
 RTN2     ADN    1                                                       MLD
          ADC    -LIB                                                    MLD
          PJN    RTN1        IF .GE. IB(504B)                            MLD
                                                                         MLD
**        3. CALL RDIN TO FUNCTION CONTROLLER FOR RETURN ADDRESS AND     MLD
*            INPUT DATA THEN ADVANCE P AND RETURN.                       MLD
                                                                         MLD
          LDN    2                                                       MLD
          STD    SC          (SC) = WORD COUNT FOR READ                  MLD
          LDN    FRTNADR                                                 MLD
          RJM    RDIN        GO GET ADDRESS DATA                         MLD
          LJM    XRTNADR     EXIT TO STACK                               MLD
          SPACE  4,18                                                    MLD
**        SEEK CYL W TRK X SEC Y, ABT Z                                  MLD
*                                                                        MLD
*         THIS COMMAND IS USED TO PERFORM A 1_1 INTERLACE SEEK SEQUENCE  MLD
*         TO  CYLINDER W TRACK X SECTOR Y.                               MLD
*                                                                        MLD
*         ENTRY -  ((SEC)) = SECTOR TO SEEK.                             MLD
*                  ((TRK)) = TRACK TO SEEK.                              MLD
*                  ((CYL)) = CYLINDER TO SEEK.                           MLD
*                  (A)     = ABT ADDRESS.                                MLD
*                                                                        MLD
*         EXIT  -  ADVANCE P COUNTER.                                    MLD
*                                                                        MLD
*         USES  -  P.                                                    MLD
*                                                                        MLD
*         CALLS -  TCA, SEEKER.                                          MLD
*                                                                        MLD
                                                                         MLD
**        1. VERIFY  THAT THE CONTROLLER IS CONNECTED (CONNECTED FLAG    MLD
*            IS SET).                                                    MLD
*                                                                        MLD
 SEEK     RJM    TCA         TEST CONTROLLER CONNECTED                   MLD
                                                                         MLD
**        2. CALL SEEKER TO POSITION DISK, THEN ADVANCE P, THEN RETURN.  MLD
*                                                                        MLD
          LDN    2           FLAG SEEK                                   MLD
          RJM    SEEKER                                                  MLD
          LJM    XSEEK       EXIT TO STACK                               MLD
          SPACE  4,14                                                    MLD
**        STATUS ,ABT Z                                                  MLD
*                                                                        MLD
*         THIS  COMMAND IS USED TO REQUEST AND INPUT 668X AND EQUIPMENT  MLD
*         STATUS TO THE PP  STATUS BUFFER (SB).                          MLD
*                                                                        MLD
*         ENTRY - (A) = ABT ADDRESS.                                     MLD
*                                                                        MLD
*         EXIT  - ERRNI8F - IF NO INACTIVE TO STATUS FUNCTION.           MLD
*                 ERR8SNR - IF 668X STATUS NOT RETURNED.                 MLD
*                                                                        MLD
*         USES  - P, L8, SB+1.                                           MLD
*                                                                        MLD
*         CALLS - TCA.                                                   MLD
*                                                                        MLD
 STATUS   RJM    TCA                                                     MLD
          LDC    SEL8XS                                                  MLD
          FAN    40B         SELECT 668X STATUS                          MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO STATUS FUNCTION     MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERR8SNR     ERROR IF 668X STATUS NOT RETURNED           MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB+1        SAVE STATUS IN SB+1                         MLD
          LJM    XSTATUS     EXIT TO STACK                               MLD
          SPACE  4,24                                                    MLD
**        VERIFY V SECTORS AT CYL W TRK X SEC Y, ABT Z                   MLD
*         VERIFY V CODED SECTORS AT CYL W TRK X SEC Y, ABT Z             MLD
*                                                                        MLD
*         THIS COMMAND IS USED TO  SEEK  TO  THE  CYLINDER,  TRACK  AND  MLD
*         SECTOR  SPECIFIED  BY  REGISTERS  W/X/Y  AND WRITE VERIFY THE  MLD
*         NUMBER OF SECTORS SPECIFIED BY REGISTER V IN A 2_1  INTERLACE  MLD
*         MODE OR UNTIL END OF CYLINDER.                                 MLD
*                                                                        MLD
*         ENTRY -  ((SEC)) = SECTOR TO VERIFY.                           MLD
*                  ((TRK)) = TRACK TO VERIFY.                            MLD
*                  ((CYL)) = CYLINDER TO VERIFY.                         MLD
*                  (A)     = ABT ADDRESS.                                MLD
*                  (D.T0)  = CODED FLAG.                                 MLD
*                  (NS)    = NUMBER OF SECTORS TO VERIFY.                MLD
*                                                                        MLD
*         EXIT  -  IF END OF CYLINDER ENCOUNTERED IN UPDATING POSITION   MLD
*                  VERIFY UPDATES P SETS SECTOR AND TRACK TO MAXIMUM     MLD
*                  THEN RETURNS TO STACK.                                MLD
*                                                                        MLD
*         USES  - P, NS, OB+1, OB+2, OB+3, WT.                           MLD
*                                                                        MLD
*         CALLS - TCA, SEEKER, FAN, UPOS, OUT.                           MLD
*                                                                        MLD
                                                                         MLD
**        1. VERIFY THE DRIVE IS CONNECTED.                              MLD
*                                                                        MLD
 VERIFY   RJM    TCA         TEST CONTROLLER CONNECTED                   MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSFERRED                     MLD
          LDC    MAXWRDS                                                 MLD
          STD    SC                                                      MLD
                                                                         MLD
**        2. VALIDATE  ACCESS  TO  THE  CYLINDER  SPECIFIED  BY W AND    MLD
*            EXECUTE THE SEEK SEQUENCE TO MOVE THE DISK POSITIONER.      MLD
*                                                                        MLD
 VER2     LDN    1           FLAG FOR WRITE                              MLD
          RJM    SEEKER                                                  MLD
                                                                         MLD
**        3. EXECUTE  A  NORMAL EXIT IF THE CONTENTS OF REGISTER V IS    MLD
*            ZERO (NO SECTORS TO VERIFY).                                MLD
*                                                                        MLD
          LDI    NS                                                      MLD
          NJN    VER4        IF SECTORS TO VERIFY                        MLD
 VER3     LJM    XVERIFY     EXIT TO STACK
                                                                         MLD
**        4. ISSUE AN SEARCH COMPARE FUNCTION (0042).                    MLD
*                                                                        MLD
 VER4     LDN    FSCOMP                                                  MLD
          RJM    FAN         SEND SEARCH COMPARE FUNCTION                MLD
                                                                         MLD
**        5. IF THE  KEYWORD  CODED  IS PRESENT, STORE THE  FOLLOWING    MLD
*            DATA INTO THE PP OUTPUT BUFFER.                             MLD
*                                                                        MLD
*                  OB(1) = REGISTER W (CYLINDER)                         MLD
*                  OB(2) = REGISTER X (TRACK)                            MLD
*                  OB(3) = REGISTER Y (SECTOR)                           MLD
*                                                                        MLD
          LDD    D.T0        GET CODED FLAG                              MLD
          ZJN    VER5        IF NOT CODED                                MLD
          LDI    CYL                                                     MLD
          STM    OB+1        STORE CYLINER                               MLD
          LDI    TRK                                                     MLD
          STM    OB+2        STORE TRACK                                 MLD
          LDI    SEC                                                     MLD
          STM    OB+3        STORE SECTOR                                MLD
                                                                         MLD
**        6. CALL OUT TO OUTPUT ONE SECTOR, THEN STEP 7.                 MLD
*                                                                        MLD
 VER5     RJM    OUT                                                     MLD
                                                                         MLD
**        7. DECREMENT THE CONTENTS OF REGISTER V (SECTORS TO VERIFY)    MLD
*            BY ONE.  PERFORM A NORMAL EXIT IF IT IS ZERO.               MLD
*                                                                        MLD
          SOI    NS                                                      MLD
          ZJN    VER3        IF NOT DONE YET                             MLD
                                                                         MLD
**        8. CALL UPOS TO BUMP REGISTERS W,X AND Y PER THE 2_1           MLD
*            INTERLACE TO  POINT  TO THE NEXT SECTOR TO PROCESS, THEN    MLD
*            STEP 3 IF NO CYLINDER UPDATE, ELSE STEP 4.                  MLD
*                                                                        MLD
          RJM    UPOS        UPDATE POSITION                             MLD
          MJN    VER4                                                    MLD
          LJM    VER3        CYLINDER BOUNDRY ENCOUNTERED GO TO RETURN   MLD
          SPACE  4,22                                                    MLD
**        WRITE V SECTORS AT CYL W TRK X SEC Y, ABT Z                    MLD
*         WRITE V CODED SECTORS AT CYL W TRK X SEC Y, ABT Z              MLD
*                                                                        MLD
*         THIS  COMMAND  IS  USED  TO  SEEK  TO THE CYLINDER, TRACK AND  MLD
*         SECTOR SPECIFIED BY REGISTERS W/X/Y AND WRITE THE  NUMBER  OF  MLD
*         SECTORS  SPECIFIED BY REGISTER V IN A 2_1 INTERLACE MODE.      MLD
*                                                                        MLD
*         ENTRY  - ((SEC)) = SECTOR TO WRITE FIRST.                      MLD
*                  ((TRK)) = TRACK TO WRITE FIRST.                       MLD
*                  ((CYL)) = CYLINDER TO WRITE FIRST.                    MLD
*                  (A)     = ABT ADDRESS.                                MLD
*                  (D.T0)  = CODED FLAG.                                 MLD
*                  (NS)    = NUMBER OF SECTORS TO WRITE.                 MLD
*                                                                        MLD
*         EXIT  -  IF END OF CYLINDER ENCOUNTERED IN UPDATING POSITION   MLD
*                  WRITE UPDATES P SETS SECTOR AND TRACK TO MAXIMUM      MLD
*                  THEN RETURNS TO STACK.                                MLD
*                                                                        MLD
*         USES   - SC, NS, OB+1, OB+2, OB+3, P.                          MLD
*                                                                        MLD
*         CALLS  - TCA, SEEKER, FAN, OUT, UPOS.                          MLD
*                                                                        MLD
                                                                         MLD
**        1. VERIFY THE DRIVE IS CONNECTED.                              MLD
*                                                                        MLD
 WRITE    RJM    TCA         TEST CHANNEL ASSIGNMENT                     MLD
          LDC    MAXWRDS                                                 MLD
          STD    SC                                                      MLD
                                                                         MLD
**        2. VALIDATE  ACCESS  TO  THE  CYLINDER  SPECIFIED  BY W AND    MLD
*            EXECUTE THE SEEK SEQUENCE TO MOVE THE DISK POSITIONER.      MLD
*                                                                        MLD
 WRT2     LDN    1           FLAG FOR WRITE TO SEEKER                    MLD
          RJM    SEEKER                                                  MLD
                                                                         MLD
**        3. EXECUTE  A  NORMAL EXIT IF THE CONTENTS OF REGISTER V IS    MLD
*            ZERO (NO SECTORS TO WRITE).                                 MLD
*                                                                        MLD
          LDI    NS                                                      MLD
          NJN    WRT4        IF NOT DONE YET                             MLD
 WRT3     LJM    XWRITE      EXIT TO STACK
                                                                         MLD
**        4. ISSUE A WRITE FUNCTION (0041).                              MLD
                                                                         MLD
 WRT4     LDN    FWR                                                     MLD
          RJM    FAN         SEND WRITE FUNCTION                         MLD
                                                                         MLD
**        5. IF  THE  KEYWORD  CODED  IS PRESENT, STORE THE FOLLOWING    MLD
*            DATA INTO THE PP OUTPUT BUFFER.                             MLD
*                                                                        MLD
*                  OB(1) = REGISTER W (CYLINDER)                         MLD
*                  OB(2) = REGISTER X (TRACK)                            MLD
*                  OB(3) = REGISTER Y (SECTOR)                           MLD
*                                                                        MLD
          LDD    D.T0        GET CODED FLAG                              MLD
          ZJN    WRT5        IF NOT CODED                                MLD
          LDI    CYL                                                     MLD
          STM    OB+1        STORE CYLINER                               MLD
          LDI    TRK                                                     MLD
          STM    OB+2        STORE TRACK                                 MLD
          LDI    SEC                                                     MLD
          STM    OB+3        STORE SECTOR                                MLD
                                                                         MLD
**        6. CALL OUT TO OUTPUT ONE SECTOR THEN STEP 7.                  MLD
*                                                                        MLD
 WRT5     RJM    OUT         (SC) = NUMBER OF WORDS TO OUTPUT            MLD
                                                                         MLD
**        7. CHECK THE CONTENTS OF REGISTER V (SECTORS TO WRITE)         MLD
*            PERFORM A NORMAL EXIT IF IT IS ZERO.                        MLD
*                                                                        MLD
          SOI    NS                                                      MLD
          ZJN    WRT3        IF COMPLETE                                 MLD
                                                                         MLD
**        8. BUMP REGISTERS W,X AND Y PER THE 2_1 INTERLACE THEN STEP 3  MLD
*            IF CYLINDER UPDATE, ELSE STEP 4.                            MLD
*                                                                        MLD
          RJM    UPOS        UPDATE POSITION                             MLD
          MJN    WRT4        IF NO CYLINDER ADVANCE                      MLD
          LJM    WRT3        IF CYLINDER BOUNDRY GO TO STEP 3.           MLD
          SPACE  4,14                                                    MLD
**        DEQP - DROP EQUIPMENT ASSIGNED.                                MLD
*                                                                        MLD
*         RELEASE THE CONNECT ON THE UNIT ASSIGNED.                      MLD
*                                                                        MLD
*         ENTRY -  (A) = ABT ADDRESS SPECIFIED.                          MLD
*                                                                        MLD
*         EXIT  -  (S1)+(S2) = ABT ADDRESS.                              MLD
*                  (CONNECT) = 0                                         MLD
*                                                                        MLD
*                  ERRNI8F - NO INACTIVE TO 668X FUNCTION.               MLD
*                                                                        MLD
*         USES  - S1, S2, BD.CHFG, CONNECT, L8.                          MLD
*                                                                        MLD
*         CALLS - FAN.                                                   MLD
*                                                                        MLD
 DEQPX    LJM    **                                                      MLD
 DEQP     EQU    *-1                                                     MLD
          STD    S1          SAVE ABT ADDRESS                            MLD
          SHN    -12                                                     MLD
          STD    S2                                                      MLD
          LDM    BD.CHFG                                                 MLD
          ZJN    DEQPX       EXIT IF CHANNEL IS NOT ASSIGNED             MLD
          LDD    S2                                                      MLD
          SBN    77B                                                     MLD
          ZJN    DEQ3        IF RELEASE REQUEST FROM BASIC DRIVER        MLD
          LDD    CONNECT                                                 MLD
          ZJN    DEQ1        IF CONTROLLER IS NOT CONNECTED              MLD
          LDN    FREL                                                    MLD
          RJM    FAN         ISSUE RELEASE                               MLD
          LDN    0                                                       MLD
          STD    CONNECT     CLEAR CONNECTED FLAG                        MLD
                                                                         MLD
 DEQ1     BSS    0                                                       MLD
                                                                         MLD
          IFEQ   NOSBE,1                                                 MLD
          LDC    DSEL8X                                                  MLD
          FAN    40B         DESELECT 668X                               MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ENDIF                                                          MLD
                                                                         MLD
 DEQ2     LJM    DEQPX       RETURN                                      MLD
                                                                         MLD
*         IF THE ABORT ADDRESS INDICATES THE CALL IS NOT FROM THE        MLD
*         INSTRUCTION STACK, THE BASIC DRIVER IS TRYING TO RELEASE       MLD
*         THE DEVICE PRIOR TO DROPPING THE PPU. THIS CONDITIONS          MLD
*         REQUIRES THAT NO ABORT OCCUR AND THE CURRENT STATUS OF         MLD
*         REGISTERS AND BUFFERS REMAIN UNCHANGED.                        MLD
                                                                         MLD
 DEQ3     IJM    DEQ4        IF CHANNEL IN CORRECT STATE                 MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    DEQ2        IF SKIP CHANNEL CLEANUP REQUESTED           MLD
          DCN    40B                                                     MLD
 DEQ4     LDN    0                                                       MLD
          STD    CONNECT     CLEAR CONNECTED FLAG                        MLD
          LDN    FREL                                                    MLD
          FAN    40B                                                     MLD
          LDN    63                                                      MLD
 DEQ5     IJM    DEQ6                                                    MLD
          SBN    1                                                       MLD
          PJN    DEQ5        IF TIME IS NOT UP                           MLD
          DCN    40B                                                     MLD
                                                                         MLD
 DEQ6     BSS    0                                                       MLD
                                                                         MLD
          IFEQ   NOSBE,1                                                 MLD
          LDC    DSEL8X                                                  MLD
          FAN    40B         DESELECT 668X                               MLD
          PSN                                                            MLD
          IJM    DEQPX       IF INACTIVE TO 668X FUNCTION                MLD
          DCN    40B                                                     MLD
          ENDIF                                                          MLD
                                                                         MLD
          UJN    DEQ2        EXIT                                        MLD
          SPACE  4,12                                                    MLD
**        FAN - FUNCTION EQUIPMENT.                                      MLD
*                                                                        MLD
*         SEND FUNCTION TO CONTROLLER.                                   MLD
*                                                                        MLD
*         ENTRY  - (A) = FUNCTION TO SEND.                               MLD
*                                                                        MLD
*         EXIT   - ERRNIEF - IF NO INACTIVE RECEIVED.                    MLD
*                  ERR8SNR - IF STATUS NOT RETURNED FORM 668X.           MLD
*                  ERRNI8F - IF NO INACTIVE TO LAST 668X FUNCTION.       MLD
*                  ERRIER  - INTERNAL EXTERNAL REJECT.                   MLD
*                  ERRTP   - TRANSMISSION PARITY ERROR.                  MLD
*                                                                        MLD
*         USES   - LF, L8, SB+1.                                         MLD
*                                                                        MLD
*         CALLS  - NONE.                                                 MLD
*                                                                        MLD
 FANX     LJM    **          ENTRY/EXIT                                  MLD
 FAN      EQU    *-1                                                     MLD
          STD    LF          SAVE (A) AS LAST FUNCTION                   MLD
          FAN    40B         SEND FUNCTION                               MLD
          LDC    128
 FAN1     IJM    FAN3        IF INACTIVE RECEIVED                        MLD
 FAN2     SBN    4           *** SBN 4 IF 1X SPEED PPU ***
*         SBN    2           *** SBN 2 IF 2X SPEED PPU ***
*         SBN    1           *** SBN 1 IF 4X SPEED PPU ***
          PJN    FAN1        IF TIME IS NOT UP                           MLD
          LJM    ERRNIEF     ERROR IF NO INACTIVE IN 128 USEC            MLD
                                                                         MLD
 FAN3     LDC    SEL8XS                                                  MLD
          FAN    40B         SELECT 668X STATUS                          MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO STATUS  FUNCTION    MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERR8SNR     ERROR IF 668X STATUS NOT RETURNED           MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB+1        STORE STATUS                                MLD
          LPN    7                                                       MLD
          NJN    FAN4                                                    MLD
          LJM    FANX        EXIT TO CALLER                              MLD
                                                                         MLD
 FAN4     SHN    15                                                      MLD
          MJN    FAN5                                                    MLD
          LJM    ERRIER      IF INTERNAL/EXTERNAL REJECT                 MLD
                                                                         MLD
 FAN5     LJM    ERRTP       IF XMSN PARITY ERROR                        MLD
          SPACE  4,14                                                    MLD
**        OUT - OUTPUT TO DEVICE.                                        MLD
*                                                                        MLD
*         PERFORM BLOCK OUTPUT.                                          MLD
*                                                                        MLD
*         ENTRY - (SC) = NUMBER OF WORDS TO OUTPUT.                      MLD
*                                                                        MLD
*         EXIT  - ERRNI8F - IF 668X NOT RESPONDING.                      MLD
*                 ERRDNA  - IF DATA NOT ACCEPTED.                        MLD
*                 ERRESNR - IF EQUIPMENT STATUS NOT RETURNED.            MLD
*                                                                        MLD
*         USES  - WT, SC, WC.                                            MLD
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
 OUTX     LJM    **                                                      MLD
 OUT      EQU    *-1                                                     MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          LDC    SELOUT                                                  MLD
          FAN    40B         SELECT OUTPUT                               MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NOT 668X RESPONSE                  MLD
          ACN    40B                                                     MLD
          LDD    SC          NUMBER OF WORDS TO OUTPUT                   MLD
          OAM    OB                                                      MLD
          STD    D.T2        SAVE REMAINDER                              MLD
          NJN    OUT4        IF HARDWARE DEACTIVATED CHANNEL             MLD
          LDC    128         WAIT UP TO 64 USEC 
 OUT1     EJM    OUT3        IF EMPTY ON LAST WORD                       MLD
 OUT2     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    OUT1        IF TIME IS NOT UP                           MLD
          LDD    SC                                                      MLD
          STD    WT                                                      MLD
          LJM    ERRDNA      ERROR IF LAST OUTPUT LOST                   MLD
                                                                         MLD
 OUT3     DCN    40B                                                     MLD
 OUT4     LDD    SC                                                      MLD
          SBD    D.T2        CALCULATE ACTUAL NUMBER OF BYTES OUTPUT     MLD
          STD    WT          STORE RESULT IN WORDS TRANSMITTED REGISTER  MLD
          LDC    SELEQS                                                  MLD
          FAN    40B         SELECT EQUIPMENT STATUS                     MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO EQUIP STATUS        MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERRESNR     ERROR IF EQUIPMENT STATUS NOT RETURNED      MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB          STORE STATUS                                MLD
          LDD    D.T2                                                    MLD
          ZJN    OUT5        IF ALL WORDS ACCEPTED                       MLD
          LJM    ERRDNA      ERROR ALL DATA NOT ACCEPTED FROM PP ON OUT  MLD
                                                                         MLD
 OUT5     LDM    SB                                                      MLD
          LPC    7126B                                                   MLD
          ZJN    OUT6        NO STATUS ERROR                             MLD
          LJM    ERRAES      ERROR IN STATUS WORD                        MLD
                                                                         MLD
 OUT6     LDM    SB+1                                                    MLD
          LPN    7                                                       MLD
          ZJN    OUT8        NO STATUS ERRORS                            MLD
          SHN    15                                                      MLD
          MJN    OUT7                                                    MLD
          LJM    ERRIER      INTERNAL/EXTERNAL REJECT                    MLD
                                                                         MLD
 OUT7     LJM    ERRTP       XMSN PARITY ERROR                           MLD
                                                                         MLD
 OUT8     LJM    OUTX        RETURN                                      MLD
          SPACE  4,16                                                    MLD
**        RDIN - READ IN DATA FROM DISK.                                 MLD
*                                                                        MLD
*         READ IN DATA FROM DISK.                                        MLD
*                                                                        MLD
*         ENTRY - (A)    = FUNCTION DESIRED.                             MLD
*                 (SC)   = WORD COUNT TO READ.                           MLD
*                 (D.T1) = ADDRESS TO STORE DATA.                        MLD
*                                                                        MLD
*         EXIT  - WT = WORDS RECEIVED.                                   MLD
*                                                                        MLD
*                 ERRIER  - IF INTERNAL/EXTERNAL REJECT                  MLD
*                 ERRTP   - IF TRANSMISSION PARITY.                      MLD
*                 ERRNI8F - IF NO INACTIVE TO 668X FUNCTION.             MLD
*                 ERRIDR  - IF INCOMPLETE DATA RETURNED.                 MLD
*                 ERRESNR - IF EQUIP STATUS NOT RETURNED.                MLD
*                                                                        MLD
*         USES  - WT, L8, IB, D.T2,                                      MLD
*                                                                        MLD
*         CALLS - NONE.                                                  MLD
*                                                                        MLD
                                                                         MLD
**        1. ISSUE FUNCTION, CLEAR WORDS TRANSMITTED, SELECT INPUT,      MLD
*            INPUT SC WORDS, THEN STEP 2.                                MLD
*                                                                        MLD
 RDINX    LJM    **          ENTRY/EXIT                                  MLD
 RDIN     EQU    *-1                                                     MLD
          RJM    FAN         SEND FUNCTION TO EQUIPMENT                  MLD
          LDN    0                                                       MLD
          STD    WT          CLEAR WORDS TRANSMITTED                     MLD
          LDC    SELIN                                                   MLD
          FAN    40B                                                     MLD
          STM    L8          SAVE LAST 668X FUNCTION                     MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO 668X FUNCTION       MLD
          ACN    40B                                                     MLD
          LDD    SC                                                      MLD
          IAM    IB          INPUT DATA TO IB                            MLD
 RDI1     EQU    *-1         ** ADDRESS FOR INPUT IB(0) TO IB(504B)      MLD
          STD    D.T2                                                    MLD
          IJM    RDI2                                                    MLD
          DCN    40B                                                     MLD
                                                                         MLD
**        2. REQUEST  AND  INPUT EQUIPMENT STATUS.                       MLD
*                                                                        MLD
 RDI2     LDD    SC                                                      MLD
          SBD    D.T2                                                    MLD
          STD    WT          SAVE WORDS TRANSMITTED                      MLD
          LDC    SELEQS                                                  MLD
          FAN    40B         SELECT EQUIPMENT STATUS                     MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO EQUIP STATUS        MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERRESNR     ERROR IF EQUIP STATUS NOT RETURNED          MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB          STORE STATUS                                MLD
                                                                         MLD
**        3. VERIFY  THAT THE CONTENTS OF THE WT REGISTER IS THE SAME    MLD
*            AS THE CONTENTS OF THE WC REGISTER (WORDS  REQUESTED  TO    MLD
*            BE TRANSMITTED WERE ACTUALLY TRANSMITTED).                  MLD
*                                                                        MLD
          LDD    D.T2                                                    MLD
          ZJN    RDI3        IF WC WORDS READ                            MLD
          LJM    ERRIDR      INCOMPLETE DATA RETURNED                    MLD
                                                                         MLD
**        4. EXECUTE  THE  ERROR EXIT SEQUENCE IF EQUIPMENT STATUS IS    MLD
*            NOT 0201B (READY, NOT BUSY, POSITIONER READY).              MLD
*                                                                        MLD
 RDI3     LDM    SB                                                      MLD
          LPC    7126B                                                   MLD
          ZJN    RDI4        IF EXPECTED STATUS RECEIVED                 MLD
          LJM    ERRAES                                                  MLD
                                                                         MLD
**        5. EXECUTE THE ERROR EXIT SEQUENCE IF THE 668X STATUS IS NOT   MLD
*            CORRECT, ELSE RETURN.                                       MLD
*                                                                        MLD
 RDI4     LDM    SB+1                                                    MLD
          LPN    7                                                       MLD
          ZJN    RDI6        IF NO STATUS ERRORS                         MLD
          SHN    15                                                      MLD
          MJN    RDI5        IF XMSN PARITY                              MLD
          LJM    ERRIER                                                  MLD
                                                                         MLD
 RDI5     LJM    ERRTP                                                   MLD
                                                                         MLD
 RDI6     LJM    RDINX       RETURN                                      MLD
                                                                         MLD
          EJECT                                                          MLD
**        SEEKER - SEEK TO POSITION ON DISK.                             MLD
*                                                                        MLD
*         SEEK TO POSITION ON DISK.                                      MLD
*                                                                        MLD
*         THE FOLLOWING TABLE  DEFINES THE  ACCESS  LEVEL CODES AND THE  MLD
*         LEVEL OF TESTING THAT IS ALLOWED AT EACH LEVEL.                MLD
*                                                                        MLD
*                                      DESCRIPTION                       MLD
*         -------------------------------------------------------------  MLD
*         /  LEVEL  /          RMS              /       NON-RMS       /  MLD
*         /---------+---------------------------+---------------------/  MLD
*         /---------+---------------------------+---------------------/  MLD
*         /    0    /       ILLEGAL             / DEDICATED UNIT, HIGH/  MLD
*         /         / (IF SPECIFIED ON ASSIGN)  / LEVEL I/O           /  MLD
*         /---------+---------------------------+---------------------/  MLD
*         /    1    / READ PRE-ALLOCATED AREA   /       ILLEGAL       /  MLD
*         /         / ONLY, HIGH LEVEL I/O.     /                     /  MLD
*         /---------+---------------------------+---------------------/  MLD
*         /    2    / READ ANY NORMAL DATA AREA /       ILLEGAL       /  MLD
*         /         / ONLY, HIGH LEVEL I/O.     /                     /  MLD
*         /---------+---------------------------+---------------------/  MLD
*         /    3    / READ/WRITE PRE-ALLOCATED  /       ILLEGAL       /  MLD
*         /         / AREA ONLY, HIGH LEVEL I/O /                     /  MLD
*         /---------+---------------------------+---------------------/  MLD
*         /    4    / READ/WRITE ANY NORMAL DATA/       ILLEGAL       /  MLD
*         /         / AREA, HIGH LEVEL I/O      /                     /  MLD
*         /         / DEDICATED UNIT            /                     /  MLD
*         /---------+---------------------------+---------------------/  MLD
*         /    5    / SAME AS 4. RESERVED FOR   /       ILLEGAL       /  MLD
*         /         / EXPANSION.                /                     /  MLD
*         /---------+---------------------------+---------------------/  MLD
*         /    6    / SAME AS 4. RESERVED FOR   /       ILLEGAL       /  MLD
*         /         / EXPANSION.                /                     /  MLD
*         /---------+---------------------------+---------------------/  MLD
*         /    7    / SAME AS 4. RESERVED FOR   /       ILLEGAL       /  MLD
*         /         / EXPANSION.                /                     /  MLD
*         /---------+-------------------------------------------------/  MLD
*         /   10    / DEDICATED CONTROLLER AND ALL UNITS. HIGH AND LOW/  MLD
*         /         / LEVEL I/O. MAY CLOBBER CONTROLWARE.             /  MLD
*         /---------+-------------------------------------------------/  MLD
*         /         /         ILLEGAL           /      ILLEGAL        /  MLD
*         /  11-17  /        (RESERVED)         /    ( RESERVED )     /  MLD
*         /---------+-------------------------------------------------/  MLD
*         /   20    /DEDICATED CONTROLLER, ALL UNITS AND CHANNEL. ALL /  MLD
*         /         /DEVICES MUST BE OFF AND NOT IN USE ON THE CHANNEL/  MLD
*         /         /SINCE MASTER CLEARS MAY BE PERFORMED.  HIGH AND  /  MLD
*         /         /LOW LEVEL I/O. CONTROLWARE MAY BE CLOBBERED.     /  MLD
*         /---------+-------------------------------------------------/  MLD
*         /   21    / SAME AS 20 PLUS I/O CHANNEL IS LEFT IN A HUNG   /  MLD
*         /         / STATE IF A CHANNEL HANG OCCURS.                 /  MLD
*         -------------------------------------------------------------  MLD
*                                                                        MLD
*                                                                        MLD
*         ENTRY  - (A) = FUNCTION DESIRED.                               MLD
*                                                                        MLD
*                    0 = READ AFTER SEEK IS DONE.                        MLD
*                    1 = WRITE AFTER SEEK IS DONE.                       MLD
*                    2 = SEEK ONLY.                                      MLD
*                                                                        MLD
*                  BD.AL   = CURRENT ACCESS LEVEL.                       MLD
*                  ((CYL)) = CYLINDER DESIRED.                           MLD
*                  ((TRK)) = TRACK DESIRED.                              MLD
*                  ((SEC)) = SECTOR DESIRED.                             MLD
*                                                                        MLD
*         EXIT   - SB+3 = MS TO PERFORM SEEK.                            MLD
*                                                                        MLD
*                  ERRALTL - IF ACCESS LEVEL TOO LOW FOR REQUEST.        MLD
*                  ERRUNR  - IF UNIT NOT READY.                          MLD
*                  ERRUHB  - IF UNIT HUNG BUSY.                          MLD
*                  ERRAES  - IF ABNORMAL EQUIPMENT STATUS.               MLD
*                  ERRCBNA - IF SEEK CYLINDER BYTE NOT ACCEPTED.         MLD
*                  ERRSBNA - IF SEEK SEC/TRK BYTE NOT ACCEPTED.          MLD
*                  ERRESNR - IF EQUIPMENT STATUS NOT RETURNED.           MLD
*                                                                        MLD
*         USES   - SB, SB+3, D.Z1, D.Z2, D.Z3, L8.                       MLD
*                                                                        MLD
*         CALLS  - FAN.                                                  MLD
*                                                                        MLD
**        1. ENTRY.                                                      MLD
*                                                                        MLD
 SEEKERX  LJM    **                                                      MLD
 SEEKER   EQU    *-1         ENTRY                                       MLD
                                                                         MLD
**        2. VERIFY THAT THE CURRENT ACCESS  LEVEL  ALLOWS  THE  USER    MLD
*            ACCESS TO THE CYLINDER SPECIFIED BY W.                      MLD
*                                                                        MLD
          STD    D.Z1                                                    MLD
          SBN    2                                                       MLD
          ZJN    SEE4        IF SEEK ONLY                                MLD
          LDD    BD.AL       GET ACCESS LEVEL                            MLD
          SBN    4                                                       MLD
          PJN    SEE4        IF AL .GE. 4                                MLD
          ADN    2                                                       MLD
          NJN    SEE1        IF NOT AL=2                                 MLD
          LDD    D.Z1                                                    MLD
          ZJN    SEE4        IF READ ONLY AND AL=2                       MLD
 SEE1     LDI    CYL                                                     MLD
          ADC    -PREA1                                                  MLD
          ZJN    SEE2        IF WITHIN PRE AREA                          MLD
          LDI    CYL                                                     MLD
          ADC    -PREA2                                                  MLD
          NJN    SEE3        IF OUTSIDE OF PRE AREA                      MLD
 SEE2     LDD    BD.AL                                                   MLD
          SBN    3                                                       MLD
          ZJN    SEE4        IF AL .EQ. 3 PRE AREA                       MLD
          LDD    D.Z1        GET ACCESS TYPE                             MLD
          ZJN    SEE4        IF ACCESS LEVEL EQUAL READ                  MLD
 SEE3     LJM    ERRALTL     ERROR ACCESS LEVEL TOO LOW                  MLD
                                                                         MLD
 SEE4     LDN    0                                                       MLD
          STD    D.Z2                                                    MLD
          STD    D.Z3                                                    MLD
          IANN   14B                                                     MLD
          STD    D.Z1                                                    MLD
                                                                         MLD
**        3. REQUEST  AND  INPUT  EQUIPMENT  STATUS  TO THE PP STATUS    MLD
*            BUFFER AND VERIFY THAT THE UNIT IS READY (2**0 IS SET).     MLD
*                                                                        MLD
 SEE5     LDC    SELEQS                                                  MLD
          FAN    40B         SELECT EQUIPMENT STATUS                     MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO EQUIP STATUS        MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERRESNR     ERROR IF EQUIPMENT STATUS NOT RETURNED      MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB          STORE STATUS                                MLD
                                                                         MLD
**        4. GO TO STEP 3 IF THE POSITIONER IS NOT READY  OR  IF  THE    MLD
*            UNIT  IS  BUSY  AND  500  MILLISECONDS HAVE NOT ELAPSED.    MLD
*            EXECUTE THE ERROR EXIT SEQUENCE IF TIME EXPIRES.            MLD
*                                                                        MLD
 SEE6     LPC    7126B                                                   MLD
          ZJN    SEE8        IF OPERATION COMPLETE                       MLD
          LDC    500D        ELSE WAIT AND TRY AGAIN                     MLD
          RAD    D.Z1                                                    MLD
 SEE6A    IANN   14B         CHECK CLOCK AGAIN                           MLD
          STD    D.Z2                                                    MLD
          LDD    D.Z1                                                    MLD
          SBD    D.Z2                                                    MLD
          ZJN    SEE6B       IF TIMING LOOP IS COMPLETE                  MLD
          SHN    17D-11D     TO ELIMINATE CLK WRAP AROUND                MLD
          PJN    SEE6A       IF NOT TIMED OUT                            MLD
 SEE6B    AOD    D.Z3        INCREMENT ITERATION COUNT IF TIMED OUT      MLD
          LMC    200000D/500D COUNT LIMIT FOR BUSY                       MLD
          ZJN    SEE7        IF BUSY TIMED OUT                           MLD
          LJM    SEE5        ELSE TRY AGAIN                              MLD
                                                                         MLD
 SEE7     LJM    ERRAES      ERROR ABNORMAL EQUIPMENT STATUS             MLD
                                                                         MLD
                                                                         MLD
**        5. SELECT ABNORMAL END OF OPERATION  INTERRUPT  (0024)  AND    MLD
*            END OF OPERATION INTERRUPT (0022), IF CYLINDER TRK AND      MLD
*            SECTOR ARE LEGAL VALUES, ELSE GO TO ERRILL.                 MLD
*                                                                        MLD
 SEE8     LDI    CYL                                                     MLD
          ADC    -MAXCYL                                                 MLD
          MJN    SEE10       IF CYLINDER .LT. MAXCYL                     MLD
 SEE9     LJM    ERRILL      ERROR ON VALUE FOR CYLINDER                 MLD
                                                                         MLD
 SEE10    LDI    TRK                                                     MLD
          SBN    MAXTRK                                                  MLD
          PJN    SEE9        IF TRACK  .GE. MAXTRK                       MLD
          LDI    SEC                                                     MLD
          SBN    MAXSEC                                                  MLD
          PJN    SEE9        IF SECTOR .GE. MAXSEC                       MLD
                                                                         MLD
          LDN    FSAEOP      SELECT ABNORMAL END OF OPERATION INTERRUPT  MLD
          RJM    FAN                                                     MLD
          LDN    FSEOP       SELECT END OF OPERATION INTERRUPT           MLD
          RJM    FAN                                                     MLD
                                                                         MLD
**        6. FUNCTION LOAD ADDRESS AT 1_1 INTERLACE (0010).              MLD
*                                                                        MLD
          LDN    FLOAD11     SELECT LOAD ADDRESS AT 1_1 INTERLACE        MLD
          RJM    FAN                                                     MLD
                                                                         MLD
**        7. OUTPUT  2  WORDS  OF ADDRESS INFORMATION AS SPECIFIED BY    MLD
*            REGISTERS W,X AND Y. STORE THE NUMBER OF WORDS  ACTUALLY    MLD
*            OUTPUT INTO THE WT REGISTER.                                MLD
*                                                                        MLD
*                WORD 1 = REGISTER W  (CYLINDER)                         MLD
*                WORD 2 = REGISTERS X/Y  (6 BITS TRACK, 6 BITS SECTOR)   MLD
*                                                                        MLD
          LDC    SELOUT                                                  MLD
          FAN    40B         SELECT OUTPUT TO 668X                       MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO FUNCTION            MLD
          LDI    CYL                                                     MLD
          ACN    40B                                                     MLD
          OAN    40B                                                     MLD
          LDC    128         WAIT FOR UP TO 64 USEC 
 SEE11    EJM    SEE13       IF SEEK CODE ACCEPTED                       MLD
 SEE12    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    SEE11       IF TIME IS NOT UP                           MLD
          LJM    ERRCBNA     ERROR IF CYL BYTE NOT ACCEPTED              MLD
                                                                         MLD
 SEE13    LDI    TRK                                                     MLD
          SHN    6                                                       MLD
          LMI    SEC                                                     MLD
          OAN    40B                                                     MLD
          LDC    128         WAIT FOR 128 USEC
 SEE14    EJM    SEE16       IF SEEK CODE ACCEPTED                       MLD
 SEE15    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    SEE14       IF TIME IS NOT UP                           MLD
          LJM    ERRSBNA     ERROR IF SEC/TRK BYTE NOT ACCEPTED          MLD
                                                                         MLD
 SEE16    DCN    40B                                                     MLD
          LDN    0                                                       MLD
          STD    D.Z2                                                    MLD
          STD    D.Z3                                                    MLD
          IANN   14B                                                     MLD
          STD    D.Z1                                                    MLD
                                                                         MLD
**        8. REQUEST AND INPUT EQUIPMENT  STATUS  TO  THE  PP  STATUS    MLD
*            BUFFER.                                                     MLD
*                                                                        MLD
 SEE17    LDC    SELEQS                                                  MLD
          FAN    40B         SELECT EQUIPMENT STATUS                     MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO EQUIP STATUS        MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERRESNR     ERROR IF EQUIPMENT STATUS NOT RETURNED      MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB          STORE STATUS                                MLD
                                                                         MLD
**        9. GO  TO  STEP  8  IF  THE UNIT IS READY AND BUSY, AND 500    MLD
*            MILLISECONDS HAVE NOT ELAPSED.  EXECUTE THE  ERROR  EXIT    MLD
*            SEQUENCE  IF  TIME  EXPIRES, THE UNIT DROPS READY, OR IF    MLD
*            BUSY DROPS AND THE EQUIPMENT STATUS IS NOT 0601B (READY,    MLD
*            NOT BUSY, POSITIONER READY AND END OF OP INTERRUPT).        MLD
*                                                                        MLD
          LMC    EOP+POSRDY+RDY                                          MLD
          ZJN    SEE21       IF OPERATION COMPLETE                       MLD
          LDC    500D        ELSE WAIT AND TRY AGAIN                     MLD
          RAD    D.Z1                                                    MLD
 SEE18    IANN   14B         CHECK CLOCK AGAIN                           MLD
          STD    D.Z2                                                    MLD
          LDD    D.Z1                                                    MLD
          SBD    D.Z2                                                    MLD
          ZJN    SEE19       IF TIMING LOOP IS COMPLETE                  MLD
          SHN    17D-11D     TO ELIMINATE CLK WRAP AROUND                MLD
          PJN    SEE18       IF NOT TIMED OUT                            MLD
 SEE19    AOD    D.Z3        INCREMENT ITERATION COUNT IF TIMED OUT      MLD
          LMC    200000D/500D COUNT LIMIT FOR BUSY                       MLD
          ZJN    SEE20       IF BUSY TIMED OUT                           MLD
          LJM    SEE17       ELSE TRY AGAIN                              MLD
                                                                         MLD
 SEE20    LDM    SB                                                      MLD
          LPN    BSY                                                     MLD
          ZJN    SEE20A      IF BUSY NOT UP                              MLD
          LJM    ERRUHB                                                  MLD
 SEE20A   LJM    ERRAES      ERROR ABNORMAL EQUIPMENT STATUS             MLD
                                                                         MLD
 SEE21    LDD    D.Z3                                                    MLD
          ADN    1           ROUND UP                                    MLD
          SHN    -1          DIVIDE BY 2                                 MLD
          STM    SB+3        THIS IS MILLISEC. COUNT                     MLD
          SHN    -1                                                      MLD
          RAD    RT                                                      MLD
          LJM    SEEKERX     EXIT TO STACK                               MLD
          SPACE  4,16                                                    MLD
**        TCA - TEST CONTROLLER ASSIGNMENT.                              MLD
*                                                                        MLD
*         TEST CONTROLLER ASSIGNMENT                                     MLD
*                                                                        MLD
*         ENTRY -  (A)       = ABT ADDRESS.                              MLD
*                  (BD.CHFG) = CHANNEL FLAG.                             MLD
*                                                                        MLD
*         EXIT  -  ERRCNC - IF CONTROLLER IS NOT CONNECTED.              MLD
*                  ERRUNR - IF UNIT IS NOT READY.                        MLD
*                  ERRCNR - IF CHANNEL NOT RESERVED.                     MLD
*                  ERRCAS - IF CHANNEL ACTIVE ON ENTRY.                  MLD
*                  ERRESNR- IF EQUIPMENT STATUS NOT RETURNED.            MLD
*                  ERRNI8F- IF NO INACTIVE TO 668X FUNCTION.             MLD
*                                                                        MLD
*         USES  - S1, S2, BD.CHFG.                                       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
          LJM    ERRCNR      ERROR IF CHANNEL NOT RESERVED               MLD
                                                                         MLD
 TCA1     LDD    CONNECT                                                 MLD
          NJN    TCA2        IF CONTROLLER IS CONNECT                    MLD
          LJM    ERRCNC      ERROR IF CONTROLLER NOT CONNECTED           MLD
                                                                         MLD
 TCA2     IJM    TCA3        IF CHANNEL IN CORRECT STATE                 MLD
          LJM    ERRCAS      ERROR IF CHANNEL ACTIVE ON ENTRY            MLD
                                                                         MLD
 TCA3     LDC    SELEQS                                                  MLD
          FAN    40B         SELECT EQUIPMENT STATUS                     MLD
          STM    L8                                                      MLD
          AJM    ERRNI8F     ERROR IF NO INACTIVE TO EQUIP STATUS        MLD
          ACN    40B                                                     MLD
          PSN                                                            MLD
          EJM    ERRESNR     ERROR IF EQUIPMENT STATUS NOT RETURNED      MLD
          IAN    40B                                                     MLD
          DCN    40B                                                     MLD
          STM    SB          STORE STATUS                                MLD
          LPN    RDY                                                     MLD
          ZJN    TCA4        IF NOT READY                                MLD
          LJM    TCAX                                                    MLD
 TCA4     LJM    ERRUNR      ERROR IF UNIT NOT READY                     MLD
          SPACE  4,20                                                    MLD
**        UPPOS - UPDATE DISK POSTION.                                   MLD
*                                                                        MLD
*         UPDATE THE TRACK AND SECTOR IN A 2-1 INTERLACE MODE.           MLD
*         RETURN WITH (A) = 0 IF END OF CYLINDER AND MINUS               MLD
*         IF NOT END OF CYLINDER.                                        MLD
*                                                                        MLD
*         ENTRY  - ((SEC)) = SECTOR.                                     MLD
*                  ((TRK)) = TRACK.                                      MLD
*                  (S1+S2) = ABT ADDRESS.                                MLD
*                                                                        MLD
*         EXIT   - POSITION UPDATED.                                     MLD
*                  (A) = MINUS IF NOT END OF CYLINDER.                   MLD
*                  (A) = 0 IF END OF CYLINDER.                           MLD
*                                                                        MLD
*         USES   - SEC, TRK, CYL, S1, S2.                                MLD
*                                                                        MLD
*         CALLS  - NONE.                                                 MLD
*                                                                        MLD
                                                                         MLD
**        1. ADD TWO TO SECTOR IF GT MAXSEC STEP 2, ELSE STEP 5.         MLD
*                                                                        MLD
 UPOSX    LJM    **          ENTRY/EXIT                                  MLD
 UPOS     EQU    *-1                                                     MLD
          LDN    2                                                       MLD
          RAI    SEC         ADVANCE SECTOR BY TWO FOR HALF TRACK        MLD
          SBN    MAXSEC                                                  MLD
          PJN    UPO1        IF SECTOR NOT IN RANGE                      MLD
          LJM    UPO4                                                    MLD
                                                                         MLD
**        2. CLEAR SECTOR COUNT ADD ONE TO TRACK IF LT MAXTRK STEP 5     MLD
*            ELSE STEP 3.                                                MLD
*                                                                        MLD
 UPO1     STI    SEC                                                     MLD
          AOI    TRK         ADVANCE TRACK BY ONE                        MLD
          SBN    MAXTRK                                                  MLD
          MJN    UPO4        IF TRACK IN RANGE                           MLD
                                                                         MLD
**        3. CLEAR TRACK COUNT, CHECK SECTOR IF ODD STEP 4, ELSE SET     MLD
*            SECTOR TO EVEN THEN STEP 5.                                 MLD
*                                                                        MLD
          LDN    0                                                       MLD
          STI    TRK         RESET TRACK COUNTER                         MLD
          LDI    SEC                                                     MLD
          NJN    UPO2        IF SECTOR WAS ODD                           MLD
          LDN    1                                                       MLD
          STI    SEC                                                     MLD
          UJN    UPO4        START WITH ODD SECTORS                      MLD
                                                                         MLD
**        4. SET SECTOR/TRACK TO MAX THEN STEP 6.                        MLD
*                                                                        MLD
 UPO2     LDN    MAXSEC-1                                                MLD
          STI    SEC         RESET SECTORS TO MAXIMUM                    MLD
          LDN    MAXTRK-1                                                MLD
          STI    TRK                                                     MLD
          LDN    0                                                       MLD
          LJM    UPO11       RETURN TO CALLER                            MLD
                                                                         MLD
**        5.  CALL SEEKER TO SELECT NEW POSITION THEN STEP 6.            MLD
*                                                                        MLD
 UPO4     LDN    2                                                       MLD
          RJM    SEEKER                                                  MLD
          LCN    0                                                       MLD
                                                                         MLD
**        6. RETURN.                                                     MLD
*                                                                        MLD
 UPO11    LJM    UPOSX       RETURN                                      MLD
          EJECT                                                          MLD
 ERRWC    LDC    ER.WC       ILLEGAL WC OR BUFFER INDEX                  MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRCNR   LDC    ER.CNR      CHANNEL NOT RESERVED                        MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRCAS   LDC    ER.CAS      CHANNEL ACTIVE FROM SYSTEM                  MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRDNA   LDC    ER.DNA      ALL DATA OUTPUT NOT ACCEPTED                MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRIDR   LDC    ER.IDR      INCOMPLETE DATA RETURNED TO PP              MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRCNC   LDC    ER.CNC      CONTROLLER NOT CONNECTED                    MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRALTL  LDC    ER.ALTL     ACCESS LEVEL TOO LOW FOR REQ                MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRAES   LDC    ER.AES      ABNORMAL EQUIPMENT STATUS                   MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRUHB   LDC    ER.UHB      UNIT HUNG BUSY ON SEEK                      MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRDCE   LDC    ER.DCE      DATA COMPARE ERROR                          MLD
          UJN    ERR1                                                    MLD
                                                                         MLD
 ERRUNR   LDC    ER.UNR      UNIT NOT READY                              MLD
 ERR1     UJN    ERR2                                                    MLD
                                                                         MLD
 ERRCBNA  LDC    ER.CBNA     SEEK CYL BYTE NOT ACCEPTED                  MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRSBNA  LDC    ER.SBNA     SEEK SEC/TRK BYTE NOT ACCEPTED              MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRTP    LDC    ER.TP       668X TRANSMISSION PARITY                    MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRIER   LDC    ER.IER      668X INT OR EXT REJECT                      MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRNIEF  LDC    ER.NIEF     NO INACTIVE TO LAST EQUIP FUNC              MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRNI8F  LDC    ER.NI8F     NO INACTIVE TO LAST 668X FUNC               MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRESNR  LDC    ER.ESNR     EQUIP STATUS NOT RETURNED                   MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERR8SNR  LDC    ER.8SNR     668X STATUS NOT RETURNED                    MLD
          UJN    ERR2                                                    MLD
                                                                         MLD
 ERRILL   LDC    ER.ILL      ILLEGAL COMMAND OR PARAMETER                MLD
                                                                         MLD
 ERR2     STD    D.Z1        SAVE MESSAGE INDEX AND ERROR NUMBER         MLD
          SHN    -12                                                     MLD
          STD    D.Z2        SAVE ABORT FLAG                             MLD
          LDM    BD.CHFG                                                 MLD
          ZJN    ERR3        IF CHANNEL IS NOT ASSIGNED                  MLD
          IJM    ERR3,0      CLEAN UP CHANNEL                            MLD
          LDD    BD.AL                                                   MLD
          SBN    BD.AL21                                                 MLD
          ZJN    ERR3        IF ACCESS LEVEL FOR NO CHANNEL CLEAN UP     MLD
          DCN    40B                                                     MLD
 ERR3     LDD    D.Z1                                                    MLD
          LPN    77B                                                     MLD
          ADC    4700B       ADD IN BIAS FOR 841 PRODUCT OVERLAY         MLD
          STD    EC          STORE ERROR CODE                            MLD
          LDD    D.Z1                                                    MLD
          SHN    -6                                                      MLD
          ADC    100B        FLAG MESSAGE INDEX AS OVERLAY MESSAGE       MLD
          STD    EM          STORE MESSAGE INDEX                         MLD
          LDD    P                                                       MLD
          STD    EA          STORE LINE NUMBER WHERE ERROR OCCURRED      MLD
          LDD    D.Z2                                                    MLD
          NJN    ERR5        IF ABORT FLAG SET                           MLD
          LDD    S2                                                      MLD
          SHN    12                                                      MLD
          LMD    S1                                                      MLD
          ZJN    ERR4        IF NO ABT ADDRESS SPECIFIED                 MLD
          LJM    BD.RNI      RNI AT THE REJECT ADDRESS                   MLD
                                                                         MLD
 ERR4     LJM    BD.ERR      TERMINATE OR RESTART MODULE BASED ON SE     MLD
                                                                         MLD
 ERR5     LJM    BD.ABT      TERMINATE MODULE                            MLD
                                                                         MLD
*         EQUATES FOR BUFFERS.                                           MLD
                                                                         MLD
 IB       EQU    6500B       INPUT BUFFER                                MLD
 LIB      EQU    505B        LENGTH OF INPUT AND OUTPUT BUFFERS          MLD
 OB       EQU    IB+LIB      OUTPUT BUFFER                               MLD
 SB       EQU    OB+LIB      STATUS BUFFER                               MLD
 L8       EQU    SB+2        LAST 668X FUNCTION                          MLD
 LSB      EQU    7                                                       MLD
 SBLWA    EQU    SB+LSB      STATUS BUFFER LWA+1                         MLD
                                                                         MLD
          ERRPL  *-IB-1      ERROR IF 841 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
          LMN    10B                                                     MLD
          STM    RES2        SAVE CONNECT CODE                           MLD
          SHN    -11                                                     MLD
          ZJN    INIT1       IF EQUIPMENT NUMBER IS 0 - 3                MLD
          LDN    0                                                       MLD
          STM    RES1        SET EQUIPMENT NUMBER SWITCH                 MLD
                                                                         MLD
*         SET DELAY TIME BASED ON SPEED OF PPU.                          MLD
                                                                         MLD
 INIT1    LDC    TSPEED 
          STD    D.T0                                                    MLD
 INIT2    LDI    D.T0                                                    MLD
          ZJN    INIT3       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1                                                    MLD
          SCN    77B
          ADM    BD.SPEED 
          STI    D.T1        SET ADN/SBN VALUE
          AOD    D.T0                                                    MLD
          UJN    INIT2       COMPLETE ALL WORDS                          MLD
                                                                         MLD
*         STORE I/O CHANNEL INTO COMMANDS.                               MLD
                                                                         MLD
 INIT3    LDM    BD.CHAN                                                 MLD
          STD    D.T2                                                    MLD
          LDC    TCHAN                                                   MLD
          STD    D.T0        SET FWA OF TABLE CONTAINING ADDRESSES       MLD
 INIT4    LDI    D.T0                                                    MLD
          ZJN    INIT5       IF END OF TABLE                             MLD
          STD    D.T1                                                    MLD
          LDI    D.T1                                                    MLD
          LPC    7740B                                                   MLD
          ADD    D.T2                                                    MLD
          STI    D.T1                                                    MLD
          AOD    D.T0                                                    MLD
          UJN    INIT4       COMPLETE ALL WORDS                          MLD
                                                                         MLD
*         WRITE PP MESSAGES TO CM.                                       MLD
                                                                         MLD
 INIT5    LDM    BD.MSGA     GET PP MESSAGE AREA ADDRESS                 MLD
          STD    S1          SAVE IT                                     MLD
          ADC    MMSGL.      ADD LENGTH 
          RJM    BD.TFL      SEE IF IN FL                                MLD
          LDN    P.ZERO      CLEAR CELLS, D.Z1=PP MESSAGE ADDRESS        MLD
          CRD    D.Z1        D.Z2=D.T0-D.T4 POINTER, D.Z3=CM WD COUNTER  MLD
 INIT6    LDM    PPMSGS,D.Z1 GET PP MESSAGE WORD                         MLD
          ZJN    INIT8       IF END OF MESSAGE                           MLD
 INIT7    STM    D.T0,D.Z2   STORE IN D.T0+                              MLD
          AOD    D.Z1        BUMP PP MESSAGE POINTER                     MLD
          UJN    INIT9                                                   MLD
 INIT8    LDC    2R          MESSAGE END, STORE BLANKS                   MLD
          STM    D.T0,D.Z2                                               MLD
 INIT9    AOD    D.Z2        BUMP D.T0+ POINTER                          MLD
          SBN    5                                                       MLD
          NJN    INIT6       IF NOT 5 PP WORDS                           MLD
          STD    D.Z2        CLEAR POINTER                               MLD
          LDD    D.RA        PUT RA IN A REG                             MLD
          SHN    6                                                       MLD
          ADD    S1          ADD MESSAGE ADDRESS                         MLD
          CWD    D.T0        WRITE ONE WORD FROM D.T0                    MLD
          AOD    S1          UPDATED ADDRESS                             MLD
          AOD    D.Z3        BUMP CM WORD COUNTER                        MLD
          SBN    BD.MSGML                                                MLD
          NJN    INIT6       IF NOT BD.MSGML CM WORDS                    MLD
          STD    D.Z3        CLEAR CM WORD COUNTER                       MLD
          LDM    PPMSGS,D.Z1                                             MLD
          ZJN    INIT10      IF MESSAGE ENDED IN ZERO BYTE               MLD
          AOD    D.Z1        SKIP ZERO BYTE TERMINATOR                   MLD
 INIT10   AOD    D.Z1        BUMP PP MESSAGE ADDRESS TO NEXT MESSAGE     MLD
          LDM    PPMSGS,D.Z1                                             MLD
          NJN    INIT7       IF NOT LAST MESSAGE                         MLD
                                                                         MLD
*         SET DIRECT CELLS.                                              MLD
                                                                         MLD
          STD    S1          CLEAR ABT ADDRESS                           MLD
          STD    S2                                                      MLD
          STD    WT          CLEAR WORDS TRANSMITTED REGISTER            MLD
          STD    BA          CLEAR BEGINNING ADDRESS REGISTER            MLD
          STD    CONNECT     CLEAR CONNECTED FLAG                        MLD
          LDC    500         500 MSEC 
          STM    DLYDCH      MODIFY DELAY USED ON CHANNEL DROP
          LDM    BD.SHARE 
          NJN    INIT10A     IF NOT SHARE MULTIMAINFRAMES 
          LDC    1401B       CODE FOR LDN 1 
          STM    BD.RCH5     MODIFY INSTRUCTION TO RELEASE CHANNEL
 INIT10A  LDC    502B 
          STD    WC          SET DEFAULT VALUE IN WORD COUNT REGISTER    MLD
          LDD    DC                                                      MLD
          SBN    T841                                                    MLD
          ZJN    INIT11      IF 841 DEVICE CODE                          MLD
          LDC    INITA                                                   MLD
          LJM    INIT13      REPORT DEVICE NOT SUPPORTED                 MLD
                                                                         MLD
*         CLEAR STATUS BUFFER AND INSERT CH,EQ AND UNIT.                 MLD
                                                                         MLD
 INIT11   LDN    0                                                       MLD
          STD    D.T0        CLEAR COUNTER                               MLD
 INIT12   LDN    0                                                       MLD
          STM    SB,D.T0     CLEAR STATUS BUFFER                         MLD
          AOD    D.T0                                                    MLD
          SBN    LSB                                                     MLD
          NJN    INIT12      IF ALL WORDS NOT CLEARED                    MLD
          LDM    BD.CHAN                                                 MLD
          STM    SB+4        STORE CHANNEL                               MLD
          LDM    BD.EQ                                                   MLD
          SHN    -9          STORE EQUIPMENT                             MLD
          STM    SB+5                                                    MLD
          LDM    BD.EQ                                                   MLD
          LPN    7                                                       MLD
          STM    SB+6        SAVE UNIT                                   MLD
          LDN    0           INDICATE INITIALIZATION WAS SUCCESSFUL      MLD
 INIT13   LJM    START       RETURN TO BASIC DRIVER ( A=MSG OR ZERO )    MLD
                                                                         MLD
 INITA    DIS    ,*  DEVICE CODE NOT SUPPORTED*                          MLD
                                                                         MLD
*         TABLE OF PPU SPEED SWITCHES.                                   MLD
                                                                         MLD
 TSPEED   VFD    12/RES5                                                 MLD
          VFD    12/RSE2                                                 MLD
          VFD    12/FAN2                                                 MLD
          VFD    12/OUT2                                                 MLD
          VFD    12/SEE12                                                MLD
          VFD    12/SEE15                                                MLD
          DATA   0           END OF SPEED SWITCHES TABLE                 MLD
          EJECT                                                          MLD
          TITLE  ERROR MESSAGES FOR 841 PRODUCT OVERLAY.                 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.DNA,EC.DNA,(ALL DATA OUTPUT NOT ACCEPTED)            MLD
          MMSG   ER.IDR,EC.IDR,(INCOMPLETE DATA RETURNED TO PP)          MLD
          MMSG   ER.CNC,EC.CNC,(CONTROLLER NOT CONNECTED)                MLD
          MMSG   ER.ALTL,EC.ALTL,(ACCESS LEVEL TOO LOW FOR REQ)          MLD
          MMSG   ER.AES,EC.AES,(ABNORMAL EQUIP STATUS)                   MLD
          MMSG   ER.UHB,EC.UHB,(UNIT HUNG BUSY ON SEEK)                  MLD
          MMSG   ER.DCE,EC.DCE,(DATA COMPARE ERROR)                      MLD
          MMSG   ER.UNR,EC.UNR,(UNIT NOT READY)                          MLD
          MMSG   ER.CBNA,EC.CBNA,(SEEK CYL BYTE NOT ACCEPTED)            MLD
          MMSG   ER.SBNA,EC.SBNA,(SEEK SEC/TRK BYTE NOT ACCEPTED)        MLD
          MMSG   ER.TP,EC.TP,(668X TRANSMISSON PARITY)                   MLD
          MMSG   ER.IER,EC.IER,(668X INT OR EXT REJECT)                  MLD
          MMSG   ER.NIEF,EC.NIEF,(NO INACTIVE TO LAST EQUIP FUNC)        MLD
          MMSG   ER.NI8F,EC.NI8F,(NO INACTIVE TO LAST 668X FUNC)         MLD
          MMSG   ER.ESNR,EC.ESNR,(EQUIP STATUS NOT RETURNED)             MLD
          MMSG   ER.8SNR,EC.8SNR,(668X STATUS NOT RETURNED)              MLD
          MMSG   ER.ILL,EC.ILL,(ILLEGAL COMMAND OR PARAMETER),1          MLD
 MMSGL.   EQU    MMSGL
          DATA   0                                                       MLD
****                                                                     MLD
 TCHAN    EQU    *           CREATE CHANNEL TABLE                        MLD
          LIST   D                                                       MLD
          HERE                                                           MLD
          LIST   *                                                       MLD
          DATA   0           END OF CHANNEL TABLE                        MLD
                                                                         MLD
          IFEQ   NOS,1                                                   MLD
 .1       SET    POVLA                                                   MLD
 .2       SET    10000B                                                  MLD
 .3       SET    *-.1+5+4+500B                                           MLD
 .4       SET    .2-.1+5-1                                               MLD
          ERRNG  .2-.1+5-.3/500B*500B-1  BYTES LEFT AFTER LAST SECTOR    MLD
          ERRNG  .3/500B*500B-5-*+.1-5   BYTES LEFT IN LAST SECTOR       MLD
          ERRNG  .4/500B*500B-5-*+.1-5   BYTES CAN BE ADDED TO OVERLAY   MLD
          ENDIF                                                          MLD
                                                                         MLD
          IFEQ   NOSBE,1,1                                               MLD
          ERRPL  *-7773B     ERROR IF 66X OVERLAY OVERFLOW               MLD
          QUAL   *                                                       MLD
