ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:10 2020 Source File: \u6disc.asm NON-SYST DISK CART INITIALIZATION 2 | *************************************************** U6C00020 3 | * * U6C00030 4 | *STATUS - VERSION 2, MODIFICATION LEVEL 12 * U6C00040 5 | * PROGRAM NAME- NON-SYSTEM DISK CARTRIDGE * U6C00050 6 | * INITIALIZATION * U6C00060 7 | * CODE NAME- DISC * U6C00070 8 | * FUNCTION/OPERATION- * U6C00080 9 | * THIS PROGRAM INITIALIZES UP TO FOUR SATEL- * U6C00090 10 | * LITE CARTRIDGES -- ALL BUT THE MASTER CAR- * U6C00100 11 | * TRIDGE ON LOGICAL DRIVE 0. IT WRITES THE * U6C00110 12 | * SECTOR ADDRESSES, DEFECTIVE CYLINDER AD- * U6C00120 13 | * DRESSES, CARTRIDGE ID, A LET, A DCOM, AND A* U6C00130 14 | * CIB ON EACH CARTRIDGE INITIALIZED. THE * U6C00140 15 | * SYSUP SUBROUTINE IS CALLED TO UPDATE THE * U6C00150 16 | * MASTER CARTRIDGE WITH THE LABELS AND DCOM * U6C00160 17 | * INFORMATION FROM ALL SATELLITE CARTRIDGES * U6C00170 18 | * SUCCESSFULLY INITIALIZED BY DISC. * U6C00180 19 | * ENTRY POINTS- * U6C00190 20 | * DISC HAS ONLY ONE ENTRY POINT. THE PROGRAM* U6C00200 21 | * IS ENTERED AS FOLLOWS-- * U6C00210 22 | * // XEQ DISC * U6C00220 23 | * *IDXXX1,YYY1,XXX2,YYY2,...,XXX4,YYY4* U6C00230 24 | * WHERE XXXN IS THE CURRENT CARTRIDGE LABEL * U6C00240 25 | * AND YYYN IS THE DESIRED LABEL. * U6C00250 26 | * INPUT- AN *ID RECORD AS SPECIFIED UNDER ENTRY * U6C00260 27 | * POINTS. * U6C00270 28 | * OUTPUT- A LIST OF CARTRIDGES ON THE SYSTEM AND* U6C00280 29 | * THEIR LOGICAL AND PHYSICAL SEQUENCE AFTER * U6C00290 30 | * THE EXECUTION OF DISC IS PRINTED ON THE * U6C00300 31 | * PRINCIPAL PRINT DEVICE. A SIGN-OFF MESSAGE* U6C00310 32 | * IS ALSO PRINTED CONTAINING ONE LINE FOR * U6C00320 33 | * EACH PAIR OF FROM-TO CARTRIDGE LABELS AND * U6C00330 34 | * THE WORDS NOT DONE OR COMPLETE. ANY ONE OF* U6C00340 35 | * FOUR ERROR MESSAGES MAY ALSO BE PRINTED AS * U6C00350 36 | * FOLLOWS-- * U6C00360 37 | * CARTRIDGE XXXN IS DEFECTIVE * U6C00370 38 | * CARTRIDGE XXXN IS NOT AVAILABLE * U6C00380 39 | * CARTRIDGE XXXN INVALID...LOGICAL 0 ID * U6C00390 40 | * CARTRIDGE XXXN NEW LABEL IS INVALID * U6C00400 41 | * EXTERNAL REFERENCES- * U6C00410 42 | * DZ000 -- ENTRY POINT FOR THE SYSTEM DISK * U6C00420 43 | * I/O SUBROUTINE. * U6C00430 44 | * $PBSY -- PRINCIPAL PRINTER BUSY INDICATOR * U6C00440 45 | * $EXIT -- ADDRESS OF CALL EXIT ENTRY POINT * U6C00450 46 | * $DUMP -- ADDRESS OF CALL DUMP ENTRY POINT * U6C00460 47 | * $CYLN -- ARM POSITION FOR LOGICAL DRIVE 0 * U6C00470 48 | * $ACDE -- AREA CODE FOR LOGICAL DRIVE 0 * U6C00480 49 | * $DCYL -- 1ST DEF CYL ADDR, LOGICAL DRIVE 0 * U6C00490 50 | * $DBSY -- DISK BUSY INDICATOR * U6C00500 51 | * $IBT2 -- ADDR OF IBT FOR LEVEL 2 * U6C00510 52 | * $IREQ -- ADDR OF INTRPT REQUEST SUBROUTINE * U6C00520 53 | * $I410 -- ILS04 ENTRY POINT * U6C00530 54 | * $ZEND -- ADDR LAST WORD OF DISKZ +1 * U6C00540 55 | * #ACIN -- AVAILABLE CARTRIDGES INDICATOR * U6C00550 56 | * #ANDU -- BLK ADDR END UA+1 (ADJ), LOG DR 0 * U6C00560 57 | * #BNDU -- BLD ADDR END UA+1 (BASE), LOG DR 0* U6C00570 58 | * #FPAD -- FILE PROTET ADDR (BASE), LOG DR 0 * U6C00580 59 | * #PCID -- CARTRIDGE ID, PHYSICAL DRIVE 0 * U6C00590 60 | * #CIDN -- CARTRIDGE ID, LOGICAL DRIVE 0 * U6C00600 61 | * #CIBA -- ADDR OF CORE IMAGE BUFFER LOG DR 0* U6C00610 62 | * #ULET -- ADDR OF LET, LOGICAL DRIVE 0 * U6C00620 63 | * EXITS- * U6C00630 64 | * NORMAL- * U6C00640 65 | * BR TO CALL EXIT ENTRY POINT * U6C00650 66 | * ERROR- * U6C00660 67 | * NOT APPLICABLE * U6C00670 68 | * TABLES/WORK AREAS- * U6C00680 69 | * COMMA AND DCOM AS SHOWN UNDER EXTERNAL REF-* U6C00690 70 | * ERENCES. * U6C00700 71 | * ATTRIBUTES- * U6C00710 72 | * NONE * U6C00720 73 | * NOTES- * U6C00730 74 | * PROGRAM REVISED IN MOD 2 * U6C00740 75 | * * U6C00750 76 | *************************************************** U6C00760 NON-SYST DISK CART INITIALIZATION 78 | * U6C00780 79 | * RELATIVE DCOM LOCATION EQUATE STMNTS U6C00790 80 | * U6C00800 001C 81 | #ACIN EQU 28 U6C00810 0023 82 | #ANDU EQU 35 U6C00820 0028 83 | #BNDU EQU 40 U6C00830 002D 84 | #FPAD EQU 45 U6C00840 0032 85 | #PCID EQU 50 U6C00850 0037 86 | #CIDN EQU 55 U6C00860 003C 87 | #CIBA EQU 60 U6C00870 0050 88 | #ULET EQU 80 U6C00880 0000 89 | #IDAD EQU /0000 2-11 U6C00890 90 | * U6C00900 91 | * RESIDENT MONITOR EQUATE STMNTS U6C00910 92 | * U6C00920 0036 93 | $PBSY EQU /36 U6C00930 0038 94 | $EXIT EQU /38 U6C00940 003F 95 | $DUMP EQU /3F U6C00950 009A 96 | $CYLN EQU /9A U6C00960 009F 97 | $ACDE EQU /9F U6C00970 00A4 98 | $DCYL EQU /A4 U6C00980 00EE 99 | $DBSY EQU /EE U6C00990 00B9 100 | $IBT2 EQU /B9 U6C01000 000A 101 | $LEV2 EQU /A 2-11 U6C01010 002C 102 | $IREQ EQU /2C U6C01020 00D5 103 | $I410 EQU /D5 U6C01030 01E0 104 | $ZEND EQU /1E0 U6C01040 00F2 105 | DZ000 EQU /F2 U6C01050 00D0 106 | CLDST EQU /D0 U6C01060 107 | * U6C01070 108 | * READ AN *ID RECORD, PRINT THE RECORD U6C01080 109 | * ON THE PRINCIPAL OUTPUT DEVICE, CON- U6C01090 110 | * VERT AND STORE RECORD INFORMATION IN U6C01100 111 | * A FROM-TO TABLE AND A PACKED EBC U6C01110 112 | * TABLE FOR OUTPUT OF SIGN-OFF MESSAGE. U6C01120 113 | * U6C01130 0000 C400 012BR 114 | IC000 LD L IC920 ADDR OF FROM-TO BUFFER U6C01140 0002 1911*9143 115 | CALL RDREC READ ID RECORD U6C01150 0004 D400 012DR 116 | STO L IC922 ADDR PRINCIPAL OUTPUT SUBR U6C01160 117 | * 2-11 U6C01170 118 | * GO BUILD AVAILABLE CART LIST 2-11 U6C01180 119 | * 2-11 U6C01190 0006 4400 0420R 120 | BSI L IT200 2-11 U6C01200 121 | * U6C01210 122 | * READ DCOM FROM MASTER CARTRIDGE U6C01220 123 | * U6C01230 0008 CC00 0118R 124 | LDD L IC900 READ FUNC AND BUFFER ADDR U6C01240 000A 4400 00F2 125 | BSI L DZ000 READ DCOM U6C01250 126 | * U6C01260 127 | * CHECK FOR DISK READ COMPLETE U6C01270 128 | * U6C01280 000C 7400 00EE 129 | IC010 MDX L $DBSY,0 SKIP IF DISK NOT BUSY 2-11 U6C01290 000E 70FD 130 | MDX IC010 LOOP ON BUSY 2-11 U6C01300 131 | * 2-11 U6C01310 132 | * U6C01320 133 | * INITIALIZE U6C01330 134 | * U6C01340 135 | * ONE INSTRUCTION REMOVED 2-11 U6C01350 000F 1010 136 | SLA 16 ZERO ACC 2-11 U6C01360 0010 9400 03B3R 137 | S L IC980+1 NEGATE CART INITIALIZE CTR U6C01370 0012 D030 138 | STO IC065+1 SET UP SIGN-OFF LINE COUNT U6C01380 0013 7401 03B3R 139 | MDX L IC980+1,1 CART INIT COUNTER U6C01390 0015 6100 140 | LDX 1 0 INIT FROM-TO TABLE POINTER U6C01400 0016 6D00 0136R 141 | STX L1 IC931 FROM-TO TABLE POINTER U6C01410 0018 C400 043CR 142 | LD L IC992+2+#ACIN U6C01420 001A D400 013BR 143 | STO L IC936 AVAILABLE CART INDR WORD U6C01430 144 | * U6C01440 145 | * SAVE $IREQ -POINT TO INTRPT REQUEST U6C01450 146 | * U6C01460 001C C400 002C 147 | LD L $IREQ U6C01470 001E D400 0137R 148 | STO L IC932 SAVE $IREQ U6C01480 0020 6600 01F6R 149 | LDX L2 IC380 ADDR OF KB ROUTINE U6C01490 0022 6E00 002C 150 | STX L2 $IREQ SET UP KEYBOARD REQUEST KEY U6C01500 151 | * U6C01510 152 | * SAVE $IBT2 -POINT TO DIO ERROR SEQ U6C01520 153 | * U6C01530 0024 C400 00B9 154 | LD L $IBT2 U6C01540 0026 D400 0133R 155 | STO L IC928 TEMPORARY U6C01550 0028 6600 04A0R 156 | LDX L2 DIO-3 DISK INTERRUPT ADDR U6C01560 002A 6E00 00B9 157 | STX L2 $IBT2 SET UP INTERRUPT ADDRESS U6C01570 158 | * 212 U6C01571 159 | * SAVE $LEV2 - POINT TO $I200 212 U6C01572 160 | * 212 U6C01573 002C C400 000A 161 | LD L $LEV2 SAVE $LEV2 TEMPORARILY 212 U6C01574 002E D400 013CR 162 | STO L IC937 212 U6C01575 0030 C400 013DR 163 | LD L IC938 SET $LEV2 = $I200 212 U6C01576 0032 D400 000A 164 | STO L $LEV2 212 U6C01577 165 | * U6C01580 166 | * TEST FOR LAST CARTRIDGE INITIALIZED U6C01590 167 | * U6C01600 0034 74FF 03B3R 168 | IC050 MDX L IC980+1,-1 SKIP NEXT IF DONE U6C01610 0036 7026 169 | MDX IC200 BR TO PROCESS NEXT CART U6C01620 170 | * U6C01630 171 | * RESTORE LEVEL 2 INTERRUPT U6C01640 172 | * U6C01650 0037 C400 0133R 173 | IC060 LD L IC928 U6C01660 0039 D400 00B9 174 | STO L $IBT2 U6C01670 003B C400 013CR 175 | LD L IC937 212 U6C01673 003D D400 000A 176 | STO L $LEV2 212 U6C01676 177 | * U6C01680 178 | * CALL SYSUP U6C01690 179 | * U6C01700 003F 22A2*2917 180 | CALL SYSUP U6C01710 0041 0457R 181 | DC IC992+2+#CIDN CART ID TABLE U6C01720 182 | * U6C01730 183 | * PRINT SIGN-OFF MESSAGE U6C01740 184 | * U6C01750 0042 6600 0000 185 | IC065 LDX L2 *-* SET UP LINE COUNT U6C01760 0044 6700 03BDR 186 | LDX L3 IC980+11 ADDR OF FIRST LINE WD COUNT U6C01770 0046 6F00 0261R 187 | IC070 STX L3 IC950+1 U6C01780 0048 CC00 0260R 188 | LDD L IC950 FUNC CODE AND WD CNT ADDR U6C01790 004A 4480 012DR 189 | BSI I IC922 BR TO PRINT ROUTINE U6C01800 004C 7400 0036 190 | MDX L $PBSY,0 SKIP IF PRNTR NOT BUSY 2-11 U6C01810 004E 70FD 191 | MDX *-3 LOOP ON BUSY 2-11 U6C01820 192 | * ONE INSTRUCTION REMOVED 2-11 U6C01830 004F 7310 193 | MDX 3 16 INCR TO NEXT LINE WD COUNT U6C01840 0050 7201 194 | MDX 2 1 INCR LINE COUNT U6C01850 0051 70F4 195 | MDX IC070 BR TO PRINT ANOTHER LINE U6C01860 196 | * U6C01870 197 | * RESTORE INTERRUPT REQUEST ADDRESS U6C01880 198 | * U6C01890 0052 C400 0137R 199 | LD L IC932 U6C01900 0054 D400 002C 200 | STO L $IREQ POINT TO ILS ROUTINE U6C01910 201 | * U6C01920 202 | * EXIT TO MONITOR OR KEYBOARD REQUEST U6C01930 203 | * U6C01940 0056 7400 01F6R 204 | MDX L IC380,0 SKIP IF NO KEYBOARD REQUEST U6C01950 0058 7001 205 | MDX IC100 BR IF KEYBOARD REQUEST U6C01960 0059 6038 206 | EXIT EXIT TO MONITOR 2-11 U6C01970 005A 4400 003F 207 | IC100 BSI L $DUMP EXIT VIA KEYBOARD REQUEST U6C01980 005C FFFE 208 | DC -2 U6C01990 209 | * U6C02000 210 | * ERROR IF LABEL IS MASTER CARTRIDGE U6C02010 211 | * U6C02020 005D C500 03B4R 212 | IC200 LD L1 IC980+2 CURRENT CART LABEL U6C02030 005F 4C08 0092R 213 | BSC L IC226,+ BR IF CUR ID INVALID 2-11 U6C02032 0061 9400 0457R 214 | S L IC992+2+#CIDN 2-11 U6C02034 0063 4C18 0077R 215 | BSC L IC205,+- BR IF MASTER CARTRIDGE 2-11 U6C02036 0065 C500 03B4R 216 | LD L1 IC980+2 LOAD CURRENT ID 2-11 U6C02038 0067 D00E 217 | STO IC905 *AND SAVE FOR SEARCH 2-11 U6C02040 0068 63FB 218 | LDX 3 -5 INITIALIZE POINTER 2-11 U6C02042 0069 C700 045CR 219 | IC201 LD L3 IC992+2+#CIDN+5 FETCH ID FROM 2-11 U6C02044 006B 900A 220 | S IC905 *DCOM 2-11 U6C02046 006C 4C18 007BR 221 | BSC L IC208,+- BR IF MATCH OCCURS 2-11 U6C02048 006E 7301 222 | MDX 3 1 INCRE POINTER-SKIP ON 02-11 U6C02050 006F 70F9 223 | MDX IC201 BR TO CONTINUE 2-11 U6C02052 0070 C005 224 | LD IC905 BR IF SEARCHING FOR AN 2-11 U6C02054 0071 4C18 0092R 225 | BSC L IC226,+- *AVAILABLE ENTRY 2-11 U6C02056 0073 1010 226 | SLA 16 SET ID TO ZERO AND GO 2-11 U6C02058 0074 D001 227 | STO IC905 *SEARCH FOR AN EMPTY 2-11 U6C02060 0075 70F2 228 | MDX IC201-1 *ENTRY IN DCOM 2-11 U6C02062 229 | * 2-11 U6C02064 0076 0000 230 | IC905 DC *-* CURRENT ID SAVE AREA 2-11 U6C02066 231 | * 2-11 U6C02068 232 | * PRINT ERROR MSG -INVALID-SYST CART ID U6C02070 233 | * U6C02080 0077 6700 0250R 234 | IC205 LDX L3 IC943 SUB-MSG ADDR 2-11 U6C02090 0079 4400 0206R 235 | BSI L IC400 BR TO PRINT U6C02100 236 | * U6C02110 237 | * INITIALIZE SECTOR 0 - CARTRIDGE ID U6C02120 238 | * U6C02130 007B C400 0120R 239 | IC208 LD L IC910 SET DM2 INITIALIZED 2-11 U6C02140 007D D400 0277R 240 | STO L IC970+9 *STATUS WORD (WORD 7 = -2) U6C02150 007F C500 03B5R 241 | LD L1 IC980+3 U6C02160 0081 D400 0273R 242 | STO L IC970+5 NEW CARTRIDGE LABEL U6C02170 0083 4C30 0089R 243 | BSC L IC220-1,-Z INVALID LABEL IF NOT PLUS U6C02180 244 | * U6C02190 245 | * PRINT ERROR MSG -NEW LABEL IS INVALID U6C02200 246 | * U6C02210 0085 6700 0254R 247 | LDX L3 IC944 SUB-MSG ADDRESS U6C02220 0087 4400 0206R 248 | BSI L IC400 BR TO PRINT U6C02230 249 | * U6C02240 250 | * FIND PHYSICAL DRIVE NUMBER U6C02250 251 | * U6C02260 0089 63F5 252 | LDX 3 -11 INITIALIZE POINTER 2-11 U6C02270 008A C700 048ER 253 | IC220 LD L3 IT904+11 FETCH ID FROM ID LIST 2-11 U6C02280 008C 9500 03B4R 254 | S L1 IC980+2 CURRENT CART LABEL U6C02290 008E 4C18 0097R 255 | BSC L IC230,+- BR IF LABEL FOUND U6C02300 0090 7301 256 | IC225 MDX 3 1 INCR POINTER- SKIP IF END U6C02310 0091 70F8 257 | MDX IC220 U6C02320 258 | * U6C02330 259 | * PRINT ERROR MSG -IS NOT AVAILABLE U6C02340 260 | * U6C02350 0092 6700 0245R 261 | IC226 LDX L3 IC942 SUB-MSG ADDR 2-11 U6C02360 0094 4400 0206R 262 | BSI L IC400 BR TO PRINT U6C02370 0096 7016 263 | MDX IC236 BR TO CHK FOR ERROR U6C02380 264 | * U6C02390 265 | * CHECK DRIVE READY INDICATOR U6C02400 266 | * U6C02410 0097 730B 267 | IC230 MDX 3 11 CNVRT PNTR TO DR NO 2-11 U6C02420 0098 1000 268 | NOP MAY SKIP U6C02430 0099 C400 013BR 269 | LD L IC936 DRIVE READY INDR WORD U6C02440 009B 1300 270 | SLA 3 SHIFT READY INDR INTO SIGN U6C02450 009C 4810 271 | BSC - SKIP NEXT IF READY U6C02460 009D 7005 272 | MDX IC232 BR TO GET NEXT PCID ENTRY U6C02470 273 | * U6C02480 274 | * CHK FOR DRIVE PREVIOUSLY INITIALIZED U6C02490 275 | * U6C02500 009E C400 013AR 276 | LD L IC935 DRIVE INIT INDR U6C02510 00A0 1300 277 | SLA 3 SHIFT TO SIGN U6C02520 00A1 4C10 00A6R 278 | BSC L IC234,- BR IF DRIVE NOT INITIALIZED U6C02530 279 | * U6C02540 280 | * RESTORE XR3 AND GET NEXT PCID ENTRY U6C02550 281 | * U6C02560 00A3 73F5 282 | IC232 MDX 3 -11 SET TO NEXT AVAIL ID 2-11 U6C02570 00A4 1000 283 | NOP MAY SKIP U6C02580 00A5 70EA 284 | MDX IC225 BR TO CONTINUE PCID SEARCH U6C02590 285 | * U6C02600 286 | * SET DRIVE INITIALIZED INDR BIT ON U6C02610 287 | * U6C02620 00A6 C400 0122R 288 | IC234 LD L IC912 SIGN BIT U6C02630 00A8 1B00 289 | SRA 3 SHIFT TO RELATIVE DRIVE BIT U6C02640 00A9 EC00 013AR 290 | OR L IC935 *(0-4) AND STORE AS DRIVE U6C02650 00AB D400 013AR 291 | STO L IC935 *INITIALIZED INDICATOR. U6C02660 292 | * U6C02670 293 | * GET NEXT CART ID IF ANY ERROR U6C02680 294 | * U6C02690 00AD C400 0138R 295 | IC236 LD L IC933 ERROR INDR U6C02700 00AF 4C20 01E8R 296 | BSC L IC370,Z BR IF ANY ERROR U6C02710 297 | * U6C02720 298 | * SAVE PHYSICAL DRIVE NUMBER U6C02730 299 | * U6C02740 00B1 6F00 0139R 300 | STX L3 IC934 PHYSICAL DRIVE INDEX VALUE U6C02750 00B3 C400 0139R 301 | LD L IC934 U6C02760 00B5 100C 302 | SLA 12 SHIFT TO DRIVE NO. POSITION U6C02770 00B6 D077 303 | STO IC923 SAVE U6C02780 00B7 D400 054BR 304 | STO L IC990+1 U6C02790 305 | * U6C02800 306 | * SEEK HOME CURRENT CARTRIDGE U6C02810 307 | * U6C02820 00B9 4400 04A2R 308 | BSI L DIO-1 CALL DISK ROUTINE U6C02830 00BB 0300 309 | DC /0300 SEEK HOME FUNCTION U6C02840 00BC 054AR 310 | DC IC990 U6C02850 311 | * U6C02860 312 | * INITIALIZE DEFECTIVE CYLINDER TABLE U6C02870 313 | * U6C02880 00BD 62FD 314 | LDX 2 -3 LOOP COUNT - 3 WORDS U6C02890 00BE 6A70 315 | STX 2 IC924 INITIALIZE DEF CYL COUNT U6C02900 00BF C063 316 | LD IC913 INITIALIZE VALUE U6C02910 00C0 D600 0273R 317 | IC210 STO L2 IC970+2+3 DEF CYL TBL U6C02920 00C2 7201 318 | MDX 2 1 INCR COUNT U6C02930 00C3 70FC 319 | MDX IC210 REPEAT U6C02940 320 | * U6C02950 321 | * WRITE PATTERN TO ONE CARTRIDGE U6C02960 322 | * U6C02970 00C4 6A6B 323 | STX 2 IC925 INITIALIZE SECTOR ADDRESS U6C02980 00C5 63FA 324 | IC235 LDX 3 -6 PATTERN INDEX VALUE U6C02990 00C6 6A6D 325 | IC240 STX 2 IC929 INIT RETRY COUNTER U6C03000 00C7 C052 326 | LD IC901 NEGATIVE VALUE U6C03010 00C8 D069 327 | STO IC927 INIT BAD CYLINDER INDR U6C03020 328 | * U6C03030 329 | * FILL BUFFER WITH PATTERN U6C03040 330 | * U6C03050 00C9 6600 FEC0 331 | LDX L2 -320 BUFFER FILL COUNTER U6C03060 00CB CF00 0120R 332 | LDD L3 IC901+6 PATTERN TO WRITE U6C03070 00CD DE00 068CR 333 | IC245 STD L2 IC990+322 FILL BUFFER WITH PATTERN U6C03080 00CF 7202 334 | MDX 2 2 INCR COUNTER- SKIP IF ZERO U6C03090 00D0 70FC 335 | MDX IC245 U6C03100 336 | * U6C03110 337 | * SET UP SECTOR ADDRESS U6C03120 338 | * U6C03130 00D1 C05E 339 | LD IC925 SECTOR 0 ADDR FOR THIS CYL U6C03140 00D2 E85B 340 | OR IC923 DRIVE NO. FOR THIS CART U6C03150 00D3 D05D 341 | STO IC926 SCTR ADDR TEMP U6C03160 342 | * U6C03170 343 | * WRITE PATTERN TO EIGHT SECTORS U6C03180 344 | * U6C03190 00D4 6208 345 | LDX 2 8 INIT SCTR WRITE COUNT U6C03200 00D5 D400 054BR 346 | IC250 STO L IC990+1 BUFFER SCTR ADDR U6C03210 00D7 4400 04A2R 347 | BSI L DIO-1 CALL DISK ROUTINE U6C03220 00D9 0200 348 | DC /0200 WRITE FUNCTION U6C03230 00DA 054AR 349 | DC IC990 BUFFER WD CNT ADDR U6C03240 00DB 4400 04A2R 350 | BSI L DIO-1 TEST FOR BUSY U6C03250 00DD 0000 351 | DC /0000 SENSE FUNCTION CODE U6C03260 00DE 0130R 352 | DC IC926-1 U6C03270 00DF 7400 0134R 353 | MDX L IC929,0 SKIP NEXT IF NO RETRY U6C03280 00E1 7063 354 | MDX IC280 BR IF RETRY U6C03290 00E2 803E 355 | IC255 A IC911 DECR SECTOR ADDR U6C03300 00E3 72FF 356 | MDX 2 -1 DECR SCTR WRITE CTR U6C03310 00E4 70F0 357 | MDX IC250 BR TO WRITE A SECTOR U6C03320 358 | * U6C03330 359 | * READ BACK AND COMPARE EIGHT SECTORS U6C03340 360 | * U6C03350 00E5 6A46 361 | STX 2 IC921 CLEAR COMPARE ERROR INDR U6C03360 00E6 6A4E 362 | STX 2 IC930 CLEAR SCTR ADDR ERROR INDR U6C03370 00E7 6208 363 | LDX 2 8 INIT SCTR READ COUNT U6C03380 00E8 7407 0131R 364 | MDX L IC926,7 POINT TO SECTOR 7 U6C03390 00EA C046 365 | IC260 LD IC926 ADDR OF SCTR TO READ U6C03400 00EB D400 054BR 366 | STO L IC990+1 BUFFER SCTR ADDR U6C03410 00ED 4400 04A2R 367 | BSI L DIO-1 CALL DISK ROUTINE U6C03420 00EF 0100 368 | DC /0100 READ FUNCTION U6C03430 00F0 054AR 369 | DC IC990 BUFFER WD CNT ADDR U6C03440 00F1 4400 04A2R 370 | BSI L DIO-1 TEST FOR BUSY U6C03450 00F3 0000 371 | DC /0000 SENSE FUNCTION CODE U6C03460 00F4 0130R 372 | DC IC926-1 U6C03470 00F5 7400 0134R 373 | MDX L IC929,0 SKIP NEXT IF NO RETRY U6C03480 00F7 7051 374 | MDX IC285 BR IF RETRY U6C03490 375 | * U6C03500 376 | * COMPARE SECTOR ADDR U6C03510 377 | * U6C03520 00F8 E02B 378 | IC265 AND IC916 EXTRACT SCTR ADDR U6C03530 00F9 F400 054BR 379 | EOR L IC990+1 COMPARE W/ BUFFER SCTR ADDR U6C03540 00FB 4C20 014DR 380 | BSC L IC300,Z BR IF SCTR ADDR ERROR U6C03550 381 | * U6C03560 382 | * COMPARE BUFFER CONTENTS WITH PATTERN U6C03570 383 | * U6C03580 00FD 6500 0140 384 | LDX L1 320 INITIALIZE BUFFER POINTER U6C03590 00FF CD00 054AR 385 | IC270 LDD L1 IC990 TWO WDS OF BUFFER U6C03600 0101 9F00 0120R 386 | SD L3 IC901+6 COMPARE W/ PATTERN WRITTEN U6C03610 0103 4818 387 | BSC +- SKIP IF NOT SAME U6C03620 0104 18D0 388 | RTE 16 FLIP SECOND WORD INTO ACC U6C03630 0105 4C20 0156R 389 | BSC L IC301,Z BR IF NOT SAME U6C03640 0107 71FE 390 | MDX 1 -2 DECR BUFFER POINTER U6C03650 0108 70F6 391 | MDX IC270 BR TO COMPARE TWO MORE WDS U6C03660 0109 1010 392 | SLA 16 CLEAR ACC U6C03670 010A D021 393 | IC271 STO IC921 CLEAR COMPARE ERROR FLAG U6C03680 010B 74FF 0131R 394 | MDX L IC926,-1 DECR SCTR ADDR U6C03690 010D 1000 395 | NOP MAY SKIP U6C03700 010E 72FF 396 | MDX 2 -1 DECR SCTR READ COUNT U6C03710 010F 70DA 397 | MDX IC260 BR TO READ A SECTOR U6C03720 398 | * U6C03730 399 | * NEXT PATTERN U6C03740 400 | * U6C03750 0110 7302 401 | MDX 3 2 INCR PATTERN POINTER U6C03760 0111 70B4 402 | MDX IC240 BR TO WRITE NEXT PATTERN U6C03770 403 | * U6C03780 404 | * CHECK FOR BAD CYLINDER U6C03790 405 | * U6C03800 0112 C01F 406 | LD IC927 BAD CYLINDER INDR U6C03810 0113 4C30 0165R 407 | BSC L IC310,Z- BR IF BAD CYLINDER U6C03820 0115 4C10 0169R 408 | BSC L IC315,- BR IF CYL ZERO DEFECTIVE U6C03830 0117 7026 409 | MDX IC275 BR TO INCR SCTR POINTER U6C03840 410 | * U6C03850 411 | * CONSTANTS AND WORK AREA U6C03860 412 | * U6C03870 0118 413 | BSS E 0 MAKE ADDR EVEN U6C03880 0118 7000 414 | IC900 DC /7000 DISK READ FUNCTION U6C03890 0119 041ER 415 | DC IC992 DCOM BUFFER ADDR U6C03900 011A AAAA 416 | IC901 DC /AAAA FIRST PATTERN U6C03910 011B AAAA 417 | DC /AAAA U6C03920 011C 5555 418 | DC /5555 SECOND PATTERN U6C03930 011D 5555 419 | DC /5555 U6C03940 011E 0000 420 | DC 0 THIRD PATTERN U6C03950 011F 0000 421 | DC 0 U6C03960 0120 FFFE 422 | IC910 DC -2 DM2 INITIALIZED STATUS WORD U6C03970 0121 0001 423 | IC911 DC 1 DECIMAL ONE CONSTANT U6C03980 0122 8000 424 | IC912 DC /8000 SIGN BIT CONSTANT U6C03990 0123 0658 425 | IC913 DC /0658 INITIAL VALUE DEF CYL TBL U6C04000 0124 0FFF 426 | IC916 DC /0FFF SECTOR ADDR EXTRACT MASK U6C04010 0123R 427 | IC917 EQU IC913 NO. OF SCTRS/CART CONSTANT U6C04020 0125 0180 428 | IC918 DC /0180 DCOM INITIALIZE CONSTANT U6C04030 0126 0008 429 | DC /0008 DCOM INITIALIZE CONSTANT U6C04040 0127 C3D6 D4D7 D3C5 E3C5 430 | IC919 EBC .COMPLETE. U6C04050 012B 03B2R 431 | IC920 DC IC980 ADDR OF FROM-TO TABLE U6C04060 012C 0000 432 | IC921 DC *-* COMPARE ERROR INDR U6C04070 012D 0000 433 | IC922 DC *-* ADDR PRINCIPAL OUTPUT SUBR U6C04080 012E 0000 434 | IC923 DC *-* PHYSICAL DR NUMBER U6C04090 012F 0000 435 | IC924 DC *-* DEFECTIVE CYLINDER COUNTER U6C04100 0130 436 | BSS E 0 IC926-1 MUST BE EVEN U6C04110 0130 0000 437 | IC925 DC *-* SECTOR ZERO ADDRESS TEMP U6C04120 0131 0000 438 | IC926 DC *-* SECTOR ADDR TEMPORARY U6C04130 0132 0000 439 | IC927 DC *-* BAD CYLINDER INDR U6C04140 0133 0000 440 | IC928 DC *-* TEMPORARY FOR $IBT2 U6C04150 0134 0000 441 | IC929 DC *-* RETRY COUNTER U6C04160 0135 0000 442 | IC930 DC *-* SCTR ADDR ERROR INDR U6C04170 0136 0000 443 | IC931 DC *-* FROM-TO TABLE POINTER U6C04180 0137 0000 444 | IC932 DC *-* TEMPORARY FOR $IREQ U6C04190 0138 0000 445 | IC933 DC *-* ID RECORD ERROR INDR U6C04200 0139 0000 446 | IC934 DC *-* PHYSICAL DRIVE INDEX VALUE U6C04210 013A 0000 447 | IC935 DC *-* DRIVE INITIALIZED INDR U6C04220 013B 0000 448 | IC936 DC *-* DRIVE READY INDR WORD U6C04230 013C 0000 449 | IC937 DC *-* TEMP STORAGE FOR $LEV2 212 U6C04235 013D 00B3 450 | IC938 DC /B3 $I200 LOCATION 212 U6C04238 451 | * U6C04240 452 | * INCR TO CHECK NEXT CYLINDER U6C04250 453 | * U6C04260 013E 7408 0130R 454 | IC275 MDX L IC925,8 POINT SCTR ADDR TO NEXT CYL U6C04270 0140 C0EF 455 | LD IC925 U6C04280 0141 90E1 456 | S IC917 END CONSTANT U6C04290 0142 4C18 0175R 457 | BSC L IC330,+- BR IF ALL CYLINDERS TESTED U6C04300 0144 7080 458 | MDX IC235 BR TO INIT TO FIRST PATTERN U6C04310 459 | * U6C04320 460 | * RETRY WRITE U6C04330 461 | * U6C04340 0145 74FF 0134R 462 | IC280 MDX L IC929,-1 DECR RETRY CTR U6C04350 0147 708D 463 | MDX IC250 BR TO RETRY U6C04360 0148 7099 464 | MDX IC255 BR TO DECR SCTR ADDR U6C04370 465 | * U6C04380 466 | * RETRY READ U6C04390 467 | * U6C04400 0149 74FF 0134R 468 | IC285 MDX L IC929,-1 DECR RETRY COUNTER U6C04410 014B 709E 469 | MDX IC260 BR TO RETRY U6C04420 014C 70AB 470 | MDX IC265 BR TO COMPARE U6C04430 471 | * U6C04440 472 | * SECTOR ADDRESS ERROR U6C04450 473 | * U6C04460 014D C0E2 474 | IC300 LD IC925 SECTOR 0 ADDR FOR THIS CYL U6C04470 014E F400 054BR 475 | EOR L IC990+1 CURRENT SCTR ADDR FR BUFFER U6C04480 0150 4C20 0156R 476 | BSC L IC301,Z BR IF NOT SECTOR ZERO U6C04490 0152 7400 0135R 477 | MDX L IC930,0 SKIP IF FIRST SCTR ZERO ERR U6C04500 0154 7014 478 | MDX IC315 BR IF DEFECTIVE CARTRIDGE U6C04510 0155 68DF 479 | STX IC930 SET SCTR ADDR ERROR INDR ON U6C04520 480 | * U6C04530 481 | * COMPARE ERROR U6C04540 482 | * U6C04550 0156 7400 012CR 483 | IC301 MDX L IC921,0 CHK FOR PREVIOUS CMP ERROR U6C04560 0158 7007 484 | MDX IC305 BR IF SECOND COMPARE ERROR U6C04570 0159 68D2 485 | STX IC921 SET COMPARE ERROR INDR ON U6C04580 015A 7400 0134R 486 | MDX L IC929,0 SKIP NEXT IF NO RETRY SET U6C04590 015C 708D 487 | MDX IC260 BR TO RETRY U6C04600 015D 7432 0134R 488 | MDX L IC929,50 INCR TO RETRY 50 TIMES U6C04610 015F 708A 489 | MDX IC260 BR TO RETRY U6C04620 0160 C0CF 490 | IC305 LD IC925 CURRENT CYL SCTR 0 ADDR U6C04630 0161 D0D0 491 | STO IC927 SET BAD CYL INDR ON U6C04640 0162 1010 492 | SLA 16 CLEAR ACC U6C04650 0163 D0D0 493 | STO IC929 RESET RETRY COUNTER U6C04660 0164 70A5 494 | MDX IC271 BR TO TEST NEXT SECTOR U6C04670 495 | * U6C04680 496 | * CHECK DEFECTIVE CYLINDER COUNT U6C04690 497 | * U6C04700 0165 6780 012FR 498 | IC310 LDX I3 IC924 DEFECTIVE CYLINDER COUNT U6C04710 0167 7300 499 | MDX 3 0 SKIP IF MORE THAN 3 BAD CYL U6C04720 0168 7006 500 | MDX IC316 U6C04730 501 | * U6C04740 502 | * DEFECTIVE CARTRIDGE U6C04750 503 | * U6C04760 0169 6700 023AR 504 | IC315 LDX L3 IC941 SUB-MSG ADDRESS U6C04770 016B 4400 0206R 505 | BSI L IC400 BR TO PRINT U6C04780 016D 4C00 01E8R 506 | BSC L IC370 BR TO GET NEXT CART ID U6C04790 507 | * U6C04800 508 | * PUT DEFECTIVE CYL ADDR INTO TABLE U6C04810 509 | * U6C04820 016F D700 0273R 510 | IC316 STO L3 IC970+2+3 DEFECTIVE CYL TABLE U6C04830 0171 7401 012FR 511 | MDX L IC924,1 INCR DEFECTIVE CYL COUNT U6C04840 0173 1000 512 | NOP MAY SKIP U6C04850 0174 70C9 513 | MDX IC275 BR TO CHECK NEXT CYLINDER U6C04860 514 | * U6C04870 515 | * INITIALIZE SECTOR 1 - DCOM U6C04880 516 | * U6C04890 0175 6580 0136R 517 | IC330 LDX I1 IC931 FROM-TO TABLE POINTER U6C04900 0177 63FB 518 | LDX 3 -5 INITIALIZE TABLE POINTER U6C04910 0178 C700 045CR 519 | IC340 LD L3 IC992+2+#CIDN+5 NEXT LABEL IN #CIDN U6C04920 017A 9500 03B4R 520 | S L1 IC980+2 U6C04930 017C 4C18 0184R 521 | BSC L IC350,+- BR IF LABEL FOUND U6C04940 017E 7301 522 | MDX 3 1 INCR POINTER- SKIP IF END U6C04950 017F 70F8 523 | MDX IC340 BR TO GET NEXT TBL ENTRY U6C04960 0180 1010 524 | SLA 16 U6C04970 0181 D500 03B4R 525 | STO L1 IC980+2 SET UP TO LOOK FOR 1ST ZERO U6C04980 0183 70F3 526 | MDX IC340-1 BR TO SEARCH AGAIN U6C04990 0184 62AF 527 | IC350 LDX 2 -81 CLEAR BUFFER COUNT U6C05000 0185 D600 0451R 528 | STO L2 IC993+2+81 CLEAR SCTR 1 BUFFER U6C05010 0187 7201 529 | MDX 2 1 DECR COUNTER U6C05020 0188 70FC 530 | MDX IC350+1 BR TO CONTINUE CLEARING U6C05030 0189 C400 0273R 531 | LD L IC970+5 NEW CARTRIDGE LABEL U6C05040 018B D700 045CR 532 | STO L3 IC992+2+#CIDN+5 MASTER DCOM U6C05050 018D D400 0437R 533 | STO L IC993+2+#CIDN SATELLITE DCOM U6C05060 018F C095 534 | LD IC918 HEX VALUE 0180 U6C05070 0190 D400 0423R 535 | STO L IC993+2+#ANDU INIT #ANDU U6C05080 0192 D400 0428R 536 | STO L IC993+2+#BNDU INIT #BNDU U6C05090 0194 1804 537 | SRA 4 = HEX VALUE 0018 U6C05100 0195 D400 042DR 538 | STO L IC993+2+#FPAD INIT #FPAD U6C05110 0197 C08E 539 | LD IC918+1 HEX VALUE 0008 U6C05120 0198 D400 043CR 540 | STO L IC993+2+#CIBA INIT #CIBA U6C05130 019A 1802 541 | SRA 2 = HEX VALUE 0002 U6C05140 019B D400 0450R 542 | STO L IC993+2+#ULET U6C05150 543 | * U6C05160 544 | * SET UP AREA CODE FOR DZ000 U6C05170 545 | * U6C05180 019D 6680 0139R 546 | LDX I2 IC934 PHYSICAL DRIVE INDEX VALUE U6C05190 019F C600 0262R 547 | LD L2 IC960 AREA CODE - CURRENT CART U6C05200 01A1 D700 00A4 548 | STO L3 $ACDE+5 U6C05210 549 | * U6C05220 550 | * SET UP CURRENT ARM POSITION U6C05230 551 | * U6C05240 01A3 74F8 0130R 552 | MDX L IC925,-8 CURRENT ARM POSITION U6C05250 01A5 C400 0130R 553 | LD L IC925 U6C05260 01A7 D700 009F 554 | STO L3 $CYLN+5 CURRENT ARM POSITION-DZ000 U6C05270 555 | * U6C05280 556 | * SET UP DRIVE CODE FOR DISK WRITE U6C05290 557 | * U6C05300 01A9 7305 558 | MDX 3 5 LOGICAL DRIVE NUMBER IN XR3 U6C05310 01AA 1000 559 | NOP MAY SKIP U6C05320 01AB 6F00 026FR 560 | STX L3 IC970+1 TEMPORARY U6C05330 01AD C400 026FR 561 | LD L IC970+1 U6C05340 01AF 100C 562 | SLA 12 SHIFT TO DRIVE CODE POSITN U6C05350 01B0 D400 026FR 563 | STO L IC970+1 SET UP SECTOR 0 ADDR U6C05360 01B2 8400 0121R 564 | A L IC911 ONE U6C05370 01B4 D400 03FFR 565 | STO L IC993+1 SET UP SECTOR 1 ADDR U6C05380 01B6 8400 0121R 566 | A L IC911 ONE U6C05390 01B8 D400 03A9R 567 | STO L IC978+1 SET UP SECTOR 2 ADDR U6C05400 568 | * U6C05410 569 | * SET UP DEFECTIVE CYLINDER TABLE U6C05420 570 | * U6C05430 01BA 180B 571 | SRA 11 LOG DR NO. X2 RT JUSTIFIED U6C05440 01BB D004 572 | STO IC351-2 TEMPORARY U6C05450 01BC 1801 573 | SRA 1 LOG DR NO. RIGHT JUSTIFIED U6C05460 01BD 8002 574 | A IC351-2 LOG DR NO. TIMES 3 U6C05470 01BE D001 575 | STO IC351-2 STORE TO LOAD XR3 U6C05480 01BF 6700 0000 576 | LDX L3 *-* XR3 = LOG DR NO. TIMES 3 U6C05490 01C1 62FD 577 | LDX 2 -3 NEW DEFECTIVE CYL POINTER U6C05500 01C2 C600 0273R 578 | IC351 LD L2 IC970+2+3 NEXT ENTRY OF NEW TABLE U6C05510 01C4 D700 00A4 579 | STO L3 $DCYL SET UP DEFECTIVE CYL TABLE U6C05520 01C6 7301 580 | MDX 3 1 INCR DEFECTIVE CYL TBL PT U6C05530 01C7 7201 581 | MDX 2 1 INCR NEW TABLE POINTER U6C05540 01C8 70F9 582 | MDX IC351 BR TO MOVE NEXT WD OF TBL U6C05550 583 | * U6C05560 584 | * WRITE SECTORS 0,1, AND 2 TO SATELLITE U6C05570 585 | * U6C05580 01C9 C400 0133R 586 | LD L IC928 U6C05590 01CB D400 00B9 587 | STO L $IBT2 RESTORE INTERRUPT ADDR U6C05600 01CD 6600 026ER 588 | LDX L2 IC970 ADDR OF SECTOR 0 BUFFER U6C05610 01CF 402C 589 | BSI IC355 BR TO WRITE ONE SCTR U6C05620 01D0 6600 03FER 590 | LDX L2 IC993 SECTOR 1 BUFFER ADDR U6C05630 01D2 4029 591 | BSI IC355 BR TO WRITE ONE SCTR U6C05640 01D3 6600 03A8R 592 | LDX L2 IC978 SECTOR 2 BUFFER ADDR U6C05650 01D5 4026 593 | BSI IC355 BR TO WRITE ONE SCTR U6C05660 01D6 6600 04A0R 594 | LDX L2 DIO-3 SET DISK INTERRUPT BACK TO U6C05670 01D8 6E00 00B9 595 | STX L2 $IBT2 *DIO INTERNAL ROUTINE U6C05680 596 | * U6C05690 597 | * STORE COMPLETE IN SIGN-OFF MESSAGE U6C05700 598 | * U6C05710 01DA 62FC 599 | LDX 2 -4 INITIALIZE EBC COMPLETE PT U6C05720 01DB C400 0136R 600 | LD L IC931 FROM-TO TABLE POINTER U6C05730 01DD 1003 601 | SLA 3 MPY BY 8 U6C05740 01DE D001 602 | STO *+1 U6C05750 01DF 6700 0000 603 | LDX L3 *-* SIGN-OFF MESSAGE POINTER U6C05760 01E1 C600 012BR 604 | IC360 LD L2 IC919+4 EBC COMPLETE U6C05770 01E3 D700 03C8R 605 | STO L3 IC980+22 ST COMPLETE OVER NOT DONE U6C05780 01E5 7301 606 | MDX 3 1 INCR MESSAGE POINTER U6C05790 01E6 7201 607 | MDX 2 1 INCR EBC COMPLETE POINTER U6C05800 01E7 70F9 608 | MDX IC360 BR TO MOVE TWO MORE CHARS U6C05810 609 | * U6C05820 610 | * CHECK FOR KEYBOARD INTERRUPT U6C05830 611 | * U6C05840 01E8 7400 01F6R 612 | IC370 MDX L IC380,0 SKIP IF NO INTERRUPT U6C05850 01EA 7009 613 | MDX IC375 BR TO END SEQUENCE U6C05860 614 | * U6C05870 615 | * INCR FROM-TO TABLE POINTER U6C05880 616 | * U6C05890 01EB 1010 617 | SLA 16 U6C05900 01EC D400 0138R 618 | STO L IC933 CLEAR ID ERROR U6C05910 01EE 7402 0136R 619 | MDX L IC931,2 INCR FROM-TO POINTER U6C05920 01F0 6580 0136R 620 | LDX I1 IC931 FROM-TO TABLE POINTER U6C05930 01F2 4C00 0034R 621 | BSC L IC050 BR TO TEST FOR LAST CART U6C05940 01F4 4C00 0037R 622 | IC375 BSC L IC060 BR TO END SEQUENCE U6C05950 623 | * U6C05960 624 | * KEYBOARD INTERRUPT MAKES IC380 NON-0 U6C05970 625 | * U6C05980 01F6 0000 626 | IC380 DC *-* ENTRY PT AND INTERRUPT INDR U6C05990 01F7 0802 627 | XIO IC939 RESET INTERRUPT U6C06000 01F8 4C00 00D5 628 | BSC L $I410 BR TO ILS04 U6C06010 629 | * U6C06020 630 | * IOCC TO RESET KEYBOARD INTERRUPT U6C06030 631 | * U6C06040 01FA 632 | IC939 BSS E 1 EVEN BOUNDARY FOR IOCC U6C06050 01FB 0F01 633 | DC /0F01 SENSE WITH RESET FUNCTION U6C06060 634 | * U6C06070 635 | * WRITE ONE SECTOR SUBROUTINE U6C06080 636 | * U6C06090 01FC 0000 637 | IC355 DC *-* RETURN ADDRESS U6C06100 01FD 6A63 638 | STX 2 IC950+1 SET UP ADDR IN DISC IOCC U6C06110 01FE C861 639 | LDD IC950 WRITE FUNC AND BUFFER ADDR U6C06120 01FF 4400 00F2 640 | BSI L DZ000 WRITE A SECTOR U6C06130 0201 7400 00EE 641 | IC356 MDX L $DBSY,0 SKIP IF DISK NOT BUSY 2-11 U6C06140 0203 70FD 642 | MDX IC356 LOOP ON BUSY 2-11 U6C06150 643 | * 2-11 U6C06160 0204 4C80 01FCR 644 | BSC I IC355 EXIT U6C06170 645 | * U6C06180 646 | * PRINT ERROR MESSAGE SUBROUTINE U6C06190 647 | * U6C06200 0206 0000 648 | IC400 DC *-* RETURN ADDRESS U6C06210 0207 6C00 0138R 649 | STX L IC933 SET ID RECORD ERROR ON U6C06220 0209 C400 0136R 650 | LD L IC931 FROM-TO TABLE POINTER U6C06230 020B 1003 651 | SLA 3 MULTIPLY BY 8 U6C06240 020C D001 652 | STO *+1 U6C06250 020D 6600 0000 653 | LDX L2 *-* SIGN-OFF MESSAGE POINTER U6C06260 020F CE00 03BER 654 | LDD L2 IC980+12 EBC CART ID U6C06270 0211 D81A 655 | STD IC940+6 U6C06280 0212 62F5 656 | LDX 2 -11 INIT MESSAGE POINTER U6C06290 0213 C300 657 | IC410 LD 3 0 FIRST WORD OF MESSAGE TYPE U6C06300 0214 D600 023AR 658 | STO L2 IC940+20 STORE IN ERROR MESSAGE U6C06310 0216 7301 659 | MDX 3 1 INCR TO NEXT WORD U6C06320 0217 7201 660 | MDX 2 1 INCR POINTER U6C06330 0218 70FA 661 | MDX IC410 BR TO MOVE ANOTHER WORD U6C06340 0219 C808 662 | LDD IC940-4 FUNC CODE AND WORD CNT ADDR U6C06350 021A 4480 012DR 663 | BSI I IC922 BR TO PRINT ROUTINE U6C06360 021C C400 0036 664 | LD L $PBSY PRINCIPAL PR BUSY INDR U6C06370 021E 4820 665 | BSC Z SKIP NEXT IF NOT BUSY U6C06380 021F 70FC 666 | MDX *-4 LOOP ON BUSY U6C06390 0220 4C80 0206R 667 | BSC I IC400 EXIT U6C06400 668 | * U6C06410 669 | * ERROR MESSAGE BUFFER U6C06420 670 | * U6C06430 0222 671 | BSS E 0 MAKE ADDR EVEN U6C06440 0222 7001 672 | DC /7001 WRITE FUNCTION CODE U6C06450 0223 0225R 673 | DC IC940-1 BUFFER WORD COUNT ADDR U6C06460 0224 0000 674 | DC 0 BLANK SPACER WORD U6C06470 0225 0014 675 | DC IC941-IC940 WORD COUNT U6C06480 0226 4040 C3C1 D9E3 D9C9 676 | IC940 EBC . CARTRIDGE . U6C06490 C4C7 C540 | 022C 4040 4040 4040 677 | EBC . . CART ID FOLLOWED BY 2 SPACE U6C06500 022F 4040 4040 4040 4040 678 | EBC . . 22 BLANKS U6C06510 4040 4040 4040 4040 | 4040 4040 4040 | 023A C9E2 40C4 C5C6 C5C3 679 | IC941 EBC .IS DEFECTIVE . U6C06520 E3C9 E5C5 4040 4040 | 4040 4040 4040 | 0245 C9E2 40D5 D6E3 40C1 680 | IC942 EBC .IS NOT AVAILABLE . U6C06530 E5C1 C9D3 C1C2 D3C5 | 4040 4040 4040 | 0250 C9D5 E5C1 D3C9 C440 681 | IC943 EBC .INVALID...LOGICAL 0 ID. U6C06540 0254 D5C5 E640 D3C1 C2C5 682 | IC944 EBC .NEW LABEL IS INVALID . U6C06550 D340 C9E2 40C9 D5E5 | C1D3 C9C4 4040 | 683 | * U6C06560 684 | * DISK WRITE IOCC U6C06570 685 | * U6C06580 0260 686 | BSS E 0 MAKE ADDRESS EVEN U6C06590 0260 7001 687 | IC950 DC /7001 DISK WRITE FUNCTION U6C06600 0261 0000 688 | DC *-* ADDR OF BUFFER TO WRITE U6C06610 689 | * U6C06620 690 | * AREA CODE TABLE U6C06630 691 | * U6C06640 0262 2000 692 | IC960 DC /2000 DRIVE 0 U6C06650 0263 8800 693 | DC /8800 DRIVE 1 U6C06660 0264 9000 694 | DC /9000 DRIVE 2 U6C06670 0265 9800 695 | DC /9800 DRIVE 3 U6C06680 0266 A000 696 | DC /A000 DRIVE 4 U6C06690 0267 B000 697 | DC /B000 DRIVE 5 2-11 U6C06700 0268 B800 698 | DC /B800 DRIVE 6 2-11 U6C06710 0269 B810 699 | DC /B810 DRIVE 7 2-11 U6C06720 026A B820 700 | DC /B820 DRIVE 8 2-11 U6C06730 026B B830 701 | DC /B830 DRIVE 9 2-11 U6C06740 026C B840 702 | DC /B840 DRIVE 10 2-11 U6C06750 703 | * U6C06760 704 | * SATELLITE SECTOR 0 BUFFER U6C06770 705 | * U6C06780 026E 706 | BSS E 0 MAKE ADDRESS EVEN U6C06790 026E 0138 707 | IC970 DC IC977-IC970-1 WORD COUNT U6C06800 026F 0000 708 | DC 0 SECTOR ADDR U6C06810 0270 709 | BSS 3 DEFECTIVE CYLINDER TABLE U6C06820 0273 710 | BSS 1 CARTRIDGE LABEL U6C06830 0274 711 | BSS $ZEND-CLDST-6 RESERVED FOR SYSTEM U6C06840 712 | * U6C06850 713 | * CONSOLE PRINTER PRINT ROUTINE U6C06860 714 | * U6C06870 01E0 715 | A EQU $ZEND COLD START RELATIVE ADDRESS U6C06880 037E 6500 01ED 716 | IC971 LDX L1 IC973-IC971+A XR1 TO INTRPT BR ADDR U6C06890 0380 6D00 000C 717 | STX L1 12 SET UP LOC 12 FOR INTERRUPT U6C06900 0382 6114 718 | LDX 1 IC977-IC976+1 CHARACTER COUNT U6C06910 0383 080C 719 | IC972 XIO IC974 TYPE A CHARACTER U6C06920 0384 7401 01F2 720 | MDX L IC974-IC971+A,1 PT I0CC TO NEXT CHAR U6C06930 0386 3000 721 | WAIT WAIT FOR INTERRUPT U6C06940 0387 71FF 722 | MDX 1 -1 DECR CHAR COUNT U6C06950 0388 70FA 723 | MDX IC972 BR TO TYPE ANOTHER CHAR U6C06960 0389 3000 724 | WAIT HARD WAIT U6C06970 038A 70FE 725 | MDX *-2 GO BACK TO WAIT U6C06980 038B 0000 726 | IC973 DC *-* INTERRUPT ENTRY POINT U6C06990 038C 0805 727 | XIO IC975 SENSE AND RESET U6C07000 038D 4CC0 01ED 728 | BOSC I IC973-IC971+A RETURN U6C07010 729 | * U6C07020 730 | * IOCC WORDS TO PRINT MESSAGE U6C07030 731 | * U6C07040 0390 732 | BSS E 0 MAKE ADDRESS EVEN U6C07050 0390 01F6 733 | IC974 DC IC976-IC971+A ADDR OF MESSAGE BUFFER U6C07060 0391 0900 734 | DC /0900 WRITE FUNCTION CODE U6C07070 0392 0000 735 | IC975 DC 0 BLANK WORD FOR SENSE IOCC U6C07080 0393 0F01 736 | DC /0F01 SENSE AND RESET FUNCTION U6C07090 737 | * U6C07100 738 | * MESSAGE CHARACTERS - CONSOLE PRINTER U6C07110 739 | * U6C07120 0394 8100 740 | IC976 DC /8100 CARRIER RETURN U6C07130 0395 7400 741 | DC /7400 N U6C07140 0396 5000 742 | DC /5000 O U6C07150 0397 7400 743 | DC /7400 N U6C07160 0398 8400 744 | DC /8400 HYPHEN U6C07170 0399 9800 745 | DC /9800 S U6C07180 039A A400 746 | DC /A400 Y U6C07190 039B 9800 747 | DC /9800 S U6C07200 039C 9C00 748 | DC /9C00 T U6C07210 039D 2100 749 | DC /2100 SPACE U6C07220 039E 1C00 750 | DC /1C00 C U6C07230 039F 3C00 751 | DC /3C00 A U6C07240 03A0 6000 752 | DC /6000 R U6C07250 03A1 9C00 753 | DC /9C00 T U6C07260 03A2 2100 754 | DC /2100 SPACE U6C07270 03A3 3400 755 | DC /3400 E U6C07280 03A4 6000 756 | DC /6000 R U6C07290 03A5 6000 757 | DC /6000 R U6C07300 03A6 5000 758 | DC /5000 O U6C07310 03A7 6000 759 | IC977 DC /6000 R U6C07320 760 | * U6C07330 761 | * SATELLITE SECTOR 2 BUFFER- LET HEADER U6C07340 762 | * U6C07350 03A8 763 | BSS E 0 MAKE ADDR EVEN U6C07360 03A8 0008 764 | IC978 DC IC979-IC978-1 BUFFER WORD COUNT U6C07370 03A9 0002 765 | DC /0002 SECTOR ADDR OF LET U6C07380 03AA 0000 766 | DC /0000 RELATIVE LET SCTR NUMBER U6C07390 03AB 0018 767 | DC /0018 USER AREA SCTR ADDRESS U6C07400 03AC 0000 768 | DC /0000 LET HEADER RESERVED WORD U6C07410 03AD 0138 769 | DC /0138 WDS AVAILABLE THIS LET SCTR U6C07420 03AE 0000 770 | DC /0000 LET SCTR CHAIN ADDRESS U6C07430 03AF 7112 771 | DC /7112 1DUMY IN NAME CODE WITH U6C07440 03B0 4528 772 | DC /4528 * 01 AS FIRST TWO BITS. U6C07450 03B1 6280 773 | IC979 DC /6280 DB SIZE OF WORKING STORAGE U6C07460 774 | * U6C07470 775 | * FROM-TO CARTRIDGE ID TABLE AND SIGN- U6C07480 776 | * OFF MESSAGE PASSED FROM RDREC FUNC U6C07490 777 | * U6C07500 03B2 778 | IC980 BSS E 1 MAKE NEXT ADDR ODD U6C07510 03B3 779 | BSS 1 FROM-TO ELEMENT COUNT U6C07520 03B4 780 | BSS 8 4 PAIRS FROM-TO CART IDS U6C07530 781 | * U6C07540 782 | * SIGN-OFF MESSAGE U6C07550 783 | * U6C07560 03BC 784 | BSS E 1 BLANK SPACER WORD U6C07570 03BD 000F 785 | IC981 DC IC982-IC981-1 WORD COUNT U6C07580 03BE 4040 4040 786 | EBC . . FROM U6C07590 03C0 4040 4040 4040 787 | EBC . . SPACES U6C07600 03C3 4040 4040 788 | EBC . . TO U6C07610 03C5 4040 4040 4040 789 | EBC . . SPACES U6C07620 03C8 D5D6 E340 C4D6 D5C5 790 | EBC .NOT DONE. U6C07630 03CC 4040 791 | EBC . . U6C07640 03CD 000F 792 | IC982 DC IC983-IC982-1 WD COUNT U6C07650 03CE 4040 4040 793 | EBC . . FROM U6C07660 03D0 4040 4040 4040 794 | EBC . . SPACES U6C07670 03D3 4040 4040 795 | EBC . . TO U6C07680 03D5 4040 4040 4040 796 | EBC . . SPACES U6C07690 03D8 D5D6 E340 C4D6 D5C5 797 | EBC .NOT DONE. U6C07700 03DC 4040 798 | EBC . . U6C07710 03DD 000F 799 | IC983 DC IC984-IC983-1 WD COUNT U6C07720 03DE 4040 4040 800 | EBC . . FROM U6C07730 03E0 4040 4040 4040 801 | EBC . . SPACES U6C07740 03E3 4040 4040 802 | EBC . . TO U6C07750 03E5 4040 4040 4040 803 | EBC . . SPACES U6C07760 03E8 D5D6 E340 C4D6 D5C5 804 | EBC .NOT DONE. U6C07770 03EC 4040 805 | EBC . . U6C07780 03ED 000F 806 | IC984 DC IC985-IC984-1 WD COUNT U6C07790 03EE 4040 4040 807 | EBC . . FROM U6C07800 03F0 4040 4040 4040 808 | EBC . . SPACES U6C07810 03F3 4040 4040 809 | EBC . . TO U6C07820 03F5 4040 4040 4040 810 | EBC . . SPACES U6C07830 03F8 D5D6 E340 C4D6 D5C5 811 | EBC .NOT DONE. U6C07840 03FC 4040 812 | EBC . . U6C07850 03FDR 813 | IC985 EQU * U6C07860 814 | * U6C07870 815 | * SATELLITE DCOM BUFFER U6C07880 816 | * U6C07890 03FE 817 | BSS E 0 MAKE ADDR EVEN U6C07900 03FE 0051 818 | IC993 DC 81 WORD COUNT U6C07910 03FF 0001 819 | DC /0001 SECTOR ADDR OF DCOM U6C07920 0400 820 | BSS 81-52 RESERVE 81 WORDS U6C07930 821 | * U6C07940 822 | * MASTER DCOM BUFFER U6C07950 823 | * U6C07960 041E 824 | BSS E 0 MAKE ADDR EVEN U6C07970 041E 003C 825 | IC992 DC 60 WORD COUNT U6C07980 041F 0001 826 | DC /0001 SECTOR ADDRESS OF DCOM U6C07990 0420 827 | BSS 60 RESERVE 60 WORDS U6C08000 0420 828 | ORG *-60 BEGIN FOLLOWING SUBR. 2-11 U6C08010 829 | * *IN DCOM DISK BUFFER 2-11 U6C08020 830 | * *TO ALLOW IT TO BE 2-11 U6C08030 831 | * *OVERLAYED AFTER IT IS 2-11 U6C08040 832 | * *USED 2-11 U6C08050 833 | *************************************************** U6C08060 834 | * THIS SUBROUTINE DETERMINES WHICH DRIVES HAVE * U6C08070 835 | * CARTRIDGES MOUNTED AND READY. IT ALSO SAVES THE* U6C08080 836 | * IDS IN PHYSICAL DRIVE ORDER.IF A DRIVE DOES NOT * U6C08090 837 | * HAVE A CARTRIDGE MOUNTED AND READY, ITS ENTRY * U6C08100 838 | * IN THE PHYSICAL DRIVE LIST IS SET TO ZERO * U6C08110 839 | *************************************************** U6C08120 0420 0000 841 | IT200 DC *-* ENTRY/RETURN ADDRESS 2-11 U6C08140 843 | * SAVE VALUES OF $ACDE IN COMMA U6C08160 0421 62FB 845 | LDX 2 -5 XR1 = $ACDE TABLE SIZE 2-11 U6C08180 0422 C600 00A4 846 | IT205 LD L2 $ACDE+5 LOAD FIRST ENTRY 2-11 U6C08190 0424 D600 0483R 847 | STO L2 IT926+5 *AND SAVE 2-11 U6C08200 0426 7201 848 | MDX 2 1 SKIP IF FINISHED 2-11 U6C08210 0427 70FA 849 | MDX IT205 *OTHERWISE, CONTINUE 2-11 U6C08220 0428 61F5 851 | LDX 1 -11 DRIVE COUNT TO XR1 2-11 U6C08240 0429 C400 000A 852 | LD L $LEV2 SAVE CONTENTS 2-11 U6C08250 042B D051 853 | STO IT923 *OF LOCATION 10 2-11 U6C08260 042C C04F 855 | IT210 LD IT922 RESET INTERRUPT 2-11 U6C08280 042D D400 000A 856 | STO L $LEV2 *BRANCH ADDRESS 2-11 U6C08290 042F C500 026DR 857 | LD L1 IC960+11 FETCH AREA CODE 2-11 U6C08300 0431 D400 009F 858 | STO L $ACDE STORE TO COMMA 2-11 U6C08310 0433 E810 859 | OR IT918 OR IN READ FUNC CODE 2-11 U6C08320 0434 D040 860 | STO IT911+1 STO TO 2ND WD OF IOCC 2-11 U6C08330 0435 E845 861 | OR IT921 OR IN SENSE FUNC CODE 2-11 U6C08340 0436 D040 862 | STO IT912+1 STO TO 2ND WD OF IOCC 2-11 U6C08350 0437 083C 863 | XIO IT911 INITIATE DISK READ 2-11 U6C08360 0438 083D 864 | XIO IT912 SENSE DISK 2-11 U6C08370 0439 1003 865 | SLA 3 SHIFT BUSY BIT TO SIGN 2-11 U6C08380 043A 4C28 0445R 866 | BSC L IT230,+Z BR IF DISK BUSY 2-11 U6C08390 868 | * DISK NOT BUSY, NO CARTRIDGE AVAILABLE U6C08410 043C 1010 870 | SLA 16 SET PHY DR LIST ENTRY 2-11 U6C08430 043D D500 048ER 871 | STO L1 IT904+11 *TO ZERO 2-11 U6C08440 043F 701A 872 | MDX IT240 BR TO INCRE DR POINTER 2-11 U6C08450 874 | * OPERATION COMPLETE INTERRUPT PROCESSING U6C08470 0440 0000 876 | IT220 DC *-* INT ENTRY POINT 2-11 U6C08490 0441 0834 877 | XIO IT912 SENSE WITH RESET 2-11 U6C08500 0442 4CC0 0440R 878 | BOSC I IT220 CONTINUE 2-11 U6C08510 0444 0600 879 | IT918 DC /0600 READ FUNC CODE 2-11 U6C08520 881 | * CARTRIDGE AVAILABLE, FETCH CARTRIDGE ID AND U6C08540 882 | * DEFECTIVE CYLINDER ADDRESS U6C08550 0445 C0FA 884 | IT230 LD IT220 CHECK INT ENTRY POINT 2-11 U6C08570 0446 4818 885 | BSC +- *FOR NON-ZERO, AND LOOP2-11 U6C08580 0447 70FD 886 | MDX IT230 *UNTIL INTERRUPT OCCURS2-11 U6C08590 0448 1010 887 | SLA 16 RESET INT ENTRY POINT 2-11 U6C08600 0449 D0F6 888 | STO IT220 *TO ZERO 2-11 U6C08610 044A C032 889 | LD IT923 RESTORE CONTENTS 2-11 U6C08620 044B D400 000A 890 | STO L $LEV2 *OF LOCATION 10 2-11 U6C08630 044D C02B 891 | LD IT915+1 SET ARM POSITION TO 2-11 U6C08640 044E D400 009A 892 | STO L $CYLN *SECTOR ADDR JUST READ 2-11 U6C08650 0450 C029 893 | LD IT917 FETCH ADDR OF I/O AREA 2-11 U6C08660 0451 1890 894 | SRT 16 SHIFT TO EXT, ACC = 0 2-11 U6C08670 0452 4400 00F2 895 | BSI L DZ000 BRANCH TO DISK READ 2-11 U6C08680 0454 7400 00EE 896 | MDX L $DBSY,0 SKIP IF READ COMPLETE 2-11 U6C08690 0456 70FD 897 | MDX *-3 LOOP IF NOT COMPLETE 2-11 U6C08700 0457 C01B 899 | LD IT908+3 FETCH CART ID AND 2-11 U6C08720 0458 D500 048ER 900 | STO L1 IT904+11 *STORE TO CART LIST 2-11 U6C08730 045A C022 901 | IT240 LD IT923 RESTORE CONTENTS OF 2-11 U6C08740 045B D400 000A 902 | STO L $LEV2 *LEVEL 2 INT ADDR 2-11 U6C08750 045D 7202 903 | MDX 2 2 INCRE AVAIL CART PNTR 2-11 U6C08760 045E 7101 904 | MDX 1 1 SKIP IF DR CNT = 0 2-11 U6C08770 045F 70CC 905 | MDX IT210 *OTHERWISE, CONTINUE 2-11 U6C08780 907 | * RESTORE VALUES OF $ACDE IN COMMA, AND SINCE U6C08800 908 | * THIS SUBROUTINE HAS MOVED ALL ARMS TO CYL. 0 U6C08810 909 | * TO READ THE CARTRIDGE ID, SET $CYLN TO ZERO U6C08820 0460 62FB 911 | LDX 2 -5 XR1 = TABLE LENGTH 2-11 U6C08840 0461 C600 0483R 912 | IT250 LD L2 IT926+5 RESTORE ORIGINAL 2-11 U6C08850 0463 D600 00A4 913 | STO L2 $ACDE+5 *CONTENTS OF $ACDE 2-11 U6C08860 0465 1810 914 | SRA 16 SET CURRENT ARM 2-11 U6C08870 0466 D600 009F 915 | STO L2 $CYLN+5 *POSITION TO ZERO 2-11 U6C08880 0468 7201 916 | MDX 2 1 SKIP IF FINISHED 2-11 U6C08890 0469 70F7 917 | MDX IT250 *OTHERWISE, CONTINUE 2-11 U6C08900 046A 4C80 0420R 919 | BSC I IT200 RETURN TO MAINLINE 2-11 U6C08920 921 | * CONSTANTS AND WORK AREA U6C08940 046C 923 | BSS E 1 ASSURE ODD BOUNDARY 2-11 U6C08960 046D FFFF 924 | DC -1 CONSTANT OF -1 2-11 U6C08970 046E 0004 925 | IT906 DC 4 WORD COUNT 2-11 U6C08980 046F 0000 926 | IT907 DC #IDAD SECTOR ADDRESS 2-11 U6C08990 0470 927 | IT908 BSS 4 4 DEF CYL,ID I/O AREA 2-11 U6C09000 **** Warning: Modifier '4' not permitted 0474 0478R 928 | IT911 DC IT915 ADDRESS OF I/O AREA 2-11 U6C09010 0475 0000 929 | DC *-* 2ND WORD OF READ IOCC 2-11 U6C09020 0476 0658 930 | IT912 DC /658 MAXIMUM ARM POSITION 2-11 U6C09030 0477 0000 931 | DC *-* 2ND WORD OF SENSE IOCC 2-11 U6C09040 0478 0001 932 | IT915 DC 1 WORD COUNT 2-11 U6C09050 0479 0000 933 | DC *-* I/O AREA 2-11 U6C09060 047A 046ER 934 | IT917 DC IT906 ADDR OF ID I/O AREA 2-11 U6C09070 047B 0701 935 | IT921 DC /0701 SENSE W/RESET FUNC CODE2-11 U6C09080 047C 0440R 936 | IT922 DC IT220 ADDR OF TEMP INT ROUTN 2-11 U6C09090 047D 0000 937 | IT923 DC *-* $LEV2 SAVE AREA 2-11 U6C09100 047E 938 | IT926 BSS 5 $ACDE SAVE AREA 2-11 U6C09110 0483 939 | IT904 BSS 11 CART LIST-PHY DR ORDER 2-11 U6C09120 940 | * THE FOLLOWING BSS MUST CAUSE DISKN U6C09130 941 | * TO BEGIN ON AN EVEN BOUNDARY U6C09140 942 | * U6C09150 048E 943 | BSS E 1 U6C09160 944 | * U6C09170 945 | * SET READ OR WRITE ERROR U6C09180 946 | * U6C09190 048F 7400 0134R 947 | IC320 MDX L IC929,0 SKIP NEXT IF RETRY NOT SET U6C09200 0491 7003 948 | MDX IC325 BR IF NOT FIRST ERROR U6C09210 0492 7432 0134R 949 | MDX L IC929,50 INCR TO RETRY 50 TIMES U6C09220 0494 7004 950 | MDX IC326 BR TO EXIT U6C09230 0495 C400 0130R 951 | IC325 LD L IC925 CURRENT CYL SCTR 0 ADDR U6C09240 0497 D400 0132R 952 | STO L IC927 SET BAD CYL INDR ON U6C09250 0499 4C00 0000 953 | IC326 BSC L *-* EXIT U6C09260 049B 70F3 954 | MDX IC320 BR TO SET ERROR U6C09270 955 | * U6C09280 956 | * U6C09290 957 | * PATCH AREA REMOVED 2-11 U6C09300 958 | * U6C09310 959 | * U6C09320 DISK READ/WRITE SUBROUTINE 049C 6A4F 961 | DISKN STX 2 D0900+3 SAVE CONTENTS OF XR2 U6C09340 049D 6680 0000 962 | LDX I2 *-* PUT LINK WD FROM TV IN XR2 U6C09350 049F 7035 963 | MDX D0027 BRANCH TO CALL PROCESSING U6C09360 04A0 0000 964 | D0004 DC *-* ENTRY POINT FOR INTERRUPTS U6C09370 04A1 7005 965 | MDX D0600 BR TO CONTINUE U6C09380 04A2 0000 966 | DC *-* DISC ENTRY U6C09390 04A3 6A48 967 | STX 2 D0900+3 SAVE XR2 U6C09400 04A4 6680 04A2R 968 | LDX I2 *-4 U6C09410 04A6 702E 969 | MDX D0027 BRANCH TO CONTINUE U6C09420 04A7 1010 970 | D0600 SLA 16 INITIALIZE PHY DR CODE 2-11 U6C09430 04A8 D009 971 | STO D0620+1 *ACCUMULATOR TO ZERO 2-11 U6C09440 04A9 0C00 052AR 972 | XIO L SENSI-1 SENSE ILSW 2-11 U6C09450 04AB 1001 973 | D0610 SLA 1 2-11 U6C09460 04AC 4C18 04B1R 974 | BSC L D0620,+- BR IF DR CD ACCUMULATED2-11 U6C09470 04AE 7402 04B2R 975 | MDX L D0620+1,2 ACCUMULATE 2*DR CODE 2-11 U6C09480 04B0 70FA 976 | MDX D0610 BR TO CHECK FOR ZERO 2-11 U6C09490 04B1 6500 0000 977 | D0620 LDX L1 *-* XR1 = 2*DRIVE NUMBER 2-11 U6C09500 04B3 7500 0534R 978 | MDX L1 CYLIN ADJUST TO STORAGE AREA U6C09510 04B5 0900 979 | XIO 1 D0950-1-C SENSE WITH RESET 2-11 U6C09520 04B6 4C10 04C1R 980 | BSC L D0698,- BRANCH IF NO DATA ERROR U6C09530 04B8 C879 981 | LDD IOCCN FETCH LAST IOCC 2-11 U6C09540 04B9 40E0 982 | BSI IC326+1 BR TO DISK ERROR RTN 2-9 U6C09550 04BA 4C10 04C8R 983 | BSC L D0697,- BRANCH TO IGNORE ERROR U6C09560 04BC C000 984 | D0696 LD * FETCH NON-ZERO WORD U6C09570 04BD 0874 985 | XIO IOCCN RETRY LAST OPERATION 2-11 U6C09580 04BE D071 986 | D0699 STO DBUSY SET DBUSY AS SWITCH 2-11 U6C09590 04BF 4C80 04A0R 987 | BSC I D0004 RETURN TO INTERRUPT LEVEL U6C09600 988 | * U6C09610 04C1 C071 989 | D0698 LD IOCCN+1 GET 2ND WD LAST IOCC 2-11 U6C09620 04C2 E068 990 | AND SENSI DETERMINE IF LAST OPERATION U6C09630 04C3 4C18 04CAR 991 | BSC L D0695,+- *WAS A SENSE. BR IF IT WAS U6C09640 04C5 C06A 992 | LD DBUSY CHECK DBUSY SIGN 2-11 U6C09650 04C6 4C28 04BCR 993 | BSC L D0696,Z+ U6C09660 04C8 1010 994 | D0697 SLA 16 CLEAR ACC TO SET SWITCH U6C09670 04C9 70F4 995 | MDX D0699 RETURN TO INTERRUPT LEVEL U6C09680 996 | * U6C09690 04CA 74FF 052DR 997 | D0695 MDX L SCNTR,-1 DECREMENT RETRY COUNTER U6C09700 04CC 7002 998 | MDX *+2 BR TO TRY AGAIN U6C09710 04CD 3333 999 | DC /3333 WAIT U6C09720 04CE 70FE 1000 | MDX *-2 U6C09730 04CF 0900 1001 | XIO 1 D0950-1-C SENSE WITH RESET 2-11 U6C09740 04D0 1004 1002 | SLA 4 U6C09750 04D1 4C28 04C8R 1003 | BSC L D0697,Z+ BRANCH IF CARRIAGE HOME U6C09760 04D3 0852 1004 | XIO SEEK INITIATE SEEK U6C09770 04D4 70EA 1005 | MDX D0699+1 BRANCH TO EXIT U6C09780 1006 | * U6C09790 04D5 D852 1007 | D0027 STD SAVAC SAVE ACC AND EXT U6C09800 04D6 6913 1008 | STX 1 D0900+1 SAVE CONTENTS OF XR1 U6C09810 04D7 CE80 0001 1009 | LDD I2 1 FETCH WD CNT, SCTR ADDRESS U6C09820 04D9 1090 1010 | SLT 16 ISOLATE THE DRIVE CODE U6C09830 04DA 18CB 1011 | RTE 11 2-11 U6C09840 04DB D001 1012 | STO SAVE1+1 SAVE TWICE THE U6C09850 04DC 6500 0000 1013 | SAVE1 LDX L1 *-* *DRIVE CODE U6C09860 04DE 7500 0534R 1014 | MDX L1 CYLIN POINT TO BUFFER AREA U6C09870 1015 | * ONE INSTRUCTION REMOVED 2-11 U6C09880 04E0 7400 0530R 1016 | MDX L DBUSY,0 SKIP IF DISK NOT BUSY 2-11 U6C09890 04E2 70FD 1017 | MDX *-3 *BRANCH TO TRY AGAIN U6C09900 04E3 C200 1018 | LD 2 0 LOAD CONTROL PARAMETER U6C09910 04E4 4C20 04F3R 1019 | BSC L D0202,Z BRANCH IF NOT TEST FUNCTION U6C09920 04E6 C841 1020 | D0024 LDD SAVAC RESTORE ACC AND EXT U6C09930 04E7 7202 1021 | MDX 2 2 SET UP FOR RETURN TO CALL+3 U6C09940 04E8 6A05 1022 | D0030 STX 2 D0150 STORE RETURN ADDRESS U6C09950 04E9 6500 0000 1023 | D0900 LDX L1 *-* RESTORE XR1 U6C09960 04EB 6600 0000 1024 | LDX L2 *-* RESTORE XR2 U6C09970 04ED 4C00 0000 1025 | BSC L *-* RETURN TO USER U6C09980 04EER 1026 | D0150 EQU *-1 U6C09990 1027 | * U6C10000 1028 | * PREPARE TO MAKE PRE-OPERATIVE ERROR EXIT U6C10010 1029 | * U6C10020 04EF C03F 1030 | D0550 LD NTRDY LOAD NOT READY ERROR CODE U6C10030 04F0 4400 0028 1031 | BSI L STRAP WAIT AT PRE-OPERATIVE EXIT U6C10040 04F2 7017 1032 | MDX D0203 BR ON STRAP RETURN U6C10050 1033 | * U6C10060 1034 | * PROCESS ALL FUNCTIONS EXCEPT TEST U6C10070 1035 | * U6C10080 04F3 1885 1036 | D0202 SRT 5 RIGHT JUSTIFY SCTR ADDR U6C10090 04F4 C201 1037 | LD 2 1 LOAD AND SAVE ADDRESS U6C10100 04F5 D03C 1038 | STO IOCCN *OF USERS I/O BUFFER 2-11 U6C10110 04F6 C680 0001 1039 | LD I2 1 FETCH WORD COUNT U6C10120 04F8 DE80 0001 1040 | STD I2 1 U6C10130 04FA 1003 1041 | SLA 3 ISOLATE SECTOR NUMBER U6C10140 04FB 18C3 1042 | RTE 3 U6C10150 04FC 180D 1043 | SRA 13 U6C10160 04FD EA00 1044 | OR 2 0 OR IN THE FUNCTION CODE U6C10170 04FE D031 1045 | STO DBUSY SET BUSY INDICATOR 2-11 U6C10180 04FF F101 1046 | EOR 1 D0950-C OR IN AREA CD & SENSE 2-11 U6C10190 0500 F029 1047 | EOR D0001 U6C10200 0501 D031 1048 | STO IOCCN+1 PUT IN 2ND WD OF IOCC 2-11 U6C10210 0502 E028 1049 | AND SENSI CHECK IF REQ FUNC IS A SEEK U6C10220 0503 4C20 050AR 1050 | BSC L D0203,Z BR IF NOT U6C10230 0505 C024 1051 | LD D0001 U6C10240 0506 D100 1052 | STO 1 CYLIN-C SET CURRENT CYLN TO 1 2-11 U6C10250 0507 1008 1053 | SLA 8 U6C10260 0508 D024 1054 | STO SCNTR U6C10270 0509 1090 1055 | SLT 16 U6C10280 050A 0900 1056 | D0203 XIO 1 D0950-1-C SENSE DR N WITH RESET 2-11 U6C10290 050B 1002 1057 | SLA 2 TEST FOR DRIVE READY U6C10300 050C 4C28 04EFR 1058 | BSC L D0550,Z+ *AND BRANCH IF IT IS NOT U6C10310 1059 | * U6C10320 1060 | * CHECK TO SEE IF A SEEK IS NECESSARY U6C10330 1061 | * U6C10340 050E 1090 1062 | SLT 16 SAVE SOUGHT U6C10350 050F D0CD 1063 | STO SAVE1+1 *CYLINDER U6C10360 0510 9100 1064 | S 1 CYLIN-C SUB CURRENT ARM POSN 2-11 U6C10370 0511 4C18 0524R 1065 | BSC L D0042,+- BR IF SEEK NOT NECESSARY U6C10380 1066 | * 2-11 U6C10390 1067 | * 2-11 U6C10400 1068 | * SIX INSTRUCTIONS REMOVED 2-11 U6C10410 1069 | * 2-11 U6C10420 1070 | * BUILD SEEK IOCC 2-11 U6C10430 1071 | * 2-11 U6C10440 0513 1890 1072 | SRT 16 PUT NO. CYLINDERS IN EXT U6C10450 0514 E017 1073 | AND D0940 AND WITH BIT 3 U6C10460 0515 E901 1074 | OR 1 D0950-C CONSTRUCT 2-11 U6C10470 0516 F014 1075 | EOR SENSI *SEEK U6C10480 0517 8016 1076 | A D0917 *IOCC U6C10490 0518 18D0 1077 | RTE 16 U6C10500 0519 4810 1078 | BSC - SKIP IF SEEK TOWARD HOME U6C10510 051A 7002 1079 | MDX *+2 BR TO CONTINUE U6C10520 051B F012 1080 | EOR D0917 GENERATE POSITIVE NO. CYLS U6C10530 051C 800D 1081 | A D0001 *TO SEEK U6C10540 051D D808 1082 | STD SEEK STORE IOCC WORDS U6C10550 1083 | * INST.MOVED AHEAD 4 INST2-10 U6C10560 051E C0BE 1084 | LD SAVE1+1 RESET CURRENT U6C10570 051F D100 1085 | STO 1 CYLIN-C *ARM POSITION 2-11 U6C10580 0520 C00D 1086 | LD D0917 LOAD NEGATIVE NUMBER U6C10590 0521 D00E 1087 | STO DBUSY USE DBUSY AS SEEK FLAG 2-11 U6C10600 0522 0803 1088 | XIO SEEK INITIATE SEEK 2-10 U6C10610 0523 70C2 1089 | MDX D0024 BRANCH TO EXIT U6C10620 0524 080D 1090 | D0042 XIO IOCCN INITIATE READ OR WRITE 2-11 U6C10630 0525 70C0 1091 | MDX D0024 BRANCH TO EXIT U6C10640 1092 | * U6C10650 1093 | * CONSTANTS AND WORK AREAS U6C10660 1094 | * U6C10670 0526 1095 | SEEK BSS E 2 STORAGE FOR SEEK IOCC U6C10680 0528 1096 | SAVAC BSS E 2 ACC AND EXT STORAGE 2-11 U6C10690 052A 0001 1097 | D0001 DC 1 CONSTANT OF ONE U6C10700 052B 0300 1098 | SENSI DC /0300 FUNCTION CODE MASK U6C10710 052C 0004 1099 | D0940 DC 4 SEEK IOCC DIRECTION MASK U6C10720 052D 0000 1100 | SCNTR DC *-* RETRY COUNTER U6C10730 052E FFFF 1101 | D0917 DC -1 CONSTANT U6C10740 052F 5000 1102 | NTRDY DC /5000 DISK NOT READY ERROR CODE U6C10750 0530 0000 1103 | DBUSY DC *-* DISK BUSY/SEEK INDIC 2-11 U6C10760 0532 1104 | IOCCN BSS E 2 IOCC FOR REQUESTED FUNC2-11 U6C10770 0534 00CB 1105 | CYLIN DC 203 CURRENT ARM POSN,DR 0 2-11 U6C10780 0535 2701 1106 | D0950 DC /2701 SENSE IOCC, DR 0 2-11 U6C10790 0536 00CB 1107 | DC 203 CURRENT ARM POSN,DR 1 2-11 U6C10800 0537 8F01 1108 | DC /8F01 SENSE IOCC, DR 1 2-11 U6C10810 0538 00CB 1109 | DC 203 CURRENT ARM POSN,DR 2 2-11 U6C10820 0539 9701 1110 | DC /9701 SENSE IOCC, DR 2 2-11 U6C10830 053A 00CB 1111 | DC 203 CURRENT ARM POSN,DR 3 2-11 U6C10840 053B 9F01 1112 | DC /9F01 SENSE IOCC, DR 3 2-11 U6C10850 053C 00CB 1113 | DC 203 CURRENT ARM POSN,DR 4 2-11 U6C10860 053D A701 1114 | DC /A701 SENSE IOCC, DR 4 2-11 U6C10870 053E 00CB 1115 | DC 203 CURRENT ARM POSN,DR 5 2-11 U6C10880 053F B701 1116 | DC /B701 SENSE IOCC, DR 5 2-11 U6C10890 0540 00CB 1117 | DC 203 CURRENT ARM POSN,DR 6 2-11 U6C10900 0541 BF01 1118 | DC /BF01 SENSE IOCC, DR 6 2-11 U6C10910 0542 00CB 1119 | DC 203 CURRENT ARM POSN,DR 7 2-11 U6C10920 0543 BF11 1120 | DC /BF11 SENSE IOCC, DR 7 2-11 U6C10930 0544 00CB 1121 | DC 203 CURRENT ARM POSN,DR 8 2-11 U6C10940 0545 BF21 1122 | DC /BF21 SENSE IOCC, DR 8 2-11 U6C10950 0546 00CB 1123 | DC 203 CURRENT ARM POSN,DR 9 2-11 U6C10960 0547 BF31 1124 | DC /BF31 SENSE IOCC, DR 9 2-11 U6C10970 0548 00CB 1125 | DC 203 CURRENT ARM POSN,DR 10 2-11 U6C10980 0549 BF41 1126 | DC /BF41 SENSE IOCC, DR 10 2-11 U6C10990 0534R 1127 | C EQU CYLIN TABLE POINTER 2-11 U6C11000 0028 1128 | STRAP EQU 40 ADDRESS OF STRAP IN (COMMA) U6C11010 04A3R 1129 | DIO EQU DISKN+7 TV LINK WORD ADDRESS U6C11020 1130 | * U6C11030 1131 | * DISK SECTOR READ-WRITE BUFFER U6C11040 1132 | * U6C11050 054A 1133 | BSS E 0 MAKE ADDR EVEN U6C11060 054A 0141 1134 | IC990 DC 321 BUFFER WORD COUNT U6C11070 054B 1135 | BSS 321 RESERVE 321 WORDS U6C11080 054C 1136 | ORG *-320 OVERLAY BUFFER WITH NEXT U6C11090 054C 1137 | END IC000 U6C11100 There was 1 warning in this assembly Program transfer address = 0000 === CROSS REFERENCES ========================================================== Name Val Defd Referenced #ACIN 001C 81 142 #ANDU 0023 82 535 #BNDU 0028 83 536 #CIBA 003C 87 540 #CIDN 0037 86 181 214 219 519 532 533 #FPAD 002D 84 538 #IDAD 0000 89 926 #PCID 0032 85 #ULET 0050 88 542 $ACDE 009F 97 548 846 858 913 $CYLN 009A 96 554 892 915 $DBSY 00EE 99 129 641 896 $DCYL 00A4 98 579 $DUMP 003F 95 207 $EXIT 0038 94 $I410 00D5 103 628 $IBT2 00B9 100 154 157 174 587 595 $IREQ 002C 102 147 150 200 $LEV2 000A 101 161 164 176 852 856 890 902 $PBSY 0036 93 190 664 $ZEND 01E0 104 711 715 A 01E0 715 716 720 728 733 C 0534R 1127 979 1001 1046 1052 1056 1064 1074 1085 CLDST 00D0 106 711 CYLIN 0534R 1105 978 1014 1052 1064 1085 1127 D0001 052AR 1097 1047 1051 1081 D0004 04A0R 964 987 D0024 04E6R 1020 1089 1091 D0027 04D5R 1007 963 969 D0030 04E8R 1022 D0042 0524R 1090 1065 D0150 04EER 1026 1022 D0202 04F3R 1036 1019 D0203 050AR 1056 1032 1050 D0550 04EFR 1030 1058 D0600 04A7R 970 965 D0610 04ABR 973 976 D0620 04B1R 977 971 974 975 D0695 04CAR 997 991 D0696 04BCR 984 993 D0697 04C8R 994 983 1003 D0698 04C1R 989 980 D0699 04BER 986 995 1005 D0900 04E9R 1023 961 967 1008 D0917 052ER 1101 1076 1080 1086 D0940 052CR 1099 1073 D0950 0535R 1106 979 1001 1046 1056 1074 DBUSY 0530R 1103 986 992 1016 1045 1087 DIO 04A3R 1129 156 308 347 350 367 370 594 DISKN 049CR 961 1129 DZ000 00F2 105 125 640 895 IC000 0000R 114 1137 IC010 000CR 129 130 IC050 0034R 168 621 IC060 0037R 173 622 IC065 0042R 185 138 IC070 0046R 187 195 IC100 005AR 207 205 IC200 005DR 212 169 IC201 0069R 219 223 228 IC205 0077R 234 215 IC208 007BR 239 221 IC210 00C0R 317 319 IC220 008AR 253 243 257 IC225 0090R 256 284 IC226 0092R 261 213 225 IC230 0097R 267 255 IC232 00A3R 282 272 IC234 00A6R 288 278 IC235 00C5R 324 458 IC236 00ADR 295 263 IC240 00C6R 325 402 IC245 00CDR 333 335 IC250 00D5R 346 357 463 IC255 00E2R 355 464 IC260 00EAR 365 397 469 487 489 IC265 00F8R 378 470 IC270 00FFR 385 391 IC271 010AR 393 494 IC275 013ER 454 409 513 IC280 0145R 462 354 IC285 0149R 468 374 IC300 014DR 474 380 IC301 0156R 483 389 476 IC305 0160R 490 484 IC310 0165R 498 407 IC315 0169R 504 408 478 IC316 016FR 510 500 IC320 048FR 947 954 IC325 0495R 951 948 IC326 0499R 953 950 982 IC330 0175R 517 457 IC340 0178R 519 523 526 IC350 0184R 527 521 530 IC351 01C2R 578 572 574 575 582 IC355 01FCR 637 589 591 593 644 IC356 0201R 641 642 IC360 01E1R 604 608 IC370 01E8R 612 296 506 IC375 01F4R 622 613 IC380 01F6R 626 149 204 612 IC400 0206R 648 235 248 262 505 667 IC410 0213R 657 661 IC900 0118R 414 124 IC901 011AR 416 326 332 386 IC905 0076R 230 217 220 224 227 IC910 0120R 422 239 IC911 0121R 423 355 564 566 IC912 0122R 424 288 IC913 0123R 425 316 427 IC916 0124R 426 378 IC917 0123R 427 456 IC918 0125R 428 534 539 IC919 0127R 430 604 IC920 012BR 431 114 IC921 012CR 432 361 393 483 485 IC922 012DR 433 116 189 663 IC923 012ER 434 303 340 IC924 012FR 435 315 498 511 IC925 0130R 437 323 339 454 455 474 490 552 553 951 IC926 0131R 438 341 352 364 365 372 394 IC927 0132R 439 327 406 491 952 IC928 0133R 440 155 173 586 IC929 0134R 441 325 353 373 462 468 486 488 493 947 949 IC930 0135R 442 362 477 479 IC931 0136R 443 141 517 600 619 620 650 IC932 0137R 444 148 199 IC933 0138R 445 295 618 649 IC934 0139R 446 300 301 546 IC935 013AR 447 276 290 291 IC936 013BR 448 143 269 IC937 013CR 449 162 175 IC938 013DR 450 163 IC939 01FAR 632 627 IC940 0226R 676 655 658 662 673 675 IC941 023AR 679 504 675 IC942 0245R 680 261 IC943 0250R 681 234 IC944 0254R 682 247 IC950 0260R 687 187 188 638 639 IC960 0262R 692 547 857 IC970 026ER 707 240 242 317 510 531 560 561 563 578 588 IC971 037ER 716 720 728 733 IC972 0383R 719 723 IC973 038BR 726 716 728 IC974 0390R 733 719 720 IC975 0392R 735 727 IC976 0394R 740 718 733 IC977 03A7R 759 707 718 IC978 03A8R 764 567 592 IC979 03B1R 773 764 IC980 03B2R 778 137 139 168 186 212 216 241 254 431 520 525 605 654 IC981 03BDR 785 IC982 03CDR 792 785 IC983 03DDR 799 792 IC984 03EDR 806 799 IC985 03FDR 813 806 IC990 054AR 1134 304 310 333 346 349 366 369 379 385 475 IC992 041ER 825 142 181 214 219 415 519 532 IC993 03FER 818 528 533 535 536 538 540 542 565 590 IOCCN 0532R 1104 981 985 989 1038 1048 1090 IT200 0420R 841 120 919 IT205 0422R 846 849 IT210 042CR 855 905 IT220 0440R 876 878 884 888 936 IT230 0445R 884 866 886 IT240 045AR 901 872 IT250 0461R 912 917 IT904 0483R 939 253 871 900 IT906 046ER 925 934 IT907 046FR 926 IT908 0470R 927 899 IT911 0474R 928 860 863 IT912 0476R 930 862 864 877 IT915 0478R 932 891 928 IT917 047AR 934 893 IT918 0444R 879 859 IT921 047BR 935 861 IT922 047CR 936 855 IT923 047DR 937 853 889 901 IT926 047ER 938 847 912 NTRDY 052FR 1102 1030 SAVAC 0528R 1096 1007 1020 SAVE1 04DCR 1013 1012 1063 1084 SCNTR 052DR 1100 997 1054 SEEK 0526R 1095 1004 1082 1088 SENSI 052BR 1098 972 990 1049 1075 STRAP 0028 1128 1031