1 /2 OS/8 TERTIARY CASSETTE BOOTSTRAP V5 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 /COPYRIGHT (C) 1973,1974 BY DIGITAL EQUIPMENT CORPORATION 12 / 13 / 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE 23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY 25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. 26 / 27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER 28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED 29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH 30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. 31 / 32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE 33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY 34 /DIGITAL. 35 / 36 / 37 / 38 / 39 / 40 / 41 / 42 / 43 / 44 / 45 VERSON= 5 46 SUBVER= 01 /SUBVERSION A = 01, ETC 47 48 BINARY=6200 49 50 FIELD 1 51 52 *5200 53 54 015200 6203 CIF CDF 0 /THE SECONDARY BOOTSTRAP BRANCHES HERE OF ALL PLACES 55 015201 5602 JMP I .+1 56 015202 5400 C3STRT /WE WANT TO BE HERE 57 58 59 60 /EXPLANATION: 61 62 /THE PRIMARY (KEY-IN) BOOTSTRAP CONSISTS OF 32 WORDS 63 /AND IS AWFUL PRIMITIVE. IT BARELY MANAGES TO READ IN THE 64 /SECONDARY BOOTSTRAP. 65 /THE SECONDARY BOOTSTRAP CONTAINS A FULL-FLEDGED BINARY LOADER 66 /AND IS USED TO READ IN THE NEXT FILE INTO CORE 67 /(BUT NOT OVER ITSELF (LOCS 3600-4040)) AND DOES LITTLE IF ANY 68 /I/O ERROR CHECKING. THIS NEXT FILE IS IN FACT THE TERTIARY BOOTSTRAP. 69 /THE SECONDARY BOOTSTRAP STARTS UP THE TERTIARY BOOTSTRAP AT 70 /LOCATION 15200 WHICH THEN CONTAINS ANOTHER FULL-FLEDGED BINARY LOADER 71 /AND IN ADDITION A COMPLETE TWO-PAGE CASSETTE HANDLER. 72 /THIS TERTIARY BOOTSTRAP RESIDES IN BUFFER SPACE OF BUILD AND 73 /READS IN BUILD WITH FULL I/O ERROR CHECKING. 74 /WHEN IT IS THROUGH, IT BRANCHES TO BUILD AT LOCATION 02000. 75 76 /RECORD SIZES: 77 78 /C2BOOT MUST BE 200 BYTES/RECORD 79 /C3BOOT MUST BE 200 BYTES/RECORD 80 /BUILD MUST BE 300 BYTES/RECORD 81 /OS8 MUST BE 300 BYTES/RECORD 82 /CD MUST BE 300 BYTES/RECORD 83 /MCPIP MUST BE 300 BYTES/RECORD 84 /OTHER CUSPS CAN BE ANY RECORD SIZE. 85 86 /C2BOOT AND C3BOOT MUST BE 200 BYTES/RECORD BECAUSE THAT'S WHAT THE PRIMARY BOOT READS. 87 /THE ONES WHICH MUST BE 300 BYTES/RECORD ARE SUCH BECAUSE 88 /THEY ARE USING THE OS/8 CASSETTE HANDLER TO READ IN. 89 /OTHERS ARE READ IN BY MCPIP AND CAN BE ANY RECORD SIZE. 90 FIELD 0 91 92 *5400 93 94 005400 7200 C3STRT, CLA 95 005401 4777 JMS I (CSA0 96 005402 0003 3 /SKIP FILE 97 005403 7400 L7400, 7400 98 005404 0200 L200, 200 99 005405 7600 M200, -200 100 005406 4777 JMS I (CSA0 101 005407 0100 100 /SKIP HEADER BY READING PAST IT 102 103 005410 6200 BINARY 104 005411 7477 M301, -301 105 005412 7610 SKP CLA /ERROR IS OK 106 005413 7402 HLT /GOOD READ IS BAD 107 005414 3312 LDABS2, DCA CKSUM 108 005415 4315 JMS GCHAR 109 005416 7450 SNA 110 005417 5215 JMP .-2 /IGNORE BLANKS 111 005420 1205 TAD M200 112 005421 7640 SZA CLA /IS IT LEADER? 113 005422 7402 HLT /NOT BINARY 114 005423 4315 LEADER, JMS GCHAR 115 005424 1205 TAD M200 /STILL LEADER? 116 005425 7450 SNA 117 005426 5223 JMP LEADER /YES 118 005427 7500 NEWWD, SMA /IS IT LESS THAN 200? 119 005430 5262 JMP FIELDW /NO, IT'S A FIELD SETTING 120 005431 1204 TAD L200 /RESTORE CHAR 121 005432 3307 DCA WD1 122 005433 4315 JMS GCHAR 123 005434 3310 DCA WD2 124 005435 4315 JMS GCHAR 125 005436 1205 TAD M200 126 005437 7450 SNA 127 005440 5271 JMP OVER /200 FINISHES US UP 128 005441 3311 DCA WD /SAVE NEXT WORD FOR LATER 129 005442 4277 JMS ASSEMB /ASSEMBLE PREVIOUS WORD 130 005443 7430 SZL /IS IT AN ORIGIN? 131 005444 5252 JMP ORG /YES 132 005445 6201 XFIELD, CDF 0 /ASSUMES BUILD STARTS IN FIELD 0 133 005446 3706 DCA I ORIGIN 134 005447 6201 CDF0, CDF 0 135 005450 1306 TAD ORIGIN 136 005451 7001 IAC 137 005452 3306 ORG, DCA ORIGIN 138 005453 1307 NEXT, TAD WD1 139 005454 1310 TAD WD2 /MAKE UP CHECKSUM 140 005455 1312 TAD CKSUM 141 005456 3312 DCA CKSUM 142 005457 1311 TAD WD 143 005460 5227 JMP NEWWD 144 005461 0070 L70, 70 145 005462 0261 FIELDW, AND L70 /EXTRACT FIELD SETTING 146 005463 1247 TAD CDF0 147 005464 3245 DCA XFIELD 148 005465 4315 JMS GCHAR 149 005466 1205 TAD M200 150 005467 7440 SZA 151 005470 5227 JMP NEWWD 152 005471 4277 OVER, JMS ASSEMB 153 005472 7041 CIA 154 005473 1312 TAD CKSUM 155 005474 7640 SZA CLA 156 005475 7402 HLT /BAD CHECKSUM 157 005476 5604 JMP I L200 /START BUILD 158 159 005477 0000 ASSEMB, 0 160 005500 1307 TAD WD1 161 005501 7106 CLL RTL 162 005502 7006 RTL 163 005503 7006 RTL 164 005504 1310 TAD WD2 165 005505 5677 JMP I ASSEMB 166 167 005506 0000 ORIGIN, 0 168 005507 0000 WD1, 0 169 005510 0000 WD2, 0 170 005511 0000 WD, 0 171 005512 0000 CKSUM, 0 172 005513 7777 CHCNT, -1 173 005514 5523 CHPTR, BINBUF 174 175 005515 0000 GCHAR, 0 176 005516 2335 ISZ JMPGET /POINT TO CORRECT ROUTINE 177 005517 2313 ISZ CHCNT /NEED WE READ? 178 005520 5335 JMPX, JMP JMPGET /NOT YET 179 005521 4777 JMS I (CSA0 /CALL HANDLER 180 005522 0100 100 /READ ONE PAGE 181 005523 6200 BINBUF, BINARY 182 005524 0377 L377, 377 /DUMMY BLOCK NO. 183 005525 7402 HLT /I/O ERROR 184 005526 1211 TAD M301 185 005527 3313 DCA CHCNT /NEW CHAR COUNT 186 005530 1323 TAD BINBUF 187 005531 3314 DCA CHPTR 188 005532 1320 TAD JMPX 189 005533 3335 DCA JMPGET 190 005534 5316 JMP GCHAR+1 191 005535 5335 JMPGET, JMP . 192 005536 5360 JMP CHAR1 193 005537 5354 JMP CHAR2 194 005540 1320 TAD JMPX 195 005541 3335 DCA JMPGET 196 005542 1714 TAD I CHPTR 197 005543 0203 AND L7400 198 005544 7112 CLL RTR 199 005545 7012 RTR 200 005546 1353 TAD CHTMP 201 005547 7012 RTR 202 005550 7012 RTR 203 005551 2314 ISZ CHPTR 204 005552 5361 JMP GCHCOM 205 206 005553 0000 CHTMP, 0 207 208 005554 1714 CHAR2, TAD I CHPTR 209 005555 0203 AND L7400 210 005556 3353 DCA CHTMP 211 005557 2314 ISZ CHPTR 212 005560 1714 CHAR1, TAD I CHPTR 213 005561 0324 GCHCOM, AND L377 214 005562 5715 JMP I GCHAR 215 005577 5607 PAGE 216 CODE=0 217 218 KCLR=CODE^10+6700 /CLEAR ALL 219 KSDR=CODE^10+6701 /SKIP ON DATA FLAG 220 KSEN=CODE^10+6702 /SKIP ON ERROR 221 KSBF=CODE^10+6703 /SKIP ON READY FLAG 222 KLSA=CODE^10+6704 /LOAD STATUS A 223 KSAF=CODE^10+6705 /SKIP ON ANY FLAG OR ERROR 224 KGOA=CODE^10+6706 /ASSERT CONTENTS OF STATUS A AND XFER 225 KRSB=CODE^10+6707 /READ STATUS B 226 227 BSW=7002 /BYTE SWAP [8/E,F ONLY] 228 229 /REWIND=10 230 /BACKFIL=30 231 /WRGAP=40 232 /BACKBLOCK=50 233 /SKPFIL=70 234 235 /SPECIAL CODES 236 237 / 0 WRITE EOF 238 / 1 REWIND 239 / 3 SKIPFILE/BACKFILE 240 / 2 BACKBLOCK 241 242 / 4-7 UNUSED (TAKES LOW ORDER 2 BITS ONLY CURRENTLY) 243 244 VERSION="B&77 /MODIFIED 245 005600 3700 K3700, 3700 /MUST BE FIRST LOCATION ON PAGE 246 UNIT, 247 005601 0002 CSA1, VERSION /ENTRY POINT FOR CSA1 248 005602 7200 CLA /PROTECT CODE AGAINST IGNORANT USERS 249 005603 1201 TAD CSA1 /PICK UP ARGUMENTS 250 005604 3207 DCA CSA0 /VIA CSA0 251 005605 7125 STL IAC RAL /TAD (3 [8/I,L,E,F] 252 005606 5211 JMP .+3 /JOIN PROCESSING WITH UNIT 1 253 005607 0002 CSA0, VERSION /ENTRY POINT FOR CSA0 254 005610 7326 STL CLA RTL /TAD (2 255 005611 7002 BSW / [8/E,F] 256 005612 3201 DCA UNIT /SAVE UNIT (0 IS 200, 1 IS 300) 257 005613 4352 CS, JMS T /INITIALIZATION; REPLACED BY RDF 258 005614 1232 TAD KCIF /FORM RETURN FIELD INSTRUCTION 259 005615 3350 DCA RETCIF /STORE IN RETURN CODE 260 005616 1607 TAD I CSA0 /GET FUNCTION CONTROL WORD 261 005617 3354 DCA FUN /SAVE IT 262 005620 1354 TAD FUN /GET IT BACK AGAIN 263 005621 0374 AND K70 /ISOLATE FIELD OF BUFFER 264 005622 1375 TAD KCDF /FORM CDF TO FIELD OF BUFFER 265 005623 3262 DCA BUFCDF /STORE IN APPROPRIATE SPOT 266 005624 2207 ISZ CSA0 /POINT TO ARGUMENT 2 267 005625 1607 TAD I CSA0 /GET BUFFER ADDRESS 268 005626 3355 DCA BUFFER /SAVE IT 269 005627 2207 ISZ CSA0 /POINT TO ARGUMENT 3 270 005630 1607 TAD I CSA0 /GET BLOCK NUMBER 271 005631 2207 ISZ CSA0 /POINT TO ERROR RETURN 272 005632 6203 KCIF, CIF CDF 0 /SEEK TEMPORARY SAFETY IN CURRENT DATA FIELD 273 005633 7640 SZA CLA 274 005634 5242 JMP NOT1ST /NOT BLOCK 0 275 005635 7330 STL CLA RAR /TAD (4000 276 005636 0354 AND FUN /ISOLATE READ/WRITE BIT 277 005637 1201 TAD UNIT /INSERT UNIT 278 005640 4762 JMS I QCAS /CALL CASSETTE ROUTINE 279 005641 0212 REWIND-. /TO PERFORM A REWIND/INITIALIZATION 280 005642 1354 NOT1ST, TAD FUN 281 005643 0200 K200, AND K3700 /ISOLATE NUMBER OF BLOCKS TO XFER 282 005644 7450 SNA 283 005645 5366 JMP SPCASE /0 BLOCKS MEANS SPECIAL THING (EOF) 284 005646 3360 RECLP, DCA BLKNT /SET COUNT OF NUMBER OF BLOCKS 285 005647 7330 STL CLA RAR /TAD (4000 286 005650 0354 AND FUN /ISOLATE READ/WRITE BIT 287 005651 1201 TAD UNIT /INSERT UNIT 288 005652 4762 JMS I QCAS /CALL CASSETTE ROUTINE 289 005653 0137 RW-. /TO INITIATE READ OR WRITE 290 005654 7440 RETRY, SZA /NON-ZERO AC MEANS ERROR 291 005655 5350 JMP RETCIF /TOUGH LUCK BOOBIE - ERROR 292 005656 1264 TAD K7700 /GET READY TO XFER 100 DOUBLE WORDS 293 005657 3356 DCA DBWDCT /SET DOUBLE WORD COUNTER 294 005660 1355 TAD BUFFER /GET START OF BUFFER SEGMENT 295 005661 3363 DCA BPTR /SET 'BPTR' 296 005662 7402 BUFCDF, HLT /CHANGE TO DATA FIELD OF USER'S BUFFER 297 005663 1354 TAD FUN 298 005664 7700 K7700, SMA CLA /WHICH DIRECTION IS TRANSFER? 299 005665 5307 JMP READ /WANT TO READ 300 005666 1763 WRITE, TAD I BPTR /WANT TO WRITE, SO GET WORD FROM BUFFER 301 005667 4757 JMS I QGPCH /WRITE 302 005670 1763 TAD I BPTR /GET FIRST WORD AGAIN 303 005671 0333 AND P7400 /ISOLATE FIRST HALF OF BYTE 3 304 005672 3352 DCA T /SAVE FOR FUTURE REFERENCE 305 005673 2363 ISZ BPTR /POINT TO NEXT LOCATION IN BUFFER 306 005674 1763 TAD I BPTR /GET SECOND WORD OF BUFFER PAIR 307 005675 4757 JMS I QGPCH /WRITE BYTE #2 308 005676 1763 TAD I BPTR /RETRIEVE WORD 2 309 005677 0333 AND P7400 /ISOLATE 2ND HALF OF BYTE #3 310 005700 7112 CLL RTR /CREATE MYSTIC HIDDEN BYTE 3 311 005701 7012 RTR 312 005702 1352 TAD T /GOOD THING I STILL HAVE THIS 313 005703 7112 CLL RTR 314 005704 7012 RTR 315 005705 4757 JMS I QGPCH /WRITE BYTE #3 316 005706 5332 JMP COM 317 005707 4757 READ, JMS I QGPCH /READ BYTE #1 OF TRIPLE 318 005710 3763 DCA I BPTR /STORE IN WORD 1 OF BUFFER PAIR 319 005711 4757 JMS I QGPCH /READ BYTE #2 OF TRIPLE 320 005712 3352 DCA T /SAVE IT FOR POSTERITY 321 005713 4757 JMS I QGPCH /READ BYTE #3 OF TRIPLE 322 005714 7006 RTL 323 005715 7006 RTL /MYSTIC ROTATES 324 005716 3353 DCA T2 325 005717 1353 TAD T2 326 005720 0333 AND P7400 /AND MYSTIC CONSTANTS 327 005721 1763 TAD I BPTR /FIX UP BUFFER WORD 1 OF PAIR 328 005722 3763 DCA I BPTR 329 005723 1353 TAD T2 330 005724 7006 RTL 331 005725 7006 RTL /MORE ROTATION 332 005726 0333 AND P7400 /AND MORE 333 005727 1352 TAD T 334 005730 2363 ISZ BPTR /POINT TO SECOND WORD OF BUFFER PAIR 335 005731 3763 DCA I BPTR /STORE SECOND WORD 336 005732 2363 COM, ISZ BPTR /POINT TO BEGIN OF NEXT BUFFER PAIR 337 005733 7400 P7400, 7400 /PROTECTION AGAINST CORE WRAP AROUND 338 005734 2356 ISZ DBWDCT /BUMP DOUBLE WORD COUNT 339 005735 5262 JMP BUFCDF /REITERATE 340 005736 4762 JMS I QCAS /CALL CASSETTE ROUTINE 341 005737 0103 CRC-. /TO CHECK CRC 342 005740 1355 TAD BUFFER /GET BUFFER SEGMENT ADDRESS 343 005741 1243 TAD K200 /ADD 200 TO GET TO NEXT SEGMENT 344 005742 3355 DCA BUFFER /REPLACE 345 005743 1360 TAD BLKNT /GET BLOCK COUNT 346 005744 1264 TAD K7700 /SUBTRAT 100 347 005745 7440 SZA /ARE WE DONE? 348 005746 5246 JMP RECLP /NO, REITERATE 349 005747 2207 ISZ CSA0 /POINT TO NORMAL GOOD RETURN 350 005750 7402 RETCIF, HLT /RETURN TO USER'S DATA AND INSTRUCTION FIELDS 351 005751 5607 JMP I CSA0 /RETURN 352 / INTIALIZATION ROUTINE - ONCE ONLY CODE 353 / OVERLAID BY TEMPORARIES 354 355 005752 0000 T, 0 /ENTRY POINT TO INITIALIZATION 356 005753 1364 T2, TAD KRDF /REPLACE CALL BY RDF 357 005754 3213 FUN, DCA CS /SO THAT WE'LL NEVER SEE YOU HERE AGAIN 358 005755 1352 BUFFER, TAD T /CORRECT ADDRESS OF GPCH 359 005756 1365 DBWDCT, TAD KQX1 /BY ADDING IN CS+1 360 005757 3357 QGPCH, DCA . /STORE IT HERE 361 005760 7326 BLKNT, STL CLA RTL /CORRECT ADDRESS OF CAS IS 2 MORE 362 005761 1357 TAD QGPCH 363 005762 3362 QCAS, DCA . /THAN GPCH. STORE IT HERE. 364 005763 5213 BPTR, JMP CS /RETURN TO MAIN PROGRAM 365 005764 6214 KRDF, RDF 366 005765 0164 KQX1, GPCH-CS-1 367 368 005766 1354 SPCASE, TAD FUN 369 005767 0376 AND L4003 /ISOLATE R/W BIT + SPECIAL CODE 370 005770 1201 TAD UNIT 371 005771 4762 JMS I QCAS 372 005772 0114 SPCODE-. 373 005773 5347 JMP RETCIF-1 /LEAVE GRACEFULLY 374 005774 0070 K70, 70 375 005775 6201 KCDF, CDF 0 376 005776 4003 L4003, 4003 377 PAGE 378 006000 0000 GPCH, 0 /READ OR WRITE A BYTE 379 006001 5230 JMP AROUND /GO TO REAL LOCATION OF THIS SUBROUTINE 380 006002 0000 CAS, 0 /MUST BE AT GPCH+2; DO CASSETTE STUFF 381 006003 3302 DCA TEMP /SAVE ARGUMENT IN AC 382 006004 6201 CDF 0 383 006005 1602 TAD I CAS /GET UNRELOCATED RELATIVE LOCAL ENTRY POINT 384 006006 1202 TAD CAS /RELOCATE IT 385 006007 2202 ISZ CAS /POINT TO NORMAL RETURN LOCATION 386 006010 3200 DCA GPCH /SAVE ENTRY POINT IN TEMPORARY 387 006011 5600 JMP I GPCH /GO TO CORRECT ENTRY POINT 388 389 006012 1202 RW, TAD CAS 390 006013 3305 DCA RTRY /SAVE RETRY ADDRESS 391 006014 1302 TAD TEMP /GET ARGUMENT PASSED VIA AC 392 006015 3304 DCA FNUNIT /SAVE 393 006016 7346 CLL STA RTL /TAD (7775 394 006017 3303 DCA ERKNT /SET ERROR COUNT TO -3 395 006020 1304 ERETRY, TAD FNUNIT 396 006021 7510 SPA 397 006022 1377 TAD (20 /READ CODE IS 0; WRITE IS 20 398 006023 6704 KLSA /LOAD STATUS A 399 006024 1304 TAD FNUNIT /***KLSA CLEARS BIT 0 400 006025 7700 SMA CLA /READS HAVE TO BE INITIATED 401 006026 4325 JMS CWAIT /READ 402 006027 5705 JMP I RTRY /RETURN 403 404 006030 3302 AROUND, DCA TEMP 405 006031 1304 TAD FNUNIT 406 006032 7700 SMA CLA 407 006033 5237 JMP RDCHAR /READ 408 006034 1302 TAD TEMP /WRITE 409 006035 4325 JMS CWAIT 410 006036 5600 JMP I GPCH /RETURN 411 412 006037 4325 RDCHAR, JMS CWAIT 413 006040 1302 TAD TEMP /GET CHAR JUST READ 414 006041 5600 JMP I GPCH /RETURN WITH IT IN AC 415 006042 1304 CRC, TAD FNUNIT 416 006043 1376 TAD (60 417 006044 6704 KLSA /INITIATE READ/WRITE CRC 418 006045 1304 TAD FNUNIT /***KLSA CLEARS BIT 0 419 006046 7700 SMA CLA 420 006047 4325 JMS CWAIT /HAVE TO READ TWICE 421 006050 4325 JMS CWAIT /WRITE CRC WRITES BOTH 422 006051 6700 KCLR /WHY NOT? 423 006052 5602 JMP I CAS /RETURN 424 425 006053 1375 REWIND, TAD (10 426 006054 4267 JMS UTIL 427 006055 1302 TAD TEMP 428 006056 7700 SMA CLA 429 006057 5602 JMP I CAS /MERELY REWIND IF READING 430 006060 5263 JMP EOF 431 006061 1377 SKIPF, TAD (20 432 006062 1375 BACKBL, TAD (10 433 006063 1375 EOF, TAD (10 434 006064 1374 BACKF, TAD (30 435 006065 4267 JMS UTIL 436 006066 5602 JMP I CAS /RETURN 437 438 006067 0000 UTIL, 0 439 006070 1302 TAD TEMP 440 006071 6704 KLSA 441 006072 6706 TRYAGN, KGOA 442 006073 6703 KSBF /WAIT FOR READY 443 006074 5273 JMP .-1 444 006075 6707 KRSB 445 006076 0375 AND (10 446 006077 7640 SZA CLA 447 006100 5272 JMP TRYAGN /KEEP TRYING IF ERROR CAUSED BY DRIVE EMPTY 448 006101 5667 JMP I UTIL 449 450 006102 0000 TEMP, 0 451 006103 0000 ERKNT, 0 452 006104 0000 FNUNIT, 0 453 006105 0000 RTRY, 0 454 455 006106 1302 SPCODE, TAD TEMP 456 006107 0373 AND (3 457 006110 1372 TAD (JMP TABLE 458 006111 3315 DCA J 459 006112 1302 TAD TEMP 460 006113 0371 AND (4300 461 006114 3302 DCA TEMP 462 006115 7402 J, HLT 463 006116 5263 TABLE, JMP EOF /0 WRITE EOF 464 006117 5253 JMP REWIND /1 REWIND AND WRITE EOF IF BIT 0=1 465 006120 5262 JMP BACKBL /2 BACK BLOCK 466 006121 1302 TAD TEMP /3 SKIP/BACK FILE DEPENDING ON BIT 0 467 006122 7700 SMA CLA 468 006123 5261 JMP SKIPF /FORWARD FILE 469 006124 5264 JMP BACKF /BACK FILE 470 006125 0000 CWAIT, 0 471 006126 6706 KGOA /ASSERT CONTENTS OF STATUS A 472 006127 3302 DCA TEMP /SAVE ANYTHING READ 473 006130 6705 KSAF 474 006131 5330 JMP .-1 /WAIT FOR SOMETHING TO HAPPEN 475 006132 6702 KSEN /WAS IT AN ERROR? 476 006133 5725 JMP I CWAIT /NO, SO RETURN 477 006134 3302 ERR, DCA TEMP /YES ... ERROR 478 006135 6707 KRSB 479 006136 0374 AND (30 480 006137 7450 SNA 481 006140 5343 JMP .+3 482 006141 0377 AND (20 483 006142 5705 JMP I RTRY /END OF FILE IS SOFT ERROR 484 006143 2303 ISZ ERKNT /SHALL WE TRY AGAIN? 485 006144 5347 JMP .+3 /YES 486 006145 7330 STL CLA RAR /TAD (4000 487 006146 5705 JMP I RTRY /RETURN WITH NON-ZERO AC 488 006147 1304 TAD FNUNIT /RETRY 489 006150 1370 TAD (50 /BUT FIRST DO BACKSPACE BLOCK GAP 490 006151 4267 JMS UTIL 491 006152 5220 JMP ERETRY 492 493 006153 7600 L7600, 7600 494 006170 0050 $ 006171 4300 006172 5316 006173 0003 006174 0030 006175 0010 006176 0060 006177 0020 AROUND 6030 ASSEMB 5477 BACKBL 6062 BACKF 6064 BINARY 6200 BINBUF 5523 BLKNT 5760 BPTR 5763 BSW 7002 BUFCDF 5662 BUFFER 5755 C3STRT 5400 CAS 6002 CDF0 5447 CHAR1 5560 CHAR2 5554 CHCNT 5513 CHPTR 5514 CHTMP 5553 CKSUM 5512 CODE 0000 COM 5732 CRC 6042 CS 5613 CSA0 5607 CSA1 5601 CWAIT 6125 DBWDCT 5756 EOF 6063 ERETRY 6020 ERKNT 6103 ERR 6134 unreferenced FIELDW 5462 FNUNIT 6104 FUN 5754 GCHAR 5515 GCHCOM 5561 GPCH 6000 J 6115 JMPGET 5535 JMPX 5520 K200 5643 K3700 5600 K70 5774 K7700 5664 KCDF 5775 KCIF 5632 KCLR 6700 KGOA 6706 KLSA 6704 KQX1 5765 KRDF 5764 KRSB 6707 KSAF 6705 KSBF 6703 KSDR 6701 unreferenced KSEN 6702 L200 5404 L377 5524 L4003 5776 L70 5461 L7400 5403 L7600 6153 unreferenced LDABS2 5414 unreferenced LEADER 5423 M200 5405 M301 5411 NEWWD 5427 NEXT 5453 unreferenced NOT1ST 5642 ORG 5452 ORIGIN 5506 OVER 5471 P7400 5733 QCAS 5762 QGPCH 5757 RDCHAR 6037 READ 5707 RECLP 5646 RETCIF 5750 RETRY 5654 unreferenced REWIND 6053 RTRY 6105 RW 6012 SKIPF 6061 SPCASE 5766 SPCODE 6106 SUBVER 0001 unreferenced T 5752 T2 5753 TABLE 6116 TEMP 6102 TRYAGN 6072 UNIT 5601 UTIL 6067 VERSIO 0002 VERSON 0005 unreferenced WD 5511 WD1 5507 WD2 5510 WRITE 5666 unreferenced XFIELD 5445