      HED MAG TAPE DUMP * *  IF THE MAG TAPE SELECT CODE IS NON-ZERO, TSB IS DUMPED IN ITS*  ENTIRETY.  ON MAG TAPE FAILURES (HLT 11 OCT) THE DUMP MAY BE *  RETRIED BY CORRECTING THE CAUSE OF ERROR AND PRESSING 'RUN'. *       ORG 10000BMTDMP LDB MAGSC     LOAD MAG TAPE SELECT CODE       SZB,RSS       NON-ZERO?       JMP MTDM8     NO      ELB,CLE,ERB   CLEAR BIT15                  [F]      JSB MTDIN     YES, CONFIGURE MAG TAPE DRIVER*                                   * **  MOVE USER LIBRARY TRACK TABLE  ** *                                   * * *  THE AREA OCCUPIED BY THE USER LIBRARY TRACK TABLE IS OVERWRITTEN *  DURING THE MAG TAPE DUMP.  TO INSURE RESTARTIBILITY OF THE DUMP*  AFTER A MAG TAPE FAILURE, THE TABLE IS MOVED TO A SECTION OF *  CORE WHICH IS OTHERWISE UNUSED.*       LDA DM255     SET LENGTH      STA DTMP0       OF MOVE       LDA DULTB     SET       STA DTMP1       DESTINATION ADDRESS       LDB DULTT,I   LOAD SOURCE ADDRESS MTDM0 LDA 1,I       MOVE      STA DTMP1,I     A WORD      INB           ADVANCE       ISZ DTMP1       POINTERS      ISZ DTMP0     DONE?       JMP MTDM0     NOMTDM1 EQU *                                      [F]      LDB MSTOC     B => STA XWNEC,I             [F]      CLA,INA       A = WRITE REQUEST CODE       [F]MTVFS EQU *         COME HERE FOR VERIFY START   [F]      STA MTVFL     STORE REQUEST CODE           [F]      STB MTVLC     SET 3030 DRIVER FOR VERIFY   [F]      STB MTVLQ     SET 7970 FOR VERIFY          [F]MTRWD JSB MTD       REWIND                       [F]      OCT 3           TAPE      JSB MTD       GET                          [F]      OCT 7           STATUS                     [F]      RRL 9                                      [F]      SSB,RSS       START OF TAPE?               [F]      JMP MTRWD     NO                           [F]*                          ***  DUMP EQUIPMENT TABLE  ***                          *      LDA BPLEN     READ      STA WORDN,I     SYSTEM                     [F]      LDA BSPGA         BASE PAGE       LDB BASPG           INTO      JSB DISCN,I           CORE                 [F]      LDA DM64      WRITE       LDB DDIRA       EQUIPMENT       JSB MTWR          TABLE TO TAPE            [F]*                   * **  DUMP ID TABLE  ** *                   *       LDB IDLEN     READ      STB WORDN,I                                [F]      LDA IDLOC       ID TABLE      LDB DTRKR       JSB DISCN,I       FROM DISC                [F]      LDA IDLEN     WRITE       LDB DTRKB       ID TABLE      JSB MTWR        ID TABLE TO TAPE           [F]*                      ***  DUMP TRACK TABLE  ***                      *      LDA DM255     WRITE       STA DTMP0       LDB DULTB       USER LIBRARY TRACK TABLE      STB DTMP1       JSB MTWR          TO TAPE                  [F]*                              ***  DUMP USER LIBRARY TRACKS  ***                              ** *  NON-ZERO ENTRIES IN THE USER LIBRARY TRACK TABLE HOLD THE*  LENGTH IN -WORDS FOR EACH DISC TRACK CONTAINING USER LIBRARY *  PROGRAMS.  EACH SUCH TRACK IS DUMPED AS ONE RECORD IF NO *  LONGER THAN 5440 WORDS, OTHERWISE AS TWO RECORDS.*       LDA DB400     LOAD DISC ADDRESS 0,1,0 MTDM2 LDB DTMP1,I   USER LIBRARY      SZB,RSS         TRACK?      JMP MTDM3     NO      STB WORDN,I   YES, SAVE LENGTH             [F]      STA DTMP2       AND DISC ADDRESS      LDB DTRKR     READ USER PROGRAMS      JSB DISCN,I     FROM DISC                  [F]      LDB DTRKB     LOAD BUFFER ADDRESS       LDA WORDN,I   WORD COUNT                   [F]      ADA D5440     GREATER       SSA,RSS         THAN 5440?      JMP MTDE1     NO      STA CCNT      YES, SAVE EXCESS COUNT      LDA N5440     WRITE BLOCK       JSB MTWR        OF 5440 WORDS              [F]      LDA CCNT      LOAD WORD COUNT       LDB DTRKB     COMPUTE BUFFER      ADB D5440       FOR REMAINDER       RSS MTDE1 LDA WORDN,I   WRITE TRACK                  [F]      JSB MTWR        TO TAPE                    [F]      LDA DTMP2     UPDATE DISC ADDRESS MTDM3 ADA DB400       TO NEXT TRACK       ISZ DTMP1     INCREMENT TABLE POINTER       ISZ DTMP0     ALL TRACKS CONSIDERED?      JMP MTDM2     NO*                           * **  DUMP DIRECTORY TRACKS  ** *                           * * *  EACH DIRECTORY TRACK OF NON-ZERO LENGTH IS DUMPED AS ONE *  RECORD.  AN END-OF-FILE MARK FOLLOWS THE LAST TRACK DUMPED.*       LDA DM4       SET COUNTER FOR       STA DTMP0       DIRECTORY TRACKS      LDA DDIRA     LOAD DIRECTORYMTDM4 LDB 0,I         LENGTH      ADA D.6       COMPUTE POINTER TO DISC ADDRESS       SZB,RSS       EMPTY DIRECTORY TRACK?      JMP MTDM5     YES       STA DTMP1     NO, SAVE TABLE POINTER      STB WORDN,I   READ                         [F]      LDA 0,I         DIRECTORY       LDB DTRKR         TRACK       JSB DISCN,I         FROM DISC              [F]      LDA WORDN,I   WRITE                        [F]      LDB DTRKB       DIRECTORY TRACK       JSB MTWR          TO TAPE                  [F]      LDA DTMP1     UPDATEMTDM5 INA             TABLE POINTER       ISZ DTMP0     ALL FOUR DISCS CONSIDERED?      JMP MTDM4     NO      JSB MTWF      YES, WRITE EOF MARK          [F]*                 * **  DUMP SYSTEM  ** *                 * * *  THE SYSTEM IS READ INTO CORE IN ITS ENTIRETY.  IT IS DUMPED IN *  SEGMENTS AS DEFINED IN THE SYSTEM SEGMENT INFORMATION TABLE. *       LDA MTBLN     WRITE SYSTEM      LDB MLTBA       SEGMENT TABLE       JSB MTWR          TO TAPE                  [F]      LDA JSYS2,I   LOAD                         [F]      STA WORDN,I                                [F]      LDA JDRTT,I                                [F]      LDB JSAD2,I     SYSTEM                     [F]      JSB DISCN,I                                [F]      LDA JSYS3,I                                [F]      STA WORDN,I       FROM                     [F]      LDA JDRT1,I                                [F]      LDB JSAD3,I                                [F]      JSB DISCN,I         DISC                   [F]      LDA MLTBA     SET TABLE       STA DTMP1       POINTER       LDA MLTBL     SET       INA             SEGMENT       STA DTMP0         COUNTER MTDM6 ISZ DTMP1     LOAD      DLD DTMP1,I     TABLE       ISZ DTMP1         ENTRY       JSB MTWR      WRITE SEGMENT TO TAPE        [F]      ISZ DTMP0     MORE SEGMENTS?      JMP MTDM6     YES *                         * **  DUMP SYSTEM LIBRARY  ** *                         * * *  THE SYSTEM LIBRARY IS DUMPED ONE PROGRAM AT A TIME.  AN*  END-OF-FILE MARK FOLLOWS THE LAST ONE. *       LDA COM6A,I   SET POINTER TO ADDRESS TABLE      STA DTMP1       OF SYSTEM LIBRARY PROGRAMS      LDB DM64      READ      STB WORDN,I                                [F]      LDA DTMP1,I     LENGTH TABLE      LDB DMTRL       STB DTMP2         OF SYSTEM       ADB B100K       JSB DISCN,I         LIBRARY PROGRAMS       [F]      LDA DTMP2,I   SET ENTRY COUNTER       STA DTMP0       OF LENGTH TABLE MTDM7 LDA DTMP2,I   READ      STA WORDN,I     SYSTEM                     [F]      LDA DTMP1,I       LIBRARY       LDB DTRKR           PROGRAM       JSB DISCN,I           FROM DISC            [F]      LDA DTMP2,I   WRITE       LDB DTRKB       IT TO       JSB MTWR          TAPE                     [F]      ISZ DTMP1     ADVANCE       ISZ DTMP2       POINTERS      ISZ DTMP0     DONE?       JMP MTDM7     NO      JSB MTWF      YES, WRITE EOF MARK          [F]      LDA MTVFL     WAS THIS PASS VERIFY         [F]      SZA,RSS                                    [F]      JMP MTDMV     VERIFY COMPLETED OKAY        [F]      JSB MTD       REWIND                       [F]      OCT 3                                      [F]MTESQ EQU *                                      [F]      LDA D.10                                   [F]      LDB VRFYA     PRINT "VERIFY"               [F]      JSB TT35I,I     QUESTION                   [F]      CLA                                        [F]      JSB TT35I,I   CALL FOR INPUT               [F]      JSB MGTCA,I   GET THE FIRST CHARACTER      [F]      JMP MTENR     EMPTY LINE IS ERROR          [F]      CPA .Y        OPERATOR TYPE "YES"?         [F]      JMP MTGVT     YES, GO VERIFY TAPE          [F]      CPA .N        OPERATOR TYPE "NO"?          [F]      JMP MTDMU     MUST NOT DESIRE VERIFY       [F]MTENR EQU *                                      [F]      LDA DB17                                   [F]      LDB ILINM     "ILLEGAL INPUT"              [F]      JSB TT35I,I   COMPLAIN ABOUT QUALITY OF    [F]      JMP MTESQ     ANSWER.                      [F]MTGVT EQU *                                      [F]      CLA           CODE FOR VERIFY              [F]      LDB MCPAC     LOAD COMPARE INSTRUCTION     [F]      JMP MTVFS     REPEAT SLEEP PROCESS,        [F]*                                   WITH MINOR CHANGES           [F]MTDMU CLA           SPACE ZERO FILES AND         [F]      CLB,INB       ONE RECORD FORWARD           [F]      JSB MTD                                    [F]      OCT 4                                      [F]      JMP MTDER                                  [F]      JMP MTDER                                  [F]MTDMV EQU *                                      [F]      JSB MTD       REWIND AND      OCT 5           STANDBY MTDM8 LDA ADD2K,I   SET       STA ADD3K,I     ALL       LDB ADD4K         STARTING      LDA HLT22           SEQUENCES       STA 1,I               TO PRODUCE      INB                     AN IRRECOVERABLE      LDA JMPM1                 HLT 22B       STA 1,I       LDA DB10      PRINT       LDB DONEA       'DONE'      JSB TT35I,I                                [F]      HLT 77B       ALLOW NEW DUMP               [E]      JMP MTDM1       ON 'RUN'                   [E]* ADD2K OCT 2000      UTILITY WORDS FOR ADD3K OCT 3000ADD4K DEF LDR+1       DISABLING LOADER WITHOUT   [F]HLT22 HLT 22B JMPM1 OCT 26000         RELOADING TSB LOADER TAPE *                                                                [F]MTWR  NOP           WRITE OR VERIFY RECORD       [F]      STA MTWF      SAVE BUFFER LENGTH           [F]      JSB MTD                                    [F]MTVFL OCT 1         THIS WORD IS A ONE FOR SLEEP,[F]*                                   CHANGED TO A ZERO FOR VERIFY [F]      JMP MTDER     TAPE                         [F]      JMP MTDER       ERRORS                     [F]      CPA MTWF      CHECK RECORD LENGTH          [F]      JMP MTWR,I                                 [F]*                ***  TAPE ERROR  ***                *MTDER CLC 0,C                                    [F]      LDA D.24      PRINT                        [F]      LDB TAPMA       TAPE ERROR      JSB TT35I,I       MESSAGE                  [F]      HLT 11B       WAIT FOR      JMP MTDM1       RETRY *                                                                [F]MTWF  NOP           TO WRITE OR VERIFY FILE MARK [F]      CLA                                        [F]      CPA MTVFL     WRITE OR VERIFY?             [F]      JMP MTWFY     VERIFY                       [F]      JSB MTD       WRITE AN EOF MARK            [F]      OCT 2                                      [F]      JMP MTDER     TAPE                         [F]      JMP MTDER       ERRORS                     [F]      JMP MTWF,I                                 [F]MTWFY EQU *                                      [F]      LDA DM5       TRY TO READ A SHORT          [F]      LDB DTRKB       RECORD INTO BUFFER         [F]      JSB MTD                                    [F]      OCT 0                                      [F]      JMP MTWFZ                                  [F]      JMP MTDER     EXPECT END OF FILE           [F]      JMP MTDER     EXPECT END OF FILE           [F]MTWFZ CPB DB200     EOF STATUS?                  [F]      JMP MTWF,I    YES, OKAY                    [F]      JMP MTDER     NO                           [F]     SPC 5*                                      ***  SYSTEM SEGMENT INFORMATION TABLE  ***                                      ** *  THE FIRST WORD OF THE TABLE GIVES THE NUMBER OF SEGMENTS.  THE *  TWO-WORD SEGMENT ENTRIES ARE THE LENGTH OF THE SEGMENT IN -WORDS *  AND THE ABSOLUTE CORE ADDRESS. * MLTBL DEC -5        SYSTEM      ABS 2-13B       OCT 2           SEGMENT BPLEN ABS 200B-2000B                             [F]      OCT 200           TABLE       ABS LSLTB-LSLTE       DEF LSLTB       ABS 14000B-37300B       OCT 14000 MLTBE EQU * MLTBA DEF MLTBL     SYSTEM SEGMENT TABLE ADDRESSMTBLN ABS MLTBL-MLTBE    SYSTEM SEGMENT TABLE LENGTH      HED MAG TAPE DRIVERS                       [F]CMND  EQU 0 DATA  EQU 0 * * CALLING SEQUENCE: (WRITE/READ)*     LDA <BUFFER LENGTH>  (>0=CHARS, <0=WORDS) *     LDB <BUFFER ADDRESS>*     JSB MTAPE,I *     OCT <COMMAND CODE>  (0=READ, 1=WRITE) *     <EOF/EOT RETURN>*     <ERROR RETURN>*     <NORMAL RETURN>  (A)=RECORD LENGTH, (B)=STATUS* *     READ AND WRITE REQUESTS OF 0 LENGTH ARE RETURNED*      BY THE DRIVER TO THE NORMAL RETURN LOCATION*      WITHOUT ANY TAPE MOVEMENT. * *     THE FIRST WORD OF 2 BYTES WRITTEN ON TAPE IS THE*      USER'S REQUEST LENGTH.  THIS WORD IS NOT STORED*      IN THE USER'S BUFFER BY A READ REQUEST, BUT IS *      LEFT IN THE A REGISTER IN THE FORM WHICH THE *      USER SPECIFIED (+CHARACTERS OR -WORDS) AS THE*      TAPE RECORD LENGTH IF THE TAPE RECORD < THE*      BUFFER REQUEST LENGTH. * *     SINCE THE MINIMUM TAPE RECORD LENGTH WHICH CAN BE *      WRITTEN OR READ IS 12 CHARACTERS OR 6 WORDS, *      WRITE REQUESTS SMALLER THAN 5 WORDS WILL BE*      WRITTEN AS AN EXTENDED RECORD OF 6 WORDS *      (INCLUDING THE RECORD LENGTH WORD).* *     ALL USER READ BUFFERS SHOULD HAVE A MINUMUM STORAGE *      AREA OF 5 WORDS SINCE THE SMALLEST RECORD THAT CAN *      BE READ FROM THE TAPE IS 6 WORDS.  THE RECORD LENGTH *      WORD IS STRIPPED BY THE DRIVER AND IS NOT STORED IN*      THE USER BUFFER. * * CALLING SEQUENCE: (REWIND/REWIND STANDBY/STATUS)*     JSB MTAPE,I *     OCT <COMMAND CODE>  (3=REWIND, 7=STATUS,*     <NORMAL RETURN>        5=REWIND & STANDBY)* * * CALLING SEQUENCE:  (GAP/WRITE END OF FILE)*     JSB MTAPE,I *     OCT <COMMAND CODE>  (6=GAP, 2=END OF FILE)*     <EOF/EOT RETURN>*     <ERROR RETURN>*     <NORMAL RETURN>     (B) = STATUS* * * CALLING SEQUENCE:  (POSITION) *     LDA <FILE COUNT>     (+=FORWARD, -=REVERSE) *     LDB <RECORD COUNT>       "          " *     JSB MTAPE,I *     OCT 4 *     <EOF/EOT RETURN>*     <ERROR RETURN>*     <NORMAL RETURN>   (A)=FILE COUNT, (B)=STATUS* *         A BACKFILE LEAVES THE TAPE POSITIONED ON THE SIDE OF*          THE N-TH FILE MARK (-N IN A FOR BACKFILE) AWAY FROM*          LOAD POINT. THUS (A) = -2 LEAVES THE TAPE AT THE *          BEGINNING OF THE FILE PRECEEDING THE CURRENT FILE. * *         RECORD OPERATIONS WILL MOVE THE TAPE THE APPROPRIATE*          # OF RECORDS. THE FILE MARK IS COUNTED AS 1 RECORD.* *         COMMANDS TRYING TO CROSS THE SOT OR EOT MARKERS WILL*          CAUSE AN EXIT TO THE END OF TAPE RETURN POINT. * *         END OF TAPE ON READ, WRITE OR GAP WILL BE CHECKED *          BEFORE THE OPERATION IS INITIATED. * *    TAPE COMMANDS -*     OCT 0 - READ*         1 - WRITE *         2 - WRITE END OF FILE *         3 - REWIND*         4 - POSITION*         5 - REWIND AND STANDBY*         6 - GAP (3" BLANK TAPE) *         7 - STATUS (RETURNS STATUS IN -B- ) * *                                                                [F]* * THE STATUS WORD BIT ASSIGNMENTS FOR THE 3030 ARE:              [F]* * BIT   MEANING *  0  BUSY (TAPE IN MOTION OR LOCAL STATUS) *  1  PARITY ERROR*  2  WRITE NOT ENABLED OR TAPE REWINDING *  3  REJECT: 1 MOTION REQ'D AND CONTROLLER BUSY*             2 BACKWARD MOTION REQ'D & AT LOAD POINT *             3 WRITE COMMAND GIVEN AND NO WRITE RING *  4  TIMING ERROR*  5  END OF TAPE *  6  START OF TAPE *  7  END OF FILE *  8  LOCAL MODE*                                                                [F]* THE STATUS WORD BIT ASSIGNMENTS FOR THE 7970 ARE:              [F]*                                                                [F]* BIT   MEANING                                                  [F]*                                                                [F]*  0  TAPE UNIT NOT ON-LINE                                      [F]*  1  PARITY AND/OR TIMING ERROR                                 [F]*  2  FILE PROTECTED (NO WRITE ENABLE RING)                      [F]*  3  REJECT: 1  MOTION REQ'D AND CONTROLLER BUSY                [F]*             2  BACKWARD MOTION REQ'D & AT LOAD POINT           [F]*             3  WRITE COMMAND GIVEN AND NO WRITE RING           [F]*  4  TIMING ERROR                                               [F]*  5  END OF TAPE                                                [F]*  6  START OF TAPE                                              [F]*  7  END OF FILE                                                [F]*  8  CONTROLLER BUSY                                            [F]*  9  TAPE UNIT NOT READY                                        [F]* 10  TAPE UNIT REWINDING                                        [F]* 11  ODD NUMBER OF BYTES READ                                   [F]