1 /R1CD.PA RL02 DRIVE 1 DEV C & D NON-SYSTEM HANDLER FOR OS78 V4 2 3 /RL20: RL02 DRIVE 0 NON-SYSTEM HANDLER 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 / 12 / 13 /COPYRIGHT (C) 1977, 1981, 1984 BY DIGITAL EQUIPMENT CORPORATION 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 / 23 / 24 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE 25 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 26 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY 27 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. 28 / 29 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER 30 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED 31 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH 32 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. 33 / 34 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE 35 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY 36 /DIGITAL. 37 / 38 / 39 / 40 / 41 / 42 / 43 / 44 / 45 / 46 / 47 48 /RL02 DRIVE 0 NON-SYSTEM HANDLER 49 50 51 VERSION="B&77^100!61 //V4 OS78 IS B1 52 53 NOCHK= 0 / 0 = No ctrl c test, 1 = test 54 55 /NOTES: 56 /1. PRE-OMNIBUS COMPUTERS NOT SUPPORTED. 57 58 /EDIT HISTORY: 59 /13-OCT-77 CREATION 60 /10-MAY-79 MODIFY FOR RL02 SUPPORT 61 /DEC 80 MODIFY TO SUPPORT DRIVES 2 & 3 62 / 13-aug-84 added ctrl c conditional 63 64 /INSTRUCTIONS THAT GENERATE CONSTANTS 65 66 AC0001=CLA IAC 67 AC0002=CLA CLL CML RTL 68 AC0003=CLA CLL CML IAC RAL /* 69 AC0004=CLA CLL IAC RTL /* 70 AC0006=CLA CLL CML IAC RTL /* 71 AC0100=CLA IAC BSW /* 72 AC2000=CLA CLL CML RTR 73 AC3777=CLA CLL CMA RAR 74 AC4000=CLA CLL CML RAR 75 AC5777=CLA CLL CMA RTR 76 AC6000=CLA CLL CML IAC RTR /* 77 AC7775=CLA CLL CMA RTL 78 AC7776=CLA CLL CMA RAL 79 80 /* USE ONLY ON VT-78 AND PDP-8E,F,M,A 81 82 /ID CODE AT START OF BAD BLOCK LIST (BBL) 83 ID=123 84 85 /BAD BLOCK LIST FORMAT: 86 /WORD CONTENTS 87 /0 ID (IDENTIFICATION CODE) 88 /1 BAD BLOCKS FOR DEVICE A (ASCENDING ORDER) 89 /... ... 90 /10 0 (TERMINATOR FOR LIST A) 91 /11 BAD BLOCKS FOR DEVICE B (ASCENDING ORDER) 92 /... ... 93 /20 0 (TERMINATOR FOR LIST B) 94 /21 BAD BLOCKS FOR DEVICE C (ASCENDING ORDER) 95 /... ... 96 /30 0 (TERMINATOR FOR LIST C) 97 /31 BAD BLOCKS FOR DEVICE D (ASCENDING ORDER) 98 /... ... 99 /40 0 (TERMINATOR FOR LIST D) 100 101 / DEFINITIONS 102 103 RLIOT=6600 104 RLDC=RLIOT 0 /CLEAR DEVICE 105 RLSD=RLIOT 1 /SKIP IF DONE 106 RLMA=RLIOT 2 /LOAD MEM ADDR 107 RLCA=RLIOT 3 /LOAD REGISTER "A" 108 RLCB=RLIOT 4 /LOAD REG "B" AND EXECUTE 109 RLSA=RLIOT 5 /LOAD SECTOR ADDR 110 /RLIOT 6 UNUSED 111 RLWC=RLIOT 7 /LOAD WORD COUNT 112 RRER=RLIOT 10 /READ ERROR REG 113 RRWC=RLIOT 11 /READ WORD COUNT 114 RRCA=RLIOT 12 /READ REG "A" 115 RRCB=RLIOT 13 /READ REG "B" 116 RRSA=RLIOT 14 /READ SECTOR ADDR 117 RRSI=RLIOT 15 /READ SILO BYTE 118 /RLIOT 16 UNUSED 119 RLSE=RLIOT 17 /SKIP IF ERROR 120 /RLCB FUNCTION BITS: 121 RLMT=0 /MAINTENANCE MODE 122 RLRE=1 /RESET DRIVE ERRORS 123 RLST=2 /READ STATUS REGS INTO SILO 124 RLSK=3 /SEEK 125 RLRH=4 /READ HEADER 126 RLWR=5 /WRITE 127 RLRD=6 /READ 128 RLRN=7 /READ WITH NO HEADER CHECK 129 /BIT DEFINITIONS IN REGISTERS: 130 BYTE=1000 /BYTE TRANSFER MODE 131 132 /LOGICAL DEVICE (RELATIVE) ENTRY POINTS FOR RL02 HANDLERS: 133 134 /DEVICE A B C D E 135 /DRIVE 0 117 113 106 77 145 136 / 1 120 114 107 100 151 137 / 2 121 115 110 101 155 138 / 3 122 116 111 102 161 139 140 141 142 /OS78 V4 RELEASE DIVIDES THE DRIVES INTO THREE LOGICAL DRIVES OF TWO 143 /LOGICAL DEVICES EACH. ENTRY POINTS REMAIN THE SAME AS ABOVE. 144 145 / HANDLER DEVICES 146 147 / R0AB A & B DRIVE 0 148 / R0CD C & D 149 150 / R1AB A & B DRIVE 1 151 / R1CD C & D 152 153 / R01E DRIVE 0 DEV E, DRIVE 1 DEV E (THE "THIRD" DRIVE) 154 /HEADER BLOCK FOR USE BY "BUILD" 155 156 *0 157 000000 7776 -2 /- NUMBER OF LOGICAL DEVICES PER HANDLER 158 159 /FORMAT OF ENTRIES IN HEADER BLOCK: 160 /WORD DESCRIPTION 161 /0 GROUP NAME (4 CHAR) 162 /2 DEVICE NAME (4 CHAR) 163 /4 DCB WORD FOR AN RL02 (TYPE 37); IS A DIRECTORY DEVICE. 164 /5 OFFSET TO ENTRY POINT; 2-PAGE INDICATOR. 165 /6 0 (UNUSED WORD) 166 /7 0 TO REPRESENT NON-SYSTEM DEVICE 167 168 DRIVE=1 169 170 171 172 /DEVICE R1AB;DEVICE R21A;4370;RLA&177+4000;0;0 173 /DEVICE R1AB;DEVICE R21B;4370;RLB&177+4000;0;0 174 000001 2261 DEVICE R1CD;DEVICE R21C;4370;RLC&177+4000;0;0 000002 0304 000003 2262 000004 6103 000005 4370 000006 4107 000007 0000 000010 0000 175 000011 2261 DEVICE R1CD;DEVICE R21D;4370;RLD&177+4000;0;0 000012 0304 000013 2262 000014 6104 000015 4370 000016 4100 000017 0000 000020 0000 176 177 /HANDLER CODE 178 *200 /FIRST PAGE 179 180 /THIS LOC IS SET TO ADDR OF NEXT PAGE BY ONCE-ONLY CODE 181 000200 0000 GO, 0 /ADDR OF MAIN 182 183 BBL, /-----BOUNDARY OF BAD BLOCK LIST----- 184 /ONCE-ONLY CODE, REPLACED BY BAD BLOCK LIST 185 /READ IN BAD BLOCK LIST (BBL) 186 /SAVE CALLING DATA FIELD 187 188 000201 6214 RDF 189 000202 1204 TAD OOCDF 190 000203 3244 DCA BACK 191 000204 6201 OOCDF, CDF 00 /SET TO CURRENT FIELD 192 /REPLACE ONCE-ONLY JUMP INSTRUCTION 193 000205 1245 TAD JMPSET 194 000206 3333 DCA ONCE 195 000207 1221 LOOP, TAD LIST /RELOCATE CROSS-PAGE REFERENCES; 196 /SCAN "LIST" FOR RELATIVE LOCATIONS 197 /OF VALUES TO BE RELOCATED 198 000210 7450 SNA /0 ACTS AS TERMINATOR 199 000211 5242 JMP OUT 200 000212 1200 TAD GO /RELOCATE RELATIVE ADDRESS 201 000213 3377 DCA ONLY /"ONLY" IS NOW TEMP STORAGE 202 000214 2207 ISZ LOOP /NEXT VALUE 203 000215 1200 TAD GO 204 000216 1777 TAD I ONLY /RELOCATE THE CONTENTS 205 000217 3777 DCA I ONLY 206 000220 5207 JMP LOOP /CONTINUE UNTIL DONE 207 208 /LIST OF RELATIVE ADDRESSES TO MODIFY 209 210 000221 0161 LIST, BARG-MAIN 211 000222 7770 ABLOCK-MAIN 212 000223 0163 BBBL-MAIN 213 000224 7771 AMA-MAIN 214 000225 7772 ASECT-MAIN 215 000226 7773 ATRACK-MAIN 216 000227 0162 MA-MAIN 217 000230 7774 AERROR-MAIN 218 219 000231 0000 ZBLOCK 10+DRIVE /POSITION ENTRY POINTS TO BE UNIQUE FOR EACH 000232 0000 000233 0000 000234 0000 000235 0000 000236 0000 000237 0000 000240 0000 000241 0000 220 /LOGICAL DEVICE. MUST HAVE AT LEAST ONE 0 221 /HERE FOR TERMINATOR TO LIST. 222 000242 4600 OUT, JMS I GO /READ BAD BLOCK LIST 223 000243 7200 OK, CLA /COULD TAKE THESE NEXT 2 OUT SINCE BBL READ-IN 224 000244 6201 BACK, CDF /IS INITIALIZED TO THE SAME THING. (THIS IS 1 SHOT) 225 000245 5336 JMPSET, JMP SET /SETUP FOR TRANSFER 226 227 /END OF ONCE ONLY CODE. OK MUST BE HIGHER THAN 41 FOR RETURN 228 229 230 /SETUP ARGS FOR CALL TO 2ND PAGE SUBROUTINE 231 /CALCULATE TRACK AND SECTOR FROM BLOCK. 232 233 / - - - ! - - - ! - - - ! - - - 234 / 0-6 BECOME CYL ! 8-11 BECOME SECTOR, AFTER FUDGING TO SKIP FOR E DEVICE 235 / ! 236 / 7 BECOMES THE "HEAD" BIT (1=UPPER) 237 238 000246 1770 MAPPED, TAD I ABLOCK 239 000247 7012 RTR 240 000250 7012 RTR 241 000251 0365 AND A377 242 000252 1317 TAD OFFSET /DEVICE OFFSET (0 OR 400) 243 000253 3773 DCA I ATRACK 244 000254 1770 TAD I ABLOCK /CALCULATE SECTOR FROM BLOCK 245 000255 0361 AND A17 /SECTOR CODE 246 000256 7106 CLL RTL 247 000257 1366 TAD A7751 248 000260 7510 SPA 249 000261 1362 TAD A47 250 000262 7002 BSW 251 000263 3772 DCA I ASECT 252 /TRANSFER 1ST PAGE OF BLOCK 253 000264 4600 JMS I GO 254 000265 1364 TAD A200 /INCREMENT MA 255 000266 1771 TAD I AMA 256 000267 3771 DCA I AMA 257 /INCREMENT SECTOR 258 000270 1364 TAD A200 259 000271 1772 TAD I ASECT 260 000272 3772 DCA I ASECT 261 /TRANSFER 2ND PAGE OF BLOCK 262 000273 4600 JMS I GO 263 000274 1364 TAD A200 /INCREMENT MA 264 000275 1771 TAD I AMA 265 000276 3771 DCA I AMA 266 /CONTINUE WITH NEXT BLOCK 267 000277 5355 JMP NEXT 268 269 270 /ENTRY POINT FOR DEVICE D 271 272 000300 0261 RLD, VERSION 273 000301 7300 CLA CLL 274 000302 1300 TAD RLD 275 000303 3314 DCA RLB 276 000304 7307 AC0004 /TRACK OFFSET WILL BE 1400 277 000305 1360 CENT, TAD A10 278 000306 5324 JMP START /SKIP AROUND RLA ENTRY POINT 279 280 /ENTRY POINT FOR DEVICE C 281 282 000307 0261 RLC, VERSION 283 000310 7300 CLA CLL 284 000311 1307 TAD RLC 285 000312 3314 DCA RLB 286 000313 5305 JMP CENT /TRACK OFFSET WILL BE 1000 287 288 /ENTRY POINT FOR DEVICE B 289 290 000314 0261 RLB, VERSION 291 000315 7307 AC0004 /TRACK OFFSET WILL BE 400 292 000316 5324 JMP START /SKIP AROUND RLA ENTRY POINT 293 000317 0000 OFFSET, 0 /TRACK OFFSET FOR DEVICE (0 OR 400) 294 295 /ENTRY POINT FOR DEVICE A 296 297 000320 0261 RLA, VERSION 298 000321 7600 A7600, 7600 /=CLA 299 000322 1320 TAD RLA /TRANSFER CALLING ADDR 300 000323 3314 DCA RLB 301 000324 7002 START, BSW /SET OFFSET TO 0 IF DEV A, 400 IF DEV B 302 000325 3317 DCA OFFSET 303 000326 1321 TAD A7600 /RETURN TO KEYBOARD MONITOR 304 IFNZRO NOCHK < KRS > /IF CTRL,C TYPED 305 000327 7000 IFZERO NOCHK < NOP > 306 000330 1363 TAD A175 /-CTRL,C 307 000331 7650 SNA CLA 308 000332 6031 KSF 309 000333 5377 ONCE, JMP ONLY /THIS INSTRUCTION IS DONE ONCE ONLY. IT IS 310 /THEN CHANGED TO "JMP SET" AFTER HANDLER RELOCATION 311 /IS DONE AND THE BAD BLOCK LIST IS READ IN. 312 000334 6203 ACDIF, CIF CDF 00 313 000335 5721 JMP I A7600 /CALL KB MONITOR 314 315 /SET UP ARGUMENTS BY CALLING 2ND PAGE SUBROUTINE 316 000336 1317 SET, TAD OFFSET /INITIALIZE MAPPING (BELOW) 317 000337 7002 BSW 318 000340 7104 CLL RAL /0=DEV A, 10=B, 20=C, 30=D 319 000341 1367 TAD BASE 320 000342 3345 DCA MAP 321 000343 1314 TAD RLB /ADDR OF ARGS 322 000344 4600 JMS I GO /SETUP (AC NON-ZERO) 323 /MAP NEXT BLOCK AROUND ANY BAD BLOCKS BELOW IT 324 000345 1000 MAP, TAD /INITIALIZED ABOVE 325 000346 7450 SNA /0 TERMINATES LIST 326 000347 5246 JMP MAPPED 327 000350 7161 STL CIA /13-BIT NEGATE 328 000351 1770 TAD I ABLOCK /COMPARE WITH BLOCK 329 000352 7630 SZL CLA 330 000353 5246 JMP MAPPED /BAD BLOCK IS ABOVE CURRENT BLOCK 331 000354 2345 ISZ MAP /TRY NEXT BAD BLOCK ALSO 332 000355 2770 NEXT, ISZ I ABLOCK /INCREMENT CURRENT BLOCK NUMBER, 333 /EITHER DURING 334 /BAD BLOCK MAPPING OR AFTER SUCCESSFUL TRANSFER 335 /OF TWO SECTORS (PAGES) WITH MORE TO GO 336 000356 5345 JMP MAP /CONTINUE MAPPING 337 000357 5774 JMP I AERROR /ERROR ON BLOCK OVERFLOW 338 339 340 /DATA 341 342 000360 0010 A10, 10 343 000361 0017 A17, 17 344 000362 0047 A47, 47 345 000363 0175 A175, 175 346 000364 0200 A200, 200 347 000365 0377 A377, 377 348 000366 7751 A7751, 7751 349 000367 1202 BASE, TAD BBL+1 350 000370 0147 ABLOCK, BLOCK-MAIN 351 000371 0162 AMA, MA-MAIN /RELATIVE ADDR OF MA 352 000372 0152 ASECT, SECTOR-MAIN 353 000373 0150 ATRACK, TRACK-MAIN 354 000374 0141 AERROR, ERROR-MAIN 355 356 357 000375 0000 ZBLOCK 377-. 000376 0000 358 359 /ONCE-ONLY CODE AT END OF PAGE 360 000377 4200 ONLY, JMS GO /SET UP CROSS-PAGE LINK USED ON INITIALIZATION. 361 /2ND PAGE IN LOC "GO" 362 *400 363 /2ND PAGE OF HANDLER 364 365 /SUBROUTINE TO SETUP AND TRANSFER 366 /AC=0 FOR TRANSFER ELSE SETUP 367 000400 0000 MAIN, 0 368 000401 7450 SNA 369 000402 5242 JMP TRANS 370 /GET HANDLER ARGUMENTS 371 000403 3361 SETUP, DCA BARG /ADDR OF HANDLER ARGS 372 000404 7330 AC4000 /SET "OLDTRK" TO INVALID TRACK 373 000405 3356 DCA OLDTRK /TO FORCE READING NEXT HEADER. 374 000406 1366 TAD B7600 /SET FOR FULL PAGE TRANSFERS 375 000407 3351 DCA WC /(WAS SMALLER FOR BBL READ) 376 000410 1761 TAD I BARG /NOW GET HANDLER ARGUMENTS 377 /FUNCTION WORD 378 /NOTE: THE FOLLOWING INSTRUCTION IS USED AS A CONSTANT 379 000411 0377 B377, AND B4070 /CONVERT TO RLCB FORMAT 380 000412 7510 SPA 381 000413 1365 TAD B3777 382 000414 1367 TAD BRLRD 383 000415 3360 DCA FNC 384 000416 1761 TAD I BARG /FUNCTION WORD 385 000417 7004 RAL /CONVERT TO PAGE COUNT IN BITS [7600] 386 000420 0366 AND B7600 387 000421 3357 DCA PAGES 388 000422 2361 ISZ BARG 389 000423 1761 TAD I BARG /MA 390 000424 3362 DCA MA 391 000425 2361 ISZ BARG 392 000426 1761 TAD I BARG /BLOCK 393 000427 3347 DCA BLOCK 394 000430 2361 ISZ BARG 395 /SAVE CALLING FIELD FOR RETURN 396 000431 6214 RDF 397 000432 1234 TAD BCDIF 398 000433 3344 DCA BRTN 399 /RESET DATA FIELD AND RETURN FROM SETUP WITH AC=BLOCK 400 000434 6203 BCDIF, CIF CDF 00 401 /GET DEVICE OFFSET FROM 1ST PAGE 402 000435 1763 TAD I BBBL /CHECK FOR BBL VALIDITY - 403 000436 1372 TAD CHECK /1ST LOC OF BBL CONTAINS AN 404 000437 7640 SZA CLA /IDENTIFICATION CODE ("ID") 405 000440 5341 JMP ERROR /TAKE ERROR RETURN FROM HANDLER 406 /IF BBL IS INVALID. 407 000441 5600 JMP I MAIN 408 /TRANSFER ONE OR MORE PAGES TO/FROM DISK 409 /GET INTERPAGE ARGUMENTS 410 /RESET RETRY COUNT FOR 2 RETRIES ON I/O ERRORS 411 000442 7346 TRANS, AC7775 /AC=-3 412 000443 3355 DCA ERRCNT 413 /CALCULATE CYLINDER AND SURFACE FROM TRACK 414 000444 1350 TAD TRACK 415 000445 7110 CLL RAR 416 000446 3353 DCA CYL 417 000447 7012 RTR 418 000450 3354 DCA SURF 419 /COMPARE WITH OLD (PREVIOUS) TRACK; IF SAME, DO TRANSFER 420 000451 4300 JMS TRKCMP 421 /IF REQUESTED TRACK IS DIFFERENT, SEEK TO TRACK 422 /RESET DRIVE (FUNCTION=1) 423 000452 6600 RETRY, RLDC /CLEAR CONTROLLER, AC 424 /SEEK (FUNCTION=3) WHEN CALLED FROM BELOW 425 000453 7001 SEEK, IAC /AC=(1 OR 3) 426 000454 4330 JMS IO /RESET DRIVE OR SEEK 427 /READ NEXT HEADER TO FIND OUT ACTUAL CURRENT TRACK 428 000455 1370 TAD HEADER 429 000456 4330 JMS IO /READ NEXT HEADER 430 000457 6615 RRSI /GET HEADER BYTE #1 431 000460 7002 BSW 432 000461 0364 AND B3 433 000462 3356 DCA OLDTRK /SAVE 2 LSB 434 000463 6615 RRSI /GET HEADER BYTE #2 435 000464 0211 AND B377 436 000465 7106 CLL RTL 437 000466 1356 TAD OLDTRK /ADD IN MSB 438 000467 3356 DCA OLDTRK 439 /COMPARE WITH OLD (PREVIOUS) TRACK; IF SAME, DO TRANSFER 440 000470 4300 JMS TRKCMP 441 /IF REQUESTED TRACK IS DIFFERENT, SEEK TO TRACK 442 /CALCULATE DIFFERENCE WORD FOR SEEK FROM TRACK DIFFERENCE 443 000471 7510 SPA /IF POSITIVE, LINK WILL BE SET 444 000472 7141 CLL CIA /IF NEGATIVE, CLEAR LINK 445 000473 7010 RAR /DELETE SURFACE, INCLUDE DIRECTION 446 000474 1354 TAD SURF /ADD SURFACE 447 000475 6603 RLCA /LOAD DIFFERENCE WORD 448 000476 7326 AC0002 /PREPARE FOR SEEK 449 /LOOP BACK AND PERFORM SEEK; THIS ENSURES THAT THE TRACK 450 /REACHED IS THE CORRECT ONE IN SPITE OF POSSIBLE RL 451 /SEEK UNRELIABILITY 452 000477 5253 JMP SEEK 453 /SUBROUTINE TO COMPARE REQUESTED TRACK WITH OLD (REMEMBERED) 454 /TRACK; IF SAME, DO TRANSFER. IF DIFFERENT, RETURN WITH AC= 455 /REQUESTED-OLD, AND LINK=1 456 000500 0000 TRKCMP, 0 457 000501 1356 TAD OLDTRK /CALCULATE DIFFERENCE 458 000502 7041 CIA 459 000503 1350 TAD TRACK 460 000504 7120 STL /LINK MUST BE SET WHEN 461 /DIFFERENCE IS POSITIVE. 462 000505 7440 SZA 463 000506 5700 JMP I TRKCMP /DIFFERENT; RETURN 464 /ON TRACK: DO TRANSFER 465 /LOAD ALL REGISTERS 466 000507 1352 TAD SECTOR 467 000510 6605 RLSA 468 000511 1351 TAD WC 469 000512 6607 RLWC 470 000513 1354 TAD SURF 471 000514 1353 TAD CYL 472 000515 6603 RLCA 473 000516 1362 TAD MA 474 000517 6602 RLMA 475 /DO THE READ OR WRITE 476 000520 1360 TAD FNC 477 000521 4330 JMS IO 478 /COUNT REQUESTED NUMBER OF PAGES 479 000522 1366 TAD B7600 480 000523 1357 TAD PAGES 481 000524 7450 SNA 482 000525 5343 JMP DONE 483 000526 3357 DCA PAGES 484 000527 5600 JMP I MAIN /RETURN FOR MORE 485 /SUBROUTINE TO DO THE ACTUAL I/O 486 000530 0000 IO, 0 /AC=MODE,FIELD,FUNCTION 487 000531 1371 TAD BDRIVE 488 000532 6604 RLCB /DO THE OPERATION 489 000533 6601 RLSD /WAIT UNTIL DONE 490 000534 5333 JMP .-1 491 000535 6617 RLSE /TEST FOR I/O ERROR(S) 492 000536 5730 JMP I IO /NONE; RETURN 493 494 /IF ERROR, RETRY TWICE 495 000537 2355 ISZ ERRCNT /MORE RETRIES LEFT? 496 000540 5252 JMP RETRY /YES 497 /AFTER THREE TRIES, TAKE HANDLER ERROR RETURN 498 /WITH AC=4000 499 000541 7330 ERROR, AC4000 500 000542 7410 SKP 501 /NORMAL RETURN FROM HANDLER 502 000543 2361 DONE, ISZ BARG /SKIP ERROR RETURN 503 000544 6203 BRTN, CIF CDF 00 /RETURN TO CALLING FIELD 504 /BBL READ: NOP (FIELD 0) 505 000545 5761 JMP I BARG /RETURN TO CALLING PROGRAM 506 000546 0000 DLAY, 0 /*** 507 /DATA 508 000547 0000 BLOCK, 0 509 000550 0000 TRACK, 0 /BBL READ: TRACK 0 510 000551 7737 WC, -41 /BBL READ: -BBL LENGTH 511 000552 1400 SECTOR, 1400 /BBL READ: SECTOR 14 512 000553 0000 CYL, 0 513 000554 0000 SURF, 0 514 000555 0000 ERRCNT, 0 /COUNT OF RETRIES 515 000556 2000 OLDTRK, 2000 /FORCE INITIAL SEEK 516 000557 0200 PAGES, 200 /BBL READ: ONE PAGE 517 000560 0006 FNC, RLRD /BBL READ: READ FUNCTION 518 519 /RELOCATED RELATIVE ADDRESSES 520 000561 7643 BARG, OK-MAIN /BBL READ: RETURN FROM READ 521 /ADDRESS OF HANDLER ARGUMENTS 522 000562 7601 MA, BBL-MAIN /BBL READ: ADDR OF BBL 523 000563 7601 BBBL, BBL-MAIN 524 525 000564 0003 B3, 3 526 000565 3777 B3777, 3777 527 000566 7600 B7600, 7600 528 000567 0006 BRLRD, RLRD 529 000570 1004 HEADER, BYTE RLRH 530 000571 0100 BDRIVE, DRIVE^100 /DRIVE BITS FOR RLCB 531 000572 7655 CHECK, -ID 532 533 /THIS CONSTANT MUST BE AT END OF PAGE 534 000573 0000 ZBLOCK 577-. 000574 0000 000575 0000 000576 0000 535 000577 4070 B4070, 4070 536 $ A10 0360 A17 0361 A175 0363 A200 0364 A377 0365 A47 0362 A7600 0321 A7751 0366 ABLOCK 0370 AC0001 7201 unreferenced AC0002 7326 AC0003 7325 unreferenced AC0004 7307 AC0006 7327 unreferenced AC0100 7203 unreferenced AC2000 7332 unreferenced AC3777 7350 unreferenced AC4000 7330 AC5777 7352 unreferenced AC6000 7333 unreferenced AC7775 7346 AC7776 7344 unreferenced ACDIF 0334 unreferenced AERROR 0374 AMA 0371 ASECT 0372 ATRACK 0373 B3 0564 B377 0411 B3777 0565 B4070 0577 B7600 0566 BACK 0244 BARG 0561 BASE 0367 BBBL 0563 BBL 0201 BCDIF 0434 BDRIVE 0571 BLOCK 0547 BRLRD 0567 BRTN 0544 BYTE 1000 CENT 0305 CHECK 0572 CYL 0553 DLAY 0546 unreferenced DONE 0543 DRIVE 0001 ERRCNT 0555 ERROR 0541 FNC 0560 GO 0200 HEADER 0570 ID 0123 IO 0530 JMPSET 0245 LIST 0221 LOOP 0207 MA 0562 MAIN 0400 MAP 0345 MAPPED 0246 NEXT 0355 NOCHK 0000 OFFSET 0317 OK 0243 OLDTRK 0556 ONCE 0333 ONLY 0377 OOCDF 0204 OUT 0242 PAGES 0557 RETRY 0452 RLA 0320 RLB 0314 RLC 0307 RLCA 6603 RLCB 6604 RLD 0300 RLDC 6600 RLIOT 6600 RLMA 6602 RLMT 0000 unreferenced RLRD 0006 RLRE 0001 unreferenced RLRH 0004 RLRN 0007 unreferenced RLSA 6605 RLSD 6601 RLSE 6617 RLSK 0003 unreferenced RLST 0002 unreferenced RLWC 6607 RLWR 0005 unreferenced RRCA 6612 unreferenced RRCB 6613 unreferenced RRER 6610 unreferenced RRSA 6614 unreferenced RRSI 6615 RRWC 6611 unreferenced SECTOR 0552 SEEK 0453 SET 0336 SETUP 0403 unreferenced START 0324 SURF 0554 TRACK 0550 TRANS 0442 TRKCMP 0500 VERSIO 0261 WC 0551