1 /RX NON-SYSTEM HANDLER, GENERAL CONTROLLER TYPE 2 /FLOPPY DISK HANDLER FOR OS/8. RX78C.PA 3 /***NOT FOR USE WITH VT278. ONLY VT78 *** 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 / 12 /COPYRIGHT (C) 1978 BY DIGITAL EQUIPMENT CORPORATION 13 / 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 / 23 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE 24 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 25 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY 26 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. 27 / 28 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER 29 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED 30 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH 31 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. 32 / 33 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE 34 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY 35 /DIGITAL. 36 / 37 / 38 / 39 / 40 / 41 / 42 / 43 / 44 / 45 / 46 / 47 / THIS HANDLER IS SPECIFICALLY FOR A SECOND PAIR OF DRIVES ON A VT78!! 48 / 49 /DEFINITIONS OF RX8/E IOT'S 50 51 RXVER= "N&77 52 53 DEVCOD= 750 /DEVICECODE 54 55 LCD= 6001+DEVCOD /LOAD COMMAND REGISTER 56 XDR= 6002+DEVCOD /TRANSFER DATA REGISTER 57 STR= 6003+DEVCOD /SKIP ON TRANSFER REQUEST FLAG, CLEAR FLAG 58 SER= 6004+DEVCOD /SKIP ON ERROR FLAG, CLEAR FLAG 59 SDN= 6005+DEVCOD /SKIP ON DONE FLAG, CLEAR FLAG 60 INTR= 6006+DEVCOD /INTERRUPT ENABLE/DISABLE 61 INIT= 6007+DEVCOD /INITIALIZE CONTROLLER AND RECALIBRATE DRIVES 62 63 64 /NOTES ON THIS HANDLER: 65 66 /THIS HANDLER READS AND WRITES THE DISK IN "12-BIT" MODE, IN WHICH 67 /ONLY 6 BITS OF EVERY 8-BIT BYTE ARE USED. AN RX01 CARTRIDGE 68 /CONTAINS 494 OS/8 BLOCKS UNDER THIS METHOD 69 70 /TO MAXIMIZE SPEED ON THE DEVICE, THE HANDLER READS AND WRITES RX01 DATA 71 /ON A TRACK WITH A TWO-WAY INTERLEAVE - I.E. RECORDS 1-26 ON A TRACK 72 /ARE WRITTEN IN THE SEQUENCE: 73 / 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 74 75 /DOUBLE DENSITY MEDIA ARE WRITTEN IN A THREE WAY INTERLEAVE 76 / 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 77 78 /TRACK-SECTOR COMPUTATION IS DONE I/O TO/FROM THE SILO 79 80 AC4000=CLL CLA CML RAR /SET AC TO 4000 81 AC7776=CLL CLA CMA RAL /SET AC TO 7776 82 AC0002=CLL CLA CML RTL /SET AC TO 0002 83 AC7775=CLL CLA CMA RTL /SET AC TO 7775 84 / 85 /BUILD DATA 86 *0 87 / 88 000000 7776 -2 /TWO ENTRY POINTS 89 000001 2230 DEVICE RX0B /DEVICE GROUP NAME 000002 6002 90 000003 2230 DEVICE RXA2 /ENTRY POINT NAME 000004 0162 91 000005 4320 4320 /CODE FOR MULTI-RX 92 000006 4033 RXA2&177+4000 /ENTRY POINT OFFSET 93 000007 0000 0 94 000010 0000 0 95 000011 2230 DEVICE RX0B /DEVICE GROUP NAME 000012 6002 96 000013 2230 DEVICE RXA3 /ENTRY POINT NAME 000014 0163 97 000015 4320 4320 /THIS WAS CHANGED FROM 4270 - ASSIGNED TO CASSETTE 98 000016 4037 RXA3&177+4000 /ENTRY POINT OFFSET 99 000017 0000 0 100 000020 0000 0 101 *200 102 / 103 / 104 / INIT CODE 105 / 106 000200 7402 POINT, HLT /ADDR OF SECOND PAGE AT INIT TIME 107 000201 4600 UNIT, JMS I POINT /GO TO SECOND PAGE TO INIT 108 / 109 / LIST OF VECTORS TO SECOND PAGE 110 / 111 000202 0202 LQUO, QUO-. /LQUO MUST LEAD OFF LIST 112 000203 0176 LRETRY, RETRY-. 113 000204 0201 LREC, REC-. 114 000205 0175 LSIZE, SIZE-. 115 000206 0264 LREMD, REMD-. 116 000207 0200 LFN, FN-. 117 000210 0200 LDENSW, DENSW-. 118 000211 0352 LSELCT, SELECT-. 119 000212 0177 LENTRY, ENTRY-. 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 7201 WHICH, CLA IAC /SELECT SECOND PAIR IF DRIVES 127 000214 4611 JMS I LSELCT 128 000215 7346 AC7775 /SET RETRY COUNTER 129 000216 3603 DCA I LRETRY 130 000217 1767 TAD I ZOO /GET UNIT NUMBER*20+402 131 000220 3201 DCA UNIT /HOLD FOR LATER 132 000221 2367 ISZ ZOO /MOVE TO TYPE CODE 133 000222 1767 TAD I ZOO /HAS THIS DRIVE BEED INIT'ED 134 000223 7700 L7700, SMA CLA /SKIP IF NO 135 000224 5256 JMP NORMAL /GO TO NORMAL PATH 136 000225 1201 RSTART, TAD UNIT /PICK UP UNIT BIT, DOUBLE DENSITY +2 137 000226 1253 TAD L10 /MAKE A READ STATUS CODE 138 000227 6755 SDN 139 000230 5227 JMP .-1 140 000231 6751 LCD 141 000232 5243 JMP BOUNCE /HOP OVER ENTRY POINTS 142 / 143 / 144 / 145 IFZERO .&177-34&4000 <_ERROR_> 146 / 147 / ENTRY POINTS ARE AT 33, 37 148 / 149 *.&7600+33 150 / 151 000233 0000 RXA2, 0 152 000234 4367 JMS ZOO /COMMON ENTRY ROUTINE 153 000235 0402 402 /UNIT 0, 402 FOR CONVENIENCE 154 000236 7777 -1 /MINUS SAYS STILL HAVE TO INIT IT; 155 / /SINGLE=0, DOUBLE=20, QUAD=22 156 000237 0000 RXA3, 0 157 000240 4367 JMS ZOO 158 000241 0422 L422, 422 /20 SAYS UNIT 1, 402 FOR CONVENIENCE 159 000242 5213 DOOR, JMP WHICH /INIT TIME LITERAL (MUST BE MINUS) 160 / /GETS SAME TYPE CODE AS OTHER ENTRY POINT 161 / 162 / REST OF SET UP CODE 163 / 164 000243 6755 BOUNCE, SDN 165 000244 5243 JMP .-1 166 000245 6752 XDR /GET STATUS WORD 167 000246 0357 AND L32 /KEEP DENSITY ERROR; DOUBLE; QUAD 168 000247 1253 TAD L10 /SINGLE=10;SING/DOUB=40;DOUB=20;QUAD=22 169 000250 0241 AND L422 /SINGLE=0;SING/DOUB=0;DOUB=20;QUAD=22 170 000251 3767 DCA I ZOO /PLACE TYPE CODE, THREE LOC.'S AFTER ENTRY POINT 171 000252 6754 SER /CLEAR ERROR FLAG 172 000253 0010 L10, 10 /MAY SKIP 173 000254 1356 TAD L416 /SET DONE FLAG AGAIN 174 000255 6751 LCD 175 000256 1767 NORMAL, TAD I ZOO /FETCH BACK TYPE CODE 176 000257 7640 SZA CLA /SKIP IF A SINGLE DENSITY 177 000260 1223 TAD L7700 /DOUBLE 178 000261 1223 TAD L7700 /SINGLE=7700, DOUBLE=7600 179 000262 3610 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 1610 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 5225 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 0241 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 1242 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 2333 ISZ LDCMD /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 3331 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 0366 AND L70 /KEEP FIELD FOR BUFFER 322 000421 1335 TAD LLCDF0 /MAKE CDF TO BUFFER FIELD 323 000422 3263 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 0312 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 1370 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 7500 SMA /SKIP ON ILLEGAL NEGATIVE BLOCK #, FORCE LINK ON LATER 341 000444 1603 TAD I SYS 342 000445 2203 ISZ SYS /MOVE POINTER TO ERROR EXIT 343 000446 7104 CLL RAL 344 000447 3205 DCA REC /SAVE SECTOR NUMBER 345 000450 7430 SZL /SKIP IF LEGAL BLOCK # 346 000451 5355 JMP ERREX /FORCE SIZING OF DISK TO RETURN SIZE IN AC 347 000452 4611 JMS I ENTRY /CALL DIVISION SUBROUTINE OTHER PAGE 348 000453 1207 TAD FN /SPLIT READ AND WRITE 349 000454 7012 RTR /READ-WRITE BIT TO LINK 350 000455 7630 SZL CLA /WRITE SKIPS 351 000456 5303 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 000457 1207 TOP, TAD FN /SET SILO TO LOAD-UNLOAD 358 000460 4333 JMS LDCMD /COMMAND TO CONTROLLER 359 000461 1210 TAD DENSW /MAKE SILO LOOP COUNT, S=7700, D=7600 360 000462 3333 DCA FLPWC /LDCMD ENTRY SAFE TEMPORARY 361 000463 7402 BUFCDF, HLT /CDF TO BUFFER FIELD PLACED HERE 362 000464 1600 TRLOOP, TAD I BUF /IN CASE WRITE, FETCH A WORD 363 000465 6753 STR /SKIP IF READY TO PASS DATA 364 000466 5265 JMP .-1 /NO 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 2333 ISZ FLPWC /DONE YET 370 000474 5264 JMP TRLOOP 371 000475 1210 TAD DENSW /ADDING 77 (SINGLE) 177 (DOUBLE) 372 000476 7040 CMA /ONCE WE CMA, THAT IS 373 000477 1206 TAD BC /LOOP CONTROL TO FINISH READ 374 000500 7450 SNA 375 000501 5325 JMP OKEX /OK, DONE 376 000502 3206 DCA BC /REPLACE AND KEEP GOING 377 / 378 / MIDDLE OF MAIN LOOP 379 / 380 000503 7307 STREAD, CLA CLL IAC RTL /KNOWN TO BE A 78, SO THIS WORKS! FOR LITERAL 4 381 000504 1207 TAD FN /TURNING SILO COMMAND INTO READ-WRITE COMMAND 382 000505 4333 JMS LDCMD /I/O COMMAND TO CONTROLLER 383 000506 1272 TAD REMD /PRECOMPUTED SECTOR # 384 000507 6753 STR 385 000510 5307 JMP .-1 386 000511 6752 XDR 387 000512 7600 L7600, 7600 /CLEAR AC, AND IS LITERAL 388 000513 1204 TAD QUO /TRACK # 389 000514 6753 STR 390 000515 5314 JMP .-1 391 000516 6752 XDR /TRACK # IS ALWAYS NON0 !! 392 000517 2205 ISZ REC /MOVE TO NEXT RECORD NUMBER 393 000520 4611 JMS I ENTRY /DO TRACK SECTOR FOR NEXT OPERATION 394 000521 1372 TAD LL16 /WAIT FOR OPERATION TO COMPLETE 395 000522 4333 JMS LDCMD 396 000523 2206 ISZ BC /CHECK FOR WRITE EXIT 397 000524 5257 JMP TOP /STILL MORE 398 000525 2203 OKEX, ISZ SYS /KICK TO OK EXIT 399 000526 3205 SELBAK, DCA REC /TEMPORARY TO HOLD AC 400 000527 4363 JMS SELECT /AC NOW 0 TO FORCE SELECT OF FIRST PAIR 401 000530 1205 TAD REC /RETURN WITH (POSSIBLE) AC VALUE 402 000531 7402 EXFLD, HLT /CDF CIF TO CALLER 403 000532 5603 JMP I SYS /OUT 404 / 405 / 406 / LDCMD SUBROUTINE 407 / 408 / CHECK FOR CONTROL C, LOAD A COMMAND 409 / 410 FLPWC=. /ENTRY POINT A TEMPORARY 411 000533 7767 LDCMD, VCOUNT /INIT COUNTER 412 000534 3363 DCA TRANS /SAVE COMMAND 413 000535 6201 LLCDF0, CDF 0 /DATA FIELD HERE IN CASE CONTROL C TO MONITOR 414 000536 6031 TSTTT, KSF /SKIP IF A TTY CHARACTER HAS HAPPENED 415 000537 5345 JMP TSTSD /NOPE, GO CHECK RX CONTROLLER READY 416 000540 1312 TAD L7600 /FORCE TOP BITS TO BE 1 TO ELIMINATE 3,203 417 000541 6034 KRS /AMBIGUITY ON TEST 418 000542 1370 TAD L175 /IS IT A CONTROL C 419 000543 7650 SNA CLA /SKIP IF NOT 420 000544 5361 JMP MONEX /GO EXIT TO MONITOR 421 000545 6755 TSTSD, SDN /IS RX CONTROLLER READY 422 000546 5336 JMP TSTTT /NOPE, GO CHECK TTY 423 000547 1363 TAD TRANS /GET BACK COMMAND 424 000550 6751 LCD /TO CONTROLLER 425 000551 6754 SER /SKIP IF AN ERROR 426 000552 5733 JMP I LDCMD 427 000553 7330 AC4000 /ERROR CODE FOR HARD ERROR 428 000554 7410 SKP /SKIP OVER SIZING ENTRY 429 000555 1202 ERREX, TAD SIZE /PUT NEGATIVE SIZE IN AC 430 000556 2201 ISZ RETRY /TRY THREE TIMES? 431 000557 4611 JMS I ENTRY /NO, AC NEGATIVE SAYS RETRY NOT DIVIDE!! 432 000560 5326 JMP SELBAK /SELECT BACK TO FIRST PAIR 433 / 434 000561 4363 MONEX, JMS SELECT /AC=0, SELECT FIRST PAIR 435 000562 5712 JMP I L7600 /BACK 436 / 437 / 438 / 439 / SELECT ROUTINE 440 / 441 TRANS, /TEMPORARY FOR LDCMD TO SAVE COMMAND 442 000563 0000 SELECT, 0 443 000564 6750 6750 /CONTENTS OF AC11 SAYS WHICH PAIR 444 000565 6754 SER /CLEAR POSSIBLE ERRANT FLAGS 445 000566 0070 L70, 70 /SAFE NO-OP 446 000567 6755 SDN 447 000570 0175 L175, 175 448 000571 6753 STR 449 000572 0016 LL16, 16 450 000573 7200 CLA /PERHAPS NOT NECESSARY 451 000574 1372 TAD LL16 /SET DONE FLAG AGAIN 452 000575 6751 LCD 453 000576 5763 JMP I SELECT 454 / 455 000577 6203 PAGE 456 / 457 $ end of file ^ AC0002 7326 unreferenced AC4000 7330 AC7775 7346 AC7776 7344 unreferenced BC 0406 BOUNCE 0243 BUF 0400 BUFCDF 0463 CLLFLD 0303 CLOSE 0375 DENSW 0410 DEVCOD 0750 DIVLOO 0330 DIVSUB 0305 DOOR 0242 ENTRY 0411 ERREX 0555 EXFLD 0531 FLPWC 0533 FN 0407 ILOOP 0401 INIT 6757 unreferenced INTR 6756 unreferenced L10 0253 L1000 0360 L1734 0362 L175 0570 L32 0357 L4110 0363 L416 0356 L422 0241 L70 0566 L7600 0512 L7700 0223 LCD 6751 LCDF0 0374 LDCMD 0533 LDENSW 0210 LENTRY 0212 LFN 0207 LL16 0572 LLCDF0 0535 LM32 0361 LM3670 0363 LQUO 0202 LREC 0204 LREMD 0206 LRETRY 0203 LSELCT 0211 LSIZE 0205 MONEX 0561 NORMAL 0256 OKEX 0525 POINT 0200 QUO 0404 REC 0405 REMD 0472 RETRY 0401 RSTART 0225 RXA2 0233 RXA3 0237 RXVER 0016 unreferenced SDN 6755 SELBAK 0526 SELECT 0563 SER 6754 SHUNT 0327 SIZE 0402 STR 6753 STREAD 0503 SYS 0403 T1 0376 THERE 0400 TOP 0457 TRANS 0563 TRLOOP 0464 TSTSD 0545 TSTTT 0536 UNIT 0201 VCOUNT 7767 WHICH 0213 XDR 6752 ZOO 0367