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