1 RX8E=1 2 /EDUCOMP EDU250 BASIC 3 /EDU250 V3.019 3:15 PM 11/30/75 4 /RECONSTRUCTED 6:24 PM 3/21/76 5 6 7 8 9 10 11 12 13 14 15 /AN EDUCOMP SOFTWARE PRODUCT 16 /SOFTWARE PRODUCT MANAGER 17 /DOUGLAS BERGENGREN 18 19 /COPYRIGHT 1974 BY 20 /EDUCOMP CORPORATION 21 /298 PARK ROAD 22 /WEST HARTFORD, CONNECTICUT 06119 23 /EDU200 BASIC IS FOR THE PDP-8/A, -8/E, -8/M, -8/F, -8/I -8/L; 24 /EDU250 BASIC IS FOR THE PDP-8/A, -8/E, -8/M, -8/F 25 /WITH 8K OR MORE MEMORY AND KL8E OPTION. 26 /THE POWER FAIL-AUTO RESTART OPTION ALSO IS SUPPORTED 27 /FOR EDU200, BUT NOT FOR EDU250 (DURING FILE OPERATIONS). 28 29 /OS/8 ASSEMBLY INSTRUCTIONS: 30 / .R PAL8 31 / *EDU250 47 IFNZRO CONFIG 48 / 49 /USERS: THE NUMBER OF USERS ON THE SYSTEM. THIS PARAMETER 50 / IS LEFT OVER FROM THE SYSTEM DEVELOPEMENT. THE 51 / INITIAL DIALOG OVERRIDES THIS SETTING. 52 IFNDEF USERS 53 / 54 /PDP8I: SET TO A 1 IF THE COMPUTER ON WHICH EDU200 IS 55 / TO BE RUN IS A PDP-8/I OR -8/L. 56 / VALUE IS 0, INDICATING A PDP-8/E, -8/M, OR -8/F. 57 / THE INITIAL DIALOG CHECKS TO MAKE SURE IT IS 58 / RUNNING ON THE RIGHT MACHINE AND HALTS IF NOT. 59 IFNDEF PDP8I 60 / 61 /TD8E: SET TO 1 IF MASS STORAGE DEVICE IS TD8E DECTAPE. 62 / SET TO 0 OTHERWISE. 63 IFNDEF TD8E 64 / 65 /RK8E: SET TO 1 IF MASS STORAGE DEVICE IS RK8E DISK. 66 / SET TO 0 OTHERWISE. 67 IFNDEF RK8E 68 / 69 /RX8E: SET TO 1 IF MASS STORAGE DEVICE IS RX8E TYPE 70 / FLOPPY DISK. SET TO 0 OTHERWISE. 71 IFNDEF RX8E 72 / 73 /NOTES: 74 /1. EDU200 IS GENERATED BY SPECIFYING NO MASS 75 / STORAGE DEVICES. 76 /2. UNDER EDU250 ONLY ONE MASS STORAGE DEVICE 77 / CAN BE SELECTED. 78 EDU250=TD8E!RK8E!RX8E 79 IFNZRO EDU250^PDP8I 80 /DEFINITIONS 81 82 FIXMRI FJMP=0000 83 FIXMRI FADD=1000 84 FIXMRI FSUB=2000 85 FIXMRI FMPY=3000 86 FIXMRI FDIV=4000 87 FIXMRI FGET=5000 88 FIXMRI FPUT=6000 89 90 FEXT=0000 91 FNOR=7000 92 93 IFZERO PDP8I < 94 CAF=6007 95 BSW=7002 96 SPL=6102 97 GTF=6004 98 RTF=6005> 99 100 L0001=CLL CLA IAC 101 L0002=CLL CLA CML RTL 102 L0003=CLL CLA CML IAC RAL 103 L0004=CLL CLA IAC RTL 104 L0006=CLL CLA CML IAC RTL 105 L7777=CLL CLA CMA 106 L7776=CLL CLA CMA RAL 107 L7775=CLL CLA CMA RTL 108 L3777=CLL CLA CMA RAR 109 L5777=CLL CLA CMA RTR 110 L4000=CLL CLA CML RAR 111 L2000=CLL CLA CML RTR 112 113 SWAP=10 114 115 IFNZRO TD8E < 116 SDSS=6771 117 SDST=6772 118 SDSQ=6773 119 SDLC=6774 120 SDLD=6775 121 SDRC=6776 122 SDRD=6777> 123 124 IFNZRO RK8E < 125 DSKP=6741 126 DCLR=6742 127 DLAG=6743 128 DLCA=6744 129 DRST=6745 130 DLDC=6746 131 DMAN=6747> 132 133 IFNZRO RX8E < 134 RXCODE=750 135 LCD=6001!RXCODE 136 XDR=6002!RXCODE 137 STR=6003!RXCODE 138 SER=6004!RXCODE 139 SDN=6005!RXCODE 140 INTR=6006!RXCODE 141 INIT=6007!RXCODE> 142 /PAGE ZERO 143 144 FIELD 0 145 146 PAGE 0 147 000000 0000 0 148 000001 6212 CIF 10 /INTERRUPT HANDLER 149 000002 5177 JMP INTRPT 150 000003 3600 LOOK, USER0 /POINTER TO STATUS OF USER BEING RUN OR LOOKED AT 151 000004 3673 DBFKS2, BUFSP2-BUFIOT+SWPRBF /CNTRL-O & ECHO 152 000005 3705 DBFTS2, BUFSP2-BUFIOT+BUFOP-BUFIOT+1+SWPRBF /COLUMN COUNT 153 000006 3710 DBFTC, BUFC-BUFIOT+BUFOP-BUFIOT+1+SWPRBF /PRINTER BUFFER CHAR COUNT 154 000007 7777 RUNTIM, -1 /- # OF STATEMENTS FOR CURRENT USER 155 000010 0000 XREG, 0 /GENERAL XREG 156 000011 0000 XREG2, 0 /GENERAL XREG 157 *.+3 158 STSWAP=. 159 000015 7776 PDLXR, TOP /PUSH-DOWN XREG 160 000016 0000 AXIN, 0 /PACKING XREG 161 TEXTP=. /TEXT POINTERS 162 000017 0000 AXOUT, 0 /UNPACK XREG 163 IFNZRO .-20 /GTEM MUST BE FIRST AFTER INDEX REGISTERS 164 000020 0000 GTEM, 0 /UNPACK SWITCH 165 000021 0000 XCT, 0 /UNPACK SWITCH 166 000022 0452 PC, READY /PROGRAM RESTART 167 000023 0000 ADD, 0 /PACK TEMPORARY 168 000024 0000 XCTIN, 0 /PACK SWITCH 169 SUBS=XCTIN /SUBSCRIPT 170 000025 0000 PT1, 0 /FLOATING POINTER 171 000026 0000 CHAR, 0 /CHARACTER 172 000027 0000 LINEPC, 0 /LINE POINTER 173 000030 0000 LINENO, 0 /LINE NUMBER 174 000031 0000 LASTLN, 0 /LAST LINE POINTER 175 MODE=LASTLN 176 000032 0000 SPACSW, 0 /0 IS IGNORE SPACES 177 000033 6211 XFIELD, CDF 10 /USER FIELD 178 000034 0000 DATAPC, 0 /LINE NUMBER OF DATA STATEMENT 179 000035 0000 0 /DATA POINTER 180 000036 0000 0 /DATA TEMPORARY 181 000037 0000 0 /DATA UNPACK SWITCH 182 000040 0000 0 /DATA CHARACTER 183 000041 0000 PACKND, 0 /POINTER TO END OF PACKING 184 000042 3711 BUFR, LINE1+ORG /NEXT FREE SPACE 185 STARTV=BUFR /START OF VARIABLES 186 000043 3711 LASTV, LINE1+ORG /LAST DEFINED VARIABLE 187 000044 7776 PDLST, TOP /START OF PUSH-DOWN 188 000045 3707 ALINE0, LINE0+ORG /POINTER TO DUMMY LINE 189 000046 3615 COMBUF, BUFCOM+ORG /COMMAND BUFFER 190 000047 0000 ERLINE, 0 /ERROR LINE 191 000050 0001 FRNDX, 1 /3 WORD 192 000051 0203 203 /RANDOM INTEGER 193 000052 5555 5555 194 000053 3745 PREADC, XREADC /POINTER TO *READC* 195 000054 0765 PPRNTC, XPRNTC /POINTER TO *PRINTC* 196 IFNZRO EDU250 < 197 000055 0000 DEV, 0 /BIT 0=CURRENT DRIVE 198 000056 1617 NAME, FILENAME NONE.BA /USER'S CURRENT PROGRAM NAME 000057 1605 000060 0000 000061 0201 199 > 200 ENSWAP=.-1 201 000062 0000 AC0, 0 202 000063 0000 AC1, 0 203 000064 0000 AC2, 0 204 000065 0000 ACX, 0 /FAC (FLOATING POINT ACCUMULATOR) 205 000066 0000 ACH, 0 /HIGH ORDER 206 000067 0000 ACLO, 0 /LOW ORDER 207 000070 0000 OPX, 0 /EXPONENT OF OPERAND 208 000071 0000 OPH, 0 /HIGH ORDER OPERAND 209 000072 0000 OPL, 0 /LOW ORDER OPERAND 210 000073 0000 EVAL1, 0 /UNARY FLAG FOR EXPRESSION EVALUATOR 211 000074 3631 CPACK, XCPACK /POINTER TO PACK ROUTINE FOR STRING FUNCTIONS 212 TM=AC0 213 EXP=ACX 214 HORD=ACH 215 LORD=ACLO 216 000075 0000 SORTCN, 0 /SORT CONSTANT 217 000076 0000 T1, 0 /THREE TEMPS 218 000077 0000 T2, 0 219 000100 0000 T3, 0 220 000101 0000 CNTR, 0 /COUNTER 221 000102 0000 THISOP, 0 /CURRENT OP 222 000103 0000 LASTOP, 0 /LAST OP 223 EFOP=CNTR /FUNCTION OP 224 000104 7400 FLOUTP, FLOUT /FLOATING OUTPUT 225 000105 7200 FLINTP, FLIN /FLOATING INPUT 226 000106 7725 FLARGP, FLARG /POINTER TO TEMP FLAC 227 000107 6133 INTEGE, FFIX /FIX THE FLAC ROUTINE 228 000110 0000 FFLAG, 0 /-1 IF OP NOT 0 229 000111 0015 CCR, 15 /CR 230 000112 0007 C7, 7 /BELL 231 000113 0177 C177, 177 /RUBOUT 232 000114 0137 C137, 137 /BACK ARROW 233 000115 0014 C14, 14 /FORM FEED 234 000116 0012 CLF, 12 /LINE FEED 235 000117 7700 M100, -100 /CHARACTOR TEST 236 000120 7740 M40, -40 /-BUFFER SIZE 237 000121 7766 M12, -12 /-10 DECIMAL 238 000122 7772 M6, -6 /-MESSAGE LENGTH 239 000123 7774 M4, -4 /CHARACTER COUNT 240 000124 0040 C40, 40 /BUFFER SIZE 241 000125 0077 C77, 77 /RIGHT MASK 242 000126 2515 CCONT, CONT /POINTER TO EXECUTE NEXT STATEMENT 243 000127 2537 CJUMP, JUMP /POINTER TO JUMP TO LINE NO. IN AC 244 C7700=M100 245 IFNZRO EDU250 < 246 000130 0015 DTQI, 15 /PRIORITY OF LAST USER IN DECTAPE QUEUE 247 000131 0000 DTLOOK, 0 /POINTER TO STATUS WORD (USER0 THRU USER7) 248 /OF WHOEVER CURRENTLY HAS THE TAPE 249 /0=NOBODY 250 > 251 /NEW INSTRUCTIONS 252 FINT=JMS I . 253 000132 6070 FPT 254 PRINTC=JMS I PPRNTC /PRINT AC OR CHAR 255 GETC=JMS I . /UNPACK A CHAR 256 000133 4033 XGETC 257 SORTJ=JMS I . /SORT JUMP 258 000134 4721 XSORTJ 259 SORTC=JMS I . /SORT 260 000135 7624 ASORTC, XSORTC 261 PUSHA=JMS I . /SAVE AC 262 000136 1703 XPUSHA 263 PUSHJ=JMS I . /PUSH JUMP 264 000137 1716 XPUSHJ 265 PUSHF=JMS I . /SAVE FLOATING DATA 266 000140 1735 XPUSHF 267 POPA=JMS I . /RESTORE AC 268 000141 1573 XPOPA 269 POPJ=JMP I . /POP JUMP 270 000142 4162 XPOPJ 271 POPF=JMS I . /RESTORE FLOATING DATA 272 000143 4000 XPOPF 273 FLGET=JMS I . /FLOATING GET 274 000144 5144 XFLGET 275 FLPUT=JMS I . /FLOATING PUT 276 000145 7601 XFLPUT 277 PRINTX=JMS I . /DO OUTPUT; CALLED BY CIF 10;PRINTX 278 000146 0752 XOUT 279 ERROR=JMS I . /ERROR 280 000147 0400 XERROR 281 UDF=JMS I . /USER DATA FIELD 282 000150 0327 AUDF, XUDF 283 RTL6=JMS I . /SIX RAL*S 284 000151 4753 XRTL6 285 TESTN=JMS I . /TEST NUMERIC 286 000152 4016 XTESTN 287 TESTC=JMS I . /TEST CHAR 288 000153 4236 XTESTC 289 PACKC=JMS I . /PACK A CHAR 290 000154 3620 XPACKC 291 GETLN=JMS I . /GET A LINE NUMBER 292 000155 7333 XGETLN 293 TSTCCR=JMS I . /SKIP IF CR 294 000156 4206 CCRTST 295 TSTCOM=JMS I . /SKIP IF COMMA 296 000157 4200 COMTST 297 TSTALP=JMS I . /SKIP IF LETTER 298 000160 4224 ALPTST 299 COMMAN=JMS I . /DETERMINE COMMAND 300 000161 1757 F0CMAN 301 FIND=JMS I . /FIND A STATEMENT 302 000162 4122 XFIND 303 GETNXT=JMS I . /GET NEXT LINE 304 000163 4104 NXTGET 305 FINDLN=JMS I . /FIND A LINE 306 000164 3400 XFINDL 307 FREE13=JMS I . /FREE 14 OUTPUT SPACES 308 000165 1322 XFREE3 309 FREE2=JMS I . /FREE 3 OUTPUT SPACES 310 000166 1307 XFREE2 311 READC=JMS I PREADC /READ A CHAR 312 TSTEND=JMS I . /TEST FOR END OF LINE 313 000167 4213 ENDTST 314 TSTLPR=JMS I . /SKIP IF L-PAREN 315 000170 3762 LPRTST 316 GETSGN=TAD I FLARGP 317 /MAINLINE BASIC (PRIORITY SCHEDULER) 318 319 /WHENEVER THERE IS NOTHING BETTER TO DO 320 /OR A JOB WANTS TO DISMISS ITSELF SO OTHERS CAN RUN, 321 /THIS ROUTINE IS ENTERED. 322 323 /IT SEARCHES THE LIST OF USER PRIORITIES FOR THE LOWEST 324 /PRIORITY LESS THAN 10. (A PRIORITY > 10 INDICATES I/O WAIT.) 325 /SERVICING IS ROUND ROBIN WITHIN PRIORITIES. ONCE SWAPPED IN, 326 /THE NUMBER OF STATEMENTS THAT THE USER RUNS IS DETERMINED BY 327 /HIS PRIORITY; THE LOWER THE PRIORITY, THE BIGGER A CHUNCK 328 /HE GETS. WHEN A JOB EXITS FROM I/O WAIT, HIS PRIORITY IS 329 /SET TO 0 (HIGHEST POSSIBLE). WHEN A JOB USES UP ITS STATEMENT 330 /ALLOCATION WITHOUT GOING INTO I/O WAIT, ITS PRIORITY IS LOWERED. 331 /IN THIS WAY, COMPUTE BOUND JOBS GET LARGER CHUNKS OF TIME 332 /WHILE INTERACTIVE USERS STILL GET A QUICK RESPONSE. 333 334 *177 335 000177 3022 NULL, DCA PC /STORE RESTART ADDRESS 336 000200 6001 ION /INTERRUPT ON IN SCHEDULER!!! 337 000201 2326 ISZ INTCNT /BUMP COUNT FOR *RANDOMIZE* 338 /IN CASE THE ISZ SKIPS 339 IFZERO USERS-1 340 IFZERO USERS-2 341 IFZERO USERS-3 342 IFZERO USERS-4 343 IFNDEF USRM2 344 000202 0000 USRM, USRM2 /MASK FOR LOOK; SET BY INITIALIZER 345 000203 3076 DCA T1 /NO NEW JOB FOUND YET 346 000204 1003 TAD LOOK 347 000205 3100 DCA T3 348 000206 1111 NULL1, TAD CCR /MUST FIND JOB WITH LOWER PRIORITY THAN THIS 349 000207 6035 BEGKIE, KIE /KIES FOR ALL USER TTYS 350 000210 5217 JMP NULL5 /IN CASE STATIC ELECTRICITY HARDWARE BUG 351 000211 5217 JMP NULL5 /TURNS IT OFF 352 000212 5217 JMP NULL5 353 000213 5217 JMP NULL5 354 000214 5217 JMP NULL5 355 000215 5217 JMP NULL5 356 000216 5217 JMP NULL5 357 000217 3077 NULL5, DCA T2 358 000220 1325 TAD MUSRCT /THIS IS -USRM-1 359 000221 3062 DCA TM /COUNTER AROUND THE STATUSES 360 000222 7301 NULL2, L0001 /POINT TO NEXT STATUS WITH T3 361 000223 1100 TAD T3 362 000224 0202 AND USRM /MODULO USRM+1 363 IFNZRO USER0&7 /BITS 9-11 OF ADDR. OF USER0 MUST = 0 364 000225 1377 TAD (USER0 365 000226 3100 DCA T3 366 000227 1077 TAD T2 /COMPARE PRIORITIES 367 000230 7161 STL CIA /13 BIT NUMBER 368 000231 1500 TAD I T3 369 000232 7620 SNL CLA 370 000233 5240 JMP NULL3 /CURRENT PRIORITY IS STILL HIGHEST 371 000234 1100 TAD T3 /SAVE POINTER TO NEW HIGH 372 000235 3076 DCA T1 373 000236 1500 TAD I T3 /THIS IS THE NEW THING TO BEAT 374 000237 3077 DCA T2 375 000240 2062 NULL3, ISZ TM /HAVE WE LOOKED AT EVERYONE? 376 000241 5222 JMP NULL2 /NO 377 IFNZRO TD8E < 378 SDSS /DECTAPE UP TO SPEED? 379 JMP NULL4 /NO 380 CIF CDF 10 /YES, AND IT GETS PRIORITY 381 JMP I (DTTUTS /GO CHECK BLOCK NUMBER 382 > 383 384 000242 1076 NULL4, TAD T1 /GET POINTER TO NEXT GUY'S STATUS 385 000243 7450 SNA 386 000244 5206 JMP NULL1 /NO ONE IS RUNNABLE, KEEP LOOKING 387 000245 7041 CIA 388 000246 1003 TAD LOOK /LOOK IS STILL POINTER TO JOB THAT'S SWAPPED IN 389 000247 7650 SNA CLA 390 000250 5306 JMP DCKON4 /ALREADY SWAPPED IN 391 000251 6002 IOF /CAN'T HANDLE CONTROL-C OR ERROR WHILE SWAPPING 392 000252 4312 JMS DFIND /SET UP POINTERS TO SWAP OUT 393 000253 1410 DCKON2, TAD I XREG /GET PAGE 0 SWAP REGION 394 000254 6211 CDF 10 395 000255 3411 DCA I XREG2 /AND PUT IT IN FIELD 1 396 000256 6201 CDF 0 397 000257 2077 ISZ T2 /MOVED ALL WORDS? 398 000260 5253 JMP DCKON2 /NO 399 000261 1076 TAD T1 /YES: NOW THIS JOB WILL BE SWAPPED IN 400 000262 3003 DCA LOOK /IT'S OFFICIAL WITH LOOK 401 000263 4312 ENTRY, JMS DFIND /SET POINTERS FOR NEW JOB 402 000264 6211 DCKON3, CDF 10 /GET DATA FROM FIELD 1 403 000265 1411 TAD I XREG2 404 000266 6201 CDF 0 405 000267 3410 DCA I XREG /AND DEPOSIT IN PAGE 0 FLD 0 SWAP REGION 406 000270 2077 ISZ T2 407 000271 5264 JMP DCKON3 /KEEP SWAPPING 408 000272 1033 TAD XFIELD /SET UP *UDF* 409 000273 3330 DCA XUDF1 410 000274 7325 L0003 /SET UP DBFKS2 411 000275 1011 TAD XREG2 412 000276 3004 DCA DBFKS2 413 000277 1376 TAD (BUFOP-BUFIOT+1 /SET UP DBFTS2 414 000300 1004 TAD DBFKS2 415 000301 3005 DCA DBFTS2 416 000302 7325 L0003 /SET UP DBFTC 417 000303 1005 TAD DBFTS2 418 000304 3006 DCA DBFTC 419 000305 6001 ION /NOW THAT IT'S SAFELY IN, RISK CONTROL-C 420 000306 1403 DCKON4, TAD I LOOK /COMPUTE HOW MANY STATEMENTS THIS JOB SHOULD EXECUTE 421 000307 7040 CMA 422 000310 3007 DCA RUNTIM 423 000311 5422 JMP I PC /GO TO IT!!! 424 425 000312 0000 DFIND, 0 /SET UP POINTERS FOR SWAPPING 426 000313 1375 TAD (SWPR0-USER0 427 000314 1003 TAD LOOK 428 000315 3077 DCA T2 429 000316 1477 TAD I T2 430 000317 3011 DCA XREG2 /POINT TO AREA IN FIELD 1 431 000320 1374 TAD (STSWAP-1 432 000321 3010 DCA XREG /POINT TO AREA IN FIELD 0 433 000322 1373 TAD (STSWAP-ENSWAP-1 434 000323 3077 DCA T2 /TRANSFER MINUS THIS MANY WORDS 435 000324 5712 JMP I DFIND 436 437 000325 7777 MUSRCT, -USRM2-1 /-USRM-1; SET BY INITIALIZER 438 000326 0000 INTCNT, 0 /RANDOM NUMBER FOR RANDOMIZE 439 440 /*UDF* PSUEDO-INSTRUCTION 441 000327 0000 XUDF, 0 442 000330 6211 XUDF1, CDF 10 /BECOMES CDF TO USER'S DATA FIELD 443 000331 5727 JMP I XUDF 444 000373 7733 PAGE 000374 0014 000375 0010 000376 0012 000377 3600 445 /*ERROR* ROUTINE 446 /HERE IS WHERE ERRORS ARE PROCESSED 447 /IT IS CALLED DIRECTLY BY THE *ERROR* PSUEDOINSTRUCTION 448 000400 0000 XERROR, 0 449 000401 7326 L0002 /BUILD POINTER TO USER KEYBOARD DATA 450 000402 1004 TAD DBFKS2 451 000403 3010 DCA XREG 452 000404 6211 CDF 10 453 000405 3404 DCA I DBFKS2 /RESET CNTRL-O, ECHO, BREAK-ON-ANY 454 000406 3410 DCA I XREG /KEYBOARD BUFFER CHARACTER COUNT 455 000407 7346 L7775 /REST 3-WAY SWITCHES 456 000410 3410 DCA I XREG 457 000411 7346 L7775 458 000412 3410 DCA I XREG 459 000413 3410 DCA I XREG /START OF BUFFER 460 000414 3410 DCA I XREG 461 000415 6201 CDF 0 462 IFNZRO EDU250 < 463 000416 1131 TAD DTLOOK /DOES THIS USER HAVE THE DECTAPE? 464 000417 7041 CIA 465 000420 1003 TAD LOOK 466 000421 7650 SNA CLA 467 000422 4777 JMS I (DTDQ /YES: GET RID OF IT 468 > 469 000423 1200 TAD XERROR 470 000424 7110 CLL RAR /FORM ERROR CODE 471 000425 3026 DCA CHAR /PROTECT IT FROM THE FREE13 472 000426 4565 FREE13 /DO A LITTLE OUTPUT, MAYBE 473 000427 4535 SORTC /NOW FIGURE OUT WHICH ERROR NUMBER 474 000430 3001 ERRLST-1 475 000431 1075 TAD SORTCN /GET ERROR NUMBER 476 000432 7640 SZA CLA /ERROR OR CONTROL-C? 477 000433 7146 CLL CMA RTL /ERROR: +2 478 000434 7040 CMA /CONTROL-C: -1 479 000435 2032 ISZ SPACSW /KEEP SPACES FOR MESSAGE 480 000436 4776 JMS I (READY1 /PRINT "STOP " OR "ERROR " 481 000437 1075 TAD SORTCN /GET ERROR NUMBER 482 000440 7440 SZA /DON'T PRINT ERROR NUMBER IF CONTROL-C 483 000441 4775 JMS I (ITPRNT 484 000442 1047 TAD ERLINE /WHAT LINE WERE WE IN? 485 000443 7750 SPA SNA CLA 486 000444 5252 JMP READY /NONE: IMMEDIATE MODE 487 000445 4565 FREE13 /GET ROOM FOR "IN ####" 488 000446 1116 TAD CLF 489 000447 4776 JMS I (READY1 /PRINT "IN " 490 000450 1047 TAD ERLINE 491 000451 4775 JMS I (ITPRNT /PRINT LINE NUMBER 492 /*READY* ROUTINE 493 /ROUTINE TO PRINT "READY" AND RESET POINTERS 494 /ENTER THE ROUTINE AT START TO OMIT READY MESSAGE 495 000452 6211 READY, CDF 10 496 000453 7301 L0001 /RESET CONTROL-O, BREAK-ON-ANY 497 000454 0404 AND I DBFKS2 498 000455 3404 DCA I DBFKS2 499 000456 4565 FREE13 500 000457 7327 L0006 501 000460 4776 JMS I (READY1 /PRINT "READY" 502 000461 1044 START, TAD PDLST 503 000462 3015 DCA PDLXR /RESET PUSH-DOWN 504 000463 3047 DCA ERLINE /FOR THINGS LIKE ERROR 6 505 000464 1374 TAD (ERR330 506 000465 4536 PUSHA /TRAP TOO MANY *RETURN*S 507 000466 4537 PUSHJ 508 000467 0755 PAKLIN /GET COMMAND LINE 509 /INSERT LINE OR DO COMMAND 510 /AFTER A COMMAND OR LINE IS PACKED INTO THE COMMAND BUFFER 511 /THIS ROUTINE LOOKS AT IT AND EITHER STORES THE LINE OR 512 /GOES TO THE PROPER COMMAND 513 000470 4567 DECODE, TSTEND 514 000471 4552 TESTN 515 000472 5261 JMP START /IF LINE STARTS WITH CR, IGNORE LINE 516 000473 5744 JMP I PINPUTX /COMMAND 517 000474 4555 GETLN /GET LINE NUMBER 518 000475 1042 SRETN, TAD BUFR 519 000476 3016 DCA AXIN /SET TO REPACK 520 000477 3024 DCA XCTIN 521 000500 1030 TAD LINENO 522 000501 4550 UDF 523 000502 3416 DCA I AXIN /SET LINE NUMBER 524 000503 6201 CDF 525 000504 4556 TSTCCR /JUST LINE NUMBER 526 000505 5310 JMP .+3 /NO 527 000506 4745 JMS I PXDELET /DELETE THIS LINE 528 000507 5261 JMP START 529 530 000510 2032 ISZ SPACSW /KEEP SPACES 531 000511 7410 SKP 532 000512 4533 GETC 533 000513 4554 PACKC /REPACK LINE 534 000514 4556 TSTCCR 535 000515 5312 JMP .-3 536 000516 7307 L0004 /LEAVE ROOM FOR A DELETE COMMAND 537 000517 4554 PACKC 538 000520 4745 JMS I PXDELET /DELETE OLD LINE 539 000521 4550 UDF 540 000522 6002 IOF 541 000523 1431 TAD I LASTLN /POINTER TO NEXT 542 000524 3442 DCA I BUFR /POINT TO NEXT 543 000525 1042 TAD BUFR 544 000526 3431 DCA I LASTLN /OLD POINTS TO NEW 545 000527 4564 FINDLN /FIND THE LINE 546 000530 0016 C16, 16 547 000531 4537 PUSHJ 548 000532 4351 ENDFND /GET LAST COMMAND ON LINE--IS IT *NEXT*? 549 000533 7650 SNA CLA 550 000534 1373 TAD (10 /8 EXTRA FOR *NEXT* 551 000535 7001 IAC 552 000536 1016 TAD AXIN 553 000537 3042 DCA BUFR /NEW FREE POSITION 554 000540 1042 TAD STARTV /RESET VARIABLES AFTER TEXT IS TOUCHED 555 000541 3043 DCA LASTV 556 000542 6001 ION 557 000543 5261 JMP START 558 000544 2555 PINPUTX, INPUTX 559 000545 1600 PXDELET, XDELET 560 561 000546 0000 FIX, 0 /*FIX* FUNCTION 562 000547 1346 TAD FIX 563 000550 3772 DCA I (FFADD /KLUDGE SUBROUTINE LINKAGE 564 000551 1371 TAD (27 /23 DECIMAL, THE MAGIC NUMBER FOR SHIFTING 565 000552 3070 DCA OPX /PUT IT IN THE OP 566 000553 3071 DCA OPH /AND MAKE THE WHOLE THING 567 000554 3072 DCA OPL /A RATHER LARGE ZERO 568 000555 5770 JMP I (FIX1 /JUMP INTO FLOATING ADD ROUTINE 569 570 000556 0000 INT, 0 /*INT* FUNCTION 571 000557 1066 TAD ACH /GET SIGN OF FAC 572 000560 7710 SPA CLA /POSITIVE OR NEGATIVE? 573 000561 4772 JMS I (FFADD /NEGATIVE:ADD -.9999999999 574 IFNZRO MAGICN&7000 575 000562 0565 MAGICN /THIS LOC MUST BE < 1000 BECAUSE IT 576 /MUST BE A NOP! 577 000563 4346 JMS FIX /NOW TRUNCATE 578 000564 5756 JMP I INT /AND RETURN, FAC=INT(FAC0) 579 580 /THIS IS ADDED TO NEGATIVE NUMBERS IN *INT* 581 000565 0000 MAGICN, 0000 /-.9999999999999 582 000566 4000 4000 583 000567 0001 0001 584 000570 6613 PAGE 000571 0027 000572 6600 000573 0010 000574 3446 000575 1124 000576 3733 000577 3447 585 /*INPUT* STATEMENT 586 000600 4540 INPUT, PUSHF /SAVE POSITION OF DATA 587 000601 0035 DATAPC+1 588 000602 1040 TAD DATAPC+4 589 000603 4536 PUSHA 590 000604 1111 TAD CCR /FAKE END OF LINE 591 000605 3040 DCA DATAPC+4 /SO INREAD WILL BE FORCED TO GET MORE 592 000606 4252 INPSET, JMS INREAD /DO THE INPUT LIST 593 000607 5225 JMP INPEND /DONE 594 000610 7350 L3777 /TURN OFF CONTROL-O 595 000611 6211 CDF 10 596 000612 0404 AND I DBFKS2 597 000613 3404 DCA I DBFKS2 598 000614 4565 FREE13 /NEED MORE DATA 599 000615 1125 TAD C77 /ASCII FOR "?" 600 000616 4454 PRINTC /PRINT A QUESTION MARK 601 000617 1124 TAD C40 602 000620 4454 PRINTC /PRINT THE SPACE AFTER 603 000621 4537 PUSHJ /GET A LINE OF INPUT 604 000622 0755 PAKLIN 605 000623 7340 L7777 /INDICATE REENTRY 606 000624 5206 JMP INPSET /USE NEW DATA 607 000625 1377 INPEND, TAD (-15 608 000626 1040 TAD DATAPC+4 609 000627 7640 SZA CLA 610 000630 5301 JMP ERR490 611 000631 4541 POPA /RESTORE THE DATA POINTERS 612 000632 3040 DCA DATAPC+4 613 000633 4543 POPF 614 000634 0035 DATAPC+1 615 000635 5526 JMP I CCONT /DO NEXT STATEMENT 616 617 /*READ* STATEMENT 618 000636 4252 READ, JMS INREAD /DO THE READ LIST 619 000637 5247 JMP REAEND /END OF LIST; DONE 620 000640 1034 TAD DATAPC /GET LINE NUMBER OF DATA LIST 621 000641 4562 FIND /FIND ANOTHER DATA STATEMENT 622 000642 2371 KWDATA 623 000643 4547 ERR510, ERROR /OUT OF DATA 624 000644 3034 DCA DATAPC /SAVE NEW LINE NUMBER 625 000645 7340 L7777 /INDICATE REENTRY 626 000646 5236 JMP READ /USE NEW DATA 627 000647 1047 REAEND, TAD ERLINE /RESTORE PROPER LINE NUMBER 628 000650 3030 DCA LINENO 629 000651 5526 JMP I CCONT /DO NEXT STATEMENT 630 631 /THIS ROUTINE PROCESSES THE VARIABLE LIST OF THE INPUT AND READ 632 /STATEMENTS. 633 000652 0000 INREAD, 0 634 000653 7640 SZA CLA /REENTRY? 635 000654 5303 JMP INRMOD /YES: GO PROCESS THE DATA 636 000655 3031 INRVAR, DCA MODE 637 000656 4537 PUSHJ /GET A VARIABLE FROM LIST 638 000657 4400 GETVAR 639 000660 4540 PUSHF /SAVE PT1;CHAR;LINEPC 640 000661 0025 PT1 641 000662 4540 PUSHF /SAVE THE TEXT POINTERS 642 000663 0017 TEXTP 643 000664 4540 PUSHF /TRANSFER DATAPC+1 TO THE TEXT POINTERS 644 000665 0035 DATAPC+1 645 000666 4543 POPF 646 000667 0017 TEXTP 647 000670 1040 TAD DATAPC+4 648 000671 3026 DCA CHAR 649 000672 1031 TAD MODE /SAVE MODE WHERE IT WON'T BE DESTROYED BY A *FIND* 650 000673 3025 DCA PT1 651 000674 4567 TSTEND /MORE DATA AVAILABLE? 652 000675 5300 JMP INRDAT /YES: USE IT 653 000676 2252 ISZ INREAD /SET UP SKIP RETURN 654 000677 5652 JMP I INREAD /EXIT 655 000700 4557 INRDAT, TSTCOM /COMMA SEPARATOR? 656 000701 4547 ERR490, ERROR /NO: DATA TO INPUT OR READ IN IMPROPER FORM 657 000702 4533 GETC /SKIP OVER THE COMMA 658 000703 2025 INRMOD, ISZ PT1 /STRING OR NUMERIC DATA ITEM? 659 000704 5310 JMP INRNUM /NUMERIC 660 000705 4537 PUSHJ /STRING 661 000706 5206 QINP 662 000707 5312 JMP .+3 663 000710 4537 INRNUM, PUSHJ 664 000711 2612 EVAL 665 000712 1026 TAD CHAR /SAVE DATA TEXT POINTERS AT DATAPC+1 666 000713 3040 DCA DATAPC+4 667 000714 4540 PUSHF 668 000715 0017 TEXTP 669 000716 4543 POPF 670 000717 0035 DATAPC+1 671 000720 4543 POPF /RESTORE STUFF PERTAINING TO VARIABLE LIST 672 000721 0017 TEXTP 673 000722 4543 POPF 674 000723 0025 PT1 675 000724 4545 FLPUT /SET THE VARIABLE 676 000725 0065 ACX 677 000726 4567 TSTEND /END OF VARIABLE LIST? 678 000727 7410 SKP 679 000730 5652 JMP I INREAD /YES: DONE 680 000731 4557 TSTCOM /COMMA SEPARATOR? 681 000732 4547 ERR500, ERROR /NO: ILLEGAL SYNTAX IN INPUT OR READ 682 000733 4533 GETC /SKIP OVER THE COMMA 683 000734 5255 JMP INRVAR /GO DO THIS VARIABLE 684 /TEXT INITIALIZATION ROUTINES 685 000735 0000 INPACK, 0 686 000736 1046 TAD COMBUF 687 000737 3016 DCA AXIN 688 000740 3024 DCA XCTIN 689 000741 1376 TAD (ALINE0 690 000742 3041 DCA PACKND 691 000743 5735 JMP I INPACK 692 000744 0000 OTPACK, 0 693 000745 1046 TAD COMBUF 694 000746 3017 DCA AXOUT 695 000747 3021 DCA XCT 696 000750 3032 DCA SPACSW 697 IFNZRO PDLXR-15 /PDLXR IS ASSUMED TO BE AT LOC 15 698 000751 1111 TAD CCR /TAD (PDLXR 699 000752 3041 DCA PACKND 700 000753 4533 GETC 701 000754 5744 JMP I OTPACK 702 000755 4335 PAKLIN, JMS INPACK 703 000756 4453 READC 704 000757 4554 PACKC 705 000760 4556 TSTCCR 706 000761 5356 JMP .-3 707 000762 4554 PACKC /FINISH PACKING CR 708 000763 4344 JMS OTPACK 709 000764 5542 POPJ 710 711 /*PRINTC* ROUTINE 712 000765 0000 XPRNTC, 0 713 000766 7450 SNA /IF AC=0 THEN AC=CHAR 714 000767 1026 TAD CHAR 715 000770 6212 CIF 10 /BEST PART IS IN FIELD 1 716 000771 5345 JMP XPCF1 717 000772 5765 XPCF0, JMP I XPRNTC /FLD 1 RETURNS HERE; THIS EXITS *PRINTC* 718 000776 0045 PAGE 000777 7763 719 IFNZRO EDU250 < 720 /*OLD* COMMAND 721 001000 4537 OLD, PUSHJ 722 001001 3506 DTGNAM 723 001002 4306 JMS DTQ /GRAB THE TAPE 724 001003 6213 CIF CDF 10 725 001004 5247 JMP OLDF1 726 727 001005 1377 OLDF0, TAD (DTRC 728 001006 3053 DCA PREADC /*READC* NOW READS DECTAPE 729 001007 4550 UDF /*SCRATCH* USER'S PROGRAM 730 001010 3445 DCA I ALINE0 /NO PROGRAM TEXT 731 001011 7326 L0002 /SET END OF PROGRAM TEXT 732 001012 1045 TAD ALINE0 733 001013 3042 DCA BUFR 734 001014 1042 TAD STARTV /NO VARIABLES 735 001015 3043 DCA LASTV 736 001016 5776 JMP I (START /READ IN PROGRAM (OR BATCH STREAM??!!) 737 738 /*SAVE* COMMAND 739 001017 4547 ERRDOV, ERROR /DIRECTORY OVERFLOW DURING SAVE 740 741 001020 4537 SAVE, PUSHJ /GET FILENAME 742 001021 3506 DTGNAM 743 001022 4306 JMS DTQ /GRAB THE DECTAPE 744 001023 1045 TAD ALINE0 /ESTIMATE FINAL LENGTH OF FILE 745 001024 7041 CIA 746 001025 1042 TAD BUFR 747 001026 7010 RAR 748 001027 7002 BSW 749 001030 0375 AND (37 750 001031 7001 IAC 751 001032 6213 CIF CDF 10 752 001033 5321 JMP SAVEF1 753 754 001034 4547 ERRDSV, ERROR /FILENAME ALREADY EXISTS DURING SAVE 755 756 001035 3054 SAVF0, DCA PPRNTC /DECTAPE *PRINTC* 757 001036 4774 JMS I (GETLIM /ASSUMING CR IS NEXT 758 001037 4537 PUSHJ /NOW *LIST* 759 001040 2251 LIS2 760 001041 1373 TAD (232 /INSERT CONTROL/Z 761 001042 4454 PRINTC 762 001043 6213 CIF CDF 10 763 001044 5772 JMP I (SAV2F1 764 765 001045 4547 ERRDNR, ERROR /NO ROOM FOR OUTPUT FILE 766 767 /*CAT* (CATALOGUE) COMMAND 768 001046 4537 CATAL, PUSHJ /GET NEW FILE SPEC 769 001047 3506 DTGNAM 770 001050 4306 JMS DTQ /GET TAPE 771 001051 4565 FREE13 772 001052 7301 L0001 /FIRST DIRECTORY SEGMENT 773 001053 6213 CATGO, CIF CDF 10 774 001054 5260 JMP CATF1 775 776 001055 7041 CATF0, CIA /MAKE POSITIVE LENGTH 777 001056 4324 JMS ITPRNT /PRINT DECIMAL FILE LENGTH 778 001057 1111 TAD CCR /END LINE 779 001060 4454 PRINTC 780 001061 4565 FREE13 /FREE SPACE FOR NEXT LINE 781 001062 5253 JMP CATGO /DO NEXT DIRECTORY ENTRY 782 783 /DECTAPE *READC* 784 001063 0000 DTRC, 0 785 001064 6213 CIF CDF 10 786 001065 5213 JMP DTRCF1 787 001066 3026 DTRCF0, DCA CHAR /SAVE CHARACTER 788 001067 1371 TAD (-32 /CHECK FOR CONTROL/Z 789 001070 1026 TAD CHAR 790 001071 7640 SZA CLA 791 001072 5663 JMP I DTRC /NOT CONTROL/Z 792 793 /GET RID OF THE DECTAPE 794 001073 4770 DTDONE, JMS I (DTDQ /GET RID OF THE DECTAPE 795 001074 5767 JMP I (READY 796 797 /DECTAPE *PRINTC* 798 001075 0000 DTPC, 0 799 001076 7450 SNA 800 001077 1026 TAD CHAR /USE CHAR IF AC=0 801 001100 6213 DTPCLF, CIF CDF 10 802 001101 5232 JMP DTPCF1 803 001102 7640 DTPCF0, SZA CLA /DID WE OUTPUT A CR? 804 001103 5675 JMP I DTPC /NO, EXIT 805 001104 1116 TAD CLF /YES, NOW OUTPUT A LINE FEED (FOR OS/8) 806 001105 5300 JMP DTPCLF 807 808 /GET THE DECTAPE 809 001106 0000 DTQ, 0 810 001107 1131 TAD DTLOOK /FIND OUT WHO HAS TAPE NOW 811 001110 7640 SZA CLA /DOES ANYONE? 812 001111 5317 JMP DTQ1 /IN USE 813 001112 1111 TAD CCR /ITS FREE, RESET "QUEUE" PRIORITY 814 001113 3130 DCA DTQI 815 001114 1003 TAD LOOK /GIVE TAPE TO THIS USER 816 001115 3131 DCA DTLOOK 817 001116 5706 JMP I DTQ /EXIT 818 819 001117 2130 DTQ1, ISZ DTQI /NEXT LOWER PRIORITY 820 001120 1130 TAD DTQI /GET PRIORITY 821 001121 3403 DCA I LOOK /SET STATUS: NOT RUNNABLE WAITING FOR DECTAPE 822 001122 1306 TAD DTQ /RESTART ADDRESS 823 001123 5177 JMP NULL /DISMISS 824 > 825 826 /NEW *PRNTIT* ROUTINE 827 /ENTER WITH A NUMBER BETWEEN 1 AND 2047 IN THE AC. 828 /IT IS PRINTED AS AN UNSIGNED DECIMAL INTEGER. 829 /THIS ROUTINE PRINTS NO SPACES, AND ITS ONLY 830 /ARGUMENT IS THE VALUE PASSED IN THE AC 831 001124 0000 ITPRNT, 0 832 001125 3016 DCA AXIN /SAVE NUMBER 833 001126 3024 DCA XCTIN /SIGNIFICANT DIGITS 834 001127 1365 TAD LSTADR 835 001130 3023 DCA ADD /SUBTRACTION LIST POINTER 836 001131 1324 TAD ITPRNT /IN CASE SAVE COMMAND DISMISSES 837 001132 4536 PUSHA /REMEMBER RETURN ADDRESS 838 001133 3076 PRNT1, DCA T1 /SET DIGIT TO 0 839 001134 1016 PRNT2, TAD AXIN /GET NUMBER 840 001135 1423 TAD I ADD /SUBTRACT POWER OF TEN 841 001136 7510 SPA /DID IT FIT? 842 001137 5343 JMP PRNT3 /NO, FOUND THIS DIGIT 843 001140 3016 DCA AXIN /SAVE NEW NUMBER 844 001141 2076 ISZ T1 /BUMP DIGIT 845 001142 5334 JMP PRNT2 /STILL DOING THIS DIGIT 846 001143 7200 PRNT3, CLA 847 001144 1024 TAD XCTIN /GET SIGNIFIGANCE TESTER 848 001145 1076 TAD T1 /AND DIGIT 849 001146 7650 SNA CLA /BOTH ZERO? 850 001147 5354 JMP PRNT4 /YES: DO NOT PRINT THIS DIGIT 851 001150 1076 TAD T1 /GET DIGIT 852 001151 1366 TAD (60 /CONVERT TO ASCII 853 001152 4454 PRINTC /AND PRINT IT 854 001153 2024 ISZ XCTIN /ALL FURTHER DIGITS ARE SIGNIFICANT 855 001154 2023 PRNT4, ISZ ADD /NEXT POWER OF TEN 856 001155 1423 TAD I ADD /MORE DIGITS? 857 001156 7710 SPA CLA /LIST IS TERMINATED BY POSITIVE # 858 001157 5333 JMP PRNT1 /YES 859 001160 5542 POPJ /EXIT 860 861 DECIMAL 862 001161 6030 ITPLST, -1000 863 001162 7634 -100 864 001163 7766 -10 865 001164 7777 -1 866 OCTAL 867 IFNZRO ITPLST&4000 /ITPLST IS TERMINATED BY A POSITIVE NUMBER 868 001165 1161 LSTADR, ITPLST 869 001166 0060 PAGE 001167 0452 001170 3447 001171 7746 001172 1400 001173 0232 001174 2326 001175 0037 001176 0461 001177 1063 870 /*IF* COMMAND 871 001200 3031 IF, DCA MODE 872 001201 4537 PUSHJ /GET FIRST EXPRESSION 873 001202 2612 EVAL 874 001203 4561 COMMAN /CHECK RELATIONAL OPERATOR 875 001204 2412 KWRELS 876 001205 1377 TAD (IFSKPL /GET ASSOCIATED SKIP INST 877 001206 3076 DCA T1 878 001207 1476 TAD I T1 879 001210 7500 SMA /WAS THERE A SKIP? 880 001211 4547 ERR390, ERROR /NO: ILLEGAL RELATIONAL OPS 881 001212 3270 DCA IFSKP /PUT SKIP IN POSITION 882 001213 4540 PUSHF /SAVE FIRST VALUE 883 001214 0065 LACX, ACX 884 001215 4537 PUSHJ /EVALUATE SECOND VALUE 885 001216 2612 EVAL 886 001217 4561 COMMAN /CHECK THE "THEN" 887 001220 2346 KWTHEN 888 001221 7640 SZA CLA 889 001222 4547 ERR400, ERROR /"THEN" MISSING 890 001223 4543 POPF /GET FIRST ARG BACK 891 001224 7725 FLARG 892 001225 2031 ISZ MODE /STRING OR NUMERIC COMPARE? 893 001226 5300 JMP IFNUM /NUMERIC 894 001227 7346 L7775 /COMPARE MAX 3 WORDS 895 001230 3031 DCA MODE 896 001231 1214 TAD LACX /POINT TO SECOND ARG 897 001232 3076 DCA T1 898 001233 1106 TAD FLARGP /POINT TO FIRST ARG 899 001234 3077 DCA T2 900 001235 7301 IFS, L0001 /THE FOLLOWING GARBAGE DOES 901 001236 1476 TAD I T1 /COMPARES OF CHARACTER STRINGS. 902 001237 3100 DCA T3 /IT MUST RECOGNIZE THAT A 903 001240 1100 TAD T3 /CARRIAGE RETURN GOES BEFORE 904 001241 0125 AND C77 /ANY OTHER CHARACTER. 905 001242 7440 SZA 906 001243 2076 ISZ T1 907 001244 7650 SNA CLA 908 001245 1376 TAD (100 909 001246 1100 TAD T3 910 001247 3100 DCA T3 911 001250 7301 L0001 912 001251 1477 TAD I T2 913 001252 3101 DCA CNTR 914 001253 1101 TAD CNTR 915 001254 0125 AND C77 916 001255 7440 SZA 917 001256 2077 ISZ T2 918 001257 7650 SNA CLA 919 001260 1376 TAD (100 920 001261 1101 TAD CNTR 921 001262 7161 STL CIA 922 001263 1100 TAD T3 923 001264 7440 SZA 924 001265 5270 JMP IFSKP /A DIFFERENCE! COMPARE DONE 925 001266 2031 ISZ MODE /DONE 3 WORDS? 926 001267 5235 JMP IFS /NO, KEEP COMPARING 927 001270 7402 IFSKP, HLT /COMPARE THE ARGS 928 001271 4552 TESTN /CONDITION TRUE 929 001272 5275 JMP REM /CONDITION FALSE 930 001273 5775 JMP I (IFTRUE /EXECUTE STATEMENT AFTER "THEN" 931 001274 5774 JMP I (GOTO /USE LINE NUMBER AFTER "THEN" 932 933 001275 4563 REM, GETNXT /GET NEXT PROGRAM LINE 934 001276 5773 JMP I (READY /OUT OF TEXT 935 001277 5772 JMP I (RUN4 /EXECUTE LINE 936 937 001300 4771 IFNUM, JMS I (FFSUB /COMPARE NUMERIC ARGS 938 001301 7725 FLARG 939 001302 1066 TAD ACH /GET HIGH ORDER DIFFERENCE 940 001303 7104 CLL RAL /MAKE COMPATABLE WITH STRING MODE 941 001304 7450 SNA /IF MAGNITUDE BITS = 0 942 001305 1067 TAD ACLO /THEN LOOK AT LOW ORDER TOO 943 001306 5270 JMP IFSKP /NOW DO COMMON TEST 944 /*FREE2* ROUTINE 945 001307 0000 XFREE2, 0 946 001310 1370 TAD (-54 /56(8) CHARACTERS IS A FULL BUFFER 947 001311 6211 XFREET, CDF 10 948 001312 1406 TAD I DBFTC /ADD CHARACTER COUNT 949 001313 6201 CDF 0 950 001314 7710 SPA CLA /ENOUGH FREE SPACES? 951 001315 5707 JMP I XFREE2 952 001316 7332 L2000 /SET OUTPUT WAIT 953 001317 3403 DCA I LOOK 954 001320 1307 TAD XFREE2 /RESTART ADDRESS 955 001321 5177 JMP NULL /GO AWAY, CONFIDANT WE WILL COME BACK 956 957 /*FREE13* ROUTINE 958 001322 0000 XFREE3, 0 959 001323 1322 TAD XFREE3 960 001324 3307 C3XXX, DCA XFREE2 961 001325 1367 TAD (-41 962 001326 5311 JMP XFREET 963 964 IFNZRO TD8E < 965 /SPECIAL CODE FOR DTTCON 966 DTT3, TAD C3XXX /AC=3000, BITS 4-11 ARE IRRELEVANT 967 TAD DEV /SELECT PROPER DRIVE 968 SDLC /START UP, IN REVERSE 969 CLA IAC BSW 970 DCA I DTLOOK 971 TAD (DTT6 972 JMP NULL 973 974 DTT4, DCA I DTLOOK 975 ION 976 DTT5, JMP I (NULL4 977 978 DTT6, CIF CDF 10 979 JMP DTTDON 980 > 981 982 IFNZRO RX8E < 983 001327 0000 RXF0DW, 0 /SUBR TO DISMISS UNTIL DONE FLAG COMES UP 984 001330 7203 CLA IAC BSW /AC=100 985 001331 3531 DCA I DTLOOK /PUT JOB WITH RX8E IN I/O WAIT 986 001332 1366 TAD (RXF0RN /START UP LATER AT RXF0RN 987 001333 5177 JMP NULL /RUN SOMEONE ELSE 988 989 001334 6213 RXF0RN, CIF CDF 10 /DONE FLAG WAS UP 990 001335 5727 JMP I RXF0DW /RETURN (TO FIELD 1 SERVICE) 991 > 992 993 IFNZRO EDU250 < 994 001336 4547 ERRDT, ERROR /READ/WRITE ERROR 995 996 /*UNSAVE* COMMAND 997 001337 4537 UNSAVE, PUSHJ 998 001340 3506 DTGNAM 999 001341 4765 JMS I (DTQ /GRAB THE DECTAPE 1000 001342 6213 CIF CDF 10 1001 001343 5213 JMP UNSF1 1002 > 1003 001365 1106 PAGE 001366 1334 001367 7737 001370 7724 001371 6726 001372 2517 001373 0452 001374 2534 001375 2520 001376 0100 001377 7713 1004 /*LET* AND *FOR* COMMANDS 1005 001400 7340 FOR, L7777 1006 001401 3345 LET, DCA FOR1 /SAVE DETERMINATOR 1007 001402 4537 PUSHJ /GET VARIABLE 1008 001403 4400 GETVAR 1009 001404 7650 SNA CLA /WAS FUNCTION!?! 1010 001405 1026 TAD CHAR 1011 001406 1350 TAD MEQL 1012 001407 7640 SZA CLA 1013 001410 4547 ERR410, ERROR /NO "=" 1014 001411 1030 LET2, TAD LINENO 1015 001412 3347 DCA FOR6 /SAVE LINE NUMBER OF LET STMNT 1016 001413 4540 PUSHF /SAVE ADD,XCTIN,PT1 1017 001414 0023 ADD 1018 001415 4537 PUSHJ /GET VALUE 1019 001416 2611 EVAL-1 1020 001417 4543 POPF 1021 001420 0023 ADD 1022 001421 4545 FLPUT /SET VARIABLE 1023 001422 7725 FLARG 1024 001423 7340 L7777 /COUNT BACK FOR SAFETY 1025 001424 1017 TAD AXOUT 1026 001425 3346 DCA FOR5 1027 001426 2345 ISZ FOR1 /WHICH COMMAND? 1028 001427 5316 JMP LET1 /LET COMMAND 1029 001430 1023 TAD ADD 1030 001431 7710 SPA CLA 1031 001432 4547 ERR420, ERROR /SUBSCRIPTED 1032 001433 4561 COMMAN /CHECK "TO" 1033 001434 2352 KWTO 1034 001435 7640 SZA CLA 1035 001436 5335 JMP ERR430 /NOT *TO* 1036 001437 1025 TAD PT1 1037 001440 7041 CIA 1038 001441 3345 DCA FOR1 /SAVE POINTER 1039 001442 4537 PUSHJ /GET LIMIT 1040 001443 2612 EVAL 1041 001444 4540 PUSHF /SAVE LIMIT 1042 001445 7725 FLARG 1043 001446 4567 TSTEND 1044 001447 5332 JMP FOR2 /GET INCREMENT 1045 001450 4540 PUSHF /INCREMENT IS ONE 1046 001451 5500 ONE 1047 001452 1030 FOR3, TAD LINENO /START LOOKING FROM HERE DOWN 1048 001453 7410 SKP 1049 001454 4541 FOR4, POPA 1050 001455 4562 FIND /FIND A *NEXT* STATEMENT 1051 001456 2365 KWNEXT 1052 001457 4547 ERR440, ERROR /OUT OF TEXT 1053 001460 4536 PUSHA /SAVE FOR RESTART 1054 001461 4560 TSTALP 1055 001462 5254 JMP FOR4 1056 001463 4537 PUSHJ /GET VARIABLE 1057 001464 4400 GETVAR 1058 001465 7650 SNA CLA /NO SECOND CHANCE ON FUNCTION 1059 001466 1025 TAD PT1 1060 001467 1345 TAD FOR1 1061 001470 7640 SZA CLA 1062 001471 5254 JMP FOR4 /LOOP 1063 001472 2015 ISZ PDLXR /DUMP RESTART ADDRESS 1064 1065 001473 4556 TSTCCR 1066 001474 5731 JMP I FOR2-1 /WE MUST CHECK NOW, BEFORE INITIALIZATION, OR WE MIGHT 1067 /WIPE OUT HIS PROGRAM [AND THE SYSTEM?] 1068 1069 001475 1347 TAD FOR6 1070 001476 4550 UDF 1071 001477 3417 DCA I AXOUT /SET TEXT AND LINE POINTERS 1072 001500 1346 TAD FOR5 1073 001501 3417 DCA I AXOUT /SET POINTER 1074 001502 6201 CDF 1075 001503 4543 POPF /GET INCREMENT 1076 001504 7725 FLARG 1077 001505 1017 TAD AXOUT 1078 001506 4545 FLPUT /PUT INCREMENT 1079 001507 7725 FLARG 1080 001510 4543 POPF /GET LIMIT 1081 001511 7725 FLARG 1082 001512 7325 L0003 1083 001513 1017 TAD AXOUT 1084 001514 4545 FLPUT /SET LIMIT 1085 001515 7725 FLARG 1086 001516 1347 LET1, TAD FOR6 1087 001517 3030 DCA LINENO /SET LINE POINTER 1088 001520 4567 TSTEND 1089 001521 4547 ERR450, ERROR /JUNK 1090 001522 4564 FINDLN /FIND US AGAIN 1091 001523 0000 0 1092 001524 1346 TAD FOR5 1093 001525 3017 DCA AXOUT /BACK WHERE WE WERE 1094 001526 3026 DCA CHAR /GETMOR WILL TAKE CARE OF THIS 1095 001527 3021 DCA XCT 1096 001530 5526 JMP I CCONT 1097 001531 2404 ERR460 /POINTER TO *NEXT* ERROR 1098 1099 001532 4561 FOR2, COMMAN /CHECK "STEP" 1100 001533 2355 KWSTEP 1101 001534 7640 SZA CLA 1102 001535 4547 ERR430, ERROR /NOT *STEP* 1103 001536 4537 PUSHJ /GET INCREMENT 1104 001537 2612 EVAL 1105 001540 4540 PUSHF /SAVE INCREMENT 1106 001541 7725 FLARG 1107 001542 4567 TSTEND 1108 001543 5335 JMP FOR2+3 /JUNK 1109 001544 5252 JMP FOR3 1110 1111 001545 0000 FOR1, 0 1112 001546 0000 FOR5, 0 /AXOUT SAVE REG 1113 001547 0000 FOR6, 0 /LINEPC SAVE REG 1114 1115 1116 001550 7703 MEQL, -75 /-EQUALS 1117 1118 / 1119 /NEGATE FAC 1120 / 1121 001551 0000 FFNEG, 0 1122 001552 1067 TAD ACLO /GET LOW ORDER FAC 1123 001553 7141 CLL CMA IAC /NEGATE IT 1124 001554 3067 DCA ACLO /STORE BACK 1125 001555 7024 CML RAL /ADJUST OVERFLOW BIT AND 1126 001556 1066 TAD ACH /PROPAGATE CARRY-GET HI ORDER 1127 001557 7141 CLL CMA IAC /NEGATE IT 1128 001560 3066 DCA ACH /STORE BACK 1129 001561 5751 JMP I FFNEG 1130 1131 / 1132 /NEGATE OPERAND 1133 / 1134 001562 0000 OPNEG, 0 1135 001563 1072 TAD OPL /GET LOW ORDER 1136 001564 7141 CLL CMA IAC /NEGATE AND STORE BACK 1137 001565 3072 DCA OPL 1138 001566 7024 CML RAL /PROPAGATE CARRY 1139 001567 1071 TAD OPH /GET HI ORDER 1140 001570 7141 CLL CMA IAC /NEGATE AND STORE BACK 1141 001571 3071 DCA OPH 1142 001572 5762 JMP I OPNEG 1143 1144 /*POPA* ROUTINE 1145 001573 0000 XPOPA, 0 1146 001574 4550 UDF 1147 001575 1415 TAD I PDLXR 1148 001576 6201 CDF 1149 001577 5773 JMP I XPOPA 1150 PAGE 1151 /*DELETE* ROUTINE 1152 001600 0000 XDELET, 0 1153 001601 4564 FINDLN /FIND THE LINE 1154 001602 5600 JMP I XDELET /NOT THERE - EXIT 1155 001603 2032 ISZ SPACSW 1156 001604 4533 GETC 1157 001605 4556 TSTCCR /GO TO END OF LINE 1158 001606 5204 JMP .-2 1159 001607 1017 TAD AXOUT 1160 001610 7040 CMA 1161 001611 1027 TAD LINEPC 1162 001612 4536 PUSHA /SAVE COUNT 1163 001613 1027 TAD LINEPC 1164 001614 7001 IAC 1165 001615 3017 DCA AXOUT /TO UNPACK 1166 001616 3021 DCA XCT 1167 001617 4537 PUSHJ 1168 001620 4351 ENDFND /GET LAST COMMAND HERE 1169 001621 7650 SNA CLA 1170 001622 1254 TAD MN10 1171 001623 4541 POPA 1172 001624 3100 DCA T3 /CORRECTED COUNT 1173 001625 1027 TAD LINEPC 1174 001626 7041 CIA 1175 001627 1045 TAD ALINE0 1176 001630 7650 SNA CLA 1177 001631 5600 JMP I XDELET /NOT LINE0 1178 001632 4550 UDF 1179 001633 1427 TAD I LINEPC /GET POINTER 1180 001634 3431 DCA I LASTLN /REMOVE LINE 1181 001635 1045 TAD ALINE0 1182 001636 3077 XDEL3, DCA T2 /CURRENT LINE 1183 001637 1477 TAD I T2 1184 001640 7450 SNA 1185 001641 5255 JMP XDEL2 /OUT OF TEXT 1186 001642 3076 DCA T1 1187 001643 1027 TAD LINEPC 1188 001644 7141 CLL CIA 1189 001645 1076 TAD T1 1190 001646 7630 SZL CLA 1191 001647 1100 TAD T3 /CORRECT LINE 1192 001650 1076 TAD T1 1193 001651 3477 DCA I T2 1194 001652 1076 TAD T1 1195 001653 5236 JMP XDEL3 1196 1197 001654 7770 MN10, -10 1198 001655 7340 PERR,XDEL2, L7777 1199 001656 1027 TAD LINEPC 1200 001657 3010 DCA XREG 1201 001660 1100 TAD T3 1202 001661 7040 CMA 1203 001662 1027 TAD LINEPC 1204 001663 3017 DCA AXOUT 1205 001664 1100 TAD T3 1206 001665 1042 TAD BUFR 1207 001666 3042 DCA BUFR 1208 001667 1016 TAD AXIN 1209 001670 7040 CMA 1210 001671 1017 TAD AXOUT 1211 001672 3076 DCA T1 1212 001673 1100 TAD T3 1213 001674 1016 TAD AXIN 1214 001675 3016 DCA AXIN 1215 001676 1417 TAD I AXOUT 1216 001677 3410 DCA I XREG /MOVE TEXT 1217 001700 2076 ISZ T1 1218 001701 5276 JMP .-3 1219 001702 5201 JMP XDELET+1 1220 /PUSH ROUTINES 1221 001703 0000 XPUSHA, 0 1222 001704 3100 DCA T3 1223 001705 7340 L7777 /BACK 1 1224 001706 4324 JMS PCHK 1225 001707 1100 TAD T3 1226 001710 4550 UDF 1227 001711 3415 DCA I PDLXR /PUSH IT 1228 001712 6201 CDF 1229 001713 7340 L7777 1230 001714 4324 JMS PCHK /BACK AGAIN 1231 001715 5703 JMP I XPUSHA 1232 1233 001716 0000 XPUSHJ, 0 1234 001717 1716 TAD I XPUSHJ /GET SEND ADDRESS 1235 001720 3303 DCA XPUSHA 1236 001721 1316 TAD XPUSHJ /GET RETURN ADDRESS 1237 001722 7001 IAC 1238 001723 5304 JMP XPUSHA+1 1239 1240 001724 0000 PCHK, 0 1241 001725 1015 TAD PDLXR 1242 001726 3015 DCA PDLXR 1243 001727 1043 TAD LASTV 1244 001730 7141 CLL CIA 1245 001731 1015 TAD PDLXR 1246 001732 7620 SNL CLA /IS PDLXR>=LASTV? 1247 001733 5777 JMP I (ERR100-2 /NO: NO ROOM IN PDL 1248 001734 5724 JMP I PCHK /YES: OK, IT'S SET UP, EXIT 1249 1250 /*PUSHF* ROUTINE 1251 001735 0000 XPUSHF, 0 1252 001736 7340 L7777 1253 001737 1735 TAD I XPUSHF 1254 001740 3010 DCA XREG /POINT TO DATA 1255 001741 7346 L7775 1256 001742 4324 JMS PCHK /BACK 3 1257 001743 7346 L7775 1258 001744 3100 DCA T3 1259 001745 1410 TAD I XREG 1260 001746 4550 UDF 1261 001747 3415 DCA I PDLXR /PUSH DATA 1262 001750 6201 CDF 1263 001751 2100 ISZ T3 1264 001752 5345 JMP .-5 1265 001753 7346 L7775 1266 001754 4324 JMS PCHK /BACK 3 AGAIN 1267 001755 2335 ISZ XPUSHF 1268 001756 5735 JMP I XPUSHF 1269 1270 /*COMMAN* ROUTINE 1271 /TRANSFER TO XCOM IN FIELD 1 1272 001757 0000 F0CMAN, 0 1273 001760 1757 TAD I F0CMAN 1274 001761 2357 ISZ F0CMAN 1275 001762 6212 CIF 10 1276 001763 5776 JMP I (XCOM 1277 001764 5757 F0CMN1, JMP I F0CMAN /EXIT 1278 1279 /THIS CALLS *GETC* FROM FIELD 1 FOR XCOM 1280 001765 4533 F0GETC, GETC 1281 001766 6213 CIF CDF 10 1282 001767 5775 JMP I (XCOMF1 1283 1284 /*RANDOMIZE* STATEMENT 1285 001770 1051 RANDOM, TAD FRNDX+1 1286 001771 1774 TAD I (INTCNT /RANDOMIZE FRNDX 1287 001772 3051 DCA FRNDX+1 /REPLACE 1288 001773 5526 JMP I CCONT 1289 001774 0326 PAGE 001775 2216 001776 2200 001777 4476 1290 /STRING FUNCTIONS!!! 1291 /MID FUNCTION: MID(A$,P,L) 1292 002000 0000 MID, 0 1293 002001 4247 JMS SSR1 /TAKE CARE OF 1ST ARG & TEST FOR 2ND 1294 002002 4537 PUSHJ /GET SECOND ARG 1295 002003 2611 EVAL-1 1296 002004 4507 JMS I INTEGE /CONVERT TO 1 WORD INTEGER IN AC 1297 002005 7041 CIA /AC=-AC 1298 002006 4536 PUSHA /SAVE SECOND ARGUMENT 1299 002007 4557 TSTCOM /IS THIRD ARGUMENT THERE? 1300 002010 5255 JMP ERRSAR /NO: MISSING ARG TO STRING FUNCTION 1301 002011 4537 PUSHJ /GET 3RD ARG 1302 002012 2611 EVAL-1 1303 002013 4507 JMS I INTEGE /AND CONVERT TO 1 WORD INTEGER 1304 002014 7040 CMA /AC=-AC-1 1305 002015 3076 DCA T1 /SAVE IN T1 1306 002016 4541 POPA /GET SECOND ARG 1307 002017 3077 DCA T2 /STORE IN T2 1308 002020 4257 JMS SSR2 /SET UP PACKING AND UNPACKING ON STACK 1309 002021 4533 MID2, GETC /GET NEXT CHAR OF STRING ARG 1310 002022 2077 ISZ T2 /SHOULD WE WASTE A CHAR? 1311 002023 5244 JMP MID1 /YES 1312 002024 2076 MID5, ISZ T1 /END OF RESULT STRING? 1313 002025 5236 JMP MID3 /NOT YET 1314 002026 1111 MID4, TAD CCR /SET UP TO PACK A CR 1315 002027 3026 DCA CHAR 1316 002030 4474 MID6, JMS I CPACK /INDICATE END OF RESULT STRING 1317 002031 4274 JMS SSR3 /RESTORE TEXT POINTERS & OTHER GARBAGE 1318 002032 4777 SFNEND, JMS I (PARTST /CHECK PARENTHESIS MATCH & CLEAN UP STACK 1319 002033 2015 ISZ PDLXR /SKIP PAST SAVED MODE 1320 002034 7340 L7777 /AC INDICATES STRING MODE 1321 002035 5776 JMP I (ENDFUN+2 /GO SET MODE AND FINISH FUNCTION PROCESSING 1322 002036 4556 MID3, TSTCCR /END OF RESULT STRING? 1323 002037 7410 SKP 1324 002040 5230 JMP MID6 /YES, SO END IT 1325 002041 4474 JMS I CPACK /PACK CHAR INTO RESULT STRING 1326 002042 4533 GETC /GET NEXT CHAR OF ARGUMENT 1327 002043 5224 JMP MID5 /GO DECIDE WHAT TO DO WITH IT 1328 002044 4556 MID1, TSTCCR /END OF ARG WHILE STILL WASTING CHARS? 1329 002045 5221 JMP MID2 /NO, CONTINUE... 1330 002046 4547 ERRSOV, ERROR /YES: STRING OVERFLOW 1331 1332 /STRING SUBROUTINE 1 1333 002047 0000 SSR1, 0 1334 002050 7340 L7777 1335 002051 4536 PUSHA /END OF STRING MARKER FOR 6 CHAR STRINGS 1336 002052 4540 PUSHF /SAVE FIRST ARG ON STACK 1337 002053 0065 ACX 1338 002054 4557 TSTCOM /IS 2ND ARG THERE? 1339 002055 4547 ERRSAR, ERROR /NO: MISSING ARG TO STRING FUNCTION 1340 002056 5647 JMP I SSR1 /EXIT 1341 1342 /STRING SUBROUTINE 2 1343 002057 0000 SSR2, 0 1344 002060 1015 TAD PDLXR 1345 002061 3016 DCA AXIN /SET UP TO PACK ONTO STACK 1346 002062 3024 DCA XCTIN /HOUSEKEEPING 1347 002063 4540 PUSHF /SAVE TEXT POINTERS 1348 002064 0017 TEXTP 1349 002065 1026 TAD CHAR 1350 002066 4536 PUSHA 1351 002067 1016 TAD AXIN /STILL POINTER TO STRING ARG 1352 002070 3017 DCA AXOUT /SET UP TO UNPACK FROM STACK 1353 002071 3021 DCA XCT /HOUSEKEEPING 1354 002072 2032 ISZ SPACSW /KEEP SPACES 1355 002073 5657 JMP I SSR2 /EXIT 1356 1357 /STRING SUBROUTINE 3 1358 002074 0000 SSR3, 0 1359 002075 4474 JMS I CPACK /PACK AN EXTRA CR JUST TO BE SURE 1360 002076 4541 POPA /RESTORE TEXT POINTERS 1361 002077 3026 DCA CHAR 1362 002100 4543 POPF 1363 002101 0017 TEXTP 1364 002102 4543 POPF /PUT RESULT OF FUNCTION IN FAC 1365 002103 0065 ACX 1366 002104 2015 ISZ PDLXR /GET RID OF THE 2 CR'S 1367 002105 3032 DCA SPACSW /IGNORE SPACES 1368 002106 5674 JMP I SSR3 /EXIT 1369 1370 /CONCATENATE FUNCTION: CAT(A$,B$) 1371 002107 0000 CAT, 0 1372 002110 4247 JMS SSR1 /TAKE CARE OF STRING ARG 1373 002111 4537 PUSHJ /GET 2ND STRING ARG 1374 002112 2611 EVAL-1 1375 002113 4543 POPF /CLEAR STACK 1376 002114 7725 FLARG 1377 002115 4540 PUSHF /PUSH STUFF ONTO STACK 1378 002116 0065 ACX 1379 002117 7340 L7777 /2 CR'S 1380 002120 4536 PUSHA /ON STACK 1381 002121 4540 PUSHF /STACK CONTAINS: ARG1,CR CR,ARG2,CR CR 1382 002122 7725 FLARG 1383 002123 4257 JMS SSR2 /SAVE TEXT, SET UP PACKING & UNPACKING 1384 002124 7410 SKP /NO PACKC FIRST TIME THRU 1385 002125 4474 JMS I CPACK /PACK CHAR INTO RESULT STRING 1386 002126 4533 GETC /GET NEXT CHAR OF FIRST STRING ARG 1387 002127 4556 TSTCCR /END OF 1ST ARG? 1388 002130 5325 JMP .-3 /GO PACK & CONTINUE 1389 002131 1015 TAD PDLXR 1390 002132 1375 TAD (10 /CALCULATE ADDR OF 2ND STRING ARG 1391 002133 3017 DCA AXOUT /SET UP TO UNPACK IT 1392 002134 3021 DCA XCT 1393 002135 4533 GETC /GET NEXT CHAR OF 2ND STRING ARG 1394 002136 4474 JMS I CPACK /PACK CHAR INTO RESULT STRING 1395 002137 4556 TSTCCR /END OF 2ND ARG? 1396 002140 5335 JMP .-3 /NO: CONTINUE TRANSFERRING 2ND ARG 1397 002141 4274 JMS SSR3 /RESTORE TEXT 1398 002142 7307 L0004 /CLEAN UP STACK 1399 002143 1015 TAD PDLXR 1400 002144 3015 DCA PDLXR 1401 002145 5232 JMP SFNEND /GO DO SPECIAL STRING FUNCTION END 1402 1403 /LENGTH FUNCTION: LEN(A$) 1404 002146 0000 LEN, 0 1405 002147 1374 TAD (ACX-1 1406 002150 3010 DCA XREG /POINTER TO ARGUMENT 1407 002151 1122 TAD M6 1408 002152 3031 DCA MODE /MULTIPURPOSE COUNTER 1409 002153 7101 LEN1, CLL IAC 1410 002154 1125 TAD C77 /L & AC = 00100 1411 002155 1410 TAD I XREG 1412 002156 7430 SZL /LINK=1 IF LEFT HALF WAS 77 (A CR) 1413 002157 5367 JMP LEN2 /END OF STRING, DONE COUNTING 1414 002160 2031 ISZ MODE /COUNT CHARACTOR 1415 002161 7001 IAC /IF RIGHT HALF OF AC WAS 77, IS NOW 00. 1416 002162 0125 AND C77 /LOOK AT RIGHT HALF OF AC ONLY 1417 002163 7650 SNA CLA /WAS CHAR A CR? 1418 002164 5367 JMP LEN2 /YES 1419 002165 2031 ISZ MODE /NO: COUNT THE CHARACTOR 1420 002166 5353 JMP LEN1 /NOT YET AT MAXIMUM, CONTINUE 1421 002167 7327 LEN2, L0006 /OFFSET TO PROPERLY ADJUST CHAR COUNT 1422 002170 1031 TAD MODE /AC=LENGTH OF STRING ARGUMENT 1423 002171 4773 JMS I (FFLOAT /CONVERT TO FLOATING POINT 1424 002172 5746 JMP I LEN /EXIT 1425 002173 6164 PAGE 002174 0064 002175 0010 002176 4764 002177 5000 1426 /*EDIT* COMMAND 1427 002200 4555 EDIT, GETLN 1428 002201 4556 TSTCCR 1429 002202 5204 JMP ERR001 1430 002203 4564 FINDLN 1431 002204 4547 ERR001, ERROR 1432 002205 2032 ISZ SPACSW 1433 002206 4777 JMS I (INPACK 1434 002207 7325 EDTBEL, L0003 1435 002210 6211 CDF 10 1436 002211 3404 DCA I DBFKS2 1437 002212 4453 READC 1438 002213 6211 CDF 10 1439 002214 3404 DCA I DBFKS2 1440 002215 1026 TAD CHAR 1441 002216 7041 CIA 1442 002217 3025 EDTLF, DCA PT1 1443 002220 4566 EDTFF, FREE2 1444 002221 4533 GETC 1445 002222 4454 PRINTC 1446 002223 1025 TAD PT1 1447 002224 1026 TAD CHAR 1448 002225 7650 SNA CLA 1449 002226 5235 JMP EDT2 1450 002227 4554 EDTCR, PACKC 1451 002230 4556 TSTCCR 1452 002231 5220 JMP EDTFF 1453 002232 4554 PACKC 1454 002233 4776 JMS I (OTPACK 1455 002234 5775 JMP I (SRETN 1456 1457 002235 4554 EDT2, PACKC 1458 002236 4453 READC 1459 002237 4534 SORTJ 1460 002240 2441 EDITL-1 1461 002241 7774 EDITL2-EDITL 1462 002242 5235 JMP EDT2 1463 1464 /*LIST* COMMAND 1465 002243 4326 LIST, JMS GETLIM 1466 002244 1374 TAD (-110 1467 002245 3041 DCA PACKND 1468 002246 4537 PUSHJ 1469 002247 2251 LIS2 1470 002250 5735 JMP I CREADY 1471 1472 002251 2032 LIS2, ISZ SPACSW 1473 002252 4566 FREE2 1474 002253 1111 TAD CCR 1475 002254 4454 PRINTC 1476 002255 4355 LIS3, JMS GETLIN 1477 002256 5542 POPJ /OUT OF TEXT 1478 002257 1041 TAD PACKND 1479 002260 6211 CDF 10 1480 002261 3405 DCA I DBFTS2 /SET TTY COLUMN COUNT 1481 002262 4565 FREE13 1482 002263 1030 TAD LINENO 1483 002264 4773 JMS I (ITPRNT 1484 002265 1124 TAD C40 1485 002266 4454 PRINTC 1486 002267 4533 LIS4, GETC 1487 002270 4566 FREE2 1488 002271 4454 PRINTC 1489 002272 4556 TSTCCR 1490 002273 5267 JMP LIS4 1491 002274 5255 JMP LIS3 1492 1493 /*PUNCH* COMMAND 1494 002275 4326 PUNCH, JMS GETLIM 1495 002276 4537 PUSHJ 1496 002277 2305 PUNCH2 1497 002300 4537 PUSHJ /PUNCH2 SET PACKND UP 1498 002301 2251 LIS2 1499 002302 4537 PUSHJ 1500 002303 2305 PUNCH2 1501 002304 5772 JMP I (START /DON'T PRINT "READY" 1502 1503 002305 1117 PUNCH2, TAD M100 1504 002306 3041 DCA PACKND 1505 002307 4566 PUNCH3, FREE2 1506 002310 6212 CIF 10 1507 002311 4546 PRINTX 1508 002312 2041 ISZ PACKND 1509 002313 5307 JMP PUNCH3 1510 002314 5542 POPJ 1511 1512 /*DELETE* COMMAND 1513 002315 4326 DELETE, JMS GETLIM /GET LYMITS 1514 002316 1042 TAD BUFR 1515 002317 3016 DCA AXIN 1516 002320 4355 JMS GETLIN /GET A LINE 1517 002321 5735 JMP I CREADY /ALL DONE 1518 002322 4771 JMS I (XDELET /DELETE IT 1519 002323 1031 TAD LASTLN /REARRANGE POINTERS 1520 002324 3027 DCA LINEPC 1521 002325 5320 JMP .-5 /DO NEXT LINE 1522 1523 002326 0000 GETLIM, 0 /GET LINE NUMBER LIMITS 1524 002327 7340 L7777 1525 002330 3025 DCA PT1 1526 002331 3030 DCA LINENO 1527 002332 4567 TSTEND 1528 002333 5341 JMP GLM2 1529 002334 4564 GLMFND, FINDLN /FIND THE FIRST LINE 1530 IFNZRO READY&7000 /MUST BE EFFECTIVE NOP 1531 002335 0452 CREADY, READY 1532 002336 1031 TAD LASTLN /POINT TO LINE BEFORE 1533 002337 3027 DCA LINEPC 1534 002340 5726 JMP I GETLIM 1535 1536 002341 4555 GLM2, GETLN 1537 002342 1030 TAD LINENO 1538 002343 3025 DCA PT1 1539 002344 4557 TSTCOM 1540 002345 5352 JMP GLM3 1541 002346 4533 GETC 1542 002347 4770 JMS I (GETNUM /GET NUMBER IN OPX, NOT LINENO 1543 002350 1070 TAD OPX 1544 002351 3025 DCA PT1 1545 002352 4567 GLM3, TSTEND 1546 002353 5204 JMP ERR001 1547 002354 5334 JMP GLMFND 1548 1549 002355 0000 GETLIN, 0 /GET NEXT LINE WITHIN LIMITS 1550 002356 4563 GETNXT 1551 002357 5755 JMP I GETLIN /NO NEXT LINE 1552 002360 1025 TAD PT1 /BIGGEST LINE NUMBER 1553 002361 7161 STL CIA 1554 002362 1030 TAD LINENO /CURRENT LINE NUMBER 1555 002363 7670 SZL SNA CLA 1556 002364 2355 ISZ GETLIN /SKIP RETURN: ANOTHER LINE AVAILABLE 1557 002365 5755 JMP I GETLIN 1558 1559 002370 7304 PAGE 002371 1600 002372 0461 002373 1124 002374 7670 002375 0475 002376 0744 002377 0735 1560 /*NEXT* COMMAND 1561 002400 4537 NEXT, PUSHJ /GET VARIABLE 1562 002401 4400 GETVAR 1563 002402 7650 SNA CLA /WAS FUNCTION? 1564 002403 4556 TSTCCR /*NEXT* !MUST! BE LAST ON LINE 1565 002404 4547 ERR460, ERROR 1566 002405 4777 JMS I (FFGET 1567 002406 7725 FLARG 1568 002407 4550 UDF 1569 002410 1417 TAD I AXOUT 1570 002411 7450 SNA 1571 002412 4547 ERR470, ERROR /NEXT NOT INITIALIZED 1572 002413 3077 DCA T2 1573 002414 1417 TAD I AXOUT 1574 002415 6201 CDF 1575 002416 3342 DCA RUN9 /SAVE TEXT POINTER TO FOR STMNT 1576 002417 1017 TAD AXOUT 1577 002420 4544 FLGET /GET INCREMENT 1578 002421 0070 OPX 1579 002422 1071 TAD OPH 1580 002423 7700 NEXT3, SMA CLA 1581 002424 1256 TAD C50 /POSITIVE INCREMENT 1582 002425 1223 TAD NEXT3 /NEGATIVE INCREMENT 1583 002426 3242 DCA NEXT1 /SET LIMIT TEST INSTRUCTION 1584 002427 4776 JMS I (FFADD 1585 002430 0070 OPX 1586 002431 4545 FLPUT /SET VARIABLE 1587 002432 0065 ACX 1588 002433 7325 L0003 1589 002434 1017 TAD AXOUT 1590 002435 4544 FLGET /GET LIMIT 1591 002436 7725 FLARG 1592 002437 4775 JMS I (FFSUB 1593 002440 7725 FLARG 1594 002441 1066 TAD ACH 1595 002442 7402 NEXT1, HLT /SKIP IF DONE 1596 002443 5253 JMP NEXT2 /NOT DONE 1597 002444 7340 L7777 1598 002445 1017 TAD AXOUT 1599 002446 3076 DCA T1 1600 002447 4550 UDF 1601 002450 3476 DCA I T1 /NOT INITIALIZED NOW 1602 002451 6201 CDF 1603 002452 5315 JMP CONT 1604 1605 002453 1077 NEXT2, TAD T2 1606 002454 3030 DCA LINENO 1607 002455 4564 FINDLN 1608 002456 0050 C50, 50 1609 002457 1342 TAD RUN9 /GET TEXT POINTER TO FOR STMNT 1610 002460 3017 DCA AXOUT 1611 002461 3021 DCA XCT 1612 002462 3026 DCA CHAR 1613 002463 5315 JMP CONT 1614 /*RUN* COMMAND 1615 002464 1042 RUN, TAD STARTV 1616 002465 3043 DCA LASTV /RESET VARIABLES 1617 002466 4540 PUSHF /INITIALIZE RANDOM NUMBER 1618 002467 7721 FRNDX0 1619 002470 4543 POPF 1620 002471 0050 FRNDX 1621 002472 4562 RUN1, FIND /FIND A NEXT TO UNINITIALIZE 1622 002473 2365 KWNEXT 1623 002474 5310 JMP RUN3 /NO MORE NEXT'S 1624 002475 4536 PUSHA /SAVE FOR NEXT FIND 1625 002476 4342 JMS RUN9 /DISMISS NOW SO AS TO NOT HOG THE CPU 1626 002477 4537 RUN2, PUSHJ 1627 002500 4400 GETVAR /THIS IS THE VARIABLE AFTER THE NEXT 1628 002501 7650 SNA CLA /FUNCTION? 1629 002502 4556 TSTCCR /ANYTHING AFTER NEXT STATEMENT? 1630 002503 5204 JMP ERR460 /MUST BE VARIABLE AND END OF LINE 1631 002504 4550 UDF /USER'S DATA FIELD 1632 002505 3417 DCA I AXOUT /UNINITIALIZE NEXT STATEMENT 1633 002506 4541 POPA /FOR FIND: SEARCH FROM THIS PLACE 1634 002507 5272 JMP RUN1 1635 002510 1045 RUN3, TAD ALINE0 1636 002511 3027 DCA LINEPC /BEGIN AT THE BEGINNING 1637 002512 3034 RESTOR, DCA DATAPC 1638 002513 1111 TAD CCR 1639 002514 3040 DCA DATAPC+4 1640 002515 4774 CONT, JMS I (GETMOR /GET NEXT STMNT ON LINE 1641 002516 5773 JMP I (READY /WHOOPS-OUT OF TEXT 1642 002517 4533 RUN4, GETC 1643 002520 4561 IFTRUE, COMMAN /GET KEYWORD CODE 1644 002521 2542 KWST /START OF MAIN KEYWORD LIST 1645 002522 1372 TAD (COMGO2 /CALCULATE ADDRESS OF ADISPATCH ADDRESS 1646 002523 3076 RUN5, DCA T1 /SAVE ADDRESS 1647 002524 6211 CDF SWAP /CHANGE TO DATA FIELD OF DISPATCH LIST 1648 002525 1476 TAD I T1 /GET ADDRESS OF CORRECT ROUTINE 1649 002526 6201 CDF /CHANGE DATA FIELD BACK 1650 002527 3025 DCA PT1 /SAVE ADDRESS 1651 002530 1030 TAD LINENO 1652 002531 3047 DCA ERLINE /SAVE CURRENT LINE NUMBER IN CASE IT CHANGES 1653 002532 4342 JMS RUN9 /YES: DISMISS SO OTHERS CAN RUN 1654 002533 5425 JMP I PT1 /NOW GO TO IT. 1655 1656 /*GOTO* COMMAND 1657 002534 4555 GOTO, GETLN /GET THE LINE NUMBER 1658 002535 4567 TSTEND /END OF THE STATEMENT? 1659 002536 4547 ERR270, ERROR /NO: JUNK 1660 /GO TO HERE IF PROGRAM IS SUPPOSED TO JUMP 1661 /LINE NUMBER TO TRANSFER TO IS IN LINENO. 1662 002537 4564 JUMP, FINDLN /FIND THE LINE TO GO TO 1663 002540 4547 ERR380, ERROR /NOT THERE: ERROR 1664 002541 5317 JMP RUN4 /THERE, SO GO DO IT 1665 002542 0000 RUN9, 0 /RUNTIME SCHEDULER 1666 002543 2007 ISZ RUNTIM /HAS JOB USED UP QUOTA OF STATEMENTS? 1667 002544 5742 JMP I RUN9 /NO, RETURN INSTANTLY 1668 002545 7301 L0001 /YES: LOWER PRIORITY ON THIS JOB 1669 002546 1403 TAD I LOOK 1670 002547 0112 AND C7 /MODULO 7 1671 002550 7450 SNA /IF OLD PRIORITY WAS 7, 1672 002551 7325 L0003 /THEN MAKE NEW PRIORITY 3. 1673 002552 3403 DCA I LOOK 1674 002553 1342 TAD RUN9 /RESTART ADDRESS 1675 002554 5177 JMP NULL /DISMISS 1676 1677 002555 1046 INPUTX, TAD COMBUF /GET ADDRESS OF A ZERO WORD IN AC 1678 002556 3027 DCA LINEPC /STICK IN LINEPC SO IMMEDIATE MODE WILL STOP 1679 /WHEN DONE 1680 002557 7040 CMA /GET A -1 IN THE AC 1681 002560 3030 DCA LINENO /ALSO MAKE LINENO ILLEGAL 1682 002561 4561 COMMAN /GET KEYWORD CODE 1683 002562 2466 KWCOM /THIS LIST INCLUDES COMMANDS AND STATEMENTS 1684 002563 1371 TAD (COMGOL 1685 002564 5323 JMP RUN5 /GO DO IT 1686 002571 2302 PAGE 002572 2316 002573 0452 002574 4143 002575 6726 002576 6600 002577 7123 1687 /EXPRESSION EVALUATOR 1688 002600 0000 ECALL, 0 1689 002601 1075 TAD SORTCN 1690 002602 4536 PUSHA 1691 002603 1103 TAD LASTOP 1692 002604 4536 PUSHA 1693 002605 1101 TAD EFOP 1694 002606 4536 PUSHA 1695 002607 1200 TAD ECALL 1696 002610 4536 PUSHA /RETURN ADDRESS 1697 002611 4533 GETC 1698 002612 3103 EVAL, DCA LASTOP /0 IS END 1699 002613 1073 TAD EVAL1 1700 002614 4536 PUSHA /SAVE EVAL1 1701 002615 3073 DCA EVAL1 /0 EVAL1 1702 002616 4553 TESTC 1703 002617 5223 JMP ETERM1 /INITIAL TERMINATOR 1704 002620 5241 JMP ENUM /NUMBER 1705 002621 5346 JMP EVAR /VARIABLE 1706 002622 5777 JMP I (EVALQ /CHECK FOR STRING CONSTANT 1707 1708 002623 1376 ETERM1, TAD (FLZERO 1709 002624 3025 DCA PT1 /0 DATA 1710 002625 7344 L7776 1711 002626 1075 TAD SORTCN 1712 002627 7450 SNA 1713 002630 5264 JMP ETERM /MINUS 1714 002631 7001 IAC 1715 002632 7650 SNA CLA 1716 002633 5340 JMP ARGNXT /PLUS 1717 002634 4570 ELPAR, TSTLPR 1718 002635 5355 JMP EVAL2 /CHECK UNARY 1719 002636 4200 EPAR2, JMS ECALL /RECURSIVE CALL 1720 002637 2015 ISZ PDLXR 1721 002640 5775 JMP I (ENDFUN-2 /END AS FUNCTION 1722 1723 002641 1106 ENUM, TAD FLARGP 1724 002642 3025 DCA PT1 /DATA TO FLARG 1725 002643 4505 JMS I FLINTP /GET VALUE 1726 002644 2073 OPNEXT, ISZ EVAL1 1727 002645 5253 JMP .+6 /NO UNARY 1728 002646 4532 FINT 1729 002647 5776 FGET I (FLZERO 1730 002650 2425 FSUB I PT1 1731 002651 6425 FPUT I PT1 1732 002652 0000 FEXT 1733 002653 3073 DCA EVAL1 1734 002654 4553 TESTC 1735 002655 5261 JMP ETERMN /TERMINATOR 1736 002656 7770 CM10, -10 /CONSTANT 1737 002657 0000 0 1738 002660 3075 DCA SORTCN /ALL ELSE IS END 1739 002661 4570 ETERMN, TSTLPR 1740 002662 7410 SKP 1741 002663 4547 ERR120, ERROR /EXCESS L-PARENS 1742 002664 1075 ETERM, TAD SORTCN 1743 002665 3102 DCA THISOP /SET OP 1744 002666 1102 TAD THISOP 1745 002667 1256 TAD CM10 1746 002670 7700 SMA CLA 1747 002671 3102 DCA THISOP /END 1748 002672 1102 ETERM2, TAD THISOP 1749 002673 7041 CIA 1750 002674 1103 TAD LASTOP /PRIORITIES 1751 002675 7710 SPA CLA 1752 002676 5325 JMP EPAR /NO GO YET 1753 002677 1103 TAD LASTOP 1754 002700 1374 TAD (OPTABL 1755 002701 3101 DCA CNTR 1756 002702 1501 TAD I CNTR 1757 002703 3311 DCA FLOP /SET OP 1758 002704 1103 TAD LASTOP 1759 002705 7640 SZA CLA 1760 002706 4543 POPF /GET DATA 1761 002707 0065 ACX 1762 002710 4532 FINT 1763 002711 0772 FLOP, FJMP I PFUPAR /FLOATING OP 1764 002712 6506 FPUT I FLARGP /SAVE DATA 1765 002713 0000 FEXT 1766 002714 1106 TAD FLARGP 1767 002715 3025 DCA PT1 /POINT TO DATA 1768 002716 1102 TAD THISOP 1769 002717 1103 TAD LASTOP 1770 002720 7650 SNA CLA 1771 002721 5367 JMP EVAL3 /DONE 1772 002722 4541 POPA 1773 002723 3103 DCA LASTOP /NEW OP 1774 002724 5272 JMP ETERM2 1775 1776 002725 4570 EPAR, TSTLPR 1777 002726 7410 SKP 1778 002727 5236 JMP EPAR2 /DO RECURSIVE 1779 002730 1103 TAD LASTOP 1780 002731 4536 PUSHA 1781 002732 1025 TAD PT1 1782 002733 3335 DCA .+2 1783 002734 4540 PUSHF /SAVE DATA 1784 002735 0000 0 1785 002736 1102 TAD THISOP 1786 002737 3103 DCA LASTOP 1787 002740 4533 ARGNXT, GETC 1788 002741 4553 TESTC 1789 002742 5234 JMP ELPAR /T 1790 002743 5241 JMP ENUM /N 1791 002744 5346 JMP EVAR /V 1792 002745 5777 JMP I (EVALQ /OTHER-MIGHT BE STRING CONSTANT 1793 1794 002746 4537 EVAR, PUSHJ /GET VARIABLE 1795 002747 4400 GETVAR 1796 002750 7440 SZA 1797 002751 5773 JMP I (FUNCT3 /FUNCTION 1798 002752 1106 TAD FLARGP 1799 002753 3025 DCA PT1 /POINT TO DATA 1800 002754 5244 JMP OPNEXT 1801 1802 1803 002755 7344 EVAL2, L7776 1804 002756 1075 TAD SORTCN /IS IT + OR -? 1805 002757 7540 SMA SZA 1806 002760 4547 ERR110, ERROR /NO - DOUBLE OPS OR EX L-PARENS 1807 002761 7640 SZA CLA 1808 002762 5340 JMP ARGNXT /WAS + 1809 002763 1073 TAD EVAL1 1810 002764 7040 CMA 1811 002765 3073 DCA EVAL1 /FLIP EVAL1 1812 002766 5340 JMP ARGNXT 1813 1814 002767 4541 EVAL3, POPA 1815 002770 3073 DCA EVAL1 /RESTORE EVAL1 1816 002771 5542 POPJ /EXIT 1817 1818 002772 5027 PFUPAR, FUPARR /POINTER TO FUPARR 1819 002773 7654 PAGE 002774 5101 002775 4760 002776 6063 002777 5200 1820 /USER FUNCTION PROCESSING 1821 003000 4536 FUNCT6, PUSHA /SAVE CHARACTER 1822 003001 3101 DCA EFOP 1823 003002 2101 ISZ EFOP 1824 003003 4540 PUSHF /SAVE ARGS 1825 003004 7725 FLARG 1826 003005 4557 TSTCOM 1827 003006 5214 JMP .+6 /NO MORE ARGS 1828 003007 4777 JMS I (ECALL /GET NEXT 1829 003010 4541 POPA 1830 003011 2015 ISZ PDLXR 1831 003012 2015 ISZ PDLXR 1832 003013 5201 JMP .-12 1833 1834 003014 1043 TAD LASTV 1835 003015 3024 DCA SUBS /SAVE END OF VARIABLES 1836 003016 1101 TAD EFOP 1837 003017 3077 FUNC10, DCA T2 1838 003020 7332 L2000 1839 003021 1077 TAD T2 1840 003022 3023 DCA ADD /CREATE ILLEGAL NAME 1841 003023 4537 PUSHJ /LOOK IT UP - WILL DEFINE 1842 003024 4440 LOOKUP 1843 003025 4543 POPF 1844 003026 7725 FLARG 1845 003027 4545 FLPUT /SET ARGUMENT 1846 003030 7725 FLARG 1847 003031 7340 L7777 1848 003032 1077 TAD T2 1849 003033 7440 SZA 1850 003034 5217 JMP FUNC10 /MORE ARGUMENTS 1851 003035 7330 L4000 1852 003036 4541 POPA 1853 003037 7041 CIA 1854 003040 3110 DCA FUNC17 /-CHAR OF FUNCTION 1855 003041 4540 PUSHF 1856 003042 0017 TEXTP 1857 003043 1075 TAD SORTCN 1858 003044 4536 PUSHA 1859 003045 1024 TAD SUBS 1860 003046 4536 PUSHA 1861 003047 1027 TAD LINEPC 1862 003050 4536 PUSHA 1863 003051 7410 SKP 1864 003052 1075 FUNC11, TAD SORTCN 1865 003053 4562 FIND /FIND A "DEF FN" 1866 003054 2361 KWDEF 1867 003055 4547 ERR170, ERROR /FUNCTION NOT FOUND 1868 003056 3075 DCA SORTCN 1869 003057 1110 TAD FUNC17 1870 003060 1026 TAD CHAR 1871 003061 7640 SZA CLA 1872 003062 5252 JMP FUNC11 /NOT PROPER FUNCTION 1873 003063 4541 POPA 1874 003064 3027 DCA LINEPC 1875 003065 1047 TAD ERLINE 1876 003066 4536 PUSHA /SAVE CALLING LINE 1877 003067 1030 TAD LINENO 1878 003070 3047 DCA ERLINE /CALL THIS OUT LINE 1879 003071 4533 GETC 1880 003072 4535 SORTC 1881 003073 2712 TERMS-1 1882 003074 7410 SKP 1883 003075 4547 ERR180, ERROR /NO L-PAREN 1884 003076 4570 TSTLPR 1885 003077 5275 JMP .-2 1886 003100 1075 TAD SORTCN 1887 003101 4536 PUSHA 1888 003102 4533 GETC 1889 003103 7332 L2000 1890 003104 3076 DCA T1 1891 003105 1043 TAD LASTV 1892 003106 3025 DCA PT1 /POINT TO ARGUMENTS 1893 003107 4560 FUNC14, TSTALP 1894 003110 5275 JMP .-13 /ILLEGAL VARIABLE 1895 003111 1026 TAD CHAR 1896 003112 0320 AND C37 1897 003113 4551 RTL6 1898 003114 7010 RAR 1899 003115 3077 DCA T2 /SAVE NAME 1900 003116 4533 GETC 1901 003117 4552 TESTN 1902 003120 0037 C37, 37 1903 003121 5327 JMP FUNC13 /NOT NUMBER 1904 003122 1075 TAD SORTCN 1905 003123 7105 CLL IAC RAL 1906 003124 1077 TAD T2 1907 003125 3077 DCA T2 1908 003126 4533 GETC 1909 003127 2076 FUNC13, ISZ T1 /SET ILLEGAL NAME 1910 003130 4550 UDF 1911 003131 1425 TAD I PT1 1912 003132 7041 CIA 1913 003133 1076 TAD T1 1914 003134 7640 SZA CLA 1915 003135 4547 ERR200, ERROR /WRONG NUMBER OF ARGUMENTS 1916 003136 1077 TAD T2 1917 003137 3425 DCA I PT1 /SET TEMPORARY NAME 1918 003140 6201 CDF 1919 003141 1123 TAD M4 1920 003142 1025 TAD PT1 1921 003143 3025 DCA PT1 /POINT TO NEXT 1922 003144 4557 TSTCOM 1923 003145 5350 JMP FUNC12 /NO MORE 1924 003146 4533 GETC 1925 003147 5307 JMP FUNC14 1926 1927 FUNC17=FFLAG 1928 1929 003150 2076 FUNC12, ISZ T1 1930 003151 4550 UDF 1931 003152 1425 TAD I PT1 1932 003153 6201 CDF 1933 003154 7041 CIA 1934 003155 1076 TAD T1 1935 003156 7650 SNA CLA 1936 003157 5335 JMP FUNC13+6 /SHOULD NOT AGREE 1937 003160 4535 SORTC 1938 003161 2712 TERMS-1 1939 003162 7410 SKP 1940 003163 5275 JMP FUNC14-12 /NO PAREN 1941 003164 7344 L7776 1942 003165 1075 TAD SORTCN 1943 003166 7041 CIA 1944 003167 4541 POPA 1945 003170 7640 SZA CLA 1946 003171 5275 JMP FUNC14-12 /NO MATCH 1947 003172 5776 JMP I (FUNC16 1948 003176 5122 PAGE 003177 2600 1949 /*PRINT* COMMAND 1950 003200 4533 PRINT5, GETC /SKIP OVER THE ";" OR "," 1951 003201 7040 CMA /AC=-1, INDICATING ";" OR "," 1952 003202 3025 PRINT, DCA PT1 /SET FLAG PT1 WITH AC 1953 003203 4534 SORTJ /CHECK ; , ' : CR " 1954 003204 2675 PRINL-1 1955 003205 0007 PRINL1-PRINL 1956 003206 1025 TAD PT1 /TAB,CHR$,OR EXPRESSION 1957 003207 7740 SMA SZA CLA /CHECK 3-WAY FLAG 1958 003210 4547 ERR350, ERROR /SYNTAX ERROR 1959 003211 4565 FREE13 /FREE 13 SPACES IN OUTPUT BUFFER 1960 003212 4561 COMMAN /CHECK "TAB", "CHR$" 1961 003213 2375 KWTAB 1962 003214 7440 SZA /TAB? 1963 003215 5255 JMP PRINT2 /NO: GO CHECK OTHER POSSIBILITIES 1964 003216 4351 JMS PRINT8 /EVALUATE ARGUMENT 1965 003217 7510 SPA /NEGATIVE ARGS ARE DETRIMENTAL 1966 003220 7041 CIA 1967 003221 3025 DCA PT1 /SAVE ARGUMENT 1968 003222 1025 PRIN11, TAD PT1 /GET ARG 1969 003223 1377 TAD (-110 /TAKE ARG MOD 72 DECIMAL 1970 003224 7500 SMA /REDUCED ENOUGH YET? 1971 003225 5223 JMP .-2 /NO 1972 003226 7141 CLL CMA IAC 1973 003227 4776 JMS I (ZONE /COMPARE WITH CURRENT POSITION 1974 003230 7450 SNA /THERE ALREADY? 1975 003231 5253 JMP PRIN12 /YES: ALL DONE SO GO 1976 003232 3023 DCA ADD /SAVE COUNT 1977 003233 7420 SNL /GONE PAST ALREADY? 1978 003234 5246 JMP PRIN13 /NO: GO SPACE AHEAD 1979 003235 1111 TAD CCR /ASCII FOR A CARRIAGE RETURN 1980 003236 6212 CIF 10 1981 003237 4546 PRINTX /PRINT CR WITH NO LINE FEED 1982 003240 6212 CIF 10 1983 003241 4546 PRINTX /PRINT NULL TO GIVE CARRIAGE TIME TO MOVE 1984 003242 1377 TAD (-110 /-72 DECIMAL 1985 003243 6211 CDF 10 1986 003244 3405 DCA I DBFTS2 /INDICATE BEGINNING OF LINE 1987 003245 5222 JMP PRIN11 /DO TAB AGAIN 1988 003246 4566 PRIN13, FREE2 /TO AVOID OUTPUT OVERFLOW 1989 003247 1124 TAD C40 /ASCII FOR SPACE 1990 003250 4454 PRINTC /PRINT THE SPACE 1991 003251 2023 ISZ ADD /PRINT ANOTHER? 1992 003252 5246 JMP .-4 /YES 1993 003253 7001 PRIN12, IAC /AC INDICATES WE JUST DID EXPRESSION 1994 003254 5202 JMP PRINT /GO PROCESS REST OF STATEMENT 1995 1996 003255 7010 PRINT2, RAR /CHR$? 1997 003256 7620 SNL CLA 1998 003257 5264 JMP PRINT3 /NO: MUST BE EXPRESSION 1999 003260 4351 JMS PRINT8 /EVALUATE ARG TO CHR$ 2000 003261 6212 CIF 10 2001 003262 4546 PRINTX /SNEAK IN THE CHARACTER 2002 003263 5253 JMP PRIN12 /DONE 2003 2004 003264 3031 PRINT3, DCA MODE /CLEAR STRING MODE FLAG 2005 003265 4537 PUSHJ /GET EXPRESSION 2006 003266 2612 EVAL 2007 003267 2031 ISZ MODE /STRING OR NUMERIC? 2008 003270 5305 JMP PRIN33 /NUMERIC 2009 003271 7340 L7777 /AC CONTAINS 2 CR'S IN PACKED FORMAT 2010 003272 4536 PUSHA /PUT END OF STRING MARK ON STACK 2011 003273 4540 PUSHF /PUT STRING ON STACK 2012 003274 0065 ACX 2013 003275 4775 JMS I (SSR2 /SAVE TEXT POINTERS, UNPACK FROM STACK 2014 003276 7410 SKP 2015 003277 4454 PRINTC /PRINT STRING CHARACTOR 2016 003300 4533 GETC /GET STRING CHARACTOR 2017 003301 4556 TSTCCR /END OF STRING? 2018 003302 5277 JMP .-3 /NO: CONTINUE PRINTING IT 2019 003303 4774 JMS I (SSR3 /RESTORE TEXT, CLEAN UP STACK 2020 003304 5253 JMP PRIN12 /DONE WITH STRING EXPRESSION 2021 2022 003305 4776 PRIN33, JMS I (ZONE /GET LOCATION ON TTY LINE 2023 003306 1373 TAD (16 /CHECK SPACES LEFT 2024 003307 7750 SPA SNA CLA /WILL IT FIT? 2025 003310 5313 JMP PRIN34 /YES 2026 003311 1111 TAD CCR /NO: MAKE IT FIT 2027 003312 4454 PRINTC /PRINT CR 2028 003313 4504 PRIN34, JMS I FLOUTP /GO PRINT THE FLOATING POINT NUMBER 2029 003314 4566 FREE2 /MAKE ROOM IN OUTPUT BUFFER 2030 003315 1124 TAD C40 /ASCII FOR SPACE 2031 003316 4454 PRINTC /PRINT THE SPACE AFTER THE NUMBER 2032 003317 5253 JMP PRIN12 2033 003320 6001 PRINF0, ION 2034 003321 7650 SNA CLA 2035 003322 5200 JMP PRINT5 /YES, NOW PROCEED AS IF SEMICOLON 2036 003323 4566 PRINT4, FREE2 2037 003324 1124 TAD C40 2038 003325 6213 CIF CDF 10 2039 003326 5772 JMP I (PRINF1 2040 2041 003327 2032 PRINT6, ISZ SPACSW /KEEP SPACES 2042 003330 4533 GETC /GET NEXT CHARACTOR 2043 003331 3032 DCA SPACSW /IGNORE SPACES 2044 003332 4534 SORTJ /CHECK CR " 2045 003333 2701 PRINLB-1 2046 003334 7772 PRINL2-PRINLB 2047 003335 4566 FREE2 /GET SPACE 2048 003336 4454 PRINTC /PRINT THE LITERAL 2049 003337 5327 JMP PRINT6 /GO DO NEXT CHARACTOR 2050 003340 4533 PRIN61, GETC /SKIP OVER THE " 2051 003341 5202 JMP PRINT /DONE WITH LITERAL 2052 2053 003342 1025 PRINT7, TAD PT1 /GET THE FLAG 2054 003343 7710 SPA CLA /GO TO NEW LINE BEFORE EXITING? 2055 003344 5526 JMP I CCONT /NO: DONE WITH PRINT STATEMENT 2056 003345 4566 PRIN71, FREE2 /GET ROOM 2057 003346 1111 TAD CCR /ASCII FOR CR 2058 003347 4454 PRINTC /PRINT THE CR 2059 003350 5526 JMP I CCONT /DONE WITH PRINT STATEMENT 2060 2061 003351 0000 PRINT8, 0 /SUBROUTINE TO EVALUATE TAB AND CHR$ ARGS 2062 003352 4535 SORTC /SET UP SORTCN FOR TSTLPR 2063 003353 2712 TERMS-1 2064 003354 4570 TSTLPR 2065 003355 4547 ERR340, ERROR /NO LEFT PARENTHESIS FOR TAB OR CHR$ 2066 003356 4771 JMS I (ECALL /EVALUATE EXPRESSION RECURSIVELY 2067 003357 2015 ISZ PDLXR /DUMP EFOP 2068 003360 4770 JMS I (PARTST /CHECK PARENTHESIS MATCH, CLEAN UP STACK 2069 003361 4507 JMS I INTEGE /CONVERT FAC TO 1 WORD INTEGER 2070 003362 5751 JMP I PRINT8 /EXIT, AC=ARG 2071 003370 5000 PAGE 003371 2600 003372 0760 003373 0016 003374 2074 003375 2057 003376 3441 003377 7670 2072 /*FINDLN* ROUTINE 2073 003400 0000 XFINDL, 0 2074 003401 1030 TAD LINENO 2075 003402 7710 SPA CLA 2076 003403 5237 JMP XFNDL3 2077 003404 4550 UDF 2078 003405 1045 TAD ALINE0 2079 003406 3031 DCA LASTLN 2080 003407 1045 TAD ALINE0 2081 003410 3027 XFNDL1, DCA LINEPC /CURRENT LINE 2082 003411 1027 TAD LINEPC 2083 003412 3010 DCA XREG 2084 003413 1030 TAD LINENO 2085 003414 7041 CIA 2086 003415 1410 TAD I XREG 2087 003416 7450 SNA 2088 003417 5230 JMP XFNDL2-1 /FOUND LINE 2089 003420 7700 SMA CLA 2090 003421 5231 JMP XFNDL2 /WENT BEYOND 2091 003422 1027 TAD LINEPC 2092 003423 3031 DCA LASTLN 2093 003424 1427 TAD I LINEPC 2094 003425 7440 SZA 2095 003426 5210 JMP XFNDL1 /LOOP 2096 003427 7410 SKP /OUT OF TEXT 2097 003430 2200 ISZ XFINDL /FOUND LINE 2098 003431 1027 XFNDL2, TAD LINEPC 2099 003432 7001 IAC 2100 003433 3017 DCA AXOUT /SET TO UNPACK 2101 003434 3021 DCA XCT 2102 003435 6201 CDF 2103 003436 5600 JMP I XFINDL 2104 003437 2200 XFNDL3, ISZ XFINDL 2105 003440 5235 JMP .-3 2106 2107 003441 0000 ZONE, 0 /KLUDGE FOR *PRINT* TO LOOK AT TTY COLUMN 2108 003442 6211 CDF 10 2109 003443 1405 TAD I DBFTS2 /GET COLUMN COUNT 2110 003444 6201 CDF 0 2111 003445 5641 JMP I ZONE 2112 2113 003446 4547 ERR330, ERROR /TOO MANY *RETURN*S 2114 2115 IFNZRO EDU250 < 2116 /ROUTINE TO DEASSIGN THE DECTAPE FROM THE CURRENT USER 2117 003447 0000 DTDQ, 0 2118 IFNZRO TD8E /STOP DECTAPE FOR ERRORS 2119 003450 1377 TAD (XREADC /READ FROM KEYBOARD 2120 003451 3053 DCA PREADC 2121 003452 1376 TAD (XPRNTC /AND PRINT ON PRINTER 2122 003453 3054 DCA PPRNTC 2123 003454 7340 L7777 2124 003455 3076 DCA T1 /LOWEST PRIORITY FOUND YET 2125 003456 1375 TAD (USER0 /START OF LIST 2126 003457 3077 DCA T2 2127 003460 3100 DCA T3 2128 003461 1374 TAD (-10 2129 003462 3010 DCA XREG /STATUS COUNTER 2130 003463 1477 DTDQ1, TAD I T2 /IGNORE JOBS RUNNING OR IN I/O WAIT 2131 003464 0373 AND (70 2132 003465 7640 SZA CLA 2133 003466 1076 TAD T1 2134 003467 7161 STL CIA 2135 003470 1477 TAD I T2 /USER'S STATUS 2136 003471 7620 SNL CLA 2137 003472 5277 JMP DTDQ2 /NOT NEXT 2138 003473 1077 TAD T2 /THIS JOB MIGHT GET TAPE 2139 003474 3100 DCA T3 2140 003475 1477 TAD I T2 2141 003476 3076 DCA T1 /SEE IF ANYONE IS BEFORE HIM 2142 003477 2077 DTDQ2, ISZ T2 /NEXT USER'S STATUS 2143 003500 2010 ISZ XREG 2144 003501 5263 JMP DTDQ1 /MORE USERS 2145 003502 1100 TAD T3 /THIS JOB GETS TAPE NEXT(=0 IF NONE) 2146 003503 3131 DCA DTLOOK /THIS MAKES ASSIGNMENT 2147 003504 3531 DCA I DTLOOK /THIS RUNS HIM 2148 003505 5647 JMP I DTDQ 2149 2150 /GET FILE SPECIFICATION FOR DECTAPE COMMANDS. 2151 /THIS ROUTINE IS A PAIN BECAUSE THE NAME MUST BE IN 2152 /STRAIGHT SIXBIT CODE FOR OS/8 COMPATIBILITY 2153 003506 4561 DTGNAM, COMMAN /GET DRIVE SPEC 2154 003507 2423 KWDEV 2155 IFNZRO TD8E < 2156 CLL RTR 2157 SNL 2158 DCA DEV> 2159 2160 IFNZRO RK8E < 2161 TAD (-10 2162 SNA 2163 JMP DTG1 2164 AND C7 2165 DCA DEV> 2166 2167 IFNZRO RX8E < 2168 003510 7112 CLL RTR 2169 003511 7430 SZL 2170 003512 5316 JMP DTG1 2171 003513 7110 CLL RAR 2172 003514 7002 BSW 2173 003515 3055 DCA DEV> 2174 2175 003516 4556 DTG1, TSTCCR 2176 003517 7410 SKP 2177 003520 5542 POPJ /EXIT 2178 003521 1372 TAD (NAME-1 /NAME GOES TO NAME, OF COURSE 2179 003522 3011 DCA XREG2 2180 003523 4336 JMS DTG2 /GET 2 CHARACTERS OF FILENAME 2181 003524 4336 JMS DTG2 2182 003525 4336 JMS DTG2 2183 003526 4552 TESTN /EXTENSION SPECIFIED? 2184 003527 5333 JMP DTGEXT /YES 2185 003530 4556 DTGCR, TSTCCR /FOLLOWED BY CR? 2186 003531 4547 ERRDTG, ERROR /NO, BUT IT SHOULD HAVE BEEN 2187 003532 5542 POPJ /DONE, SUCCESSFUL 2188 2189 003533 4533 DTGEXT, GETC /SKIP OVER THE "." 2190 003534 4336 JMS DTG2 /GET 2 CHAR EXTENSION 2191 003535 5330 JMP DTGCR /CHECK CR 2192 2193 003536 0000 DTG2, 0 /GET 2 CHARS OF FILENAME 2194 003537 4535 SORTC /CHECK . CR 2195 003540 2670 DTGL-1 2196 003541 5360 JMP DTG4 /WAS TERMINATOR 2197 003542 1026 TAD CHAR /CONVERT CHAR TO STRAIGHT SIXBIT 2198 003543 0125 AND C77 2199 003544 7002 BSW /LEFT BYTE 2200 003545 3076 DCA T1 2201 003546 4533 GETC 2202 003547 4535 SORTC 2203 003550 2670 DTGL-1 2204 003551 5357 JMP DTG3 2205 003552 1026 TAD CHAR /REMEMBER CHARACTER 2206 003553 3077 DCA T2 2207 003554 4533 GETC /NEXT CHARACTER 2208 003555 1077 TAD T2 /LAST CHARACTER 2209 003556 0125 AND C77 /CONVERT TO SIXBIT 2210 003557 1076 DTG3, TAD T1 /SIXBIT CHAR BEFORE LAST 2211 003560 3411 DTG4, DCA I XREG2 /STORE AWAY 2212 003561 5736 JMP I DTG2 /WE HAVE STORED 2, 1, OR 0 CHARS 2213 > 2214 003572 0055 PAGE 003573 0070 003574 7770 003575 3600 003576 0765 003577 3745 2215 003600 0000 USER0, 0 2216 003601 7777 USER1, 7777 2217 003602 7777 USER2, 7777 2218 003603 7777 USER3, 7777 2219 003604 7777 USER4, 7777 2220 003605 7777 USER5, 7777 2221 003606 7777 USER6, 7777 2222 003607 7777 USER7, 7777 2223 2224 /LOOKUP TABLE FOR DFIND 2225 /ENTRIES POINT TO FIELD 1 SWAP REGION FOR USER. 2226 003610 3623 SWPR0, SWPR-1 2227 003611 3714 SWPR1, SWPRL+SWPR-1 2228 003612 4005 SWPR2, SWPRL^2+SWPR-1 2229 003613 4076 SWPR3, SWPRL^3+SWPR-1 2230 003614 4167 SWPR4, SWPRL^4+SWPR-1 2231 003615 4260 SWPR5, SWPRL^5+SWPR-1 2232 003616 4351 SWPR6, SWPRL^6+SWPR-1 2233 003617 4442 SWPR7, SWPRL^7+SWPR-1 2234 2235 /*PACKC* ROUTINE 2236 003620 0000 XPACKC, 0 2237 003621 1016 TAD AXIN /IF AXIN+9>=PACKND THEN ERROR 2238 003622 7141 CLL CIA 2239 003623 1121 TAD M12 2240 003624 1441 TAD I PACKND 2241 003625 7630 SZL CLA 2242 003626 4547 ERR060, ERROR /NO ROOM 2243 003627 4231 JMS XCPACK 2244 003630 5620 XPACK5, JMP I XPACKC 2245 2246 003631 0000 XCPACK, 0 /BASIC UNCOMPLICATED PACK ROUTINE 2247 003632 4534 SORTJ /CHECK FOR CR,BELL,RUBOUT,_,ALTMODE,@ 2248 003633 2734 XPAKL1-1 2249 003634 0012 XPAKL2-XPAKL1 2250 003635 1026 TAD CHAR /CONVERT TO SIXBIT 2251 003636 1120 TAD M40 2252 003637 7510 SPA /VALID CHARACTER FOR PACKING? 2253 003640 5325 JMP XPAC10 /NO: TWO BELLS 2254 003641 2024 XPACK4, ISZ XCTIN 2255 003642 5254 JMP XPACK1 /NO PARTIAL 2256 003643 1023 TAD ADD /FORM WORD 2257 003644 4550 UDF 2258 003645 3416 DCA I AXIN /PACK IT 2259 003646 6201 CDF 2260 003647 3023 DCA ADD /RESET PARTIAL JUST TO BE SAFE 2261 003650 5631 JMP I XCPACK 2262 2263 003651 1377 XPACK2, TAD (37 2264 003652 1124 XPACK3, TAD C40 2265 003653 5241 JMP XPACK4 2266 2267 003654 4551 XPACK1, RTL6 2268 003655 3023 DCA ADD /SAVE PARTIAL 2269 003656 7340 L7777 2270 003657 3024 DCA XCTIN /INDICATE PARTIAL 2271 003660 5631 JMP I XCPACK 2272 2273 003661 2024 XPACK7, ISZ XCTIN /PARTIAL HERE 2274 003662 5267 JMP XPACK8 /NO 2275 003663 3023 XPACK9, DCA ADD 2276 003664 1114 TAD C137 2277 003665 4454 PRINTC /PRINT BACK ARROW 2278 003666 5620 JMP I XPACKC 2279 2280 003667 1046 XPACK8, TAD COMBUF 2281 003670 7041 CIA 2282 003671 1016 TAD AXIN 2283 003672 7650 SNA CLA 2284 003673 5620 JMP I XPACKC /ALL GONE ANY HOW 2285 003674 1016 TAD AXIN 2286 003675 3100 DCA T3 2287 003676 7340 L7777 2288 003677 3024 DCA XCTIN /INDICATE PARTIAL 2289 003700 7340 L7777 2290 003701 1016 TAD AXIN 2291 003702 3016 DCA AXIN /PUT IT BACK ONE 2292 003703 4550 UDF 2293 003704 1500 TAD I T3 /GET OLD 2294 003705 0117 AND C7700 2295 003706 5263 JMP XPACK9 2296 2297 003707 1220 XPPCK1, TAD XPACKC /SAVE RETURN ADDRESS 2298 003710 4536 PUSHA 2299 003711 4540 PUSHF /SAVE TEXT POINTERS 2300 003712 0017 TEXTP 2301 003713 4565 FREE13 /PRINT "$ DELETED" 2302 003714 1376 TAD (17 2303 003715 4333 JMS READY1 2304 003716 1046 TAD COMBUF /PACKING WILL RESUME AT START OF COMMAND BUFFER 2305 003717 3016 DCA AXIN 2306 003720 3024 DCA XCTIN 2307 003721 4543 POPF /RESTORE TEXT POINTERS 2308 003722 0017 TEXTP 2309 003723 3026 DCA CHAR /BUT CLEAR CHAR FOR GOOD LUCK 2310 003724 5542 POPJ /EXIT FROM XPACKC 2311 2312 003725 7200 XPAC10, CLA /OUTPUT TWO BELLS FOR ILLEGAL CHARACTER 2313 003726 1112 TAD C7 2314 003727 4454 PRINTC 2315 003730 1112 TAD C7 2316 003731 4454 PRINTC 2317 003732 5631 JMP I XCPACK /EXIT INNER ROUTINE 2318 2319 /SUBROUTINE TO WRITE OUT MESSAGES 2320 003733 0000 READY1, 0 2321 003734 3017 DCA AXOUT /POINT TO MESSAGE 2322 003735 3021 DCA XCT 2323 003736 4533 READY2, GETC /GET MESSAGE 2324 003737 1026 TAD CHAR 2325 003740 1121 TAD M12 2326 003741 7710 SPA CLA 2327 003742 5733 JMP I READY1 2328 003743 4454 PRINTC 2329 003744 5336 JMP READY2 2330 /*READC* ROUTINE 2331 003745 0000 XREADC, 0 2332 003746 7344 L7776 /COMPUTE ADDRESS OF KEYBOARD DATA 2333 003747 1004 TAD DBFKS2 2334 003750 6213 CIF CDF 10 2335 003751 5775 JMP I (XRCF1 /READ KEYBOARD BUFFER FROM FLD 1 2336 2337 /*READC* RETURNS HERE FROM FIELD 1 2338 003752 7510 XRCF0, SPA /VALID CHARACTER RETURNED? 2339 003753 5356 JMP XRCDIS /NO 2340 003754 3026 DCA CHAR /YES: SAVE IT 2341 003755 5745 JMP I XREADC 2342 2343 003756 3403 XRCDIS, DCA I LOOK /AC0=1, USE IT TO SET INPUT WAIT 2344 003757 7340 L7777 /COMPUTE RESTART ADDRESS 2345 003760 1345 TAD XREADC 2346 003761 5177 JMP NULL /DISMISS 2347 /*TSTLPR* ROUTINE 2348 003762 0000 LPRTST, 0 2349 003763 1075 TAD SORTCN 2350 003764 1122 TAD M6 2351 003765 7710 SPA CLA 2352 003766 5762 JMP I LPRTST /NOT L-PAREN 2353 003767 1075 TAD SORTCN 2354 003770 1374 TAD (-10 2355 003771 7710 SPA CLA 2356 003772 2362 ISZ LPRTST /L-PAREN 2357 003773 5762 JMP I LPRTST 2358 003774 7770 PAGE 003775 0541 003776 0017 003777 0037 2359 /*POPF* ROUTINE 2360 004000 0000 XPOPF, 0 2361 004001 7340 L7777 2362 004002 1600 TAD I XPOPF 2363 004003 3010 DCA XREG /POINT TO DATA AREA 2364 004004 7346 L7775 2365 004005 3100 DCA T3 2366 004006 4550 UDF 2367 004007 1415 TAD I PDLXR 2368 004010 6201 CDF 2369 004011 3410 DCA I XREG /MOVE DATA 2370 004012 2100 ISZ T3 2371 004013 5206 JMP .-5 2372 004014 2200 ISZ XPOPF 2373 004015 5600 JMP I XPOPF 2374 /*TESTN* ROUTINE 2375 /CALLING SEQUENCE: 2376 /CLA 2377 /TESTN 2378 / /RETURNS HERE IF CHAR = "." 2379 / /CHAR IS NOT A DIGIT 2380 / /CHAR IS A DIGIT, SORTCN=BINARY VALUE 2381 004016 0000 XTESTN, 0 2382 004017 1026 TAD CHAR 2383 004020 1377 TAD (-".+200 2384 004021 7450 SNA 2385 004022 5616 JMP I XTESTN 2386 004023 1376 TAD (-"9-1+". 2387 004024 7100 CLL 2388 004025 1116 TAD CLF 2389 004026 3075 DCA SORTCN 2390 004027 7430 SZL 2391 004030 2216 ISZ XTESTN 2392 004031 2216 ISZ XTESTN 2393 004032 5616 JMP I XTESTN 2394 /*GETC* ROUTINE 2395 004033 0000 XGETC, 0 2396 004034 2021 ISZ XCT 2397 004035 5246 JMP XGET1 /NO PARTIAL 2398 004036 1020 TAD GTEM /GET PARTIAL 2399 004037 0125 XGET2, AND C77 /AND OFF JUNK 2400 004040 1124 TAD C40 /CORRECT TO ASCII 2401 004041 3026 DCA CHAR 2402 004042 4534 SORTJ /CHECK SPECIALS 2403 004043 2730 XGETL1-1 2404 004044 7502 XGETL2-XGETL1 2405 004045 5633 JMP I XGETC 2406 2407 2408 004046 4550 XGET1, UDF 2409 004047 1417 TAD I AXOUT /GET NEXT 2410 004050 6201 CDF 2411 004051 3020 DCA GTEM /SAVE PARTIAL 2412 004052 7340 L7777 2413 004053 3021 DCA XCT /INDICATE PARTIAL 2414 004054 1020 TAD GTEM 2415 004055 4551 RTL6 2416 004056 7004 RAL 2417 004057 5237 JMP XGET2 2418 2419 004060 1032 XGET3, TAD SPACSW /SPACE TEST 2420 004061 7640 SZA CLA 2421 004062 5633 JMP I XGETC /KEEP SPACES 2422 004063 5234 JMP XGETC+1 /IGNORE SPACES 2423 2424 004064 7327 XGET5, L0006 /CR 2425 004065 1112 XGET4, TAD C7 /BELL 2426 004066 3026 XGET6, DCA CHAR 2427 004067 5633 JMP I XGETC 2428 2429 2430 /CONTINUATION OF RANDOM NUMBER GENERATOR 2431 004070 7004 RND1, RAL 2432 004071 1050 TAD FRNDX 2433 004072 1051 TAD FRNDX+1 2434 004073 3050 DCA FRNDX 2435 004074 7350 L3777 2436 004075 0050 AND FRNDX 2437 004076 3066 DCA ACH 2438 004077 1065 TAD ACX 2439 004100 3052 DCA FRNDX+2 2440 004101 3065 DCA ACX 2441 004102 4775 JMS I (FFNOR 2442 004103 5774 JMP I (RND2 /GO BACK TO EXIT 2443 /*GETNXT* ROUTINE 2444 004104 0000 NXTGET, 0 2445 004105 4550 UDF 2446 004106 1427 TAD I LINEPC /POINTER TO NEXT 2447 004107 7450 SNA 2448 004110 5320 JMP .+10 /OUT OF TEXT 2449 004111 3027 DCA LINEPC /NEW POINTER 2450 004112 1027 TAD LINEPC 2451 004113 3017 DCA AXOUT 2452 004114 3021 DCA XCT /SET TO UNPACK 2453 004115 1417 TAD I AXOUT /GET LINE NUMBER 2454 004116 3030 DCA LINENO 2455 004117 2304 ISZ NXTGET 2456 004120 6201 CDF 2457 004121 5704 JMP I NXTGET 2458 /*FIND* ROUTINE 2459 004122 0000 XFIND, 0 2460 004123 3030 DCA LINENO 2461 004124 1722 TAD I XFIND 2462 004125 2322 ISZ XFIND 2463 004126 3335 DCA XFIND2 2464 004127 4564 FINDLN 2465 004130 5722 JMP I XFIND /NOT FOUND 2466 004131 4773 XFIND1, JMS I (GETMOR 2467 004132 5722 JMP I XFIND /NOT FOUND 2468 004133 4533 GETC 2469 004134 4561 COMMAN 2470 004135 2365 XFIND2, KWNEXT 2471 004136 7640 SZA CLA 2472 004137 5331 JMP XFIND1 2473 004140 1030 TAD LINENO 2474 004141 2322 ISZ XFIND 2475 004142 5722 JMP I XFIND 2476 2477 004143 0000 GETMOR, 0 2478 004144 7410 SKP 2479 004145 4533 GETC 2480 004146 4567 TSTEND 2481 004147 5345 JMP .-2 /GO TO TERMINATOR 2482 004150 1026 TAD CHAR 2483 004151 1372 TAD (-72 2484 004152 7650 SNA CLA 2485 004153 5356 JMP .+3 /MORE TO COME ON THIS LINE 2486 004154 4563 GETNXT /THIS LINE FINISHED;FIND ANOTHER 2487 004155 5743 JMP I GETMOR /OUT OF TEXT 2488 004156 2343 ISZ GETMOR 2489 004157 5743 JMP I GETMOR 2490 /*RETURN* AND *POPJ* 2491 004160 4567 RETURN, TSTEND 2492 004161 4547 ERR320, ERROR 2493 004162 3010 XPOPJ, DCA XREG /SAVE AC 2494 004163 4550 UDF 2495 004164 1415 TAD I PDLXR 2496 004165 6201 CDF 2497 004166 3100 DCA T3 /RETURN ADDRESS 2498 004167 1010 TAD XREG /GET AC 2499 004170 5500 JMP I T3 2500 004172 7706 PAGE 004173 4143 004174 5373 004175 7076 004176 7764 004177 7722 2501 /CHARACTER TEST ROUTINES 2502 004200 0000 COMTST, 0 2503 004201 1377 TAD (-54 /-COMMA 2504 004202 1026 TAD CHAR 2505 004203 7650 SNA CLA 2506 004204 2200 ISZ COMTST /FOUND IT 2507 004205 5600 JMP I COMTST 2508 2509 004206 0000 CCRTST, 0 2510 004207 1206 TAD CCRTST 2511 004210 3200 DCA COMTST 2512 004211 1376 TAD (-15 /-CR 2513 004212 5202 JMP COMTST+2 2514 2515 004213 0000 ENDTST, 0 2516 004214 1375 TAD (-72 /-COLON 2517 004215 1026 TAD CHAR 2518 004216 7440 SZA 2519 004217 1374 TAD (-"!+": /TEST FOR ! COMMENT 2520 004220 7650 SNA CLA 2521 004221 7001 IAC 2522 004222 1213 TAD ENDTST 2523 004223 5210 JMP CCRTST+2 2524 004224 0000 ALPTST, 0 2525 004225 1026 TAD CHAR 2526 004226 1117 TAD M100 2527 004227 7750 SPA SNA CLA 2528 004230 5624 JMP I ALPTST /LESS THAN *A* 2529 004231 1026 TAD CHAR 2530 004232 1373 TAD (-132 2531 004233 7750 SPA SNA CLA 2532 004234 2224 ISZ ALPTST /LETTER 2533 004235 5624 JMP I ALPTST 2534 /*TESTC* ROUTINE 2535 004236 0000 XTESTC, 0 2536 004237 4535 SORTC 2537 004240 2712 TERMS-1 2538 004241 5636 JMP I XTESTC /TERMINATOR 2539 004242 2236 ISZ XTESTC 2540 004243 4552 TESTN 2541 004244 5636 JMP I XTESTC 2542 004245 7410 SKP 2543 004246 5636 JMP I XTESTC 2544 004247 2236 ISZ XTESTC 2545 004250 4560 TSTALP 2546 004251 2236 ISZ XTESTC /OTHER 2547 004252 5636 JMP I XTESTC /LETTER 2548 /NEW *GOSUB* STATEMENT 2549 /IT IS NOW LEGAL TO HAVE STATEMENTS ON THE LINE AFTER GOSUB 2550 004253 1017 GOSUB, TAD AXOUT /LOCATION IN THE LINE 2551 004254 4536 PUSHA 2552 004255 1030 TAD LINENO /CURRENT LINE NUMBER 2553 004256 4536 PUSHA 2554 004257 1265 TAD CGOSB1 /POINTER TO GOSUB1 2555 004260 4536 PUSHA 2556 004261 5772 JMP I (GOTO /NOW JUMP TO *GOTO* STATEMENT TO TRANSFER CONTROL 2557 2558 /THE FOLLOWING ROUTINE DOES THE RETURN FROM A BASIC SUBROUTINE 2559 004262 4541 GOSUB1, POPA /GET LINE NUMBER OF CALLING *GOSUB* STATEMENT 2560 004263 3030 DCA LINENO /STORE FOR *FINDLN* 2561 004264 4564 FINDLN /FIND THE LINE 2562 004265 4262 CGOSB1, GOSUB1 /SHOULD NEVER RETURN TO HERE 2563 004266 4541 POPA /GET LOC. OF GOSUB IN LINE 2564 004267 3017 DCA AXOUT /STORE FOR THE TEXT UNPACKING ROUTINE 2565 004270 4533 GETC 2566 004271 5526 JMP I CCONT /GO EXECUTE STATEMENT AFTER GOSUB 2567 /*BYE* COMMAND 2568 /WIPES OUT USER'S PROGRAM NAME, REPLACING IT WITH NONE.BA, 2569 /OR ACCEPTS ALTERNATE NAME AS AN ARG, THEN WIPES OUT PROGRAM 2570 /AND VARIABLES. 2571 BYE, 2572 IFNZRO EDU250 < 2573 004272 4540 PUSHF /GET NEW NAME 2574 004273 4313 DTNONE 2575 004274 4543 POPF 2576 004275 0056 NAME 2577 004276 1316 TAD DTNONE+3 2578 004277 3061 DCA NAME+3> 2579 2580 /*NEW* COMMAND 2581 /GETS NEW PROGRAM NAME (OPTIONALLY), THEN WIPES OUT PROGRAM 2582 /AND VARIABLES. 2583 NEW, 2584 IFNZRO EDU250 < 2585 004300 4537 PUSHJ /GET PROGRAM NAME 2586 004301 3506 DTGNAM> 2587 2588 /*SCR??????????* COMMAND 2589 /WIPES OUT PROGRAM AND VARIABLES 2590 004302 4550 SCR, UDF 2591 004303 3445 DCA I ALINE0 /LINK TO NOTHING 2592 004304 6201 CDF 0 2593 004305 7326 L0002 2594 004306 1045 TAD ALINE0 2595 004307 3042 DCA BUFR /END OF TEXT 2596 2597 /*END* STATEMENT 2598 /WIPES OUT VARIABLE AND RETURNS TO "READY" STATE 2599 004310 1042 END, TAD STARTV 2600 004311 3043 DCA LASTV 2601 004312 5771 JMP I (READY 2602 2603 IFNZRO EDU250 < 2604 004313 1617 DTNONE, FILENAME NONE.BA /NULL PROGRAM NAME 004314 1605 004315 0000 004316 0201 2605 > 2606 /*ON* COMMAND 2607 004317 4537 ON, PUSHJ /GET VALUE 2608 004320 2612 EVAL 2609 004321 4561 COMMAN /CHECK "GOTO" 2610 004322 2551 KWGOTO 2611 004323 7640 SZA CLA 2612 004324 4547 ERR300, ERROR /NOT GOTO 2613 004325 4507 JMS I INTEGE 2614 004326 7041 CIA 2615 004327 3076 DCA T1 2616 004330 1030 TAD LINENO /REMEMBER WHERE WE ARE 2617 004331 3077 DCA T2 2618 004332 4555 ONLP, GETLN /READ LINE NUMBER 2619 004333 2076 ISZ T1 /SHOULD WE JUMP TO IT? 2620 004334 7410 SKP /NO 2621 004335 5527 JMP I CJUMP /YES 2622 004336 4557 TSTCOM /MORE LINE NUMBERS? 2623 004337 5342 JMP ONDON /NO 2624 004340 4533 GETC /YES: SKIP OVER "," 2625 004341 5332 JMP ONLP 2626 2627 004342 4567 ONDON, TSTEND 2628 004343 5324 JMP ERR300 /BAD SYNTAX 2629 004344 1077 TAD T2 /RESTORE OLD LINE NUMBER 2630 004345 3030 DCA LINENO 2631 004346 5526 JMP I CCONT /DO NEXT STATEMENT 2632 /THIS WAS NECESSARY TO ALLOW *NEXT* ON THE SAME LINE WITH OTHER 2633 /THINGS (IT FINDS THE BEGINNING OF THE LAST STAEMENT ON A LINE) 2634 004347 4543 POPF 2635 004350 7725 FLARG 2636 004351 3032 ENDFND, DCA SPACSW 2637 004352 4540 PUSHF 2638 004353 0017 TEXTP 2639 004354 4533 GETC 2640 004355 4567 TSTEND 2641 004356 5354 JMP .-2 2642 004357 4556 TSTCCR 2643 004360 5347 JMP ENDFND-2 /NOT LAST STATEMENT--TRY THE NEXT ONE 2644 004361 4543 POPF 2645 004362 0017 TEXTP 2646 004363 4533 GETC 2647 004364 4561 COMMAN /CHECK "NEXT" 2648 004365 2365 KWNEXT 2649 004366 5542 POPJ 2650 004371 0452 PAGE 004372 2534 004373 7646 004374 0031 004375 7706 004376 7763 004377 7724 2651 /GET A VARIABLE OR FUNCTION ROUTINE 2652 /EXIT WITH AC NON-ZERO IF FUNCTION 2653 /AC IS LIST POINTER UNLESS 2654 /AC IS NEGATIVE, THEN AC IS CHAR FOR USER FUNCTION 2655 004400 4560 GETVAR, TSTALP 2656 004401 4547 ERR220, ERROR /MUST BE LETTER 2657 004402 1026 TAD CHAR 2658 004403 1117 TAD M100 2659 004404 4551 RTL6 2660 004405 7010 RAR 2661 004406 3023 DCA ADD /SAVE FOR NAME 2662 004407 4533 GETC 2663 004410 4553 TESTC 2664 004411 5343 JMP SUBT /T - TEST FOR SUBSCRIPT 2665 004412 5215 JMP .+3 /N - ADD TO NAME 2666 004413 5741 JMP I FUNCTI /TRY FOR FUNCTION 2667 004414 5225 JMP GVS1 /O - TEST FOR STRING 2668 004415 4552 TESTN 2669 004416 5240 JMP LOOKUP /WAS A "." 2670 004417 7734 MDOLR, 200-"$ /SHOULD NEVER RETURN HERE 2671 004420 1075 TAD SORTCN /GET BINARY DIGIT VALUE 2672 004421 7105 CLL IAC RAL /MAKE NONZERO AND SHIFT INTO FIELD 2673 004422 1023 TAD ADD /FORM NEW NAME 2674 004423 3023 DCA ADD /STORE BACK 2675 004424 4533 GETC /SKIP OVER THE DIGIT 2676 004425 1026 GVS1, TAD CHAR 2677 004426 1217 TAD MDOLR /CHECK FOR STRING 2678 004427 7640 SZA CLA /STRING? 2679 004430 5235 JMP GVS2 /NO: CHECK FOR SUBSCRIPT 2680 004431 7340 L7777 /YES 2681 004432 3031 DCA MODE /SET STRING MODE 2682 004433 2023 ISZ ADD /ALSO INDICATE STRING IN ADD 2683 004434 4533 GETC /SKIP OVER THE "$" 2684 004435 4535 GVS2, SORTC 2685 004436 2712 TERMS-1 2686 004437 5343 JMP SUBT 2687 004440 4550 LOOKUP, UDF 2688 004441 1043 TAD LASTV 2689 004442 3025 GS1, DCA PT1 /POINT TO VARIABLES 2690 004443 1042 TAD STARTV 2691 004444 7041 CIA 2692 004445 1025 TAD PT1 2693 004446 7650 SNA CLA 2694 004447 5270 JMP GS2 /NOT FOUND AT ALL 2695 004450 1425 TAD I PT1 /GET NAME 2696 004451 7141 CLL CIA 2697 004452 1023 TAD ADD 2698 004453 7450 SNA 2699 004454 5735 JMP I GFND1I /FOUND NAME 2700 004455 7420 SNL 2701 004456 7041 CIA /POSITIVE DIFFERENCE 2702 004457 7106 CLL RTL /AC WILL BE 0 IF DIFFERENCE WAS 2000 2703 004460 7650 SNA CLA 2704 004461 4547 ERR130, ERROR /ERROR - A(I) AND A(I,I) CANNOT EXIST TOGETHER 2705 004462 1425 TAD I PT1 2706 004463 7710 SPA CLA 2707 004464 7340 L7777 /BACK 1 FOR SUBSCRIPT 2708 004465 1123 GS4, TAD M4 2709 004466 1025 TAD PT1 2710 004467 5242 JMP GS1 /LOOP 2711 2712 004470 1112 GS2, TAD C7 2713 004471 1043 TAD LASTV /ROOM LEFT 2714 004472 7141 CLL CIA 2715 004473 1015 TAD PDLXR 2716 004474 7630 SZL CLA 2717 004475 5301 JMP .+4 2718 004476 1042 TAD STARTV 2719 004477 3043 DCA LASTV /KILL EM-OVFLOW 2720 004500 4547 ERR100, ERROR /NO ROOM 2721 004501 7307 L0004 2722 004502 1043 TAD LASTV 2723 004503 3025 DCA PT1 /POINT TO NEW SPACE 2724 004504 1023 TAD ADD 2725 004505 7700 SMA CLA 2726 004506 5312 JMP GPUT1 2727 004507 1024 TAD SUBS 2728 004510 3425 DCA I PT1 /SET SUBSCRIPT 2729 004511 2025 ISZ PT1 2730 004512 1023 GPUT1, TAD ADD 2731 004513 3425 DCA I PT1 /SET NAME 2732 004514 6201 CDF 2733 004515 1025 TAD PT1 2734 004516 4536 PUSHA 2735 004517 7301 L0001 2736 004520 1043 TAD LASTV 2737 004521 3025 DCA PT1 /POINT TO NEW DATA SPACE 2738 004522 4541 POPA 2739 004523 3043 DCA LASTV /NEW LIMIT 2740 004524 7301 L0001 /SET UP FOR 0.0 OR NULL STRING 2741 004525 0023 AND ADD 2742 004526 7041 CIA 2743 004527 1334 TAD FLZROI 2744 004530 3332 DCA GPUT2 2745 004531 4545 FLPUT /INITIALIZE 2746 004532 6063 GPUT2, FLZERO /BECOMES FLZERO OR FLZERO-1 2747 004533 5737 JMP I GS5I 2748 004534 6063 FLZROI, FLZERO 2749 004535 4615 GFND1I, GFND1 2750 004536 4610 SUB2I, SUB2 2751 004537 4634 GS5I, GS5 2752 004540 5000 PARTSI, PARTST 2753 004541 4637 FUNCTI, FUNCT 2754 004542 2600 ECALLI, ECALL 2755 2756 004543 4570 SUBT, TSTLPR 2757 004544 5240 JMP LOOKUP /NOT SUBSCRIPTED 2758 004545 1023 TAD ADD 2759 004546 3101 DCA EFOP 2760 004547 4742 JMS I ECALLI /GET SUBSCRIPT 2761 004550 7330 L4000 2762 004551 4541 POPA 2763 004552 3023 DCA ADD /SAVE NAME 2764 004553 4507 JMS I INTEGE 2765 004554 7510 SPA 2766 004555 4547 SUB1, ERROR /TOO BIG OR NEGATIVE 2767 ERR230=SUB1 2768 004556 3024 DCA SUBS /SET SUBSCRIPT 2769 004557 4557 TSTCOM 2770 004560 5736 JMP I SUB2I /ONLY ONE SUBSCRIPT 2771 004561 4540 PUSHF /SAVE ADD,SUBS 2772 004562 0023 ADD 2773 004563 4537 PUSHJ /GET SECOND SUBSCRIPT 2774 004564 2611 EVAL-1 2775 004565 4543 POPF 2776 004566 0023 ADD 2777 004567 4507 JMS I INTEGE 2778 004570 3064 DCA AC2 2779 004571 1064 TAD AC2 2780 004572 0117 AND C7700 2781 004573 7640 SZA CLA 2782 004574 5355 JMP SUB1 /TOO BIG 2783 004575 1024 TAD SUBS 2784 004576 0117 AND C7700 2785 004577 7640 SZA CLA 2786 004600 5613 JMP I SUB1I /TOO BIG 2787 004601 1024 TAD SUBS 2788 004602 4551 RTL6 2789 004603 1064 TAD AC2 /FORM DOUBLE SUBSCRIPT 2790 004604 3024 DCA SUBS 2791 004605 7332 L2000 2792 004606 1023 TAD ADD 2793 004607 3023 DCA ADD /INDICATE 2 SUBSCRIPTS 2794 004610 4772 SUB2, JMS I LITS 2795 004611 5612 JMP I LKUPI 2796 2797 004612 4440 LKUPI, LOOKUP 2798 004613 4555 SUB1I, SUB1 2799 004614 4465 PGS4, GS4 2800 2801 004615 1023 GFND1, TAD ADD 2802 004616 7700 SMA CLA 2803 004617 5230 JMP GFND2 /NO SUBSCRIPT 2804 004620 7340 L7777 2805 004621 1025 TAD PT1 2806 004622 3025 DCA PT1 2807 004623 1425 TAD I PT1 /GET SUBSCRIPT 2808 004624 7041 CIA 2809 004625 1024 TAD SUBS 2810 004626 7640 SZA CLA 2811 004627 5614 JMP I PGS4 /WRONG SUBSCRIPT 2812 004630 6201 GFND2, CDF 2813 004631 7346 L7775 2814 004632 1025 TAD PT1 2815 004633 3025 DCA PT1 /POINT TO DATA 2816 004634 4544 GS5, FLGET /GET VARIABLE 2817 004635 7725 FLARG 2818 004636 5542 POPJ 2819 2820 004637 1026 FUNCT, TAD CHAR 2821 004640 0303 AND F37 2822 004641 1023 TAD ADD 2823 004642 4535 SORTC 2824 004643 2757 FUNL1-1 2825 004644 7410 SKP 2826 004645 5612 JMP I LKUPI /NOT A FUNCTION 2827 004646 1075 TAD SORTCN 2828 004647 7650 SNA CLA 2829 004650 5312 JMP FUNCT4 /USER FUNCTION 2830 004651 4540 PUSHF 2831 004652 0017 TEXTP 2832 004653 1026 TAD CHAR 2833 004654 4536 PUSHA 2834 004655 4533 GETC 2835 004656 1026 TAD CHAR 2836 004657 3025 DCA PT1 2837 004660 4541 POPA 2838 004661 3026 DCA CHAR 2839 004662 4543 POPF 2840 004663 0017 TEXTP 2841 004664 1075 TAD SORTCN 2842 004665 1311 TAD LFUNL2 2843 004666 3100 DCA T3 2844 004667 6211 CDF SWAP 2845 004670 1500 TAD I T3 /GET CORRECT CODE 2846 004671 6201 CDF 2847 004672 1025 TAD PT1 2848 004673 7640 SZA CLA 2849 004674 5612 JMP I LKUPI /WAS NOT A FUNCTION 2850 004675 1075 TAD SORTCN 2851 004676 4536 PUSHA /SAVE CONSTANT 2852 004677 4533 GETC 2853 004700 4533 FUNCT5, GETC 2854 004701 4535 SORTC 2855 004702 2712 TERMS-1 2856 004703 0037 F37, 37 2857 004704 4570 TSTLPR 2858 004705 4547 ERR240, ERROR /NO L-PAREN 2859 004706 4541 POPA 2860 004707 7001 IAC /FUNCTION CODE 2861 004710 5542 POPJ 2862 2863 004711 2445 LFUNL2, FUNL2-1 2864 004712 4533 FUNCT4, GETC 2865 004713 4560 TSTALP 2866 004714 4547 ERR250, ERROR /NOT LETTER 2867 004715 7350 L3777 2868 004716 1026 TAD CHAR 2869 004717 4536 PUSHA /SAVE CHAR OF USER FUNCTION 2870 004720 5300 JMP FUNCT5 2871 /*SORTJ* ROUTINE 2872 004721 0000 XSORTJ, 0 2873 004722 7450 SNA 2874 004723 1026 TAD CHAR /USE CHAR IF AC IS 0 2875 004724 7041 CIA 2876 004725 3100 DCA T3 2877 004726 1721 TAD I XSORTJ 2878 004727 3010 DCA XREG /SET TO LIST 2879 004730 2321 ISZ XSORTJ 2880 004731 6211 CDF 10 2881 004732 1410 TAD I XREG 2882 004733 7510 SPA 2883 004734 5347 JMP XSORT1 /END OF LIST 2884 004735 1100 TAD T3 2885 004736 7640 SZA CLA 2886 004737 5332 JMP .-5 /NO GO - LOOP 2887 004740 1010 TAD XREG 2888 004741 6201 CDF 2889 004742 1721 TAD I XSORTJ 2890 004743 3321 DCA XSORTJ 2891 004744 6211 CDF 10 2892 004745 1721 TAD I XSORTJ /GET ADDRESS 2893 004746 3321 DCA XSORTJ 2894 004747 7300 XSORT1, CLL CLA 2895 004750 2321 ISZ XSORTJ 2896 004751 6201 CDF 2897 004752 5721 JMP I XSORTJ 2898 /*RTL6* ROUTINE 2899 004753 0000 XRTL6, 0 2900 004754 7106 CLL RTL 2901 004755 7006 RTL 2902 004756 7006 RTL 2903 004757 5753 JMP I XRTL6 2904 /END OF A FUNCTION 2905 004760 4772 JMS I LITS 2906 004761 5367 JMP .+6 2907 004762 4772 ENDFUN, JMS I LITS 2908 004763 4541 POPA 2909 004764 3031 DCA MODE 2910 004765 4773 JMS I LITS+1 2911 004766 7725 FLARG 2912 004767 1047 TAD ERLINE 2913 004770 3030 DCA LINENO 2914 004771 5774 JMP I LITS+2 2915 004772 5000 LITS, PARTST 2916 004773 7137 FFPUT 2917 004774 2752 EVAR+4 2918 PAGE 2919 /PAREN TEST ROUTINE 2920 005000 0000 PARTST, 0 2921 005001 4541 POPA 2922 005002 3103 DCA LASTOP /SAVED BY *ECALL* 2923 005003 7344 L7776 2924 005004 1075 TAD SORTCN 2925 005005 7041 CIA 2926 005006 4541 POPA /CHECK MATCH 2927 005007 7640 SZA CLA 2928 005010 4547 ERR260, ERROR /NO MATCH 2929 005011 4533 GETC 2930 005012 5600 JMP I PARTST 2931 /NEW *SGN* FUNCTION 2932 005013 0000 SGN, 0 2933 005014 1066 TAD ACH 2934 005015 7450 SNA /NON ZERO? 2935 005016 5613 JMP I SGN /NO: ANSWER ALREADY IN FAC SO EXIT NOW 2936 005017 7710 SPA CLA /POSITIVE? 2937 005020 7001 IAC /NO: TURN SIGN BIT ON 2938 005021 7132 CLL CML RTR /TURN FIRST MANTISSA BIT ON 2939 005022 3066 DCA ACH /SET HIGH ORDER FAC 2940 005023 3067 DCA ACLO /CLEAR LOW ORDER FAC 2941 005024 7001 IAC 2942 005025 3065 DCA ACX /SET EXPONENT TO 1 2943 005026 5613 JMP I SGN /FAC=SGN(FAC0) 2944 2945 /NEW FUPARR ROUTINE 2946 /THIS ROUTINE IS WHAT DOES EXPONENTIALS (X^Y) IN EXPRESSIONS. 2947 /IF ABS(Y)<=16 AND FRACTION(Y)=0, THE POWER IS RAISED BY 2948 /REPEATED MULTIPLICATIONS OR DIVISION. 2949 /OTHERWISE, FAC=X^Y=EXP(LOG(X)*Y) 2950 005027 0000 FUPARR, FEXT /EXIT FROM THE @!?!#% INTERPRETER 2951 005030 1425 TAD I PT1 /GET BINARY EXPONENT OF POWER 2952 005031 7160 CLL CML CMA /LINK=1 AND AC=-AC-1 2953 005032 1112 TAD C7 2954 005033 7770 SPA SNA SZL CLA /IN RANGE 1<=AC<=5? 2955 005034 5272 JMP POWF+2 /NO: RAISE POWER BY LOGS 2956 005035 4641 JMS I FUPPUT /SAVE OLD FAC IN FTEMP1 2957 005036 5472 FTEMP1 2958 005037 1025 TAD PT1 /GET ADDRESS OF EXPONENT 2959 005040 4777 JMS I (FFGET /GET EXPONENT IN FAC 2960 005041 7137 FUPPUT, FFPUT /A HARMLESS POINTER 2961 005042 4776 JMS I (FRACT /NUM=FIX(FAC0); FAC=FRACTION(FAC0) 2962 005043 1066 TAD ACH 2963 005044 7640 SZA CLA /IS POWER INTEGRAL? 2964 005045 5270 JMP POWF /NO: RAISE POWER BY LOGS 2965 005046 4777 JMS I (FFGET /SET FAC=1 2966 005047 5500 ONE 2967 005050 1775 TAD I (NUM /GET POWER 2968 005051 7450 SNA /ZERO? 2969 005052 5277 JMP POWEXI /YES: ANSWER ALREADY IN FAC 2970 005053 7500 SMA 2971 005054 7041 CIA 2972 005055 3076 DCA T1 2973 005056 1775 TAD I (NUM 2974 005057 7710 SPA CLA /MULTIPLY OR DIVIDE? 2975 005060 1275 TAD FUPDIV /DIVIDE 2976 005061 1374 TAD (FFMPY 2977 005062 3077 DCA T2 /STORE ADDRESS OF APPROPRIATE ROUTINE 2978 005063 4477 JMS I T2 /MULTIPLY OR DIVIDE BY BASE 2979 005064 5472 FTEMP1 2980 005065 2076 ISZ T1 /DONE YET? 2981 005066 5263 JMP .-3 /NO 2982 005067 5277 JMP POWEXI 2983 005070 4777 POWF, JMS I (FFGET /GET THE BASE INTO THE FAC 2984 005071 5472 FTEMP1 2985 005072 4773 JMS I (LOG /HERE IS WHERE WE RAISE POWERS BY LOGS 2986 005073 1025 TAD PT1 2987 005074 4774 JMS I (FFMPY 2988 005075 0122 FUPDIV, FFDIV-FFMPY /A HARMLESS CONSTANT 2989 005076 4772 JMS I (EXPON /FAC=FAC0^PT1=EXP(LOG(FAC0)*PT1) 2990 005077 4532 POWEXI, FINT /ENTER INTERPRETER 2991 005100 0771 FJMP I (FLOP+1 /REENTER EXPRESSION EVALUATOR 2992 2993 005101 5425 OPTABL, FGET I PT1 2994 005102 1425 FADD I PT1 2995 005103 2425 FSUB I PT1 2996 005104 3425 FMPY I PT1 2997 005105 4425 FDIV I PT1 2998 005106 0772 PFUPAR&177+600 /FJMP I PFUPAR 2999 /*ECHO* AND *NO ECHO* STATEMENTS 3000 005107 7301 NOECHO, L0001 3001 005110 3076 ECHO, DCA T1 /AC11=NEW ECHO BIT 3002 005111 4567 TSTEND 3003 005112 4547 ERR003, ERROR /CONTINUED PAST RECOGNIZED END POINT 3004 005113 7344 L7776 3005 005114 6211 CDF 10 3006 005115 0404 AND I DBFKS2 /ZERO ECHO BIT 3007 005116 1076 TAD T1 /REPLACE ECHO BIT 3008 005117 3404 DCA I DBFKS2 /REPLACE WORD 3009 005120 6201 CDF 0 3010 005121 5526 JMP I CCONT 3011 005122 4533 FUNC16, GETC 3012 005123 1026 TAD CHAR 3013 005124 1370 TAD (-75 /-EQUALS 3014 005125 7640 SZA CLA 3015 005126 4547 ERR210, ERROR 3016 005127 4537 PUSHJ 3017 005130 2611 EVAL-1 3018 005131 4567 TSTEND 3019 005132 5326 JMP .-4 3020 005133 4541 POPA 3021 005134 3047 DCA ERLINE 3022 005135 4541 POPA 3023 005136 3043 DCA LASTV 3024 005137 4541 POPA 3025 005140 3075 DCA SORTCN 3026 005141 4543 POPF 3027 005142 0017 TEXTP 3028 005143 5767 JMP I (ENDFUN 3029 005144 0000 XFLGET, 0 3030 005145 7440 SZA 3031 005146 5351 JMP XFLGT2 3032 005147 7340 L7777 3033 005150 1025 TAD PT1 3034 005151 3010 XFLGT2, DCA XREG 3035 005152 7340 L7777 3036 005153 1744 TAD I XFLGET 3037 005154 3011 DCA XREG2 3038 005155 7346 L7775 3039 005156 3100 DCA T3 3040 005157 4550 UDF 3041 005160 1410 TAD I XREG /MOVE FLOATING DATUM DOWN 3042 005161 6201 CDF 3043 005162 3411 DCA I XREG2 3044 005163 2100 ISZ T3 3045 005164 5357 JMP .-5 3046 005165 2344 ISZ XFLGET 3047 005166 5744 JMP I XFLGET 3048 3049 005167 4762 PAGE 005170 7703 005171 2712 005172 5533 005173 5665 005174 6401 005175 5526 005176 5503 005177 7123 3050 005200 1026 EVALQ, TAD CHAR 3051 005201 1377 TAD (200-"" 3052 005202 7640 SZA CLA 3053 005203 4547 ERRBEX, ERROR 3054 005204 1376 TAD (ENDFUN+3 3055 005205 4536 PUSHA 3056 005206 4540 QINP, PUSHF 3057 005207 6062 FLZERO-1 3058 005210 1015 TAD PDLXR 3059 005211 3016 DCA AXIN 3060 005212 3024 DCA XCTIN 3061 005213 3023 DCA ADD 3062 005214 2032 ISZ SPACSW 3063 005215 7340 L7777 3064 005216 3031 DCA MODE 3065 005217 7327 L0006 3066 005220 7040 QINP6, CMA 3067 005221 3076 DCA T1 3068 005222 1026 QINP1, TAD CHAR 3069 005223 1377 TAD (200-"" 3070 005224 7640 SZA CLA 3071 005225 5234 JMP QINP2 3072 005226 1031 TAD MODE 3073 005227 3032 DCA SPACSW 3074 005230 4533 GETC 3075 005231 2031 ISZ MODE 3076 005232 5243 JMP QINPT 3077 005233 5222 JMP QINP1 3078 005234 4557 QINP2, TSTCOM 3079 005235 5241 JMP QINP3 3080 005236 1031 TAD MODE 3081 005237 7640 SZA CLA 3082 005240 5243 JMP QINPT 3083 005241 4556 QINP3, TSTCCR 3084 005242 5261 JMP QINP4 3085 005243 1023 QINPT, TAD ADD 3086 005244 2024 ISZ XCTIN 3087 005245 1117 TAD C7700 3088 005246 1125 TAD C77 3089 005247 4550 UDF 3090 005250 2076 ISZ T1 3091 005251 3416 DCA I AXIN 3092 005252 6201 CDF 3093 005253 7340 L7777 3094 005254 3031 DCA MODE 3095 005255 3032 DCA SPACSW 3096 005256 4543 POPF 3097 005257 0065 ACX 3098 005260 5542 POPJ 3099 005261 2076 QINP4, ISZ T1 3100 005262 5265 JMP QINP5 3101 005263 4533 GETC 3102 005264 5220 JMP QINP6 3103 005265 4474 QINP5, JMS I CPACK 3104 005266 4533 GETC 3105 005267 5222 JMP QINP1 3106 3107 005270 4537 LINPUT, PUSHJ 3108 005271 4400 GETVAR 3109 005272 7650 SNA CLA 3110 005273 4567 TSTEND 3111 005274 4547 ERR280, ERROR /SYNTAX, I GUESS, IN LINPUT 3112 005275 4540 PUSHF 3113 005276 0017 TEXTP 3114 005277 1026 TAD CHAR 3115 005300 4536 PUSHA 3116 005301 1023 TAD ADD 3117 005302 7004 RAL 3118 005303 7130 STL RAR 3119 005304 4536 PUSHA 3120 005305 4537 PUSHJ 3121 005306 0755 PAKLIN 3122 005307 1016 TAD AXIN 3123 005310 7041 CIA 3124 005311 1046 TAD COMBUF 3125 005312 3076 DCA T1 3126 005313 1076 TAD T1 3127 005314 7124 STL RAL 3128 005315 1024 TAD XCTIN 3129 005316 7040 CMA 3130 005317 4775 JMS I (FFLOAT 3131 005320 4541 POPA 3132 005321 3023 DCA ADD 3133 005322 3024 DCA SUBS 3134 005323 4537 PUSHJ 3135 005324 4440 LOOKUP 3136 005325 4545 FLPUT 3137 005326 0065 ACX 3138 005327 1046 TAD COMBUF 3139 005330 3016 DCA AXIN 3140 005331 2024 LNP1, ISZ SUBS 3141 005332 4537 PUSHJ 3142 005333 4440 LOOKUP 3143 005334 4545 FLPUT 3144 005335 6062 FLZERO-1 3145 005336 7346 L7775 3146 005337 3077 DCA T2 3147 005340 4550 UDF 3148 005341 1416 LNP3, TAD I AXIN 3149 005342 3425 DCA I PT1 3150 005343 2076 ISZ T1 3151 005344 5352 JMP LNP2 3152 005345 4541 POPA 3153 005346 3026 DCA CHAR 3154 005347 4543 POPF 3155 005350 0017 TEXTP 3156 005351 5526 JMP I CCONT 3157 005352 2025 LNP2, ISZ PT1 3158 005353 2077 ISZ T2 3159 005354 5341 JMP LNP3 3160 005355 6201 CDF 3161 005356 5331 JMP LNP1 3162 3163 /RANDOM NUMBER GENERATOR 3164 /NOTE: THIS "RANDOM NUMBER GENERATOR" WAS WRITTEN 3165 /WITHOUT AN ALGORITHM, SO IT IS NOTHING VERY 3166 /SPECIAL. IF ANYONE FEELS LIKE CHANGING IT, BE MY GUEST. 3167 005357 0000 RND, 0 3168 005360 1051 TAD FRNDX+1 3169 005361 7104 CLL RAL 3170 005362 1052 TAD FRNDX+2 3171 005363 3065 DCA ACX 3172 005364 1051 TAD FRNDX+1 3173 005365 7004 RAL 3174 005366 1051 TAD FRNDX+1 3175 005367 1052 TAD FRNDX+2 3176 005370 3067 DCA ACLO 3177 005371 1050 TAD FRNDX 3178 005372 5774 JMP I (RND1 /JUMP TO REST OF FUNCTION 3179 005373 5757 RND2, JMP I RND /RETURN HERE TO EXIT 3180 005374 4070 PAGE 005375 6164 005376 4765 005377 7736 3181 3182 /23-BIT EXTENDED FUNCTIONS 3183 3184 3185 /******SINE****** 3186 3187 005400 0000 FSIN, 0 3188 005401 4316 JMS NHNDLE /IF X<0,NEGATE X AND SET NFLAG 3189 005402 4662 JMS I FMPYL /X*2/PI 3190 005403 5575 TOVPI 3191 005404 4303 JMS FRACT /SAVE X IN TEMP1,THE INTEGER PART OF X IN NUM,AND GET FRACTIONAL PART IN FAC 3192 005405 7325 L0003 /GET INTEGER PART OF (2/PI)*X 3193 005406 0326 AND NUM /ISOLATE BITS 10,11 3194 005407 1212 TAD JMPI 3195 005410 3211 DCA .+1 /MAKE JUMP TO ARGUMENT REDUCING ROUTINE 3196 005411 5211 JMP . /AND ADJUST ARG ACCORDING TO QUADRANT OF X 3197 005412 5613 JMPI, JMP I .+1 3198 005413 5425 POLYSN /X IN QUAD1,SIN(X)=SIN(X) 3199 005414 5417 QUAD2 /X IN QUAD2,SIN(X)=SIN(1-X) 3200 005415 5421 QUAD3 /X IN QUAD3,SIN(X)=SIN(-X) 3201 005416 5423 QUAD4 /X IN QUAD4,SIN(X)=SIN(X-1) 3202 3203 005417 4666 QUAD2, JMS I FSUBL /X-1 3204 005420 5500 ONE 3205 005421 4665 QUAD3, JMS I FNEGL /1-X OR -X 3206 005422 5225 JMP POLYSN 3207 005423 4666 QUAD4, JMS I FSUBL /X-1 3208 005424 5500 ONE 3209 005425 4663 POLYSN, JMS I FPUTL /SAVE X 3210 005426 5472 FTEMP1 3211 005427 4662 JMS I FMPYL /U=X**2 3212 005430 0065 ACX 3213 005431 4663 JMS I FPUTL /SAVE U 3214 005432 5475 FTEMP2 3215 005433 4662 JMS I FMPYL /A7*U 3216 005434 6002 SINA7 3217 005435 4661 JMS I FADDL /A5+A7*U 3218 005436 5777 SINA5 3219 005437 4662 JMS I FMPYL /A5*U+A7*U**2 3220 005440 5475 FTEMP2 3221 005441 4661 JMS I FADDL /A3+A5(U)+A7(U**2) 3222 005442 5774 SINA3 3223 005443 4662 JMS I FMPYL /A3(U)+A5(U**2)+A7(U**3) 3224 005444 5475 FTEMP2 3225 005445 4661 JMS I FADDL /A1+A3(U)+A5(U**2)+A7(U**3) 3226 005446 5771 SINA1 3227 005447 4662 JMS I FMPYL /A1(X)+A3(X**3)+A5(X**5)+A7(X**7) 3228 005450 5472 FTEMP1 3229 005451 4326 JMS NCHK /IF NFLAG IS SET,SET SIN(X)=-SIN(X) 3230 005452 5600 JMP I FSIN /FAC=SIN(X) 3231 3232 3233 /******COSINE****** 3234 /USES SIN ROUTINE TO CALCULATE COS(X) 3235 3236 005453 0000 COS, 0 3237 005454 4661 JMS I FADDL /COS(X)=SIN(PI/2+X) 3238 005455 6005 PIOV2 3239 005456 4200 JMS FSIN 3240 005457 5653 JMP I COS /RETURN 3241 3242 005460 7123 FGETL, FFGET 3243 005461 6600 FADDL, FFADD 3244 005462 6401 FMPYL, FFMPY 3245 005463 7137 FPUTL, FFPUT 3246 005464 6523 FDIVL, FFDIV 3247 005465 1551 FNEGL, FFNEG 3248 005466 6726 FSUBL, FFSUB 3249 005467 6133 FIXL, FFIX 3250 005470 6164 FLOATL, FFLOAT 3251 005471 6212 FDIV1L, FFDIV1 3252 005472 0000 FTEMP1, 0 3253 005473 0000 0 3254 005474 0000 0 3255 005475 0000 FTEMP2, 0 /TWO TEMP STORAGE BLOCKS FOR FUNCTIONS 3256 005476 0000 0 3257 005477 0000 0 3258 005500 0001 ONE, 1 /1 3259 005501 2000 2000 3260 005502 0000 0 3261 3262 /ROUTINE TO SEPERATE THE INTEGER AND FRACTIONAL PARTS OF FAC 3263 /ORIGINAL FAC IS SAVED IN FTEMP1,THE INTEGER PORTION OF FAC IS 3264 /SAVED AT NUM,AND THE FRACTIONAL FORTION OF THE FAC IS LEFT IN THE FAC 3265 3266 005503 0000 FRACT, 0 3267 005504 4663 JMS I FPUTL /SAVE X 3268 005505 0070 OPX 3269 005506 4667 JMS I FIXL /INTEGER PORTION OF X 3270 005507 3326 DCA NUM /SAVE FIXED PORTION OF X 3271 005510 1326 TAD NUM /GET IT BACK 3272 005511 4670 JMS I FLOATL /FAC=FLOAT(FIX(X)) 3273 005512 4665 JMS I FNEGL /FAC=X-INT(X)=FRACTION (X) 3274 005513 4661 JMS I FADDL 3275 005514 0070 OPX 3276 005515 5703 JMP I FRACT /RETURN 3277 3278 /ROUTINE TO CHECK IF FAC<0; IF IT IS,FAC IS NEGATED AND NFLAG IS 3279 /SET TO 1 3280 3281 005516 0000 NHNDLE, 0 3282 005517 1066 TAD HORD /FETCH HIGH ORDER MANTISSA 3283 005520 7700 SMA CLA /IS IT*<0? 3284 005521 5324 JMP NFLGST /NO-CLEAR NFLAG 3285 005522 4665 JMS I FNEGL /YES-NEGATE FAC 3286 005523 7001 IAC /AND SET NFLAG 3287 005524 3333 NFLGST, DCA NFLAG 3288 005525 5716 JMP I NHNDLE 3289 3290 /ROUTINE TO NEGATE FAC IF NFLAG IS NOT =0 3291 3292 005526 0000 NCHK, 0 /LOC ALSO USED FOR TEMP STORAGE 3293 005527 1333 TAD NFLAG 3294 005530 7640 SZA CLA /IS NFLAG=0? 3295 005531 4665 JMS I FNEGL /NO-NEGATE FAC 3296 005532 5726 JMP I NCHK /YES-RETURN 3297 3298 NUM=NCHK 3299 3300 /******EXPONENTIAL****** 3301 3302 005533 0000 EXPON, 0 /LOC USED FOR TEMP STORAGE BY SIN,ARCTAN 3303 005534 4662 JMS I FMPYL /Y=XLOG2(E) 3304 005535 6010 LOG2E 3305 005536 4303 JMS FRACT /GET FRACTIONAL PART OF Y 3306 005537 4662 JMS I FMPYL /(FRACTION(Y))*(LN2/2) 3307 005540 6013 LN2OV2 3308 005541 4663 JMS I FPUTL /SAVE Y 3309 005542 5472 FTEMP1 3310 005543 4662 JMS I FMPYL /Y**2 3311 005544 0065 ACX 3312 005545 4661 JMS I FADDL /B1+Y**2 3313 005546 6016 EXPB1 3314 005547 4671 JMS I FDIV1L /A1/(B1+Y**2) 3315 005550 6021 EXPA1 3316 005551 4661 JMS I FADDL /A0+A1/(B1+Y**2) 3317 005552 6024 EXPA0 3318 005553 4666 JMS I FSUBL /A0-Y+A1/(B1+Y**2) 3319 005554 5472 FTEMP1 3320 005555 4663 JMS I FPUTL /SAVE 3321 005556 5475 FTEMP2 3322 005557 4660 JMS I FGETL /GET Y 3323 005560 5472 FTEMP1 3324 005561 2065 ISZ EXP /MULT. BY 2=2Y 3325 005562 7000 NOP 3326 005563 4664 JMS I FDIVL /2Y/(A0-Y+A1/(B1+Y**2)) 3327 005564 5475 FTEMP2 3328 005565 4661 JMS I FADDL /1+2Y/(AO-Y+A1/(B1+Y**2)) 3329 005566 5500 ONE 3330 005567 4662 JMS I FMPYL /[1+2Y/(A0-Y+A1/(B1+Y**2))]**2=EXP(Y) 3331 005570 0065 ACX 3332 005571 1326 TAD NUM 3333 005572 1065 TAD EXP /EXP(X)=(2**N)(EXPY) 3334 005573 3065 DCA EXP 3335 005574 5733 JMP I EXPON /FAC=EXPON(X) 3336 3337 NFLAG=EXPON 3338 3339 /CONSTANT THAT WOULDN'T FIT ELSEWHERE 3340 005575 0000 TOVPI, 0 /.6366198 3341 005576 2427 2427 3342 005577 6302 6302 3343 PAGE 3344 3345 /******ARC TANGENT****** 3346 3347 005600 0000 ATN, 0 3348 005601 4663 JMS I NHNDLL /IF X<0,SET NFLAG AND NEGATE 3349 005602 4760 JMS I FPUTM /SAVE X 3350 005603 5472 FTEMP1 3351 005604 4765 JMS I FSUBM /X-1 3352 005605 5500 ONE 3353 005606 1066 TAD HORD /GET HI MANTISSA 3354 005607 7710 SPA CLA /WAS X>1? 3355 005610 5220 JMP ARGPOL /NO-CLEAR GT1FLG 3356 005611 4770 JMS I FGETM /YES-ATAN(X)=PI/2-ATAN(1/X) 3357 005612 5500 ONE 3358 005613 4763 JMS I FDIVM /1/X 3359 005614 5472 FTEMP1 3360 005615 4760 JMS I FPUTM 3361 005616 5472 FTEMP1 3362 005617 7001 IAC /SET GT1FLG 3363 005620 3265 ARGPOL, DCA GT1FLG 3364 005621 4770 JMS I FGETM /GET X OR 1/X 3365 005622 5472 FTEMP1 3366 005623 4761 JMS I FMPYM /Y**2 3367 005624 0065 ACX 3368 005625 4760 JMS I FPUTM /SAVE 3369 005626 5475 FTEMP2 3370 005627 4762 JMS I FADDM /Y**2+B3 3371 005630 6051 ATANB3 3372 005631 4764 JMS I FDIV1M /A3/(Y**2+B3) 3373 005632 6046 ATANA3 3374 005633 4762 JMS I FADDM /B2+A3/(Y**2+B3) 3375 005634 6043 ATANB2 3376 005635 4762 JMS I FADDM /Y**2+B2+A3/(Y**2+B3) 3377 005636 5475 FTEMP2 3378 005637 4764 JMS I FDIV1M /A2/(Y**2+B2+A3/(Y**2+B3)) 3379 005640 6040 ATANA2 3380 005641 4762 JMS I FADDM /B1+A2/(Y**2+B2+A3/(Y**2+B3)) 3381 005642 6035 ATANB1 3382 005643 4762 JMS I FADDM /Y**2+B1+A2/(Y**2+B2+A3/(Y**2+B3)) 3383 005644 5475 FTEMP2 3384 005645 4764 JMS I FDIV1M /A1/(Y**2+B1+A2/(Y**2+B2+A3/(Y**2+B3))) 3385 005646 6032 ATANA1 3386 005647 4762 JMS I FADDM /B0+A1/(Y**2+B1+A2/(Y**2+B2+A3/(Y**2+B3))) 3387 005650 6027 ATANB0 3388 005651 4761 JMS I FMPYM /ATAN(Y)=X*(B0+A1/(Y**2+B1+A2/(Y**2+B2+A3/(Y**2+B3)))) 3389 005652 5472 FTEMP1 3390 005653 1265 TAD GT1FLG /WAS X>1? 3391 005654 7650 SNA CLA 3392 005655 5261 JMP NGT /NO-TEST IF X<0? 3393 005656 4766 JMS I FNEGM /ATAN(X)=PI/2-ATAN(1/X) 3394 005657 4762 JMS I FADDM 3395 005660 6005 PIOV2 3396 005661 4664 NGT, JMS I NCHKL /IF NFLAG SET,NEGATE FAC 3397 005662 5600 JMP I ATN /FAC=ATAN(X) 3398 005663 5516 NHNDLL, NHNDLE 3399 005664 5526 NCHKL, NCHK 3400 3401 /******NAPERIAN LOGARITHM****** 3402 3403 GTFLG=ATN 3404 3405 005665 0000 LOG, 0 3406 005666 1066 TAD HORD 3407 005667 7550 SPA SNA /X<0 OR X=0? 3408 005670 4547 ERR010, ERROR /LOG OF A NEGATIVE NUMBER 3409 005671 7106 CLL RTL 3410 005672 7450 SNA /NO-HORD=2000? 3411 005673 1065 TAD EXP /YES-EXP=1? 3412 005674 7041 CMA IAC 3413 005675 7001 IAC 3414 005676 7450 SNA 3415 005677 1067 TAD LORD /YES-LORD=0? 3416 005700 7640 SZA CLA 3417 005701 5306 JMP POLYNL /NO-ARG IS LEGAL AND NOT 1 3418 005702 3065 DCA EXP 3419 005703 3067 DCA LORD 3420 005704 3066 LTRPRT, DCA HORD 3421 005705 5665 JMP I LOG /YES-LOG(1)=0 3422 005706 1065 POLYNL, TAD EXP 3423 005707 3200 DCA GTFLG /SAVE EXPONENT FOR LATER 3424 005710 3065 DCA EXP /ISOLATE MANTISSA IN FAC 3425 005711 4760 JMS I FPUTM /SAVE F 3426 005712 5472 FTEMP1 3427 005713 4762 JMS I FADDM /F+SQR(.5) 3428 005714 6054 SQRP5 3429 005715 4760 JMS I FPUTM /SAVE 3430 005716 5475 FTEMP2 3431 005717 4770 JMS I FGETM 3432 005720 5472 FTEMP1 3433 005721 4765 JMS I FSUBM /F-SQR(.5) 3434 005722 6054 SQRP5 3435 005723 4763 JMS I FDIVM /Z=F+SQR(.5)/F-SQR(.5) 3436 005724 5475 FTEMP2 3437 005725 4760 JMS I FPUTM 3438 005726 5472 FTEMP1 3439 005727 4761 JMS I FMPYM /Z**2 3440 005730 0065 ACX 3441 005731 4760 JMS I FPUTM 3442 005732 5475 FTEMP2 3443 005733 4761 JMS I FMPYM /C5(Z**2) 3444 005734 6065 LOGC5 3445 005735 4762 JMS I FADDM /C3+C5(Z**2) 3446 005736 6174 LOGC3 3447 005737 4761 JMS I FMPYM /C3(Z**2)+C5(Z**4) 3448 005740 5475 FTEMP2 3449 005741 4762 JMS I FADDM /C1+C3(Z**2)+C5(Z**4) 3450 005742 6376 LOGC1 3451 005743 4761 JMS I FMPYM /C1(Z)+C3(Z**3)+C5(Z**5) 3452 005744 5472 FTEMP1 3453 005745 4765 JMS I FSUBM /C1(Z)+C3(Z**3)+C5(Z**5)-1/2=LOG2(F) 3454 005746 6057 ONEHAF 3455 005747 4760 JMS I FPUTM /SAVE LOG2(F) 3456 005750 5475 FTEMP2 3457 005751 1200 TAD GTFLG /I 3458 005752 4767 JMS I FLOATM 3459 005753 4762 JMS I FADDM /I+LOG2(F) 3460 005754 5475 FTEMP2 3461 005755 4761 JMS I FMPYM /[I+LOG2(F)]*LOGE(2)=LOGE(X) 3462 005756 6207 LN2 3463 005757 5665 JMP I LOG /FAC=LN(X) 3464 3465 GT1FLG=LOG 3466 005760 7137 FPUTM, FFPUT 3467 005761 6401 FMPYM, FFMPY 3468 005762 6600 FADDM, FFADD 3469 005763 6523 FDIVM, FFDIV 3470 005764 6212 FDIV1M, FFDIV1 3471 005765 6726 FSUBM, FFSUB 3472 005766 1551 FNEGM, FFNEG 3473 005767 6164 FLOATM, FFLOAT 3474 005770 7123 FGETM, FFGET 3475 3476 /CONSTANTS USED BY VARIOUS FUNCTIONS 3477 3478 005771 0001 SINA1, 1 /1.5707949 3479 005772 3110 3110 3480 005773 3747 3747 3481 005774 0000 SINA3, 0 /-.64592098 3482 005775 5325 5325 3483 005776 1167 1167 3484 005777 7775 SINA5, 7775 /.07948766 3485 006000 2426 2426 3486 006001 2466 2466 3487 006002 7771 SINA7, 7771 /-.004362476 3488 006003 5610 5610 3489 006004 3164 3164 3490 006005 0001 PIOV2, 1 /1.5707963 3491 006006 3110 3110 3492 006007 3756 3756 3493 006010 0001 LOG2E, 1 /1.442695 3494 006011 2705 2705 3495 006012 2434 2434 3496 006013 7777 LN2OV2, 7777 /.34657359 3497 006014 2613 2613 3498 006015 4415 4415 3499 006016 0006 EXPB1, 6 /60.090191 3500 006017 3602 3602 3501 006020 7054 7054 3502 006021 0012 EXPA1, 12 /-601.80427 3503 006022 5514 5514 3504 006023 3104 3104 3505 006024 0004 EXPA0, 4 /12.015017 3506 006025 3001 3001 3507 006026 7301 7301 3508 006027 7776 ATANB0, 7776 /.17465544 3509 006030 2626 2626 3510 006031 6157 6157 3511 006032 0002 ATANA1, 2 /3.7092563 3512 006033 3553 3553 3513 006034 1071 1071 3514 006035 0003 ATANB1, 3 /6.762139 3515 006036 3303 3303 3516 006037 0670 670 3517 006040 0003 ATANA2, 3 /-7.10676 3518 006041 4344 4344 3519 006042 5267 5267 3520 006043 0002 ATANB2, 2 /3.3163354 3521 006044 3241 3241 3522 006045 7554 7554 3523 006046 7777 ATANA3, 7777 /-.26476862 3524 006047 5703 5703 3525 006050 4040 4040 3526 006051 0001 ATANB3, 1 /1.44863154 3527 006052 2713 2713 3528 006053 3140 3140 3529 006054 0000 SQRP5, 0 /.7071068 3530 006055 2650 2650 3531 006056 1170 1170 3532 006057 0000 ONEHAF, 0 /.5 3533 006060 2000 2000 3534 006061 0000 0 3535 006062 7777 7777 /"" (NULL STRING) 3536 006063 0000 FLZERO, 0 /0.0 3537 006064 0000 0 3538 006065 0000 LOGC5, 0 /.59897865 3539 006066 2312 2312 3540 006067 5525 5525 3541 3542 /******FLOATING POINT INTERPRETER****** 3543 006070 0000 FPT, 0 3544 006071 1670 FPNEXT, TAD I FPT /GET NEXT FLTG. PT. INSTR. 3545 006072 3070 DCA OPX /STORE IN A TEMPORARY 3546 006073 1070 TAD OPX /GET IT BACK AND PICK OFF 3547 006074 0113 AND C177 /THE ADDRESS 3548 006075 3071 DCA OPH /STORE THAT AWAY 3549 006076 1070 TAD OPX /PICK OFF THE PAGE BIT 3550 006077 0325 AND K200 /AND MAKE A 7600 IF CURRENT PAGE 3551 006100 7041 CMA IAC /OR 0 IF PAGE 0 3552 006101 0270 AND FPT /THIS SETS UP HI ORDER 5 BITS OF ADDR 3553 006102 2270 ISZ FPT /INCREMENT FLTG. P.C. 3554 006103 1071 TAD OPH /ADD IN LOW ORDER 7 BITS OF ADDR 3555 006104 3071 DCA OPH /THIS IS FINAL ADDR. UNLESS INDIRECT 3556 006105 1070 TAD OPX /NOE DECODE THE OP CODE 3557 006106 7106 CLL RTL 3558 006107 7006 RTL 3559 006110 0112 AND C7 /PICK OFF THE OP CODE 3560 006111 1324 TAD CTABLE /CALCULATE SUBROUTINE ADDRESS 3561 006112 3070 DCA OPX 3562 006113 1470 TAD I OPX 3563 006114 3070 DCA OPX /AND STORE IN A TEMPORARY 3564 006115 7420 SNL /LINK HOLDS INDIRECT BIT 3565 006116 1071 TAD OPH /DIRECT ADDRESSING 3566 006117 7430 SZL 3567 006120 1471 TAD I OPH /INDIRECT ADDRESSING 3568 006121 4470 JMS I OPX /DO OPERATION 3569 006122 5271 JMP FPNEXT /ONLY FFNOR RETURNS TO HERE 3570 006123 5271 JMP FPNEXT /GO DO NEXT INSTRUCTION 3571 006124 6177 CTABLE, TABLE 3572 006125 0200 K200, 200 3573 3574 006126 0000 FFJMP, 0 /FLOATING JUMP ROUTINE 3575 006127 7450 SNA /EXIT INTERPRETER? 3576 006130 5670 JMP I FPT /YES-EXIT 3577 006131 3270 DCA FPT /CHANGE FLTG. P.C. 3578 006132 5271 JMP FPNEXT /EXECUTE THAT INSTRUCTION 3579 3580 /******FIX****** 3581 /ROUTINE TO FIX ANY FLOATING NUMBER IN FAC BETWEEN -2047 AND +2047 TO 3582 /A TWELVE BIT INTEGER AND LEAVE RESULT IN AC 3583 3584 006133 0000 FFIX, 0 3585 006134 7200 CLA 3586 006135 1065 TAD EXP /FETCH EXPONENT 3587 006136 7540 SZA SMA /IS NUMBER <1? 3588 006137 5342 JMP .+3 /NO-CONTINUE ON 3589 006140 7200 FTRPRT, CLA 3590 006141 5733 JMP I FFIX /YES-EXIT WITH 0 IN AC 3591 006142 1362 TAD M13 /SET BINARY POINT AT 11 3592 006143 7450 SNA /PLACES TO RIGHT OF CURRENT POINT? 3593 006144 5360 JMP FIXDNE /NO-NUMBER IS ALREADY FIXED THEN 3594 006145 7500 SMA /YES-IS NUMBER TOO LARGE TO FIX? 3595 006146 4547 ERR040, ERROR /YES-OVERFLOW ERROR 3596 006147 3065 DCA EXP /NO-SET SCALE COUNT 3597 006150 7100 FIXLP, CLL /0 IN LINK 3598 006151 1066 TAD HORD /GET HIGH MANTISSA 3599 006152 7510 SPA /IS IT <0? 3600 006153 7020 CML /YES-PUT A 1 IN LINK 3601 006154 7010 RAR /SCALE RIGHT 3602 006155 3066 DCA HORD /SAVE 3603 006156 2065 ISZ EXP /DONE YET? 3604 006157 5350 JMP FIXLP /NO 3605 006160 1066 FIXDNE, TAD HORD /YES-ANSWER IN AC 3606 006161 5733 JMP I FFIX /RETURN 3607 3608 006162 7765 M13, -13 /-11 DECIMAL 3609 006163 0013 C13, 13 /11 DECIMAL 3610 3611 /******FLOAT****** 3612 /ROUTINE TO FLOAT ANY INTEGER IN AC INTO FAC 3613 3614 006164 0000 FFLOAT, 0 3615 006165 3066 DCA HORD /SAVE # TO BE FLOATED 3616 006166 3067 DCA LORD /CLEAR LOW MANTISSA 3617 006167 1363 TAD C13 /11(10) INTO EXPONENT 3618 006170 3065 DCA EXP 3619 006171 4773 JMS I FNORL /NORMALIZE 3620 006172 5764 JMP I FFLOAT /RETURN 3621 006173 7076 FNORL, FFNOR /LINK TO NORMALIZE ROUTINE 3622 006174 0000 LOGC3, 0 /.9614706 3623 006175 3661 3661 3624 006176 0566 566 3625 3626 /******FLOATING POINT INTERPRETER DISPATCH TABLE****** 3627 006177 6126 TABLE, FFJMP /0 3628 006200 6600 FFADD /1 3629 006201 6726 FFSUB /2 3630 006202 6401 FFMPY /3 3631 006203 6523 FFDIV /4 3632 006204 7123 FFGET /5 3633 006205 7137 FFPUT /6 3634 006206 7076 FFNOR /7 3635 3636 006207 0000 LN2, 0 /.6931472 3637 006210 2613 2613 3638 006211 4415 4415 3639 3640 / 3641 /INVERSE FLOATING DIVIDE 3642 /FSWITCH=1 3643 /THIS IS OP/FAC 3644 / 3645 006212 0000 FFDIV1, 0 3646 006213 7450 SNA /WHICH MODE OF CALL? 3647 006214 1612 TAD I FFDIV1 /CALLED BY USER-GET ADDR. 3648 006215 4643 JMS I ARGETL /PICK UP OPERAND 3649 006216 1067 TAD ACLO /SWAP THE FAC AND OPERAND 3650 006217 3072 DCA OPL /THERE IS A POINTER TO OPL 3651 006220 1464 TAD I AC2 /IN AC2 LEFT FROM ARGET SUBR. 3652 006221 3067 DCA ACLO 3653 006222 1065 TAD ACX /MIGHT AS WELL SUBTRACT THE 3654 006223 7141 CLL CMA IAC /EXPONENTS HERE (SAVES A WORD) 3655 006224 1070 TAD OPX /THEN ZERO OPX SO WILL NOT 3656 006225 3065 DCA ACX /MESS UP WHEN ITS DONE AGAIN 3657 006226 3070 DCA OPX /LATER (SEE DIV. ROUTINE) 3658 006227 1066 TAD ACH 3659 006230 3064 DCA AC2 /NOW SWAP HIGH ORDER MANTISSAS 3660 006231 1071 TAD OPH 3661 006232 3066 DCA ACH 3662 006233 1064 TAD AC2 3663 006234 3071 DCA OPH 3664 006235 1212 TAD FFDIV1 /NOW KLUDGE UP SUBROUTINE LINKAGE 3665 006236 3645 DCA I FFDP 3666 006237 1246 TAD KFD1 3667 006240 3644 DCA I MDSETP 3668 006241 5642 JMP I MD1P /GO SET UP AND DIVIDE 3669 3670 006242 7032 MD1P, MD1 3671 006243 7062 ARGETL, ARGET 3672 006244 7030 MDSETP, MDSET 3673 006245 6523 FFDP, FFDIV 3674 006246 6527 KFD1, FFD1 3675 AN1=T1 3676 AN2=FFDIV1 3677 3678 /FLOATING SQUARE ROOT 3679 /USES A HARDWARE TYPE ALGORITHM FOR BINARY SQUARE ROOTS 3680 /REF: THE LOGIC OF COMPUTER ARITHMETIC-IVAN FLORES-P 409 3681 / 3682 006247 0000 FROOT, 0 3683 006250 7332 CLA CLL CML RTR /SET RESULT TO 2000;0000 3684 006251 3076 DCA AN1 3685 006252 3212 DCA AN2 3686 006253 1375 TAD KM22 /SET COUNTER FOR DEVELOPING 22 BITS OF ERESULT 3687 006254 3064 DCA AC2 /ALREADY HAVE 1 3688 006255 1066 TAD ACH 3689 006256 7450 SNA 3690 006257 5647 JMP I FROOT /ZERO FAC-NORMALIZED!-RETN. SAME 3691 006260 7710 SPA CLA 3692 006261 4547 ERR020, ERROR /ATTEMPT TO TAKE SQUARE ROOT OF A NEGATIVE NUMBER 3693 006262 1065 TAD ACX /GET EXPONENT OF FAC 3694 006263 7510 SPA /IF NEGATIVE-MUST PROPAGATE SIGN 3695 006264 7020 CML 3696 006265 7010 RAR /DIVIDE EXP. BY 2 3697 006266 3065 DCA ACX /STORE IT BACK 3698 006267 7430 SZL /INCREMENT EXP. IF ORIGINAL EXP 3699 006270 2065 ISZ ACX /WAS ODD 3700 006271 7000 NOP 3701 006272 7420 SNL /DO A PRE-SHIFT FOR EVEN EXPONENTS 3702 006273 4774 JMS I AL1K /SO FIRST BIT PAIR IS 10 NOT 01 3703 006274 7344 CLA CLL CMA RAL /SET COUNTER FOR DETECTING A 3704 006275 3373 DCA ZCNT /ZERO REMAINDER 3705 006276 7332 CLA CLL CML RTR /SET UP POSITION OF TRIAL BIT 3706 006277 7012 RTR /FOR FIRST PASS THRU LOOP 3707 006300 3071 DCA OPH 3708 006301 3072 DCA OPL 3709 006302 1372 TAD K6000 /GET A FAST FIRST BIT-WE KNOW 3710 006303 1066 TAD ACH /THIS WILL WORK SINCE # IS NORMALIZED 3711 006304 3066 DCA ACH /IF # IS A POWER OF TWO, AND A PERFECT 3712 006305 1066 TAD ACH /SQUARE-WE ARE DONE HERE! 3713 006306 7450 SNA /WELL IS IT? 3714 006307 1067 TAD ACLO /COULD BE-CHECK LOW ORDER 3715 006310 7650 SNA CLA 3716 006311 5365 JMP DONE /WHOOPPEE-WE WIN BIG. 3717 006312 5322 JMP LOP01 /NOPE-LOOP DON'T SHIFT FIRST TIME 3718 006313 1071 SLOOP, TAD OPH /SHIFT TRIAL BIT 1 PLACE 3719 006314 7110 CLL RAR /TO THE RIGHT 3720 006315 3071 DCA OPH /AND STORE BACK 3721 006316 1072 TAD OPL 3722 006317 7010 RAR 3723 006320 3072 DCA OPL 3724 006321 4774 JMS I AL1K /SHIFT FAC LEFT 1 PLACE 3725 006322 1072 LOP01, TAD OPL /ADD TRIAL BIT TO`ANSWER 3726 006323 1212 TAD AN2 /SO FAR 3727 006324 7141 CLL CMA IAC /NEGATE IT 3728 006325 1067 TAD ACLO /AND ADD TO FAC (REMAINDER SO FAR) 3729 006326 7450 SNA /IS RESULT ZERO? 3730 006327 2373 ISZ ZCNT /YES-INCREMENT COUNTER 3731 006330 3062 DCA TM /STORE RESULT IN TEMPORARY 3732 3733 006331 7024 CML RAL /ADD CARRY TO HIGH ORDER FOR SUBTRACT 3734 006332 1071 TAD OPH /ADD TRIAL BIT 3735 006333 1076 TAD AN1 /ADD RESULT SO FAR (HI ORDER) 3736 006334 7141 CLL CMA IAC /AND SUBTRACT FROM HI ORDER FAC 3737 006335 1066 TAD ACH 3738 006336 7420 SNL /RESULT NEGATIVE? 3739 006337 5361 JMP GON /YES-NEXT RESULT BIT IS 0 3740 006340 7440 SZA /NO-IS HI ORDER RESULT=0? 3741 006341 5346 JMP LOP02 /NO-GO ON 3742 006342 2373 ISZ ZCNT /YES-WAS LOW ORDER =0? 3743 006343 5346 JMP .+3 /NO-GO ON 3744 006344 7040 CMA /YES-REM.=0-SET COUNTER SO 3745 006345 3064 DCA AC2 /LOOKS LIKE WE'RE DONE 3746 006346 3066 LOP02, DCA ACH /STORE HIGH ORDER REM. IN FAC 3747 006347 1062 TAD TM /STORE LO ORDER REM. IN FAC 3748 006350 3067 DCA ACLO 3749 006351 1072 TAD OPL /TRIAL BIT SHIFTED LEFT 1 IS 3750 006352 7104 CLL RAL /RESULT BIT-ADD IT TO ROOT DEVELOPED 3751 006353 1212 TAD AN2 /SO FAR 3752 006354 3212 DCA AN2 3753 006355 1071 TAD OPH 3754 006356 7004 RAL 3755 006357 1076 TAD AN1 3756 006360 3076 DCA AN1 3757 006361 7344 GON, CLA CLL CMA RAL /RESET COUNTER FOR ZERO REM. 3758 006362 3373 DCA ZCNT 3759 006363 2064 ISZ AC2 /DONE ALL 23 RESULT BITS? 3760 006364 5313 JMP SLOOP /NO-GO ON 3761 006365 1076 DONE, TAD AN1 /YES-STORE ANSWER IN FAC 3762 006366 3066 DCA ACH /ITS NORMALIZED ALREADY 3763 006367 1212 TAD AN2 3764 006370 3067 DCA ACLO 3765 006371 5647 JMP I FROOT /AND RETURN 3766 3767 006372 6000 K6000, 6000 3768 006373 0000 ZCNT, 0 3769 006374 6664 AL1K, AL1 3770 006375 7756 KM22, -22 3771 006376 0002 LOGC1, 2 /2.8853913 3772 006377 2705 2705 3773 006400 2440 2440 3774 /FLOATING MULTIPLY-DOES 2 24X12 BIT MULTIPLIES 3775 006401 0000 FFMPY, 0 3776 006402 7450 SNA /WHICH MODE OF CALL? 3777 006403 1601 TAD I FFMPY /CALLED BY USER-GET OPERAND ADDR. 3778 006404 4775 JMS I MDSETK /SET UP FOR MPY-OPX IN AC ON RETN. 3779 006405 1065 TAD ACX /DO EXPONENT ADDITION 3780 006406 3065 DCA ACX /STORE FINAL EXPONENT 3781 006407 3346 DCA DV24 /ZERO TEM STORAGE FOR MPY ROUTINE 3782 006410 3064 DCA AC2 3783 006411 1066 TAD ACH /IS FAC=0? 3784 006412 7650 SNA CLA 3785 006413 3065 DCA ACX /YES-ZERO EXPONENT 3786 006414 4244 JMS MP24 /NO-MULTIPLY FAC BY LOW ORDER OPR. 3787 006415 1071 TAD OPH /NOW MULTIPLY FAC BY HI ORDER MULTIPLIER 3788 006416 3072 DCA OPL 3789 006417 4244 JMS MP24 3790 006420 1064 TAD AC2 /STORE RESULT BACK IN FAC 3791 006421 3067 RTZRO, DCA ACLO /LOW ORDER 3792 006422 1346 TAD DV24 /HIGH ORDER 3793 006423 3066 DCA ACH 3794 006424 1066 TAD ACH /DO WE NEED TO NORMALIZE? 3795 006425 7004 RAL 3796 006426 7700 SMA CLA 3797 006427 5236 JMP SHLFT /YES-DO IT FAST 3798 006430 3063 MDONE, DCA AC1 /NO-ZERO OVERFLOW WD(DO I NEED THIS???) 3799 006431 2201 ISZ FFMPY /BUMP RETURN POINTER 3800 006432 2062 ISZ TM /SHOULD RESULT BE NEGATIVE? 3801 006433 5601 JMP I FFMPY /NOPE-RETN. 3802 006434 4774 JMS I FFNEGR /YES-NEGATE IT 3803 006435 5601 JMP I FFMPY /RETURN 3804 006436 7040 SHLFT, CMA /SUBTRACT 1 FROM EXP. 3805 006437 1065 TAD ACX 3806 006440 3065 DCA ACX 3807 006441 4643 JMS I AL1PTR /SHIFT FAC LEFT 1 BIT 3808 006442 5231 JMP MDONE+1 /DONE. 3809 006443 6664 AL1PTR, AL1 3810 / 3811 /24 BIT BY 12 BIT MULTIPLY. MULTIPLIER IS IN OPL 3812 /MULTIPLICAND IS IN ACH AND ACLO 3813 /RESULT LEFT IN DV24,AC2, AND AC1 3814 006444 0000 MP24, 0 3815 006445 1376 TAD KKM12 /SET UP 12 BIT COUNTER 3816 006446 3070 DCA OPX 3817 006447 1072 TAD OPL /IS MULTIPLIER=0? 3818 006450 7440 SZA 3819 006451 5255 JMP MPLP1 /NO-GO ON 3820 006452 3063 DCA AC1 /YES-INSURE RESULT=0 3821 006453 5644 JMP I MP24 /RETURN 3822 006454 1072 MPLP, TAD OPL /SHIFT A BIT OUT OF LOW ORDER 3823 006455 7010 MPLP1, RAR /OF MULTIPLIER AND INTO LINK 3824 006456 3072 DCA OPL 3825 006457 7420 SNL /WAS IT A 1? 3826 006460 5267 JMP MPLP2 /NO-0-JUST SHIFT PARTIAL PRODUCT 3827 006461 7100 CLL /YES-ADD MULTIPLICAND TO PARTIAL PRODUCT 3828 006462 1064 TAD AC2 3829 006463 1067 TAD ACLO /LOW ORDER 3830 006464 3064 DCA AC2 3831 006465 7004 RAL /PROPAGATE CARRY 3832 006466 1066 TAD ACH /HI ORDER 3833 006467 1346 MPLP2, TAD DV24 3834 006470 7010 RAR /NOW SHIFT PARTIAL PROD. RIGHT 1 BIT 3835 006471 3346 DCA DV24 3836 006472 1064 TAD AC2 3837 006473 7010 RAR 3838 006474 3064 DCA AC2 3839 006475 7010 RAR /1 BIT OF OVERFLOW TO AC1 3840 006476 3063 DCA AC1 3841 006477 2070 ISZ OPX /DONE ALL 12 MULTIPLIER BITS? 3842 006500 5254 JMP MPLP /NO-GO ON 3843 006501 5644 JMP I MP24 /YES-RETURN 3844 / 3845 /PART OF DIVIDE ROUTINE-FFDIV MUST BE AT LOC. 6722 3846 006502 3072 MP12L, DCA OPL /STORE BACK MULTIPLIET 3847 006503 1064 TAD AC2 /GET PRODUCT SO FAR 3848 006504 7420 SNL /WAS MULTIPLIER BIT A 1? 3849 006505 5310 JMP .+3 /NO-JUST SHIFT THE PARTIAL PRODUCT 3850 006506 7100 CLL /YES-CLEAR LINK AND ADD MULTIPLICAND 3851 006507 1067 TAD ACLO /TO PARTIAL PRODUCT 3852 006510 7010 RAR /SHIFT PARTIAL PRODUCT-THIS IS HI ORDER 3853 006511 3064 DCA AC2 /RESULT-STORE BACK 3854 006512 1072 DVLP1, TAD OPL /SHIFT A BIT OUT OF MULTIPLIER 3855 006513 7010 RAR /AND A BIT OR RESLT. INTO IT (LO ORD. PROD.) 3856 006514 2201 ISZ FFMPY /DONE ALL BITS? 3857 006515 5302 JMP MP12L /NO-LOOP BACK 3858 006516 7141 CLL CMA IAC /YES-LOW ORDER PROD. OF QUOT. X OPL IN AC 3859 006517 3067 DCA ACLO /NEGATE AND STORE 3860 006520 7024 CML RAL /PROPAGATE CARRY 3861 006521 5722 JMP I FD1P /GO ON 3862 006522 7001 FD1P, FD1 /POINTER TO REST OF DIVIDE ROUTINE 3863 / 3864 /FLOATING DIVIDE ROUTINE 3865 /USES THE METHOD OF TRIAL DIVISION BY HI ORDER 3866 006523 0000 FFDIV, 0 /(USED AS A TEM. BY I/O ROUTINES) 3867 006524 7450 SNA /WHICH MODE OF CALL? 3868 006525 1723 TAD I FFDIV /CALLED BY USER-GET ARG. ADDR. 3869 006526 4775 JMS I MDSETK /GO SET UP FOR DIVIDE-OPX IN AC ON RETN. 3870 006527 7041 FFD1, CMA IAC /NEGATE EXP. OF OPERAND 3871 006530 1065 TAD ACX /ADD EXP OF FAC 3872 006531 3065 DCA ACX /STORE AS FINAL EXPONENT 3873 006532 1071 TAD OPH /NEGATE HI ORDER OP. FOR USE 3874 006533 7141 CLL CMA IAC /AS DIVISOR 3875 006534 3071 DCA OPH 3876 006535 4346 JMS DV24 /CALL DIV.--(ACH+ACLO)/OPH 3877 006536 1067 TAD ACLO /SAVE QUOT. FOR LATER 3878 006537 3063 DCA AC1 3879 006540 1377 TAD KM13 /SET COUNTER FOR 12 BIT MULTIPLY 3880 006541 3201 DCA FFMPY /TO MULTIPLY QUOT. OF DIV. BY 3881 006542 5312 JMP DVLP1 /LOW ORDER OF OPERAND (OPL) 3882 / 3883 /END OF FLOATING DIVIDE-FUDGE SOME 3884 /STUFF THEN JUMP INTO MULTIPLY 3885 / 3886 006543 1323 FDDON, TAD FFDIV /STORE RETN. ADDR. IN MULT ROUTINE 3887 006544 3201 DCA FFMPY 3888 006545 5230 JMP MDONE /GO CLEAN UP 3889 / 3890 /DIVIDE ROUTINE--24 BITS IN ACH,ACLO ARE DIVIDED BY 12 BITS 3891 /IN OPH. OPH IS ASSUMEN NEGATIVE AND .GT. ACH IN ABSOLUTE VALUE 3892 /ELSE-DIVIDE OVERFLOW--WE RETURN NORMALLY WITH QUOTIENT 3893 /IN ACLO AND REM. IN ACH. (AC2=0 ON RETN.) 3894 / 3895 006546 0000 DV24, 0 3896 006547 1066 TAD ACH /CHECK THAT DIVISOR IS .GT. DIVIDEND 3897 006550 1071 TAD OPH /DIVISOR IN OPH (NEGATIVE) 3898 006551 7630 SZL CLA /IS IT? 3899 006552 4547 ERR030, ERROR /NO-DIVIDE OVERFLOW 3900 006553 1377 TAD KM13 /YES-SET UP 12 BIT LOOP 3901 006554 3064 DCA AC2 3902 006555 5366 JMP DV1 /GO BEGIN DIVIDE 3903 006556 1066 DV2, TAD ACH /CONTINUE SHIFT OF FAC LEFT 3904 006557 7004 RAL 3905 006560 3066 DCA ACH /RESTORE HI ORDER 3906 006561 1066 TAD ACH /NOW SUBTRACT DIVISOR FROM HI ORDER 3907 006562 1071 TAD OPH /DIVIDEND 3908 006563 7430 SZL /GOOD SUBTRACT? 3909 006564 3066 DCA ACH /YES-RESTORE HI DIVIDEND 3910 006565 7200 CLA /NO-DON'T RESTORE--OPH.GT.ACH 3911 006566 1067 DV1, TAD ACLO /SHIFT FAC LEFT 1 BIT-ALSO SHIFT 3912 006567 7004 RAL /1 BIT OF QUOT. INTO LOW ORD OF ACLO 3913 006570 3067 DCA ACLO 3914 006571 2064 ISZ AC2 /DONE 12 BITS OF QUOT? 3915 006572 5356 JMP DV2 /NO-GO ON 3916 006573 5746 JMP I DV24 /YES-RETN W/AC2=0 3917 006574 1551 FFNEGR, FFNEG 3918 006575 7030 MDSETK, MDSET 3919 006576 7764 KKM12, -14 3920 006577 7763 KM13, -15 3921 3922 PAGE 3923 / 3924 /FLOATING ADD 3925 / 3926 006600 0000 FFADD, 0 3927 006601 7450 SNA /WHICH MODE FO CALL? 3928 006602 1600 TAD I FFADD /CALLED BY USER-GET ADDR. OF OPR. 3929 006603 4736 JMS I ARGETP /PICK UP OPERAND 3930 006604 2200 FSUB1, ISZ FFADD /BUMP RETURN 3931 006605 1071 TAD OPH /IS OPERAND = 0 3932 006606 7650 SNA CLA 3933 006607 5600 JMP I FFADD /YES-DONE 3934 006610 1066 TAD ACH /NO-IS FAC=0? 3935 006611 7650 SNA CLA 3936 006612 5221 JMP FAD1 /YES-DO ADD 3937 006613 1065 FIX1, TAD ACX /NO-DO EXPONENT CALCULATION 3938 006614 7141 CLL CMA IAC 3939 006615 1070 TAD OPX 3940 006616 7540 SMA SZA /WHICH EXP. GREATER? 3941 006617 5230 JMP FACR /OPERANDS-SHIFT FAC 3942 006620 7041 CMA IAC /FAC'S-SHIFT OPERAND=DIFFRNCE+1 3943 006621 4233 FAD1, JMS OPSR 3944 006622 4277 JMS ACSR /SHIFT FAC ONE PLACE RIGHT 3945 006623 1070 DOADD, TAD OPX /TRANSFER OPX TO ACX 3946 006624 3065 DCA ACX /(CONVENIANT MAINLY IF FAC=0) 3947 006625 4340 JMS OADD /DO THE ADDITION 3948 006626 4756 JMS I FNORP /NORMALIZE RESULT 3949 006627 5600 JMP I FFADD /RETURN 3950 006630 4277 FACR, JMS ACSR /SHIFT FAC = DIFF.+1 3951 006631 4233 JMS OPSR /SHIFT OPR. 1 PLACE 3952 006632 5223 JMP DOADD /DO ADDITION 3953 / 3954 /OPERAND SHIFT RIGHT-ENTER WITH POSITIVE COUNT-1 3955 /IN AC 3956 / 3957 006633 0000 OPSR, 0 3958 006634 7140 CLL CMA 3959 006635 3062 DCA AC0 /-SHIFT COUNT 3960 006636 1071 OPSR1, TAD OPH /IF OPERAND IS NEGATIVE, 3961 006637 7500 SMA 3962 006640 5247 JMP OPSR2 3963 006641 7204 CLA RAL /THEN ADD 1 BEFORE SHIFTING RIGHT 3964 006642 1072 TAD OPL /LINK WAS OV BIT; ITS CARRY IS ITSELF 3965 006643 3072 DCA OPL 3966 006644 7004 RAL /PROPAGATE POSSIBLE CARRY 3967 006645 1071 TAD OPH /ADD HIGH ORDER 3968 006646 7410 SKP /LINK IS COMPLEMENT OF SIGN BIT 3969 006647 7120 OPSR2, STL /PROPAGATE 0 SIGN BIT FOR POSITIVE NUMBERS 3970 006650 7030 CML RAR /SHIFT RIGHT, PROPAGATING SIGN 3971 006651 3071 DCA OPH /STORE HIGH ORDER 3972 006652 1072 TAD OPL /GET LOW ORDER 3973 006653 7010 RAR /SHIFT RIGHT (LINK IS NOW OVERFLOW BIT) 3974 006654 3072 DCA OPL 3975 006655 2070 ISZ OPX /INCREMENT EXPONENT 3976 006656 7000 NOP /ISZ MAY SKIP 3977 006657 2062 ISZ AC0 /SHIFTED ENOUGH? 3978 006660 5236 JMP OPSR1 /NO 3979 006661 7010 RAR /SAVE OVERFLOW BIT 3980 006662 3064 DCA AC2 3981 006663 5633 JMP I OPSR /EXIT 3982 / 3983 /SHIFT FAC LEFT 1 BIT 3984 / 3985 006664 0000 AL1, 0 3986 006665 1063 TAD AC1 /GET OVERFLOW BIT 3987 006666 7104 CLL RAL /SHIFT LEFT 3988 006667 3063 DCA AC1 /STORE BACK 3989 006670 1067 TAD ACLO /GET LOW ORDER MANTISSA 3990 006671 7004 RAL /SHIFT LEFT 3991 006672 3067 DCA ACLO /STORE BACK 3992 006673 1066 TAD ACH /GET HI ORDER 3993 006674 7004 RAL 3994 006675 3066 DCA ACH /STORE BACK 3995 006676 5664 JMP I AL1 /RETN. 3996 / 3997 /SHIFT FAC RIGHT-ENTER WITH COUNT-1 IN AC (POSITIVE) 3998 / 3999 006677 0000 ACSR, 0 /THIS ROUTINE IS VERY SIMILAR TO OPSR 4000 006700 7140 CLL CMA 4001 006701 3062 DCA AC0 4002 006702 1066 ACSR1, TAD ACH 4003 006703 7500 SMA 4004 006704 5313 JMP ACSR2 4005 006705 7204 CLA RAL 4006 006706 1067 TAD ACLO 4007 006707 3067 DCA ACLO 4008 006710 7004 RAL 4009 006711 1066 TAD ACH 4010 006712 7410 SKP 4011 006713 7120 ACSR2, STL 4012 006714 7030 CML RAR 4013 006715 3066 DCA ACH 4014 006716 1067 TAD ACLO 4015 006717 7010 RAR 4016 006720 3067 DCA ACLO 4017 006721 2062 ISZ AC0 4018 006722 5302 JMP ACSR1 4019 006723 7010 RAR 4020 006724 3063 DCA AC1 4021 006725 5677 JMP I ACSR 4022 / 4023 /FLOATING SUBTRACT 4024 / 4025 006726 0000 FFSUB, 0 4026 006727 7450 SNA /WHICH MODE OF CALL? 4027 006730 1726 TAD I FFSUB /CALLED BY USER-GET ADDR. OF OP 4028 006731 4736 JMS I ARGETP /PICK UO THE OP. 4029 006732 4737 JMS I POPNEG /NEGATE OPERAND 4030 006733 1326 TAD FFSUB /JMP INTO FLTG. ADD 4031 006734 3200 SUB0, DCA FFADD /AFTER SETTING UP RETURN 4032 006735 5204 JMP FSUB1 4033 006736 7062 ARGETP, ARGET 4034 006737 1562 POPNEG, OPNEG 4035 / 4036 /ADD OPERAND TO FAC 4037 / 4038 006740 0000 OADD, 0 4039 006741 7100 CLL 4040 006742 1064 TAD AC2 /ADD OVERFLOW WORDS 4041 006743 1063 TAD AC1 4042 006744 3063 DCA AC1 4043 006745 7004 RAL /ROTATE CARRY 4044 006746 1072 TAD OPL /ADD LOW ORDER MANTISSAS 4045 006747 1067 TAD ACLO 4046 006750 3067 DCA ACLO 4047 006751 7004 RAL 4048 006752 1071 TAD OPH /ADD HI ORDER MANTISSAS 4049 006753 1066 TAD ACH 4050 006754 3066 DCA ACH 4051 006755 5740 JMP I OADD /RETN. 4052 006756 7076 FNORP, FFNOR 4053 / 4054 /CONTINUATION OF ROUTINE TO ADJUST QUOT. OF FIRST DIV. 4055 /ROUTINE STARTS AT DVOP2. 4056 / 4057 *.&7600+166 /SO PAGE BOUNDARY FALLS IN THE RIGHT PLACE 4058 006766 6546 DV24L, DV24 /ROUTINE TO DO A 24X12 BIT DIVIDE 4059 006767 7450 DVOP2, SNA /IS IT ZERO? 4060 006770 3067 DCA ACLO /YES-MAKE WHOLE THING ZERO 4061 006771 3066 DCA ACH 4062 006772 4766 JMS I DV24L /DIVIDE EXTENDED REM. BY HI DIVISOR 4063 006773 1067 TAD ACLO /NEGATE THE RESULT 4064 006774 7141 CLL CMA IAC 4065 006775 3067 DCA ACLO 4066 006776 7420 SNL /IF QUOT. IS NON-ZERO, SUBTRACT 4067 006777 7040 CMA /ONE FROM HIGH ORDER QUOT. 4068 /******FALL THROUGH PAGE BOUNDARY****** 4069 /******'CMA' HAD BETTER BE LAST ON PAGE!****** 4070 007000 5211 JMP DVL1 /GO TO IT 4071 / 4072 /CONTINUATION OF FLOATING DIVIDE ROUTINE 4073 / 4074 007001 1064 FD1, TAD AC2 /NEGATE HI ORDER PRODUCT 4075 007002 7141 CLL CMA IAC 4076 007003 1066 TAD ACH /COMPARE WITH REMAINDER OF FIRST DIVIDE 4077 007004 7420 SNL 4078 007005 5355 JMP DVOPS /GREATER THAN REM.-ADJUST QUOT. OF 1ST DIV. 4079 007006 7100 CLL /OK-DO (REM-(Q*OPL))/OPH 4080 007007 3066 DCA ACH /FIRST STORE ADJUSTED PRODUCT 4081 007010 4627 JMS I DV24P /DIVIDE BY OPH (HIGH ORDER OPERAND) 4082 007011 1063 DVL1, TAD AC1 /GET QUOT. OF FIRST DIV. 4083 007012 7500 SMA /IF HIGH ORDER BIT SET-MUST SHIFT 1 RIGHT 4084 007013 5224 JMP FD /NO-IT'S NORMALIZED-DONE 4085 007014 7110 CLL RAR /MUST SHIFT RIGHT 1 4086 007015 3066 DCA ACH /STORE IN FAC 4087 007016 1067 TAD ACLO /SHIFT LOW ORDER RIGHT 4088 007017 7010 RAR 4089 007020 3067 DCA ACLO /STORE BACK 4090 007021 2065 ISZ ACX /BUMP EXPONENT 4091 007022 7000 NOP 4092 007023 1066 TAD ACH 4093 007024 3066 FD, DCA ACH /STORE HIGH ORDER RESULT 4094 007025 5626 JMP I FDDONP /GO LEAVE DIVIDE 4095 4096 007026 6543 FDDONP, FDDON /END OF FLTG. DIV. ROUTINE 4097 007027 6546 DV24P, DV24 /ROUTINE TO DO A 24X12 BIT DIVIDE 4098 4099 / 4100 /MDSET-SETS UP SIGNS FOR MULTIPLY AND DIVIDE 4101 /ALSO SHIFTS OPERAND ONE BIT TO THE LEFT. 4102 /EXIT WITH EXPONENT OF OPERAND IN AC FOR EXPONENT 4103 /CALCULATION-CALLED WITH ADDRESS OF OPERAND IN AC. 4104 / 4105 007030 0000 MDSET, 0 4106 007031 4262 JMS ARGET /GET ARGUMENT 4107 007032 7344 MD1, CLA CLL CMA RAL /SET SIGN CHECK TO -2 4108 007033 3062 DCA TM 4109 007034 1071 TAD OPH /IS OPERAND NEGATIVE? 4110 007035 7700 SMA CLA 4111 007036 5241 JMP .+3 /NO 4112 007037 4661 JMS I OPNEGP /YES-NEGATE IT 4113 007040 2062 ISZ TM /BUMP SIGN CHECK 4114 007041 1072 TAD OPL /AND SHIFT LEFT ONE BIT 4115 007042 7104 CLL RAL 4116 007043 3072 DCA OPL 4117 007044 1071 TAD OPH 4118 007045 7004 RAL 4119 007046 3071 DCA OPH 4120 007047 3063 DCA AC1 /CLR. OVERFLOW WORD OF FAC 4121 007050 1066 TAD ACH /IS FAC NEGATIVE 4122 007051 7700 SMA CLA 4123 007052 5256 JMP LEV /NO-GO ON 4124 007053 4660 JMS I FFNEGK /YES-NEGATE IT 4125 007054 2062 ISZ TM /BUMP SIGN CHECK 4126 007055 7000 NOP /MAY SKIP 4127 007056 1070 LEV, TAD OPX /EXIT WITH OPERAND EXPONENT IN AC 4128 007057 5630 JMP I MDSET 4129 4130 007060 1551 FFNEGK, FFNEG 4131 007061 1562 OPNEGP, OPNEG 4132 4133 / 4134 /ARGUMENT PICK UP ROUTINE-ENTER WITH DATA FIELD SET TO EITHER 4135 /FLTG. DATA FIELD OR FLTG. INSTR. FIELD. 4136 /ADDRESS OF OPERAND IS IN THE AC ON ENTRY. 4137 /ON RETURN, THE`AC IS CLEAR 4138 / 4139 007062 0000 ARGET, 0 4140 007063 3064 DCA AC2 /STORE ADDRESS OF OPERAND 4141 007064 1464 TAD I AC2 /PICK UP EXPONENT 4142 007065 3070 DCA OPX 4143 007066 2064 ISZ AC2 /MOVE POINTER TO HI MANTISSA WD 4144 007067 1464 TAD I AC2 /PICK IT UP 4145 007070 3071 DCA OPH /STORE 4146 007071 2064 ISZ AC2 /MOVE PTR. TO LO MANTISSA WD. 4147 007072 1464 TAD I AC2 /PICK IT UP 4148 007073 3072 DCA OPL /STORE IT 4149 007074 5662 JMP I ARGET /RETURN 4150 007075 6767 DVOP2P, DVOP2 4151 / 4152 /ROUTINE TO NORMALIZE THE FAC 4153 / 4154 007076 0000 FFNOR, 0 4155 007077 7332 FFNOR2, CLA STL RTR /L&AC=02000 4156 007100 1066 TAD ACH 4157 007101 7510 SPA 4158 007102 5317 JMP FFNOR3 /DONE, BINARY FAC IS 01???... OR 10???... 4159 007103 7106 CLL RTL /IGNORE BITS 0&1 4160 007104 7450 SNA 4161 007105 1067 TAD ACLO /IF 0, LOOK AT ACLO 4162 007106 7450 SNA 4163 007107 1063 TAD AC1 /IF STILL 0, LOOK AT OVERFLOW BIT 4164 007110 7650 SNA CLA /IF FAC BITS 2-23=0, 4165 007111 5317 JMP FFNOR3 /THEN DONE 4166 007112 7340 L7777 /SUBTRACT 1 FROM EXPONENT 4167 007113 1065 TAD ACX 4168 007114 3065 DCA ACX 4169 007115 4777 JMS I (AL1 /SHIFT FAC LEFT 4170 007116 5277 JMP FFNOR2 4171 4172 007117 7630 FFNOR3, SZL CLA 4173 007120 3065 DCA ACX /IF FAC=0, THEN ZERO EXPONENT 4174 007121 3063 DCA AC1 /ZERO OVERFLOW BIT 4175 007122 5676 JMP I FFNOR 4176 / 4177 /FLOATING GET 4178 / 4179 007123 0000 FFGET, 0 4180 007124 7450 SNA /WHICH MODE OF CALL 4181 007125 1723 TAD I FFGET /CALLED BY USER-GET ADDR. OF OP 4182 007126 4262 JMS ARGET /PICK UP OPERAND 4183 007127 1070 TAD OPX 4184 007130 3065 DCA ACX /LOAD THE OPERAND INTO FAC 4185 007131 1072 TAD OPL 4186 007132 3067 DCA ACLO 4187 007133 1071 TAD OPH 4188 007134 3066 DCA ACH 4189 007135 2323 ISZ FFGET 4190 007136 5723 JMP I FFGET /RETN. TO CALL +2 4191 / 4192 /FLOATING PUT 4193 / 4194 007137 0000 FFPUT, 0 4195 007140 7450 SNA /WHICH MODE OF CALL? 4196 007141 1737 TAD I FFPUT /CALLED BY USER-GET OPR. ADDR 4197 007142 3323 DCA FFGET /STORE IN A TEMP 4198 007143 1065 TAD ACX /GET FAC AND STORE IT 4199 007144 3723 DCA I FFGET /AT SPECIFI{qD ADDRESS 4200 007145 2323 ISZ FFGET 4201 007146 1066 TAD ACH 4202 007147 3723 DCA I FFGET 4203 007150 2323 ISZ FFGET 4204 007151 1067 TAD ACLO 4205 007152 3723 DCA I FFGET 4206 007153 2337 ISZ FFPUT /BUMP RETN. 4207 007154 5737 JMP I FFPUT /RETN. TO CALL+2 4208 / 4209 /ROUTINE TO ADJUST QUOTINET OF FIRST DIVIDE (MAYBE) WHEN THE 4210 /REMAINDER OF THE FIRST DIVIDE IS LESS THAN QUOT*OPL 4211 /USED BY FLTG. DIVIDE ROUTINE 4212 / 4213 007155 7041 DVOPS, CMA IAC /NEGATE AND STORE REVISED REMAINDER 4214 007156 3066 DCA ACH 4215 007157 7100 CLL 4216 007160 1071 TAD OPH 4217 007161 1066 TAD ACH /WATCH FOR OVERFLOW 4218 007162 7420 SNL 4219 007163 5370 JMP DVOP1 /OVERFLOW-DON'T ADJUST QUOT. OF 1ST DIV. 4220 007164 3066 DCA ACH /NO OVERFLOW-STORE NEW REM. 4221 007165 7040 CMA /SUBTRACT 1 FROM QUOT OF 4222 007166 1063 TAD AC1 /FIRST DIVIDE 4223 007167 3063 DCA AC1 4224 007170 7300 DVOP1, CLA CLL 4225 007171 1066 TAD ACH /GET HI ORD OF REMAINDER 4226 007172 5675 JMP I DVOP2P /GO ON 4227 4228 007177 6664 PAGE 4229 /*FLIN* (FLOATING POINT INPUT) ROUTINE 4230 /THIS ROUTINE ASSEMBLES A FLOATING POINT NUMBER IN THE FAC. 4231 /THE NUMBER IS READ AS ASCII TEXT BY THE UNPACK ROUTINE. 4232 007200 0000 FLIN, 0 4233 007201 7240 CLA CMA 4234 007202 3345 DCA FLAG 4235 007203 3302 DCA E 4236 007204 3303 DCA DFLG 4237 007205 3065 DCA ACX 4238 007206 3066 DCA ACH 4239 007207 3067 DCA ACLO 4240 007210 4552 FLIN1, TESTN 4241 007211 5230 JMP FLIN3 4242 007212 5234 JMP FLIN4 4243 007213 4777 JMS I (FFMPY /DIGIT 4244 007214 7342 TEN 4245 007215 4700 JMS I KFFPUT 4246 007216 5472 FTEMP1 4247 007217 1075 TAD SORTCN 4248 007220 4776 JMS I (FFLOAT 4249 007221 4775 JMS I (FFADD 4250 007222 5472 FTEMP1 4251 007223 2302 ISZ E 4252 007224 7040 CMA 4253 007225 3303 DCA DFLG 4254 007226 4533 FLIN2, GETC 4255 007227 5210 JMP FLIN1 4256 007230 2345 FLIN3, ISZ FLAG 4257 007231 5234 JMP FLIN4 4258 007232 3302 DCA E 4259 007233 5226 JMP FLIN2 4260 007234 2303 FLIN4, ISZ DFLG 4261 007235 4547 ERR150, ERROR 4262 007236 1026 TAD CHAR 4263 007237 1374 TAD (-105 4264 007240 7640 SZA CLA 4265 007241 5256 JMP SHIFT 4266 007242 4533 GETC 4267 007243 1026 TAD CHAR 4268 007244 1373 TAD (-56 4269 007245 3303 DCA DFLG 4270 007246 1303 TAD DFLG 4271 007247 7152 CLL CMA RTR 4272 007250 7650 SNA CLA 4273 007251 4533 GETC 4274 007252 4304 JMS GETNUM 4275 007253 1070 TAD OPX 4276 007254 2303 ISZ DFLG 4277 007255 7041 CIA 4278 007256 2345 SHIFT, ISZ FLAG 4279 007257 1302 TAD E 4280 007260 7450 SNA 4281 007261 5276 JMP GIVE 4282 007262 7100 CLL 4283 007263 7500 SMA 4284 007264 7061 CML CIA 4285 007265 3302 DCA E 4286 007266 7430 SZL 4287 007267 1372 TAD (FFDIV-FFMPY 4288 007270 1377 TAD (FFMPY 4289 007271 3303 DCA DFLG 4290 007272 4703 FLIN5, JMS I DFLG 4291 007273 7342 TEN 4292 007274 2302 ISZ E 4293 007275 5272 JMP FLIN5 4294 007276 1025 GIVE, TAD PT1 4295 007277 4700 JMS I KFFPUT 4296 007300 7137 KFFPUT, FFPUT 4297 007301 5600 JMP I FLIN 4298 4299 007302 0000 E, 0 /NEXT 3 LOCS USED AS TEMPS 4300 007303 0000 DFLG, 0 /BY *TAN* FUNCTION 4301 4302 007304 0000 GETNUM, 0 4303 007305 3070 DCA OPX 4304 007306 4552 TESTN 4305 007307 7000 NOP 4306 007310 4547 ERR370, ERROR 4307 007311 1070 GETN1, TAD OPX 4308 007312 7104 CLL RAL 4309 007313 7530 SPA SZL 4310 007314 5310 JMP ERR370 4311 007315 7004 RAL 4312 007316 1070 TAD OPX 4313 007317 7530 SPA SZL 4314 007320 5310 JMP ERR370 4315 007321 7004 RAL 4316 007322 1075 TAD SORTCN 4317 007323 7530 SPA SZL 4318 007324 5310 JMP ERR370 4319 007325 3070 DCA OPX 4320 007326 4533 GETC 4321 007327 4552 TESTN 4322 007330 7000 NOP 4323 007331 5704 JMP I GETNUM 4324 007332 5311 JMP GETN1 4325 4326 /*GETLN* ROUTINE 4327 /READS A DECIMAL LINE NUMBER INTO LINENO THROUGH THE 4328 /TEXT UNPACKING ROUTINES 4329 007333 0000 XGETLN, 0 4330 007334 4304 JMS GETNUM 4331 007335 1070 TAD OPX 4332 007336 7450 SNA 4333 007337 5310 JMP ERR370 4334 007340 3030 DCA LINENO 4335 007341 5733 JMP I XGETLN 4336 4337 007342 0004 TEN, 4 /10.0 4338 007343 2400 2400 4339 007344 0000 0 4340 4341 /*TAN* FUNCTION 4342 007345 0000 TAN, 0 /ALSO USED AS TEMP BY *FLIN* 4343 007346 4700 JMS I KFFPUT /SAVE AWAY THE ARG 4344 007347 7725 FLARG 4345 007350 4771 JMS I (COS /FAC=COS(ARG) 4346 007351 4700 JMS I KFFPUT /SAVE THAT TOO 4347 007352 7302 E /IN TEMP STORAGE 4348 007353 4770 JMS I (FFGET /GET BACK ORIGINAL ARG 4349 007354 7725 FLARG 4350 007355 4767 JMS I (FSIN /AND TAKE ITS SINE 4351 007356 4766 JMS I (FFDIV /FAC=SIN(ARG)/COS(ARG) 4352 007357 7302 E 4353 007360 5745 JMP I TAN /EXIT WITH FAC=TAN(ARG) 4354 FLAG=TAN 4355 007366 6523 PAGE 007367 5400 007370 7123 007371 5453 007372 0122 007373 7722 007374 7673 007375 6600 007376 6164 007377 6401 4356 /*FLOUT* (FLOATING POINT OUTPUT) ROUTINE 4357 /PRINTS THE NUMBER IN THE FAC AS WELL AS IT CAN. 4358 DEXP=T1 /3 ASSIGNMENTS 4359 SIG=T2 4360 4361 007400 0000 FLOUT, 0 4362 007401 1066 TAD ACH 4363 007402 7710 SPA CLA 4364 007403 1111 TAD CCR 4365 007404 1124 TAD C40 4366 007405 4454 PRINTC 4367 007406 1066 TAD ACH 4368 007407 7640 SZA CLA 4369 007410 5214 JMP .+4 4370 007411 1352 TAD K60 4371 007412 4454 PRINTC 4372 007413 5600 JMP I FLOUT 4373 007414 4777 JMS I (ABS 4374 007415 1065 TAD ACX /ROUNDING 4375 007416 3070 DCA OPX 4376 007417 3071 DCA OPH 4377 007420 1065 TAD ACX 4378 007421 7510 SPA 4379 007422 7041 CIA 4380 007423 7110 CLL RAR 4381 007424 7110 CLL RAR 4382 007425 1376 TAD (3 4383 007426 3072 DCA OPL 4384 007427 1375 TAD (.+3 4385 007430 3774 DCA I (FFADD 4386 007431 5773 JMP I (FAD1 4387 007432 3076 DCA DEXP 4388 007433 7346 FLOUT1, CLA CLL CMA RTL 4389 007434 1065 TAD ACX 4390 007435 7750 SPA SNA CLA 4391 007436 5250 JMP FLOUT2 4392 007437 4772 JMS I (FFDIV 4393 007440 7342 TEN 4394 007441 2076 ISZ DEXP 4395 007442 5233 JMP FLOUT1 4396 007443 4771 FLOT2A, JMS I (FFMPY 4397 007444 7342 TEN 4398 007445 7040 CMA 4399 007446 1076 TAD DEXP 4400 007447 3076 DCA DEXP 4401 007450 1065 FLOUT2, TAD ACX 4402 007451 7750 SPA SNA CLA 4403 007452 5243 JMP FLOT2A 4404 007453 4770 JMS I (FFPUT 4405 007454 5472 FTEMP1 4406 007455 1122 TAD M6 4407 007456 3354 DCA RONDUP 4408 007457 4767 SIGNIF, JMS I (FRACT 4409 007460 4771 JMS I (FFMPY 4410 007461 7342 TEN 4411 007462 1766 TAD I (NUM 4412 007463 7640 SZA CLA 4413 007464 3077 DCA SIG 4414 007465 2077 ISZ SIG 4415 007466 2354 ISZ RONDUP 4416 007467 5257 JMP SIGNIF 4417 007470 4765 JMS I (FFGET 4418 007471 5472 FTEMP1 4419 007472 1076 TAD DEXP 4420 007473 7001 IAC 4421 007474 7160 CLL CMA CML 4422 007475 1112 TAD C7 4423 007476 7760 SMA SZA SNL CLA 4424 007477 5305 JMP BIG 4425 007500 1076 TAD DEXP 4426 007501 3354 DCA RONDUP 4427 007502 3076 BIG1, DCA DEXP 4428 007503 4342 JMS PICKC 4429 007504 7140 CLL CMA 4430 007505 1076 BIG, TAD DEXP 4431 007506 7500 SMA 4432 007507 5302 JMP BIG1 4433 007510 1122 LITTLE, TAD M6 4434 007511 1077 TAD SIG 4435 007512 3077 DCA SIG 4436 007513 7420 SNL 4437 007514 5323 JMP PREXP 4438 007515 1364 TAD (56 4439 007516 4454 PRINTC 4440 007517 4342 LITL2, JMS PICKC 4441 007520 1077 TAD SIG 4442 007521 7710 SPA CLA 4443 007522 5317 JMP LITL2 4444 007523 1354 PREXP, TAD RONDUP 4445 007524 7650 SNA CLA 4446 007525 5600 JMP I FLOUT 4447 007526 1363 TAD (105 4448 007527 4454 PRINTC 4449 007530 1354 TAD RONDUP 4450 007531 7500 SMA 4451 007532 5340 JMP PRXP1 4452 007533 7041 CIA 4453 007534 3354 DCA RONDUP 4454 007535 1362 TAD (55 4455 007536 4454 PRINTC 4456 007537 1354 TAD RONDUP 4457 007540 4761 PRXP1, JMS I (ITPRNT 4458 007541 5600 JMP I FLOUT 4459 4460 007542 0000 PICKC, 0 4461 007543 4767 JMS I (FRACT 4462 007544 1766 TAD I (NUM 4463 007545 1352 TAD K60 4464 007546 4454 PRINTC 4465 007547 4771 JMS I (FFMPY 4466 007550 7342 TEN 4467 007551 2077 ISZ SIG 4468 007552 0060 K60, 60 /A HARMLESS CONSTANT THAT ALSO BUFFERS THE ISZ 4469 007553 5742 JMP I PICKC 4470 4471 007554 0000 RONDUP, 0 4472 007561 1124 PAGE 007562 0055 007563 0105 007564 0056 007565 7123 007566 5526 007567 5503 007570 7137 007571 6401 007572 6523 007573 6621 007574 6600 007575 7432 007576 0003 007577 5516 4473 ENPUNCH 4474 FIELD 1 4475 *7400 4476 F0P37, 4477 NOPUNCH 4478 *7600 /THIS WILL BE MOVED LATER 4479 ENPUNCH 4480 4481 017600 5356 JMP 7756 /FOR A MONITOR SYSTEM 4482 4483 /*FLPUT* ROUTINE 4484 017601 0000 XFLPUT, 0 4485 017602 7440 SZA 4486 017603 5206 JMP XFLPT2 4487 017604 7340 XFLPT1, L7777 4488 017605 1025 TAD PT1 4489 017606 3010 XFLPT2, DCA XREG 4490 017607 7340 L7777 4491 017610 1601 TAD I XFLPUT 4492 017611 3011 DCA XREG2 4493 017612 7346 L7775 4494 017613 3100 DCA T3 4495 017614 1411 TAD I XREG2 4496 017615 4550 UDF 4497 017616 3410 DCA I XREG 4498 017617 6201 CDF 4499 017620 2100 ISZ T3 4500 017621 5214 JMP .-5 4501 017622 2201 ISZ XFLPUT 4502 017623 5601 JMP I XFLPUT 4503 4504 /*SORTC* ROUTINE 4505 017624 0000 XSORTC, 0 4506 017625 7450 SNA 4507 017626 1026 TAD CHAR 4508 017627 7041 CIA 4509 017630 3100 DCA T3 4510 017631 1624 TAD I XSORTC 4511 017632 3010 DCA XREG 4512 017633 6211 CDF 10 4513 017634 1410 TAD I XREG 4514 017635 6201 CDF 4515 017636 7510 SPA 4516 017637 5250 JMP XSORT3 4517 017640 1100 TAD T3 4518 017641 7640 SZA CLA 4519 017642 5233 JMP .-7 4520 017643 1624 TAD I XSORTC 4521 017644 7040 CMA 4522 017645 1010 TAD XREG 4523 017646 3075 DCA SORTCN 4524 017647 7410 SKP 4525 017650 2224 XSORT3, ISZ XSORTC 4526 017651 2224 ISZ XSORTC 4527 017652 7300 CLL CLA 4528 017653 5624 JMP I XSORTC 4529 017654 3101 FUNCT3, DCA EFOP 4530 017655 1031 TAD MODE 4531 017656 4536 PUSHA 4532 017657 4670 JMS I IECALL 4533 017660 4541 POPA 4534 017661 7510 SPA 4535 017662 5671 JMP I FUNC6I 4536 017663 1272 TAD FUNJMS 4537 017664 3265 DCA .+1 4538 017665 0000 0 4539 017666 5667 JMP I ENDFNI 4540 4541 017667 4762 ENDFNI, ENDFUN 4542 017670 2600 IECALL, ECALL 4543 017671 3000 FUNC6I, FUNCT6 4544 017672 4671 FUNJMS, JMS I FUNL3-2 4545 4546 017673 5400 FUNL3, FSIN 4547 017674 5453 COS 4548 017675 5600 ATN 4549 017676 5533 EXPON 4550 017677 5665 LOG 4551 017700 5516 ABS 4552 017701 6247 FROOT 4553 017702 5013 SGN 4554 017703 0556 INT 4555 017704 5357 RND 4556 017705 0546 FIX 4557 017706 7345 TAN 4558 017707 2146 LEN 4559 017710 2000 MID 4560 017711 2107 CAT 4561 017712 7732 SYS 4562 ABS=NHNDLE 4563 4564 4565 017713 7620 IFSKPL, SNL CLA 4566 017714 7670 SZL SNA CLA 4567 017715 7640 SZA CLA /IFSKPL MUST BE FOLLOWED BY POSITIVE # 4568 017716 7660 SNL SZA CLA 4569 017717 7630 SZL CLA 4570 017720 7650 SNA CLA 4571 4572 017721 0000 FRNDX0, 0 /EXPONENT OF RANDOM NUMBER 4573 017722 0203 203 /2 WORD RANDOM INTEGER 4574 017723 5555 5555 4575 4576 017724 4547 ERR004, ERROR /CONTROL-C 4577 4578 /*FLARG* (FLOATING POINT ARGUMENT TO MANY THINGS) 4579 017725 0000 FLARG, 0 4580 017726 0000 0 4581 017727 0000 0 4582 4583 017730 4547 ERR070, ERROR /KEYBOARD BUFFER OVERFLOW 4584 4585 017731 4547 ERR080, ERROR /PRINTER BUFFER OVERFLOW 4586 4587 /*SYS* FUNCTION 4588 /WITH THIS FUNCTION, SYSTEM PROGRAMS SUCH AS SYSTAT 4589 /CAN BE WRITTEN IN EDU250 BASIC!!! 4590 017732 0000 SYS, 0 4591 017733 1066 TAD ACH /GET DATA FIELD (ASSUMED POSITIONED!) 4592 017734 0347 AND SYSC70 /WITHOUT THIS, MISUSE COULD CRASH SYSTEM 4593 017735 1341 TAD SYSK /CONVER TO CDF 4594 017736 3337 DCA SYSCDF 4595 017737 7402 SYSCDF, HLT /CDF TO FIELD TO EXAMINE 4596 017740 1467 TAD I ACLO /GET WORD 4597 017741 6201 SYSK, CDF 0 4598 017742 3067 DCA ACLO /CONVERT TO FLOATING POINT NUMBER 4599 017743 3066 DCA ACH 4600 017744 4746 JMS I SYSL /EVEN NORMALIZE, WHAT SERVICE! 4601 017745 5732 JMP I SYS /ALL DONE 4602 017746 7076 SYSL, FFNOR /POINTER TO NORMALIZE 4603 017747 0070 SYSC70, 70 4604 4605 IFNZRO CONFIG 4606 PAGE 0 4607 4608 /USER FIELD DEFINITIONS 4609 4610 010000 7763 7763 /CR,S -1 4611 010001 6457 6457 /TO 4612 010002 6040 6040 /P@ 4613 010003 7745 7745 /CR,E 2 4614 010004 6262 6262 /RR 4615 010005 5762 5762 /OR 4616 010006 0040 0040 /SPACE,@ 4617 010007 7762 7762 /CR,R 6 4618 010010 4541 4541 /EA 4619 010011 4471 4471 /DY 4620 010012 7740 7740 /CR,@ 4621 010013 0051 0051 /SPACE,I 12 4622 010014 5600 5600 /N,SPACE 4623 010015 4000 4000 /@ 4624 010016 0000 XR1, 0 /TEMP INDEX REGISTERS 4625 010017 0000 XR2, 0 4626 010020 0444 0444 /$D 4627 010021 4554 4554 /EL 4628 010022 4564 4564 /ET 4629 010023 4544 4544 /ED 4630 010024 7740 7740 /CR,@ 4631 CONEND=. 4632 4633 010025 0000 SAVAC, 0 /SAVED AC DURING INTERRUPTS 4634 010026 0000 SAVF, 0 /SAVED FLAGS DURING INTERRUPTS 4635 010027 0000 SAVRES, 0 /SAVED RESTART ADDRESS DURING INTERRUPTS 4636 010030 0000 INTUSR, 0 /USER COUNTER DURING INTERRUPTS 4637 010031 0000 INTTM, 0 /3 TEMPS USED DURING INTERRUPTS 4638 010032 0000 INTTM1, 0 4639 010033 0000 INTTM2, 0 4640 010034 7777 MUSERS, -USERS /MINUS NUMBER OF USERS 4641 010035 3601 USRPT, USER0+USERS 4642 010036 4177 MUSRPT, -USER0-USERS 4643 010037 3671 IOTST, SWPRBF /POINTER TO FIRST IOT 4644 4645 INTRPT=[DCA SAVAC /INTERRUPTS GO TO INTRPT AND FALL 4646 /THROUGH TO PAGE 1 4647 IFNZRO INTRPT-177 /INTRPT MUST BE AT 10177 4648 IFZERO PDP8I < 4649 010040 5576 INTPWF, JMP I [INTPFR /DISPATCH TO POWER FAIL RECOVERY ROUTINE 4650 > 4651 4652 /POINTERS TO USER BUFFERS & RELEVANT DATA 4653 010041 3671 BUFIOT, SWPRBF /USER TTY SKIP IOT 4654 010042 3672 BUFSP, SWPRBF+1 /KEYBOARD: NOT USED 4655 /PRINTER: 0=FREE, 7777=BUSY 4656 010043 3673 BUFSP2, SWPRBF+2 /KEYBOARD:BIT 0=CNTRL-O (1=SUPPRESS OUTPUT) 4657 /BIT 10=BREAK ON ANY (1=BREAK) 4658 /BIT 11=ECHO (1=NO ECHO) 4659 /PRINTER: TTY COLUMN COUNT 4660 010044 3674 BUFM, SWPRBF+3 /BUFFER COUNTER MASK 4661 010045 3675 BUFB, SWPRBF+4 /BUFFER BASE ADDRESS 4662 010046 3676 BUFC, SWPRBF+5 /# OF CHARACTERS IN BUFFER 4663 010047 3677 BUFIS, SWPRBF+6 /IN TO BUFFER 3-WAY SWITCH 4664 010050 3700 BUFOS, SWPRBF+7 /OUT OF BUFFER 3-WAY SWITCH 4665 010051 3701 BUFIP, SWPRBF+10 /IN TO BUFFER POINTER 4666 010052 3702 BUFOP, SWPRBF+11 /OUT OF BUFFER POINTER 4667 4668 IFNZRO EDU250 < 4669 010053 0000 DTDCTC, 0 /INHIBIT ERRORS DURING DIRECTORY EXTENSION 4670 010054 1073 DTDCTD, DTDONE /USED WITH DTDCTC 4671 010055 0000 DTENTS, 0 /- # OF ENTRIES IN CURRENT SEGMENT 4672 010056 0000 DTSBN, 0 /STARTING BLOCK # OF CURRENT ENTRY 4673 010057 0000 DTBSBN, 0 /SBN OF NEW ENTRY (*SAVE* COMMAND) 4674 010060 0000 DTIBL, 0 /IDEAL BLOCK LENGTH FOR SAVE 4675 010061 0000 DTCEPT, 0 /CURRENT ENTRY POINTER 4676 010062 0000 DTLEPT, 0 /LAST ENTRY POINTER 4677 010063 0000 DTNEPT, 0 /NEXT ENTRY (END OF CURRENT ENTRY) POINTER 4678 010064 0000 DTBLK, 0 /CURRENT OS/8 BLOCK 4679 010065 0000 TM1, 0 /TEMPS 4680 010066 0000 TM2, 0 4681 > 4682 PAGE 4683 IFZERO PDP8I < 4684 010200 6004 PDP8I1, GTF /GET LINK, SAVE FIELD REG 4685 010201 3026 DCA SAVF /SAVE FLAGS 4686 010202 1575 TAD I [0 /SAVE RESTART LOCATION 4687 010203 3027 DCA SAVRES 4688 010204 6102 SPL /POWER FAIL INTERRUPT? 4689 010205 5212 JMP INTST /NO, SCAN TTYS 4690 010206 3575 DCA I [0 /YES, SET UP RESTART SEQUENCE 4691 010207 1174 TAD [JMP INTPWF 4692 010210 3573 DCA I [2 /FIELD 0;*0;AND 0;CIF 10;JMP INTPWF 4693 010211 7402 HLT /NOW JUST STOP AND WAIT FOR THE END 4694 > 4695 4696 IFNZRO PDP8I < 4697 RAR 4698 DCA SAVF 4699 TAD I [0 4700 DCA SAVRES 4701 > 4702 4703 INTST, 4704 IFNZRO RX8E < 4705 010212 6755 SDN /FLOPPY DISK DONE FLAG UP? 4706 010213 5221 JMP RXNOIN /NOPE 4707 010214 6201 CDF 0 /SET UP TO RUN JOB WITH RX8E 4708 010215 1572 TAD I [DTLOOK 4709 010216 3031 DCA INTTM 4710 010217 3431 DCA I INTTM 4711 010220 5311 JMP INTDON /EXIT INTERRUPT SERVICE 4712 RXNOIN, 4713 > 4714 4715 /MAIN TTY INTERRUPT HANDLER 4716 /SCANS ALL TTYS FOR INTERRUPTS, EXITS WHEN ONE HAS BEEN 4717 /HANDLED. ON AN UNDEFINED INTERRUPT, EXECUTES LIST OF 4718 /CLEAR IOTS AND EXITS. 4719 010221 6211 CDF 10 /WORK IN FIELD 1 NOW 4720 010222 1034 TAD MUSERS /- # OF USERS 4721 010223 3030 DCA INTUSR /USER COUNTER 4722 010224 1037 TAD IOTST /BEGINNING OF IOT LIST 4723 010225 5230 JMP INTST2 4724 010226 1171 INTKEY, TAD [ENSWAP-STSWAP+BUFOP-BUFIOT+2 4725 010227 1041 TAD BUFIOT 4726 010230 3041 INTST2, DCA BUFIOT /POINT TO NEXT USER'S KEYBOARD DATA 4727 010231 1441 TAD I BUFIOT /GET USER'S KSF IOT 4728 010232 3233 DCA INTKSF 4729 010233 7402 INTKSF, HLT /KEYBOARD INTERRUPT? 4730 010234 5316 JMP INTTTY /NO: CHECK TTY 4731 010235 1170 TAD [KRB-KSF /CONVERT KSF TO KRB 4732 010236 1233 TAD INTKSF 4733 010237 3240 DCA INTKRB 4734 010240 7402 INTKRB, HLT /READ KEYBOARD 4735 010241 0167 AND [177 /IGNORE PARITY BIT 4736 010242 7450 SNA 4737 010243 5311 JMP INTDON /IGNORE NULL 4738 010244 3031 DCA INTTM /SAVE CHAR 4739 010245 4566 JMS I [BUFSWP /SET UP REST OF POINTERS 4740 010246 7346 L7775 /CHECK FOR CONTROL-C 4741 010247 1031 TAD INTTM 4742 010250 7450 SNA 4743 010251 5355 JMP INTCTC /PROCESS CONTROL-C 4744 010252 1165 TAD [-"O+300+3 /CHECK FOR CONTROL-O 4745 010253 7650 SNA CLA 4746 010254 5347 JMP INTCTO /PROCESS CONTROL-O 4747 010255 4564 JMS I [BUFI /PUT CHARACTER IN KEYBOARD BUFFER 4748 010256 5360 JMP INTIOV /NO ROOM: KEYBOARD BUFFER OVERFLOW 4749 010257 1163 TAD [-"^+200-1 /SEE IF NON-BREAK CHARACTER 4750 010260 1031 TAD INTTM 4751 010261 7100 CLL 4752 010262 1162 TAD [-" +"^+1 4753 010263 7620 SNL CLA 4754 010264 5275 JMP INTBRK /WIERD CHARACTER, BREAK! 4755 010265 7326 L0002 /CHECK BREAK ON ANY BIT 4756 010266 0443 AND I BUFSP2 4757 010267 7640 SZA CLA 4758 010270 5275 JMP INTBRK /WAS SET, BREAK! 4759 010271 1161 TAD [-36 /BUFFER WITHIN 20(10) CHARS OF FULL? 4760 010272 1446 TAD I BUFC 4761 010273 7640 SZA CLA 4762 010274 5300 JMP INTECO /NO, DON'T BREAK 4763 010275 4560 INTBRK, JMS I [INTPRI /RESET INPUT WAIT 4764 010276 4000 4000 /BIT 0 IS INPUT WAIT 4765 010277 6211 CDF 10 4766 010300 7301 INTECO, L0001 /CHECK ECHO BIT 4767 010301 0443 AND I BUFSP2 4768 010302 7640 SZA CLA 4769 010303 5311 JMP INTDON /WAS SET, DON'T ECHO 4770 010304 7301 L0001 /POINT TO TTY DATA 4771 010305 1052 TAD BUFOP 4772 010306 3041 DCA BUFIOT 4773 010307 4566 JMS I [BUFSWP /SET UP TTY POINTERS 4774 010310 4557 JMS I [TYP /ECHO CHAR 4775 4776 /DISMISS INTERRUPT 4777 010311 1026 INTDON, TAD SAVF /GET FLAGS 4778 4779 IFZERO PDP8I < 4780 010312 6005 PDP8I2, RTF /RESTORE FLAGS 4781 010313 7200 PDP8I3, CLA 4782 > 4783 4784 IFNZRO PDP8I < 4785 CLL RAL 4786 RMF 4787 > 4788 4789 010314 1025 TAD SAVAC /RESTORE AC 4790 010315 5427 JMP I SAVRES /EXIT FROM INTERRUPT 4791 4792 010316 1156 INTTTY, TAD [BUFOP-BUFIOT+1 /POINT TO PRINTER DATA 4793 010317 1041 TAD BUFIOT 4794 010320 3041 DCA BUFIOT 4795 010321 1441 TAD I BUFIOT /GET TSF IOT 4796 010322 3323 DCA INTTSF 4797 010323 7402 INTTSF, HLT /PRINTER INTERRUPT? 4798 010324 5363 JMP INTNXT /NO, TRY NEXT USER OR UNDEFINED 4799 010325 4566 JMS I [BUFSWP /SET UP THE REST OF HIS POINTERS 4800 010326 3442 DCA I BUFSP /INDICATE PRINTER IS AVAILABLE 4801 010327 4555 JMS I [BUFO /GET CHARACTER OUT OF PRINTER BUFFER 4802 010330 5342 JMP INTTT2 /NONE THERE, CLEAR FLAG 4803 010331 3031 DCA INTTM /REMEMBER CHARACTER 4804 010332 4554 JMS I [OUT /OUTPUT IT 4805 010333 1153 TAD [-24 /DOES PRINTER BUFFER CONTAIN 20(10) CHARS? 4806 010334 1446 TAD I BUFC 4807 010335 7640 SZA CLA 4808 010336 5311 JMP INTDON /NO, JUST EXIT 4809 010337 4560 INTTBR, JMS I [INTPRI /YES, BREAK (RESET OUTPUT WAIT) 4810 010340 2000 2000 /BIT 1 IS OUTPUT WAIT 4811 010341 5311 JMP INTDON /EXIT 4812 4813 010342 7301 INTTT2, L0001 /CONVERT TSF TO TCF 4814 010343 1323 TAD INTTSF 4815 010344 3345 DCA INTTCF 4816 010345 7402 INTTCF, HLT /CLEAR INTERRUPT 4817 010346 5311 JMP INTDON /FINISHED 4818 4819 010347 7330 INTCTO, CLA STL RAR /COMPLEMENT BIT 0 (CONTROL-O BIT) 4820 010350 1443 TAD I BUFSP2 4821 010351 3443 DCA I BUFSP2 4822 010352 1156 TAD [BUFOP-BUFIOT+1 /CLEAR PRINTER BUFFER 4823 010353 4552 JMS I [INTCB 4824 010354 5337 JMP INTTBR /INTERRUPT DONE 4825 4826 010355 1156 INTCTC, TAD [BUFOP-BUFIOT+1 /CONTROL-C HANDLER 4827 010356 4551 JMS I [INTERR /FOR ERRORS IN INTERRUPTS 4828 010357 7724 ERR004 /ADDRESS OF ERROR IN FIELD 0 4829 4830 010360 1156 INTIOV, TAD [BUFOP-BUFIOT+1 /KEYBOARD BUFFER OVERFLOW 4831 010361 4551 JMS I [INTERR 4832 010362 7730 ERR070 4833 010363 2030 INTNXT, ISZ INTUSR /MORE USERS? 4834 010364 5226 JMP INTKEY /YES CHECK THIER TTYS 4835 INTUDF, /UNDEFINED INTERRUPT 4836 /INSERT LIST OF CLEAR IOTS HERE 4837 010365 5311 JMP INTDON /FOLLOWED BY THIS 4838 PAGE 4839 /ROUTINE TO SET UP POINTERS TO USER BUFFER DATA 4840 /BEGIOT POINTS TO FIRST BIT OF DATA 4841 010400 0000 BUFSWP, 0 /NOT SWAPPING, REALLY, BUT IT'S BUFSWP ANYHOW 4842 010401 1041 TAD BUFIOT /ALREADY SET UP? 4843 010402 7040 CMA 4844 010403 1042 TAD BUFSP 4845 010404 7650 SNA CLA 4846 010405 5600 JMP I BUFSWP /YES! QUICK EXIT 4847 010406 1150 TAD [-11 /DO 11 MORE WORDS 4848 010407 3032 DCA INTTM1 4849 010410 1147 TAD [BUFIOT 4850 010411 3033 DCA INTTM2 4851 010412 7301 BUFSW2, L0001 /SEQUENTIAL WORDS HAVE SEQUENTIAL VALUES 4852 010413 1433 TAD I INTTM2 4853 010414 2033 ISZ INTTM2 4854 010415 3433 DCA I INTTM2 4855 010416 2032 ISZ INTTM1 /SET UP ALL WORDS? 4856 010417 5212 JMP BUFSW2 /NO 4857 010420 5600 JMP I BUFSWP /YES 4858 4859 /ROUTINE TO PUT A CHARACTER INTO A BUFFER 4860 /8 BIT CHARACTER IS IN INTTM 4861 /IMMEDIATE RETURN MEANS NO ROOM WAS AVAILABLE FOR CHARACTER 4862 /SKIP RETURN IS NORMAL; CHARACTER IS IN BUFFER 4863 010421 0000 BUFI, 0 4864 010422 1444 TAD I BUFM /COMPUTE CHARACTER CAPACITY 4865 010423 7110 CLL RAR 4866 010424 1444 TAD I BUFM 4867 010425 7041 CIA 4868 010426 1446 TAD I BUFC /COMPARE WITH # THERE ALREADY 4869 010427 7700 SMA CLA 4870 010430 5621 JMP I BUFI /ERROR RETURN: NO ROOM FOR CHARACTER 4871 010431 2446 ISZ I BUFC /BUMP CHARACTER COUNT 4872 010432 2221 ISZ BUFI /NORMAL RETURN (SKIP) 4873 010433 2447 ISZ I BUFIS /CONSULT 3-WAY SWITCH 4874 010434 5262 JMP BUFI1 /EASY WAY OUT 4875 010435 7346 L7775 /RESET SWITCH 4876 010436 3447 DCA I BUFIS 4877 010437 7344 L7776 /POINT TO WORD BEFORE LAST 4878 010440 1451 TAD I BUFIP 4879 010441 0444 AND I BUFM /MODULO LENGTH OF BUFFER 4880 010442 1445 TAD I BUFB /BASE OF BUFFER 4881 010443 3032 DCA INTTM1 4882 010444 1031 TAD INTTM /SPLIT CHAR & STICK IN BITS 0-3 OF 2 WORDS 4883 010445 7006 RTL 4884 010446 7006 RTL 4885 010447 0267 AND C7400 4886 010450 1432 TAD I INTTM1 4887 010451 3432 DCA I INTTM1 4888 010452 2032 ISZ INTTM1 /SECOND WORD 4889 010453 1031 TAD INTTM 4890 010454 7012 RTR 4891 010455 7012 RTR 4892 010456 7010 RAR 4893 010457 0267 AND C7400 4894 010460 1432 TAD I INTTM1 4895 010461 5272 JMP BUFI2 4896 4897 010462 1451 BUFI1, TAD I BUFIP /BUILD POINTER TO BUFFER 4898 010463 0444 AND I BUFM 4899 010464 1445 TAD I BUFB 4900 010465 3032 DCA INTTM1 4901 010466 2451 ISZ I BUFIP /NEXT WORD OF BUFFER 4902 010467 7400 C7400, 7400 /ISZ MAY SKIP 4903 010470 1031 TAD INTTM /CHARACTER 4904 010471 0167 AND [177 /MAKE IT 8 BITS 4905 010472 3432 BUFI2, DCA I INTTM1 /STORE IT OFF 4906 010473 5621 JMP I BUFI /DONE AT LONG LAST 4907 4908 /ROUTINE TO GET CHARACTER FROM BUFFER 4909 /IMMEDIATE RETURN MEANS NO CHARACTER WAS AVAILABLE 4910 /SKIP RETURN IS NORMAL; CHARACTER IS IN AC 4911 010474 0000 BUFO, 0 4912 010475 1446 TAD I BUFC 4913 010476 7450 SNA 4914 010477 5674 JMP I BUFO /NO CHARACTERS THERE TO TAKE OUT! 4915 010500 1146 TAD [-1 4916 010501 3446 DCA I BUFC 4917 010502 2274 ISZ BUFO 4918 010503 2450 ISZ I BUFOS 4919 010504 5330 JMP BUFO1 4920 010505 7346 L7775 4921 010506 3450 DCA I BUFOS 4922 010507 7344 L7776 4923 010510 1452 TAD I BUFOP 4924 010511 0444 AND I BUFM 4925 010512 1445 TAD I BUFB 4926 010513 3032 DCA INTTM1 4927 010514 1432 TAD I INTTM1 4928 010515 0145 AND [3400 4929 010516 3033 DCA INTTM2 4930 010517 2032 ISZ INTTM1 4931 010520 1432 TAD I INTTM1 4932 010521 0267 AND C7400 4933 010522 7112 CLL RTR 4934 010523 7012 RTR 4935 010524 1033 TAD INTTM2 4936 010525 7012 RTR 4937 010526 7012 RTR 4938 010527 5674 JMP I BUFO 4939 4940 010530 1452 BUFO1, TAD I BUFOP 4941 010531 0444 AND I BUFM 4942 010532 1445 TAD I BUFB 4943 010533 3032 DCA INTTM1 4944 010534 1432 TAD I INTTM1 4945 010535 0167 AND [177 4946 010536 2452 ISZ I BUFOP 4947 010537 5674 JMP I BUFO 4948 010540 5674 JMP I BUFO 4949 4950 /FIELD 1 CONTINUATION OF *READC* 4951 010541 6002 XRCF1, IOF /WE ARE SHARING CODE WITH THE INTERRUPT ROUTINE 4952 010542 3041 DCA BUFIOT /POINT TO KEYBOARD DATA 4953 010543 4200 JMS BUFSWP 4954 010544 4274 JMS BUFO /EXTRACT THE CHARACTER 4955 010545 7330 L4000 /WASN'T ONE 4956 010546 6001 ION /FINISHED SHARING 4957 010547 6203 CIF CDF 0 /RETURN TO FIELD 0 4958 010550 5777 JMP I (XRCF0 4959 4960 IFZERO PDP8I < 4961 /POWER FAIL RECOVERY ROUTINE 4962 010551 6007 INTPFR, CAF /INITIALIZE ALL DEVICES 4963 010552 1156 TAD [12 /LINE FEED CODE 4964 010553 6046 BEGPFL, TLS /TLS CODES FOR ALL USERS 4965 010554 7000 NOP 4966 010555 7000 NOP 4967 010556 7000 NOP 4968 010557 7000 NOP 4969 010560 7000 NOP 4970 010561 7000 NOP 4971 010562 7000 NOP 4972 010563 6041 INTPF2, TSF /WAIT UNTIL LF DONE 4973 010564 5370 JMP INTPF3 4974 010565 1144 TAD [INTRPT&177+5000-12 /TAD [-12+JMP INTRPT 4975 010566 3573 DCA I [2 /RESTORE NORMAL INTERRUPTS 4976 010567 5543 JMP I [INTDON /FINISH WHAT WAS SO RUDELY INTERRUPTED 4977 4978 010570 6102 INTPF3, SPL /WATCH FOR ANOTHER POWER FAILURE 4979 010571 5363 JMP INTPF2 /WHILE RECOVERING FROM THIS ONE 4980 010572 7402 HLT /IT HAPPENED! 4981 > 4982 010577 3752 PAGE 4983 /ROUTINE TO USE FIELD 0 *ERROR* ROUTINE 4984 010600 0000 INTERR, 0 4985 010601 4552 JMS I [INTCB /CLEAR PRINTER BUFFER 4986 IFNZRO EDU250 < 4987 010602 1053 TAD DTDCTC /IS THIS JOB EXTENDING THE DIRECTORY? 4988 010603 1030 TAD INTUSR 4989 010604 7650 SNA CLA 4990 010605 5230 JMP INTER3 /YES, DELAY THE ERROR 4991 > 4992 010606 4233 JMS INTPRI /PUT USER IN HPQ 4993 010607 7777 7777 4994 010610 1542 TAD I [DBFTC /IS THIS USER RUNNING? 4995 010611 6211 CDF 10 4996 010612 7041 CIA 4997 010613 1046 TAD BUFC 4998 010614 7650 SNA CLA 4999 010615 5224 JMP INTER2 /YES, RETURN DIRECTLY 5000 010616 1141 TAD [-BUFOP+BUFIOT-ENSWAP+PC-2 /CALCULATE PC'S SWAPPED LOCATION 5001 010617 1041 TAD BUFIOT 5002 010620 3031 DCA INTTM 5003 010621 1600 TAD I INTERR /GET RESTART ADDRESS 5004 010622 3431 DCA I INTTM /STORE IN PC 5005 010623 5543 JMP I [INTDON /EXIT FROM INTERRUPT 5006 5007 010624 1600 INTER2, TAD I INTERR /GET RESTART LOC 5008 010625 3027 DCA SAVRES 5009 IFZERO PDP8I < 5010 010626 6005 RTF /COMBINED CID CDF 0; ION 5011 > 5012 IFNZRO PDP8I < 5013 CIF CDF 0 5014 ION 5015 > 5016 010627 5427 JMP I SAVRES /GO DIRECTLY TO ERROR PROCESSOR 5017 5018 IFNZRO EDU250 < 5019 010630 1600 INTER3, TAD I INTERR /WHEN DIRECTORY OPERATION IS FINISHED, 5020 010631 3057 DCA DTBSBN /WE WILL DO THE ERROR 5021 010632 5543 JMP I [INTDON /EXIT FROM INTERRUPT 5022 > 5023 5024 /ROUTINE TO CLEAR I/O WAITS 5025 /WORD FOLLOWING CALL INDICATES WHICH IS BEING CLEARED 5026 /CAUTION: EXITS WITH DATA FIELD SET TO 0! 5027 010633 0000 INTPRI, 0 5028 010634 1035 TAD USRPT /CALCULATE LOC OF FLD 0 STATUS WORD 5029 010635 1030 TAD INTUSR 5030 010636 3032 DCA INTTM1 5031 010637 1633 TAD I INTPRI /GET STATUS MASK 5032 010640 2233 ISZ INTPRI /SKIP OVER MASK ON RETURN 5033 010641 6201 CDF 0 5034 010642 0432 AND I INTTM1 /GET USER STATUS 5035 010643 7650 SNA CLA 5036 010644 5633 JMP I INTPRI /WASN'T WAITING 5037 010645 3432 DCA I INTTM1 /GIVE THIS JOB HIGHEST PRIORITY 5038 010646 7340 L7777 /STOP CURRENT USER AS SOON AS POSSIBLE 5039 010647 3540 DCA I [RUNTIM 5040 010650 5633 JMP I INTPRI 5041 5042 /MAIN INTELLIGENT OUTPUT ROUTINE 5043 /HANDLES CR, BELL, PRINTING, & NON-PRINTING CHARACTERS. 5044 /INSERTS A CR-LF WHENEVER 72 CHARACTERS ARE PRINTED ON A LINE. 5045 /NON-PRINTING CHARACTERS ARE SUPPRESSED. *OUT* SHOULD BE USED 5046 /FOR SUCH THINGS AS LINE FEEDS AND LEADER-TRAILER CODE, ECT. 5047 010651 0000 TYP, 0 5048 010652 1137 TAD [-15 5049 010653 1031 TAD INTTM 5050 010654 7450 SNA 5051 010655 5273 JMP TYPCR /HANDLE CR 5052 010656 1142 TAD [-7+15 5053 010657 7450 SNA 5054 010660 5300 JMP TYPBEL /OUTPUT BELL 5055 010661 1136 TAD [-"_+200-1+7 /CHECK IF PRINTING CHARACTER 5056 010662 7100 CLL 5057 010663 1135 TAD [-" +"_+1 5058 010664 7620 SNL CLA 5059 010665 5651 JMP I TYP /NON-PRINTING, EXIT 5060 010666 4302 JMS OUT /OUTPUT IT 5061 010667 2443 ISZ I BUFSP2 /BUMP COLUMN COUNT 5062 010670 5651 JMP I TYP 5063 010671 1134 TAD [15 /TTY LINE HAS OVERFLOWED 5064 010672 3031 DCA INTTM 5065 010673 4302 TYPCR, JMS OUT /SO RETURN THE CARRIAGE 5066 010674 1133 TAD [-110 /-72(10) 5067 010675 3443 DCA I BUFSP2 /RESET COLUMN COUNT 5068 010676 1156 TAD [12 /NOW DO THE LF 5069 010677 3031 DCA INTTM 5070 010700 4302 TYPBEL, JMS OUT 5071 010701 5651 JMP I TYP /ALL DONE 5072 5073 /ROUTINE TO ARRANGE OUTPUT OF CHARACTER IN INTTM. 5074 /ASSUMES BITS 0-3 OF INTTM ARE 0. 5075 010702 0000 OUT, 0 5076 010703 1442 TAD I BUFSP /GET PRINTER BUSY STATUS 5077 010704 7650 SNA CLA /IS PRINTER BUSY? 5078 010705 5311 JMP OUT2 /NO 5079 010706 4564 JMS I [BUFI /YES, PUT CHAR IN PRINTER BUFFER 5080 010707 5321 JMP INTOOV /NO ROOM FOR IT 5081 010710 5702 JMP I OUT 5082 5083 010711 1170 OUT2, TAD [TLS-TSF /CONVERT TSF IOT TO TLS 5084 010712 1441 TAD I BUFIOT /GET TSF 5085 010713 3315 DCA OUTTLS 5086 010714 1031 TAD INTTM /GET CHARACTER 5087 010715 7402 OUTTLS, HLT /ACTUALLY T*Y*P*E* IT!! 5088 010716 7340 L7777 /INDICATE PRINTER IS BUSY 5089 010717 3442 DCA I BUFSP 5090 010720 5702 JMP I OUT 5091 5092 010721 4200 INTOOV, JMS INTERR /OUTPUT BUFFER OVERFLOW 5093 010722 7731 ERR080 5094 5095 /ROUTINE TO ARRANGE FOR A JOB TO USE *TYP* OR *OUT* OUTSIDE OF AN INTERRUPT. 5096 /A SKIP RETURN MEANS CONTROL-O IS IN EFFECT. 5097 010723 0000 JOB, 0 5098 010724 6201 CDF 0 /MUST USE FIELD 0 5099 010725 6002 IOF /SHARING CODE WITH INTERRUPT ROUTINE 5100 010726 3031 DCA INTTM /STANDARD PLACE FOR A CHARACTER 5101 010727 1036 TAD MUSRPT /THIS FAKES OUT *INTERR* IF NEED BE 5102 010730 1532 TAD I [LOOK 5103 010731 3030 DCA INTUSR /FAKED USER COUNT 5104 010732 1531 TAD I [DBFKS2 /GET POINTER TO CONTROL-O BIT 5105 010733 3032 DCA INTTM1 5106 010734 6211 CDF 10 5107 010735 1432 TAD I INTTM1 /CONTROL-O IS BIT 0 5108 010736 7710 SPA CLA 5109 010737 2323 ISZ JOB /CONTROL-O: SKIP RETURN 5110 010740 1130 TAD [BUFOP-BUFSP2+1 /BUILD POINTER TO PRINTER DATA 5111 010741 1032 TAD INTTM1 5112 010742 3041 DCA BUFIOT 5113 010743 4566 JMS I [BUFSWP /SET REST OF POINTERS 5114 010744 5723 JMP I JOB /DONE, AND NONE TOO SOON 5115 5116 /FIELD 1 CONTINUATION OF *PRINTC* 5117 010745 4323 XPCF1, JMS JOB /SIMULATE INTERRUPT 5118 010746 4251 JMS TYP /PRINT IT 5119 010747 6203 CIF CDF 0 /NOW BEAT IT BACK TO FIELD 0 5120 010750 6001 ION 5121 010751 5372 JMP XPCF0 5122 5123 /*PRINTX*, MERCIFULLY MOVED TO FIELD 1 5124 010752 0000 XOUT, 0 5125 010753 4323 JMS JOB /SIMULATE INTERRUPT 5126 010754 4302 JMS OUT /THIS WILL OUTPUT ANYTHING 5127 010755 6203 CIF CDF 0 5128 010756 6001 ION 5129 010757 5752 JMP I XOUT /EXIT TO FIELD 0 5130 5131 010760 4323 PRINF1, JMS JOB /SPECIAL CONTROL/O KLUDGE FOR *PRINT* 5132 010761 7410 SKP 5133 010762 5371 JMP PRIN41 5134 010763 4251 JMS TYP /OUTPUT SPACE 5135 010764 7326 L0002 5136 010765 1443 TAD I BUFSP2 5137 010766 1127 TAD [16 5138 010767 7510 SPA 5139 010770 5366 JMP .-2 5140 010771 6203 PRIN41, CIF CDF 0 5141 010772 5526 JMP I [PRINF0 5142 PAGE 5143 IFNZRO EDU250 < 5144 /CONTROL WORDS FOR DECTAPE BUFFER 5145 /REFER TO BUFIOT 5146 011000 0377 DTBFM, 377 5147 011001 3070 DTBFB, DTBUF 5148 011002 0600 DTBFC, 600 5149 011003 7775 DTBFIS, -3 5150 011004 7775 DTBFOS, -3 5151 011005 0000 DTBFIP, 0 5152 011006 0000 DTBFOP, 0 5153 DTBFI=DTBFM-3 /LOGICAL START OF CONTROL WORDS 5154 5155 /CONTINUATION OF DECTAPE *READC* 5156 011007 4525 DTRC2, JMS I [DTREAD /READ NEXT OS/8 BLOCK 5157 011010 2064 ISZ DTBLK /SELECT NEXT OS/8 BLOCK 5158 011011 1151 TAD [600 /JUST READ 600 CHARS 5159 011012 3202 DCA DTBFC /MAKE SURE BUFO KNOWS IT 5160 011013 6002 DTRCF1, IOF /SHARING CODE WITH INTERRUPT ROUTINE 5161 011014 1124 TAD [DTBFI /ADDR OF BUFFER CONTROL WORDS 5162 011015 3041 DCA BUFIOT 5163 011016 4566 JMS I [BUFSWP 5164 011017 4555 JMS I [BUFO /GET CHAR FROM DECTAPE BUFFER 5165 011020 5207 JMP DTRC2 /NONE LEFT 5166 011021 6203 CIF CDF 0 /AC=CHAR 5167 011022 6001 ION 5168 011023 5266 JMP DTRCF0 5169 5170 /CONTINUATION OF DECTAPE *PRINTC* 5171 011024 1031 DTPC2, TAD INTTM /PROTECT CHARACTER FROM INTERRUPTS 5172 011025 3055 DCA DTENTS 5173 011026 4523 JMS I [DTWRIT /WRITE DECTAPE BUFFER 5174 011027 2064 ISZ DTBLK /SELECT NEXT OS/8 BLOCK 5175 011030 3202 DCA DTBFC /ZERO CHAR COUNT 5176 011031 1055 TAD DTENTS /GET CHAR BACK 5177 011032 6002 DTPCF1, IOF /SHARING WITH INTERRUPTS 5178 011033 3031 DCA INTTM /SAVE CHAR 5179 011034 1124 TAD [DTBFI 5180 011035 3041 DCA BUFIOT 5181 011036 4566 JMS I [BUFSWP 5182 011037 7325 L0003 5183 011040 4564 JMS I [BUFI /PUT CHAR IN DECTAPE BUFFER 5184 011041 5224 JMP DTPC2 /NO SPACE 5185 011042 1137 TAD [-15 /SET UP CHECK FOR CR 5186 011043 1031 TAD INTTM 5187 011044 6203 CIF CDF 0 5188 011045 6001 ION 5189 011046 5302 JMP DTPCF0 5190 5191 /CONTINUATION OF *OLD* 5192 011047 4522 OLDF1, JMS I [DTLKUP /LOCATE OLD FILE ENTRY 5193 011050 1056 TAD DTSBN /STARTING BLOCK NUMBER 5194 011051 3064 DCA DTBLK /CURRENT OS/8 BLOCK 5195 011052 3202 DCA DTBFC /NO CHARACTERS IN BUFFER 5196 011053 7346 L7775 /POINT TO START OF BUFFER 5197 011054 3204 DCA DTBFOS 5198 011055 3206 DCA DTBFOP 5199 011056 6203 CDF CIF 0 5200 011057 5205 JMP OLDF0 /HAVE FOUND FILE 5201 5202 /CONTINUATION OF *CAT* 5203 011060 4521 CATF1, JMS I [DTDIR /GET NEXT DIRECTORY ENTRY 5204 011061 5317 JMP CATDON /NO MORE, DONE 5205 011062 1461 TAD I DTCEPT 5206 011063 7650 SNA CLA 5207 011064 5260 JMP CATF1 /IGNORE EMPTY ENTRIES 5208 011065 7325 L0003 /POINT TO EXTENSION 5209 011066 1061 TAD DTCEPT 5210 011067 3065 DCA TM1 5211 011070 6201 CDF 0 5212 011071 1520 TAD I [NAME+3 5213 011072 6211 CDF 10 5214 011073 7041 CIA 5215 011074 1465 TAD I TM1 /COMPARE WITH EXTENSION 5216 011075 7640 SZA CLA 5217 011076 5260 JMP CATF1 /IGNORE NON BASIC FILES 5218 011077 7346 L7775 /3 WORDS TO FILENAME 5219 011100 3065 DCA TM1 5220 011101 1061 TAD DTCEPT 5221 011102 3066 DCA TM2 /POINTER TO FILENAME 5222 011103 1466 CAT3, TAD I TM2 5223 011104 7002 BSW 5224 011105 4517 JMS I [CATPRT /PRINT CHAR OF FILENAME 5225 011106 1466 TAD I TM2 5226 011107 4517 JMS I [CATPRT /PRINT NEXT CHAR 5227 011110 2066 ISZ TM2 /NEXT WORD OF FILENAME 5228 011111 2065 ISZ TM1 /ANY WORDS LEFT? 5229 011112 5303 JMP CAT3 /YES 5230 011113 4517 JMS I [CATPRT /PRINT SPACE AFTER NAME 5231 011114 1463 TAD I DTNEPT /GET LENGTH OF FILE 5232 011115 6203 CIF CDF 0 /GO TO FIELD 0 TO HAVE IT PRINTED 5233 011116 5255 JMP CATF0 5234 5235 011117 6203 CATDON, CIF CDF 0 5236 011120 5273 JMP DTDONE /GO DEASSIGN DECTAPE 5237 5238 /CONTINUATION OF *SAVE* 5239 011121 3060 SAVEF1, DCA DTIBL /AT MOST THIS BIG 5240 011122 3057 DCA DTBSBN 5241 011123 7301 L0001 /READ DIRECTORY SEGMENT 1 5242 011124 4521 SAV2, JMS I [DTDIR 5243 011125 5356 JMP SAV5 /AIN'T NO MORE 5244 011126 1461 TAD I DTCEPT 5245 011127 7640 SZA CLA 5246 011130 5345 JMP SAV13 /NOT AN EMPTY 5247 011131 1057 TAD DTBSBN /FOUND A SPOT ALREADY? 5248 011132 7640 SZA CLA 5249 011133 5324 JMP SAV2 /YES, DON'T FIND ANOTHER 5250 011134 1463 TAD I DTNEPT /- LENGTH OF EMPTY 5251 011135 7041 CIA /SET UP LINK 5252 011136 7161 STL CIA 5253 011137 1060 TAD DTIBL /ESTIMATED FILE SIZE 5254 011140 7660 SNL SZA CLA 5255 011141 5324 JMP SAV2 /EMPTY TOO SMALL 5256 011142 1056 TAD DTSBN /REMEMBER THIS ENTRY 5257 011143 3057 DCA DTBSBN 5258 011144 5324 JMP SAV2 /IT SEEMS STUPID TO KEEP READING THE 5259 /DIRECTORY, BUT WE HAVE TO MAKE SURE THAT 5260 /THE FILE DOESN'T ALREADY EXIST 5261 5262 011145 4516 SAV13, JMS I [DTNAME /MAKE SURE FILE NOT HERE ALREADY 5263 011146 0000 DTNCO1, 0 /THIS SUBR IS AN ARG TO DTNAME 5264 011147 7041 CIA 5265 011150 1417 TAD I XR2 5266 011151 7640 SZA CLA 5267 011152 5324 JMP SAV2 /NOT SAME NAME 5268 011153 4746 JMS I DTNCO1 /EXIT ARG SUBR WITH JMS! 5269 011154 6203 DTLERR, CIF CDF 0 /FILE ALREADY EXISTS, OR LOOKUP ERROR 5270 011155 5234 JMP ERRDSV 5271 5272 011156 1057 SAV5, TAD DTBSBN 5273 011157 6203 CIF CDF 0 5274 011160 7450 SNA 5275 011161 5245 JMP ERRDNR /NO ROOM FOR OUTPUT FILE 5276 011162 3064 DCA DTBLK /THIS IS THE BLOCK FOR TRANSFERS 5277 011163 3202 DCA DTBFC /INIT BOGUS *PRINTC* FOR DECTAPE 5278 011164 7346 L7775 5279 011165 3203 DCA DTBFIS 5280 011166 3205 DCA DTBFIP 5281 011167 1115 TAD [DTPC 5282 011170 5235 JMP SAVF0 5283 PAGE 5284 011200 0000 CATPRT, 0 /PRINT ROUTINE FOR *CAT* 5285 011201 0162 AND [77 /WIPE OUT GARBAGE 5286 011202 7440 SZA /IF ZERO, PRINT SPACE 5287 011203 1377 TAD (-40 /CONVERT SIXBIT TO ASCII 5288 011204 7510 SPA 5289 011205 1135 TAD [100 5290 011206 1376 TAD (40 5291 011207 4775 JMS I (JOB /PRINT CHARACTER IN AC 5292 011210 4557 JMS I [TYP 5293 011211 6001 ION 5294 011212 5600 JMP I CATPRT /DONE WITH THIS CHAR 5295 5296 /CONTINUATION OF *UNSAVE* 5297 011213 4522 UNSF1, JMS I [DTLKUP /LOCATE FILE ENTRY TO UNSAVE 5298 011214 3461 DCA I DTCEPT /MAKE AN EMPTY OUT OF IT 5299 011215 1061 TAD DTCEPT 5300 011216 3016 DCA XR1 5301 011217 1463 TAD I DTNEPT /GET LENGTH OF ENTRY 5302 011220 3416 DCA I XR1 /NOW LENGTH OF EMPTY 5303 011221 7326 L0002 /NOW, EXCEPT FOR EMPTY 5304 011222 4514 JMS I [DTDIRS /SQUISH OUT OLD ENTRY 5305 011223 4774 JMS I (DTDD1 /WIPE OUT ANY TRAILING EMPTIES 5306 011224 4523 JMS I [DTWRIT /WRITE NEW DIRECTORY 5307 011225 6203 CIF CDF 0 5308 011226 5513 JMP I [DTDONE /DONE 5309 5310 IFNZRO TD8E < 5311 /FOR USE BY DECTAPE READ & WRITE ROUTINES 5312 DTTBLK=TM1 /PHYSICAL BLOCK # BEING TRANSFERRED 5313 DTTBUF=INTUSR /BUFFER POINTER FOR TRANSFER 5314 DTTTM=INTTM /WORD COUNT FOR TRANSFER 5315 DTETRY=TM2 /ERROR RETRY COUNTER 5316 DTECS=INTTM1 /EQUIVALENCE CHECKSUM 5317 DTETM=INTTM2 /TEMP USED BY DTEEQ (CHECKSUMMER) 5318 5319 /DECTAPE TRANSFER CONTROLLER 5320 /THIS ROUTINE'S MAIN FUNCTION IS TO POSITION THE DECTAPE 5321 /FOR DTRD AND DTWT. 5322 DTTCON, 0 5323 TAD DTBLK /GET OS/8 BLOCK NUMBER 5324 CLL RAL /TRANSLATE TO PHYSICAL BLOCK NUMBER 5325 DCA DTTBLK 5326 L7775 /3 ERROR TRIES 5327 DCA DTETRY 5328 CIF CDF 0 5329 JMP DTT3 5330 5331 DTTUTS, IOF /NO INTERRUPTS 5332 SDRC /CLEAR TIME ERROR, SLF, QLF 5333 SDLC 5334 JMS I (DTRQ /WAIT UNTIL MT REG CONTAINS VALID DATA 5335 DTTRMT, JMS DTRS /AC=NEXT MT+COMMAND REG+STATUS 5336 RTL 5337 AND (77^4 5338 TAD (-26^4 /CHECK BLOCK MARK 5339 SZA 5340 JMP DTTMT2 /NOT BLOCK MARK 5341 SDRD /AC=BLOCK #, LINK=.NOT. DIRECTION BIT 5342 SNL /IF REVERSE, TARGET IS 3 BACK 5343 TAD [3 5344 CIA 5345 TAD DTTBLK 5346 SZL /IF LINK=0, APPROACHING TARGET BLOCK 5347 JMP DTTREV /GONE PAST 5348 SNA 5349 JMP DTTFND /AT TARGET, MOVING FORWARD 5350 SPA 5351 CIA 5352 TAD [-1 /CHECK DISTANCE FROM TARGET 5353 SPA SNA 5354 JMP DTTRMT /ALMOST THERE, JUST WAIT 5355 TAD (-20+1 5356 JMS DTECHK /CHECK TIME & SELECT ERRORS 5357 SZL CLA 5358 JMP DTTUTS /INTERRUPTS ONLY 5359 DTTLGO, CIF CDF 0 /TIMESHARING 5360 JMP DTT5 5361 5362 DTTMT2, TAD (-22+26^4 /CHECK END ZONE 5363 SZA CLA 5364 JMP DTTRMT /NOT END ZONE 5365 DTTREV, JMS DTECHK /CHECK ERRORS 5366 SDRC /REVERSE DECTAPE 5367 RTL 5368 CML RTR 5369 SDLC 5370 JMP DTTLGO 5371 5372 DTTFND, JMS I (DTRQ /SKIP CONTROL WORDS 5373 JMS DTRS 5374 L0001 /SET UP POINTER TO BUFFER 5375 AND DTTBLK /BASED ON BIT 11 OF PHYS BLK ADDR 5376 CLL RAL 5377 BSW 5378 TAD (DTBUF 5379 DCA DTTBUF 5380 TAD (-200 /TRANSFER 200(8) WORDS 5381 DCA DTTTM 5382 JMS I (DTRQ 5383 JMS DTRS 5384 JMS I DTTCON /CALL ARGUMENT SUBROUTINE TO READ OR WRITE 5385 DTT2, 0 /JMS ARG RETURN LINKAGE 5386 SZA CLA /CHECK ERROR BITS 5387 JMP DTERR /ERROR 5388 ISZ DTTBLK /NEXT 200(8) WORDS 5389 L0001 /CHECK BIT 11 OF DTTBLK 5390 AND DTTBLK 5391 SZA CLA 5392 JMP DTTUTS /SET, MEANING THERE IS MORE TO READ 5393 DTTALM, SDLC /STOP DECTAPE 5394 CIF CDF 0 /GET OURSELVES SWAPPED IN 5395 JMP DTT4 /EVENTUAL RETURN WILL BE TO DTTDON 5396 5397 DTTDON, TAD DTETRY /WERE WE SUCCESSFUL? 5398 SZA CLA 5399 JMP I DTT2 /YES, EXIT SWAPPED IN AND RUNNING 5400 CIF CDF 0 /NO, INVOKE *ERROR* 5401 JMP ERRDT 5402 5403 DTECHK, 0 /CHECK TIME & SELECT ERRORS 5404 JMS DTRS /GET STATUS 5405 ION /ALLOW INTERRUPTS 5406 AND [100 /ISOLATE ERROR BIT 5407 SNA CLA 5408 JMP I DTECHK /NO ERROR 5409 DTERR, ISZ DTETRY /SOME DECTAPE ERROR 5410 JMP DTTUTS /TRY AGAIN 5411 JMP DTTALM /FATAL, CONFIRMED ERROR 5412 5413 DTRS, 0 /READ NEXT MARK TRACK REGISTE 5414 SDSS /WAIT FOR SINGLE LINE 5415 JMP .-1 5416 SDRC /READ MT REG & OTHERS 5417 JMP I DTRS 5418 PAGE 5419 /DECTAPE READ ROUTINE 5420 /READS ONE OS/8 BLOCK (400(8) WORDS) FROM THE DECTAPE. 5421 /TRANSFER IS FROM THE OS/8 BLOCK IN DTBLK TO CORE AT DTBUF. 5422 /ON EXIT, THE USER IS SWAPPED IN AND RUNNING. 5423 DTREAD, 0 5424 JMS I [DTTCON /USE THE DECTAPE TRANFER CONTROLLER 5425 /THE SUBROUTINE DTRD IS THE ARGUMENT TO DTTCON 5426 DTRD, 0 /DTRD READS A PHYSICAL DECTAPE BLOCK (200(8) WORDS) 5427 JMS DTRQ /SKIP OVER CONTROL WORD 5428 JMS DTRQ /GET REVERSE CHECKSUM 5429 AND [77 5430 TAD [7700 5431 DCA DTECS /EQUIVALENCE CHECKSUM 5432 DTRLP, JMS DTRQ /READ A WORD 5433 DCA I DTTBUF /SAVE IT IN THE BUFFER 5434 TAD I DTTBUF /GET IT BACK 5435 JMS DTEEQ /CHECKSUM IT 5436 ISZ DTTBUF /POINT TO NEXT WORD OF BUFFER 5437 ISZ DTTTM /READ ALL WORDS? 5438 JMP DTRLP /NO 5439 JMS DTRQ /READ 129TH WORD 5440 JMS DTEEQ /CHECKSUM IT 5441 JMS DTRQ /READ CHECKSUM 5442 AND [7700 /HACK OFF IRRELEVANT PART 5443 JMS DTEEQ /INCLUDE IN CHECKSUM 5444 JMS I [DTRS /READ DECTAPE COMMAND REGISTER 5445 AND [100 /LOOK AT TIME & SELECT ERROR BIT 5446 SNA 5447 JMS DTEBYT /UNLESS OTHER ERROR, SEE IF CHECKSUM OK 5448 JMS I DTRD /FUNNY EXIT FROM ARG TO DTTCON 5449 JMP I DTREAD /EXIT FROM DTREAD 5450 5451 /DECTAPE WRITE SUBROUTINE 5452 /WRITES ONE OS/8 BLOCK (400(8) WORDS). 5453 /TRANFER IS FROM CORE AT DTBUF TO THE OS/8 BLOCK IN DTBLK 5454 /ON EXIT, THE USER IS SWAPPED IN AND RUNNING. 5455 DTWRIT, 0 5456 JMS I [DTTCON /USE DECTAPE TRANSFER CONTROLLER 5457 DTWT, 0 /LIKE DTRD, THIS IS ARG TO DTTCON 5458 JMS DTRQ /SKIP OVER CONTROL WORD 5459 SDRC /TURN WRITE HEAD ON 5460 TAD [400 5461 SDLC 5462 L7777 /WRITE 7777 IN REVERSE CHECKSUM 5463 SDLD 5464 DCA DTECS /AND IN THE CHECKSUM WORD 5465 DTWLP, TAD I DTTBUF /GET WORD FROM BUFFER 5466 JMS DTWQ /WRITE WORD 5467 ISZ DTTBUF /POINT TO NEXT WORD IN BUFFER 5468 ISZ DTTTM /DONE WHOLE BUFFER? 5469 JMP DTWLP /NO 5470 JMS DTWQ /WRITE 0000 IN 129TH WORD 5471 JMS DTEBYT /GET CHECKSUM 5472 JMS DTWQ /WRITE CHECKSUM 5473 JMS DTRQ /GIVE CHECKSUM TIME TO BE WRITTEN 5474 SDRC /TURN OFF WRITE HEAD 5475 DCA DTTTM /REMEMBER CURRENT STATUS FOR ERRORS 5476 TAD DTTTM 5477 AND [7000 5478 SDLC 5479 TAD DTTTM /GET OLD COMMAND REGISTER 5480 AND [300 /LOOK AT WRITE LOCKOUT, TIME & SELECT BITS 5481 JMS I DTWT /THAT FUNNY EXIT 5482 JMP I DTWRIT /EXIT FROM DTWRIT 5483 5484 DTRQ, 0 /READ NEXT DATA WORD 5485 SDSQ /WAIT FOR QUAD LINE 5486 JMP .-1 5487 SDRD /READ DATA REGISTER 5488 JMP I DTRQ 5489 5490 DTWQ, 0 /WRITE NEXT DATA WORD 5491 SDSQ 5492 JMP .-1 5493 SDLD /LOAD WRITE DATA 5494 JMS DTEEQ /CHECKSUM DATA WRITING 5495 JMP I DTWQ 5496 5497 DTEEQ, 0 /EQUIVALENCE CHECKSUM 5498 CMA 5499 DCA DTETM /ACTUALLY CHECKSUMS ON DECTAPE ARE 5500 TAD DTETM /EQUIVALENCE OF ALL WORDS IN A RECORD 5501 AND DTECS /6 BITS AT A TIME. SINCE EQUIVALENCE 5502 CIA /IS ASSOCIATIVE WE DO IT 12 AT A TIME 5503 CLL RAL /AND CONDENSE LATER 5504 TAD DTETM /IDENTITIES USED ARE: 5505 TAD DTECS /A+B=(A.XOR.B)+2*(A.AND.B) 5506 DCA DTECS /A.EQU.B=.NOT.(A.XOR.B)=A.XOR.(.NOT.B) 5507 JMP I DTEEQ /A.EQU.B=(A+(.NOT.B))-2*(A.AND.(.NOT.B)) 5508 5509 DTEBYT, 0 /CONVERT 12 BIT CHECKSUM TO 6 BITS 5510 TAD DTECS 5511 CLL CMA BSW 5512 JMS DTEEQ 5513 TAD DTECS 5514 AND [7700 5515 JMP I DTEBYT /AC0-5=CHECKSUM, AC6-11=0 5516 > 5517 IFNZRO RK8E < 5518 DTWRIT, 0 5519 TAD DTWRIT 5520 DCA DTREAD 5521 L4000 5522 SKP 5523 DTREAD, 0 5524 CDF 0 5525 TAD I [DEV 5526 CDF 10 5527 CLL RAR 5528 DCA TM1 5529 SZL 5530 TAD [6260 5531 CLL 5532 TAD DTBLK 5533 DCA TM2 5534 TAD TM1 5535 RAL 5536 TAD [10 5537 DLDC 5538 TAD [DTBUF 5539 DLCA 5540 L7775 5541 DCA TM1 5542 DTR2, DCLR 5543 TAD TM2 5544 DLAG 5545 DSKP 5546 JMP .-1 5547 DRST 5548 CLL RAL 5549 SNA 5550 JMP I DTREAD 5551 AND [1002 5552 SNA CLA 5553 JMP DTR3 5554 /RECALIBRATE DRIVE 5555 DCLR 5556 L0002 5557 DCLR 5558 DSKP 5559 JMP .-1 5560 DCLR 5561 DRST 5562 SZA CLA 5563 JMP .-2 5564 DTR3, ISZ TM1 5565 JMP DTR2 5566 CIF CDF 0 5567 JMP ERRDT 5568 > 5569 IFNZRO RX8E < 5570 011227 0000 DTWRIT, 0 /WRITE OS/8 BLOCK ON FLOPPY DISK 5571 011230 4246 JMS RXCON /THIS CONTROLS MAIN READ/WRITE LOOP 5572 011231 0000 RXW, 0 /WITH RXW (WRITE SEQUENCE CONTROL) 5573 011232 4270 JMS RXBUF /FILL HARDWARE BUFFER 5574 011233 4320 JMS RXRW /WRITE RX8E RECORD 5575 011234 4631 JMS I RXW /NOTE PECULIAR RETURN 5576 011235 5627 JMP I DTWRIT /DONE--SUBROUTINES DID THE WORK 5577 5578 011236 0000 DTREAD, 0 /READ OS/8 BLOCK FROM FLOPPY DISK 5579 011237 7326 L0002 /SET READ BIT IN COMMAND WORD 5580 011240 4246 JMS RXCON /RXCON CONTROLS RX8E READ LOOP TOO 5581 011241 0000 RXR, 0 /NOTE SUBR RXR IS AN ARG TO RXCON 5582 011242 4320 JMS RXRW /FIRST READ RX8E REC 5583 011243 4270 JMS RXBUF /THEN EMPTY HARDWARE BUFFER 5584 011244 4641 JMS I RXR /STRANGE EXIT FROM ARG SUBR 5585 011245 5636 JMP I DTREAD /DONE 5586 5587 011246 0000 RXCON, 0 /CONTROLS READ/WRITE OF OS/8 BLK ON RX8E 5588 011247 6201 CDF 0 /GET DEVICE BIT FROM FLD 0 5589 011250 1512 TAD I [DEV /COMBINED WITH READ/WRITE BIT IN AC 5590 011251 6211 CDF 10 5591 011252 3372 DCA RXFN /SAVE COMMAND REG WORD 5592 011253 1111 TAD [-4 /READ 4 RX8E RECS PER OS/8 BLK 5593 011254 3065 DCA TM1 5594 011255 1110 TAD [DTBUF /POINTER TO CORE BUFFER 5595 011256 3066 DCA RXBFPT 5596 011257 1064 TAD DTBLK /CONVERT OS/8 BLKS TO RX8E RECS 5597 011260 7106 CLL RTL /MULTIPLY BY 4 5598 011261 3367 DCA RXREC 5599 011262 4646 RXCONL, JMS I RXCON /TRANSFER 1 RX8E RECORD 5600 011263 0000 RXCONR, 0 /POINTER TO END OF ARG SUBR 5601 011264 2367 ISZ RXREC /NEXT RX8E RECORD 5602 011265 2065 ISZ TM1 /TRANSFERED 4 RECS YET? 5603 011266 5262 JMP RXCONL /NO: DO NEXT ONE 5604 011267 5663 JMP I RXCONR /YES: READ/WRITE DONE 5605 5606 011270 0000 RXBUF, 0 /EMPTY/FILL RX8E'S HARDWARE BUFFER 5607 011271 6756 INTR /NO INTERRUPT ON DONE FLAG 5608 011272 1066 TAD RXBFPT /SAVE CURRENT PLACE IN BUFFER 5609 011273 7421 MQL /(IN CASE OF ERROR) 5610 011274 1107 TAD [-12 /TEN ERROR RETRIES ALLOWED 5611 011275 3371 DCA RXERCT 5612 011276 1372 RXBERL, TAD RXFN /INITIATE EMPTY/FILL OF HARD BUFFER 5613 011277 6751 LCD 5614 011300 7501 MQA /POINT TO RIGHT PLACE IN CORE BUFFER 5615 011301 3066 DCA RXBFPT 5616 011302 6753 RXB1, STR /READY TO TRANSFER A WORD? 5617 011303 5310 JMP RXB2 /NO: CHECK DONE FLAG 5618 011304 1466 TAD I RXBFPT /GET WORD IN CASE SENDING 5619 011305 6752 XDR /TRANSFER WORD 5620 011306 3466 DCA I RXBFPT /SAVD WORD IN CASE RECIEVING 5621 011307 2066 ISZ RXBFPT /POINT TO NEXT CORE BUFFER WORD 5622 011310 6755 RXB2, SDN /DONE? 5623 011311 5302 JMP RXB1 /NOT SURE, CHECK TRANSFER READY FLAG 5624 011312 6754 SER /YES: ANY ERRORS OCCUR? 5625 011313 5670 JMP I RXBUF /NO: EXIT 5626 011314 2371 ISZ RXERCT /YES: IS IT A HARD ERROR YET? 5627 011315 5276 JMP RXBERL /NO, TRY AGAIN 5628 011316 6203 RXFAT, CIF CDF 0 /FATAL I/O ERROR 5629 011317 5336 JMP ERRDT 5630 5631 011320 0000 RXRW, 0 /READ/WRITE 1 RX8E REC INTO HARDWARE BUFFER 5632 011321 1107 TAD [-12 /TEN ERROR RETRIES ALLOWED 5633 011322 3371 DCA RXERCT 5634 011323 7307 RXRERL, L0004 /BIT TO CAUSE ACTUAL READ OR WRITE 5635 011324 7101 CLL IAC /CLL FOR LATER; AC11 IGNORED BY LCD 5636 011325 6756 INTR /BUT AC11 SETS INTERRUPT ON DONE FLAG 5637 011326 1372 TAD RXFN /ADD DEVICE&R/W BITS 5638 011327 6751 LCD /INITIATE ACTUAL DATA TRANSFER ON FLOPPY 5639 011330 3370 DCA RXTRAK /NOW COMPUTE TRACK (0-114(8)) 5640 /CLL /AND SECTOR (1-32(8)) FROM RECORD # 5641 011331 1367 TAD RXREC /JUST LIKE OS/8, INCLUDING INTERLEAVING 5642 011332 7420 RXDVLP, SNL 5643 011333 2370 ISZ RXTRAK 5644 011334 1137 TAD [-15 /THIS IS DIVISION 5645 011335 7500 SMA 5646 011336 5332 JMP RXDVLP 5647 011337 7004 RAL /INTERLEAVING STEP 5648 011340 1106 TAD [33 5649 011341 6753 STR 5650 011342 5341 JMP .-1 5651 011343 6752 XDR /TRANSFER SECTOR # 5652 011344 7200 CLA /THEN TRANSFER TRACK # 5653 011345 1370 TAD RXTRAK 5654 011346 6753 STR 5655 011347 5346 JMP .-1 5656 011350 6752 XDR /NOW ACTUAL DATA TRANSFER CAN BEGIN 5657 011351 6203 CIF CDF 0 /DISMISS UNTIL DONE FLAG COMES UP 5658 011352 4327 JMS RXF0DW 5659 011353 6754 SER /ANY ERRORS? 5660 011354 5720 JMP I RXRW /NO: EXIT 5661 011355 6752 XDR /YES: GET ERROR&STATUS WORD 5662 011356 7012 RTR /CHECK CRC(BIT11) & PARITY(BIT 10) 5663 011357 7730 SPA SZL CLA 5664 011360 5364 JMP .+4 5665 011361 6757 INIT /RECALIBRATE IF NOT CRC & NOT PARITY 5666 011362 6203 CIF CDF 0 /THEN WAIT FOR DONE FLAG 5667 011363 4327 JMS RXF0DW /(NONWASTEFULLY) 5668 011364 2371 ISZ RXERCT /HARD ERROR YET? 5669 011365 5323 JMP RXRERL /NO: KEEP TRYING TO DO IT RIGHT 5670 011366 5316 JMP RXFAT /YES: INDICATE FATAL ERROR 5671 5672 RXBFPT=TM2 /POINTER TO CORE BUFFER 5673 011367 0000 RXREC, 0 /RX8E LOGICAL RECORD 5674 011370 0000 RXTRAK, 0 /RX8E TRACK CORRESPONDING TO RXREC 5675 011371 0000 RXERCT, 0 /ERROR RETRY COUNTER 5676 011372 0000 RXFN, 0 /DEVICE & R/W BITS FOR RX8E COMMAND REG 5677 /TM1 5678 011374 2046 PAGE 011375 0723 011376 0040 011377 7740 5679 > 5680 /SECOND CONTINUATION OF *SAVE* 5681 011400 4523 SAV2F1, JMS I [DTWRIT /WRITE LAST BLOCK OF FILE 5682 011401 1064 TAD DTBLK /COMPUTE ACTUAL LENGTH OF FILE 5683 011402 7040 CMA 5684 011403 1057 TAD DTBSBN 5685 011404 3060 DCA DTIBL 5686 011405 1113 TAD [DTDONE /EVENTUAL EXIT ADDRESS 5687 011406 3054 DCA DTDCTD /UNLESS CHANGED BY INTERR 5688 011407 4777 JMS I (SAVENT /MAKE ENTRY IN DIRECTORY 5689 011410 4776 JMS I (DTDD1 /CHECK FOR SEGMENT OVERFLOW 5690 011411 5225 JMP SAVDON /NONE, DONE NOW 5691 011412 4775 JMS I (DTDD2 /CHECK FOR DIRECTORY OVERFLOW 5692 011413 4777 JMS I (SAVENT /MAKE ENTRY FOR REAL 5693 011414 4776 JMS I (DTDD1 /GET TO OVERFLOW 5694 011415 7402 HLT /BUG OR SWITCHED TAPES 5695 011416 6201 CDF 0 /DISABLE CONTROL-C 5696 011417 1532 TAD I [LOOK 5697 011420 6211 CDF 10 5698 011421 7041 CIA 5699 011422 1035 TAD USRPT 5700 011423 3053 DCA DTDCTC 5701 011424 4775 JMS I (DTDD2 /HANDLE SEGMENT OVERFLOW 5702 011425 4523 SAVDON, JMS I [DTWRIT /WRITE LAST DIRECTORY SEGMENT 5703 011426 3053 DCA DTDCTC /ENABLE CONTROL-C 5704 011427 6203 CIF CDF 0 5705 011430 5454 JMP I DTDCTD /EXIT 5706 > 5707 5708 /ROUTINE TO CLEAR BUFFER (USUALLY OUTPUT BUFFER) 5709 011431 0000 INTCB, 0 5710 011432 1041 TAD BUFIOT 5711 011433 3041 DCA BUFIOT 5712 011434 4566 JMS I [BUFSWP /SET UP POINTERS TO BUFFER DATA 5713 011435 3446 DCA I BUFC /ZERO CHARACTER COUNT 5714 011436 7346 L7775 /RESET 3-WAY SWITCHES 5715 011437 3447 DCA I BUFIS 5716 011440 7346 L7775 5717 011441 3450 DCA I BUFOS 5718 011442 3451 DCA I BUFIP /POINTERS SAME 5719 011443 3452 DCA I BUFOP 5720 011444 5631 JMP I INTCB /BUFFER IS CLEARED 5721 IFNZRO EDU250 < 5722 011575 2064 PAGE 011576 2046 011577 2000 5723 /DIRECTORY READER 5724 011600 0000 DTDIR, 0 5725 011601 7440 SZA 5726 011602 5211 JMP DTD2 5727 011603 4226 JMS DTDIRC 5728 011604 2055 ISZ DTENTS 5729 011605 5223 JMP DTD3 5730 011606 1505 TAD I [DLINK 5731 011607 7450 SNA 5732 011610 5600 JMP I DTDIR 5733 011611 3064 DTD2, DCA DTBLK 5734 011612 4525 JMS I [DTREAD 5735 011613 1510 TAD I [DCOUNT 5736 011614 3055 DCA DTENTS 5737 011615 1504 TAD I [DORG 5738 011616 3056 DCA DTSBN 5739 011617 1110 TAD [DCOUNT 5740 011620 3062 DCA DTLEPT 5741 011621 1103 TAD [DPROPR 5742 011622 3061 DCA DTCEPT 5743 011623 4262 DTD3, JMS DTDIRN 5744 011624 2200 ISZ DTDIR 5745 011625 5600 JMP I DTDIR 5746 5747 011626 0000 DTDIRC, 0 5748 011627 1463 TAD I DTNEPT 5749 011630 7041 CIA 5750 011631 1056 TAD DTSBN 5751 011632 3056 DCA DTSBN 5752 /SQUEEZE OUT 0 LENGTH ENTRIES & CONSECUTIVE ENTRIES 5753 011633 1463 TAD I DTNEPT 5754 011634 7650 SNA CLA 5755 011635 5251 JMP DTDC2 /0 LEN ENTRY: SQUISH 5756 011636 1462 TAD I DTLEPT 5757 011637 7450 SNA 5758 011640 1461 TAD I DTCEPT 5759 011641 7640 SZA CLA 5760 011642 5254 JMP DTDC3 5761 011643 7340 L7777 5762 011644 1061 TAD DTCEPT 5763 011645 3065 DCA TM1 5764 011646 1463 TAD I DTNEPT 5765 011647 1465 TAD I TM1 5766 011650 3465 DCA I TM1 5767 011651 4275 DTDC2, JMS DTDIRS /SQUISH OUT CURRENT ENTRY 5768 011652 2510 ISZ I [DCOUNT /ONE LESS ENTRY 5769 011653 5626 JMP I DTDIRC /NOW POINTING AT NEW ENTRY 5770 5771 011654 1061 DTDC3, TAD DTCEPT 5772 011655 3062 DCA DTLEPT 5773 011656 7301 L0001 5774 011657 1063 TAD DTNEPT 5775 011660 3061 DCA DTCEPT 5776 011661 5626 JMP I DTDIRC 5777 5778 011662 0000 DTDIRN, 0 /FIND END OF CURRENT ENTRY 5779 011663 1461 TAD I DTCEPT 5780 011664 7650 SNA CLA 5781 011665 5271 JMP DTDN2 5782 011666 7346 L7775 5783 011667 1502 TAD I [DWASTE 5784 011670 7041 CIA 5785 011671 7001 DTDN2, IAC 5786 011672 1061 TAD DTCEPT 5787 011673 3063 DCA DTNEPT 5788 011674 5662 JMP I DTDIRN 5789 5790 011675 0000 DTDIRS, 0 /ELIMINATE CURRENT ENTRY 5791 011676 1061 TAD DTCEPT 5792 011677 3065 DCA TM1 /MOVE DIRECTORY UP TO HERE 5793 011700 2063 DTDS2, ISZ DTNEPT 5794 011701 1463 TAD I DTNEPT 5795 011702 3465 DCA I TM1 5796 011703 2065 ISZ TM1 5797 011704 1101 TAD [-DTBEND 5798 011705 1063 TAD DTNEPT 5799 011706 7710 SPA CLA 5800 011707 5300 JMP DTDS2 5801 011710 5675 JMP I DTDIRS 5802 5803 011711 0000 DTDIRM, 0 /MAKE ROOM AT CURRENT ENTRY 5804 011712 1100 TAD [DTBEND+1 5805 011713 3065 DCA TM1 /MOVE DIRECTORY FROM HERE 5806 011714 1100 TAD [DTBEND+1 5807 011715 3066 DCA TM2 /TO HERE 5808 011716 7340 DTDM2, L7777 /BACK POINTERS UP 5809 011717 1065 TAD TM1 5810 011720 3065 DCA TM1 5811 011721 7340 L7777 5812 011722 1066 TAD TM2 5813 011723 3066 DCA TM2 5814 011724 1465 TAD I TM1 /MOVE DIRECTORY DOWN 5815 011725 3466 DCA I TM2 5816 011726 1061 TAD DTCEPT /AT CURRENT ENTRY YET? 5817 011727 7041 CIA 5818 011730 1065 TAD TM1 5819 011731 7740 SZA SMA CLA 5820 011732 5316 JMP DTDM2 /NO, MOVE ANOTHER WORD DOWN 5821 011733 5711 JMP I DTDIRM /YES, EXIT 5822 5823 011734 0000 DTLKUP, 0 /ROUTINE TO LOOK UP A FILENAME 5824 011735 7301 L0001 /FIRST DIRECTORY SEGMENT 5825 011736 4200 DTL2, JMS DTDIR /GET FILE ENTRY 5826 011737 5477 JMP I [DTLERR /FILE NOT FOUND 5827 011740 4350 JMS DTNAME /IS CURRENT ENTRY THE FILE? 5828 011741 0000 DTNCO3, 0 5829 011742 7041 CIA 5830 011743 1417 TAD I XR2 5831 011744 7640 SZA CLA 5832 011745 5336 JMP DTL2 /NOT THIS ENTRY 5833 011746 4741 JMS I DTNCO3 5834 011747 5734 JMP I DTLKUP /CURRENT ENTRY IS FILE IN QUESTION 5835 5836 011750 0000 DTNAME, 0 5837 011751 1111 TAD [-4 5838 011752 3065 DCA TM1 5839 011753 1112 TAD [NAME-1 5840 011754 3016 DCA XR1 5841 011755 7340 L7777 5842 011756 1061 TAD DTCEPT 5843 011757 3017 DCA XR2 5844 011760 6201 DTN2, CDF 0 5845 011761 1416 TAD I XR1 5846 011762 6211 CDF 10 5847 011763 4750 JMS I DTNAME 5848 011764 0000 DTN3, 0 5849 011765 2065 ISZ TM1 5850 011766 5360 JMP DTN2 5851 011767 5764 JMP I DTN3 5852 PAGE 5853 012000 0000 SAVENT, 0 5854 012001 7301 L0001 /READING DIRECTORY AGAIN 5855 012002 4521 SAV12, JMS I [DTDIR 5856 012003 7402 HLT /SYSTEM ERROR: BUG, SWITCHED TAPES 5857 012004 1057 TAD DTBSBN /IS THIS THE EMPTY THAT BECOMES A FILE ENTRY? 5858 012005 7041 CIA 5859 012006 1056 TAD DTSBN 5860 012007 7640 SZA CLA 5861 012010 5202 JMP SAV12 /NO, NOT SAME SPOT OUT ON TAPE 5862 012011 1060 TAD DTIBL /CHANGE LENGTH OF EMPTY 5863 012012 7161 STL CIA 5864 012013 1463 TAD I DTNEPT 5865 012014 7460 SNL SZA 5866 012015 7402 HLT /BLOCKS IN EMPTY .LT. 0: BAD ESTIMATE 5867 012016 3463 DCA I DTNEPT 5868 012017 1076 TAD [-5 /MAKE ROOM FOR NEW ENTRY 5869 012020 1502 TAD I [DWASTE 5870 012021 4475 JMS I [DTDIRM 5871 012022 4516 JMS I [DTNAME /TRANSFER NAME TO DIRECTORY 5872 012023 0000 DTNCO2, 0 5873 012024 3417 DCA I XR2 5874 012025 4623 JMS I DTNCO2 /EXIT INTO DTNAME 5875 012026 1502 TAD I [DWASTE /ZERO WASTE WORDS 5876 012027 7450 SNA 5877 012030 5235 JMP SAV10 /THERE ARE NONE 5878 012031 3065 DCA TM1 5879 012032 3417 DCA I XR2 /ZERO WORD 5880 012033 2065 ISZ TM1 5881 012034 5232 JMP .-2 /ZERO ANOTHER 5882 012035 1060 SAV10, TAD DTIBL /FIX LENGTH OF NEW ENTRY 5883 012036 3417 DCA I XR2 5884 012037 7340 L7777 /ONE MORE ENTRY IN SEGMENT 5885 012040 1510 TAD I [DCOUNT 5886 012041 3510 DCA I [DCOUNT 5887 012042 7340 L7777 /ONE MORE ENTRY TO SCAN, TOO 5888 012043 1055 TAD DTENTS 5889 012044 3055 DCA DTENTS 5890 012045 5600 JMP I SAVENT 5891 5892 012046 0000 DTDD1, 0 5893 012047 4474 DTDD11, JMS I [DTDIRN 5894 012050 1073 TAD [DCOUNT+400-5 /CHECK SEGMENT OVERFLOW 5895 012051 1502 TAD I [DWASTE 5896 012052 7041 CIA 5897 012053 1063 TAD DTNEPT 5898 012054 7700 SMA CLA 5899 012055 5262 JMP DTDD13 /OH-OH, SEGMENT OVERFLOWED 5900 012056 4472 JMS I [DTDIRC 5901 012057 2055 ISZ DTENTS 5902 012060 5247 JMP DTDD11 5903 012061 5646 JMP I DTDD1 /NO SEGMENT OVERFLOW 5904 5905 012062 2246 DTDD13, ISZ DTDD1 /SEGMENT OVERFLOW: SKIP RETURN 5906 012063 5646 JMP I DTDD1 5907 5908 012064 0000 DTDD2, 0 5909 012065 1377 DTDD21, TAD (DTBOV-1 /SAVE OVERFLOWED ENTRIES 5910 012066 3016 DCA XR1 5911 012067 7340 L7777 5912 012070 1061 TAD DTCEPT 5913 012071 3017 DCA XR2 5914 012072 1376 TAD (-16 /LARGEST OVERFLOW IF 1 WASTE WORD 5915 012073 3063 DCA DTNEPT /TEMP COUNTER 5916 012074 1417 TAD I XR2 5917 012075 3416 DCA I XR1 5918 012076 2063 ISZ DTNEPT /THIS MUST = 0 FOR LATER 5919 012077 5274 JMP .-3 5920 012100 1505 TAD I [DLINK 5921 012101 3016 DCA XR1 5922 012102 1071 TAD [-6 5923 012103 1064 TAD DTBLK 5924 012104 7450 SNA 5925 012105 5370 JMP SAVERR /DIRECTORY OVERFLOW 5926 012106 1140 TAD [7 5927 012107 3505 DCA I [DLINK 5928 012110 1055 TAD DTENTS 5929 012111 7041 CIA 5930 012112 1510 TAD I [DCOUNT 5931 012113 3510 DCA I [DCOUNT 5932 012114 1053 TAD DTDCTC /ACTUALLY WRITE DIRECTORY? 5933 012115 7640 SZA CLA 5934 012116 4523 JMS I [DTWRIT 5935 012117 3505 DCA I [DLINK /DON'T ASSUME SEGMENT PAST THIS ONE 5936 012120 2064 ISZ DTBLK /OS/8 BLOCK OF DIRECTORY EXTENSION 5937 012121 1016 TAD XR1 /OLD DLINK 5938 012122 7650 SNA CLA /ALREADY ANOTHER BLOCK TO DIRECTORY? 5939 012123 5326 JMP DTDD3 /NO, CREATE ONE 5940 012124 4525 JMS I [DTREAD /READ DIRECTORY 5941 012125 1510 TAD I [DCOUNT /NOT STARTING FROM SCRATCH 5942 012126 1055 DTDD3, TAD DTENTS /DTENTS IS OVERFLOW FROM LAST SEGMENT 5943 012127 3510 DCA I [DCOUNT /ALTERED DCOUNT 5944 012130 1056 TAD DTSBN /NEW DORG 5945 012131 3504 DCA I [DORG 5946 012132 1377 TAD (DTBOV-1 5947 012133 7001 DTDD4, IAC 5948 012134 1063 TAD DTNEPT /DTNEPT SHOULD = 0 FIRST TIME THROUGH 5949 012135 3061 DCA DTCEPT 5950 012136 4474 JMS I [DTDIRN /FIND END OF CURRENT ENTRY 5951 012137 2055 ISZ DTENTS /COUNT OVERFLOWED ENTRIES 5952 012140 5333 JMP DTDD4 5953 012141 1110 TAD [DCOUNT /POINTER FOR START OF DIRECTORY SEGMENT 5954 012142 3062 DCA DTLEPT 5955 012143 1103 TAD [DPROPR 5956 012144 3061 DCA DTCEPT 5957 012145 1063 TAD DTNEPT /SAVENT=-LENGTH OF OVERFLOW 5958 012146 7041 CIA 5959 012147 1377 TAD (DTBOV-1 5960 012150 3200 DCA SAVENT 5961 012151 1200 TAD SAVENT /MAKE ROOM FOR OVERFLOW 5962 012152 4475 JMS I [DTDIRM 5963 012153 1102 TAD [DPROPR-1 /INSERT OVERFLOWED ENTRIES 5964 012154 3016 DCA XR1 5965 012155 1377 TAD (DTBOV-1 5966 012156 3017 DCA XR2 5967 012157 1417 TAD I XR2 5968 012160 3416 DCA I XR1 5969 012161 2200 ISZ SAVENT /COUNT WORDS 5970 012162 5357 JMP .-3 5971 012163 1510 TAD I [DCOUNT /NEW NUMBER OF ENTRIES IN SEGMENT 5972 012164 3055 DCA DTENTS 5973 012165 4246 JMS DTDD1 /CHECK FOR ANOTHER SEGMENT OVERFLOW 5974 012166 5664 JMP I DTDD2 /NOT FOUND: EXIT 5975 012167 5265 JMP DTDD21 /HANDLE THIS OVERFLOW 5976 5977 012170 6203 SAVERR, CIF CDF 0 5978 012171 5775 JMP I (ERRDOV 5979 012175 1017 PAGE 012176 7762 012177 3505 5980 > 5981 /KEYWORD DECODER 5982 012200 3273 XCOM, DCA COMPT 5983 012201 3272 DCA COMCT 5984 012202 1662 TAD I LAXOUT /QUICKIE SAVE TEXT POINTERS 5985 012203 3276 DCA COMAXT 5986 012204 1663 TAD I LGTEM 5987 012205 3277 DCA COMGTM 5988 012206 1664 TAD I LXCT 5989 012207 3300 DCA COMXCT 5990 012210 1665 TAD I LCHAR 5991 012211 3301 DCA COMCHR 5992 012212 6211 CDF 10 5993 012213 1273 COM2, TAD COMPT /POINTER FOR UNPACKING 5994 012214 3274 DCA COMPT2 5995 012215 5220 JMP COM3 5996 012216 2275 XCOMF1, ISZ COMTM /UNPACK CHARACTER 5997 012217 5255 JMP COM5 5998 012220 7344 COM3, L7776 5999 012221 3275 DCA COMTM 6000 012222 2274 ISZ COMPT2 6001 012223 1674 TAD I COMPT2 6002 012224 7012 RTR 6003 012225 7012 RTR 6004 012226 7012 RTR 6005 012227 0266 COM4, AND L77 6006 012230 7450 SNA 6007 012231 5257 JMP COM6 /MATCH! 6008 012232 1267 TAD L40 /CONVERT TO ASCII 6009 012233 7041 CIA 6010 012234 6203 CIF CDF 0 6011 012235 1665 TAD I LCHAR /COMPARE WITH CURRENT CHAR 6012 012236 7650 SNA CLA 6013 012237 5670 JMP I LF0GETC /SAME: COMPARE NEXT 2 CHARS 6014 012240 1276 TAD COMAXT /FAST RESTORE ORIGINAL TEXT POINTERS 6015 012241 3662 DCA I LAXOUT 6016 012242 1277 TAD COMGTM 6017 012243 3663 DCA I LGTEM 6018 012244 1300 TAD COMXCT 6019 012245 3664 DCA I LXCT 6020 012246 1301 TAD COMCHR 6021 012247 3665 DCA I LCHAR 6022 012250 6213 CIF CDF 10 6023 012251 2272 ISZ COMCT /COUNT FAILED KEYWORDS 6024 012252 1673 TAD I COMPT /POINT TO NEXT KEYWORD 6025 012253 3273 DCA COMPT 6026 012254 5213 JMP COM2 /SEE IF THIS ONE 6027 6028 012255 1674 COM5, TAD I COMPT2 6029 012256 5227 JMP COM4 6030 6031 012257 1272 COM6, TAD COMCT /GET KEYWORD CODE 6032 012260 6203 CIF CDF 0 /BEGIN ARDUOUS EXIT FROM WRONG FIELD 6033 012261 5671 JMP I LF0CMN1 6034 012262 0017 LAXOUT, AXOUT 6035 6036 012263 0020 LGTEM, GTEM 6037 012264 0021 LXCT, XCT 6038 012265 0026 LCHAR, CHAR 6039 012266 0077 L77, 77 6040 012267 0040 L40, 40 6041 012270 1765 LF0GETC, F0GETC 6042 012271 1764 LF0CMN1, F0CMN1 6043 6044 012272 0000 COMCT, 0 /KEYWORD CODE 6045 012273 0000 COMPT, 0 /KEYWORD POINTER 6046 012274 0000 COMPT2, 0 /KEYWORD UNPACK POINTER 6047 012275 0000 COMTM, 0 /KEYWORD UNPACK TEMP 6048 012276 0000 COMAXT, 0 /AXOUT SAVE 6049 012277 0000 COMGTM, 0 /GTEM SAVE 6050 012300 0000 COMXCT, 0 /XCT SAVE 6051 012301 0000 COMCHR, 0 /CHAR SAVE 6052 6053 /COMMAND DISPATCH LIST 6054 012302 2243 COMGOL, LIST 6055 012303 2464 RUN 6056 012304 2200 EDIT 6057 012305 2315 DELETE 6058 012306 4302 SCR /SCRATCH 6059 012307 4300 NEW /NEW 6060 012310 4272 BYE /BYE 6061 012311 2275 PUNCH 6062 IFNZRO EDU250 < 6063 012312 1000 OLD 6064 012313 1020 SAVE 6065 012314 1337 UNSAVE 6066 012315 1046 CATAL> 6067 6068 /STATEMENT DISPATCH LIST 6069 012316 1401 COMGO2, LET 6070 012317 3202 PRINT 6071 012320 2534 GOTO 6072 012321 1200 IF 6073 012322 1400 FOR 6074 012323 2400 NEXT 6075 012324 0600 INPUT 6076 012325 0636 READ 6077 012326 2515 CONT /DATA 6078 012327 4253 GOSUB 6079 012330 4160 RETURN 6080 012331 2515 CONT /DEF 6081 012332 4317 ON 6082 012333 1275 REM /REM 6083 012334 5270 LINPUT 6084 012335 2512 RESTOR 6085 012336 2515 CONT /DIM 6086 012337 1770 RANDOM 6087 012340 5110 ECHO 6088 012341 5107 NOECHO 6089 012342 1275 REM /! COMMENT 6090 012343 0452 READY /STOP 6091 012344 4310 END 6092 012345 1401 LET /UNKNOWN 6093 6094 012346 2664 KWTHEN, LIST0 6095 012347 6450 6450 /TH 6096 012350 4556 4556 /EN 6097 012351 0000 0000 /SPACE,SPACE 6098 6099 012352 2664 KWTO, LIST0 6100 012353 6457 6457 /TO 6101 012354 0000 0000 /SPACE,SPACE 6102 6103 012355 2664 KWSTEP, LIST0 6104 012356 6364 6364 /ST 6105 012357 4560 4560 /EP 6106 012360 0000 0000 /SPACE,SPACE 6107 6108 012361 2664 KWDEF, LIST0 6109 012362 4445 4445 /DE 6110 012363 4646 4646 /FF 6111 012364 5600 5600 /N,SPACE 6112 6113 012365 2664 KWNEXT, LIST0 6114 012366 5645 5645 /NE 6115 012367 7064 7064 /XT 6116 012370 0000 0000 /SPACE,SPACE 6117 6118 012371 2664 KWDATA, LIST0 6119 012372 4441 4441 /DA 6120 012373 6441 6441 /TA 6121 012374 0000 0000 /SPACE,SPACE 6122 6123 012375 2400 KWTAB, KWCHR 6124 012376 6441 6441 /TA 6125 012377 4200 4200 /B,SPACE 6126 012400 2664 KWCHR, LIST0 6127 012401 4350 4350 /CH 6128 012402 6204 6204 /R$ 6129 012403 0000 0000 /SPACE,SPACE 6130 6131 012404 2406 KWREL4, KWREL2 6132 012405 3400 3400 /< 6133 012406 2410 KWREL2, KWREL3 6134 012407 3600 3600 /> 6135 012410 2664 KWREL3, LIST0 6136 012411 3500 3500 /= 6137 012412 2415 KWRELS, KWREL5 6138 012413 3435 3435 /<= 6139 012414 0000 0000 6140 012415 2420 KWREL5, KWREL6 6141 012416 3635 3635 />= 6142 012417 0000 0000 6143 012420 2404 KWREL6, KWREL4 6144 012421 3436 3436 /<> 6145 012422 0000 0000 6146 6147 IFNZRO TD8E < 6148 KWDEV, KWDTA1 6149 4464 /DT 6150 4120 /A0 6151 3200 /: 6152 KWDTA1, LIST0 6153 4464 /DT 6154 4121 /A1 6155 3200 /: 6156 > 6157 6158 IFNZRO RK8E < 6159 KWDEV, KWRKB0 6160 6253 /RK 6161 4120 /A0 6162 3200 /: 6163 KWRKB0, KWRKA1 6164 6253 /RK 6165 4220 /B0 6166 3200 /: 6167 KWRKA1, KWRKB1 6168 6253 /RK 6169 4121 /A1 6170 3200 /: 6171 KWRKB1, KWRKA2 6172 6253 /KW 6173 4221 /B1 6174 3200 /: 6175 KWRKA2, KWRKB2 6176 6253 /RK 6177 4122 /A2 6178 3200 /: 6179 KWRKB2, KWRKA3 6180 6253 /RK 6181 4222 /B2 6182 3200 /: 6183 KWRKA3, KWRKB3 6184 6253 /RK 6185 4123 /A3 6186 3200 /: 6187 KWRKB3, LIST0 6188 6253 /RK 6189 4223 /B3 6190 3200 /: 6191 > 6192 6193 IFNZRO RX8E < 6194 012423 2427 KWDEV, KWRXA1 6195 012424 6270 6270 /RX 6196 012425 4120 4120 /A0 6197 012426 3200 3200 /: 6198 6199 012427 2664 KWRXA1, LIST0 6200 012430 6270 6270 /RX 6201 012431 4121 4121 /A1 6202 012432 3200 3200 /: 6203 > 6204 6205 /USED BY THE GETC ROUTINE 6206 012433 4063 XGETL2, XGET5-1 /CR 6207 012434 4064 XGET4-1 /BELL 6208 012435 4057 XGET3-1 /SPACE 6209 6210 /USED BY THE EDIT COMMAND 6211 012436 2226 EDITL2, EDTCR-1 /CR 6212 012437 2216 EDTLF-1 /LF 6213 012440 2217 EDTFF-1 /FF 6214 012441 2206 EDTBEL-1 /BELL 6215 6216 012442 0015 EDITL, 15 /CR 6217 012443 0012 12 /LF 6218 012444 0014 14 /FF 6219 012445 0007 7 /BELL 6220 6221 /LIST OF THIRD LETTERS OF THE FUNCTION NAMES 6222 012446 7662 FUNL2, -116 /SIN 6223 012447 7655 -123 /COS 6224 012450 7662 -116 /ATN 6225 012451 7660 -120 /EXP 6226 012452 7671 -107 /LOG 6227 012453 7655 -123 /ABS 6228 012454 7656 -122 /SQR 6229 012455 7662 -116 /SGN 6230 012456 7654 -124 /INT 6231 012457 7674 -104 /RND 6232 012460 7650 -130 /FIX 6233 012461 7662 -116 /TAN 6234 012462 7662 -116 /LEN 6235 012463 7674 -104 /MID 6236 012464 7654 -124 /CAT 6237 012465 7655 -"S+200 /SYS 6238 /COMMAND KEYWORD LIST 6239 012466 2472 KWCOM, LIST10 6240 012467 5451 5451 /LI 6241 012470 6364 6364 /ST 6242 012471 0000 0000 /SPACE,SPACE 6243 012472 2475 LIST10, LIST7 6244 012473 6265 6265 /RU 6245 012474 5600 5600 /N,SPACE 6246 012475 2501 LIST7, LIST6 6247 012476 4544 4544 /ED 6248 012477 5164 5164 /IT 6249 012500 0000 0000 /SPACE,SPACE 6250 012501 2506 LIST6, LIST5 6251 012502 4445 4445 /DE 6252 012503 5445 5445 /LE 6253 012504 6445 6445 /TE 6254 012505 0000 0000 /SPACE,SPACE 6255 012506 2511 LIST5, LIST4 6256 012507 6343 6343 /SC 6257 012510 6200 6200 /R,SPACE 6258 012511 2514 LIST4, LIST3 6259 012512 5645 5645 /NE 6260 012513 6700 6700 /W,SPACE 6261 012514 2517 LIST3, LIST2 6262 012515 4271 4271 /BY 6263 012516 4500 4500 /E,SPACE 6264 012517 2523 LIST2, IFNZRO EDU250 6265 IFZERO EDU250 6266 012520 6065 6065 /PU 6267 012521 5643 5643 /NC 6268 012522 5000 5000 /H,SPACE 6269 IFNZRO EDU250 < 6270 012523 2526 LISTDT, LISTD2 6271 012524 5754 5754 /OL 6272 012525 4400 4400 /D,SPACE 6273 012526 2532 LISTD2, LISTD3 6274 012527 6341 6341 /SA 6275 012530 6645 6645 /VE 6276 012531 0000 0000 /SPACE,SPACE 6277 012532 2537 LISTD3, LISTD4 6278 012533 6556 6556 /UN 6279 012534 6341 6341 /SA 6280 012535 6645 6645 /VE 6281 012536 0000 0000 /SPACE,SPACE 6282 012537 2542 LISTD4, KWST 6283 012540 4341 4341 /CA 6284 012541 6400 6400 /T,SPACE 6285 > 6286 6287 /STATEMENT KEYWORD LIST 6288 012542 2545 KWST, LIST40 /LINK TO NEXT KEYWORD 6289 012543 5445 5445 /LE 6290 012544 6400 6400 /T,SPACE 6291 012545 2551 LIST40, KWGOTO 6292 012546 6062 6062 /PR 6293 012547 5156 5156 /IN 6294 012550 6400 6400 /T,SPACE 6295 012551 2555 KWGOTO, LIST36 6296 012552 4757 4757 /GO 6297 012553 6457 6457 /TO 6298 012554 0000 0000 /SPACE,SPACE 6299 012555 2560 LIST36, LIST34 6300 012556 5146 5146 /IF 6301 012557 0000 0000 /SPACE,SPACE 6302 012560 2563 LIST34, LIST31 6303 012561 4657 4657 /FO 6304 012562 6200 6200 /R,SPACE 6305 012563 2567 LIST31, LIST30 6306 012564 5645 5645 /NE 6307 012565 7064 7064 /XT 6308 012566 0000 0000 /SPACE,SPACE 6309 012567 2573 LIST30, LIST27 6310 012570 5156 5156 /IN 6311 012571 6065 6065 /PU 6312 012572 6400 6400 /T,SPACE 6313 012573 2577 LIST27, LIST26 6314 012574 6245 6245 /RE 6315 012575 4144 4144 /AD 6316 012576 0000 0000 /SPACE,SPACE 6317 012577 2603 LIST26, LIST25 6318 012600 4441 4441 /DA 6319 012601 6441 6441 /TA 6320 012602 0000 0000 /SPACE,SPACE 6321 012603 2607 LIST25, LIST24 6322 012604 4757 4757 /GO 6323 012605 6365 6365 /SU 6324 012606 4200 4200 /B,SPACE 6325 012607 2614 LIST24, LIST23 6326 012610 6245 6245 /RE 6327 012611 6465 6465 /TU 6328 012612 6256 6256 /RN 6329 012613 0000 0000 /SPACE,SPACE 6330 012614 2617 LIST23, LIST21 6331 012615 4445 4445 /DE 6332 012616 4600 4600 /F,SPACE 6333 012617 2622 LIST21, LIST20 6334 012620 5756 5756 /ON 6335 012621 0000 0000 /SPACE,SPACE 6336 012622 2625 LIST20, LIST17 6337 012623 6245 6245 /RE 6338 012624 5500 5500 /M,SPACE 6339 012625 2632 LIST17, LIST16 6340 012626 5451 5451 /LI 6341 012627 5660 5660 /NP 6342 012630 6564 6564 /UT 6343 012631 0000 0000 /SPACE,SPACE 6344 012632 2637 LIST16, LIST15 6345 012633 6245 6245 /RE 6346 012634 6364 6364 /ST 6347 012635 5762 5762 /OR 6348 012636 4500 4500 /E,SPACE 6349 012637 2642 LIST15, LIST14 6350 012640 4451 4451 /DI 6351 012641 5500 5500 /M,SPACE 6352 012642 2647 LIST14, LISTA1 6353 012643 6241 6241 /RA 6354 012644 5644 5644 /ND 6355 012645 5755 5755 /OM 6356 012646 0000 0000 /SPACE,SPACE 6357 012647 2653 LISTA1, LISTA2 6358 012650 4543 4543 /EC 6359 012651 5057 5057 /HO 6360 012652 0000 0000 /SPACE,SPACE 6361 012653 2660 LISTA2, LISTA3 6362 012654 5657 5657 /NO 6363 012655 4543 4543 /EC 6364 012656 5057 5057 /HO 6365 012657 0000 0000 /SPACE,SPACE 6366 012660 2662 LISTA3, LIST13 6367 012661 0100 0100 /!,SPACE 6368 012662 2666 LIST13, LIST12 6369 012663 6364 6364 /ST 6370 012664 5760 LIST0, 5760 /OP 6371 012665 0000 0000 /SPACE,SPACE 6372 012666 2664 LIST12, LIST0 6373 012667 4556 4556 /EN 6374 012670 4400 4400 /D,SPACE 6375 /A WHOLE BUNCH OF SORTC AND SORTJ LISTS 6376 6377 IFNZRO EDU250 < 6378 /USED BY DTGNAM 6379 012671 0015 DTGL, 15 /CR 6380 012672 0056 ".-200 /. 6381 012673 7777 7777 6382 > 6383 6384 /USED BY THE PRINT STATEMENT 6385 012674 3344 PRINL2, PRIN71-1 /CR 6386 012675 3337 PRIN61-1 /" 6387 6388 /USED BY THE PRINT STATEMENT 6389 012676 0073 PRINL, 73 /; 6390 012677 0054 54 /, 6391 012700 0041 41 /! 6392 012701 0072 72 /: 6393 012702 0015 PRINLB, 15 /CR 6394 012703 0042 42 /" 6395 012704 7777 7777 6396 6397 012705 3177 PRINL1, PRINT5-1 /; 6398 012706 3322 PRINT4-1 /, 6399 012707 3341 PRINT7-1 /! 6400 012710 3341 PRINT7-1 /: 6401 012711 3341 PRINT7-1 /CR 6402 012712 3326 PRINT6-1 /" 6403 6404 /LIST OF STANDARD EDU200 BASIC TERMINATORS 6405 012713 0040 TERMS, 40 /SPACE 0 6406 012714 0053 53 /+ 1 6407 012715 0055 55 /- 2 6408 012716 0052 52 /* 3 6409 012717 0057 57 // 4 6410 012720 0136 136 /^ 5 6411 012721 0050 50 /( 6 6412 012722 0133 133 /[ 7 6413 012723 0051 51 /) 10 6414 012724 0135 135 /] 11 6415 012725 0074 74 /< 12 6416 012726 0076 76 /> 13 6417 012727 0075 75 /= 14 6418 012730 7777 7777 6419 6420 /USED BY THE GETC ROUTINE 6421 012731 0137 XGETL1, 137 /CR 6422 012732 0100 100 /BELL 6423 012733 0040 40 /SPACE 6424 012734 7777 7777 6425 6426 /USED BY THE PACKC ROUTINE 6427 012735 0015 XPAKL1, 15 /CR 6428 012736 0007 7 /BELL 6429 012737 0177 177 /RUBOUT 6430 012740 0137 137 /BACK ARROW 6431 012741 0176 176 /3 CODES FOR ALTMODE 6432 012742 0175 175 6433 012743 0033 33 6434 012744 0100 100 /@ 6435 012745 0012 12 /LINE FEED 6436 012746 7777 7777 6437 6438 012747 3650 XPAKL2, XPACK2-1 /CR 6439 012750 3651 XPACK3-1 /BELL 6440 012751 3660 XPACK7-1 /RUBOUT 6441 012752 3660 XPACK7-1 /BACK ARROW 6442 012753 3706 XPPCK1-1 /3 ALTMODES 6443 012754 3706 XPPCK1-1 6444 012755 3706 XPPCK1-1 6445 012756 3627 XPACK5-1 /@ 6446 012757 3627 XPACK5-1 /LINE FEED 6447 6448 /FIRST 2 CHARACTORS OF THE FUNCTION NAMES (USED BY GETVAR) 6449 012760 0316 FUNL1, 316 /FN 6450 012761 1151 1151 /SI 6451 012762 0157 157 /CO 6452 012763 0064 64 /AT 6453 012764 0270 270 /EX 6454 012765 0617 617 /LO 6455 012766 0042 42 /AB 6456 012767 1161 1161 /SQ 6457 012770 1147 1147 /SG 6458 012771 0456 456 /IN 6459 012772 1116 1116 /RN 6460 012773 0311 311 /FI 6461 012774 1201 1201 /TA 6462 012775 0605 14^40+5 /LE 6463 012776 0651 15^40+11 /MI 6464 012777 0141 3^40+1 /CA 6465 013000 1171 23^40+31 /SY 6466 013001 7777 7777 6467 6468 /LIST OF ERROR ADDRESSES (USED BY THE ERROR ROUTINE) 6469 013002 3752 ERRLST, ERR004+1%2 /STOP (CONTROL-C) 6470 013003 2734 ERR010+1%2 /ERROR 1 6471 013004 3131 ERR020+1%2 /ERROR 2 6472 013005 3265 ERR030+1%2 6473 013006 3063 ERR040+1%2 6474 013007 1713 ERR060+1%2 6475 013010 3754 ERR070+1%2 6476 013011 3755 ERR080+1%2 6477 013012 2240 ERR100+1%2 6478 013013 3517 ERR150+1%2 6479 013014 1370 ERR110+1%2 6480 013015 1332 ERR120+1%2 6481 013016 2404 ERR260+1%2 6482 013017 2201 ERR220+1%2 6483 013020 2231 ERR130+1%2 6484 013021 2267 ERR230+1%2 6485 013022 1427 ERR170+1%2 6486 013023 2346 ERR250+1%2 6487 013024 2453 ERR210+1%2 6488 013025 1457 ERR200+1%2 6489 013026 1437 ERR180+1%2 6490 013027 2343 ERR240+1%2 6491 013030 0604 ERR410+1%2 6492 013031 0651 ERR450+1%2 6493 013032 0657 ERR430+1%2 6494 013033 0615 ERR420+1%2 6495 013034 0630 ERR440+1%2 6496 013035 1202 ERR460+1%2 6497 013036 1205 ERR470+1%2 6498 013037 1504 ERR350+1%2 6499 013040 1567 ERR340+1%2 6500 013041 1257 ERR270+1%2 6501 013042 3544 ERR370+1%2 6502 013043 1260 ERR380+1%2 6503 013044 0505 ERR390+1%2 6504 013045 0511 ERR400+1%2 6505 013046 0355 ERR500+1%2 6506 013047 0341 ERR490+1%2 6507 013050 0322 ERR510+1%2 6508 013051 2071 ERR320+1%2 6509 013052 1623 ERR330+1%2 6510 013053 2152 ERR300+1%2 6511 013054 2536 ERR280+1%2 6512 013055 1102 ERR001+1%2 6513 013056 2445 ERR003+1%2 6514 013057 2502 ERRBEX+1%2 /SYNTAX ERROR IN AN EXPRESSION 6515 013060 1027 ERRSAR+1%2 /MISSING ARGUMENT TO MID OR CAT FUNCTION 6516 013061 1023 ERRSOV+1%2 /STRING OVERFLOW IN MID FUNCTION 6517 IFNZRO EDU250 < 6518 013062 0410 ERRDOV+1%2 6519 013063 1655 ERRDTG+1%2 6520 013064 0416 ERRDSV+1%2 6521 013065 0423 ERRDNR+1%2 6522 013066 0557 ERRDT+1%2> 6523 013067 7777 7777 6524 /USER DEFINITIONS 6525 IFNZRO EDU250 < 6526 DTBUF, /DECTAPE BUFFER 6527 013070 7777 DCOUNT, -1 /MINUS # OF ENTRIES IN DIRECTORY SEGMENT 6528 013071 0070 DORG, 70 /STARTING BLOCK # OF THIS SEGMENT 6529 013072 0000 DLINK, 0 /LINK TO NEXT DIRECTORY SEGMENT 6530 013073 0000 0 /USED BY OS/8, BUT NOT BY EDU250 6531 013074 7777 DWASTE, -1 /MINUS # OF ADDITIONAL INFORMATION WORDS 6532 013075 0000 DPROPR, 0 /START OF ENTRIES 6533 013076 0000 ZBLOCK 416-6 /ZERO OUT REST OF BUFFER 013077 0000 013100 0000 013101 0000 013102 0000 013103 0000 013104 0000 013105 0000 013106 0000 013107 0000 013110 0000 013111 0000 013112 0000 013113 0000 013114 0000 013115 0000 013116 0000 013117 0000 013120 0000 013121 0000 013122 0000 013123 0000 013124 0000 013125 0000 013126 0000 013127 0000 013130 0000 013131 0000 013132 0000 013133 0000 013134 0000 013135 0000 013136 0000 013137 0000 013140 0000 013141 0000 013142 0000 013143 0000 013144 0000 013145 0000 013146 0000 013147 0000 013150 0000 013151 0000 013152 0000 013153 0000 013154 0000 013155 0000 013156 0000 013157 0000 013160 0000 013161 0000 013162 0000 013163 0000 013164 0000 013165 0000 013166 0000 013167 0000 013170 0000 013171 0000 013172 0000 013173 0000 013174 0000 013175 0000 013176 0000 013177 0000 013200 0000 013201 0000 013202 0000 013203 0000 013204 0000 013205 0000 013206 0000 013207 0000 013210 0000 013211 0000 013212 0000 013213 0000 013214 0000 013215 0000 013216 0000 013217 0000 013220 0000 013221 0000 013222 0000 013223 0000 013224 0000 013225 0000 013226 0000 013227 0000 013230 0000 013231 0000 013232 0000 013233 0000 013234 0000 013235 0000 013236 0000 013237 0000 013240 0000 013241 0000 013242 0000 013243 0000 013244 0000 013245 0000 013246 0000 013247 0000 013250 0000 013251 0000 013252 0000 013253 0000 013254 0000 013255 0000 013256 0000 013257 0000 013260 0000 013261 0000 013262 0000 013263 0000 013264 0000 013265 0000 013266 0000 013267 0000 013270 0000 013271 0000 013272 0000 013273 0000 013274 0000 013275 0000 013276 0000 013277 0000 013300 0000 013301 0000 013302 0000 013303 0000 013304 0000 013305 0000 013306 0000 013307 0000 013310 0000 013311 0000 013312 0000 013313 0000 013314 0000 013315 0000 013316 0000 013317 0000 013320 0000 013321 0000 013322 0000 013323 0000 013324 0000 013325 0000 013326 0000 013327 0000 013330 0000 013331 0000 013332 0000 013333 0000 013334 0000 013335 0000 013336 0000 013337 0000 013340 0000 013341 0000 013342 0000 013343 0000 013344 0000 013345 0000 013346 0000 013347 0000 013350 0000 013351 0000 013352 0000 013353 0000 013354 0000 013355 0000 013356 0000 013357 0000 013360 0000 013361 0000 013362 0000 013363 0000 013364 0000 013365 0000 013366 0000 013367 0000 013370 0000 013371 0000 013372 0000 013373 0000 013374 0000 013375 0000 013376 0000 013377 0000 013400 0000 013401 0000 013402 0000 013403 0000 013404 0000 013405 0000 013406 0000 013407 0000 013410 0000 013411 0000 013412 0000 013413 0000 013414 0000 013415 0000 013416 0000 013417 0000 013420 0000 013421 0000 013422 0000 013423 0000 013424 0000 013425 0000 013426 0000 013427 0000 013430 0000 013431 0000 013432 0000 013433 0000 013434 0000 013435 0000 013436 0000 013437 0000 013440 0000 013441 0000 013442 0000 013443 0000 013444 0000 013445 0000 013446 0000 013447 0000 013450 0000 013451 0000 013452 0000 013453 0000 013454 0000 013455 0000 013456 0000 013457 0000 013460 0000 013461 0000 013462 0000 013463 0000 013464 0000 013465 0000 013466 0000 013467 0000 013470 0000 013471 0000 013472 0000 013473 0000 013474 0000 013475 0000 013476 0000 013477 0000 013500 0000 013501 0000 013502 0000 013503 0000 013504 0000 013505 0000 6534 DTBEND=DTBUF+377+16 6535 DTBOV=. 6536 013506 0000 ZBLOCK 16 /ZERO SEGMENT OVERFLOW AREA 013507 0000 013510 0000 013511 0000 013512 0000 013513 0000 013514 0000 013515 0000 013516 0000 013517 0000 013520 0000 013521 0000 013522 0000 013523 0000 6537 > 6538 6539 /USER DEFINITIONS 6540 BUF=. /START OF USER TTY BUFFERS 6541 SWPR=USERS^100+BUF /START OF USER SWAP REGIONS 6542 SWPRBF=SWPR+ENSWAP-STSWAP+1 /USER 0 POINTERS TO TTY DATA 6543 SWPRL=ENSWAP-STSWAP+BUFOP-BUFIOT+BUFOP-BUFIOT+3 6544 ORG=SWPRL^USERS+BUF /START OF FIELD 1 USER CORE 6545 BUFCOM=0 /RELATIVE DEFINITIONS 6546 LINE0=BUFCOM+72 6547 LINE1=LINE0+2 6548 TOP=7776 6549 6550 BEGXR1=XR1 6551 BEGXR2=XR2 6552 BEGUSR=SAVAC 6553 BEGORG=SAVF 6554 BEGSWP=SAVRES 6555 BEGNUM=INTUSR 6556 BEGTM1=INTTM 6557 BEGTM2=INTTM1 6558 BEGTM3=INTTM2 6559 BEGTM4=BUFIOT 6560 BEGTM5=BUFSP 6561 6562 /USER 0 TTY BUFFER 6563 ENPUNCH 6564 *. 6565 IFZERO .&7600+200-.&7760 <*.&7600+200> /AVOID PAGE BOUNDARY 6566 /CLEAR ALL CORE AND START UP EDU250 6567 013524 3426 BEGCL1, DCA I BEGORG /CLEAR CORE 6568 013525 2026 ISZ BEGORG 6569 013526 5324 JMP .-2 6570 013527 6203 CIF CDF 0 /YES, START UP EDU250!! 6571 013530 6001 ION 6572 013531 5732 JMP I .+1 6573 013532 0263 ENTRY 6574 6575 IFNZRO CONFIG < 6576 FIELD 0 6577 *BEGKIE 6578 KIE 6579 JMP NULL5 6580 JMP NULL5 6581 JMP NULL5 6582 JMP NULL5 6583 JMP NULL5 6584 JMP NULL5 6585 JMP NULL5 6586 *USER0 6587 0000 6588 7777 6589 7777 6590 7777 6591 7777 6592 7777 6593 7777 6594 7777 6595 FIELD 1 6596 IFZERO PDP8I < 6597 *BEGPFL 6598 TLS 6599 NOP 6600 NOP 6601 NOP 6602 NOP 6603 NOP 6604 NOP 6605 NOP> 6606 > 6607 6608 *4000 6609 /START OF INTITIALIZER 6610 014000 7000 BEG000, NOP 6611 /ARE WE RUNNING ON THE RIGHT MACHINE? 6612 014001 7203 IFZERO PDP8I 014002 1377 6613 IFNZRO PDP8I 6614 014003 7440 SZA 6615 014004 7402 HLT /NOPE, GIVE UP 6616 014005 6046 BEG00A, TLS /SET PRINTER FLAG 6617 6618 014006 4776 BEG001, JMS I (BEGCR 6619 014007 4776 JMS I (BEGCR 6620 014010 4775 JMS I (BEGPRT /"EDUCOMP EDU250 BASIC" 6621 014011 6000 BEGTED 6622 014012 4776 JMS I (BEGCR 6623 014013 4776 JMS I (BEGCR 6624 6625 014014 4775 BEG002, JMS I (BEGPRT /"HOW MANY USERS?" 6626 014015 6016 BEGTUS 6627 014016 4774 JMS I (BEGKEY 6628 014017 1373 TAD (-"8-1 6629 014020 7120 CLL CML 6630 014021 1372 TAD (-"0+"8+1 6631 014022 7470 SNA SZL 6632 014023 5346 JMP BEG009 /INVALID RESPONSE 6633 014024 3025 DCA BEGUSR /NUMBER OF USERS 6634 014025 4776 JMS I (BEGCR 6635 014026 1371 TAD (BUF /START OF USER BUFFERS 6636 014027 3027 DCA BEGSWP 6637 014030 1025 TAD BEGUSR 6638 014031 7041 CIA 6639 014032 3031 DCA BEGTM1 6640 014033 3026 BEG02A, DCA BEGORG 6641 014034 1370 TAD (100 /LENGTH OF USER TTY BUFFER 6642 014035 1027 TAD BEGSWP 6643 014036 3027 DCA BEGSWP 6644 014037 1367 TAD (SWPRL 6645 014040 1026 TAD BEGORG 6646 014041 2031 ISZ BEGTM1 6647 014042 5233 JMP BEG02A 6648 014043 1027 TAD BEGSWP 6649 014044 3026 DCA BEGORG /START OF FIELD 1 CORE 6650 6651 014045 1366 TAD (INTUDF 6652 014046 3031 DCA BEGTM1 6653 014047 4775 BEG003, JMS I (BEGPRT /"ANY UNUSED TELETYPES?" 6654 014050 6026 BEGTTU 6655 014051 4765 JMS I (BEGYN 6656 014052 5302 JMP BEG005 /NO 6657 014053 5247 JMP BEG003 /INVALID RESPONSE 6658 014054 4775 JMS I (BEGPRT /"ENTER TWO DIGIT READER CODES FOLLOWED BY 00" 6659 014055 6041 BEGTTC 6660 014056 4776 JMS I (BEGCR 6661 014057 3030 BEG004, DCA BEGNUM /GET 2 DIGIT OCTAL NUMBER 6662 014060 4764 JMS I (BEGDG 6663 014061 5257 JMP BEG004 /INVALID RESPONSE 6664 014062 4764 JMS I (BEGDG 6665 014063 5257 JMP BEG004 6666 014064 4776 JMS I (BEGCR 6667 014065 1030 TAD BEGNUM 6668 014066 7450 SNA 6669 014067 5302 JMP BEG005 /END OF LIST 6670 014070 7106 CLL RTL /CONVERT TO KCC 6671 014071 7004 RAL 6672 014072 1363 TAD (KCC-030 6673 014073 4331 JMS BEG007 /ENTER IN LIST 6674 014074 1030 TAD BEGNUM 6675 014075 7107 CLL IAC RTL /CONVERT TO TCF 6676 014076 7004 RAL 6677 014077 1363 TAD (TCF-040 6678 014100 4331 JMS BEG007 /ENTER IN LIST 6679 014101 5257 JMP BEG004 /GET NEXT READER CODE 6680 6681 014102 4775 BEG005, JMS I (BEGPRT /"ANY OTHER UNUSED DEVICES?" 6682 014103 6070 BEGTDV 6683 014104 4765 JMS I (BEGYN 6684 014105 5343 JMP BEG008 /NO 6685 014106 5302 JMP BEG005 /INVALID RESPONSE 6686 014107 4775 JMS I (BEGPRT /"ENTER FOUR DIGIT CLEAR IOTS FOLLOWED BY 0000" 6687 014110 6105 BEGTDC 6688 014111 4776 JMS I (BEGCR 6689 014112 3030 BEG006, DCA BEGNUM /READ 4 DIGIT OCTAL NUMBER 6690 014113 4764 JMS I (BEGDG 6691 014114 5312 JMP BEG006 /INVALID RESPONSE 6692 014115 4764 JMS I (BEGDG 6693 014116 5312 JMP BEG006 6694 014117 4764 JMS I (BEGDG 6695 014120 5312 JMP BEG006 6696 014121 4764 JMS I (BEGDG 6697 014122 5312 JMP BEG006 6698 014123 4776 JMS I (BEGCR 6699 014124 1030 TAD BEGNUM /GET CLEAR IOT 6700 014125 7450 SNA 6701 014126 5343 JMP BEG008 /END OF LIST 6702 014127 4331 JMS BEG007 /ENTER IOT IN LIST 6703 014130 5312 JMP BEG006 /GET ANOTHER IOT 6704 6705 014131 0000 BEG007, 0 /ENTER CLEAR IOT IN LIST AT INTUDF 6706 014132 3431 DCA I BEGTM1 /PUT IT IN LIST 6707 014133 2031 ISZ BEGTM1 /NEXT SLOT 6708 014134 1031 TAD BEGTM1 /ROOM FOR MORE ENTRIES? 6709 014135 1362 TAD (-INTUDF&7600+200-177 6710 014136 7710 SPA CLA 6711 014137 5731 JMP I BEG007 /YES 6712 014140 4775 JMS I (BEGPRT /NO, "LIST TERMINATED" 6713 014141 6134 BEGTLT 6714 014142 4776 JMS I (BEGCR 6715 6716 014143 1361 BEG008, TAD (INTDON&177+5200 /JMP INTDON 6717 014144 3431 DCA I BEGTM1 /TERMINATE LIST WITH "JMP INTDON" 6718 014145 5760 JMP I (BEG17A /NOW DO USER TTY CODES 6719 6720 014146 7200 BEG009, CLA 6721 014147 4775 JMS I (BEGPRT /"INVALID RESPONSE" 6722 014150 6144 BEGTIR 6723 014151 4776 JMS I (BEGCR 6724 014152 5214 JMP BEG002 6725 6726 014153 4612 BEG00B, BEG034 6727 014160 4200 PAGE 014161 5311 014162 7401 014163 6002 014164 5447 014165 5430 014166 0365 014167 0071 014170 0100 014171 3524 014172 0011 014173 7507 014174 5400 014175 5472 014176 5422 014177 7700 6728 /TTY CODES 6729 014200 7340 BEG17A, L7777 /CHECK IF 1 USER 6730 014201 1025 TAD BEGUSR 6731 014202 7450 SNA 6732 014203 5777 JMP I (BEG010 /1 USER, DON'T BOTHER HIM WITH TTY CODES 6733 014204 7041 CIA /PUT REMAINING COUNT IN BEGTM1 6734 014205 3031 DCA BEGTM1 6735 014206 4776 BEG017, JMS I (BEGPRT /"STANDARD TELETYPE CODES?" 6736 014207 6265 BEGTTS 6737 014210 4775 JMS I (BEGYN 6738 014211 5226 JMP BEG022 /NO 6739 014212 5206 JMP BEG017 /INVALID RESPONSE 6740 014213 1374 TAD (BEGIOT /SET UP STANDARD CODES 6741 014214 3016 DCA BEGXR1 6742 014215 1373 TAD (40 6743 014216 3032 DCA BEGTM2 6744 014217 1032 BEG018, TAD BEGTM2 6745 014220 3416 DCA I BEGXR1 6746 014221 2032 ISZ BEGTM2 6747 014222 2032 ISZ BEGTM2 6748 014223 2031 ISZ BEGTM1 6749 014224 5217 JMP BEG018 6750 014225 5777 JMP I (BEG010 /NOW DO CORE PARTIONING 6751 6752 014226 1374 BEG022, TAD (BEGIOT 6753 014227 3016 DCA BEGXR1 6754 014230 4776 BEG023, JMS I (BEGPRT /"USER #" 6755 014231 6315 BEGTT1 6756 014232 1372 TAD ("2-BEGIOT 6757 014233 1016 TAD BEGXR1 6758 014234 4771 JMS I (BEGTTY 6759 014235 4776 JMS I (BEGPRT /" READER CODE (2 DIGITS)?" 6760 014236 6321 BEGTT2 6761 014237 3030 DCA BEGNUM /READ READER CODE 6762 014240 4770 JMS I (BEGDG 6763 014241 5230 JMP BEG023 /INVALID ENTRY 6764 014242 4770 JMS I (BEGDG 6765 014243 5230 JMP BEG023 6766 014244 4767 JMS I (BEGCR 6767 014245 1030 TAD BEGNUM 6768 014246 3416 DCA I BEGXR1 6769 014247 2031 ISZ BEGTM1 6770 014250 5230 JMP BEG023 6771 014251 5777 JMP I (BEG010 /NOW DO CORE PARTITIONING 6772 014367 5422 PAGE 014370 5447 014371 5413 014372 2435 014373 0040 014374 5625 014375 5430 014376 5472 014377 4400 6773 /CORE PARTITIONER 6774 014400 1377 BEG010, TAD (-30 /ZERO ALL USER'S ENTRIES 6775 014401 3031 DCA BEGTM1 6776 014402 1376 TAD (BEGCU-1 6777 014403 3016 DCA BEGXR1 6778 014404 3416 DCA I BEGXR1 /CLEAR ENTRY 6779 014405 2031 ISZ BEGTM1 6780 014406 5204 JMP .-2 6781 014407 1025 TAD BEGUSR 6782 014410 7041 CIA 6783 014411 3016 DCA BEGXR1 6784 6785 014412 1375 TAD (7 6786 014413 3031 BEG011, DCA BEGTM1 /CORE FIELD 6787 014414 1031 TAD BEGTM1 /CONVERT TO CDF 6788 014415 7106 CLL RTL 6789 014416 7004 RAL 6790 014417 1374 TAD (CDF 6791 014420 3221 DCA BEG012 6792 014421 7402 BEG012, HLT 6793 014422 7330 L4000 /DOES THIS CORE FIELD EXIST? 6794 014423 3773 DCA I (BEGTM2 6795 014424 1773 TAD I (BEGTM2 6796 014425 6211 CDF 10 6797 014426 7700 SMA CLA 6798 014427 5337 JMP BEG14A /IN FACT, NO 6799 014430 4772 JMS I (BEGPRT /"FIELD " 6800 014431 6155 BEGTF1 6801 014432 1371 TAD ("0 6802 014433 1031 TAD BEGTM1 6803 014434 4770 JMS I (BEGTTY 6804 014435 4767 JMS I (BEGCR 6805 014436 7340 L7777 /CHECK IF FIELD 1 6806 014437 1031 TAD BEGTM1 6807 014440 7650 SNA CLA 6808 014441 1026 TAD BEGORG /START OF CORE IN FIELD 1 6809 014442 7450 SNA /OTHERWISE CONEND IS START OF CORE 6810 014443 1366 TAD (CONEND 6811 014444 3032 DCA BEGTM2 /START OF CORE 6812 014445 4772 BEG013, JMS I (BEGPRT /"THERE ARE " 6813 014446 6161 BEGTF2 6814 014447 4765 JMS I (BEGDO /PRINT BLOCKS LEFT IN DECIMAL 6815 014450 4772 JMS I (BEGPRT /" BLOCKS LEFT IN THIS FIELD" 6816 014451 6167 BEGTF3 6817 014452 4767 JMS I (BEGCR 6818 014453 4772 BEG014, JMS I (BEGPRT /"YOUR ALLOCATION FOR USER #" 6819 014454 6205 BEGTF4 6820 014455 4764 JMS I (BEGKEY 6821 014456 1363 TAD (-"1 6822 014457 7510 SPA 6823 014460 5347 JMP BEG015 /INVALID RESPONSE 6824 014461 3041 DCA BEGTM4 /USER NUMBER 6825 014462 1025 TAD BEGUSR 6826 014463 7041 CIA 6827 014464 1041 TAD BEGTM4 6828 014465 7700 SMA CLA 6829 014466 5347 JMP BEG015 /INVALID RESPONSE 6830 014467 1041 TAD BEGTM4 /BUILD POINTER TO USER'S ENTRIES 6831 014470 7104 CLL RAL 6832 014471 1041 TAD BEGTM4 6833 014472 1362 TAD (BEGCU 6834 014473 3041 DCA BEGTM4 /POINTER 6835 014474 1441 TAD I BEGTM4 /THIS USER ALREADY DONE? 6836 014475 7640 SZA CLA 6837 014476 5347 JMP BEG015 /YES, INVALID RESPONSE 6838 014477 4772 JMS I (BEGPRT /" IS HOW MANY BLOCKS?" 6839 014500 6223 BEGTF5 6840 014501 4761 JMS I (BEGDI /READ DECIMAL # 6841 014502 7450 SNA 6842 014503 5343 JMP BEG016 /BLOCK SIZES DON'T WORK 6843 014504 7041 CIA /COMPARE WITH BLOCKS LEFT 6844 014505 1033 TAD BEGTM3 6845 014506 7710 SPA CLA 6846 014507 5343 JMP BEG016 /BLOCK SIZES DON'T WORK 6847 014510 1221 TAD BEG012 /GET CDF FOR THIS FIELD 6848 014511 3441 DCA I BEGTM4 /ENTER CDF 6849 014512 2041 ISZ BEGTM4 /NEXT ENTRY 6850 014513 1032 TAD BEGTM2 /GET START OF CORE 6851 014514 3441 DCA I BEGTM4 /ENTER IT 6852 014515 2041 ISZ BEGTM4 /NEXT ENTRY 6853 014516 1030 TAD BEGNUM /COMPUTE START OF CORE FOR NEXT SEGMENT 6854 014517 7112 CLL RTR 6855 014520 7012 RTR 6856 014521 7010 RAR 6857 014522 1032 TAD BEGTM2 6858 014523 1360 TAD (377 6859 014524 0357 AND (7400 6860 014525 3032 DCA BEGTM2 6861 014526 7340 L7777 /END OF CORE FOR THIS GUY 6862 014527 1032 TAD BEGTM2 6863 014530 3441 DCA I BEGTM4 /MAKE ENTRY 6864 014531 2016 ISZ BEGXR1 /DONE ALL USERS? 6865 014532 7410 SKP /NO 6866 014533 5756 JMP I (BEG019 /YES, FINISHED WITH QUESTIONS 6867 6868 014534 1032 BEG14B, TAD BEGTM2 /END OF FIELD? 6869 014535 7640 SZA CLA 6870 014536 5245 JMP BEG013 /NO 6871 014537 7340 BEG14A, L7777 /YES... DECREMENT CORE FIELD 6872 014540 1031 TAD BEGTM1 6873 014541 7440 SZA /MORE CORE? 6874 014542 5213 JMP BEG011 /YES, DO THIS FIELD 6875 6876 /NO, BLOCK SIZES DON'T WORK! 6877 014543 4772 BEG016, JMS I (BEGPRT /"BLOCK SIZES DON'T WORK -- HAVE TO START AGAIN" 6878 014544 6236 BEGTBS 6879 014545 4767 JMS I (BEGCR 6880 014546 5200 JMP BEG010 6881 6882 014547 7200 BEG015, CLA 6883 014550 4772 JMS I (BEGPRT /"INVALID RESPONSE" 6884 014551 6144 BEGTIR 6885 014552 4767 JMS I (BEGCR 6886 014553 5253 JMP BEG014 6887 014556 4600 PAGE 014557 7400 014560 0377 014561 5521 014562 5635 014563 7517 014564 5400 014565 5600 014566 0025 014567 5422 014570 5413 014571 0260 014572 5472 014573 0032 014574 6201 014575 0007 014576 5634 014577 7750 6888 014600 4777 BEG019, JMS I (BEGPRT /"IS THE ABOVE CORRECT?" 6889 014601 6302 BEGTOK 6890 014602 4776 JMS I (BEGYN 6891 014603 5775 JMP I (BEG001 /NO! ALL THIS IS WASTED! 6892 014604 5200 JMP BEG019 /INVALID RESPONSE 6893 014605 4777 BEG032, JMS I (BEGPRT /"START UP?" 6894 014606 6336 BEGTGO 6895 014607 4776 JMS I (BEGYN 6896 014610 5320 JMP BEG040 6897 014611 5205 JMP BEG032 6898 /SET UP OTHER VALUES 6899 014612 6201 BEG034, CDF 0 6900 014613 1374 TAD (TAD BEGUSM-1 /SET USRM 6901 014614 1025 TAD BEGUSR 6902 014615 3216 DCA BEG20B 6903 014616 7402 BEG20B, HLT 6904 014617 3773 DCA I (USRM 6905 014620 1773 TAD I (USRM /SET MUSRCT 6906 014621 7040 CMA 6907 014622 3772 DCA I (MUSRCT 6908 014623 1371 TAD (SWPR0 /SET LISTS AT SWPR0 & BEGKIE 6909 014624 3031 DCA BEGTM1 6910 014625 1370 TAD (BEGIOT-1 6911 014626 3016 DCA BEGXR1 6912 014627 1367 TAD (BEGKIE-1 6913 014630 3017 DCA BEGXR2 6914 014631 1025 TAD BEGUSR 6915 014632 7041 CIA 6916 014633 3032 DCA BEGTM2 6917 014634 7340 L7777 6918 014635 1027 TAD BEGSWP 6919 014636 3431 BEG020, DCA I BEGTM1 6920 014637 6211 CDF 10 6921 014640 1416 TAD I BEGXR1 6922 014641 6201 CDF 0 6923 014642 7106 CLL RTL 6924 014643 7004 RAL 6925 014644 1366 TAD (KIE-030 6926 014645 3417 DCA I BEGXR2 6927 014646 1365 TAD (SWPRL 6928 014647 1431 TAD I BEGTM1 6929 014650 2031 ISZ BEGTM1 6930 014651 2032 ISZ BEGTM2 6931 014652 5236 JMP BEG020 6932 014653 7200 CLA 6933 014654 1364 TAD (USER0-1 /SET USER0 THRU USER7 6934 014655 3016 DCA BEGXR1 6935 014656 1025 TAD BEGUSR 6936 014657 7041 CIA 6937 014660 3031 DCA BEGTM1 6938 014661 3416 BEG021, DCA I BEGXR1 /THIS JOB IS RUNNABLE 6939 014662 2031 ISZ BEGTM1 6940 014663 5261 JMP BEG021 6941 014664 6211 CDF 10 6942 014665 1025 TAD BEGUSR /SET MUSERS 6943 014666 7041 CIA 6944 014667 3034 DCA MUSERS 6945 014670 1363 TAD (USER0 /SET USRPT 6946 014671 1025 TAD BEGUSR 6947 014672 3035 DCA USRPT 6948 014673 1035 TAD USRPT /SET MUSRPT 6949 014674 7041 CIA 6950 014675 3036 DCA MUSRPT 6951 014676 1362 TAD (ENSWAP-STSWAP+1 /SET IOTST 6952 014677 1027 TAD BEGSWP 6953 014700 3037 DCA IOTST 6954 IFZERO PDP8I < 6955 014701 1370 TAD (BEGIOT-1 /GENERATE POWER FAIL TLS LIST 6956 014702 3016 DCA BEGXR1 6957 014703 1361 TAD (BEGPFL-1 6958 014704 3017 DCA BEGXR2 6959 014705 1025 TAD BEGUSR 6960 014706 7041 CIA 6961 014707 3031 DCA BEGTM1 6962 014710 1416 BEG21A, TAD I BEGXR1 6963 014711 7106 CLL RTL 6964 014712 7004 RAL 6965 014713 1360 TAD (10+TLS-040 6966 014714 3417 DCA I BEGXR2 6967 014715 2031 ISZ BEGTM1 6968 014716 5310 JMP BEG21A 6969 > 6970 014717 5757 JMP I (BEG34A 6971 6972 014720 1356 BEG040, TAD (BEG00B&177+5600 /TAD (JMP I BEG00B 6973 014721 3755 DCA I (BEG00A /SO RESTART STARTS EDU250 6974 014722 6203 CIF CDF 0 /NOW GO TO OS/8 6975 014723 5754 JMP I (7600 6976 6977 014724 0000 BEGUSM, 0 6978 014725 0001 1 6979 014726 0003 3 6980 014727 0003 3 6981 014730 0007 7 6982 014731 0007 7 6983 014732 0007 7 6984 014733 0007 7 6985 014754 7600 PAGE 014755 4005 014756 5753 014757 5000 014760 6016 014761 0552 014762 0045 014763 3600 014764 3577 014765 0071 014766 6005 014767 0206 014770 5624 014771 3610 014772 0325 014773 0202 014774 1323 014775 4006 014776 5430 014777 5472 6986 015000 1377 BEG34A, TAD (-CONEND 6987 015001 3031 DCA BEGTM1 6988 015002 6211 BEG035, CDF 10 6989 015003 1776 TAD I (0 6990 015004 6221 BEG036, CDF 20 6991 015005 3776 DCA I (0 6992 015006 2376 ISZ (0 6993 015007 2031 ISZ BEGTM1 6994 015010 5202 JMP BEG035 6995 015011 3776 BEG037, DCA I (0 6996 015012 2376 ISZ (0 6997 015013 5211 JMP BEG037 6998 015014 1375 TAD (10 6999 015015 1204 TAD BEG036 7000 015016 3204 DCA BEG036 7001 015017 2246 ISZ BEG039 7002 015020 5200 JMP BEG34A 7003 015021 6211 CDF 10 7004 015022 1774 BEG038, TAD I (F0P37 /MOVE LAST PAGE OF FIELD 0 INTO PLACE 7005 015023 6201 CDF 0 7006 015024 3773 DCA I (7600 7007 015025 6211 CDF 10 7008 015026 2374 ISZ (F0P37 7009 015027 2373 ISZ (7600 7010 015030 5222 JMP BEG038 7011 7012 /POINTERS TO SWAP REGION & ASSOCIATED DATA 7013 015031 7340 L7777 7014 015032 1027 TAD BEGSWP 7015 015033 3016 DCA BEGXR1 7016 015034 1372 TAD (BEGCU-1 7017 015035 3017 DCA BEGXR2 7018 015036 1371 TAD (BEGIOT 7019 015037 3031 DCA BEGTM1 7020 015040 1370 TAD (BUF 7021 015041 3032 DCA BEGTM2 7022 015042 1025 TAD BEGUSR 7023 015043 7041 CIA 7024 015044 3033 DCA BEGTM3 7025 015045 5767 JMP I (BEG031 7026 7027 015046 7772 BEG039, -6 7028 015167 5200 PAGE 015170 3524 015171 5625 015172 5634 015173 7600 015174 7400 015175 0010 015176 0000 015177 7753 7029 /SET UP SWAP REGION 7030 015200 3416 BEG031, DCA I BEGXR1 /PDLXR 7031 015201 3416 DCA I BEGXR1 /AXIN 7032 015202 3416 DCA I BEGXR1 /AXOUT 7033 015203 3416 DCA I BEGXR1 /GTEM 7034 015204 3416 DCA I BEGXR1 /XCT 7035 015205 1377 TAD (READY 7036 015206 3416 DCA I BEGXR1 /PC 7037 015207 3416 DCA I BEGXR1 /ADD 7038 015210 3416 DCA I BEGXR1 /XCTIN 7039 015211 3416 DCA I BEGXR1 /PT1 7040 015212 3416 DCA I BEGXR1 /CHAR 7041 015213 3416 DCA I BEGXR1 /LINEPC 7042 015214 3416 DCA I BEGXR1 /LINENO 7043 015215 3416 DCA I BEGXR1 /LASTLN 7044 015216 3416 DCA I BEGXR1 /SPACSW 7045 015217 1417 TAD I BEGXR2 /CDF TO USER'S FIELD 7046 015220 3416 DCA I BEGXR1 /XFIELD 7047 015221 3416 DCA I BEGXR1 /DATAPC 7048 015222 3416 DCA I BEGXR1 7049 015223 3416 DCA I BEGXR1 7050 015224 3416 DCA I BEGXR1 7051 015225 3416 DCA I BEGXR1 7052 015226 3416 DCA I BEGXR1 /PACKND 7053 015227 1417 TAD I BEGXR2 /START OF USER CORE 7054 015230 3041 DCA BEGTM4 7055 015231 1376 TAD (LINE1 7056 015232 1041 TAD BEGTM4 7057 015233 3416 DCA I BEGXR1 /BUFR 7058 015234 1376 TAD (LINE1 7059 015235 1041 TAD BEGTM4 7060 015236 3416 DCA I BEGXR1 /LASTV 7061 015237 1417 TAD I BEGXR2 /END OF USER CORE 7062 015240 3416 DCA I BEGXR1 /PDLST 7063 015241 1375 TAD (LINE0 7064 015242 1041 TAD BEGTM4 7065 015243 3416 DCA I BEGXR1 /ALINE0 7066 015244 1041 TAD BEGTM4 7067 015245 3416 DCA I BEGXR1 /COMBUF 7068 015246 3416 DCA I BEGXR1 /ERLINE 7069 015247 7301 L0001 7070 015250 3416 DCA I BEGXR1 /FRNDX 7071 015251 1374 TAD (203 7072 015252 3416 DCA I BEGXR1 7073 015253 1373 TAD (5555 7074 015254 3416 DCA I BEGXR1 7075 015255 1372 TAD (XREADC 7076 015256 3416 DCA I BEGXR1 /PREADC 7077 015257 1371 TAD (XPRNTC 7078 015260 3416 DCA I BEGXR1 /PPRNTC 7079 IFNZRO EDU250 < 7080 015261 3416 DCA I BEGXR1 /DEV 7081 015262 1370 TAD (1617 7082 015263 3416 DCA I BEGXR1 /NAME 7083 015264 1367 TAD (1605 7084 015265 3416 DCA I BEGXR1 7085 015266 3416 DCA I BEGXR1 7086 015267 1366 TAD (0201 7087 015270 3416 DCA I BEGXR1 7088 > 7089 015271 1431 TAD I BEGTM1 /READER CODE 7090 015272 7106 CLL RTL 7091 015273 7004 RAL 7092 015274 1365 TAD (KSF-030 7093 015275 3416 DCA I BEGXR1 /KSF IOT 7094 015276 3416 DCA I BEGXR1 7095 015277 3416 DCA I BEGXR1 7096 015300 1364 TAD (37 7097 015301 3416 DCA I BEGXR1 7098 015302 1032 TAD BEGTM2 7099 015303 3416 DCA I BEGXR1 7100 015304 3416 DCA I BEGXR1 7101 015305 7346 L7775 7102 015306 3416 DCA I BEGXR1 7103 015307 7346 L7775 7104 015310 3416 DCA I BEGXR1 7105 015311 3416 DCA I BEGXR1 7106 015312 3416 DCA I BEGXR1 7107 015313 1431 TAD I BEGTM1 7108 015314 2031 ISZ BEGTM1 7109 015315 7107 CLL IAC RTL 7110 015316 7004 RAL 7111 015317 1365 TAD (TSF-040 7112 015320 3416 DCA I BEGXR1 /TSF IOT 7113 015321 3416 DCA I BEGXR1 7114 015322 1363 TAD (-110 7115 015323 3416 DCA I BEGXR1 7116 015324 1364 TAD (37 7117 015325 3416 DCA I BEGXR1 7118 015326 1362 TAD (40 7119 015327 1032 TAD BEGTM2 7120 015330 3416 DCA I BEGXR1 7121 015331 3416 DCA I BEGXR1 7122 015332 7346 L7775 7123 015333 3416 DCA I BEGXR1 7124 015334 7346 L7775 7125 015335 3416 DCA I BEGXR1 7126 015336 3416 DCA I BEGXR1 7127 015337 3416 DCA I BEGXR1 7128 015340 1361 TAD (100 7129 015341 1032 TAD BEGTM2 7130 015342 3032 DCA BEGTM2 7131 015343 2033 ISZ BEGTM3 7132 015344 5200 JMP BEG031 7133 015345 5760 JMP I (BEGCL1 /GO CLEAR FIELD 1 7134 015360 3524 PAGE 015361 0100 015362 0040 015363 7670 015364 0037 015365 6001 015366 0201 015367 1605 015370 1617 015371 0765 015372 3745 015373 5555 015374 0203 015375 0072 015376 0074 015377 0452 7135 015400 0000 BEGKEY, 0 7136 015401 6031 KSF 7137 015402 5201 JMP .-1 7138 015403 6036 KRB 7139 015404 1377 TAD (-203 7140 015405 7650 SNA CLA 7141 015406 5776 JMP I (BEG001 7142 015407 6036 KRB 7143 015410 4213 JMS BEGTTY 7144 015411 6036 KRB 7145 015412 5600 JMP I BEGKEY 7146 7147 015413 0000 BEGTTY, 0 7148 015414 6041 TSF 7149 015415 5214 JMP .-1 7150 015416 6031 KSF 7151 015417 6046 TLS 7152 015420 7200 CLA 7153 015421 5613 JMP I BEGTTY 7154 7155 015422 0000 BEGCR, 0 7156 015423 1375 TAD (215 7157 015424 4213 JMS BEGTTY 7158 015425 1374 TAD (212 7159 015426 4213 JMS BEGTTY 7160 015427 5622 JMP I BEGCR 7161 7162 015430 0000 BEGYN, 0 7163 015431 4200 JMS BEGKEY 7164 015432 1373 TAD (-"N 7165 015433 7450 SNA 7166 015434 5245 JMP BEGYN2 7167 015435 2230 ISZ BEGYN 7168 015436 1372 TAD (-"Y+"N 7169 015437 7450 SNA 7170 015440 2230 ISZ BEGYN 7171 015441 7650 SNA CLA 7172 015442 5245 JMP BEGYN2 7173 015443 4272 JMS BEGPRT /"INVALID RESPONSE" 7174 015444 6144 BEGTIR 7175 015445 4222 BEGYN2, JMS BEGCR 7176 015446 5630 JMP I BEGYN 7177 7178 015447 0000 BEGDG, 0 7179 015450 4200 JMS BEGKEY 7180 015451 1371 TAD (-"7-1 7181 015452 7100 CLL 7182 015453 1370 TAD (-"0+"7+1 7183 015454 3042 DCA BEGTM5 7184 015455 7420 SNL 7185 015456 5266 JMP BEGDG1 7186 015457 1030 TAD BEGNUM 7187 015460 7106 CLL RTL 7188 015461 7004 RAL 7189 015462 1042 TAD BEGTM5 7190 015463 3030 DCA BEGNUM 7191 015464 2247 ISZ BEGDG 7192 015465 5647 JMP I BEGDG 7193 7194 015466 4272 BEGDG1, JMS BEGPRT 7195 015467 6144 BEGTIR 7196 015470 4222 JMS BEGCR 7197 015471 5647 JMP I BEGDG 7198 7199 015472 0000 BEGPRT, 0 7200 015473 1672 TAD I BEGPRT 7201 015474 2272 ISZ BEGPRT 7202 015475 3042 DCA BEGTM5 7203 015476 1442 BEGP1, TAD I BEGTM5 7204 015477 7012 RTR 7205 015500 7012 RTR 7206 015501 7012 RTR 7207 015502 4307 JMS BEGP2 7208 015503 1442 TAD I BEGTM5 7209 015504 4307 JMS BEGP2 7210 015505 2042 ISZ BEGTM5 7211 015506 5276 JMP BEGP1 7212 7213 015507 0000 BEGP2, 0 7214 015510 0367 AND (77 7215 015511 7450 SNA 7216 015512 5672 JMP I BEGPRT 7217 015513 1366 TAD (-40 7218 015514 7510 SPA 7219 015515 1365 TAD (100 7220 015516 1364 TAD (240 7221 015517 4213 JMS BEGTTY 7222 015520 5707 JMP I BEGP2 7223 7224 015521 0000 BEGDI, 0 /DECIMAL INPUT 7225 015522 3030 BEGDI2, DCA BEGNUM 7226 015523 4200 JMS BEGKEY 7227 015524 1363 TAD (-215 7228 015525 7450 SNA 7229 015526 5343 JMP BEGDI3 /CR 7230 015527 1362 TAD (-"9-1+215 7231 015530 7100 CLL 7232 015531 1361 TAD (-"0+"9+1 7233 015532 3042 DCA BEGTM5 7234 015533 7420 SNL 7235 015534 5760 JMP I (BEG015 7236 015535 1030 TAD BEGNUM 7237 015536 7106 CLL RTL 7238 015537 1030 TAD BEGNUM 7239 015540 7104 CLL RAL 7240 015541 1042 TAD BEGTM5 7241 015542 5322 JMP BEGDI2 7242 7243 015543 4222 BEGDI3, JMS BEGCR 7244 015544 1030 TAD BEGNUM 7245 015545 5721 JMP I BEGDI 7246 015560 4547 PAGE 015561 0012 015562 7723 015563 7563 015564 0240 015565 0100 015566 7740 015567 0077 015570 0010 015571 7510 015572 7765 015573 7462 015574 0212 015575 0215 015576 4006 015577 7575 7247 015600 0000 BEGDO, 0 /DECIMAL OUTPUT FROM BEGTM3 7248 015601 1032 TAD BEGTM2 /START OF CORE 7249 015602 7147 CLL CMA IAC RTL /CONVERT WORDS LEFT TO BLOCKS LEFT 7250 015603 7006 RTL 7251 015604 7004 RAL 7252 015605 0377 AND (17 7253 015606 3033 DCA BEGTM3 /BLOCKS LEFT 7254 015607 1033 TAD BEGTM3 7255 015610 3030 DCA BEGNUM 7256 015611 1376 TAD (-12 7257 015612 1030 TAD BEGNUM 7258 015613 7510 SPA 7259 015614 5220 JMP BEGDO2 7260 015615 3030 DCA BEGNUM 7261 015616 1375 TAD ("1 7262 015617 4774 JMS I (BEGTTY 7263 015620 7200 BEGDO2, CLA 7264 015621 1373 TAD ("0 7265 015622 1030 TAD BEGNUM 7266 015623 4774 JMS I (BEGTTY 7267 015624 5600 JMP I BEGDO 7268 7269 015625 0003 BEGIOT, 3 7270 015626 0000 ZBLOCK 7 015627 0000 015630 0000 015631 0000 015632 0000 015633 0000 015634 0000 7271 7272 015635 0000 BEGCU, ZBLOCK 30 015636 0000 015637 0000 015640 0000 015641 0000 015642 0000 015643 0000 015644 0000 015645 0000 015646 0000 015647 0000 015650 0000 015651 0000 015652 0000 015653 0000 015654 0000 015655 0000 015656 0000 015657 0000 015660 0000 015661 0000 015662 0000 015663 0000 015664 0000 7273 015773 0260 PAGE 015774 5413 015775 0261 015776 7766 015777 0017 7274 BEGTED, IFZERO EDU250 7275 016000 0504 IFNZRO EDU250 016001 2503 016002 1715 016003 2040 016004 0504 016005 2562 016006 6560 016007 4002 016010 0123 016011 1103 016012 4026 016013 6356 016014 6061 016015 7100 7276 016016 1017 BEGTUS, TEXT "HOW MANY USERS?" 016017 2740 016020 1501 016021 1631 016022 4025 016023 2305 016024 2223 016025 7700 7277 016026 0116 BEGTTU, TEXT "ANY UNUSED TELETYPES?" 016027 3140 016030 2516 016031 2523 016032 0504 016033 4024 016034 0514 016035 0524 016036 3120 016037 0523 016040 7700 7278 016041 0516 BEGTTC, TEXT "ENTER TWO DIGIT READER CODES FOLLOWED BY 00:" 016042 2405 016043 2240 016044 2427 016045 1740 016046 0411 016047 0711 016050 2440 016051 2205 016052 0104 016053 0522 016054 4003 016055 1704 016056 0523 016057 4006 016060 1714 016061 1417 016062 2705 016063 0440 016064 0231 016065 4060 016066 6072 016067 0000 7279 016070 0116 BEGTDV, TEXT "ANY OTHER UNUSED DEVICES?" 016071 3140 016072 1724 016073 1005 016074 2240 016075 2516 016076 2523 016077 0504 016100 4004 016101 0526 016102 1103 016103 0523 016104 7700 7280 016105 0516 BEGTDC, TEXT "ENTER FOUR DIGIT CLEAR IOTS FOLLOWED BY 0000:" 016106 2405 016107 2240 016110 0617 016111 2522 016112 4004 016113 1107 016114 1124 016115 4003 016116 1405 016117 0122 016120 4011 016121 1724 016122 2340 016123 0617 016124 1414 016125 1727 016126 0504 016127 4002 016130 3140 016131 6060 016132 6060 016133 7200 7281 016134 1411 BEGTLT, TEXT "LIST TERMINATED" 016135 2324 016136 4024 016137 0522 016140 1511 016141 1601 016142 2405 016143 0400 7282 016144 1116 BEGTIR, TEXT "INVALID RESPONSE" 016145 2601 016146 1411 016147 0440 016150 2205 016151 2320 016152 1716 016153 2305 016154 0000 7283 016155 0611 BEGTF1, TEXT "FIELD " 016156 0514 016157 0440 016160 0000 7284 016161 2410 BEGTF2, TEXT "THERE ARE " 016162 0522 016163 0540 016164 0122 016165 0540 016166 0000 7285 016167 4002 BEGTF3, TEXT " BLOCKS LEFT IN THIS FIELD." 016170 1417 016171 0313 016172 2340 016173 1405 016174 0624 016175 4011 016176 1640 016177 2410 016200 1123 016201 4006 016202 1105 016203 1404 016204 5600 7286 016205 3117 BEGTF4, TEXT "YOUR ALLOCATION FOR USER #" 016206 2522 016207 4001 016210 1414 016211 1703 016212 0124 016213 1117 016214 1640 016215 0617 016216 2240 016217 2523 016220 0522 016221 4043 016222 0000 7287 016223 4011 BEGTF5, TEXT " IS HOW MANY BLOCKS?" 016224 2340 016225 1017 016226 2740 016227 1501 016230 1631 016231 4002 016232 1417 016233 0313 016234 2377 016235 0000 7288 016236 0214 BEGTBS, TEXT "BLOCK SIZES DON'T WORK -- HAVE TO START AGAIN" 016237 1703 016240 1340 016241 2311 016242 3205 016243 2340 016244 0417 016245 1647 016246 2440 016247 2717 016250 2213 016251 4055 016252 5540 016253 1001 016254 2605 016255 4024 016256 1740 016257 2324 016260 0122 016261 2440 016262 0107 016263 0111 016264 1600 7289 016265 2324 BEGTTS, TEXT "STANDARD TELETYPE CODES?" 016266 0116 016267 0401 016270 2204 016271 4024 016272 0514 016273 0524 016274 3120 016275 0540 016276 0317 016277 0405 016300 2377 016301 0000 7290 016302 1123 BEGTOK, TEXT "IS THE ABOVE CORRECT?" 016303 4024 016304 1005 016305 4001 016306 0217 016307 2605 016310 4003 016311 1722 016312 2205 016313 0324 016314 7700 7291 016315 2523 BEGTT1, TEXT "USER #" 016316 0522 016317 4043 016320 0000 7292 016321 4022 BEGTT2, TEXT " READER CODE (2 DIGITS)?" 016322 0501 016323 0405 016324 2240 016325 0317 016326 0405 016327 4050 016330 6240 016331 0411 016332 0711 016333 2423 016334 5177 016335 0000 7293 016336 2324 BEGTGO, TEXT "START UP?" 016337 0122 016340 2440 016341 2520 016342 7700 7294 010071 7772 $ 010072 1626 010073 3463 010074 1662 010075 1711 010076 7773 010077 1154 010100 3506 010101 4273 010102 3074 010103 3075 010104 3071 010105 3072 010106 0033 010107 7766 010110 3070 010111 7774 010112 0055 010113 1073 010114 1675 010115 1075 010116 1750 010117 1200 010120 0061 010121 1600 010122 1734 010123 1227 010124 0775 010125 1236 010126 3320 010127 0016 010130 0010 010131 0004 010132 0003 010133 7670 010134 0015 010135 0100 010136 7647 010137 7763 010140 0007 010141 7726 010142 0006 010143 0311 010144 5165 010145 3400 010146 7777 010147 0041 010150 7767 010151 0600 010152 1431 010153 7754 010154 0702 010155 0474 010156 0012 010157 0651 010160 0633 010161 7742 010162 0077 010163 7641 010164 0421 010165 7764 010166 0400 010167 0177 010170 0005 010171 0057 010172 0131 010173 0002 010174 5040 010175 0000 010176 0551 010177 3025 ABS 5516 AC0 0062 AC1 0063 AC2 0064 ACH 0066 ACLO 0067 ACSR 6677 ACSR1 6702 ACSR2 6713 ACX 0065 ADD 0023 AL1 6664 AL1K 6374 AL1PTR 6443 ALINE0 0045 ALPTST 4224 AN1 0076 AN2 6212 ARGET 7062 ARGETL 6243 ARGETP 6736 ARGNXT 2740 ARGPOL 5620 ASORTC 0135 unreferenced ATANA1 6032 ATANA2 6040 ATANA3 6046 ATANB0 6027 ATANB1 6035 ATANB2 6043 ATANB3 6051 ATN 5600 AUDF 0150 unreferenced AXIN 0016 AXOUT 0017 BEG000 4000 unreferenced BEG001 4006 BEG002 4014 BEG003 4047 BEG004 4057 BEG005 4102 BEG006 4112 BEG007 4131 BEG008 4143 BEG009 4146 BEG00A 4005 BEG00B 4153 BEG010 4400 BEG011 4413 BEG012 4421 BEG013 4445 BEG014 4453 BEG015 4547 BEG016 4543 BEG017 4206 BEG018 4217 BEG019 4600 BEG020 4636 BEG021 4661 BEG022 4226 BEG023 4230 BEG02A 4033 BEG031 5200 BEG032 4605 BEG034 4612 BEG035 5002 BEG036 5004 BEG037 5011 BEG038 5022 BEG039 5046 BEG040 4720 BEG14A 4537 BEG14B 4534 unreferenced BEG17A 4200 BEG20B 4616 BEG21A 4710 BEG34A 5000 BEGCL1 3524 BEGCR 5422 BEGCU 5635 BEGDG 5447 BEGDG1 5466 BEGDI 5521 BEGDI2 5522 BEGDI3 5543 BEGDO 5600 BEGDO2 5620 BEGIOT 5625 BEGKEY 5400 BEGKIE 0207 BEGNUM 0030 BEGORG 0026 BEGP1 5476 BEGP2 5507 BEGPFL 0553 BEGPRT 5472 BEGSWP 0027 BEGTBS 6236 BEGTDC 6105 BEGTDV 6070 BEGTED 6000 BEGTF1 6155 BEGTF2 6161 BEGTF3 6167 BEGTF4 6205 BEGTF5 6223 BEGTGO 6336 BEGTIR 6144 BEGTLT 6134 BEGTM1 0031 BEGTM2 0032 BEGTM3 0033 BEGTM4 0041 BEGTM5 0042 BEGTOK 6302 BEGTT1 6315 BEGTT2 6321 BEGTTC 6041 BEGTTS 6265 BEGTTU 6026 BEGTTY 5413 BEGTUS 6016 BEGUSM 4724 BEGUSR 0025 BEGXR1 0016 BEGXR2 0017 BEGYN 5430 BEGYN2 5445 BIG 7505 BIG1 7502 BSW 7002 BUF 3524 BUFB 0045 BUFC 0046 BUFCOM 0000 BUFI 0421 BUFI1 0462 BUFI2 0472 BUFIOT 0041 BUFIP 0051 BUFIS 0047 BUFM 0044 BUFO 0474 BUFO1 0530 BUFOP 0052 BUFOS 0050 BUFR 0042 BUFSP 0042 BUFSP2 0043 BUFSW2 0412 BUFSWP 0400 BYE 4272 C13 6163 C137 0114 C14 0115 unreferenced C16 0530 unreferenced C177 0113 C37 3120 C3XXX 1324 unreferenced C40 0124 C50 2456 C7 0112 C7400 0467 C77 0125 C7700 0117 CAF 6007 CAT 2107 CAT3 1103 CATAL 1046 CATDON 1117 CATF0 1055 CATF1 1060 CATGO 1053 CATPRT 1200 CCONT 0126 CCR 0111 CCRTST 4206 CGOSB1 4265 CHAR 0026 CJUMP 0127 CLF 0116 CM10 2656 CNTR 0101 COM2 2213 COM3 2220 COM4 2227 COM5 2255 COM6 2257 COMAXT 2276 COMBUF 0046 COMCHR 2301 COMCT 2272 COMGO2 2316 COMGOL 2302 COMGTM 2277 COMMAN 4561 COMPT 2273 COMPT2 2274 COMTM 2275 COMTST 4200 COMXCT 2300 CONEND 0025 CONFIG 0000 CONT 2515 COS 5453 CPACK 0074 CREADY 2335 CTABLE 6124 DATAPC 0034 DBFKS2 0004 DBFTC 0006 DBFTS2 0005 DCKON2 0253 DCKON3 0264 DCKON4 0306 DCOUNT 3070 DECODE 0470 unreferenced DELETE 2315 DEV 0055 DEXP 0076 DFIND 0312 DFLG 7303 DLINK 3072 DOADD 6623 DONE 6365 DORG 3071 DPROPR 3075 DTBEND 3505 DTBFB 1001 unreferenced DTBFC 1002 DTBFI 0775 DTBFIP 1005 DTBFIS 1003 DTBFM 1000 DTBFOP 1006 DTBFOS 1004 DTBLK 0064 DTBOV 3506 DTBSBN 0057 DTBUF 3070 DTCEPT 0061 DTD2 1611 DTD3 1623 DTDC2 1651 DTDC3 1654 DTDCTC 0053 DTDCTD 0054 DTDD1 2046 DTDD11 2047 DTDD13 2062 DTDD2 2064 DTDD21 2065 DTDD3 2126 DTDD4 2133 DTDIR 1600 DTDIRC 1626 DTDIRM 1711 DTDIRN 1662 DTDIRS 1675 DTDM2 1716 DTDN2 1671 DTDONE 1073 DTDQ 3447 DTDQ1 3463 DTDQ2 3477 DTDS2 1700 DTENTS 0055 DTG1 3516 DTG2 3536 DTG3 3557 DTG4 3560 DTGCR 3530 DTGEXT 3533 DTGL 2671 DTGNAM 3506 DTIBL 0060 DTL2 1736 DTLEPT 0062 DTLERR 1154 DTLKUP 1734 DTLOOK 0131 DTN2 1760 DTN3 1764 DTNAME 1750 DTNCO1 1146 DTNCO2 2023 DTNCO3 1741 DTNEPT 0063 DTNONE 4313 DTPC 1075 DTPC2 1024 DTPCF0 1102 DTPCF1 1032 DTPCLF 1100 DTQ 1106 DTQ1 1117 DTQI 0130 DTRC 1063 DTRC2 1007 DTRCF0 1066 DTRCF1 1013 DTREAD 1236 DTSBN 0056 DTWRIT 1227 DV1 6566 DV2 6556 DV24 6546 DV24L 6766 DV24P 7027 DVL1 7011 DVLP1 6512 DVOP1 7170 DVOP2 6767 DVOP2P 7075 DVOPS 7155 DWASTE 3074 E 7302 ECALL 2600 ECALLI 4542 ECHO 5110 EDIT 2200 EDITL 2442 EDITL2 2436 EDT2 2235 EDTBEL 2207 EDTCR 2227 EDTFF 2220 EDTLF 2217 EDU250 0001 EFOP 0101 ELPAR 2634 END 4310 ENDFND 4351 ENDFNI 7667 ENDFUN 4762 ENDTST 4213 ENSWAP 0061 ENTRY 0263 ENUM 2641 EPAR 2725 EPAR2 2636 ERLINE 0047 ERR001 2204 ERR003 5112 ERR004 7724 ERR010 5670 ERR020 6261 ERR030 6552 ERR040 6146 ERR060 3626 ERR070 7730 ERR080 7731 ERR100 4500 ERR110 2760 ERR120 2663 ERR130 4461 ERR150 7235 ERR170 3055 ERR180 3075 ERR200 3135 ERR210 5126 ERR220 4401 ERR230 4555 ERR240 4705 ERR250 4714 ERR260 5010 ERR270 2536 ERR280 5274 ERR300 4324 ERR320 4161 ERR330 3446 ERR340 3355 ERR350 3210 ERR370 7310 ERR380 2540 ERR390 1211 ERR400 1222 ERR410 1410 ERR420 1432 ERR430 1535 ERR440 1457 ERR450 1521 ERR460 2404 ERR470 2412 ERR490 0701 ERR500 0732 ERR510 0643 ERRBEX 5203 ERRDNR 1045 ERRDOV 1017 ERRDSV 1034 ERRDT 1336 ERRDTG 3531 ERRLST 3002 ERROR 4547 ERRSAR 2055 ERRSOV 2046 ETERM 2664 ETERM1 2623 ETERM2 2672 ETERMN 2661 EVAL 2612 EVAL1 0073 EVAL2 2755 EVAL3 2767 EVALQ 5200 EVAR 2746 EXP 0065 EXPA0 6024 EXPA1 6021 EXPB1 6016 EXPON 5533 F0CMAN 1757 F0CMN1 1764 F0GETC 1765 F0P37 7400 F37 4703 FACR 6630 FAD1 6621 FADD 1000 FADDL 5461 FADDM 5762 FD 7024 FD1 7001 FD1P 6522 FDDON 6543 FDDONP 7026 FDIV 4000 FDIV1L 5471 FDIV1M 5764 FDIVL 5464 FDIVM 5763 FEXT 0000 FFADD 6600 FFD1 6527 FFDIV 6523 FFDIV1 6212 FFDP 6245 FFGET 7123 FFIX 6133 FFJMP 6126 FFLAG 0110 FFLOAT 6164 FFMPY 6401 FFNEG 1551 FFNEGK 7060 FFNEGR 6574 FFNOR 7076 FFNOR2 7077 FFNOR3 7117 FFPUT 7137 FFSUB 6726 FGET 5000 FGETL 5460 FGETM 5770 FIND 4562 FINDLN 4564 FINT 4532 FIX 0546 FIX1 6613 FIXDNE 6160 FIXL 5467 FIXLP 6150 FJMP 0000 FLAG 7345 FLARG 7725 FLARGP 0106 FLGET 4544 FLIN 7200 FLIN1 7210 FLIN2 7226 FLIN3 7230 FLIN4 7234 FLIN5 7272 FLINTP 0105 FLOATL 5470 FLOATM 5767 FLOP 2711 FLOT2A 7443 FLOUT 7400 FLOUT1 7433 FLOUT2 7450 FLOUTP 0104 FLPUT 4545 FLZERO 6063 FLZROI 4534 FMPY 3000 FMPYL 5462 FMPYM 5761 FNEGL 5465 FNEGM 5766 FNOR 7000 unreferenced FNORL 6173 FNORP 6756 FOR 1400 FOR1 1545 FOR2 1532 FOR3 1452 FOR4 1454 FOR5 1546 FOR6 1547 FPNEXT 6071 FPT 6070 FPUT 6000 FPUTL 5463 FPUTM 5760 FRACT 5503 FREE13 4565 FREE2 4566 FRNDX 0050 FRNDX0 7721 FROOT 6247 FSIN 5400 FSUB 2000 FSUB1 6604 FSUBL 5466 FSUBM 5765 FTEMP1 5472 FTEMP2 5475 FTRPRT 6140 unreferenced FUNC10 3017 FUNC11 3052 FUNC12 3150 FUNC13 3127 FUNC14 3107 FUNC16 5122 FUNC17 0110 FUNC6I 7671 FUNCT 4637 FUNCT3 7654 FUNCT4 4712 FUNCT5 4700 FUNCT6 3000 FUNCTI 4541 FUNJMS 7672 FUNL1 2760 FUNL2 2446 FUNL3 7673 FUPARR 5027 FUPDIV 5075 FUPPUT 5041 GETC 4533 GETLIM 2326 GETLIN 2355 GETLN 4555 GETMOR 4143 GETN1 7311 GETNUM 7304 GETNXT 4563 GETSGN 1506 unreferenced GETVAR 4400 GFND1 4615 GFND1I 4535 GFND2 4630 GIVE 7276 GLM2 2341 GLM3 2352 GLMFND 2334 GON 6361 GOSUB 4253 GOSUB1 4262 GOTO 2534 GPUT1 4512 GPUT2 4532 GS1 4442 GS2 4470 GS4 4465 GS5 4634 GS5I 4537 GT1FLG 5665 GTEM 0020 GTF 6004 GTFLG 5600 GVS1 4425 GVS2 4435 HORD 0066 IECALL 7670 IF 1200 IFNUM 1300 IFS 1235 IFSKP 1270 IFSKPL 7713 IFTRUE 2520 INIT 6757 INPACK 0735 INPEND 0625 INPSET 0606 INPUT 0600 INPUTX 2555 INRDAT 0700 INREAD 0652 INRMOD 0703 INRNUM 0710 INRVAR 0655 INT 0556 INTBRK 0275 INTCB 1431 INTCNT 0326 INTCTC 0355 INTCTO 0347 INTDON 0311 INTECO 0300 INTEGE 0107 INTER2 0624 INTER3 0630 INTERR 0600 INTIOV 0360 INTKEY 0226 INTKRB 0240 INTKSF 0233 INTNXT 0363 INTOOV 0721 INTPF2 0563 INTPF3 0570 INTPFR 0551 INTPRI 0633 INTPWF 0040 INTR 6756 INTRPT 0177 INTST 0212 INTST2 0230 INTTBR 0337 INTTCF 0345 INTTM 0031 INTTM1 0032 INTTM2 0033 INTTSF 0323 INTTT2 0342 INTTTY 0316 INTUDF 0365 INTUSR 0030 IOTST 0037 ITPLST 1161 ITPRNT 1124 JMPI 5412 JOB 0723 JUMP 2537 K200 6125 K60 7552 K6000 6372 KFD1 6246 KFFPUT 7300 KKM12 6576 KM13 6577 KM22 6375 KWCHR 2400 KWCOM 2466 KWDATA 2371 KWDEF 2361 KWDEV 2423 KWGOTO 2551 KWNEXT 2365 KWREL2 2406 KWREL3 2410 KWREL4 2404 KWREL5 2415 KWREL6 2420 KWRELS 2412 KWRXA1 2427 KWST 2542 KWSTEP 2355 KWTAB 2375 KWTHEN 2346 KWTO 2352 L0001 7301 L0002 7326 L0003 7325 L0004 7307 L0006 7327 L2000 7332 L3777 7350 L40 2267 L4000 7330 L5777 7352 unreferenced L77 2266 L7775 7346 L7776 7344 L7777 7340 LACX 1214 LASTLN 0031 LASTOP 0103 LASTV 0043 LAXOUT 2262 LCD 6751 LCHAR 2265 LEN 2146 LEN1 2153 LEN2 2167 LET 1401 LET1 1516 LET2 1411 unreferenced LEV 7056 LF0CMN 2271 LF0GET 2270 LFUNL2 4711 LGTEM 2263 LINE0 0072 LINE1 0074 LINENO 0030 LINEPC 0027 LINPUT 5270 LIS2 2251 LIS3 2255 LIS4 2267 LIST 2243 LIST0 2664 LIST10 2472 LIST12 2666 LIST13 2662 LIST14 2642 LIST15 2637 LIST16 2632 LIST17 2625 LIST2 2517 LIST20 2622 LIST21 2617 LIST23 2614 LIST24 2607 LIST25 2603 LIST26 2577 LIST27 2573 LIST3 2514 LIST30 2567 LIST31 2563 LIST34 2560 LIST36 2555 LIST4 2511 LIST40 2545 LIST5 2506 LIST6 2501 LIST7 2475 LISTA1 2647 LISTA2 2653 LISTA3 2660 LISTD2 2526 LISTD3 2532 LISTD4 2537 LISTDT 2523 LITL2 7517 LITS 4772 LITTLE 7510 unreferenced LKUPI 4612 LN2 6207 LN2OV2 6013 LNP1 5331 LNP2 5352 LNP3 5341 LOG 5665 LOG2E 6010 LOGC1 6376 LOGC3 6174 LOGC5 6065 LOOK 0003 LOOKUP 4440 LOP01 6322 LOP02 6346 LORD 0067 LPRTST 3762 LSTADR 1165 LTRPRT 5704 unreferenced LXCT 2264 M100 0117 M12 0121 M13 6162 M4 0123 M40 0120 M6 0122 MAGICN 0565 MD1 7032 MD1P 6242 MDOLR 4417 MDONE 6430 MDSET 7030 MDSETK 6575 MDSETP 6244 MEQL 1550 MID 2000 MID1 2044 MID2 2021 MID3 2036 MID4 2026 unreferenced MID5 2024 MID6 2030 MN10 1654 MODE 0031 MP12L 6502 MP24 6444 MPLP 6454 MPLP1 6455 MPLP2 6467 MUSERS 0034 MUSRCT 0325 MUSRPT 0036 NAME 0056 NCHK 5526 NCHKL 5664 NEW 4300 NEXT 2400 NEXT1 2442 NEXT2 2453 NEXT3 2423 NFLAG 5533 NFLGST 5524 NGT 5661 NHNDLE 5516 NHNDLL 5663 NOECHO 5107 NULL 0177 NULL1 0206 NULL2 0222 NULL3 0240 NULL4 0242 unreferenced NULL5 0217 NUM 5526 NXTGET 4104 OADD 6740 OLD 1000 OLDF0 1005 OLDF1 1047 ON 4317 ONDON 4342 ONE 5500 ONEHAF 6057 ONLP 4332 OPH 0071 OPL 0072 OPNEG 1562 OPNEGP 7061 OPNEXT 2644 OPSR 6633 OPSR1 6636 OPSR2 6647 OPTABL 5101 OPX 0070 ORG 3615 OTPACK 0744 OUT 0702 OUT2 0711 OUTTLS 0715 PACKC 4554 PACKND 0041 PAKLIN 0755 PARTSI 4540 unreferenced PARTST 5000 PC 0022 PCHK 1724 PDLST 0044 PDLXR 0015 PDP8I 0000 PDP8I1 0200 unreferenced PDP8I2 0312 unreferenced PDP8I3 0313 unreferenced PERR 1655 unreferenced PFUPAR 2772 PGS4 4614 PICKC 7542 PINPUT 0544 PIOV2 6005 POLYNL 5706 POLYSN 5425 POPA 4541 POPF 4543 POPJ 5542 POPNEG 6737 POWEXI 5077 POWF 5070 PPRNTC 0054 PREADC 0053 PREXP 7523 PRIN11 3222 PRIN12 3253 PRIN13 3246 PRIN33 3305 PRIN34 3313 PRIN41 0771 PRIN61 3340 PRIN71 3345 PRINF0 3320 PRINF1 0760 PRINL 2676 PRINL1 2705 PRINL2 2674 PRINLB 2702 PRINT 3202 PRINT2 3255 PRINT3 3264 PRINT4 3323 PRINT5 3200 PRINT6 3327 PRINT7 3342 PRINT8 3351 PRINTC 4454 PRINTX 4546 PRNT1 1133 PRNT2 1134 PRNT3 1143 PRNT4 1154 PRXP1 7540 PT1 0025 PUNCH 2275 PUNCH2 2305 PUNCH3 2307 PUSHA 4536 PUSHF 4540 PUSHJ 4537 PXDELE 0545 QINP 5206 QINP1 5222 QINP2 5234 QINP3 5241 QINP4 5261 QINP5 5265 QINP6 5220 QINPT 5243 QUAD2 5417 QUAD3 5421 QUAD4 5423 RANDOM 1770 READ 0636 READC 4453 READY 0452 READY1 3733 READY2 3736 REAEND 0647 REM 1275 RESTOR 2512 RETURN 4160 RK8E 0000 RND 5357 RND1 4070 RND2 5373 RONDUP 7554 RTF 6005 RTL6 4551 RTZRO 6421 unreferenced RUN 2464 RUN1 2472 RUN2 2477 unreferenced RUN3 2510 RUN4 2517 RUN5 2523 RUN9 2542 RUNTIM 0007 RX8E 0001 RXB1 1302 RXB2 1310 RXBERL 1276 RXBFPT 0066 RXBUF 1270 RXCODE 0750 RXCON 1246 RXCONL 1262 RXCONR 1263 RXDVLP 1332 RXERCT 1371 RXF0DW 1327 RXF0RN 1334 RXFAT 1316 RXFN 1372 RXNOIN 0221 RXR 1241 RXREC 1367 RXRERL 1323 RXRW 1320 RXTRAK 1370 RXW 1231 SAV10 2035 SAV12 2002 SAV13 1145 SAV2 1124 SAV2F1 1400 SAV5 1156 SAVAC 0025 SAVDON 1425 SAVE 1020 SAVEF1 1121 SAVENT 2000 SAVERR 2170 SAVF 0026 SAVF0 1035 SAVRES 0027 SCR 4302 SDN 6755 SER 6754 SFNEND 2032 SGN 5013 SHIFT 7256 SHLFT 6436 SIG 0077 SIGNIF 7457 SINA1 5771 SINA3 5774 SINA5 5777 SINA7 6002 SLOOP 6313 SORTC 4535 SORTCN 0075 SORTJ 4534 SPACSW 0032 SPL 6102 SQRP5 6054 SRETN 0475 SSR1 2047 SSR2 2057 SSR3 2074 START 0461 STARTV 0042 STR 6753 STSWAP 0015 SUB0 6734 unreferenced SUB1 4555 SUB1I 4613 SUB2 4610 SUB2I 4536 SUBS 0024 SUBT 4543 SWAP 0010 SWPR 3624 SWPR0 3610 SWPR1 3611 unreferenced SWPR2 3612 unreferenced SWPR3 3613 unreferenced SWPR4 3614 unreferenced SWPR5 3615 unreferenced SWPR6 3616 unreferenced SWPR7 3617 unreferenced SWPRBF 3671 SWPRL 0071 SYS 7732 SYSC70 7747 SYSCDF 7737 SYSK 7741 SYSL 7746 T1 0076 T2 0077 T3 0100 TABLE 6177 TAN 7345 TD8E 0000 TEN 7342 TERMS 2713 TESTC 4553 TESTN 4552 TEXTP 0017 THISOP 0102 TM 0062 TM1 0065 TM2 0066 TOP 7776 TOVPI 5575 TSTALP 4560 TSTCCR 4556 TSTCOM 4557 TSTEND 4567 TSTLPR 4570 TYP 0651 TYPBEL 0700 TYPCR 0673 UDF 4550 UNSAVE 1337 UNSF1 1213 USER0 3600 USER1 3601 unreferenced USER2 3602 unreferenced USER3 3603 unreferenced USER4 3604 unreferenced USER5 3605 unreferenced USER6 3606 unreferenced USER7 3607 unreferenced USERS 0001 USRM 0202 USRM2 0000 USRPT 0035 XCOM 2200 XCOMF1 2216 XCPACK 3631 XCT 0021 XCTIN 0024 XDEL2 1655 XDEL3 1636 XDELET 1600 XDR 6752 XERROR 0400 XFIELD 0033 XFIND 4122 XFIND1 4131 XFIND2 4135 XFINDL 3400 XFLGET 5144 XFLGT2 5151 XFLPT1 7604 unreferenced XFLPT2 7606 XFLPUT 7601 XFNDL1 3410 XFNDL2 3431 XFNDL3 3437 XFREE2 1307 XFREE3 1322 XFREET 1311 XGET1 4046 XGET2 4037 XGET3 4060 XGET4 4065 XGET5 4064 XGET6 4066 unreferenced XGETC 4033 XGETL1 2731 XGETL2 2433 XGETLN 7333 XOUT 0752 XPAC10 3725 XPACK1 3654 XPACK2 3651 XPACK3 3652 XPACK4 3641 XPACK5 3630 XPACK7 3661 XPACK8 3667 XPACK9 3663 XPACKC 3620 XPAKL1 2735 XPAKL2 2747 XPCF0 0772 XPCF1 0745 XPOPA 1573 XPOPF 4000 XPOPJ 4162 XPPCK1 3707 XPRNTC 0765 XPUSHA 1703 XPUSHF 1735 XPUSHJ 1716 XR1 0016 XR2 0017 XRCDIS 3756 XRCF0 3752 XRCF1 0541 XREADC 3745 XREG 0010 XREG2 0011 XRTL6 4753 XSORT1 4747 XSORT3 7650 XSORTC 7624 XSORTJ 4721 XTESTC 4236 XTESTN 4016 XUDF 0327 XUDF1 0330 ZCNT 6373 ZONE 3441