T4SDFIO

Table Of Contents
  • [00004] LIBF SDFIO FORTRAN DISK FILE RD/WRT
t4sdfio.lst
ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov  1 19:25:08 2020
 
Source File: \t4sdfio.asm 
LIBF SDFIO   FORTRAN DISK FILE RD/WRT
 
                             2 | *************************************************** T4A00020
                             3 | *STATUS-VERSION 2, MODIFICATION 7                 * T4A00030
                             4 | *                                                 * T4A00040
                             5 | *FUNCTION/OPERATION-                              * T4A00050
                             6 | *   * SERVICES THE DISK I/O STATEMENTS            * T4A00060
                             7 | *   * SUPPORTED BOTH STANDARD AND EXTENDED PREC   * T4A00070
                             8 | *   * ROUTINE REWRITTEN IN MOD 7                    T4A00080
                             9 | *                                                 * T4A00090
                            10 | *ENTRY POINTS-                                    * T4A00100
                            11 | *   LIBF      SDFIO      CALL TO INITIALIZE       * T4A00110
                            12 | *   DC        PRECISION                           * T4A00120
                            13 | *                                                 * T4A00130
                            14 | *   LIBF      SDRED      CALL TO READ             * T4A00140
                            15 | *   DC        ADDR1      ADDR OF FILE NO.         * T4A00150
                            16 | *   DC        ADDR2      ADDR OF RCD NO.          * T4A00160
                            17 | *                                                 * T4A00170
                            18 | *   LIBF      SDWRT      CALL TO WRITE            * T4A00180
                            19 | *   DC        ADDR1      ADDR OF FILE NO.         * T4A00190
                            20 | *   DC        ADDR2      ADDR OF RCD NO.          * T4A00200
                            21 | *                                                 * T4A00210
                            22 | *   LIBF      SDI        CALL FOR NON-SUBSC INTGER* T4A00220
                            23 | *   DC        ADDR       ADDRESS OF VARIABLE      * T4A00230
                            24 | *                                                 * T4A00240
                            25 | *   LIBF      SDF        CALL FOR NON-SUBSC REAL  * T4A00250
                            26 | *   DC        ADDR       ADDR OF VARIABLE         * T4A00260
                            27 | *                                                 * T4A00270
                            28 | *   LIBF      SDIX       CALL FOR SUBSC INTEGER   * T4A00280
                            29 | *   DC        ADDR       ADDR OF BASE VARIABLE    * T4A00290
                            30 | *                        XR1 CONTAINS SUBSCRIPT   * T4A00300
                            31 | *                                                 * T4A00310
                            32 | *   LIBF      SDFX       CALL FOR SUBSC REAL      * T4A00320
                            33 | *   DC        ADDR       ADDR OF BASE VARIABLE    * T4A00330
                            34 | *                        XR1 CONTAINS SUBSCRIPT   * T4A00340
                            35 | *                                                 * T4A00350
                            36 | *   LIBF      SDAI       CALL FOR INTEGER ARRAY   * T4A00360
                            37 | *   DC        ADDR       ADDR FIRST ELT OF ARRAY  * T4A00370
                            38 | *   DC        COUNT      COUNT OF ELT IN ARRAY    * T4A00380
                            39 | *                                                 * T4A00390
                            40 | *   LIBF      SDAF       CALL FOR REAL ARRAY      * T4A00400
                            41 | *   DC        ADDR       ADDR FIRST ELT OF ARRAY  * T4A00410
                            42 | *   DC        COUNT      COUNT OF ELT IN ARRAY    * T4A00420
                            43 | *                                                 * T4A00430
                            44 | *   LIBF      SDCOM      CALL FOR I/O COMPLETE    * T4A00440
                            45 | *                                                 * T4A00450
                            46 | *INPUT-N/A                                        * T4A00460
                            47 | *                                                 * T4A00470
                            48 | *OUTPUT-N/A                                       * T4A00480
                            49 | *                                                 * T4A00490
                            50 | *EXTERNAL REFERENCES                              * T4A00500
                            51 | *   SUBROUTINES                                   * T4A00510
                            52 | *      * DZ000                                    * T4A00520
                            53 | *      * PAUSE                                      T4A00530
                            54 | *   COMMA/DCOM-                                   * T4A00540
                            55 | *      * $EXIT                                    * T4A00550
                            56 | *      * $PRET                                    * T4A00560
                            57 | *      * $FPAD                                    * T4A00570
                            58 | *      * $WRD1                                    * T4A00580
                            59 | *      * $DBSY                                    * T4A00590
                            60 | *                                                 * T4A00600
                            61 | *EXITS-                                           * T4A00610
                            62 | *   NORMAL-                                       * T4A00620
                            63 | *       *RETURN TO LAST CALL PARAMETER + 1        * T4A00630
                            64 | *   ERROR-                                        * T4A00640
                            65 | *       *CALL EXIT IF FILE NOT FOUND              * T4A00650
                            66 | *                                                 * T4A00660
                            67 | *TABLES-                                          * T4A00670
                            68 | *       DEFINE FILE ENTRY TABLE ENTRIES (7 WORDS  * T4A00680
                            69 | *       PER FILE) IMMEDIATELY FOLLOWS CORE IMAGE  * T4A00690
                            70 | *       HEADER.  IT IS CREATED BY THE COMPILER OR * T4A00700
                            71 | *       ASSEMBLER AS PART OF THE MAINLINE PROGRAM.* T4A00710
                            72 | *       IT IS MODIFIED BY THE CORE LOAD BUILDER.  * T4A00720
                            73 | *       IT IS USED TO CONNECT LOGICAL FILE NUMBER * T4A00730
                            74 | *       REFERENCES TO FILE LOCATIONS ON DISK.     * T4A00740
                            75 | *                                                 * T4A00750
                            76 | *WORK AREAS-                                      * T4A00760
                            77 | *       29TH WORD OF CORE IMAGE HEADER IS CHECKSUM* T4A00770
                            78 | *       OF CORE IMAGE HEADER AND FILE ENTRY TABLE.* T4A00780
                            79 | *                                                 * T4A00790
                            80 | *   ATTRIBUTES-N/A                                * T4A00800
                            81 | *                                                 * T4A00810
                            82 | *   NOTES-N/A                                     * T4A00820
                            83 | *                                                 * T4A00830
                            84 | *************************************************** T4A00840
                            85 | *     EJCT        BLK REMOVED                       T4A00850
                            86 |       LIBR                                          T4A00860
                            87 |       ENT     SDFIO      INITIALIZATION             T4A00870
                            88 |       ENT     SDAF       REAL ARRAY                 T4A00880
                            89 |       ENT     SDAI       INTEGER ARRAY              T4A00890
                            90 |       ENT     SDCOM      READ/WRITE COMPLETE        T4A00900
                            91 |       ENT     SDF        UNSUBSCRIPTED REAL         T4A00910
                            92 |       ENT     SDFX       SUBSCRIPTED REAL           T4A00920
                            93 |       ENT     SDI        UNSUBSCRIPTED INTEGER      T4A00930
                            94 |       ENT     SDIX       SUBSCRIPTED INTEGER        T4A00940
                            95 |       ENT     SDRED      READ                       T4A00950
                            96 |       ENT     SDWRT      WRITE                      T4A00960
                            97 | *                                                   T4A00970
0028                        98 | $PRET EQU     /0028      TRAP FOR PREOPERATIVE I/O  T4A00980
                            99 | *                        ERRORS                     T4A00990
0038                       100 | $EXIT EQU     /0038      ENTRY PT FOR EXIT/CALL     T4A01000
                           101 | *                        EXIT STMNT                 T4A01010
007B                       102 | $WRD1 EQU     /007B      ADDR OF CORE IMAGE HEADER  T4A01020
0095                       103 | $FPAD EQU     /0095      ADDR OF FILES TABLE        T4A01030
00EE                       104 | $DBSY EQU     /00EE      NON-ZERO IF DISKZ IS BUSY  T4A01040
00F2                       105 | DZ000 EQU     /00F2      DISK I/O ROUTINE           T4A01050
                           106 | *                                                   T4A01060
                           107 | *             CALCULATE, CHECK CHECK-SUM OF         T4A01070
                           108 | *             CI HEADER AND DEFINE FILE TABLES.     T4A01080
                           109 | *                                                   T4A01090
0000 0000                  110 | SI000 DC      *-*        LINK                       T4A01100
0001 6A16                  111 |       STX   2 SI040+1    SAVE XR2                   T4A01110
0002 6680 007B             112 |       LDX  I2 $WRD1      SET CI HEADER POINTER      T4A01120
0004 C203                  113 |       LD    2 3          FILE COUNT                 T4A01130
0005 A01C                  114 |       M       SI091      MULTIPLY BY 7              T4A01140
0006 1090                  115 |       SLT     16                                    T4A01150
0007 8204                  116 |       A     2 4          ADD CI HEADER LENGTH       T4A01160
0008 D01A                  117 |       STO     SI092      SAVE IN COUNTER            T4A01170
0009 8200                  118 | SI010 A     2 0          ADD WORD                   T4A01180
000A 4802                  119 |       BSC     C          SKIP IF NO CARRY           T4A01190
000B 8015                  120 |       A       SI900+1    ADD 1                      T4A01200
000C 7201                  121 |       MDX   2 1          INCREMENT TO NEXT WORD     T4A01210
000D 74FF 0023R            122 |       MDX  L  SI092,-1   SKIP IF THROUGH            T4A01220
000F 70F9                  123 |       MDX     SI010      CONTINUE CHECK-SUMMING     T4A01230
                           124 | *                                                   T4A01240
0010 7400 00B9R            125 |       MDX  L  SI933,0    SKIP IF INITIAL CALL       T4A01250
0012 7008                  126 |       MDX     SI050      BRANCH IF CHECK            T4A01260
                           127 | *                                                   T4A01270
                           128 | *             INITIALIZE CHECK-SUM                  T4A01280
                           129 | *                                                   T4A01290
0013 6680 007B             130 |       LDX  I2 $WRD1                                 T4A01300
0015 F00E                  131 |       EOR     SI093      COMPLIMENT CHECK-SUM       T4A01310
0016 D21C                  132 |       STO   2 28         STORE IN HEADER            T4A01320
                           133 | *                                                   T4A01330
0017 6600 0000             134 | SI040 LDX  L2 *-*        RESTORE XR2                T4A01340
0019 4C80 0000R            135 |       BSC  I  SI000      RETURN                     T4A01350
                           136 | *                                                   T4A01360
                           137 | *             CHECK CHECK-SUM                       T4A01370
                           138 | *                                                   T4A01380
001B 8005                  139 | SI050 A       SI900+1    ADD 1 TO CHECK SUM         T4A01390
001C 4C18 0017R            140 |       BSC  L  SI040,+-   RETURN IF SUM IS ZERO      T4A01400
                           141 | *                                                   T4A01410
001E C006                  142 |       LD      SI094      INDICATE ERROR F10A        T4A01420
001F 7071                  143 |       MDX     SI121      GO DISPLAY ERROR           T4A01430
                           144 | *                                                   T4A01440
                           145 | *                                                   T4A01450
0020                       146 |       BSS  E  0                                     T4A01460
0020 0000                  147 | SI900 DC      0          DOUBLE WORD            (E) T4A01470
0021 0001                  148 |       DC      1          *ONE                   (O) T4A01480
0022 0007                  149 | SI091 DC      7          USEFUL CONSTANT            T4A01490
0023 0000                  150 | SI092 DC      *-*        COUNTER FOR CHECK-SUM      T4A01500
0024 FFFF                  151 | SI093 DC      /FFFF      USEFUL CONSTANT            T4A01510
0025 F10A                  152 | SI094 DC      /F10A      BAD CHECK-SUM ERROR CODE   T4A01520
0026 F103                  153 | SI095 DC      /F103      NOT INITIALIZED ERROR CODE T4A01530
0027 0000                  154 | SI910 DC      *-*        NUMBER OF FILES            T4A01540
0028 7FFF                  155 | SI911 DC      /7FFF      MASK TO CLEAR SIGN BIT     T4A01550
0029 0095                  156 | SI926 DC      $FPAD      ADDR OF LOGICAL DRIVE ADDR T4A01560
002A 00BAR                 157 | SI937 DC      SI934      BASE ADDR OF PREC TABLE    T4A01570
                           158 | *                                                   T4A01580
002B 2000                  159 | SDF   LDS     0          REAL VARIABLE              T4A01590
002C 6680 0000             160 |       LDX  I2 *-*        ENTRY POINT                T4A01600
002E 7007                  161 |       MDX     SI060      GO TO GET COUNT            T4A01610
                           162 | *                                                   T4A01620
002F 2000                  163 | SDAF  LDS     0          REAL ARRAY                 T4A01630
0030 6680 0000             164 |       LDX  I2 *-*        ENTRY POINT                T4A01640
0032 7008                  165 |       MDX     SI064      GO TO INTEGER ARRAY        T4A01650
                           166 | *                                                   T4A01660
0033 2002                  167 | SDI   LDS     2          INTEGER VARIABLE           T4A01670
0034 6680 0000             168 |       LDX  I2 *-*        ENTRY POINT                T4A01680
0036 C8E9                  169 | SI060 LDD     SI900      PUT ONE IN EXTENSION       T4A01690
0037 7012                  170 |       MDX     SI072      GO TO COMMON ROUTINE       T4A01700
                           171 | *                                                   T4A01710
0038 2002                  172 | SDAI  LDS     2          INTEGER ARRAY              T4A01720
0039 6680 0000             173 |       LDX  I2 *-*        ENTRY POINT                T4A01730
003B C201                  174 | SI064 LD    2 1          GET COUNT OF ELEMENTS IN   T4A01740
003C 18D0                  175 |       RTE     16         *ARRAY INTO EXTENSION      T4A01750
003CR                      176 | SI902 EQU     *-1        INSTRUCTION CONSTANT       T4A01760
003D C200                  177 |       LD    2 0          LOAD ADDR OF 1ST ELT       T4A01770
003E 7201                  178 |       MDX   2 1          UP XR2 FOR EXIT ADDR       T4A01780
003F 2878                  179 |       STS     SI932      SAVE STATUS (REAL/INTEGER) T4A01790
0040 700B                  180 |       MDX     SI074      GO TO COMMON ROUTINE       T4A01800
                           181 | *                                                   T4A01810
0041 2000                  182 | SDFX  LDS     0          REAL SUBSCRIPTED VARIABLE  T4A01820
0042 6680 0000             183 |       LDX  I2 *-*        ENTRY POINT                T4A01830
0044 7003                  184 |       MDX     SI070      GO TO INTEGER SUBSCRIPTED  T4A01840
                           185 | *                                                   T4A01850
0045 2002                  186 | SDIX  LDS     2          INTEGER SUBSCRIPTED VAR    T4A01860
0046 6680 0000             187 |       LDX  I2 *-*        ENTRY POINT                T4A01870
0048 696D                  188 | SI070 STX   1 SI930      GET DISPLACEMENT FROM BASE T4A01880
0049 C86C                  189 |       LDD     SI930      ADDR (CONTENTS OF XR1)     T4A01890
004A 286D                  190 | SI072 STS     SI932      SAVE REAL/INTEGER INDR     T4A01900
004B 8200                  191 |       A     2 0          ADD BASE ADDR TO GET       T4A01910
004C D875                  192 | SI074 STD     SI961      ADDR OF ELEMENT            T4A01920
004D C06A                  193 |       LD      SI932      CALCULATE ADDR             T4A01930
004E 80DB                  194 |       A       SI937      *OF PRECISION              T4A01940
004F D001                  195 |       STO     *+1        *CONSTANT                  T4A01950
0050 C400 0000             196 |       LD   L  *-*        GET PRECISION              T4A01960
0052 D400 0130R            197 |       STO  L  SI325+1    SAVE PRECISION             T4A01970
0054 806D                  198 |       A       SI961      INCREMENT USER VARIABLE    T4A01980
0055 90CB                  199 |       S       SI900+1    *ADDR BY                   T4A01990
0056 D06B                  200 |       STO     SI961      *PRECISION - 1             T4A02000
0057 7201                  201 |       MDX   2 1          UP XR2 FOR RETURN          T4A02010
0058 4C00 00DFR            202 |       BSC  L  SI200      GET SET UP FOR RETURN      T4A02020
                           203 | *                                                   T4A02030
005A 2003                  204 | SDRED LDS     3          SET INDR TO READ           T4A02040
005B 6680 0000             205 |       LDX  I2 *-*        ENTRY POINT                T4A02050
005D C0DE                  206 |       LD      SI902      GET RTE 16 INSTRUCTION     T4A02060
005E 7004                  207 |       MDX     SI080      GO TO COMMON ROUTINE       T4A02070
                           208 | *                                                   T4A02080
005F 2001                  209 | SDWRT LDS     1          SET DISK WRITE INDICATOR   T4A02090
0060 6680 0000             210 |       LDX  I2 *-*        SET PT AT PARAMATERS       T4A02100
0062 C051                  211 |       LD      SI920      GET NOP INSTRUCTION        T4A02110
0063 D400 0122R            212 | SI080 STO  L  SI310      MODIFY INSTRUCTION         T4A02120
0065 D400 0146R            213 |       STO  L  SI352      MODIFY INSTRUCTION         T4A02130
0067 2851                  214 |       STS     SI933      SAVE INDR                  T4A02140
0068 6A10                  215 |       STX   2 SI100+1    SAVE XR2                   T4A02150
0069 697B                  216 |       STX   1 SI220+1    SAVE XR1                   T4A02160
                           217 | *                                                   T4A02170
006A 1010                  218 |       SLA     16        CLEAR SWITCH FOR            T4A02180
006B D072                  219 |       STO     SI099     *RCD TOO SMALL              T4A02190
006C C051                  220 |       LD      SDFIO      HAS SDFIO BEEN INITIALIZED T4A02200
006D 4C18 0078R            221 |       BSC  L  SI100,+-   BRANCH IF YES              T4A02210
                           222 | *                                                   T4A02220
006F C050                  223 |       LD      SDFIO+2    IS SDFIO REFERENCED BY A   T4A02230
0070 4C18 0076R            224 |       BSC  L  SI090,+-   LIBF, BR IF NOT            T4A02240
                           225 | *                                                   T4A02250
0072 C480 00C0R            226 |       LD   I  SDFIO+2    WAS IT EVER INITIALIZED    T4A02260
0074 4C20 00BER            227 |       BSC  L  SDFIO,Z    IF YES, INITIALIZE AGAIN   T4A02270
                           228 | *                                                   T4A02280
0076 C0AF                  229 | SI090 LD      SI095      LOAD ERROR CODE F103       T4A02290
0077 7032                  230 |       MDX     SI150      GO TO ERROR ROUTINE        T4A02300
                           231 | *                                                   T4A02310
0078 6600 0000             232 | SI100 LDX  L2 *-*        RESTORE XR2                T4A02320
007A 6100                  233 |       LDX   1 0          SET COUNT                  T4A02330
007B 6947                  234 |       STX   1 SI962      TO ZERO                    T4A02340
                           235 | *                                                   T4A02350
007C 4083                  236 |       BSI     SI000      CHECK CHECK-SUM            T4A02360
                           237 | *                                                   T4A02370
007D 6580 007B             238 |       LDX  I1 $WRD1      SET HEADER POINTER         T4A02380
007F C103                  239 |       LD    1 3          LOAD FILE COUNT            T4A02390
0080 D0A6                  240 |       STO     SI910      SAVE CNT                   T4A02400
0081 4C08 0090R            241 |       BSC  L  SI120,+    ERROR IF CNT NOT POS       T4A02410
0083 C104                  242 |       LD    1 4          GET CORE-IMAGE HDR LENGTH  T4A02420
0084 D001                  243 |       STO     *+1                                   T4A02430
0085 7500 0000             244 |       MDX  L1 *-*        INCREMENT PAST HEADER      T4A02440
                           245 | *                                                   T4A02450
0087 C680 0000             246 | SI110 LD   I2 0          GET FILE NO. FROM LIBF     T4A02460
0089 F100                  247 |       EOR   1 0          IS IT FILE AT PT           T4A02470
0089R                      248 | SI096 EQU     *-1        FILE NOT DEFINED ERR F100  T4A02480
008A 4C18 0092R            249 |       BSC  L  SI130,+-   BRANCH IF YES              T4A02490
008C 7107                  250 |       MDX   1 7          MOVE PT TO NEXT TBL ENTRY  T4A02500
008D 74FF 0027R            251 |       MDX  L  SI910,-1   DECREMENT FILE COUNT       T4A02510
008F 70F7                  252 |       MDX     SI110      CONTINUE CHECK             T4A02520
0090 C0F8                  253 | SI120 LD      SI096      LOAD ERROR CODE F100       T4A02530
0091 7018                  254 | SI121 MDX     SI150      GO TO ERROR ROUTINE        T4A02540
                           255 | *                                                   T4A02550
0092 7202                  256 | SI130 MDX   2 2          SET XR2 FOR RETURN         T4A02560
0093 6A53                  257 |       STX   2 SI220+3    TO MAINLINE PROGRAM        T4A02570
0094 C104                  258 |       LD    1 4          GET SECTOR START ADDR      T4A02580
0095 4C10 00A0R            259 |       BSC  L  SI140,-    IS FILE IN WORKING STORAGE T4A02590
0097 E090                  260 |       AND     SI911      YES, CLEAR SIGN BIT        T4A02600
0098 D022                  261 |       STO     SI923      SAVE ADDR                  T4A02610
0099 180C                  262 |       SRA     12         GET PROPER FILE PROTECT    T4A02620
009A 808E                  263 |       A       SI926      ADDR BY ADDING IDX (FROM   T4A02630
009B D001                  264 |       STO     *+1        SRA INSTR) TO ADDR OF 1ST  T4A02640
009C C400 0000             265 |       LD   L  *-*        ITEM IN $FPAD              T4A02650
009E E01E                  266 |       AND     SI925      GET ADDR OF RCD BY ADDING  T4A02660
009F 801B                  267 |       A       SI923      FILE PROTECT ADDR TO       T4A02670
00A0 D400 0175R            268 | SI140 STO  L  SI952      SECTOR START ADDR          T4A02680
00A2 C680 FFFF             269 |       LD   I2 -1         GET RECORD NO. FROM LIBF   T4A02690
00A4 4C08 00A9R            270 |       BSC  L  SI149,+    BRANCH IF NO. INVALID      T4A02700
00A6 9101                  271 |       S     1 1          SUBTRACT NO. RCDS IN FILE  T4A02710
00A7 4C08 00E8R            272 |       BSC  L  SI225,+    BRANCH IF VALID            T4A02720
00A9 C009                  273 | SI149 LD      SI097      LOAD ERROR CODE F101       T4A02730
00AA D010                  274 | SI150 STO     SI923     STORE TEMPORARY             T4A02740
00AB 1706*4885             275 |       LIBF    PAUSE     GO DISPLAY                  T4A02750
00AC 00BBR                 276 |       DC      SI923     *ERROR CODE                 T4A02760
00AD 6038                  277 |       LDX     $EXIT      TERMINATE EXECUTION        T4A02770
00AE C003                  278 | SI155 LD      SI098     SET UP ERROR /F107          T4A02780
00AF 70FA                  279 |       MDX     SI150     GO DISPLAY                  T4A02790
00B0 C02B                  280 | SI156 LD      SI928     LD /F105                    T4A02800
00B1 70F8                  281 |       MDX     SI150     BR TO DISP ERROR            T4A02810
                           282 | *                                                   T4A02820
00B2 F107                  283 | SI098 DC      /F107     ERROR CODE                  T4A02830
00B3 F101                  284 | SI097 DC      /F101      INVALID RCD NO. ERROR CODE T4A02840
00B4 1000                  285 | SI920 NOP                INSTRUCTION CONSTANT       T4A02850
00B6                       286 |       BSS  E  0                                     T4A02860
00B6 0000                  287 | SI930 DC      *-*        USED FOR SAVING ADDR   (E) T4A02870
00B7 0001                  288 |       DC      1          *OF ELEMENT IN ARRAY   (O) T4A02880
00B8 0000                  289 | SI932 DC      *-*        REAL/INTEGER INDICATOR     T4A02890
00B9 0000                  290 | SI933 DC      *-*        READ/WRITE INDICATOR       T4A02900
00BA 0000                  291 | SI934 DC      *-*        REAL PRECISION             T4A02910
00BB 0000                  292 | SI923 DC      *-*        SECTOR START ADDR          T4A02920
00BC 0000                  293 |       DC      *-*        INTEGER PREC (SI934+2)     T4A02930
00BD 0FFF                  294 | SI925 DC      /0FFF      MASK FOR BUFFER ADDR       T4A02940
                           295 | *                                                   T4A02950
00BE 10A0                  296 | SDFIO SLT     32         INITIAL CALL TO FIO        T4A02960
00BF 6680 0000             297 |       LDX  I2 *-*        ENTRY POINT                T4A02970
00C2R                      298 | SI961 EQU     SDFIO+4    ADDRESS OF ITEM FOR I/O(E) T4A02980
00C3R                      299 | SI962 EQU     SDFIO+5    NO. OF ITEMS FOR I/O   (O) T4A02990
00CER                      300 | SI963 EQU     SDFIO+16   READ NEEDED INDICATOR      T4A03000
00C1 D0FC                  301 |       STO     SDFIO      INDICATE SDFIO INITIALIZED T4A03010
00C2 7201                  302 |       MDX   2 1          MOVE XR2 TO PT AT CALLS    T4A03020
00C3 C2FF                  303 |       LD    2 -1         LOAD PRECISION WORD        T4A03030
00C4 100B                  304 |       SLA     11         PUT IN PRECISION (STANDARD T4A03040
00C5 188C                  305 |       SRT     12         OR EXTENDED) FOR           T4A03050
00C6 D0F3                  306 |       STO     SI934      REAL NUMBERS AND           T4A03060
00C7 D0F4                  307 |       STO     SI934+2    INTEGERS                   T4A03070
00C8 1081                  308 |       SLT     1          ONE WORD INTEGERS CALLED   T4A03080
00C9 4804                  309 |       BSC     E          SKIP IF YES                T4A03090
00CA 7002                  310 |       MDX     *+2        KEEP SAME PRECISION IF NOT T4A03100
00CB C0EB                  311 |       LD      SI930+1    SET PRECISION FOR INTEGERS T4A03110
00CC D0EF                  312 |       STO     SI934+2    *TO ONE WORD               T4A03120
00CD C00F                  313 |       LD      SI929      SET UP RESTART             T4A03130
00CE D2FE                  314 |       STO   2 -2         PROCEDURE                  T4A03140
00CF C0E9                  315 |       LD      SI933      HAS RD/WRT INDR BEEN SET   T4A03150
00D0 4C20 0078R            316 |       BSC  L  SI100,Z    RETURN TO SDRED IF RE-INIT T4A03160
                           317 | *                                                   T4A03170
00D2 4400 0000R            318 |       BSI  L  SI000      CALCULATE CHECK-SUM        T4A03180
                           319 | *                                                   T4A03190
00D4 4E00 0000             320 |       BSC  L2 0          RETURN TO MAINLINE         T4A03200
                           321 | *                                                   T4A03210
00D6 690E                  322 | SDCOM STX   1 SI220+1    WRITE COMPLETE             T4A03220
00D7 6680 0000             323 |       LDX  I2 *-*        ENTRY POINT                T4A03230
00D9 6A0D                  324 |       STX   2 SI220+3    SET XR2 FOR RETURN         T4A03240
00DA 7079                  325 |       MDX     SI355      CHECK IF DISK WRITE NEEDED T4A03250
                           326 | *                                                   T4A03260
00DB 0640                  327 | SI927 DC      1600      SECTOR COUNT OF DISK        T4A03270
00DC F105                  328 | SI928 DC      /F105     ERROR CODE FOR PREC         T4A03280
                           329 | *                       *EXCEEDS RECORD             T4A03290
00DD 7001                  330 | SI929 DC      /7001                                 T4A03300
00DE 0000                  331 | SI099 DC      *-*       SW FOR RCD TOO SMALL        T4A03310
00DF 6905                  332 | SI200 STX   1 SI220+1    SAVE XR1 FOR RETURN        T4A03320
00E0 6A06                  333 |       STX   2 SI220+3    SAVE XR2 FOR RETURN        T4A03330
00E1 C0E1                  334 | SI210 LD      SI962      TEST ARRAY COUNT           T4A03340
00E2 4C20 011BR            335 |       BSC  L  SI300,Z    CONTINUE IF NON-ZERO       T4A03350
00E4 6500 0000             336 | SI220 LDX  L1 *-*        RETURN TO MAINLINE IF ZERO T4A03360
00E6 4C00 0000             337 |       BSC  L  *-*        (ALL ELTS PROCESSED)       T4A03370
                           338 | *                                                   T4A03380
00E8 8101                  339 | SI225 A     1 1          RESTORE RECORD NO.         T4A03390
00E9 8400 016AR            340 |       A    L  SI945      INCREASE NO. BY ONE        T4A03400
00EB D580 0003             341 |       STO  I1 3          STORE IN ASSOCIATED VAR    T4A03410
00ED 907C                  342 |       S       SI945      RESTORE RECORD NO.         T4A03420
00EE 907B                  343 |       S       SI945      SUBTRACT 1 MORE            T4A03430
00EF 1890                  344 |       SRT     16         DIVIDE RECORD NUMBER-1 BY  T4A03440
00F0 A905                  345 |       D     1 5          *RECORDS PER SECTOR        T4A03450
00F1 8400 0175R            346 |       A    L  SI952      INCREMENT SECTOR ADDR IN   T4A03460
00F3 D400 0175R            347 |       STO  L  SI952      *I/O BUFFER BY QUOTIENT    T4A03470
00F5 18D0                  348 |       RTE     16         MULTIPLY REMAINDER BY      T4A03480
00F6 A102                  349 |       M     1 2          *NUMBER OF WORDS PER RCD   T4A03490
00F7 18D0                  350 |       RTE     16         MOVE INTO ACCUMULATOR      T4A03500
00F8 8102                  351 |       A     1 2          ADD WORDS/RECORD           T4A03510
00F9 D074                  352 |       STO     SI942      DISP FROM END OF BUFFER    T4A03520
00FA 6949                  353 |       STX   1 SI350+1    SAVE FILE TABLE POINTER    T4A03530
00FB C073                  354 |       LD      SI922      LOAD END OF BUFFER ADDR    T4A03540
00FC 9071                  355 |       S       SI942      SUBTRACT DISPLACEMENT      T4A03550
00FD D070                  356 | SI240 STO     SI942      TO GET BUFFER BASE POINTER T4A03560
00FE C102                  357 |       LD    1 2          LOAD RECORD LENGTH         T4A03570
00FF D025                  358 |       STO     SI315+1    SAVE                       T4A03580
0100 1010                  359 | DIO   SLA     16         CLEAR                      T4A03590
0101 D0CC                  360 |       STO     SI963      *READ NEEDED INDICATOR     T4A03600
                           361 | *                                                   T4A03610
0102 C072                  362 |       LD      SI952      IS THIS THE SAME SECTOR    T4A03620
0103 906F                  363 |       S       SI948      *USED ON PREVIOUS RD/WRT   T4A03630
0104 4C18 0113R            364 |       BSC  L  SI252,+-   BRANCH IF YES              T4A03640
                           365 | *                                                   T4A03650
0106 1810                  366 |       SRA     16         SET PARAMETER FOR READ     T4A03660
0107 D064                  367 | SI250 STO     SI940      SAVE READ/WRITE PARAMETER  T4A03670
0108 C06C                  368 |       LD      SI952     LD SCTR ADDR                T4A03680
0109 E0B3                  369 |       AND     SI925     REMOVE DR CODE              T4A03690
010A 90D0                  370 |       S       SI927     COMPARE WITH FULL DISK      T4A03700
010B 4C10 00AER            371 |       BSC  L  SI155,-   ERROR F107 IF NOT LESS      T4A03710
010D C85E                  372 |       LDD     SI940      LOAD DISK I/O PARAMETERS   T4A03720
010E 4400 00F2             373 |       BSI  L  DZ000      GO TO DISK READ/WRITE      T4A03730
0110 7400 00EE             374 |       MDX  L  $DBSY,0    SKIP IF DISK READY         T4A03740
0112 70FD                  375 |       MDX     *-3        LOOP IF DISK BUSY          T4A03750
0113 C061                  376 | SI252 LD      SI952      SAVE CURRENT SECTOR FOR    T4A03760
0114 D05E                  377 |       STO     SI948      *NEXT SECTOR COMPARE       T4A03770
                           378 | *                                                   T4A03780
0115 C0B8                  379 | SI255 LD      SI963      TEST READ NEEDED INDICATOR T4A03790
0116 4C18 00E1R            380 |       BSC  L  SI210,+-   BRANCH IF OFF              T4A03800
0118 7401 0175R            381 |       MDX  L  SI952,1    INCREMENT SECTOR ADDR      T4A03810
0119R                      382 | SI964 EQU     *-1        ADDR OF SCTR ADDR OF BFR   T4A03820
011A 703F                  383 |       MDX     SI360      GO CHECK RECORD NO.        T4A03830
                           384 | *                                                   T4A03840
011B C056                  385 | SI300 LD      SI944      GET MDX 2 0 CONSTANT       T4A03850
011C 9013                  386 |       S       SI325+1    SUBTRACT PRECISION         T4A03860
011D D009                  387 |       STO     SI320      STORE AS MDX 1 -PRECISION  T4A03870
                           388 | *                                                   T4A03880
011E C0A3                  389 |       LD      SI961      GET HIGH ADDR USER'S ITEM  T4A03890
011F 18D0                  390 |       RTE     16         *IN EXT                    T4A03900
0120 C04D                  391 |       LD      SI942      GET I/O BUFFER BASE POINTR T4A03910
0121 8003                  392 |       A       SI315+1    ADD RCD LENGTH LEFT        T4A03920
0122 18D0                  393 | SI310 RTE     16         RTE 16 / NOP   IF RD/WRT   T4A03930
0123 D84C                  394 |       STD     SI946      SAVE AS 'TO' AND 'FROM'    T4A03940
                           395 | *                                                   T4A03950
0124 6500 0000             396 | SI315 LDX  L1 *-*        LOAD XR1 RCD LENGTH LEFT   T4A03960
0126 7101                  397 |       MDX   1 1          INCREMENT BY 1             T4A03970
                           398 | *                                                   T4A03980
0127 7100                  399 | SI320 MDX   1 *-*        -1,-2, OR -3 (-PRECISION)  T4A03990
                           400 | *                        *SKIP IF WON'T FIT IN RCD  T4A04000
0128 7006                  401 |       MDX     SI325      BR RECORD NOT FULL         T4A04010
0129 C0B4                  402 |       LD      SI099     TEST FOR RCD LESS           T4A04020
012A 4820                  403 |       BSC     Z         *PRECISION                  T4A04030
012B 7084                  404 |       MDX     SI156     BR TO DISP ERROR            T4A04040
012C C03D                  405 |       LD      SI945     MAKE SW SI099               T4A04050
012D D0B0                  406 |       STO     SI099     *NON-ZERO                   T4A04060
012E 7014                  407 |       MDX     SI350      BR RECORD FULL             T4A04070
                           408 | *                                                   T4A04080
012F 6600 0000             409 | SI325 LDX  L2 *-*        LOAD XR2 WITH PRECISION    T4A04090
                           410 | *                                                   T4A04100
0131 C480 0171R            411 | SI330 LD   I  SI947      GET 'FROM' WORD            T4A04110
                           412 | *                                                   T4A04120
0133 D480 0170R            413 |       STO  I  SI946      STORE IN 'TO' WORD         T4A04130
                           414 | *                                                   T4A04140
0135 1010                  415 |       SLA     16        CLEAR SWITCH FOR            T4A04150
0136 D0A7                  416 |       STO     SI099     *RCD TOO SMALL              T4A04160
0137 C838                  417 |       LDD     SI946      DECREMENT 'FROM' AND       T4A04170
0138 9831                  418 |       SD      SI945      *'TO' ADDRESSES            T4A04180
0139 D836                  419 |       STD     SI946      *BY 1                      T4A04190
                           420 | *                                                   T4A04200
013A 72FF                  421 |       MDX   2 -1         DECR ELEMENT PREC COUNT    T4A04210
013B 70F5                  422 |       MDX     SI330      BR, LOOP FOR WORDS/ELEMENT T4A04220
                           423 | *                                                   T4A04230
013C 74FF 00C3R            424 |       MDX  L0 SI962,-1   DECR VARIABLE COUNT BY 1   T4A04240
013E 70E8                  425 |       MDX     SI320      BR, LOOP FOR VARIABLES     T4A04250
                           426 | *                                                   T4A04260
013F 71FF                  427 |       MDX   1 -1         ADJUST RECORD LENGTH LEFT  T4A04270
0140 1000                  428 |       NOP                MAY SKIP                   T4A04280
                           429 | *                                                   T4A04290
0141 69E3                  430 |       STX   1 SI315+1    SAVE NEW RCD LENGTH LEFT   T4A04300
0142 70A1                  431 |       MDX     SI220      RETURN FROM THIS LIBF      T4A04310
                           432 | *                                                   T4A04320
0143 6500 0000             433 | SI350 LDX  L1 *-*        RESTORE XR1 FILE TABLE PTR T4A04330
0145 C82A                  434 |       LDD     SI946      GET NEXT USER ADDRESS      T4A04340
0146 18D0                  435 | SI352 RTE     16         RTE 16 / NOP   IF RD/WRT   T4A04350
0147 18D0                  436 |       RTE     16         EXCHANGE ACC & EXT         T4A04360
0148 D400 00C2R            437 |       STO  L  SI961      SAVE NEXT USER ADDRESS     T4A04370
014A C102                  438 |       LD    1 2          SET NO. WORDS REMAINING    T4A04380
014B D0D9                  439 |       STO     SI315+1    *TO WORDS/RECORD           T4A04390
014C C021                  440 |       LD      SI942      DECREMENT I/O BUFFER       T4A04400
014D 9102                  441 |       S     1 2          *BASE ADDR OF RECORD       T4A04410
014E D01F                  442 |       STO     SI942      *BY WORDS/RECORD           T4A04420
014F 90C9                  443 |       S       SI964      BR IF ROOM IN BUFFER       T4A04430
0150 4C10 015AR            444 |       BSC  L  SI360,-    *FOR ANOTHER RECORD        T4A04440
0152 6C00 00CER            445 |       STX  L0 SI963      SET READ NEEDED INDR ON    T4A04450
                           446 | *                                                   T4A04460
0154 6680 00B9R            447 | SI355 LDX  I2 SI933      LOAD XR2 WITH RD/WRT INDR  T4A04470
0156 72FE                  448 |       MDX   2 -2         SKIP IF WRITE              T4A04480
0157 70BD                  449 |       MDX     SI255      DISK OP NOT NEEDED FOR RD  T4A04490
0158 C011                  450 |       LD      SI945      LOAD WRITE PARAMETER       T4A04500
0159 70AD                  451 |       MDX     SI250      GO WRITE UPDATED BUFFER    T4A04510
                           452 | *                                                   T4A04520
015A C580 0003             453 | SI360 LD   I1 3          LOAD NO. OF RCD IN FILE    T4A04530
015C 9101                  454 |       S     1 1          SUBTRACT MAX NO. OF RECDS  T4A04540
015D 4C30 00A9R            455 |       BSC  L  SI149,-Z   ERROR IF ATTEMPT TO USE    T4A04550
                           456 | *                        MORE RCDS THAN SPECIFIED   T4A04560
015F 8101                  457 |       A     1 1          RESTORE REC NO.            T4A04570
0160 8009                  458 |       A       SI945      ADD ONE                    T4A04580
0161 D580 0003             459 |       STO  I1 3          STORE ASSOCIATED VARIABLE  T4A04590
                           460 | *                                                   T4A04600
0163 C400 00CER            461 |       LD   L  SI963     IS READ NEEDED INDR ON      T4A04610
0165 4C18 011BR            462 |       BSC  L  SI300,+-   BR TO DO NEXT RCD IF OFF   T4A04620
                           463 | *                                                   T4A04630
0167 C007                  464 |       LD      SI922      SET BASE ADDR TO FIRST     T4A04640
0168 9102                  465 |       S     1 2          *RECORD IN BUFFER          T4A04650
0169 7093                  466 |       MDX     SI240      BR TO READ NEXT SECTOR     T4A04660
                           467 | *                                                   T4A04670
016A                       468 |       BSS  E  0                                     T4A04680
016A 0001                  469 | SI945 DC      1          ONE                    (E) T4A04690
016B 0001                  470 |       DC      1          ONE                    (O) T4A04700
016C 0000                  471 | SI940 DC      *-*        READ/WRITE CODE FOR I/O(E) T4A04710
016D 0174R                 472 |       DC      SI952-1    BUFFER ADDR WORD       (O) T4A04720
016E 0000                  473 | SI942 DC      *-*        BUFFER BASE ADDR OF RCD    T4A04730
016F 02B5R                 474 | SI922 DC      SI952+320  LAST WORD OF I/O BUFFER    T4A04740
0170 0000                  475 | SI946 DC      *-*        'TO' ADDRESS           (E) T4A04750
0171 0000                  476 | SI947 DC      *-*        'FROM' ADDRESS         (O) T4A04760
0172 7200                  477 | SI944 MDX   2 0          CONSTANT, BORROW DURING    T4A04770
                           478 | *                        *SUBTRACT CHANGES XR2 TO   T4A04780
                           479 | *                        *XR1                       T4A04790
                           480 | *                                                   T4A04800
0173 0000                  481 | SI948 DC      *-*        PREVIOUS SECTOR USED       T4A04810
0174 0140                  482 |       DC      320        BUFFER WD COUNT FOR I/O(E) T4A04820
0175 0000                  483 | SI952 DC      *-*        DISK ADDR FOR I/O      (O) T4A04830
0176                       484 |       BSS     320        BUFFER FOR I/O             T4A04840
02B6                       485 |       END                                           T4A04850
 
There were no errors in this assembly
 
=== CROSS REFERENCES ==========================================================
Name  Val   Defd  Referenced
$DBSY 00EE   104  374
$EXIT 0038   100  277
$FPAD 0095   103  156
$PRET 0028    98
$WRD1 007B   102  112  130  238
DIO   0100R  359
DZ000 00F2   105  373
SDAF  002FR  163
SDAI  0038R  172
SDCOM 00D6R  322
SDF   002BR  159
SDFIO 00BER  296  220  223  226  227  298  299  300  301
SDFX  0041R  182
SDI   0033R  167
SDIX  0045R  186
SDRED 005AR  204
SDWRT 005FR  209
SI000 0000R  110  135  236  318
SI010 0009R  118  123
SI040 0017R  134  111  140
SI050 001BR  139  126
SI060 0036R  169  161
SI064 003BR  174  165
SI070 0048R  188  184
SI072 004AR  190  170
SI074 004CR  192  180
SI080 0063R  212  207
SI090 0076R  229  224
SI091 0022R  149  114
SI092 0023R  150  117  122
SI093 0024R  151  131
SI094 0025R  152  142
SI095 0026R  153  229
SI096 0089R  248  253
SI097 00B3R  284  273
SI098 00B2R  283  278
SI099 00DER  331  219  402  406  416
SI100 0078R  232  215  221  316
SI110 0087R  246  252
SI120 0090R  253  241
SI121 0091R  254  143
SI130 0092R  256  249
SI140 00A0R  268  259
SI149 00A9R  273  270  455
SI150 00AAR  274  230  254  279  281
SI155 00AER  278  371
SI156 00B0R  280  404
SI200 00DFR  332  202
SI210 00E1R  334  380
SI220 00E4R  336  216  257  322  324  332  333  431
SI225 00E8R  339  272
SI240 00FDR  356  466
SI250 0107R  367  451
SI252 0113R  376  364
SI255 0115R  379  449
SI300 011BR  385  335  462
SI310 0122R  393  212
SI315 0124R  396  358  392  430  439
SI320 0127R  399  387  425
SI325 012FR  409  197  386  401
SI330 0131R  411  422
SI350 0143R  433  353  407
SI352 0146R  435  213
SI355 0154R  447  325
SI360 015AR  453  383  444
SI900 0020R  147  120  139  169  199
SI902 003CR  176  206
SI910 0027R  154  240  251
SI911 0028R  155  260
SI920 00B4R  285  211
SI922 016FR  474  354  464
SI923 00BBR  292  261  267  274  276
SI925 00BDR  294  266  369
SI926 0029R  156  263
SI927 00DBR  327  370
SI928 00DCR  328  280
SI929 00DDR  330  313
SI930 00B6R  287  188  189  311
SI932 00B8R  289  179  190  193
SI933 00B9R  290  125  214  315  447
SI934 00BAR  291  157  306  307  312
SI937 002AR  157  194
SI940 016CR  471  367  372
SI942 016ER  473  352  355  356  391  440  442
SI944 0172R  477  385
SI945 016AR  469  340  342  343  405  418  450  458
SI946 0170R  475  394  413  417  419  434
SI947 0171R  476  411
SI948 0173R  481  363  377
SI952 0175R  483  268  346  347  362  368  376  381  472  474
SI961 00C2R  298  192  198  200  389  437
SI962 00C3R  299  234  334  424
SI963 00CER  300  360  379  445  461
SI964 0119R  382  443