1 /RX02 SYSTEM HANDLER 2 / 3 / THIS HANDLER WAS DESIGNED TO WORK WITH RX01, RX02, RX03 4 / 5 / HOWEVER, ONE SINGLE BINARY CANNOT SUCCESSFULLY BE USED IN A 6 / VIRGIN BUILD FOR ALL THREE DEVICES. IT IS CURRENTLY SET UP 7 / TO BUILD AN RX02. 8 / TO GENERATE A BINARY TO BUILD AN RX01, CHANGE THE RXTYP 9 / EQUATE TO 1. FOR AN RX03 BUILD, CHANGE RXTYP TO 3. 10 / 11 RXTYP=2 /DEFAULT, BUILD ONTO AN RX02 12 / 13 / 14 / 15 VERSION="M&77 16 / 17 / 18 AC1=CLL CLA IAC 19 AC2=CLL CLA CML RTL 20 AC6=CLL CLA CML IAC RTL /RX02'S MUST RUN ON AN OMNI-BUS !! 21 AC4000=CLL CLA CML RAR 22 AC3777=CLL CLA CMA RAR 23 AC7775=CLL CLA CMA RTL 24 / 25 / DEVICE IOT SYMBOLIC EQUATES 26 / 27 LCD=6751 /LOAD COMMAND 28 XDR=6752 /TRANSFER DATA 29 STR=6753 /SKIP IF READY TO TRANSFER 30 SER=6754 /SKIP ON ERROR 31 SDN=6755 /SKIP ON DONE 32 / 33 / HEADER BLOCK FOR BUILD 34 / 35 *0 36 000000 7777 -1 /ONE ENTRY 37 000001 2230 DEVICE RX8E 000002 7005 38 000003 2331 DEVICE SYS 000004 2300 39 000005 4320 4320 /MULTI-TYPE RX HANDLER 40 000006 6007 SYS&177+6000 /TWO PAGE HANDLER 41 000007 0000 0 /UNUSED 42 IFZERO RXTYP-1 <756> /SIZE FOR BUILD 43 000010 1734 IFZERO RXTYP-2 <1734> 44 IFZERO RXTYP-3 <3670> 45 / 46 000011 7636 STBOOT-NDBOOT+12 /-SIZE (+12 FOR GAP) 47 / 48 / HERE IS A LISTING OF THE PRIMARY BOOT FOR CONVENIENCE 49 / 50 NOPUNCH 51 / 52 *20 53 / 54 000020 1061 READ, TAD UNIT /TRY NEXT COMBINATION OF DENSITY AND UNIT 55 000021 1046 TAD CON360 /ADDING IN 360 56 000022 0060 AND CON420 /KEEPING ONLY 420 BITS 57 000023 3061 DCA UNIT /CYCLES 400,420,0,20,400,,,,,,,, 58 000024 7327 AC6 /COMMAND TO READ DISK 59 000025 1061 TAD UNIT /UNIT AND DENSITY 60 000026 6751 LCD /COMMAND TO CONTROLLER 61 000027 7301 AC1 /TO SET SECTOR AND TRACK TO 1 62 000030 4053 JMS LOAD /SECTOR TO CONTROLLER, LEAVES AC ALONE 63 000031 4053 JMS LOAD /AND TRACK 64 000032 7004 LITRAL, 7004 /LEAVING A 2 IN AC; SERVES AS LITERAL 65 / 66 / FOLLOWING IS PART OF WAIT LOOP, SAME SECONDARY BOOTS, OLD PRIMARY BOOT 67 / 68 000033 6755 START, SDN /HAS DONE COME UP; CODE STARTS HERE! 69 000034 5054 JMP LOAD+1 /NO, GO CHECK FOR READY TO TRANSFER 70 / 71 / NOW, DONE OR ERROR 72 / 73 000035 6754 SER /SKIP ON AN ERROR, TRY ANOTHER DENSITY ETC. 74 000036 7450 SNA /NASTY, AC=2 FOR ABOUT TO DO SILO, 0 ON START-UP 75 000037 5020 JMP READ /START-UP, GO SET UP UNIT, THEN READ TO SILO 76 000040 1061 TAD UNIT /AC ALREADY 2, PUT IN UNIT, DENSITY 77 000041 6751 LCD /TO EMPTY THE SILO 78 000042 1061 TAD UNIT /SET UP LOC 60 FOR OLD SECONDARY BOOT 79 000043 0046 AND CON360 /KEEPING UNLY DENSITY BIT 80 000044 1032 TAD LITRAL /ADDING IN 7004, BECAUSE THAT'S WHAT SYS WANTS 81 000045 3060 DCA RX1SAV /OLD SECONDARY BOOT MOVES IT TO HANDLER 82 000046 0360 CON360, 360 /LITERAL; EXECUTES IN LINE AS A NO-OP 83 / /FALLS THRU TO NEXT PAGE OF LISTING 84 / 85 / 86 / FOLLOWING CODE SAME AS OLD PRIMARY BOOT 87 / 88 000047 4053 JMS LOAD /GRAB NEXT ITEM FROM SILO 89 000050 3002 DCA 2 /TRADITION; SECONDARY BOOT STARTS LOADING AT 2 ! 90 000051 2050 ISZ 50 /INCREMENT LOAD ADDRESS 91 000052 5047 JMP 47 /GO BACK FOR ANOTHER 92 / 93 / SECONDARY BOOT LOADS OVER PRIMARY BOOT UNIT LOCATION 47 IS LOADED, 94 / THEN CONTROL PASSES TO SECONDARY BOOT 95 / 96 000053 0000 LOAD, 0 /SUBROUTINE TO GIVE AND TAKE DATA FROM CONTROLLER 97 000054 6753 STR /IS HE READY TO TALK TO US? 98 000055 5033 JMP START /NO, IS HE PERHAPS DONE WITH SILO, OR IN ERROR? 99 000056 6752 XDR /YES, DATA IN OR OUT;IF DATA TO CONTROLLER, AC UNCHANGED 100 000057 5453 JMP I LOAD /NO MAGIC, JUST EXIT FROM SUBROUTINE 101 / 102 / 60 GOES TO OLD SECONDARY BOOT 103 / 61 HAS DENSITY AND UNIT THAT BOOTED SUCCESSFULLY 104 / 105 / 106 CON420, /USE IT TO HOLD 420 LITERAL TO START OUT 107 000060 0420 RX1SAV, 420 /UNIT^20+7004 TO GO TO SYS HANDLER 108 000061 0020 UNIT, 20 /+ THAT BOOTED OK 109 / 110 ENPUNCH 111 / 112 / ## SECONDARY BOOT ## 113 / 114 RELOC 2 /SECTION LOADING OVER PRIMARY BOOT 2 - 47 115 / 116 STBOOT=. 117 / 118 / ONCE-ONLY CODE AFTER FIRST SECTOR IS TRANSFERED 119 / 120 000002* 1013 ONCE, TAD XR /SINGLE=113, DOUBLE=213 121 000003* 7110 CLL RAR /SINGLE=45, DOUBLE=105 122 000004* 1014 TAD YR /SETTING UP POINTER TO SECTOR, TRACK, FIELD, ADDR DATA 123 000005* 3014 DCA YR /DAT01-1 OR DAT02-1 124 000006* 1414 TAD I YR /GETTING SINGLE=774, DOUBLE=1374 (IN CASE OLD 125 000007* 1060 TAD RX1SAV /ADD IN 20^UNIT+7004 PRIMARY BOOT) 126 000010* 3061 DCA UNIT /PUT INTO 61: + 127 000011* 4015 JMS NEXSEC /DESTROY LINKAGE TO ONCE ONLY CODE! 128 000012* 0000 XTRA, 0 /EXTRA TO MAKE ALL FIT 129 / 130 / 131 / AUTO INCREMENT REGISTERS 132 / 133 000013* 0061 XR, 61 /CONTINUE TO LOAD FIRST SECTOR AT 62 134 000014* 0022 YR, DAT01-45-1 /SET UP POINTER TO DATA AREA 135 / 136 / SECTOR DONE, SET UP FOR NEXT 137 / 138 000015* 5002 NEXSEC, JMP ONCE /END OF FIRST SECTOR, DO SET-UP CODE 139 000016* 6201 CDF 0 /DATA FIELD HERE TO USE AUTO INCR REGISTERS 140 000017* 1414 TAD I YR /GET DATA FIELD FOR PLACEMENT OF NEXT SECTOR 141 000020* 7500 SMA /SKIP IF MORE TO DO 142 000021* 5146 JMP EBOOT /END OF BOOT, 143 000022* 3044 DCA XFIELD /PLACE IN LINE TO SET DATA FIELD 144 000023* 7327 AC6 /GET AC OF 6 TO SET UP FLOPPY READ 145 000024* 1061 TAD UNIT /DENSITY AND UNIT NUMBER 146 000025* 6751 LCD 147 000026* 1414 TAD I YR /SECTOR FOR NEXT READ 148 000027* 4053 JMS LOAD /LOAD LEAVES AC ALONE 149 000030* 1414 TAD I YR /TRACK-SECTOR FOR NEXT READ 150 000031* 4053 JMS LOAD /LOAD REMAINS FROM PRIMARY BOOT 151 000032* 1414 TAD I YR /ADDRESS-TRACK-1 FOR NEXT READ 152 / /FALL TO HANGGG WITH AC NON0 TO SHOW READ 153 / 154 / FOLLOWING TWO LOCATIONS MUST MATCH PRIMARY BOOT 155 / 156 000033* 6755 HANGGG, SDN /SKIP IF DONE 157 000034* 5054 JMP LOAD+1 /NO, GO CHECK FOR TRANSFER READY 158 / 159 / SORT OUT ERROR, SILO DONE, READ DONE 160 / 161 000035* 6754 SER /SKIP IF ERROR 162 000036* 7410 SKP /IS GOOD, CHECK WHETHER READ OR SILO 163 000037* 7402 HLT /ANY ERROR IS FATAL!! 164 000040* 7450 SNA /SKIP IF READY TO SILO (AC HAS LOAD ADDR) 165 000041* 5015 JMP NEXSEC /DONE WITH SILO (AC=0) GO TO NEXT SECTOR 166 000042* 3013 DCA XR /USE AUTO-INCR TO LOAD CORE 167 000043* 5062 JMP OVRFLW /GO TO LOCATIONS NOT FITTING UNDER 47 168 / 169 / CODE TO EMPTY THE SILO TO CORE 170 / 171 000044* 6201 XFIELD, CDF 0 /FIELD FOR TRANSFER PLACED HERE 172 000045* 4053 JMS LOAD /LOAD REMAINS FROM PRIMARY BOOT 173 000046* 3413 DCA I XR /PLACE NEXT WORD 174 000047* 5044 JMP XFIELD /WHEN THIS LOCATION IS PLACED, SECONDARY BOOT 175 / /TAKES CONTROL, CONTINUE FIRST SECTOR AT 62 176 / 177 / PRIMARY BOOT LOCATIONS 50-61 REMAIN INTACT 178 / 179 STATUS=. /REUSE FOR TEMPORARY 180 / 181 / ## REST OF SECONDARY BOOT ## 182 / 183 RELOC 62 /SECTION LOADING 62 - 213 184 / 185 / LOCATIONS NOT FITTING WITHIN 2-47 SPACE 186 / 187 000062* 6752 OVRFLW, XDR /FETCH READ STATUS FOR LATER 188 000063* 3050 DCA STATUS /TO FIGURE OUT IF A DOUBLE SIDED FLOPPY 189 000064* 7326 AC2 /CODE FOR SILO OPERATION 190 000065* 1061 TAD UNIT /UNIT AND DENSITY 191 000066* 6751 LCD /SET TO EMPTY SILO 192 000067* 5044 JMP XFIELD /GO TO SILO UNLOADING LOOP 193 / 194 / 195 / 196 / SINGLE DENSITY LOADING DATA 197 / 198 000070* 0774 DAT01, 774 /CANCEL OUT 7004 WHEN ADDED TO 70X4 199 000071* 6201 CDF 0 /2ND SECTOR FOR SINGLE DENSITY, FIELD 0 200 000072* 0003 3 /SECTOR 3, INTERLEAVED AT 2 201 000073* 7776 1-3 /TRACK 1 (MINUS SECTOR 3) 202 000074* 0112 114-1-1 /2 THRU 47 + 62 THRU 113 FOR FIRST SECTOR 203 / /-1 FOR TRACK, -1 FOR AUTO INCR 204 000075* 6201 CDF 0 /3RD SECTOR TO 7600 FIELD 0 205 000076* 0005 5 206 000077* 7774 1-5 207 000100* 7576 7600-1-1 208 000101* 6201 CDF 0 /4TH SECTOR, SECOND HALF OF PAGE 209 000102* 0007 7 210 000103* 7772 1-7 211 000104* 7676 7700-1-1 212 000105* 6211 CDF 10 /5TH SECTOR, TOP OF FIELD 1 213 000106* 0021 21 /SECTOR 21 214 000107* 7770 11-21 /OF TRACK 11 215 000110* 7566 7600-11-1 /TO 7600 216 000111* 6211 CDF 10 /6TH SECTOR, REST OF FIELD 1 217 000112* 0023 23 218 000113* 7766 11-23 219 000114* 7666 7700-11-1 220 000115* 6221 CDF 20 /7TH SECTOR, TOP OF FIELD 2 221 000116* 0025 25 222 000117* 7764 11-25 223 000120* 7566 7600-11-1 224 000121* 6221 CDF 20 /10TH SECTOR, REST OF FIELD 2 225 000122* 0027 27 226 000123* 7762 11-27 227 000124* 7666 7700-11-1 228 000125* 0016 16 /MARKER AND LITERALS TO MAKE DAT02=DAT01+40 229 000126* 7623 MAGIC, 7623 /THIS WORD IN HANDLER HAS DENSITY, UNIT WORD 230 000127* 7605 L7605, 7605 /STARTING ADDR FOR HANDLER 231 / 232 / DOUBLE DENSITY LOADING DATA 233 / 234 000130* 1374 DAT02, 1374 /MAKE 400+UNIT WHEN ADDED TO 70X4 235 000131* 6201 CDF 0 /2ND SECTOR TO 7600 236 000132* 0004 4 /INTERLEAVE OF 3 237 000133* 7775 1-4 238 000134* 7576 7600-1-1 239 000135* 6211 CDF 10 240 000136* 0015 15 241 000137* 7770 5-15 242 000140* 7572 7600-5-1 243 000141* 6221 CDF 20 /3RD SECTOR TO 7600 OF FIELD 2 244 000142* 0020 20 /SECOND HALF OF BLOCK 66 OCTAL 245 000143* 7765 5-20 /ON TRACK 5 246 000144* 7572 7600-5-1 247 000145* 0016 16 /MARKER TO STOP WHOLE THING, ALSO LITERAL 16 248 / 249 / I/O DONE, GO TO HANDLER 250 / 251 000146* 1061 EBOOT, TAD UNIT /ENTER WITH AC=16 252 000147* 6751 LCD /SET DONE FLAG FOR HANDLER 253 000150* 1050 TAD STATUS /FIND OUT IF DOUBLE SIDED DISK 254 000151* 7012 RTR /DOUBLE SIDED BIT TO LINK 255 000152* 7210 CLA RAR /DOUBLE SIDED BIT TO AC0 256 000153* 1061 TAD UNIT /REST OF CONTROL WORD 257 000154* 3526 DCA I MAGIC /TO 7623 OF SYSTEM HANDLER 258 000155* 5527 JMP I L7605 /TO START UP SYSTEM 259 / 260 NDBOOT=. 261 / 262 / CODE THAT IS LOCATION SPECIFIC HAS !! IN COMMENTS 263 / 264 / ## CODE FOR SYSTEM HANDLER ## 265 / 266 RELOC 267 *200 268 RELOC 7600 269 / 270 / /USE DATA BREAKS FOR TEMPORARIES 271 / 272 QUO=7750 /QUOTIENT FOR DIVIDE == TRACK 273 REMD=7751 /REMAINDER FOR DIVIDE == SECTOR 274 REC=7752 /CURRENT LOGICAL SECTOR NUMBER 275 RETRY=7753 /RETRIES COUNT 276 / 277 007600* 0000 ZBLOCK 7 /REQUIRED BY BUILD 007601* 0000 007602* 0000 007603* 0000 007604* 0000 007605* 0000 007606* 0000 278 / 279 / 280 / ENTRY POINT 281 / 282 007607* 0015 SYS, VERSION 283 007610* 0032 L32, 32 /FALL THRU SOME LITERALS 284 007611* 1734 L1734, 1734 /WHICH MAY PUT STRAY STUFF IN AC 285 007612* 0003 3 /!!REQUIRED AT 7612!! TO SHOW OS8 TWO PAGE HANDLER 286 007613* 7346 AC7775 /SET UP RETRY COUNTER 287 007614* 3353 DCA RETRY /RETRIES ARE OVER ENTIRE OPERATION 288 007615* 6214 RDF /GRAB CALLER'S FIELD 289 007616* 1227 TAD LLCDF0 /MAKE CDF TO IT 290 007617* 3270 DCA RESTOR /PUT IT BACK, GOING TO I/O ROUTINE ON PAGE 2 291 007620* 5230 IOTYP, JMP FIRST /GO TO ONCE ONLY CODE, LATER USED AS VARIABLE 292 / /HAS HEAD, DENSITY, UNIT FOR I/O REQUEST 293 007621* 5264 JMP RSTART /GO CALL SECOND PAGE, IOTYP FALLS THRU TO HERE 294 / 295 / LITERALS ETC. 296 / 297 007622* 5000 L5000, 5000 / 298 BOOTYP, /!!MUST BE AT 7623!! SECONDARY BOOT PUTS AT BOOT TIME 299 / /4000 IF QUAD, 400 IF DOUBLE, AND 20 IF UNIT 1 300 IFZERO RXTYP-1 <0> /INITIAL VALUE MATCHES DEVICE TO ALLOW 301 007623* 0400 IFZERO RXTYP-2 <400> /BUILD ONTO VIRGIN MEDIA 302 IFZERO RXTYP-3 <4400> /OTHERWISE, SECONDARY BOOT PUTS IN RIGHT STUFF 303 007624* 7737 LDENSW, DENSW /LOCATION ON SECOND PAGE 304 L4110, 305 007625* 4110 LM3670, 4110 /VALUE WITH TWO USES 306 007626* 7746 LM32, -32 307 007627* 6201 LLCDF0, CDF 0 308 / 309 / ONCE ONLY CODE 310 / 311 007630* 5242 FIRST, JMP MORE /LEAVING ADDITIONAL ONCE-ONLY SPACE 312 / 313 / FIX CDF TO 7642 314 / 315 *7642 /!!CDF OR CIF MUST BE AT 7642!! 316 007642* 6221 MORE, CDF 20 /POINT TO OUR SECOND PAGE 317 007643* 1223 TAD BOOTYP /PICK UP BOOT WORD 318 007644* 7104 SNGDBL, CLL RAL /MAKE A WORD MINUS IF DOUBLE (OR QUAD) BOOTED 319 007645* 7006 SIZE, RTL /REUSE FOR CONSTANTS 320 007646* 3244 DCA SNGDBL /JUST FOR CONVENIENCE, THE BIT IS IN BOOTYP ANYHOW 321 007647* 1263 TAD QL3400 /ANY LITERAL IN RANGE 3400-3757 (LINK=0 HERE) 322 007650* 1223 TAD BOOTYP /FIGURE OUT SIZE OF MEDIA 323 007651* 7720 SMA SNL CLA /SKIP IF DOUBLE OR QUAD 324 007652* 1211 TAD L1734 /SINGLE 325 007653* 1225 TAD L4110 /S=6044, D&Q=4110 326 007654* 7420 SNL /SKIP IF QUAD, ITS SIZE ALREADY THERE 327 007655* 7130 CLL CML RAR /OTHER TWO CASES DIVIDE BY TWO 328 007656* 3245 DCA SIZE /STORE S=7022, D=6044, Q=4110 329 007657* 1244 TAD SNGDBL /MAKE DENSW, 7600 IF DOUBLE, 7700 IF SINGLE 330 007660* 7710 SPA CLA /SKIP IF SINGLE 331 007661* 1302 TAD L7700 332 007662* 1302 TAD L7700 333 007663* 3624 QL3400, DCA I LDENSW /MUST LIVE ON SECOND PAGE 334 / 335 / END OF ONCE-ONLY, (RE)START I/O OPERATION 336 / 337 RSTART, /AC MAY HAVE JUNK COMING IN!! 338 007664* 7350 AC3777 /MAKE A WORD WITH DENSITY AND UNIT BITS ONLY 339 007665* 0223 AND BOOTYP /FOR CONTRUCTING LCD ARGUMENTS 340 007666* 3220 DCA IOTYP /ALSO SHUTS OFF PATH TO ONCE-ONLY CODE! 341 007667* 1207 TAD SYS /AC HAS THE CALL ADDR 342 007670* 7402 RESTOR, HLT /SET DATA FIELD TO THAT OF CALLER 343 007671* 6222 CIF 20 344 007672* 5200 JMP PAGE2 345 / 346 / 347 / CALL WITH AC NON0 TO DO DIVIDE 348 / CALL WITH AC ZERO TO DO I/O RETRY (WHOLE OPERATION) 349 / 350 007673* 0000 DIVSUB, 0 351 007674* 7650 SNA CLA /SKIP IF REALLY A DIVIDE REQUEST 352 007675* 5264 JMP RSTART /NO, IT WAS AN ERROR RETRY!! 353 007676* 3350 DCA QUO /CLEAR DIVIDE QUOTIENT 354 007677* 1223 TAD BOOTYP /IS IT A TWO HEADER 355 007700* 7410 SKP /!!FAULTY USR CALL DOES JMS HERE (7700) 356 007701* 7402 HLT /HALT OUT SUCH AN OCCURRENCE!! 357 007702* 7700 L7700, SMA CLA /SKIP IF YES 358 007703* 5315 JMP SHUNT /NO, GO DO DIVIDE 359 007704* 7100 CLL /TO CHECK 12 BIT SIZE 360 007705* 1352 TAD REC /WHICH RECORD ARE WE WORKING ON 361 007706* 1225 TAD LM3670 /NUMBER OF SECTORS ON FIRST SIDE 362 007707* 7620 SNL CLA /SKIP IF SECOND SIDED IT 363 007710* 5315 JMP SHUNT /NO, JUST REGULAR 364 007711* 1223 TAD BOOTYP /MAKE IO FUNCTION WORD WITH SECOND HEAD BIT 365 007712* 1222 TAD L5000 /CONVERTS TO 20^UNIT +1400 366 007713* 3220 DCA IOTYP 367 007714* 1225 TAD LM3670 /BUT DECREASE RECORD NUMBER 368 007715* 1352 SHUNT, TAD REC /THIS FOR TRACK-SECTOR 369 007716* 2350 DIVLOO, ISZ QUO /MAIN DIVIDE LOOP 370 007717* 1226 TAD LM32 /DIVIDE BY 26 TO GET TRACK 371 007720* 7500 SMA /SKIP IF DONE 372 007721* 5316 JMP DIVLOO 373 007722* 1210 TAD L32 /REMAINDER 0-25 374 007723* 3351 DCA REMD /USE AS TEMPORARY UNTIL FINAL VALUE 375 007724* 1244 TAD SNGDBL /FIND OUT IF SINGLE BOOT 376 007725* 7710 SPA CLA /SKIP IF YES 377 007726* 1351 TAD REMD /MULTIPLY BY THREE FOR DOUBLE 378 007727* 1351 TAD REMD /AND BY TWO FOR SINGLE 379 007730* 1351 TAD REMD 380 007731* 7101 CLL IAC /LINK CLEAR FOR FINAL TEST; +1 TO START AT 1 NOT 0 381 007732* 1226 TAD LM32 /DIVIDE BY 26 TO GET SECTOR 382 007733* 7540 SMA SZA /SKIP IF DONE 383 007734* 5332 JMP .-2 384 007735* 1210 TAD L32 /RESTORE POSITIVE VALUE TO BE SECTOR 385 007736* 3351 DCA REMD /WHEW, BUT WATCH IT, A FINAL CORRECTION COMING! 386 007737* 1244 TAD SNGDBL /IF LINK=0 AND SINGLE: 2,4,6,8,10,12,14,16... SERIES 387 007740* 7720 SMA SNL CLA /SKIP IF NOT THE SINGLE DENS. 1,3,5,7,9,,, SERIES 388 007741* 2351 ISZ REMD /NOW HAVE IT 2,4,6,8,10,12,14,16... 389 007742* 6222 CIF 20 /POP BACK TO OTHER PAGE 390 007743* 5673 JMP I DIVSUB /!!THIS IS IN LAST USABLE LOCATION, EXEC NEEDS 7744!! 391 / 392 / 393 394 / 395 / ## SECOND PAGE ## 396 / 397 RELOC 398 *400 399 RELOC 7600 400 / 401 / FETCH ARGUMENTS, ETC. 402 / 403 007600* 3334 PAGE2, DCA FETCH /ENTER WITH ARGUMENT LIST ADDR IN AC 404 007601* 6214 RDF /SAFE HERE? 405 007602* 1240 TAD LCDIF0 /SET UP EXIT TO CALLER 406 007603* 3315 DCA EXFLD 407 007604* 7330 AC4000 /SET UP TO PUT R/W BIT TO LINK 408 007605* 1734 TAD I FETCH /FIRST ARGUMENT HAS FIELD FOR TRANSFER 409 007606* 0260 AND L70 /KEEPING ONLY FIELD 410 007607* 1320 TAD LCDF0 /MAKE CDF TO TRANSFER FIELD 411 007610* 3251 DCA BUFCDF /PLACE IN LINE FOR SILO LOOP 412 007611* 7026 CML RTL /0=WRITE, 2=READ 413 007612* 3336 DCA FN 414 007613* 1734 TAD I FETCH /MAKE CONTROL COUNT FOR TRANSFER 415 007614* 7004 RAL 416 007615* 0300 AND L7600 /COUNT OF WORDS 417 007616* 7041 CIA /0 FOR WHOLE FIELD 418 007617* 3335 DCA BC 419 007620* 2334 ISZ FETCH /NEXT ARGUMENT 420 007621* 1734 TAD I FETCH /BUFFER ADDRESS 421 007622* 3333 DCA BUF 422 007623* 2334 ISZ FETCH /NEXT 423 007624* 1342 TAD L100 /CARRY WITH DENSW IF SINGLE DENSITY 424 007625* 1337 TAD DENSW /SET TO COMPUTE SECTOR# FOR BLOCK# 425 007626* 7700 SMA CLA /SKIP IF DOUBLE, MULTIPLE BY 2 426 007627* 1734 TAD I FETCH /SINGLE, MULTIPLY BY FOUR 427 007630* 1734 TAD I FETCH 428 007631* 2334 ISZ FETCH /MOVING POINTER TO ERROR EXIT 429 007632* 6201 CDF 0 /INDIRECT TO FIRST PAGE FOR CONSTANTS 430 007633* 7104 CLL RAL /FINAL PART OF MULTIPLY 431 007634* 3747 DCA I LREC /SAVE SECTOR NUMBER 432 007635* 1745 TAD I LSIZE /TOTAL SIZE OF MEDIA 433 007636* 7430 SZL /SKIP IF LEGAL BLOCK # 434 007637* 5315 JMP EXFLD /EXIT TO CALLER WITH BLOCK # IN AC 435 007640* 6203 LCDIF0, CIF CDF 0 /GO BACK TO FIRST PAGE 436 007641* 4273 JMS DIVSUB /SET UP TRACK AND SECTOR 437 007642* 1336 TAD FN /SPLIT READ AND WRITE 438 007643* 7640 SZA CLA /WRITE SKIPS 439 007644* 5271 JMP STREAD /READ STARTS IN MIDDLE OF LOOP 440 / /WRITE FALLS TO NEXT LISTING PAGE 441 442 / 443 /WRITE FALLS THRU TO THIS LOOP 444 / 445 / TOP OF MAIN LOOP 446 / 447 007645* 1336 TOP, TAD FN /SET SILO TO LOAD-UNLOAD 448 007646* 4317 JMS LDCMD /COMMAND TO CONTROLLER 449 007647* 1337 TAD DENSW /MAKE SILO LOOP COUNT, S=7700, D=7600 450 007650* 3317 DCA FLPWC /LDCMD ENTRY SAFE TEMPORARY 451 007651* 7402 BUFCDF, HLT /CDF TO BUFFER FIELD PLACED HERE 452 007652* 1733 TRLOOP, TAD I BUF /IN CASE WRITE, FETCH A WORD 453 007653* 6753 STR /SKIP IF READY TO PASS DATA 454 007654* 5253 JMP .-1 /NO 455 007655* 6752 XDR /TO OR FROM AC 456 007656* 3733 DCA I BUF /PLACE WORD FOR READ, WRITE REPLACES SAME 457 007657* 2333 ISZ BUF /MOVE BUFFER POINTER, (MAY SKIP) 458 007660* 0070 L70, 70 459 007661* 2317 ISZ FLPWC /DONE YET 460 007662* 5252 JMP TRLOOP 461 007663* 1337 TAD DENSW /ADDING 77 (SINGLE) 177 (DOUBLE) 462 007664* 7040 CMA /ONCE WE CMA, THAT IS 463 007665* 1335 TAD BC /LOOP CONTROL TO FINISH READ 464 007666* 7450 SNA 465 007667* 5314 JMP OKEX /OK, DONE 466 007670* 3335 DCA BC /REPLACE AND KEEP GOING 467 / 468 / MIDDLE OF MAIN LOOP 469 / 470 007671* 1336 STREAD, TAD FN /READ STARTS HERE 471 007672* 1340 TAD L4 /TURN SILO COMMAND INTO READ-WRITE COMMAND 472 007673* 4317 JMS LDCMD /I/O COMMAND TO CONTROLLER 473 007674* 1750 TAD I LREMD /PRECOMPUTED SECTOR #; LDCMD SET FIELD TO 0 474 007675* 6753 STR 475 007676* 5275 JMP .-1 476 007677* 6752 XDR 477 007700* 7600 L7600, 7600 /CLEAR AC, AND IS LITERAL 478 007701* 1746 TAD I LQUO /TRACK # 479 007702* 6753 STR 480 007703* 5302 JMP .-1 481 007704* 6752 XDR /TRACK # IS ALWAYS NON0 !! 482 007705* 2747 ISZ I LREC /MOVE TO NEXT RECORD NUMBER 483 007706* 6203 BACKER, CDF CIF 0 /GO BACK TO FIRST PAGE 484 007707* 4273 JMS DIVSUB /FOR TRACK AND SECTOR 485 007710* 1341 TAD L16 /WAIT FOR OPERATION TO COMPLETE 486 007711* 4317 JMS LDCMD 487 007712* 2335 ISZ BC /CHECK FOR WRITE EXIT 488 007713* 5245 JMP TOP /STILL MORE 489 007714* 2334 OKEX, ISZ FETCH /KICK TO OK EXIT 490 007715* 7402 EXFLD, HLT /CDF CIF TO CALLER 491 007716* 5734 JMP I FETCH /OUT 492 493 / 494 / LDCMD SUBROUTINE 495 / 496 FLPWC=. /ENTRY POINT A SAFE COUNT TEMPORARY 497 007717* 0000 LDCMD, 0 /CALL TO GIVE COMMAND TO CONTROLLER 498 007720* 6201 LCDF0, CDF 0 /INDIRECTS BACK TO FIRST PAGE 499 007721* 1743 TAD I LIOTYP /PUT IN UNIT, DENSITY, HEAD 500 007722* 6755 SDN /SKIP IF CONTROLLER READY 501 007723* 5322 JMP .-1 /NO 502 007724* 6751 LCD /COMMAND 503 007725* 6754 SER /SKIP IF AN ERROR 504 007726* 5717 JMP I LDCMD /NO 505 007727* 2744 ISZ I LRETRY /TRIED ENOUGH TIMES ALREADY? 506 007730* 5306 JMP BACKER /TO DIVSUB WITH AC=0 TO RETRY !!!!! 507 007731* 7330 AC4000 /HARD ERROR, GIVE BACK MINUS RESULT 508 007732* 5315 JMP EXFLD 509 / 510 / VARIABLES ETC. 511 / 512 007733* 0000 BUF, 0 /POINTER TO CALLER'S BUFFER 513 007734* 0000 FETCH, 0 /POINTER TO CALL 514 007735* 0000 BC, 0 /CONTROL COUNT, WORDS TO TRANSFER 515 007736* 0000 FN, 0 /0 FOR WRITE, 2 FOR READ 516 007737* 0000 DENSW, 0 /7700 IF SINGLE DENSITY, 7600 IF DOUBLE DENSITY 517 / 518 / LITERALS 519 / 520 007740* 0004 L4, 4 521 007741* 0016 L16, 16 522 007742* 0100 L100, 100 523 007743* 7620 LIOTYP, IOTYP /POINTERS BACK TO FIRST PAGE 524 007744* 7753 LRETRY, RETRY 525 007745* 7645 LSIZE, SIZE 526 007746* 7750 LQUO, QUO 527 007747* 7752 LREC, REC 528 007750* 7751 LREMD, REMD 529 530 $ end of file ^ AC1 7301 AC2 7326 AC3777 7350 AC4000 7330 AC6 7327 AC7775 7346 BACKER 7706 BC 7735 BOOTYP 7623 BUF 7733 BUFCDF 7651 CON360 0046 CON420 0060 DAT01 0070 DAT02 0130 unreferenced DENSW 7737 DIVLOO 7716 DIVSUB 7673 EBOOT 0146 EXFLD 7715 FETCH 7734 FIRST 7630 FLPWC 7717 FN 7736 HANGGG 0033 unreferenced IOTYP 7620 L100 7742 L16 7741 L1734 7611 L32 7610 L4 7740 L4110 7625 L5000 7622 L70 7660 L7600 7700 L7605 0127 L7700 7702 LCD 6751 LCDF0 7720 LCDIF0 7640 LDCMD 7717 LDENSW 7624 LIOTYP 7743 LITRAL 0032 LLCDF0 7627 LM32 7626 LM3670 7625 LOAD 0053 LQUO 7746 LREC 7747 LREMD 7750 LRETRY 7744 LSIZE 7745 MAGIC 0126 MORE 7642 NDBOOT 0156 NEXSEC 0015 OKEX 7714 ONCE 0002 OVRFLW 0062 PAGE2 7600 QL3400 7663 QUO 7750 READ 0020 REC 7752 REMD 7751 RESTOR 7670 RETRY 7753 RSTART 7664 RX1SAV 0060 RXTYP 0002 SDN 6755 SER 6754 SHUNT 7715 SIZE 7645 SNGDBL 7644 START 0033 STATUS 0050 STBOOT 0002 STR 6753 STREAD 7671 SYS 7607 TOP 7645 TRLOOP 7652 UNIT 0061 VERSIO 0015 XDR 6752 XFIELD 0044 XR 0013 XTRA 0012 unreferenced YR 0014