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