1 /RX NON-SYSTEM HANDLER, GENERAL CONTROLLER TYPE 2 /FLOPPY DISK HANDLER FOR OS/8 FOR FIRST RX02 DRIVE PAIR. 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 /COPYRIGHT (C) 1978, 1982, 1984 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 46 /DEFINITIONS OF RX8/E IOT'S 47 48 RXVER= 0263 /VERSION = B3 49 50 NOCHK= 0 / 0 = Don't check for ctrl c, 1 = check for ctrl c 51 52 DEVCOD= 750 /DEVICECODE 53 SEL= 6000+DEVCOD /SELECT DRIVE PAIR 54 LCD= 6001+DEVCOD /LOAD COMMAND REGISTER 55 XDR= 6002+DEVCOD /TRANSFER DATA REGISTER 56 STR= 6003+DEVCOD /SKIP ON TRANSFER REQUEST FLAG, CLEAR FLAG 57 SER= 6004+DEVCOD /SKIP ON ERROR FLAG, CLEAR FLAG 58 SDN= 6005+DEVCOD /SKIP ON DONE FLAG, CLEAR FLAG 59 INTR= 6006+DEVCOD /INTERRUPT ENABLE/DISABLE 60 INIT= 6007+DEVCOD /INITIALIZE CONTROLLER AND RECALIBRATE DRIVES 61 62 63 /NOTES ON THIS HANDLER: 64 65 /THIS HANDLER READS AND WRITES THE DISK IN "12-BIT" MODE, IN WHICH 66 /ONLY 6 BITS OF EVERY 8-BIT BYTE ARE USED. AN RX01 CARTRIDGE 67 /CONTAINS 494 OS/8 BLOCKS UNDER THIS METHOD 68 69 /TO MAXIMIZE SPEED ON THE DEVICE, THE HANDLER READS AND WRITES RX01 DATA 70 /ON A TRACK WITH A TWO-WAY INTERLEAVE - I.E. RECORDS 1-26 ON A TRACK 71 /ARE WRITTEN IN THE SEQUENCE: 72 / 1,3,5,7,9,11,13,15,17,19,21,23,25,2,4,6,8,10,12,14,16,18,20,22,24,26 73 74 /DOUBLE DENSITY MEDIA ARE WRITTEN IN A THREE WAY INTERLEAVE 75 / 1,4,7,10,13,16,19,22,25,2,5,8,11,14,17,20,23,26,3,6,9,12,15,18,21,24 76 77 /TRACK-SECTOR COMPUTATION IS DONE I/O TO/FROM THE SILO 78 79 AC4000=CLL CLA CML RAR /SET AC TO 4000 80 AC7776=CLL CLA CMA RAL /SET AC TO 7776 81 AC0002=CLL CLA CML RTL /SET AC TO 0002 82 AC7775=CLL CLA CMA RTL /SET AC TO 7775 83 / 84 /BUILD DATA 85 *0 86 / 87 000000 7776 -2 /TWO ENTRY POINTS 88 000001 2230 DEVICE RX2A /DEVICE GROUP NAME 000002 6201 89 000003 2230 DEVICE RX20 /ENTRY POINT NAME 000004 6260 90 000005 4320 4320 /CODE FOR MULTI-RX 91 000006 4032 RX20&177+4000 /ENTRY POINT OFFSET 92 000007 0000 0 93 000010 0000 0 94 000011 2230 DEVICE RX2A /DEVICE GROUP NAME 000012 6201 95 000013 2230 DEVICE RX21 /ENTRY POINT NAME 000014 6261 96 000015 4320 4320 97 000016 4036 RX21&177+4000 /ENTRY POINT OFFSET 98 000017 0000 0 99 000020 0000 0 100 *200 101 / 102 / 103 / INIT CODE 104 / 105 000200 7402 POINT, HLT /ADDR OF SECOND PAGE AT INIT TIME 106 000201 4600 UNIT, JMS I POINT /GO TO SECOND PAGE TO INIT 107 / 108 / LIST OF VECTORS TO SECOND PAGE 109 / 110 000202 0202 LQUO, QUO-. /LQUO MUST LEAD OFF LIST 111 000203 0176 LRETRY, RETRY-. 112 000204 0201 LREC, REC-. 113 000205 0175 LSIZE, SIZE-. 114 000206 0264 LREMD, REMD-. 115 000207 0200 LFN, FN-. 116 000210 0360 LSELCT, SELECT-. 117 000211 0177 LDENSW, DENSW-. 118 000212 0177 LENTRY, ENTRY-. 119 120 VCOUNT=LQUO-. /FALLS THRU TO WHICH, HERE IS VECTOR COUNT 121 / 122 / COME HERE FROM ZOO 123 / 124 / PROCESS ENTRY POINT, DEVICE TYPE 125 / 126 000213 7330 WHICH, AC4000 /SELECT FIRST DRIVE PAIR DMII=4000, DMI=0 127 000214 6750 SEL 128 000215 6755 SDN /CLEAR DONE FLAG 129 000216 7000 NOP 130 000217 6754 SER /CLEAR ANY ERROR CONDITIONS 131 000220 7000 NOP 132 000221 7346 AC7775 /SET RETRY COUNTER 133 000222 3603 DCA I LRETRY 134 000223 1767 TAD I ZOO /GET UNIT NUMBER*20+402 135 000224 3201 DCA UNIT /HOLD FOR LATER 136 000225 2367 ISZ ZOO /MOVE TO TYPE CODE 137 000226 1767 TAD I ZOO /HAS THIS DRIVE BEED INIT'ED 138 000227 7700 L7700, SMA CLA /SKIP IF NO 139 000230 5256 JMP NORMAL /GO TO NORMAL PATH 140 000231 5242 RSTART, JMP BOUNCE /HOP OVER ENTRY POINTS 141 / 142 / 143 / 144 IFZERO .&177-33&4000 <_ERROR_> 145 / 146 / ENTRY POINTS ARE AT 32,36 147 / 148 *.&7600+32 149 / 150 000232 0263 RX20, RXVER 151 000233 4367 JMS ZOO /COMMON ENTRY ROUTINE 152 000234 0402 402 /UNIT 0, 402 FOR CONVENIENCE 153 000235 7777 -1 /MINUS SAYS STILL HAVE TO INIT IT; 154 / /SINGLE=0, DOUBLE=20, QUAD=22 155 000236 0000 RX21, 0 156 000237 4367 JMS ZOO 157 000240 0422 L422, 422 /20 SAYS UNIT 1, 402 FOR CONVENIENCE 158 000241 5213 DOOR, JMP WHICH /INIT TIME LITERAL (MUST BE MINUS) 159 / /GETS SAME TYPE CODE AS OTHER ENTRY POINT 160 / 161 / REST OF SET UP CODE 162 / 163 000242 1255 BOUNCE, TAD L10 /MAKE A READ STATUS CODE 164 000243 1201 TAD UNIT 165 000244 6751 LCD 166 000245 6755 SDN 167 000246 5245 JMP .-1 168 000247 6752 XDR /GET STATUS WORD 169 000250 0357 AND L32 /KEEP DENSITY ERROR; DOUBLE; QUAD 170 000251 1255 TAD L10 /SINGLE=10;SING/DOUB=40;DOUB=20;QUAD=22 171 000252 0240 AND L422 /SINGLE=0;SING/DOUB=0;DOUB=20;QUAD=22 172 000253 3767 DCA I ZOO /PLACE TYPE CODE, THREE LOC.'S AFTER ENTRY POINT 173 000254 6754 SER 174 000255 0010 L10, 10 175 000256 1767 NORMAL, TAD I ZOO /FETCH BACK TYPE CODE 176 000257 7640 SZA CLA /SKIP IF A SINGLE DENSITY 177 000260 1227 TAD L7700 /DOUBLE 178 000261 1227 TAD L7700 /SINGLE=7700, DOUBLE=7600 179 000262 3611 DCA I LDENSW /PLACE FOR LOOP CONTROL 180 000263 1767 TAD I ZOO 181 000264 7112 CLL RTR /PUT QUAD BIT TO LINK 182 000265 7650 SNA CLA /SKIP IF DOUBLE OR QUAD 183 000266 1362 TAD L1734 /SINGLE 184 000267 1363 TAD L4110 /D&Q=4110, S=6044 185 000270 7420 SNL /SKIP ON QUAD, IT'S OK RIGHT NOW 186 000271 7130 CLL CML RAR /SINGLE AND DOUBLE DIVIDE BY 2 187 000272 3605 DCA I LSIZE /S=7022, D=6044, Q=4110 188 000273 1611 TAD I LDENSW /7700 IF SINGLE, 7600 IF DOUBLE 189 000274 7146 CLL CMA RTL /375 IF SINGLE, 775 IF DOUBLE 190 000275 0201 AND UNIT /VOILA, 400*DOUBLE + 20*UNIT 191 000276 3607 DCA I LFN /PLACE INTO FUNCTION CONTROL WORD 192 000277 7346 AC7775 /BACK UP ZOO TO FETCH CALLING ADDR 193 000300 1367 TAD ZOO 194 000301 3376 DCA T1 /HOLD TEMPORARY 195 000302 1776 TAD I T1 /HERE IS CALLING ADDR 196 000303 7402 CLLFLD, HLT /PUT CDF TO CALLING FIELD HERE 197 000304 4612 JMS I LENTRY /GO TO SECOND PAGE, LEAVING POINTER TO DIVSUB 198 / 199 / DIVSUB SUBROUTINE !!MUST!! FOLLOW IMMEDIATELY 200 / 201 / 202 / DIVSUB 203 / 204 / CALL TO SET UP TRACK, SECTOR, FROM OVERALL SECTOR # 205 / ALSO, SET UNIT WITH HEAD COMMAND IF WE ARE ON TO SECOND SIDE 206 / 207 / CALL WITH AC <0 IF IT IS REALLY AN ERROR RETRY 208 / CALL WITH AC >=0 IF CALL TO DIVSUB 209 / 210 000305 0000 DIVSUB, 0 211 000306 6201 CDF 0 /AND DATA FIELD MUST BE TO HERE 212 000307 7710 SPA CLA /SKIP IF REALLY A DIVIDE REQUEST 213 000310 5231 JMP RSTART /NO, IT WAS AN ERROR RETRY!! 214 000311 3602 DCA I LQUO /CLEAR DIVIDE QUOTIENT 215 000312 1767 TAD I ZOO /IS IT A TWO HEADER 216 000313 7012 RTR /PUT QUAD BIT TO LINK 217 000314 7620 SNL CLA /SKIP IF YES 218 000315 5327 JMP SHUNT /NO, GO DO DIVIDE 219 000316 1604 TAD I LREC /WHICH RECORD ARE WE WORKING ON 220 000317 1363 TAD LM3670 /NUMBER OF SECTORS ON FIRST SIDE 221 000320 7630 SZL CLA /SKIP IF SECOND SIDED IT 222 000321 5327 JMP SHUNT /NO, JUST REGULAR 223 000322 1607 TAD I LFN /FORCE HEAD BIT ON 224 000323 0240 AND L422 /KEEP DOUBLE, UNIT, READ-WRITE 225 000324 1360 TAD L1000 /ADD IN SECOND SIDE 226 000325 3607 DCA I LFN 227 000326 1363 TAD LM3670 /BUT DECREASE RECORD NUMBER 228 000327 1604 SHUNT, TAD I LREC /THIS FOR TRACK-SECTOR 229 000330 2602 DIVLOO, ISZ I LQUO /MAIN DIIVIDIE LOOP 230 000331 1361 TAD LM32 /DIVIDE BY 26 TO GET TRACK 231 000332 7500 SMA /SKIP IF DONE 232 000333 5330 JMP DIVLOO 233 000334 1357 TAD L32 /REMAINDER 0-25 234 000335 3376 DCA T1 /HOLD IT IN TEMPORARY 235 000336 1767 TAD I ZOO /SINGLE DENSITY 236 000337 7640 SZA CLA /SKIP IF YES 237 000340 1376 TAD T1 /MULTIPLY BY THREE FOR DOUBLE 238 000341 1376 TAD T1 /AND BY TWO FOR SINGLE 239 000342 1376 TAD T1 240 000343 7101 CLL IAC /LINK CLEAR FOR FINAL TEST; +1 TO START AT 1 NOT 0 241 000344 1361 TAD LM32 /DIVIDE BY 26 TO GET SECTOR 242 000345 7540 SMA SZA /SKIP IF DONE 243 000346 5344 JMP .-2 244 000347 1357 TAD L32 /RESTORE POSITIVE VALUE TO BE SECTOR 245 000350 3606 DCA I LREMD /WHEW, BUT WATCH IT, A FINAL CORRECTION COMING! 246 000351 7004 RAL /IF LINK=0 AND SINGLE: 2,4,6,8,10,12,14,16... SERIES 247 000352 1767 TAD I ZOO /BUT WE HAVE 1,3,5,7,9,11,13,15... SO WE MUST INCREMENT! 248 000353 7650 SNA CLA /SKIP IF SOME OTHER CASE 249 000354 2606 ISZ I LREMD /NOW HAVE IT 2,4,6,8,10,12,14,16... 250 000355 5705 JMP I DIVSUB /OUT 251 / 252 / 253 000356 0416 L416, 416 /SOME LITERALS 254 000357 0032 L32, 32 255 000360 1000 L1000, 1000 256 000361 7746 LM32, -32 257 000362 1734 L1734, 1734 258 L4110, 259 000363 4110 LM3670, -3670 260 / 261 / 262 / 263 *.&7600+167 /FORCE TO END OF PAGE 264 / ZOO SUBROUTINE 265 / 266 / TO SET UP ENTRY POINT PROCESSING, AND INIT CODE 267 / 268 000367 0000 ZOO, 0 /ADDR OF 'HIT' ENTRY POINT +2 COMES HERE 269 000370 7200 CLA /FOR SAFETY 270 000371 6214 RDF /SAVE CALLERS FIELD SETTING 271 000372 1374 TAD LCDF0 /ADD IN CDF 0 272 000373 3303 DCA CLLFLD /RESET WHEN GOING TO I/O SUB 273 000374 6201 LCDF0, CDF 0 /DATA FIELD HERE FOR INDIRECTS 274 000375 1241 CLOSE, TAD DOOR /CLOSE DOOR TO ONCE ONLY CODE (JMP WHICH 275 000376 3375 T1, DCA CLOSE /USE ONCE-ONLY FOR TEMPORARY LOCATION 276 000377 4200 JMS POINT /LEAVE ADDR OF SECOND PAGE 277 / 278 / 279 / VARIABLES, ALSO INIT CODE LIVES HERE 280 / 281 / 282 000400 0000 BUF, 0 /POINTER TO CALLER'S BUFFER 283 000401 0000 RETRY, 0 /RETRY COUNT 284 000402 0000 SIZE, 0 /SIZE OF DEVICE 285 000403 0000 SYS, 0 /POINTER TO CALL 286 000404 0000 QUO, 0 /DIVIDE QUOTIENT, WHICH IS TRACK NUMBER 287 000405 0000 REC, 0 /SECTOR NUMBER OF FLOPPY 288 000406 0000 BC, 0 /CONTROL COUNT, WORDS TO TRANSFER 289 000407 0000 FN, 0 /0 FOR WRITE; 2 FOR READ; HEAD, DENSITY, UNIT 290 000410 0000 DENSW, 0 /7700 IF SINGLE DENSITY, 7600 IF DOUBLE DENSITY 291 000411 0000 ENTRY, 0 /ENTRY POINT, LEAVE ADDR OF DIVSUB HERE 292 / 293 IFNZRO .&177-10&4000 <_ERROR> /ENOUGH ROOM FOR INIT? 294 / 295 *.&7600 296 / 297 / INIT TIME: FILL VECTOR TABLE 298 / 299 000400 0000 THERE, 0 /FILLED BY JMS, POINTS TO VECTOR 300 000401 1200 ILOOP, TAD THERE /POINTER IS ALSO OFFSET! 301 000402 1600 TAD I THERE /MAKING VECTOR 302 000403 3600 DCA I THERE 303 000404 2200 ISZ THERE /MOVE TO NEXT VECTOR 304 000405 2370 ISZ FLPWC /CONTROL COUNT ON THIS PAGE 305 000406 5201 JMP ILOOP 306 000407 5600 JMP I THERE /BACK TO FIRST PAGE 307 / 308 / IO SUBROUTINE 309 / 310 / ENTRY POINT AT END OF LAST LISTING PAGE 311 / 312 / 313 *ENTRY+1 /RESUME RUNTIME CODE 314 / 315 000412 3203 DCA SYS /POINTER TO ARG'S, EXIT 316 000413 6214 RDF /DATA FIELD OF USER CALL 317 000414 1377 TAD (CDF CIF 0 /MAKE CDF CIF TO CALLER'S FIELD 318 000415 3337 DCA EXFLD /SET UP FOR CALL 319 000416 7330 AC4000 /SET LINK=0, AC=4000 320 000417 1603 TAD I SYS /CARRY READ-WRITE BIT TO LINK 321 000420 0373 AND L70 /KEEP FIELD FOR BUFFER 322 000421 1366 TAD LLCDF0 /MAKE CDF TO BUFFER FIELD 323 000422 3262 DCA BUFCDF /PLACE INTO I/O LOOP 324 000423 7026 CML RTL /MAKE FUNCTION CODE, 0=WRITE, 2=READ 325 000424 1207 TAD FN /START-UP CODE HAS SET HEAD, DENSITY, UNIT ETC. 326 000425 3207 DCA FN 327 000426 1603 TAD I SYS /MAKE LOOP CONTROL COUNT 328 000427 7004 RAL 329 000430 0315 AND L7600 330 000431 7041 CIA /0 FOR WHOLE FIELD 331 000432 3206 DCA BC /MINUS TOTAL NUMBER OF WORDS 332 000433 2203 ISZ SYS /NEXT 333 000434 1603 TAD I SYS /IS BUFFER ADDRESS 334 000435 3200 DCA BUF 335 000436 2203 ISZ SYS /NEXT 336 000437 1374 TAD L175 /CARRY WITH DENSW IF SINGLE DENSITY 337 000440 1210 TAD DENSW /BLOCK # TO SECTOR # 338 000441 7700 SMA CLA /SKIP IF DOUBLE, MULTIPLY BY 2 339 000442 1603 TAD I SYS /SINGLE, MULTIPLY BY FOUR 340 000443 1603 TAD I SYS /SKIP ON ILLEGAL NEGATIVE BLOCK #, FORCE LINK ON LATER 341 000444 2203 ISZ SYS /MOVE POINTER TO ERROR EXIT 342 000445 7104 CLL RAL 343 000446 3205 DCA REC /SAVE SECTOR NUMBER 344 000447 7430 SZL /SKIP IF LEGAL BLOCK # 345 000450 5333 JMP ERREX /FORCE SIZING OF DISK TO RETURN SIZE IN AC 346 000451 4611 JMS I ENTRY /CALL DIVISION SUBROUTINE OTHER PAGE 347 000452 1207 TAD FN /SPLIT READ AND WRITE 348 000453 7012 RTR /READ-WRITE BIT TO LINK 349 000454 7630 SZL CLA /WRITE SKIPS 350 000455 5305 JMP STREAD /READ GOES TO START IN MIDDLE OF LOOP 351 / /WRITE FALLS THRU TO NEXT LISTING PAGE 352 /WRITE FALLS THRU TO THIS LOOP 353 / 354 / TOP OF MAIN LOOP 355 / 356 000456 1207 TOP, TAD FN /SET SILO TO LOAD-UNLOAD 357 000457 6751 LCD /COMMAND TO CONTROLLER 358 000460 1210 TAD DENSW /MAKE SILO LOOP COUNT, S=7700, D=7600 359 000461 3370 DCA FLPWC /LDCMD ENTRY SAFE TEMPORARY 360 000462 7402 BUFCDF, HLT /CDF TO BUFFER FIELD PLACED HERE 361 000463 4341 TRLOOP, JMS WAIT /WAIT FOR STR 362 000464 7410 SKP 363 000465 5352 JMP ERRSET 364 000466 1600 TAD I BUF /IN CASE WRITE, FETCH A WORD 365 000467 6752 XDR /TO OR FROM AC 366 000470 3600 DCA I BUF /PLACE WORD FOR READ, WRITE REPLACES SAME 367 000471 2200 ISZ BUF /MOVE BUFFER POINTER, (MAY SKIP) 368 000472 0000 REMD, 0 /DIVIDE REMAINDER, WHICH IS SECTOR NUMBER 369 000473 2370 ISZ FLPWC /DONE YET 370 000474 5263 JMP TRLOOP 371 000475 4341 JMS WAIT /WAIT FOR DONE 372 000476 5352 JMP ERRSET 373 000477 1210 TAD DENSW /ADDING 77 (SINGLE) 177 (DOUBLE) 374 000500 7040 CMA /ONCE WE CMA, THAT IS 375 000501 1206 TAD BC /LOOP CONTROL TO FINISH READ 376 000502 7450 SNA 377 000503 5331 JMP OKEX /OK, DONE 378 000504 3206 DCA BC /REPLACE AND KEEP GOING 379 / 380 / MIDDLE OF MAIN LOOP 381 / 382 000505 7307 STREAD, CLA CLL IAC RTL /KNOWN TO BE A 78, SO THIS WORKS! FOR LITERAL 4 383 000506 1207 TAD FN /TURNING SILO COMMAND INTO READ-WRITE COMMAND 384 000507 6751 LCD /I/O COMMAND TO CONTROLLER 385 000510 4341 JMS WAIT /WAIT FOR STR 386 000511 7410 SKP 387 000512 5352 JMP ERRSET 388 000513 1272 TAD REMD /PRECOMPUTED SECTOR # 389 000514 6752 XDR 390 000515 7600 L7600, 7600 /CLEAR AC, AND IS LITERAL 391 000516 4341 JMS WAIT /WAIT FOR STR 392 000517 7410 SKP 393 000520 5352 JMP ERRSET 394 000521 1204 TAD QUO /TRACK # 395 000522 6752 XDR /TRACK # IS ALWAYS NON0 !! 396 000523 2205 ISZ REC /MOVE TO NEXT RECORD NUMBER 397 000524 4611 JMS I ENTRY /DO TRACK SECTOR FOR NEXT OPERATION 398 000525 4341 JMS WAIT /WAIT FOR DONE 399 000526 5352 JMP ERRSET 400 000527 2206 ISZ BC /CHECK FOR WRITE EXIT 401 000530 5256 JMP TOP /STILL MORE 402 000531 2203 OKEX, ISZ SYS /KICK TO OK EXIT 403 000532 7410 SKP 404 000533 1202 ERREX, TAD SIZE /RETURN -SIZE OF DEVICE 405 000534 3272 SELBAK, DCA REMD 406 000535 4370 JMS SELECT /AC NOW 0 TO FORCE SELECT OF FIRST PAIR 407 000536 1272 TAD REMD 408 000537 7402 EXFLD, HLT /CDF CIF TO CALLER 409 000540 5603 JMP I SYS /OUT 410 000541 0000 WAIT, 0 411 000542 6753 STR 412 000543 7410 SKP 413 000544 5741 JMP I WAIT /IF XFER FLAG IS SET RETURN TO CALLER +1 414 000545 6755 SDN /TEST DONE FLAG 415 000546 5342 JMP WAIT+1 /LOOP UNTIL STR OR SDN SETS 416 000547 2341 ISZ WAIT /DONE SET, SET UP RETURN TO CALLER +2 417 000550 6754 SER /CHECK FOR AN ERROR 418 000551 5356 JMP MONCHK /NO ERROR, CHECK K.B. 419 000552 7330 ERRSET, AC4000 420 000553 2201 ISZ RETRY /TRY THREE TIMES? 421 000554 4611 JMS I ENTRY /NO, AC NEGATIVE SAYS RETRY NOT DIVIDE!! 422 000555 5334 JMP SELBAK /SELECT BACK TO FIRST PAIR 423 424 000556 7300 MONCHK, CLL CLA 425 426 IFNZRO NOCHK < KSF /IS K.B. FLAG SET > 427 000557 7000 IFZERO NOCHK < NOP > 428 429 000560 5741 JMP I WAIT /NO, RETURN TO CALLER 430 000561 6036 KRB /YES, GET THE CHARACTER 431 000562 1376 TAD LM3 /AND CHECK FOR CTRL C 432 000563 7640 SZA CLA 433 000564 5741 JMP I WAIT /NO CTRL C FOUND RETURN TO CALLER 434 000565 4370 JMS SELECT 435 000566 6201 LLCDF0, CDF 0 /CTRL C FOUND RETURN TO SYSTEM 436 000567 5715 JMP I L7600 437 438 FLPWC=. 439 000570 7767 SELECT, VCOUNT 440 000571 6750 SEL 441 000572 6755 SDN 442 000573 0070 L70, 70 443 000574 0175 L175, 175 444 000575 5770 JMP I SELECT 445 000576 7775 LM3, -3 446 000577 6203 PAGE 447 $ AC0002 7326 unreferenced AC4000 7330 AC7775 7346 AC7776 7344 unreferenced BC 0406 BOUNCE 0242 BUF 0400 BUFCDF 0462 CLLFLD 0303 CLOSE 0375 DENSW 0410 DEVCOD 0750 DIVLOO 0330 DIVSUB 0305 DOOR 0241 ENTRY 0411 ERREX 0533 ERRSET 0552 EXFLD 0537 FLPWC 0570 FN 0407 ILOOP 0401 INIT 6757 unreferenced INTR 6756 unreferenced L10 0255 L1000 0360 L1734 0362 L175 0574 L32 0357 L4110 0363 L416 0356 unreferenced L422 0240 L70 0573 L7600 0515 L7700 0227 LCD 6751 LCDF0 0374 LDENSW 0211 LENTRY 0212 LFN 0207 LLCDF0 0566 LM3 0576 LM32 0361 LM3670 0363 LQUO 0202 LREC 0204 LREMD 0206 LRETRY 0203 LSELCT 0210 unreferenced LSIZE 0205 MONCHK 0556 NOCHK 0000 NORMAL 0256 OKEX 0531 POINT 0200 QUO 0404 REC 0405 REMD 0472 RETRY 0401 RSTART 0231 RX20 0232 RX21 0236 RXVER 0263 SDN 6755 SEL 6750 SELBAK 0534 SELECT 0570 SER 6754 SHUNT 0327 SIZE 0402 STR 6753 STREAD 0505 SYS 0403 T1 0376 THERE 0400 TOP 0456 TRLOOP 0463 UNIT 0201 VCOUNT 7767 WAIT 0541 WHICH 0213 XDR 6752 ZOO 0367