1 /FUTIL - FILE UTILITY - V07A 2 3 VERSION=07 4 PATCH="A&77 5 6 / OS/8 FILE UTILITY PROGRAM. ALLOWS EXAMINATION AND 7 / MODIFICATION OF OS/8 MASS STORAGE DEVICES FROM THE CON- 8 / SOLE. DUMPING OF BLOCKS, LISTING OF WORDS AND MODIFICA- 9 / TION OF WORDS CAN BE DONE IN 7 FORMATS: OCTAL; SIGNED AND 10 / UNSIGNED DECIMAL; UNPACKED, 6-BIT PACKED, XS240 PACKED AND 11 / OS/8 PACKED ASCII. LISTING AND DUMPING CAN ALSO BE DONE 12 / IN 5 MORE FORMATS: BCD, BYTE (OCTAL CHARACTER), 2 PSEUDO- 13 / SYMBOLIC FORMATS [PDP-8 & FPP-12/8A], AND A COMBINATION 14 / FORMAT FOR DIRECTORY DUMPING. PROGRAM USES BOTH COMMAND 15 / WORDS AND COMMAND CHARACTERS (LIKE ODT) FOR DIRECTION. 16 17 /BY: JIM CRAPUCHETTES 18 / MENLO COMPUTER ASSOCIATES, INC. 19 / (FORMERLY: FRELAN ASSOCIATES) 20 / P.O. BOX 298 21 / MENLO PARK, CALIF. 94025 22 / 23 / 24 /VERSIONS 1 THRU 4 - "XTAPE" FOR THE XSYSTEM, 25 / LAST REVISION--APRIL 1970. 26 / 27 /VERSION 5 - OS/8 OPERATION, JULY 1972 THRU JUNE 1976 28 / "(...)", "C & 'CC AS NUMBERS, IOT DECODING, LIST 29 / & DUMP FORMATS, OUTPUT TO LPT:, FILE DATE & LOC 30 / IN DIRECTORY, "WORD MEMREF...", BCD OUTPUT, 31 / ADDITIONAL ODT OUTPUTS, "BYTE" OUTPUT. 32 /VERSION 6 - EXPANSION OF OS/8 OPERATION, JUNE 1976: 33 / "FILLER" FOR "MODIFY", SEARCH LIMITS CHANGE, "WRITE" 34 / WITH AN ARGUMENT, FPP INSTRUCTION DECODING, CHAINING 35 / SUPPORT (FOR CCL CALLS), LOAD MODULE HANDLING AND 36 / "SHOW HEADER", MULTIPLE DEFAULT EXTENSIONS, ^R FOR 37 / RETYPE, SET REPLACES OPTION, NEW OUTPUT ROUTINE FOR 38 / "DIRECTORY" FORMAT, LINK OVERLAY HANDLING, ODT CHANGES, 39 / EXIT, SCAN, WRITE LOCKED OPERATION, SPEED UP SEARCHES, 40 / XS240 FORMATS 41 /VERSION 6.17 - APR 1, 1977; BATCH OPERATION, COMMENT 42 /VERSION 6.20 - MAY 16, 1977; NEW DATE, FULL FILE OUTPUT 43 / (SET/SHOW DDEV, OPEN ..., CLOSE), OPT ":" ON DEVICES. 44 /VERSION 6.21 - JUN 4, 1977; NEW INPUT ROUTINE, TEMP STORAGE 45 /VERSION 6.22 - JUL 13, 1977; CRTL-Q & -S, SCOPE MODE, 46 / IF/END COMMANDS, ALPHA DATE. 47 / 48 /PREVIOUS VERSIONS HAVE BEEN AVAILABLE THROUGH DECUS, 49 / DEC SUPPORT BEGINS WITH VERSION 7 - 20-JUL-77. 50 / SOME ROUTINES AND IDEAS USED IN THIS PROGRAM WERE 51 / DERIVED FROM EDIT-8 AND FOCAL, BY RICK MERRILL, DEC. 52 / THE ODT COMMAND SET IS NEARLY IDENTICAL TO THE OS/8 53 / ODT COMMAND SET EXCEPT THAT 15 BIT ADDRESSES ARE USED 54 / EVERYWHERE AND THERE ARE NO COMMANDS FOR PROGRAM EXECU- 55 / TION. 56 / THE DOUBLE PRECISION ARITHMETIC ROUTINES ARE A MUCH 57 / MODIFIED VERSION OF DECUS 8-115A. 58 59 60 / ASSEMBLY INFORMATION: 61 / 62 / .R PAL8 [VERSION 9] 63 / *FUTIL 1 146 000053 0000 DMODE, 0 /DUMP MODE: NONE=0,PART=1,ALL=4000 147 148 000054 0000 CBLK, 0 /= CURRENT BLOCK 149 000055 0000 0 /DUMMY FOR "SHOW ABS" 150 000056 0000 CAD, 0 /= CURRENT ADDRESS (0 -> 377)+IOBUF 151 000057 0000 BLK, 0 /= "BLOCK" 152 000060 0000 LOCH, 0 153 000061 0000 LOCL, 0 /= "LOCATION" (DISPLACEMENT) 154 000062 0000 UBLK, 0 /UPPER LIMIT FOR SEARCHES 155 000063 0001 ULOCH, 1 156 000064 7577 ULOCL, 7577 157 000065 0000 LBLK, 0 /LOWER LIMIT FOR SEARCHES 158 000066 0000 LLOCH, 0 159 000067 0200 LLOCL, 200 160 000070 0000 SBLK, 0 /"LOCATION" FOR "ODT" ROUTINES 161 000071 0000 SLOCH, 0 162 000072 0000 SLOCL, 0 163 164 000073 0000 OFFSET, 0 /OFFSET 165 000074 0000 FILLER, 0 /FILLER CONSTANT FOR "MODIFY" 166 000075 7777 MASK, -1 /MASK FOR WORD SEARCH 167 000076 7777 SMASKL, -1 /= -(LENGTH OF SMASK) 168 000077 0000 RBLK1, 0 /START BLOCK OF FILE 169 000100 7607 DEVAD, 7607 /DEVICE ENTRY ADDR (INIT TO "SYS") 170 000101 0001 DEVNO, 1 /DEVICE NUMBER (INIT TO "SYS") 171 000102 7700 USRAD, 7700 /USR ADDRESS, INITIALIZED TO OUT 172 /7700=MSGS IN; 0=NONE IN; 200=USR IN 173 174 /CONSTANTS 175 000103 7400 M400, -400 176 000104 7540 M240, -240 177 000105 7563 M215, -215 178 000106 7600 M200, -200 179 000107 7700 M100, -100 180 000110 7760 M20, -20 181 000111 7770 M10, -10 182 000112 7777 M1, -1 183 000113 0007 N7, 7 184 000114 0015 N15, 15 185 000115 0020 N20, 20 186 000116 0077 N77, 77 187 000117 0177 N177, 177 188 000120 0200 N200, 200 189 000121 0377 N377, 377 190 000122 7000 N7000, 7000 191 N7400= M400 192 193 /ADDRESSES 194 READLN= JMS I . /GET NEXT INPUT LINE, WITH 195 000123 4000 READ / SPECIAL TERMINATORS 196 000124 3605 TYPSTI, TYPSTR 197 000125 3600 TYPSI, TYPES 198 000126 5054 TYPECI, TYPEC 199 000127 1761 TWOCI, TWOCS 200 000130 5044 CRLFI, CRLF 201 DIGIT= JMS I . /OUTPUT AN ASCII DIGIT 202 000131 4161 DODIG 203 SPACE1= JMS I . /OUTPUT 1 SPACE OR ... 204 000132 2561 DO1SP 205 SPACE2= JMS I . /OUTPUT 2 SPACES 206 000133 2565 DO2SP 207 000134 5125 CTRLI, CTRL 208 000135 3621 TWOT, PACOUT 209 000136 5061 TYPEI, TYPE 210 000137 3436 DECI, DPRT 211 000140 3400 OCTI, OPRT 212 000141 3445 DEC2I, DEC2 213 000142 5000 PDATEI, PDATE 214 000143 3762 RTL6I, RTL6 215 000144 3767 RTR6I, RTR6 216 000145 5261 SOCTI, OCTSET 217 000146 3105 BKLOCI, BKLOC 218 000147 5400 EVALI, EVAL 219 220 PUSH= JMS I . /PUSH AC ON P.D.L. 221 000150 5600 PUSHX 222 POP= JMS I . /POP P.D.L. INTO AC 223 000151 5606 POPX 224 CALUSR= JMS I . /DO USR FUNCTION 225 000152 0520 USEUSR 226 TADIDP= JMS I . /"TAD I DPNT" IN FIELD 1 227 000153 2156 TIDPNT 228 TADICAD= JMS I . /"TAD I CAD" IN FIELD 1 229 000154 6170 TICAD 230 DCAICAD= JMS I . /"DCA I CAD" IN FIELD 1 231 000155 6163 DICAD 232 233 000156 3122 GWORDI, GWORD 234 000157 5272 GARGI, GARGS 235 000160 5713 ARGI, ARG 236 000161 3000 GETI, GET 237 000162 3073 ODGETI, ODGET 238 000163 5362 GETNI, GETN 239 000164 3502 SSKIPI, SSKIP 240 000165 2752 LIMITI, LIMITS 241 000166 3557 INCI, INC 242 000167 3643 SORTI, SORTJ 243 000170 4141 ENDCI, ENDC 244 000171 0203 RECRLF, MAIN1-1 245 000172 0204 RESTAR, MAIN1 246 247 ERROR= JMS I . 248 000173 0454 XERROR 249 250 000174 5712 COMST, COMB-1 251 000175 6305 TEMPST, TEMPL-1 252 000176 5610 MASKBS, SMASKB-1 253 254 255 PAGE 256 /PROGRAM MAIN LOOP AND DRIVER. COLLECTS CHARACTERS 257 /INTO COMMAND BUFFER UNTIL END IS REACHED. 258 259 000200 3102 DCA USRAD /CLEAR ON RESTART (NOTHING IN)! 260 000201 6046 TLS /RAISE TELETYPE FLAG 261 000202 3047 DCA SHUT /NOTHING IS OPEN 262 000203 4530 JMS I CRLFI /OUTPUT CR-LF. 263 000204 4545 MAIN1, JMS I SOCTI /SET INPUT TO OCTAL; EXEC 'COMMENT' 264 000205 3052 DCA DSWIT /RESET DUMP OUTPUT SWITCH 265 000206 1174 TAD COMST /INIT COMMAND BUFFER. 266 000207 3015 DCA COMIR 267 000210 1377 TAD (PDLB+1 /INIT PUSH-DOWN-LIST 268 000211 3007 DCA PDLPT 269 000212 4523 MAIN2, READLN /GET A LINE FROM INPUT. 270 000213 4472 CCHARL-1 /CR LF ; ! / ALT- 271 000214 0050 COPSL-CCHARL / MODES ETC... 272 000215 5204 JMP MAIN1 /BUFFER WAS EMPTIED. 273 274 275 /ROUTINE TO HANDLE CARRIAGE RETURN. 276 000216 4570 CRCR, JMS I ENDCI /PUT A CR IN BUFFER 277 000217 5235 JMP CRCRC /ONLY A CR IN BUFFER 278 000220 4556 JMS I GWORDI /GET COMMAND WORD 279 000221 5234 JMP CRCRN /BUFFER BEGINS WITH A # 280 000222 2046 ISZ CRSWT /WORD ENDED BY A CR? 281 000223 5230 JMP CRCR1 /YES, ONLY A FEW ARE OK 282 000224 4567 JMS I SORTI /NO, LOOK UP COMMAND 283 000225 4602 CWORDL-1 284 000226 0031 WOPSL-CWORDL 285 000227 4573 ERCB, ERROR /NOT A LEGAL COMMAND 286 / 287 000230 4567 CRCR1, JMS I SORTI /"WRITE","REWIND","EXIT" & "COMMENT" 288 000231 4663 CWORL2-1 289 000232 0010 WOPSLL-CWORL2 290 000233 4573 ERCA, ERROR /SOMETHING NOT LEGAL 291 / 292 000234 4361 CRCRN, JMS CLOSE /CLOSE THE OPEN LOCATION IF OPEN 293 000235 3047 CRCRC, DCA SHUT / MARK LOCATION CLOSED 294 000236 5204 JMP MAIN1 295 296 /ROUTINE TO HANDLE SLASH 297 000237 4570 SLASH, JMS I ENDCI /END BUFFER WITH A CR 298 000240 5244 JMP SLA1 /OPEN LAST, CR ONLY 299 000241 4776 JMS WCHEK /DOES LINE START W. A WORD? 300 000242 4565 JMS I LIMITI /NO, GET ARG-- 301 000243 0070 SBLK / & SLOCH & SLOCL 302 000244 4532 SLA1, SPACE1 /OUTPUT SPACE 303 000245 4775 SLO1, JMS ODTOUT /GET THE WORD & OUTPUT 304 000246 4532 SLO2, SPACE1 /FOLLOWED BY 2 SPACES 305 000247 4532 SPACE1 /(FOR ";"--OUTPUT ONLY 1 SPACE AND 306 000250 4562 JMS I ODGETI / THEN FORCE ACTION & IGNORE VALUE) 307 000251 7240 STA 308 000252 5235 JMP CRCRC /GO MARK LOCATION OPEN 309 310 /ROUTINE TO HANDLE ALT MODE & ESCAPE KEYS 311 000253 1043 ALTMOD, TAD OUTPNT /USE OUTPUT ROUTINE 'SET' BY 312 000254 5261 JMP ALTM1 / 'FORMAT' OPTION. 313 314 /ROUTINE TO CLOSE A LOCATION, OUTPUT ITS (NEW) CONTENTS IN A 315 / SPECIFIED FORMAT AND THEN RE-OPEN. THE ROUTINE HANDLES: 316 / # (BCD), $ (OS/8 ASCII), % (BYTE OCTAL), & (XS240 ASCII), 317 / : (SIGNED DECIMAL), < (OCTAL), = (UNSIGNED DECIMAL), 318 / > (PDP SYMBOLIC), @ (DATE), [ (ASCII), \ (FPP SYMBOLIC), 319 / ] (PACKED ASCII) AND ? (DIRECTORY). 320 / 321 000255 1012 OMODES, TAD SCANX1 /'SORTJ' POINTER TO CHAR LIST 322 000256 1374 TAD (OTABLE-1-CCHARL 323 000257 3010 DCA DPNT /POINT INTO ADDR TABLE, 324 000260 4553 TADIDP / GET OUTPUT ROUTINE ADDR, 325 000261 3270 ALTM1, DCA OMODPT / & SET POINTER TO ROUTINE. 326 000262 4353 JMS ECLOSE /CLOSE THIS LOCATION 327 000263 4532 SPACE1 /OUTPUT SPACE 328 000264 3045 DCA CHARSW /RESET UNPACK SWITCH 329 000265 4562 JMS I ODGETI /GET WORD 330 000266 4670 JMS I OMODPT /OUTPUT IN DESIRED FORMAT 331 000267 5246 JMP SLO2 /AND GO REOPEN. 332 000270 0000 OMODPT, 0 333 334 /ROUTINE TO HANDLE BACKARROW. 335 000271 4353 BACKAR, JMS ECLOSE /CLOSE THIS LOCATION 336 000272 4554 TADICAD /GET THE CONTENTS, 337 000273 5306 JMP UPARR1 /AND USE THEM AS THE ADDR 338 339 /ROUTINE TO HANDLE UPARROW. 340 000274 4353 UPARR, JMS ECLOSE /CLOSE THIS LOCATION 341 000275 4554 TADICAD /IS THIS A 'PAGE 0' REF.? 342 000276 0120 AND N200 343 000277 7640 SZA CLA 344 000300 1072 TAD SLOCL /YES, USE PAGE BITS 345 000301 0106 AND M200 / MASK PAGE OR 0 TO PAGE # 346 000302 3072 DCA SLOCL / & SAVE IT 347 000303 4554 TADICAD /GET THE CONTENTS, 348 000304 0117 AND N177 /AND USE THE ADDRESS BITS. 349 000305 1072 TAD SLOCL / ALONG WITH PAGE BITS 350 000306 3072 UPARR1, DCA SLOCL /THIS IS 12 BIT ADDR 351 000307 5336 JMP EXCL2 /NOW GO FINISH 352 /ROUTINE TO HANDLE SEMICOLON, LINE FEED & EXCLAMATION. 353 354 000310 3523 SEMIC, DCA I READLN-4400 /SET NO-OUTPUT SWITCH 355 000311 7240 LFLF, STA /LINE-FEED - CLOSE,INCREMENT,OUTPUT 356 000312 3270 EXCL, DCA OMODPT /EXCLAMATION - CLOSE,DECREMENT,OUTPUT 357 000313 4353 JMS ECLOSE /CLOSE THIS LOCATION 358 000314 7001 IAC 359 000315 3025 DCA ACC1 /SET UP D.P. INCREMENT 360 000316 3026 DCA ACC2 361 000317 3001 EXCL1, DCA DPSGN /(FOR SAFETY) 362 000320 2270 ISZ OMODPT /INCREMENT OR DECREMENT? 363 000321 4773 JMS DPNEG / DECREMENT, NEGATE VALUE 364 000322 7100 CLL 365 000323 1025 TAD ACC1 366 000324 1072 TAD SLOCL /UPDATE LOCATION TO 15 BITS 367 000325 3072 DCA SLOCL 368 000326 7004 RAL 369 000327 1026 TAD ACC2 370 000330 1071 TAD SLOCH 371 000331 0113 AND N7 / (BUT ONLY 15 BITS) 372 000332 3071 DCA SLOCH 373 000333 1523 TAD I READLN-4400 / ANY OUTPUT? 374 000334 7650 SNA CLA 375 000335 5247 JMP SLO2+1 / NO, WAS ";" DO ONE SPACE 376 000336 4530 EXCL2, JMS I CRLFI /GIVE CR/LF FOR NEXT LINE 377 000337 4546 JMS I BKLOCI /OUTPUT ADDRESS 378 000340 0067 SBLK-1 379 000341 4527 JMS I TWOCI /OUTPUT "\ " 380 000342 3440 3440 381 000343 5245 JMP SLO1 /NOW GO OPEN NEXT LOCATION 382 383 /ROUTINE TO HANDLE PLUS & MINUS. 384 000344 7240 PLUS, STA /"+", SET SWITCH 385 000345 3270 MINUS, DCA OMODPT /"-", CLEAR SWITCH 386 000346 4570 JMS I ENDCI /END BUFFER, TEST 387 000347 5336 JMP EXCL2 /NO ARG, DO SAME AGAIN 388 000350 4776 JMS WCHEK /LINE START WITH A COMMAND? 389 000351 4560 JMS I ARGI /NO, GET AN ARG 390 000352 5317 JMP EXCL1 /UPDATE LOC & GO OPEN 391 392 393 000353 0000 ECLOSE, 0 /SUB. TO CLOSE THE LOCATION IF ARG. 394 000354 4570 JMS I ENDCI /END BUFFER WITH A CR. 395 000355 5753 JMP I ECLOSE /ONLY A CR IN BUFFER, DONE 396 000356 4776 JMS WCHEK /DOES LINE START W. A WORD? 397 000357 4361 JMS CLOSE /ARG IN BUFFER, USE IT 398 000360 5753 JMP I ECLOSE /DONE 399 400 000361 0000 CLOSE, 0 /SUBROUTINE TO CLOSE A LOCATION 401 000362 4560 JMS I ARGI /GET ONE ARG 402 000363 2047 ISZ SHUT /ANYTHING OPEN? 403 000364 5761 JMP I CLOSE /NO, RETURN 404 000365 4562 JMS I ODGETI /YES, SET UP THINGS RIGHT 405 000366 7240 STA 406 000367 3050 DCA MODIF /SET MODIFY FLAG 407 000370 1025 TAD ACC1 /USE "LOC" AS DATA 408 000371 4555 DCAICAD /STORE IT 409 000372 5761 JMP I CLOSE 410 411 412 000373 6141 PAGE 000374 0032 000375 4200 000376 6200 000377 6130 413 /ROUTINE TO 'EVALUATE' A SIGNED DOUBLE PRECISION ARITHMETIC 414 / EXPRESSION & OUTPUT THE RESULTS IN OCTAL & D.P. SIGNED 415 / DECIMAL. 416 000400 4547 XVAL, JMS I EVALI /GO EVALUATE 417 000401 7410 SKP /TERMINATED BY A CR 418 000402 4573 ERCC, ERROR / SORRY!--TOO MANY ")"S 419 000403 4527 JMS I TWOCI /"= " 420 000404 7540 7540 421 000405 1026 TAD ACC2 422 000406 4540 JMS I OCTI /OUTPUT HIGH ORDER IN OCTAL 423 000407 1025 TAD ACC1 424 000410 4540 JMS I OCTI /OUTPUT LOW ORDER IN OCTAL 425 000411 1027 TAD ACCX1 /SAVE REMAINDER FOR LATER 426 000412 3015 DCA COMIR 427 000413 1030 TAD ACCX2 428 000414 3016 DCA COMOUT 429 000415 1377 TAD (-7 430 000416 3254 DCA XERROR /MUST DEVELOP 7 DIGITS 431 000417 4527 JMS I TWOCI /OUTPUT " (" 432 000420 4050 4050 433 000421 1026 TAD ACC2 /IS DPAC NEG? 434 000422 7700 SMA CLA 435 000423 5226 JMP DLOOP1-1 /NO, OUTPUT " " 436 000424 4776 JMS DPNEG /YES, MAKE IT POSITIVE 437 000425 1114 TAD N15 / AND OUTPUT "-". 438 000426 4532 SPACE1 439 000427 1375 DLOOP1, TAD (12 /RESET DIVISOR TO 10(10) 440 000430 3031 DCA OPER1 441 000431 3032 DCA OPER2 442 000432 4774 JMS DDIV /GO DIVIDE DPAC BY 10(10) 443 000433 1027 TAD ACCX1 / GET REMAINDER 444 000434 4550 PUSH /PUT IT ON PUSH-DOWN-LIST 445 000435 2254 ISZ XERROR /DONE YET? 446 000436 5227 JMP DLOOP1 447 000437 1016 TAD COMOUT /YES, RESTORE REMAINDER 448 000440 3030 DCA ACCX2 449 000441 1015 TAD COMIR 450 000442 3027 DCA ACCX1 451 000443 1377 TAD (-7 452 000444 3254 DCA XERROR /NOW SET UP TO OUTPUT 7 DIGITS 453 000445 4551 DLOOP2, POP / IN REVERSE ORDER! 454 000446 4531 DIGIT /MAKE REMAIN A DIGIT 455 000447 2254 ISZ XERROR /DONE? 456 000450 5245 JMP DLOOP2 457 000451 4526 JMS I TYPECI /YES, OUTPUT ")" 458 000452 0251 ") 459 000453 5571 JMP I RECRLF / AND CR/LF 460 461 462 /ERROR ROUTINE 463 000454 0000 XERROR, 0 464 000455 7200 CLA /CLEAR POSSIBLE JUNK FROM AC 465 000456 3052 DCA DSWIT /RESET IN CASE DUMP MODE 466 000457 6201 CDF 0 467 000460 4526 JMS I TYPECI /OUTPUT "?" 468 000461 0277 "? 469 000462 1373 TAD (ERLIST-1 /INIT LIST POINTER 470 000463 3010 DCA DPNT 471 000464 3021 DCA TEMP /SET CODE TO 0 472 000465 2021 XERR1, ISZ TEMP /BUMP ERROR CODE 473 000466 4553 TADIDP /GET AN ADDRESS 474 000467 7450 SNA 475 000470 5275 JMP XERR2 /(FOR DEBUGGING) 476 000471 7040 CMA /= -(ADDR+1) 477 000472 1254 TAD XERROR /DOES IT MATCH THE CALL? 478 000473 7640 SZA CLA 479 000474 5265 JMP XERR1 /NO 480 000475 1021 XERR2, TAD TEMP /YES, OUTPUT ERROR CODE 481 000476 4541 JMS I DEC2I / AS 2 DECIMAL DIGITS 482 000477 4525 JMS I TYPSI /NOW OUTPUT " AT " 483 000500 4310 MS17 484 000501 1372 TAD (-COMB+1 /CALCULATE POSITION IN 485 000502 1016 TAD COMOUT / COMMAND BUFFER, 486 000503 4541 JMS I DEC2I / & OUTPUT AS 2 DIGITS. 487 000504 1020 TAD ERMODE /LONG/SHORT MESSAGES? [NOTE: THIS -> 488 000505 7640 XERR3, SZA CLA / "7600" (A CLA) IF 'USROUT' ERROR!] 489 000506 5315 JMP XERR4 /SHORT, GO DO CR/LF 490 000507 4344 JMS USROUT /LONG, BE SURE MESSAGES ARE IN 491 000510 4533 SPACE2 /OUTPUT 2 SPACES 492 000511 1021 TAD TEMP /CODE = ADDRESS-1 OF ADDRESS 493 000512 3010 DCA DPNT / OF MESSAGE 494 000513 4553 TADIDP /GET MESSAGE ADDR 495 000514 4524 JMS I TYPSTI / OUTPUT MESSAGE 496 000515 4530 XERR4, JMS I CRLFI /OUTPUT A CR,LF PAIR 497 000516 5717 JMP I .+1 /*** CIF BAT /BATCH OPER. 498 000517 0204 MAIN1 /*** JMP I N7000 /'BATABT'! 499 500 501 000520 0000 USEUSR, 0 /USR CALLER SUBROUTINE (FROM EITHER FIELD!) 502 000521 3344 DCA USRSAV /SAVE CONTENTS OF AC 503 000522 6214 RDF 504 000523 1325 TAD UCDF0 /SET UP RETURN FIELD (FOR 2ND USR CALL) 505 000524 3341 DCA USRCDF 506 000525 6201 UCDF0, CDF 0 /SET TO HERE FOR 1ST CALL 507 000526 1102 TAD USRAD /IS USR IN OR OUT? 508 000527 7740 SMA SZA CLA 509 000530 5336 JMP USRIN /IN, GO TO IT 510 000531 6212 CIF 10 511 000532 4507 JMS I M100 /OUT, DO "USRIN" FUNCTION 512 000533 0010 10 513 000534 1120 TAD N200 514 000535 3102 DCA USRAD / & SO INDICATE 515 000536 6213 USRIN, CDF CIF 10 516 000537 1320 TAD USEUSR /MOVE RETURN ADDRESS TO THE 517 000540 3520 DCA I N200 / USR ENTRY POINT 518 000541 6201 USRCDF, CDF /SET UP D.F. FOR RETURN 519 000542 1344 TAD USRSAV /RESTORE AC CONTENTS 520 000543 5771 JMP I (201 / & FAKE A CALL TO IT 521 USRSAV, 522 523 000544 0000 USROUT, 0 /SUBROUTINE TO REMOVE USR BY RECALLING 524 000545 1102 ERC15, TAD USRAD / ERROR MESSAGES FROM SCRATCH 525 000546 7710 SPA CLA / BLOCKS ON SYS. 526 000547 5744 JMP I USROUT /JUST EXIT IF PRESENT... 527 000550 1107 TAD M100 528 000551 3102 DCA USRAD /SET USR TO "OUT" 529 000552 4770 JMS I (7607 /READ IN THE MESSAGES 530 000553 0610 610 / 6 PAGES TO FIELD 1 531 000554 0000 0 / STARTING AT LOC 10000 532 000555 0027 27 / FROM SCRATCH BLKS 533 000556 7610 SKP CLA /!!! ERROR !!! 534 000557 5744 JMP I USROUT /OK, JUST EXIT 535 000560 1106 TAD M200 536 000561 3305 DCA XERR3 /NO MORE MESSAGES ON ERROR! 537 000562 1364 TAD ERC16 538 000563 3345 DCA ERC15 /AND NO MORE "SHOW ERROR"! 539 000564 4573 ERC16, ERROR /TELL THE HORRIBLE STORY! 540 541 542 000570 7607 PAGE 000571 0201 000572 2066 000573 5530 000574 6040 000575 0012 000576 6141 000577 7771 543 /ROUTINE TO EXECUTE THE BLOCK 'SCAN' COMMAND 544 000600 4557 XSCAN, JMS I GARGI /GET ARGS CONVERTED 545 000601 1377 TAD (SCANER / & SET UP FOR SCANNING 546 000602 5210 JMP XDUM0 547 548 /ROUTINE TO EXECUTE THE BLOCK 'DUMP' COMMAND 549 000603 1044 XDUMP, TAD MODSW /MAPPED MODE? 550 000604 7740 SMA SZA CLA 551 000605 4573 ERC14, ERROR /YES, DUMP IS MEANINGLESS! 552 000606 4247 JMS XDLCOM /DO COMMON STUFF 553 000607 1376 TAD (LLIST / & SET UP FOR DUMPING 554 000610 3327 XDUM0, DCA XGFORM /SET OUTPUT ROUTINE--DUMP/SCAN 555 000611 2010 XDUM1, ISZ DPNT /SKIP FIRST WORD 556 000612 2010 ISZ DPNT /SKIP A WORD 557 000613 1410 TAD I DPNT /GET NEXT START BLOCK. 558 000614 4775 JMS BLKTST 559 000615 1410 TAD I DPNT /GET NEXT -(# BLOCKS) 560 000616 3022 DCA TEMP1 561 000617 4534 XDUM2, JMS I CTRLI /TEST HERE FOR 'SCAN' TERMINATE 562 000620 3061 DCA LOCL /SET LOC TO 0 563 000621 3060 DCA LOCH 564 000622 1103 TAD M400 /SET TO -400(8) [1 BLOCK] 565 000623 4727 JMS I XGFORM /DUMP OR SCAN A BLOCK 566 000624 2057 ISZ BLK /INCREMENT BLOCK NUMBER 567 000625 2022 ISZ TEMP1 /DONE? 568 000626 5217 JMP XDUM2 /NO, DO NEXT BLOCK 569 000627 2021 ISZ TEMP /YES, ARE ALL ARGS DONE? 570 000630 5211 JMP XDUM1 /NO, DO NEXT 571 000631 5245 JMP XLIS2 /YES, DONE--RESET SWITCH 572 573 /ROUTINE TO EXECUTE THE LOCATION 'LIST' COMMAND 574 000632 4247 XLIST0, JMS XDLCOM /DO COMMON STUFF 575 000633 1410 XLIS1, TAD I DPNT /GET BLOCK # 576 000634 4775 JMS BLKTST /TEST & SET BLK 577 000635 1410 TAD I DPNT /GET & SET LOCATION 578 000636 3060 DCA LOCH 579 000637 1410 TAD I DPNT 580 000640 3061 DCA LOCL 581 000641 1410 TAD I DPNT /GET -(# WORDS) 582 000642 4261 JMS LLIST /NOW GO DO IT 583 000643 2021 ISZ TEMP /ARE ALL ARGS USED? 584 000644 5233 JMP XLIS1 /NO, CONTINUE 585 000645 3052 XLIS2, DCA DSWIT /RESET DUMP SWITCH 586 000646 5571 JMP I RECRLF / DO CR/LF & CONTINUE 587 588 /COMMON SUBROUTINE FOR 'XDUMP'&'XLIST0' 589 000647 0000 XDLCOM, 0 590 000650 1043 TAD OUTPNT /INITIALIZE DEFAULTS 591 000651 3325 DCA LISTPT 592 000652 1365 TAD OUTSW 593 000653 3326 DCA LOUTSW 594 000654 4327 JMS XGFORM /GET FORMAT, IF ANY 595 000655 7000 NOP /RETURN FOR NO FORMAT 596 000656 4557 JMS I GARGI /GET ARGS 597 000657 2052 ISZ DSWIT /SET DUMP SWITCH 598 000660 5647 JMP I XDLCOM 599 600 /SUBROUTINE TO OUTPUT -[C(AC)] WORDS FROM THE DEVICE 601 /BEGINNING AT BLK.LOC IN THE SPECIFIED FORMAT 602 000661 0000 LLIST, 0 603 000662 3040 DCA CNTRA /SET UP -# WORDS TO LIST 604 000663 3045 DCA CHARSW /RESET UNPACK SWITCH 605 000664 4530 LLIS1, JMS I CRLFI 606 000665 1061 TAD LOCL 607 000666 0113 AND N7 /SET UP # ON THIS LINE 608 000667 3037 DCA CNTR 609 000670 1326 TAD LOUTSW /IF CHARACTER OUTPUT, 610 000671 7650 SNA CLA 611 000672 1111 TAD M10 / DOUBLE # WORDS/LINE 612 000673 1037 TAD CNTR 613 000674 1111 TAD M10 614 000675 3037 DCA CNTR 615 000676 4546 JMS I BKLOCI /OUTPUT LOCATION 616 000677 0056 BLK-1 617 000700 4525 JMS I TYPSI /OUTPUT ": " 618 000701 4264 MS13 619 000702 4561 LLIS2, JMS I GETI /GET A WORD 620 000703 5312 JMP LLIS3 /FILE MODE, NO SUCH ADDR.. 621 000704 4725 JMS I LISTPT /OUTPUT IT 622 000705 1326 TAD LOUTSW /TEST MODE SWITCH 623 000706 7510 SPA 624 000707 5322 JMP LLIS5 /"SYMBOLIC", CR/LF NOW 625 000710 7640 SZA CLA /CHARACTERS, NO SPACES 626 000711 4533 SPACE2 /NUMBERS, TWO SPACES 627 000712 4566 LLIS3, JMS I INCI /INCREMENT LOC 628 000713 2040 ISZ CNTRA /ALL WORDS DONE? 629 000714 5317 JMP LLIS4 /NO 630 000715 4530 JMS I CRLFI 631 000716 5661 JMP I LLIST /YES, RETURN 632 / 633 000717 2037 LLIS4, ISZ CNTR /ALL DONE WITH THIS LINE? 634 000720 5302 JMP LLIS2 /NOT YET 635 000721 5264 JMP LLIS1 /YES, OUTPUT CR/LF & CONTINUE 636 / 637 000722 7240 LLIS5, STA 638 000723 3037 DCA CNTR /FORCE A CR/LF 639 000724 5312 JMP LLIS3 640 000725 0000 LISTPT, 0 641 000726 0000 LOUTSW, 0 642 643 644 /SUBROUTINE TO GET A FORMAT FOR 'XFORM' & 'XDLCOM' 645 000727 0000 XGFORM, 0 646 000730 4556 JMS I GWORDI /GET A WORD 647 000731 5727 JMP I XGFORM /NOT FOLLOWED BY A WORD 648 000732 4567 JMS I SORTI /LOOK UP WORD 649 000733 4702 FORML-1 650 000734 0031 FOPSL-FORML 651 000735 4573 ERCD, ERROR /WORD NOT RECOGNIZED 652 / 653 000736 7130 XFSYM, STL RAR /"SYMBOLIC"; SWITCH NEG 654 000737 7001 XFNUM, IAC /NUMERIC; SWITCH POS 655 000740 3326 XFCHR, DCA LOUTSW /CHARACTER; SWITCH 0 656 000741 1012 TAD SCANX1 /'SORTJ' POINTER TO CHAR 657 000742 1374 TAD (-FORML /CALCULATE FORMAT # 658 000743 7110 CLL RAR /(DIVIDE BY 2) 659 000744 3022 DCA TEMP1 / & SAVE IT. 660 000745 1022 TAD TEMP1 661 000746 1373 TAD (FTABLE-1 662 000747 3010 DCA DPNT 663 000750 4553 TADIDP 664 000751 3325 DCA LISTPT /SET UP OUTPUT POINTER 665 000752 2327 ISZ XGFORM /BUMP RETURN ADDRESS 666 000753 5727 JMP I XGFORM 667 668 /ROUTINE TO 'SET' THE 'FORMAT' OPTION 669 000754 4327 XFORM, JMS XGFORM /GET FORMAT WORD 670 000755 4573 ERCE, ERROR /NUMBER?! SORRY ABOUT THAT! 671 000756 1326 TAD LOUTSW /OK, SET UP DEFAULTS: 672 000757 3365 DCA OUTSW / SWITCH, 673 000760 1325 TAD LISTPT 674 000761 3043 DCA OUTPNT / ROUTINE POINTER, 675 000762 1022 TAD TEMP1 676 000763 3042 DCA FCNT / & FORMAT # 677 000764 5772 JMP XSETN 678 000765 0000 OUTSW, 0 /MODE:0=NOTHING,+=SPACES,-=CR/LF 679 680 681 000772 1600 PAGE 000773 4763 000774 3075 000775 6154 000776 0661 000777 5744 682 /ROUTINE TO EXECUTE THE 'OPEN' COMMAND. 683 001000 7240 XOPEN, STA /"." LEGAL IN FILE NAME 684 001001 4777 JMS GNAME /GET FILE NAME FOR OUTPUT 685 001002 6212 CIF 10 686 001003 5776 JMP XOPEN1 /NOW GO TO FIELD 1 TO HANDLE 687 688 689 /ROUTINE TO EXECUTE THE 'CLOSE' COMMAND. 690 001004 6213 XCLOSE, CDF CIF 10 691 001005 5775 JMP XCLOS1 /ALL CODE IS IN FIELD 1 692 693 694 /ROUTINE TO EXECUTE THE 'FILE' COMMAND. 695 001006 1022 XFIERR, TAD TEMP1 /MADE ALL POSSIBLE ATTEMPTS 696 001007 7700 SMA CLA / AT EXTENSION RETRIES? 697 001010 5216 JMP XFIOUT / YES, ALL TRIES DONE! 698 001011 2001 ISZ DPSGN /THIS WILL SKIP ON 1ST FAIL 699 001012 2022 ISZ TEMP1 /THIS WILL SKIP ON 2ND FAIL 700 001013 1374 TAD (1404 / 2ND TRY--USE "LD" EXTEN 701 001014 3030 DCA NAM4 / 3RD TRY--USE NULL EXTEN 702 001015 5230 JMP XFICHN+2 / 3RD TRY IS FINAL FAILURE 703 / 704 001016 4773 XFIOUT, JMS PNAME /OUTPUT FILE NAME & 705 001017 4525 JMS I TYPSI /"LOOKUP FAILED" 706 001020 4277 MS15 707 / 708 001021 4530 XFILEN, JMS I CRLFI /OUTPUT CR/LF 709 001022 2046 ISZ CRSWT /WAS LAST ENDED BY A CR? 710 001023 5572 JMP I RESTAR /YES, DONE 711 001024 7240 XFILE, STA /"." LEGAL IN FILE NAME 712 001025 4777 JMS GNAME /GET NEXT FILE NAME 713 001026 7240 XFICHN, STA 714 001027 3001 DCA DPSGN /SET TRY AGAIN SWITCH 715 001030 1372 TAD (NAM1 /INIT POINTER TO NAME 716 001031 3235 DCA FSTBLK 717 001032 1101 TAD DEVNO /GET DEVICE # 718 001033 4552 CALUSR 719 001034 0002 2 /LOOKUP 720 001035 0000 FSTBLK, 0 /NAME PNTR, BECOMES ST BLK 721 001036 0000 FBKLEN, 0 / BECOMES -(FILE LENGTH) 722 001037 5206 JMP XFIERR /LOOKUP FAILED 723 001040 1235 TAD FSTBLK 724 001041 3077 DCA RBLK1 /SET UP PAGE 0 ST BLK 725 001042 6211 CDF 10 726 001043 3771 DCA I (CCBB / & RESET CCBB 727 001044 1774 TAD I (1404 /GET # ADD'L INFO WORDS 728 001045 3354 DCA GDEV2 / (NEGATIVE) & SAVE IT 729 001046 1354 TAD GDEV2 730 001047 1770 TAD I (17 /POINT TO FIRST OF THEM 731 001050 3355 DCA GDEV3 / (THE DATE, IF PRESENT) 732 001051 1513 TAD I N7 /GET THE NUMBER OF THE 733 001052 0113 AND N7 / DIRECTORY SEGMENT IN 734 001053 3037 DCA CNTR / CORE & SAVE IT. 735 001054 1354 TAD GDEV2 /WAS # OF ADD'L WRDS = 0? 736 001055 7640 SZA CLA 737 001056 1755 TAD I GDEV3 / NO, GET THE DATE WORD 738 001057 6201 CDF 0 739 001060 3353 DCA GDEV1 /STORE DATE OR 0 (NO DATE) 740 001061 4773 JMS PNAME /OUTPUT FILE NAME 741 001062 1235 TAD FSTBLK 742 001063 4540 JMS I OCTI /OUTPUT ST. BLK. IN OCTAL 743 001064 4526 JMS I TYPECI 744 001065 0255 "- 745 001066 1236 TAD FBKLEN /CALCULATE LAST BLK # 746 001067 7040 CMA 747 001070 1235 TAD FSTBLK 748 001071 4540 JMS I OCTI / & OUTPUT IN OCTAL 749 001072 4533 SPACE2 /OUTPUT 2 SPACES 750 001073 1236 TAD FBKLEN 751 001074 7041 CIA 752 001075 4540 JMS I OCTI /OUTPUT LENGTH IN OCTAL 753 001076 4527 JMS I TWOCI /" (" 754 001077 4050 4050 755 001100 1236 TAD FBKLEN 756 001101 7041 CIA 757 001102 4537 JMS I DECI / & AGAIN IN DECIMAL 758 001103 4525 JMS I TYPSI /") " 759 001104 4403 MS33 760 001105 1037 TAD CNTR /GET SEGMENT # 761 001106 4543 JMS I RTL6I / & PUT IN BITS 3-5 762 001107 4527 JMS I TWOCI / TO OUTPUT IT & "." 763 001110 6056 6056 764 001111 1355 TAD GDEV3 /GET ADDR OF 1ST ADD'L WRD 765 001112 1367 TAD (-1400-4 / FOR OFFSET OF NAME START 766 001113 4766 JMS OCT3 /OUTPUT LOCATION IN SEG 767 001114 4533 SPACE2 / & TWO SPACES 768 001115 1353 TAD GDEV1 /GET DATE WORD 769 001116 7440 SZA /IS IT = 0? 770 001117 4542 JMS I PDATEI /NO, OUTPUT DATE 771 001120 5221 JMP XFILEN /NOW OUTPUT CR/LF & CONTINUE 772 773 774 /ROUTINE TO 'SET' THE 'DEVICE' OPTION 775 001121 4340 XDEV, JMS GDEVICE /GET & FETCH DEVICE HANDLER 776 001122 7201 DEVHAN+1 / (2 PAGE HANDLER IS OK) 777 001123 3100 DCA DEVAD /SET UP HANDLER ADDRESS 778 001124 1354 TAD GDEV2 /SAVE DEVICE # 779 001125 3101 DCA DEVNO 780 001126 3077 DCA RBLK1 / & NO FILE KNOWN 781 001127 3047 DCA SHUT / & NOTHING OPENED 782 001130 3050 DCA MODIF / & NOTHING MODIFIED 783 001131 1025 TAD NAM1 784 001132 6212 CIF 10 785 001133 5765 JMP XDEVM /GO FINISH SETUP IN FIELD 1 786 787 788 /ROUTINE TO 'SET' THE 'DDEV' OPTION 789 001134 4340 XDDEV, JMS GDEVICE /GET & FETCH DEVICE HANDLER 790 001135 6601 DMPHAN+1 / (2 PAGE HANDLER IS OK) 791 001136 6212 CIF 10 792 001137 5764 JMP XDDEV1 /GO TO FIELD 1 TO FINISH SETUP 793 794 001140 0000 GDEVICE,0 /SUBROUTINE TO GET DEVICE NAME & FETCH HANDLER 795 001141 4777 JMS GNAME /GET DEV NAME ("." ILLEGAL) 796 001142 1025 TAD NAM1 /MOVE NAME TO CALL 797 001143 3353 DCA GDEV1 798 001144 1026 TAD NAM2 799 001145 3354 DCA GDEV2 800 001146 1740 TAD I GDEVICE /GET HANDLER SPACE ADDRESS 801 001147 2340 ISZ GDEVICE 802 001150 3355 DCA GDEV3 803 001151 4552 CALUSR 804 001152 0001 1 /FETCH HANDLER 805 001153 0000 GDEV1, 0 806 001154 0000 GDEV2, 0 807 001155 0000 GDEV3, 0 808 001156 4573 ERCY, ERROR /NO SUCH HANDLER 809 001157 1355 TAD GDEV3 /RETURN HANDLER ADDRESS 810 001160 5740 JMP I GDEVICE 811 812 813 001164 2200 PAGE 001165 2467 001166 3407 001167 6374 001170 0017 001171 6400 001172 0025 001173 2731 001174 1404 001175 2272 001176 2222 001177 3676 814 /ROUTINE TO EXECUTE THE 'SHOW' COMMAND 815 001200 4525 XSHBLK, JMS I TYPSI /"BLOCK = " 816 001201 4376 MS32 817 001202 1077 TAD RBLK1 /OUTPUT BLOCK IN OCTAL 818 001203 4540 XSTYPE, JMS I OCTI 819 001204 4530 XSHCR, JMS I CRLFI /GIVE A CR & LF 820 001205 3052 DCA DSWIT /BE SURE SWITCH IS RESET 821 001206 2046 ISZ CRSWT /LAST WORD ENDED BY CR? 822 001207 5572 JMP I RESTAR /YES, DONE 823 001210 4556 XSHOW, JMS I GWORDI /GET A WORD 824 001211 5215 JMP ERCG /NUMBERS NOT RECOGNIZED 825 001212 4567 JMS I SORTI /LOOK IT UP 826 001213 5073 SHOWL-1 827 001214 0037 SHOWOP-SHOWL 828 001215 4573 ERCG, ERROR /NOT FOLLOWED BY LEGAL WORD 829 830 001216 4525 XSHVER, JMS I TYPSI /"VERSION = " 831 001217 2512 MSVER 832 001220 5204 JMP XSHCR 833 834 001221 4525 XSHMSK, JMS I TYPSI /"MASK = " 835 001222 4204 MS02 836 001223 1075 TAD MASK 837 001224 5203 JMP XSTYPE 838 839 001225 4525 XSHOFF, JMS I TYPSI /"OFFSET = " 840 001226 4242 MS09 841 001227 1073 TAD OFFSET 842 001230 7041 CIA 843 001231 5203 JMP XSTYPE 844 845 001232 4525 XSHFIL, JMS I TYPSI /"FILLER = " 846 001233 4415 MS37 847 001234 1074 TAD FILLER 848 001235 5203 JMP XSTYPE 849 850 001236 4525 XSHODL, JMS I TYPSI /"ODT LOC = " 851 001237 4256 MS12 852 001240 4546 JMS I BKLOCI /OUTPUT IT 853 001241 0067 SBLK-1 854 001242 5257 JMP XSHBKS 855 856 001243 4525 XSHREL, JMS I TYPSI /"REL. LOC = " 857 001244 4324 MS20 858 001245 4546 JMS I BKLOCI / & OUTPUT IT 859 001246 0056 BLK-1 860 001247 5257 JMP XSHBKS 861 862 001250 4525 XSHABS, JMS I TYPSI /"ABS. LOC = " 863 001251 4210 MS03 864 001252 1056 TAD CAD /OUTPUT LOCATION IN BLOCK 865 001253 1377 TAD (-IOBUF 866 001254 3056 DCA CAD 867 001255 4546 JMS I BKLOCI 868 001256 0053 CBLK-1 869 001257 1050 XSHBKS, TAD MODIF /HAS BLOCK BEEN MODIFIED? 870 001260 7700 SMA CLA 871 001261 5204 JMP XSHCR / NO, SAY NOTHING! 872 001262 4525 JMS I TYPSI / YES, SAY " MOD" 873 001263 2134 MSMOD 874 001264 5204 JMP XSHCR 875 876 001265 4525 XSHUPP, JMS I TYPSI /"UPPER = " 877 001266 4216 MS04 878 001267 4546 JMS I BKLOCI /OUTPUT IN BLOCK.LOC FORM 879 001270 0061 UBLK-1 880 001271 5204 JMP XSHCR 881 882 001272 4525 XSHLOW, JMS I TYPSI /"LOWER = " 883 001273 4223 MS05 884 001274 4546 JMS I BKLOCI 885 001275 0064 LBLK-1 886 001276 5204 JMP XSHCR 887 888 001277 4525 XSHFMT, JMS I TYPSI /"FORMAT = " 889 001300 4230 MS06 890 001301 1042 TAD FCNT 891 001302 1376 TAD (FMTLS-1 /SET UP FOR CORRECT TITLE 892 001303 3010 XSHFM, DCA DPNT 893 001304 4553 TADIDP /GET MESSAGE ADDRESS 894 001305 4524 JMS I TYPSTI /OUTPUT DESCRIPTOR 895 001306 5204 JMP XSHCR 896 897 001307 4525 XSHMOD, JMS I TYPSI /"MODE = " 898 001310 4247 MS10 899 001311 1044 TAD MODSW /GET CORRECT MESSAGE 900 001312 1375 TAD (MODELS-1 /(OFFSET INTO TABLE) 901 001313 5303 JMP XSHFM /GET ADDRESS & OUTPUT 902 903 001314 4525 XSHOUT, JMS I TYPSI /"OUTPUT = " 904 001315 4367 MS30 905 001316 1017 TAD TYPSW /SET UP MESSAGE ADDRESS 906 001317 1374 TAD (OUTLS-1 /(OFFSET INTO TABLE) 907 001320 5303 JMP XSHFM 908 909 001321 4525 XSHSMS, JMS I TYPSI /"SMASK = " 910 001322 4203 MS07 911 001323 1076 TAD SMASKL 912 001324 3021 DCA TEMP /-# TO OUTPUT 913 001325 1176 TAD MASKBS 914 001326 3010 DCA DPNT /SET UP TO OUTPUT 915 001327 1111 TAD M10 /SET LINE LENGTH 916 001330 3022 DCA TEMP1 917 001331 5342 JMP XSHSM2 918 001332 4527 XSHSM1, JMS I TWOCI /OUTPUT ", " 919 001333 5440 5440 920 001334 2022 ISZ TEMP1 /ENOUGH ON THIS LINE? 921 001335 5342 JMP XSHSM2 /NO, OK 922 001336 4530 JMS I CRLFI /YES, OUTPUT CR-LF 923 001337 4533 SPACE2 / & 2 SPACES 924 001340 7240 STA /MAKE LINE 1 LONGER 925 001341 5327 JMP XSHSM1-3 /AND RESET LENGTH 926 / 927 001342 4553 XSHSM2, TADIDP /GET NEXT VALUE 928 001343 4540 JMS I OCTI / & OUTPUT IT 929 001344 2021 ISZ TEMP /ENOUGH? 930 001345 5332 JMP XSHSM1 931 001346 5204 JMP XSHCR /OK, GET NEXT WORD 932 933 001347 4525 XSHDEV, JMS I TYPSI /"DEVICE = XXXX" 934 001350 2457 MSDEV 935 001351 4527 JMS I TWOCI /NOW OUTPUT " (" 936 001352 4050 4050 937 001353 1101 TAD DEVNO /GET THE DEVICE # 938 001354 4541 JMS I DEC2I / & OUTPUT AS 2 DIGITS 939 001355 4526 JMS I TYPECI /FINALLY OUTPUT ")" 940 001356 0251 ") 941 001357 5204 JMP XSHCR 942 943 001360 4525 XSHDDEV,JMS I TYPSI /"DDEV = XXXX" 944 001361 2450 MSDDEV 945 001362 5204 JMP XSHCR 946 947 948 001363 0000 FPRNT, 0 /PRINT FIELD DIGIT FROM BITS 6-8 949 001364 7012 RTR /MOVE TO BITS 9-11 950 001365 7010 RAR 951 001366 0113 AND N7 /MASK TO 1 DIGIT 952 001367 4531 DIGIT / & OUTPUT IN ASCII 953 001370 5763 JMP I FPRNT 954 955 956 001374 5274 PAGE 001375 5270 001376 4777 001377 0600 957 /CONTINUATION OF 'SHOW' COMMAND 958 959 /SHOW 'CCB' HANDLER 960 001400 6213 XSHCCB, CDF CIF 10 961 001401 4777 JMS GCCB /SET UP CCB FOR FILE 962 001402 3001 DCA DPSGN / & SET UP SEGMENTS 963 001403 4525 JMS I TYPSI /"CCB:" 964 001404 4253 MS11 965 001405 4355 JMS CCHDST /DO SETUP, OUTPUT START 966 001406 4525 JMS I TYPSI /", JSW = " 967 001407 4317 MS19 968 001410 4776 JMS NXTOCT /OUTPUT J.S.W. IN OCTAL 969 001411 4530 JMS I CRLFI 970 001412 4525 JMS I TYPSI /" CORE SEGS: " 971 001413 4267 MS14 972 001414 1375 XSHCC1, TAD (-4 973 001415 3037 DCA CNTR /-#/LINE 974 001416 4553 XSHCC2, TADIDP /GET ORIGIN WORD 975 001417 3022 DCA TEMP1 976 001420 4553 TADIDP / & COUNT WORD 977 001421 3023 DCA TEMP2 978 001422 1023 TAD TEMP2 /GO OUTPUT START FIELD 979 001423 4774 JMS FPRNT 980 001424 1022 TAD TEMP1 / & START ADDR 981 001425 4540 JMS I OCTI 982 001426 4526 JMS I TYPECI / & A "-" 983 001427 0255 "- 984 001430 1023 TAD TEMP2 /OUTPUT FIELD AGAIN 985 001431 4774 JMS FPRNT 986 001432 1023 TAD TEMP2 / PAGE COUNT -> PAGES 987 001433 7104 CLL RAL 988 001434 0106 AND M200 /MASK OFF FIELD DATA 989 001435 1022 TAD TEMP1 /ADD ORIGIN ADDR 990 001436 1112 TAD M1 / & SUBTRACT 1 FOR END 991 001437 4540 JMS I OCTI /OUTPUT END ADDR IN OCTAL 992 001440 2001 ISZ DPSGN /DONE? 993 001441 5247 JMP XSHCC4 /NO 994 001442 1000 TAD OVLFLG /YES, OVERLAYS? (LINK OUTPUT) 995 001443 7450 SNA 996 001444 5773 JMP XSHCR / NO, DONE 997 001445 3010 DCA DPNT / YES, RESET POINTER 998 001446 5301 JMP XSHHD1 / & CONTINUE 999 / 1000 001447 4527 XSHCC4, JMS I TWOCI /OUTPUT SEPARATOR 1001 001450 5440 5440 1002 001451 2037 ISZ CNTR /DONE ON THIS LINE? 1003 001452 5216 JMP XSHCC2 /NO 1004 001453 4530 JMS I CRLFI /YES 1005 001454 4533 SPACE2 /ADD 2 SPACES 1006 001455 7240 STA /AND 1 MORE ITEM PER LINE 1007 001456 5214 JMP XSHCC1 1008 1009 /SHOW 'HEADER' HANDLER 1010 001457 6213 XSHHDR, CDF CIF 10 1011 001460 4772 JMS GHDR /SET UP HEADER FOR MODULE 1012 001461 4525 JMS I TYPSI /"HEADER:" 1013 001462 4422 MS38 1014 001463 4355 JMS CCHDST /DO SETUP, OUTPUT START 1015 001464 4525 JMS I TYPSI /", NEXT WORD = " 1016 001465 4426 MS39 1017 001466 4553 TADIDP /GET FIELD DIGIT 1018 001467 4531 DIGIT / & OUTPUT 1019 001470 4776 JMS NXTOCT /FOLLOWED BY ADDRESS 1020 001471 4525 JMS I TYPSI /", LOAD VER = " 1021 001472 4436 MS40 1022 001473 4776 JMS NXTOCT / & OUTPUT VERSION 1023 001474 4553 TADIDP /GET E.P. FLAG 1024 001475 7650 SNA CLA 1025 001476 5301 JMP XSHHD1 / NO E.P. 1026 001477 4525 JMS I TYPSI /", EP REQ'D" 1027 001500 4443 MS41 1028 001501 4530 XSHHD1, JMS I CRLFI /TO THE NEXT LINE 1029 001502 4525 JMS I TYPSI /" OVLYS START... 1030 001503 4452 MS42 1031 001504 4553 XSHHD2, TADIDP /GET NUMBER OF OVERLAYS 1032 001505 7450 SNA / FOR THIS LEVEL 1033 001506 5773 JMP XSHCR / 0 = END, DONE 1034 001507 3022 DCA TEMP1 /SAVE IT 1035 001510 4530 JMS I CRLFI /OUTPUT A CR/LF 1036 001511 4533 SPACE2 / AND 4 SPACES 1037 001512 4533 SPACE2 1038 001513 1022 TAD TEMP1 1039 001514 4541 JMS I DEC2I /# OVLYS IN DECIMAL 1040 001515 4533 SPACE2 1041 001516 4553 TADIDP /GET MEMORY START WORD 1042 001517 3023 DCA TEMP2 1043 001520 1023 TAD TEMP2 1044 001521 4774 JMS FPRNT /OUTPUT START FIELD 1045 001522 1023 TAD TEMP2 1046 001523 0103 AND M400 / & DOUBLE-PAGE 1047 001524 4540 JMS I OCTI 1048 001525 4533 SPACE2 1049 001526 4776 JMS NXTOCT /OUTPUT RELATIVE BLOCK 1050 001527 4533 SPACE2 1051 001530 4776 JMS NXTOCT /OUTPUT OVERLAY LENGTH 1052 001531 5304 JMP XSHHD2 /AND DO ANOTHER ROUND! 1053 1054 /SHOW 'ERRORS' HANDLER 1055 001532 4771 XSHERR, JMS USROUT /BE SURE MESSAGES ARE IN 1056 001533 2052 ISZ DSWIT /SET DUMP SWITCH 1057 001534 4525 JMS I TYPSI /"ERRORS: FUTIL VERSION ..." 1058 001535 2500 MSERR 1059 001536 4530 JMS I CRLFI 1060 001537 7201 CLA IAC 1061 001540 3010 DCA DPNT /SET POINTER & CODE 1062 001541 4530 XSHER1, JMS I CRLFI /DO ANOTHER CR/LF 1063 001542 1010 TAD DPNT /TEST FOR LAST REAL MESSAGE 1064 001543 1370 TAD (-EMSEND /(NOT DEBUG MESSAGE!) 1065 001544 7650 SNA CLA 1066 001545 5773 JMP XSHCR 1067 001546 1010 TAD DPNT /OUTPUT ERROR CODE 1068 001547 4541 JMS I DEC2I / AS 2 DIGITS 1069 001550 4525 JMS I TYPSI /THEN " = " 1070 001551 4200 MS01 1071 001552 4553 TADIDP /GET ADDR OF MESSAGE AND 1072 001553 4524 JMS I TYPSTI / OUTPUT IT 1073 001554 5341 JMP XSHER1 1074 1075 1076 001555 0000 CCHDST, 0 1077 001556 4530 JMS I CRLFI 1078 001557 4525 JMS I TYPSI /" SA = " 1079 001560 4313 MS18 1080 001561 1367 TAD (CCBB 1081 001562 3010 DCA DPNT /SET UP POINTER TO DATA 1082 001563 4553 TADIDP /GET 2ND WORD FROM CCB/HDR 1083 001564 4774 JMS FPRNT /IT HAS START FIELD SO OUTPUT 1084 001565 4776 JMS NXTOCT / FOLLOWED BY START ADDR 1085 001566 5755 JMP I CCHDST 1086 1087 1088 001567 6400 PAGE 001570 7720 001571 0544 001572 2042 001573 1204 001574 1363 001575 7774 001576 1766 001577 2000 1089 /ROUTINE TO EXECUTE THE 'SET' COMMAND 1090 001600 2046 XSETN, ISZ CRSWT /WAS LAST INFO ENDED BY CR? 1091 001601 5572 JMP I RESTAR /YES, DONE 1092 001602 4556 XSET, JMS I GWORDI /GET OPTION WORD 1093 001603 5211 JMP XSET1 /NO NUMBERS PLEASE! 1094 001604 2046 ISZ CRSWT /WAS WORD ENDED BY A CR? 1095 001605 4573 ERCK, ERROR /YES, ILLEGAL HERE 1096 001606 4567 JMS I SORTI /LOOK UP WORD 1097 001607 5110 SETLST-1 1098 001610 0060 SETJMP-SETLST 1099 001611 4573 XSET1, ERROR /WHAT??? 1100 1101 1102 /ROUTINE TO 'SET' THE 'DMODE' (DUMP MODE) 1103 001612 4556 XDMODE, JMS I GWORDI /GET A WORD 1104 001613 5217 JMP ERC11 /NO NUMBERS HERE! 1105 001614 4567 JMS I SORTI /LOOK IT UP 1106 001615 5260 XDMLST-1 1107 001616 0004 XDMOPS-XDMLST 1108 001617 4573 ERC11, ERROR /NO LIKEE!! 1109 / 1110 001620 7350 CLL STA RAR /4000: 'ALL' (ECHO TO TTY & FILE) 1111 001621 7001 XDMODS, IAC / 1: 'PART' (ONLY DUMP,LIST,ETC) 1112 001622 3053 DCA DMODE / 0: 'NONE' (TTY ONLY) 1113 001623 5200 JMP XSETN 1114 1115 1116 /ROUTINE TO 'SET' THE 'OUTPUT' OPTION 1117 001624 4556 XOUTS, JMS I GWORDI /GET OPTION WORD 1118 001625 5231 JMP ERCL / # IN THE BUFFER 1119 001626 4567 JMS I SORTI /LOOK IT UP 1120 001627 5222 XOLST-1 1121 001630 0007 XOOPS-XOLST 1122 001631 4573 ERCL, ERROR /NOT FOLLOWED BY LEGAL WORD 1123 / 1124 001632 7344 CLL STA RAL /-1: 'FPP' (SYMBOLIC) 1125 001633 7001 XOUTS1, IAC /+1: 'PDP' (SYMBOLIC) 1126 001634 3017 DCA TYPSW / 0: 'OCTAL' 1127 001635 5200 JMP XSETN 1128 1129 1130 /ROUTINE TO 'SET' THE 'MASK' OPTION 1131 001636 4560 XMASK, JMS I ARGI /GET ONE ARG 1132 001637 1025 TAD ACC1 /GET 'LOC' 1133 001640 3075 DCA MASK / & SET MASK 1134 001641 5200 JMP XSETN 1135 1136 1137 /ROUTINE TO 'SET' THE 'OFFSET' OPTION 1138 001642 4560 XOFFS, JMS I ARGI /GET ONE ARG 1139 001643 1025 TAD ACC1 /GET # 1140 001644 7041 CIA 1141 001645 3073 DCA OFFSET /SET IT 1142 001646 5200 JMP XSETN 1143 1144 1145 /ROUTINE TO 'SET' THE 'ERROR' (MODE) OPTION 1146 001647 4556 XEMODE, JMS I GWORDI /GET WORD 1147 001650 5254 JMP ERCZ /NO NUMBERS ALLOWED!!! 1148 001651 4567 JMS I SORTI /LOOK IT UP 1149 001652 5211 XELST-1 1150 001653 0005 XEOPS-XELST 1151 001654 4573 ERCZ, ERROR /ILLEGAL SOMETHING 1152 / 1153 001655 7001 XEMOD1, IAC /'SHORT' 1154 001656 3020 DCA ERMODE /'LONG' 1155 001657 5200 JMP XSETN 1156 1157 1158 /ROUTINE TO 'SET' THE 'UPPER' LIMITS OPTION 1159 001660 4565 XUPP, JMS I LIMITI /UPPER, GET ARGS 1160 001661 0062 UBLK 1161 001662 5200 JMP XSETN 1162 1163 /ROUTINE TO 'SET' THE 'LOWER' LIMITS OPTION 1164 001663 4565 XLOW, JMS I LIMITI /LOWER, GET ARGS 1165 001664 0065 LBLK 1166 001665 5200 JMP XSETN 1167 1168 /ROUTINE TO 'SET' THE 'MODE' OPTION 1169 001666 4556 XMODE, JMS I GWORDI /GET OPTION WORD 1170 001667 5273 JMP ERCJ /NUMBER IN BUFFER, BAIL OUT 1171 001670 4567 JMS I SORTI /LOOK IT UP 1172 001671 5237 MODLST-1 1173 001672 0011 MODOPS-MODLST 1174 001673 4573 ERCJ, ERROR /NOT RECOGNIZED 1175 / 1176 001674 7346 CLL STA RTL /-1: OFFSET 1177 001675 7001 XMODS, IAC /+2: LOAD (MODULE) 1178 001676 7001 IAC /+1: SAVE (FILE) 1179 001677 3044 DCA MODSW / 0: NORMAL 1180 001700 5200 JMP XSETN 1181 1182 /ROUTINE TO 'SET' THE 'FILLER' OPTION 1183 001701 4560 XFILL, JMS I ARGI /GET ONE ARG 1184 001702 1025 TAD ACC1 1185 001703 3074 DCA FILLER / & SET AS FILLER 1186 001704 5200 JMP XSETN 1187 1188 /ROUTINE TO 'SET' THE 'TEMP' STORAGE 1189 001705 4560 XTEMP, JMS I ARGI /GET THE 24 BIT ARG (EXPRESSION!) 1190 001706 1025 TAD ACC1 /NOW SAVE THE 24 BITS FOR LATER 1191 001707 3033 DCA TEMPV1 1192 001710 1026 TAD ACC2 /GET IT BACK WITH "EVAL T" 1193 001711 3034 DCA TEMPV2 / (OR IN AN EXPRESSION) 1194 001712 5200 JMP XSETN 1195 1196 1197 /ROUTINE TO EXECUTE THE 'IF' COMMAND 1198 001713 4547 XIF, JMS I EVALI /EVALUATE THE EXPRESSION 1199 001714 7410 SKP / TERMIN = CR, OK 1200 001715 5777 JMP ERCC / TOO MANY PARENS 1201 001716 1025 TAD ACC1 /TEST THE 24-BIT VALUE FOR ZERO 1202 001717 7450 SNA 1203 001720 1026 TAD ACC2 1204 001721 7650 SNA CLA 1205 001722 5572 JMP I RESTAR /OK, JUST CONTINUE 1206 001723 1174 XIFSKP, TAD COMST /NOT ZERO, BEGIN SKIPPING FOR 1207 001724 3015 DCA COMIR / LINE STARTING WITH "END" 1208 001725 4523 READLN /GET A LINE FROM THE INPUT 1209 001726 4522 TYPEM-1 / WITH THESE TERMINATORS 1210 001727 0342 IFSKPO-TYPEM 1211 001730 5323 JMP XIFSKP /BUFFER EMPTIED 1212 / 1213 001731 4570 XIFCR, JMS I ENDCI /CR FOUND, TIDY THINGS UP 1214 001732 5323 JMP XIFSKP / CR ONLY 1215 001733 4556 JMS I GWORDI /GET 1ST WORD ON LINE 1216 001734 5323 JMP XIFSKP / NO WORD 1217 001735 1376 TAD (-0516 /IS THE WORD "EN..."? 1218 001736 7640 SZA CLA 1219 001737 5323 JMP XIFSKP / NO, KEEP LOOKING! 1220 001740 5572 JMP I RESTAR /YES! BEGIN EXECUTION AGAIN! 1221 1222 1223 /ROUTINE TO OUTPUT LOCATION THAT SATISFIED ONE 1224 /OF THE SEARCH COMMANDS. IF ABSSW=0, OUTPUT 1225 /AS RELATIVE LOCATION. 1226 001741 0000 ABKLOC, 0 1227 001742 1051 TAD ABSSW /IS IT 0? 1228 001743 7640 SZA CLA 1229 001744 5353 JMP ABK2 /NO, OUTPUT AS ABSOLUTE 1230 001745 4546 JMS I BKLOCI /OUTPUT LOCATION 1231 001746 0056 BLK-1 1232 001747 4527 ABK1, JMS I TWOCI /OUTPUT ": " 1233 001750 7240 7240 1234 001751 4535 JMS I TWOT 1235 001752 5741 JMP I ABKLOC 1236 / 1237 001753 1061 ABK2, TAD LOCL /MAKE ABSOLUTE 1238 001754 0121 AND N377 1239 001755 3056 DCA CAD 1240 001756 4546 JMS I BKLOCI /NOW OUTPUT IT 1241 001757 0053 CBLK-1 1242 001760 5347 JMP ABK1 1243 1244 001761 0000 TWOCS, 0 /OUTPUT 2-CHARACTER ARG 1245 001762 1761 TAD I TWOCS /GET ARG 1246 001763 2361 ISZ TWOCS /SKIP IT 1247 001764 4535 JMS I TWOT /OUTPUT IT 1248 001765 5761 JMP I TWOCS 1249 1250 001766 0000 NXTOCT, 0 1251 001767 4553 TADIDP /GET NEXT WORD FROM BLOCK 1252 001770 4540 JMS I OCTI / & OUTPUT IN OCTAL 1253 001771 5766 JMP I NXTOCT 1254 1255 1256 001776 7262 PAGE 001777 0402 1257 /ROUTINE TO EXECUTE THE 'WORD' SEARCH COMMAND 1258 002000 4247 XWORD, JMS SSET /INITIALIZE SEARCH 1259 002001 1236 TAD CNOP /SET UP FOR NORMAL, 1260 002002 3237 DCA CNOP+1 1261 002003 1111 TAD M10 / EQUAL SEARCH 1262 002004 1377 XWOR2, TAD (SNA CLA /"UNEQUAL" WORD SEARCH 1263 002005 3233 DCA XWORC 1264 002006 4556 XWOR1, JMS I GWORDI /GET POSSIBLE WORD 1265 002007 5221 JMP XWOR3 /NUMBERS IN BUFFER 1266 002010 2046 ISZ CRSWT /WAS IT ENDED BY A CR? 1267 002011 4573 ERCI, ERROR /YES, VELLY SOLLY! 1268 002012 4567 JMS I SORTI /LOOK UP COMMAND: UN, ME, 1269 002013 5276 XWORCL-1 / AB, FR, TO 1270 002014 0014 XWOROP-XWORCL 1271 002015 4573 ERCH, ERROR /COMMAND NOT RECOGNIZED 1272 / 1273 002016 1230 XWOR7, TAD XWOR4+1 /"MEMREF", ONLY MEMORY- 1274 002017 3237 DCA CNOP+1 / REFERENCE OP-CODES CAN 1275 002020 5206 JMP XWOR1 / EVER BE OUTPUT. 1276 / 1277 002021 4560 XWOR3, JMS I ARGI /GET AN ARG 1278 002022 1025 TAD ACC1 /GET THE VALUE 1279 002023 0075 AND MASK 1280 002024 7041 CIA 1281 002025 3036 DCA CNT /LOOK FOR THIS WORD 1282 002026 4307 JMS LSETUP /SET UP COUNT OF WORDS TO DO 1283 002027 4561 XWOR4, JMS I GETI /GET A WORD 1284 002030 5245 JMP XWOR5 /FILE MODE, NO SUCH ADDRESS 1285 002031 0075 AND MASK 1286 002032 1036 TAD CNT 1287 002033 7402 XWORC, HLT /WILL BE "SZA CLA" OR "SNA CLA" 1288 002034 5245 JMP XWOR5 /DID NOT MATCH 1289 002035 4776 JMS OPRTST /TEST FOR OP-CODES 6 & 7 1290 002036 7000 CNOP, NOP / 7--OPR 1291 002037 7000 NOP / 6--IOT;"NOP" OR "JMP XWOR5" 1292 002040 4775 JMS ABKLOC /DID MATCH, OUTPUT LOC 1293 002041 4561 JMS I GETI /GET THAT WORD 1294 002042 5774 JMP ERCP / OH I HOPE NOT!!! 1295 002043 4540 JMS I OCTI /AND OUTPUT IT IN OCTAL 1296 002044 4530 JMS I CRLFI 1297 002045 4347 XWOR5, JMS LCHEK /DONE YET? 1298 002046 5227 JMP XWOR4 /NO 1299 1300 /SUBROUTINE TO INITIALIZE THE SEARCH COMMANDS 1301 002047 0000 SSET, 0 1302 002050 3051 DCA ABSSW /RESET ABSOLUTE SWITCH 1303 002051 1065 TAD LBLK /SET UP START BLK & LOC 1304 002052 3057 DCA BLK 1305 002053 1066 TAD LLOCH 1306 002054 3060 DCA LOCH 1307 002055 1067 TAD LLOCL 1308 002056 3061 DCA LOCL 1309 002057 1062 TAD UBLK /SET UP END BLK & LOC 1310 002060 3304 DCA EBLK 1311 002061 1063 TAD ULOCH 1312 002062 3305 DCA ELOCH 1313 002063 1064 TAD ULOCL 1314 002064 3306 DCA ELOCL 1315 002065 5647 JMP I SSET 1316 1317 /COMMON OPTIONS FOR 'WORD' AND 'STRING' SEARCHES 1318 1319 002066 7240 XWSABS, STA 1320 002067 3051 DCA ABSSW /'ABSOLUTE'--SET SWITCH 1321 002070 5300 JMP XWSRET 1322 / 1323 002071 4565 XWSFRM, JMS I LIMITI /'FROM'--GET LOWER LIMITS 1324 002072 0057 BLK 1325 002073 5300 JMP XWSRET 1326 / 1327 002074 1062 XWSTO, TAD UBLK /'TO'--SET UP IF NEEDED 1328 002075 3304 DCA EBLK 1329 002076 4565 JMS I LIMITI / & GET UPPER LIMITS 1330 002077 2104 EBLK 1331 002100 7344 XWSRET, STA CLL RAL /= -2, CALCULATE RETURN ADDRESS AS 1332 002101 1556 TAD I GWORDI / LAST CALL TO "GWORD" TO ALLOW 1333 002102 3347 DCA LCHEK / THESE TO BE COMMON TO BOTH 1334 002103 5747 JMP I LCHEK / 'WORD' AND 'STRING' SEARCHES. 1335 002104 0000 EBLK, 0 1336 002105 0000 ELOCH, 0 1337 002106 0000 ELOCL, 0 1338 1339 1340 002107 0000 LSETUP, 0 /SET SEARCH WORD-COUNTERS **** SEE NOTE **** 1341 002110 3025 DCA ACC1 /INITIALIZE THESE TO 0 1342 002111 3026 DCA ACC2 1343 002112 1044 TAD MODSW /IN A MAPPED MODE? 1344 002113 7740 SMA SZA CLA 1345 002114 5327 JMP LSETL / YES, IGNORE BLOCK PARTS 1346 002115 1057 TAD BLK / NO, SET UP FOR 24 BIT 1347 002116 3025 DCA ACC1 1348 002117 1304 TAD EBLK / BLK-EBLK 1349 002120 3031 DCA OPER1 1350 002121 3032 DCA OPER2 1351 002122 4773 JMS DSUB /DO THE SUBTRACTION 1352 002123 1372 TAD (400 /NOW SET UP MULTIPLY BY 400 1353 002124 3031 DCA OPER1 1354 002125 3032 DCA OPER2 1355 002126 4771 JMS DMUL /GIVES: (BLK-EBLK)*400 1356 002127 7101 LSETL, CLL IAC 1357 002130 1306 TAD ELOCL 1358 002131 3031 DCA OPER1 /NOW SET UP ELOC+1 1359 002132 7004 RAL 1360 002133 1305 TAD ELOCH 1361 002134 3032 DCA OPER2 1362 002135 4773 JMS DSUB /AND SUBTRACT IT 1363 002136 1061 TAD LOCL /NOW ADD LOC TO GIVE: 1364 002137 3031 DCA OPER1 / (BLK-EBLK)*400+(LOC-ELOC-1) 1365 002140 1060 TAD LOCH / WHICH IS 24-BIT COUNT OF 1366 002141 3032 DCA OPER2 / WORDS TO SEARCH. 1367 002142 4770 JMS DADD 1368 002143 1026 TAD ACC2 /IF NOT NEGATIVE, ALREADY TOO 1369 002144 7700 SMA CLA 1370 002145 5571 JMP I RECRLF / FAR, SO JUST QUIT NOW! 1371 002146 5707 JMP I LSETUP 1372 1373 /**** NOTE: COUNT LEFT SET UP IN ACC1 & ACC2 **** 1374 1375 002147 0000 LCHEK, 0 /CHECK IF SEARCH RANGE EXHAUSTED 1376 002150 4566 JMS I INCI /INCREMENT LOC 1377 002151 2025 ISZ ACC1 /COUNT WORDS TO DO 1378 002152 5747 JMP I LCHEK 1379 002153 2026 ISZ ACC2 / (24-BIT) 1380 002154 5747 JMP I LCHEK 1381 002155 5571 JMP I RECRLF /DO CR/LF & STOP! 1382 1383 1384 002156 0000 TIDPNT, 0 /"TAD I DPNT" IN FIELD 1 1385 002157 6211 CDF 10 1386 002160 1410 TAD I DPNT 1387 002161 6201 CDF 0 1388 002162 5756 JMP I TIDPNT 1389 1390 1391 002163 0000 ASCII, 0 /ASCII OUTPUT FORMAT FROM DEVICE 1392 002164 0117 AND N177 /MAKE CHARS INTO "STANDARD" 1393 002165 1120 TAD N200 / FORM: 7 BITS + PARITY ON 1394 002166 4536 JMS I TYPEI / TO CAUSE CORRECT PRINTING 1395 002167 5763 JMP I ASCII 1396 1397 1398 002170 5650 PAGE 002171 6000 002172 0400 002173 5662 002174 2473 002175 1741 002176 4547 002177 7650 1399 /ROUTINE TO 'REWIND' THE DEVICE 1400 002200 6211 XREWIN, CDF 10 1401 002201 1102 TAD USRAD /RESET DIRECTORY SEGMENT KEY 1402 002202 7700 SMA CLA 1403 002203 3513 DCA I N7 / IN USR IF IT IS IN MEMORY. 1404 002204 6201 CDF 0 1405 002205 4500 JMS I DEVAD /CALL HANDLER 1406 002206 0110 0110 /READ, 1 PAGE, FIELD 1 1407 002207 6127 PDLB /DUMMY BUFFER (ZAP P.D.L.) 1408 002210 0001 1 /BLK 1 1409 002211 5213 JMP RERROR /READ ERROR! 1410 002212 5572 JMP I RESTAR 1411 1412 /READ ERROR--TEST TYPE & OUTPUT MESSAGE 1413 1414 002213 7710 RERROR, SPA CLA /BIT 0 = 1 IF FATAL 1415 002214 4573 ERC00, ERROR /FATAL 1416 002215 4573 ERC01, ERROR /NON-FATAL 1417 1418 1419 /ROUTINE TO EXECUTE THE 'STRING' SEARCH COMMAND 1420 002216 4777 XSTRIN, JMS SSET /INITIALIZE 1421 002217 1376 TAD (STJMP-STCDF /RESET MASKING SWITCH 1422 002220 1200 XSTR0, TAD XREWIN / OR SET MASKING SWITCH 1423 002221 3360 DCA SMSKSW 1424 002222 4556 JMS I GWORDI /GET POSSIBLE WORD 1425 002223 5232 JMP XSTR1 /NUMBERS ONLY 1426 002224 2046 ISZ CRSWT /FOLLOWED BY A CR? 1427 002225 5775 JMP ERCI / YES, KICK OUT***** 1428 002226 4567 JMS I SORTI /LOOK UP OPTION: MA, 1429 002227 5300 STRLST-1 / AB, FR, TO 1430 002230 0025 STROPS-STRLST 1431 002231 5774 JMP ERCH /NO LIKEE! 1432 / 1433 002232 4557 XSTR1, JMS I GARGI /GET ARGS - THEN REPACK INTO BUFFER 1434 002233 1021 TAD TEMP / MASKING THEM IF SPECIFIED 1435 002234 3037 DCA CNTR /SET UP LENGTH 1436 002235 1175 TAD TEMPST 1437 002236 3013 DCA SCANX2 /STORING DONE IN NEG. FORM 1438 002237 5242 JMP XSTR2+2 /GO SET UP MASK 1439 / 1440 002240 2024 XSTR2, ISZ TEMP3 /MASK END? 1441 002241 5246 JMP XSTR3 1442 002242 1176 TAD MASKBS /YES, RESET MASK 1443 002243 3011 DCA SPNT 1444 002244 1076 TAD SMASKL /SET UP LENGTH 1445 002245 3024 DCA TEMP3 1446 002246 2010 XSTR3, ISZ DPNT /SKIP 2 EXTRA WORDS 1447 002247 2010 ISZ DPNT 1448 002250 1410 TAD I DPNT /GET A WORD 1449 002251 4357 JMS STRMSK /TEST & MASK 1450 002252 7041 CIA /NEGATE 1451 002253 3413 DCA I SCANX2 /STORE 1452 002254 2010 ISZ DPNT /BUMP POINTER 1453 002255 2037 ISZ CNTR /DONE? 1454 002256 5240 JMP XSTR2 1455 002257 4773 JMS LSETUP /YES, SET UP COUNT OF WORDS 1456 002260 1175 XSTR4, TAD TEMPST /SET UP FOR SEARCH: 1457 002261 3010 DCA DPNT / STRING, 1458 002262 1021 TAD TEMP 1459 002263 3037 DCA CNTR / & STRING LENGTH. 1460 002264 1061 TAD LOCL 1461 002265 3366 DCA XLOCL /SAVE CURRENT LOCATION 1462 002266 1060 TAD LOCH 1463 002267 3365 DCA XLOCH 1464 002270 1057 TAD BLK 1465 002271 3364 DCA XBLK 1466 002272 1025 TAD ACC1 / & COUNT FOR RESET 1467 002273 3031 DCA OPER1 1468 002274 1026 TAD ACC2 1469 002275 3032 DCA OPER2 1470 002276 5302 JMP XSTR6 /NOW SET UP MASK 1471 / 1472 002277 4772 XSTR5, JMS LCHEK /DONE? 1473 002300 2024 ISZ TEMP3 /NO, AT MASK END? 1474 002301 5306 JMP XSTR7 1475 002302 1176 XSTR6, TAD MASKBS / YES, RESET MASK 1476 002303 3011 DCA SPNT 1477 002304 1076 TAD SMASKL 1478 002305 3024 DCA TEMP3 1479 002306 4561 XSTR7, JMS I GETI /GET NEXT WORD 1480 002307 5333 JMP XSTR10 /MAPPED MODE, NO SUCH ADDRESS 1481 002310 4357 JMS STRMSK /TEST & MASK 1482 002311 1410 TAD I DPNT /COMPARE? 1483 002312 7640 SZA CLA 1484 002313 5333 JMP XSTR10 /NO, GO RESET & CONTINUE 1485 002314 2037 ISZ CNTR /MATCHED ENOUGH? 1486 002315 5277 JMP XSTR5 /NOT YET 1487 002316 4343 JMS XRSET /YES, RESET LOCATION & COUNT 1488 002317 1021 TAD TEMP /AND LENGTH 1489 002320 3037 DCA CNTR 1490 002321 1111 XSTR8, TAD M10 1491 002322 3027 DCA ACCX1 / -(#/LINE) 1492 002323 4771 JMS ABKLOC /OUTPUT THIS LOCATION 1493 002324 4561 XSTR9, JMS I GETI /GET A WORD 1494 002325 5770 JMP ERCP /BAD,BAD,BAD!!! 1495 002326 4540 JMS I OCTI /AND OUTPUT IN OCTAL 1496 002327 4566 JMS I INCI /INCREMENT LOC 1497 002330 2037 ISZ CNTR /DONE? 1498 002331 5336 JMP XSTR11 /NO, CONTINUE 1499 002332 4530 JMS I CRLFI /YES, OUTPUT CR/LF 1500 002333 4343 XSTR10, JMS XRSET /RESET LOCATION & COUNT 1501 002334 4772 JMS LCHEK /DONE? 1502 002335 5260 JMP XSTR4 /NO, LOC INC'D, TRY NEXT 1503 / 1504 002336 4533 XSTR11, SPACE2 /OUTPUT " " 1505 002337 2027 ISZ ACCX1 /DONE ON THIS LINE? 1506 002340 5324 JMP XSTR9 /NO, NOT YET 1507 002341 4530 JMS I CRLFI /YES 1508 002342 5321 JMP XSTR8 1509 1510 002343 0000 XRSET, 0 /RESET BLK & LOC FROM XBLK & XLOC 1511 002344 1366 TAD XLOCL /LOC 1512 002345 3061 DCA LOCL 1513 002346 1365 TAD XLOCH 1514 002347 3060 DCA LOCH 1515 002350 1364 TAD XBLK /BLK 1516 002351 3057 DCA BLK 1517 002352 1031 TAD OPER1 /WORDS LEFT TO SEARCH 1518 002353 3025 DCA ACC1 1519 002354 1032 TAD OPER2 1520 002355 3026 DCA ACC2 1521 002356 5743 JMP I XRSET 1522 1523 002357 0000 STRMSK, 0 /STRING MASKING *** NEXT WORD MODIFIED *** 1524 002360 6211 SMSKSW, CDF 10 /"CDF 10" OR "JMP I STRMSK" 1525 002361 0411 AND I SPNT /OK, MASK IN FIELD 1 1526 002362 6201 CDF 0 1527 002363 5757 JMP I STRMSK 1528 STJMP= JMP I STRMSK 1529 STCDF= CDF 10 1530 1531 002364 0000 XBLK, 0 1532 002365 0000 XLOCH, 0 1533 002366 0000 XLOCL, 0 1534 1535 1536 002370 2473 PAGE 002371 1741 002372 2147 002373 2107 002374 2015 002375 2011 002376 7546 002377 2047 1537 /ROUTINE TO EXECUTE THE BLOCK 'WRITE' COMMAND 1538 002400 4560 XWRARG, JMS I ARGI /GET ONE ARG 1539 002401 1025 TAD ACC1 /USE IT AS THE BLOCK 1540 002402 7410 SKP 1541 002403 1777 XWRITE, TAD WBLK /SET BLOCK 1542 002404 3210 DCA XWBLK 1543 002405 4500 JMS I DEVAD /CALL HANDLER 1544 002406 4210 4210 /WRITE, 2 PAGES, FIELD 1 1545 002407 7200 IOBUF 1546 002410 0000 XWBLK, 0 /[** COUNTER FOR MODIFY **] 1547 002411 5214 JMP WERROR /WRITE ERROR 1548 002412 3050 DCA MODIF /CLEAR SOMETHING-CHANGED FLAG 1549 002413 5572 JMP I RESTAR 1550 1551 /WRITE ERROR--TEST TYPE & OUTPUT MESSAGE 1552 1553 002414 7710 WERROR, SPA CLA /BIT 0 = 1 IF FATAL 1554 002415 4573 ERC02, ERROR /FATAL 1555 002416 4573 ERC03, ERROR /NON-FATAL 1556 1557 1558 /ROUTINE TO EXECUTE THE 'MODIFY' COMMAND 1559 002417 4556 XMODIF, JMS I GWORDI /GET FORMAT WORD IF ONE 1560 002420 5231 JMP XMODEF /NONE, GET DEFAULT 1561 002421 3277 DCA MODTMP /SAVE FOR LATER 1562 002422 2046 ISZ CRSWT /TERMINATED BY A CR? 1563 002423 5230 JMP ERCO / YES, SAVE USER FROM HIMSELF! 1564 002424 1277 TAD MODTMP /TEST FORMAT FOR RECOGNITION 1565 002425 4567 JMS I SORTI 1566 002426 5013 MODIFL-1 1567 002427 0021 MODADS-MODIFL 1568 002430 4573 ERCO, ERROR / I THEENK YOU USE BAD WORD! 1569 / 1570 /NO FORMAT DESCRIPTOR GIVEN, USE DEFAULT 1571 002431 1042 XMODEF, TAD FCNT /USE CURRENT FORMAT, 1572 002432 1376 TAD (MODDLS-1 / WITH A LITTLE DIFFERENCE 1573 002433 3010 DCA DPNT 1574 002434 4553 TADIDP /GET THE ONE TO USE 1575 002435 3277 DCA MODTMP / AND SAVE IT 1576 / 1577 002436 4557 XMOD0, JMS I GARGI /OK, NOW GET ARGS 1578 002437 1021 TAD TEMP /MOVE COUNT TO A SAFE PLACE 1579 002440 3210 DCA XWBLK 1580 002441 1410 XMOD1, TAD I DPNT /GET BLOCK # 1581 002442 4775 JMS BLKTST /TEST & SET BLK 1582 002443 1410 TAD I DPNT /GET LOC 1583 002444 3060 DCA LOCH 1584 002445 1410 TAD I DPNT 1585 002446 3061 DCA LOCL 1586 002447 1410 TAD I DPNT /GET -(# LOCS) 1587 002450 3037 DCA CNTR 1588 002451 1174 XMOD2, TAD COMST /INIT COMM. BUFF. FOR MODS 1589 002452 3015 DCA COMIR 1590 002453 3045 DCA CHARSW /RESET HALF SWITCH 1591 002454 4545 JMS I SOCTI /INITIALIZE INPUT TO OCTAL 1592 002455 4546 JMS I BKLOCI /OUTPUT START LOC 1593 002456 0056 BLK-1 1594 002457 4527 JMS I TWOCI /AND ": " 1595 002460 7240 7240 1596 002461 4523 READLN /GET A LINE (TEST: RUBOUT, ^U & ^R) 1597 002462 4522 TYPEM-1 /IGNORE LF'S 1598 002463 0340 MCHARO-TYPEM 1599 002464 5251 JMP XMOD2 /BUFFER EMPTIED! 1600 1601 1602 /CR TYPED, END 1603 002465 4570 XMODCR, JMS I ENDCI /END BUFFER WITH A CR. 1604 002466 5251 JMP XMOD2 /ONLY A CR IN BUFFER-RETRY! 1605 002467 1277 TAD MODTMP /NOW LOOK UP FORMAT 1606 002470 4567 JMS I SORTI 1607 002471 5013 MODIFL-1 1608 002472 0011 MODIFO-MODIFL 1609 002473 4573 ERCP, ERROR /ILLEGAL (EXTRA BAD IF HERE) 1610 1611 002474 2210 XMODDN, ISZ XWBLK /RETURN HERE, ALL ARGS DONE? 1612 002475 5241 JMP XMOD1 /NO 1613 002476 5572 JMP I RESTAR /YES 1614 002477 0000 MODTMP, 0 1615 1616 002500 0000 XGET, 0 /SUB. TO SET CURRENT LOC & FLAG 1617 002501 4561 JMS I GETI /SET LOCATION 1618 002502 4573 ERC07, ERROR /MAPPED MODE, NO SUCH ADDRESS 1619 002503 7240 STA 1620 002504 3050 DCA MODIF /SET FLAG 1621 002505 5700 JMP I XGET 1622 1623 /NUMERIC FORMATS HERE 1624 002506 4567 XNUM0, JMS I SORTI /TEST TERMINATOR 1625 002507 5443 GETLST-1-1 /SPACE, COMMA, CR 1626 002510 7423 NUMOPS-GETLST+1 1627 002511 5774 JMP ERCQ /ILLEGAL TERMIN 1628 / 1629 002512 4563 XNUM1, JMS I GETNI /COMMA, SKIP IT 1630 002513 4564 JMS I SSKIPI / SPACE, IGNORE IT 1631 002514 4773 XNUM2, JMS EXPRIN /GET NEXT ARG--EXPRESSION 1632 002515 4300 JMS XGET /SET UP LOCATION 1633 002516 1025 TAD ACC1 1634 002517 4555 DCAICAD / & STORE VALUE 1635 002520 4566 JMS I INCI /INCREMENT LOCATION 1636 002521 2037 ISZ CNTR /ALL MODS DONE? 1637 002522 5306 JMP XNUM0 /NO, TEST TERMIN 1638 002523 5274 JMP XMODDN /YES, TEST NEXT SET 1639 / 1640 002524 1037 XNUM3, TAD CNTR /DONE? 1641 002525 7650 SNA CLA 1642 002526 5274 JMP XMODDN /YES 1643 002527 4300 JMS XGET /NO, SET UP LOC 1644 002530 1074 TAD FILLER 1645 002531 4555 DCAICAD /AND FILL WITH 'FILLER' 1646 002532 4566 JMS I INCI /INCREMENT LOC 1647 002533 2037 ISZ CNTR /DONE? 1648 002534 5324 JMP XNUM3 /NO 1649 002535 5274 JMP XMODDN /YES 1650 1651 /ASCII FORMAT HERE 1652 002536 4346 JMS CGET /GET A CHAR & CHECK FOR CR 1653 002537 4300 XASC1, JMS XGET /SET UP LOC & SET FLAG 1654 002540 1035 TAD CHAR 1655 002541 4555 DCAICAD /STORE THIS CHAR 1656 002542 4566 JMS I INCI /INCREMENT LOC 1657 002543 2037 ISZ CNTR /MODS DONE? 1658 002544 5336 JMP XASC1-1 /NO 1659 002545 5274 JMP XMODDN /YES 1660 1661 002546 0000 CGET, 0 /GET NEXT CHAR. IF CR, MODS DONE 1662 002547 4352 JMS CGTEST /GET & TEST NEXT 1663 002550 5324 JMP XNUM3 /CR, FILL REST WITH 'FILLER' 1664 002551 5746 JMP I CGET 1665 1666 002552 0000 CGTEST, 0 /SUB. TO GET A CHAR & CHECK FOR CR 1667 002553 4563 JMS I GETNI /GET NEXT CHARACTER 1668 002554 1035 TAD CHAR /IS IT A CR? 1669 002555 1105 TAD M215 1670 002556 7640 SZA CLA 1671 002557 2352 ISZ CGTEST /RETURN TO CALL+2 IF NOT 1672 002560 5752 JMP I CGTEST 1673 1674 1675 002561 0000 DO1SP, 0 /OUTPUT " " + AC 1676 002562 4526 JMS I TYPECI 1677 002563 0240 " 1678 002564 5761 JMP I DO1SP /ANOTHER TUFFIE 1679 1680 002565 0000 DO2SP, 0 /OUTPUT " " + AC (PACKED ASCII) 1681 002566 4527 JMS I TWOCI 1682 002567 4040 4040 1683 002570 5765 JMP I DO2SP /FAST & SWEET! 1684 1685 1686 002573 5727 PAGE 002574 5722 002575 6154 002576 5045 002577 3042 1687 /ROUTINE TO EXECUTE THE 'SMASK' (STRING MASK) COMMAND 1688 002600 4557 XSMASK, JMS I GARGI /GET ARGS 1689 002601 1021 TAD TEMP 1690 002602 3076 DCA SMASKL /SAVE -(MASK LENGTH) 1691 002603 1176 TAD MASKBS /SET UP TO STORE WORDS 1692 002604 3011 DCA SPNT 1693 002605 2010 XSMAS1, ISZ DPNT /SKIP 2 WORDS 1694 002606 2010 ISZ DPNT 1695 002607 1410 TAD I DPNT /GET & STORE ONE 1696 002610 6211 CDF 10 1697 002611 3411 DCA I SPNT 1698 002612 6201 CDF 0 1699 002613 2010 ISZ DPNT /SKIP 1 MORE 1700 002614 2021 ISZ TEMP /DONE ? 1701 002615 5205 JMP XSMAS1 /NO 1702 002616 5572 JMP I RESTAR 1703 1704 1705 /XS240 PACKED ASCII FORMAT HERE 1706 002617 1104 XXS20, TAD M240 /SET OFFSET 1707 /PACKED ASCII FORMAT HERE 1708 002620 3331 XPAC0, DCA PNAME /CLEAR OFFSET 1709 002621 1104 XPAC1, TAD M240 /IS CHAR < 240? 1710 002622 1035 TAD CHAR 1711 002623 7700 SMA CLA 1712 002624 5227 JMP XPAC2 /NO, JUST PACK CHAR 1713 002625 7040 CMA 1714 002626 4304 JMS PACK /YES, PACK A FLAG (77) FIRST 1715 002627 1035 XPAC2, TAD CHAR /NOW GO PACK CHAR 1716 002630 1331 TAD PNAME /(WITH DESIRED OFFSET) 1717 002631 4304 JMS PACK 1718 002632 4777 JMS CGET /NOW GET & TEST NEXT 1719 002633 5221 JMP XPAC1 / OK, CONTINUE 1720 1721 /OS/8 ASCII HERE 1722 002634 1061 XOPS1, TAD LOCL /TEST START & COUNT FOR EVEN 1723 002635 7010 RAR /(LOW BIT TO LINK & 1724 002636 7200 CLA / CLEAR AC) 1725 002637 1037 TAD CNTR 1726 002640 7010 RAR /(LOW TO LINK, LINK TO AC0) 1727 002641 7730 SZL SPA CLA /BOTH L=0 & AC0=0 FOR OK 1728 002642 4573 ERC04, ERROR /START OR COUNT NOT EVEN 1729 002643 1045 XOPS2, TAD CHARSW /GET SWITCH 1730 002644 2045 ISZ CHARSW / & BUMP IT 1731 002645 7110 CLL RAR /ROTATE AC 11 INTO LINK 1732 002646 7670 SZL SNA CLA /CHARACTER 3? 1733 002647 5275 JMP XOPS5 /NO, CHAR 1 OR CHAR 2 1734 002650 7240 STA 1735 002651 1056 TAD CAD /YES, BACK UP POINTER 1736 002652 3056 DCA CAD 1737 002653 7344 STA CLL RAL / & SET LOOP COUNT TO -2 1738 002654 3045 DCA CHARSW 1739 002655 1035 XOPS3, TAD CHAR /GET REST OF CHAR 1740 002656 7106 CLL RTL /4 BITS LEFT 1741 002657 7006 RTL 1742 002660 3035 DCA CHAR /SAVE IT 1743 002661 1035 TAD CHAR /NOW MERGE 4 BITS WITH 1744 002662 0103 AND N7400 / A PREVIOUS CHAR 1745 002663 4554 TADICAD 1746 002664 4555 DCAICAD /4 BITS OF 3RD + 1ST OR 2ND 1747 002665 2056 ISZ CAD /BUMP POINTER 1748 002666 2045 ISZ CHARSW /DONE? 1749 002667 5255 JMP XOPS3 1750 002670 1037 TAD CNTR /YES, DONE ALL MODS? 1751 002671 7650 SNA CLA 1752 002672 5776 JMP XMODDN /YES, TEST FOR DONE 1753 002673 4777 XOPS4, JMS CGET /GET & TEST NEXT CHAR 1754 002674 5243 JMP XOPS2 /OK, DO NEXT 1755 / 1756 002675 4775 XOPS5, JMS XGET /SET UP CURRENT LOC 1757 002676 1035 TAD CHAR 1758 002677 4555 DCAICAD /AND STORE CHARACTER 1759 002700 4566 JMS I INCI /INCREMENT LOC 1760 002701 2037 ISZ CNTR /BUMP COUNTER FOR LATER 1761 002702 5273 JMP XOPS4 / SO IGNORE SKIP NOW 1762 002703 5273 JMP XOPS4 1763 1764 002704 0000 PACK, 0 /SUB. TO PACK CHARACTERS 1765 002705 0116 AND N77 /USE ONLY 6 BITS 1766 002706 2045 ISZ CHARSW /CHECK HALF 1767 002707 5316 JMP PACK1 1768 002710 4554 TADICAD /RIGHT HALF, ADD TO LEFT 1769 002711 4555 DCAICAD 1770 002712 1037 TAD CNTR /ALL MODS DONE? 1771 002713 7640 SZA CLA 1772 002714 5704 JMP I PACK /NO 1773 002715 5776 JMP XMODDN /YES 1774 / 1775 002716 4543 PACK1, JMS I RTL6I /LEFT HALF, ROTATE INTO IT 1776 002717 3045 DCA CHARSW /SAVE IT 1777 002720 4775 JMS XGET /SET UP CURRENT LOC 1778 002721 1045 TAD CHARSW 1779 002722 4555 DCAICAD /STORE WORD 1780 002723 4566 JMS I INCI /INCREMENT LOC 1781 002724 2037 ISZ CNTR /BUMP COUNTER FOR LATER 1782 002725 7000 NOP / SO DON'T SKIP NOW 1783 002726 7240 STA 1784 002727 3045 DCA CHARSW /RESET SWITCH 1785 002730 5704 JMP I PACK 1786 1787 1788 002731 0000 PNAME, 0 /PRINT A FILE NAME, PADDED W. SPACES 1789 002732 1025 TAD NAM1 1790 002733 4535 JMS I TWOT / OUTPUT UP TO 1791 002734 1026 TAD NAM2 1792 002735 4535 JMS I TWOT / 6 CHARACTERS 1793 002736 1027 TAD NAM3 1794 002737 4535 JMS I TWOT / OF FILE NAME, 1795 002740 4526 JMS I TYPECI / A "." 1796 002741 0256 ". 1797 002742 1030 TAD NAM4 / & UP TO 2 CHARS 1798 002743 4535 JMS I TWOT / OF EXTENSION. 1799 002744 4532 PNAME1, SPACE1 /OUTPUT A " " 1800 002745 1041 TAD NCNT /11(10) CHARS ON LINE YET? 1801 002746 1374 TAD (-13 1802 002747 7710 SPA CLA 1803 002750 5344 JMP PNAME1 /NO, OUTPUT ANOTHER SPACE 1804 002751 5731 JMP I PNAME 1805 1806 1807 /SUBROUTINE TO GET A NUMERIC ARGUMENT FROM THE 1808 / COMMAND BUFFER AND RETURN IT TO THE 3 WORDS 1809 / POINTED TO BY CALL+1. THE FIRST WORD (BLOCK 1810 / NUMBER) IS NOT CHANGED IF NO BLOCK PART WAS 1811 / GIVEN IN THE COMMAND. 1812 1813 002752 0000 LIMITS, 0 1814 002753 1752 TAD I LIMITS /GET ADDRESS OF 3 WORDS 1815 002754 2352 ISZ LIMITS 1816 002755 3331 DCA PNAME / & SAVE IT 1817 002756 4560 JMS I ARGI /GET COMMAND DATA 1818 002757 1022 TAD TEMP1 /GET BLOCK NUMBER PART 1819 002760 2022 ISZ TEMP1 /WAS A BLOCK PART SPEC'D? 1820 002761 3731 DCA I PNAME / YES, STORE IT 1821 002762 7200 CLA /(CLEAR IN CASE NOT!) 1822 002763 2331 ISZ PNAME /BUMP POINTER 1823 002764 1026 TAD ACC2 1824 002765 0113 AND N7 1825 002766 3731 DCA I PNAME /STORE HIGH 3 BITS 1826 002767 2331 ISZ PNAME 1827 002770 1025 TAD ACC1 1828 002771 3731 DCA I PNAME / & LOW 12 BITS OF ADDR. 1829 002772 5752 JMP I LIMITS 1830 1831 1832 002774 7765 PAGE 002775 2500 002776 2474 002777 2546 1833 /SUBROUTINE TO 'GET' A WORD FROM THE DEVICE. 1834 / 1835 / THE ACTUAL WORD ON THE DEVICE THAT IS ACCESSED 1836 / IS DEPENDENT ON THE MODE SWITCH, AS FOLLOWS: 1837 / 1838 / MODE ACTION 1839 / 1840 / 0 = NORMAL THE HIGH 7 BITS OF THE 15 BIT ADDRESS 1841 / ARE ADDED TO THE SPECIFIED BLOCK # 1842 / TO GET THE ACTUAL BLOCK & THE LOW 8 1843 / BITS OF THE 15 BIT ADDR ARE USED TO 1844 / SPECIFY THE WORD WITHIN THE BLOCK. 1845 / 1846 / -1 = OFFSET THE 12 BIT "OFFSET" (WHICH IS NEGATED) 1847 / IS ADDED TO THE LOW 12 BITS OF THE 1848 / ADDRESS, AND THEN THE NEW ADDRESS IS 1849 / HANDLED AS ABOVE. 1850 / THIS MODE IS USED PRIMARILY WHEN 1851 / WORKING WITH THE OPERATING SYSTEM 1852 / WITH OVERLAYS WHOSE REAL START BLOCK 1853 / AND LOCATION WITHIN A FIELD ARE KNOWN. 1854 / BY SETTING THE "OFFSET" TO THE START 1855 / ADDRESS OF THE OVERLAY, ITS REAL 1856 / ADDRESSES CAN BE USED AND THE PROPER 1857 / LOCATIONS WILL BE ACCESSED. 1858 / 1859 / +1 = SAVE THIS MODE IS USED WITH CORE IMAGE 1860 / "SAVE" FILES ONLY. THE FILE'S CCB 1861 / (CORE CONTROL BLOCK) IS USED TO 1862 / DETERMINE THE REAL LOCATION ON THE 1863 / DEVICE OF THE SPECIFIED 15 BIT ADDR- 1864 / ESS. THE START BLOCK OF THE FILE 1865 / IS USED, AND ANY SPECIFIED "BLOCK" 1866 / PART IS USED TO SPECIFY THE OVERLAY 1867 / WANTED AT THAT ADDRESS. FOR FILES 1868 / WITHOUT OVERLAYS (GENERATED BY THE 1869 / MONITOR "SAVE" COMMAND), THIS PART 1870 / MUST BE ZERO (0) OR NO MATCH WILL 1871 / OCCUR. FOR FILES WITH OVERLAYS 1872 / (GENERATED BY THE PROGRAM "LINK"), 1873 / A LEGAL OVERLAY AT THE SPECIFIED 1874 / ADDRESS MUST BE SPECIFIED FOR A 1875 / MATCH TO OCCUR. THIS MODE CAN ONLY 1876 / BE USED AFTER A "FILE" COMMAND. 1877 / 1878 / +2 = LOAD THIS MODE IS USED WITH OS/8 FORTRAN 1879 / IV LOAD MODULES. THE FILE'S HEADER 1880 / BLOCK IS USED TO DETERMINE THE REAL 1881 / LOCATION ON THE DEVICE OF THE SPECI- 1882 / FIED 15 BIT ADDRESS AND THE "BLOCK" 1883 / PART IS USED TO SPECIFY THE OVERLAY 1884 / WANTED AT THAT ADDRESS. THIS MODE CAN 1885 / ONLY BE USED AFTER A "FILE" COMMAND. 1886 1887 1888 /CALLING SEQUENCE: 1889 / 1890 / JMS I GETI 1891 / RETURN1 /MODE=MAPPED, NO SUCH ADDRESS 1892 / NORMAL RETURN /'CAD' SET, DATA IN AC 1893 /SUBROUTINE 'GET'--PART OF THIS PAGE & ALL OF NEXT 1894 1895 003000 0000 GET, 0 1896 003001 4534 JMS I CTRLI /GO TEST FOR CONTROL-CHARS 1897 003002 1044 TAD MODSW /OK, TEST MODE 1898 003003 7450 SNA 1899 003004 5210 JMP GET0 /NORMAL MODE, NO CHANGES 1900 003005 7700 SMA CLA 1901 003006 5777 JMP GET4 /SAVE MODE, DO MAPPING 1902 003007 1073 TAD OFFSET /OFFSET MODE, ADD IT 1903 003010 4263 GET0, JMS DBLPGS /NOW ADD 'DOUBLE PAGES' 1904 003011 1057 TAD BLK / OF LOC TO BLK TO SET 1905 003012 3054 DCA CBLK /'CURRENT BLOCK' 1906 003013 4227 GET1, JMS GETIO /OUTPUT CURREN (IF NEEDED), GET NEXT 1907 003014 5776 JMP RERROR / READ ERROR, GO TELL ABOUT IT 1908 003015 1044 TAD MODSW /TEST AGAIN FOR OFFSET 1909 003016 7710 SPA CLA 1910 003017 1073 TAD OFFSET /YES, ADD IT AGAIN 1911 003020 1061 TAD LOCL /USE 8 ADDRESS BITS FROM LOC 1912 003021 0121 AND N377 1913 003022 1241 TAD BUFST /INTO BUFFER, TO SET 1914 003023 3056 DCA CAD /'CURRENT ADDRESS' 1915 003024 4554 TADICAD /NOW GET THE WORD 1916 003025 2200 ISZ GET /RETURN TO CALL+2 WITH IT 1917 003026 5600 GETX, JMP I GET /[EXIT TO CALL+1 FOR MAP FAIL] 1918 1919 003027 0000 GETIO, 0 /DO I/O FOR 'GET' & 'SCANER' 1920 003030 1054 TAD CBLK /IS THIS SAME BLOCK AS IS IN 1921 003031 7041 CIA /CORE CURRENTLY? 1922 003032 1257 TAD RBLK 1923 003033 7650 SNA CLA 1924 003034 5261 JMP GETIO2 /YES, USE IT. 1925 003035 2050 ISZ MODIF /NO, ANY CHANGES IN THIS BLK? 1926 003036 5244 JMP GETIO1 /NO, DEVICE OK AS IS 1927 003037 4500 JMS I DEVAD /CALL DEVICE HANDLER 1928 003040 4210 4210 /WRITE, 2 PAGES, FIELD 1 1929 003041 7200 BUFST, IOBUF 1930 003042 0000 WBLK, 0 1931 003043 5775 JMP WERROR /WRITE ERROR 1932 003044 1054 GETIO1, TAD CBLK /NOW UPDATE OUTPUT BLOCK 1933 003045 3242 DCA WBLK 1934 003046 1054 TAD CBLK / AND INPUT BLOCK # 1935 003047 3257 DCA RBLK 1936 003050 3050 DCA MODIF / AND RESET SWITCH 1937 003051 1054 TAD CBLK /SHOW BLOCK NUMBER IN LIGHTS 1938 003052 7421 MQL / (IF THERE ARE ANY!) 1939 003053 7200 CLA 1940 003054 4500 JMS I DEVAD /CALL DEVICE HANDLER 1941 003055 0210 0210 /READ, 2 PAGES, FIELD 1 1942 003056 7200 IOBUF 1943 003057 7777 RBLK, -1 /(NOTHING IN CORE-ILLEGAL BLK #) 1944 003060 5627 JMP I GETIO /READ ERROR 1945 003061 2227 GETIO2, ISZ GETIO /OK, DO NORMAL RETURN 1946 003062 5627 JMP I GETIO 1947 1948 1949 003063 0000 DBLPGS, 0 /CONVERT LOCATION TO DOUBLE-PAGES 1950 003064 1061 TAD LOCL 1951 003065 0103 AND M400 /HIGH 4 BITS HERE 1952 003066 7104 CLL RAL /BECOME LOW 4 BITS 1953 003067 1060 TAD LOCH /FOR A 7 BIT VALUE 1954 003070 7006 RTL 1955 003071 7006 RTL 1956 003072 5663 JMP I DBLPGS 1957 1958 1959 /GET WORD ROUTINE FOR "ODT" COMMANDS 1960 1961 003073 0000 ODGET, 0 1962 003074 1070 TAD SBLK /SET UP BLOCK 1963 003075 3057 DCA BLK 1964 003076 1071 TAD SLOCH 1965 003077 3060 DCA LOCH 1966 003100 1072 TAD SLOCL 1967 003101 3061 DCA LOCL /SET UP LOCATION 1968 003102 4561 JMS I GETI /NOW GET WORD 1969 003103 4573 ERC05, ERROR /MAPPED MODE, NO SUCH ADDRESS 1970 003104 5673 JMP I ODGET / & RETURN WITH IT 1971 1972 1973 /OUTPUT 12 BIT BLOCK # & 15 BIT ADDRESS IN OCTAL 1974 1975 003105 0000 BKLOC, 0 1976 003106 1705 TAD I BKLOC /GET ARGUMENT (ADDR-1) 1977 003107 2305 ISZ BKLOC 1978 003110 3014 DCA GETPNT / & SET UP A-XR 1979 003111 1414 TAD I GETPNT /GET BLOCK PART 1980 003112 4540 JMS I OCTI / & OUTPUT IT 1981 003113 1414 TAD I GETPNT /GET FIELD 1982 003114 0113 AND N7 1983 003115 4527 JMS I TWOCI / & OUTPUT "." & IT 1984 003116 5660 5660 / (".0") 1985 003117 1414 TAD I GETPNT /GET ADDRESS 1986 003120 4540 JMS I OCTI / & OUTPUT IT 1987 003121 5705 JMP I BKLOC 1988 1989 1990 /SUBROUTINE TO GET A COMMAND WORD OR CHARACTER 1991 /FROM THE COMMAND BUFFER. IF THE BUFFER CONTAINS 1992 /ONLY NUMERIC ITEMS, RETURN TO CALL+1. TERMINATOR 1993 /IS SPACE OR CR 1994 003122 0000 GWORD, 0 1995 003123 4564 JMS I SSKIPI /GET NEXT NON-SPACE 1996 003124 1035 TAD CHAR 1997 003125 0116 AND N77 /USE THIS CHAR AS LEFT 1998 003126 4543 JMS I RTL6I / 6 BITS. 1999 003127 3045 DCA CHARSW /SAVE IT 2000 003130 4567 JMS I SORTI /CHECK FOR ^K, ^D, (, ", ', 2001 003131 5350 GWLST1-1 / DIGITS, SPACE & CR 2002 003132 0022 GWOPS1-GWLST1 2003 003133 4563 JMS I GETNI /NONE, IS NEXT A SPACE 2004 003134 4567 JMS I SORTI / OR A C.R.? 2005 003135 5367 GWLST2-1 2006 003136 0022 GWOPS2-GWLST2 2007 003137 1035 TAD CHAR /NONE, USE AS LOWER 6 BITS 2008 003140 0116 AND N77 2009 003141 1045 TAD CHARSW 2010 003142 3045 DCA CHARSW /SAVE IT 2011 003143 4563 GWD1, JMS I GETNI /LOOK FOR SPACE OR C.R. 2012 003144 4567 JMS I SORTI 2013 003145 5367 GWLST2-1 2014 003146 0022 GWOPS2-GWLST2 2015 003147 5343 JMP GWD1 /NEITHER, KEEP LOOKING 2016 / 2017 003150 7240 GWD2, STA /SPACE FOUND, SET SWITCH 2018 003151 3046 GWD3, DCA CRSWT /CR FOUND, RESET SWITCH 2019 003152 1045 TAD CHARSW /RETURN WITH WORD 2020 003153 2322 ISZ GWORD / TO CALL+2 2021 003154 5722 GWD4, JMP I GWORD 2022 /EXIT TO CALL+1 IF ANY NUMERIC ITEM FOUND-- 2023 / ^K, ^D, (, ", ', DIGITS 2024 2025 2026 /"DIRECTORY" FORMAT OUTPUT ROUTINE 2027 003155 0000 DIRDMP, 0 2028 003156 4540 JMS I OCTI /OUTPUT IN OCTAL FIRST 2029 003157 4533 SPACE2 2030 003160 4554 TADICAD 2031 003161 4363 JMS DIROUT / THEN 3 OTHERS 2032 003162 5755 JMP I DIRDMP 2033 2034 /"?" ODT OUTPUT ROUTINE 2035 003163 0000 DIROUT, 0 2036 003164 7041 CIA /ASSUME WAS NEGATIVE 2037 003165 4537 JMS I DECI / & OUTPUT IN DECIMAL 2038 003166 4533 SPACE2 2039 003167 4554 TADICAD 2040 003170 4542 JMS I PDATEI /OUTPUT AGAIN AS DATE 2041 003171 4533 SPACE2 2042 003172 4554 TADICAD 2043 003173 4535 JMS I TWOT /OUTPUT LAST TIME AS PACKED ASCII 2044 003174 5763 JMP I DIROUT 2045 2046 2047 003175 2414 PAGE 003176 2213 003177 3200 2048 /CONTINUATION OF 'GET' -- MAPPING FOR "SAVE" AND "LOAD" 2049 / MODES DONE HERE. 2050 2051 003200 4777 GET4, JMS DBLPGS /GET # DOUBLE-PAGES 2052 003201 3056 DCA CAD / & SAVE IT 2053 003202 7240 STA 2054 003203 1044 TAD MODSW /TEST FOR SAVE OR LOAD MODE 2055 003204 7640 SZA CLA 2056 003205 5300 JMP GETL1 / LOAD MODE 2057 003206 6213 CDF CIF 10 2058 003207 4776 JMS GCCB /SAVE MODE, GET CCB 2059 003210 3361 DCA SEGCNT / & SET UP # SEGMENTS 2060 003211 1077 TAD RBLK1 /SET UP ACTUAL FIRST BLOCK 2061 003212 7001 IAC 2062 003213 3054 DCA CBLK / FOR MAPPING. 2063 003214 6211 GETS1, CDF 10 2064 003215 1414 TAD I GETPNT /GET AN ORIGIN WORD 2065 003216 3357 DCA GETORG 2066 003217 1414 TAD I GETPNT / & A CONTROL WORD. 2067 003220 6201 CDF 0 2068 003221 3360 DCA GETCW 2069 003222 1360 TAD GETCW /TEST FOR FIELD MATCH 2070 003223 7112 CLL RTR 2071 003224 7010 RAR 2072 003225 0113 AND N7 /(MASK OFF COUNT) 2073 003226 7041 CIA 2074 003227 1060 TAD LOCH /SAME? 2075 003230 7640 SZA CLA 2076 003231 5261 JMP GETS2 /NO, TRY NEXT SEGMENT 2077 003232 1061 TAD LOCL /YES, NOW TEST ADDRESSES 2078 003233 0106 AND M200 /(MASK TO PAGE) 2079 003234 7161 STL CIA 2080 003235 1357 TAD GETORG /[ORIG PAGE]-[ADDR PAGE] 2081 003236 7460 SZA SNL /ABOVE THE ORIGIN? 2082 003237 5261 JMP GETS2 /NO, TRY NEXT 2083 003240 7010 RAR /OK, DIVIDE BY 2 (WITH SIGN) 2084 003241 3357 DCA GETORG / & SAVE IT. 2085 003242 1360 TAD GETCW /BEYOND TOP OF SEGMENT? 2086 003243 0107 AND M100 /(MASK OFF FIELD AND MAKE) 2087 003244 7450 SNA 2088 003245 7130 STL RAR / 0 => 40, THEN SUBTRACT 2089 003246 1107 TAD M100 / ONE PAGE) 2090 003247 1357 TAD GETORG 2091 003250 7710 SPA CLA 2092 003251 5261 JMP GETS2 /NO, TRY NEXT 2093 003252 1357 TAD GETORG /YES, UPDATE CBLK TO RIGHT 2094 003253 7041 CIA 2095 003254 4362 JMS UPCBLK / ACTUAL BLOCK 2096 003255 1057 TAD BLK /MUST BE IN "LVL 0" OR 2097 003256 7640 SZA CLA 2098 003257 5775 JMP GETX / RETURN AS BAD 2099 003260 5774 JMP GET1 /NOW GO GET THE DATA 2100 / 2101 003261 7200 GETS2, CLA 2102 003262 1360 TAD GETCW /UPDATE CBLK 2103 003263 0107 AND M100 2104 003264 7450 SNA 2105 003265 7130 STL RAR /(MAKING 0 => 40) 2106 003266 1373 TAD (100 /(ROUND UP PAGE COUNT) 2107 003267 4362 JMS UPCBLK 2108 003270 2361 ISZ SEGCNT /ALL SEGMENTS DONE? 2109 003271 5214 JMP GETS1 /NO, TRY NEXT 2110 003272 1000 TAD OVLFLG /YES, OVERLAYS? (LINK OUTPUT) 2111 003273 7450 SNA 2112 003274 5775 JMP GETX / NO, RETURN TO CALL+1 2113 003275 1372 TAD (4 / YES, RESET POINTER 2114 003276 3014 DCA GETPNT / TO SKIP OVER LVL 0 2115 003277 5302 JMP GETL2 / & CONTINUE 2116 / 2117 003300 6213 GETL1, CDF CIF 10 2118 003301 4771 JMS GHDR /GET & TEST HEADER 2119 003302 6211 GETL2, CDF 10 2120 003303 1414 TAD I GETPNT /GET NUMBER OF OVERLAYS 2121 003304 3361 DCA SEGCNT 2122 003305 1414 TAD I GETPNT /GET PAGE & FIELD 2123 003306 3360 DCA GETCW 2124 003307 1414 TAD I GETPNT /GET REL BLK NUMBER 2125 003310 1077 TAD RBLK1 / + START BLOCK 2126 003311 3054 DCA CBLK / = ABS START BLK, THIS LEVEL 2127 003312 1414 TAD I GETPNT /GET LENGTH, THESE OVERLAYS 2128 003313 6201 CDF 0 2129 003314 3357 DCA GETORG 2130 003315 1360 TAD GETCW /GET DBL-PAGE & FIELD 2131 003316 7450 SNA 2132 003317 5775 JMP GETX / 0 = THE END!!! 2133 003320 0103 AND M400 /CONVERT TO DBL-PAGE # 2134 003321 7106 CLL RTL 2135 003322 7006 RTL 2136 003323 1360 TAD GETCW / IN BITS 5-11 2137 003324 7004 RAL 2138 003325 0117 AND N177 2139 003326 7041 CIA /-(DBL-PG # OF OVLY START) 2140 003327 1056 TAD CAD /+(DBL-PG # OF DESIRED) 2141 003330 7510 SPA 2142 003331 5345 JMP GETL3 / GONE TOO FAR, MISSED IT! 2143 003332 3360 DCA GETCW /= RELATIVE BLOCK NUMBER 2144 003333 1360 TAD GETCW /IS THIS WITHIN THIS OVLY? 2145 003334 7041 CIA 2146 003335 1357 TAD GETORG 2147 003336 7750 SPA SNA CLA 2148 003337 5302 JMP GETL2 / NO, TRY NEXT OVERLAY 2149 003340 1057 TAD BLK /OK, SET UP -(#LVL +1) 2150 003341 7040 CMA 2151 003342 3357 DCA GETORG 2152 003343 1357 TAD GETORG /ADDR IS OK, IS THERE A 2153 003344 1361 TAD SEGCNT / LEVEL WANTED? 2154 003345 7710 GETL3, SPA CLA 2155 003346 5775 JMP GETX /ILLEGAL LEVEL; TOO FAR--EXIT 2156 003347 1360 TAD GETCW /ALL OK! ADD RELATIVE BLK 2157 003350 7410 SKP 2158 003351 1361 GETL4, TAD SEGCNT / TO (LVLS-1)*LENGTH 2159 003352 1054 TAD CBLK 2160 003353 3054 DCA CBLK / TO OVERLAY START BLOCK 2161 003354 2357 ISZ GETORG /[MULTIPLY BY ADDING] 2162 003355 5351 JMP GETL4 2163 003356 5774 JMP GET1 2164 003357 0000 GETORG, 0 2165 003360 0000 GETCW, 0 2166 003361 0000 SEGCNT, 0 2167 2168 003362 0000 UPCBLK, 0 2169 003363 4544 JMS I RTR6I /MOVE COUNT TO BITS 6-11 2170 003364 7110 CLL RAR /DIVIDE FOR DOUBLE PAGES 2171 003365 1054 TAD CBLK /UPDATE 2172 003366 3054 DCA CBLK 2173 003367 5762 JMP I UPCBLK 2174 2175 2176 2177 003371 2042 PAGE 003372 0004 003373 0100 003374 3013 003375 3026 003376 2000 003377 3063 2178 /NUMERIC OUTPUT SUBROUTINES, NO ZERO SUPPRESSION: 2179 2180 003400 0000 OPRT, 0 /4-DIGIT OCTAL 2181 003401 4253 JMS NUMOUT 2182 003402 7000 -1000 2183 003403 7700 -100 2184 003404 7770 -10 2185 003405 0000 0 2186 003406 5600 JMP I OPRT 2187 2188 003407 0000 OCT3, 0 /3-DIGIT OCTAL 2189 003410 4253 JMS NUMOUT 2190 003411 7700 -100 2191 003412 7770 -10 2192 003413 0000 0 2193 003414 5607 JMP I OCT3 2194 2195 003415 0000 BPRT, 0 /3-DIGIT BCD 2196 003416 4253 JMS NUMOUT 2197 003417 7400 -400 2198 003420 7760 -20 2199 003421 0000 0 2200 003422 5615 JMP I BPRT 2201 2202 2203 003423 0000 SGNDP, 0 /4-DIGIT DECIMAL, SIGNED 2204 003424 3300 DCA NUMB 2205 003425 1300 TAD NUMB 2206 003426 7710 SPA CLA 2207 003427 1114 TAD N15 2208 003430 4532 SPACE1 /OUTPUT "-" OR " " 2209 003431 1300 TAD NUMB /NOW OUTPUT IN DECIMAL 2210 003432 7510 SPA 2211 003433 7041 CIA 2212 003434 4236 JMS DPRT 2213 003435 5623 JMP I SGNDP 2214 2215 DECIMAL 2216 2217 003436 0000 DPRT, 0 /4-DIGIT DECIMAL, UNSIGNED 2218 003437 4253 JMS NUMOUT 2219 003440 6030 -1000 2220 003441 7634 -100 2221 003442 7766 -10 2222 003443 0000 0 2223 003444 5636 JMP I DPRT 2224 2225 003445 0000 DEC2, 0 /2-DIGIT DECIMAL, UNSIGNED 2226 003446 0117 AND N177 /MASK IT FIRST 2227 003447 4253 JMS NUMOUT 2228 003450 7766 -10 2229 003451 0000 0 2230 003452 5645 JMP I DEC2 2231 2232 OCTAL 2233 2234 003453 0000 NUMOUT, 0 /THE REAL OUTPUT SUBROUTINE 2235 003454 3300 DCA NUMB /SAVE THE NUMBER 2236 003455 3301 NUMO1, DCA NUMDGT /RESET "DIGIT" TO 0 2237 003456 7300 CLA CLL 2238 003457 1300 TAD NUMB /GET CURRENT VALUE 2239 003460 1653 TAD I NUMOUT /SUBTRACT DIGIT BASE 2240 003461 7420 SNL /DID IT OVERFLOW? 2241 003462 5266 JMP NUMO2 /NO, TOO FAR! 2242 003463 2301 ISZ NUMDGT /YES, BUMP DIGIT 2243 003464 3300 DCA NUMB / & UPDATE VALUE 2244 003465 5256 JMP NUMO1+1 2245 / 2246 003466 7300 NUMO2, CLA CLL 2247 003467 1301 TAD NUMDGT /OUTPUT THE "DIGIT" 2248 003470 4531 DIGIT 2249 003471 2253 ISZ NUMOUT /BUMP TO NEXT ARG 2250 003472 1653 TAD I NUMOUT /DONE ENOUGH? 2251 003473 7640 SZA CLA 2252 003474 5255 JMP NUMO1 2253 003475 1300 TAD NUMB /YES, SO OUTPUT THE LAST 2254 003476 4531 DIGIT / ONE. 2255 003477 5653 JMP I NUMOUT /AND RETURN 2256 003500 0000 NUMB, 0 2257 003501 0000 NUMDGT, 0 2258 2259 003502 0000 SSKIP, 0 /SKIP SPACES IN COMMAND BUFFER. 2260 003503 1035 TAD CHAR 2261 003504 1104 TAD M240 /IS THIS A SPACE? 2262 003505 7640 SZA CLA 2263 003506 5702 JMP I SSKIP /NO, DONE 2264 003507 4563 JMS I GETNI /YES, GET NEXT CHAR 2265 003510 5303 JMP SSKIP+1 / & GO TRY IT 2266 2267 2268 /OS/8 ASCII OUTPUT SUBROUTINE. OUTPUTS 1 CHAR 2269 / FOR EVEN WORD & 2 CHARS FOR ODD WORD. 2270 2271 003511 0000 OSTYPE, 0 2272 003512 4327 JMS OSSET /DO SETUP FOR UNPACKING 2273 003513 4777 JMS I (ASCII /OUTPUT CHARS TO "STANDARD" 2274 003514 2045 ISZ CHARSW /UNPACK 2ND CHARACTER? 2275 003515 5340 JMP OSUNPK / YES, & RETURN TO OSSET CALL! 2276 003516 5711 JMP I OSTYPE /DONE, RETURN TO CALLER 2277 2278 2279 /OS/8 "BYTE" OUTPUT SUBROUTINE. OUTPUT ONE 2280 / 8-BIT OCTAL NUMBER FOR EVEN WORD AND TWO 8- 2281 / BIT OCTAL NUMBERS FOR ODD WORD. USED FOR 2282 / DUMPING OS/8 ".BN" FILES OR ASCII IN OCTAL. 2283 2284 003517 0000 BYTEO, 0 2285 003520 4327 JMS OSSET /DO SETUP FOR UNPACKING 2286 003521 4207 JMS OCT3 /3 DIGIT OCTAL OUTPUT 2287 003522 2045 ISZ CHARSW /UNPACK 2ND "CHAR"? 2288 003523 7410 SKP 2289 003524 5717 JMP I BYTEO / DONE, RETURN 2290 003525 4533 SPACE2 /YES, BUT OUTPUT 2 SPACES 2291 003526 5340 JMP OSUNPK / BEFORE DOING UNPACKING 2292 2293 2294 /OS/8 FORMAT UNPACKING ROUTINES FOR 'OSTYPE' AND 2295 / 'BYTEO'. THE SUBROUTINE SETS UP THE COUNTER 2296 / FOR NUMBER OF OUTPUTS TO DO, SAVING & RESTORING 2297 / THE AC. THE ROUTINE WILL BE CALLED ONLY IF 2 2298 / OUTPUTS BEING DONE AND DOES THE UNPACK OF THE 2299 / 2ND "CHARACTER", RETURNING TO THE CALLER OF THE 2300 / SUBROUTINE! 2301 2302 003527 0000 OSSET, 0 /ENTER HERE TO INITIALIZE 2303 003530 3357 DCA INC /SAVE AC 2304 003531 7001 IAC 2305 003532 0061 AND LOCL /AC = 0 OR 1 2306 003533 7040 CMA /AC = -1 OR -2 (-# TO DO) 2307 003534 3045 DCA CHARSW /SET UP UNPACK COUNT 2308 003535 1357 OSRETN, TAD INC /GET VALUE TO AC 2309 003536 0121 AND N377 /MASK TO 8 BITS 2310 003537 5727 JMP I OSSET 2311 / 2312 003540 7240 OSUNPK, STA /JUMP HERE IF 2ND CHAR TO GET 2313 003541 1056 TAD CAD 2314 003542 3223 DCA SGNDP /POINT TO HIGH WORD 2315 003543 6211 CDF 10 2316 003544 1456 TAD I CAD /GET LOW BITS OF "CHAR" 2317 003545 0103 AND N7400 / MASK TO 4 BITS AND 2318 003546 4544 JMS I RTR6I / MOVE TO BITS 8-11 2319 003547 7012 RTR 2320 003550 3357 DCA INC /SAVING IT HERE FOR LATER! 2321 003551 1623 TAD I SGNDP /NOW GET HIGH BITS OF "CHAR" 2322 003552 0103 AND N7400 / MASK TO 4 BITS AND 2323 003553 6201 CDF 0 2324 003554 7112 CLL RTR / MOVE TO BITS 4-7 2325 003555 7012 RTR 2326 003556 5335 JMP OSRETN /GET OTHER BITS & RETURN! 2327 2328 2329 /SUBROUTINE TO INCREMENT THE "CURRENT LOCATION" 2330 2331 003557 0000 INC, 0 2332 003560 2061 ISZ LOCL /INCREMENT LOW 12 ADDR BITS 2333 003561 5757 JMP I INC /OK AS IS 2334 003562 7100 CLL 2335 003563 1060 TAD LOCH /LOW OVERFLOW, INCR. HIGH 2336 003564 1376 TAD (7771 / 3 ADDRESS BITS (& TEST) 2337 003565 0113 AND N7 2338 003566 3060 DCA LOCH 2339 003567 7430 SZL /DID HIGH OVERFLOW ALSO? 2340 003570 1120 TAD N200 / YES, THEN BUMP BLK ALSO 2341 003571 1057 TAD BLK 2342 003572 3057 DCA BLK 2343 003573 5757 JMP I INC 2344 2345 2346 003576 7771 PAGE 003577 2163 2347 /OUTPUT PACKED STRING, ADDRESS IN CALL+1, 2348 / TERMINATOR IS XX00. 2349 003600 0000 TYPES, 0 2350 003601 1600 TAD I TYPES 2351 003602 2200 ISZ TYPES 2352 003603 4205 JMS TYPSTR 2353 003604 5600 JMP I TYPES 2354 2355 /OUTPUT PACKED STRING, ADDRESS IN AC, TERMIN IS XX00 2356 003605 0000 TYPSTR, 0 2357 003606 3341 DCA GETNT 2358 003607 6211 TTAGN, CDF 10 2359 003610 1741 TAD I GETNT 2360 003611 6201 CDF 0 2361 003612 2341 ISZ GETNT 2362 003613 4221 JMS PACOUT 2363 003614 1276 TAD GNAME 2364 003615 0116 AND N77 2365 003616 7650 SNA CLA 2366 003617 5605 JMP I TYPSTR 2367 003620 5207 JMP TTAGN 2368 2369 /PACKED ASCII OUTPUT ROUTINE 2370 003621 0000 PACOUT, 0 2371 003622 3276 DCA GNAME 2372 003623 1276 TAD GNAME /USE LEFT 6 BITS 2373 003624 4544 JMS I RTR6I 2374 003625 4231 JMS ONECHR 2375 003626 1276 TAD GNAME /USE RIGHT 6 BITS 2376 003627 4231 JMS ONECHR 2377 003630 5621 JMP I PACOUT 2378 2379 /OUTPUT TRIMMED OR UNTRIMMED ASCII IN THE AC 2380 003631 0000 ONECHR, 0 /NO CODE FOR CR/LF 2381 003632 0116 AND N77 2382 003633 7450 SNA 2383 003634 5631 JMP I ONECHR /IGNORE "@" 2384 003635 1377 TAD (-40 2385 003636 7500 SMA 2386 003637 1107 TAD M100 2387 003640 4526 JMS I TYPECI 2388 003641 0340 340 2389 003642 5631 JMP I ONECHR 2390 2391 2392 /SUBROUTINE TO MATCH CHAR AGAINST LIST1 AND JUMP 2393 /THROUGH LIST2 WHEN MATCH FOUND. BOTH LISTS IN 2394 /FIELD 1. 2395 2396 003643 0000 SORTJ, 0 2397 003644 7450 SNA 2398 003645 1035 TAD CHAR /USE CHAR IF AC = 0 2399 003646 3275 DCA SORTEM /ITEM TO LOOK UP 2400 003647 1643 TAD I SORTJ 2401 003650 2243 ISZ SORTJ /GET LIST1 ADDRESS 2402 003651 3012 DCA SCANX1 2403 003652 6211 SORT1, CDF 10 2404 003653 1412 TAD I SCANX1 /COMPARE WITH SORTEM 2405 003654 6201 CDF 0 2406 003655 7450 SNA /0 ? 2407 003656 5273 JMP SORT2 /END OF LIST 2408 003657 7161 CIA STL 2409 003660 1275 TAD SORTEM 2410 003661 7640 SZA CLA /DOES IT MATCH? 2411 003662 5252 JMP SORT1 /NO, TRY NEXT 2412 003663 1012 TAD SCANX1 /YES, GET ADDRESS... 2413 003664 1643 TAD I SORTJ 2414 003665 3243 DCA SORTJ /...OF JUMP ADDRESS 2415 003666 6211 CDF 10 2416 003667 1643 TAD I SORTJ 2417 003670 3243 DCA SORTJ 2418 003671 6201 CDF 0 2419 003672 5643 JMP I SORTJ /GO TO ROUTINE 2420 003673 2243 SORT2, ISZ SORTJ /MATCH NOT FOUND, 2421 003674 5643 JMP I SORTJ /EXIT TO CALL+3 2422 003675 0000 SORTEM, 0 2423 2424 2425 /SUBROUTINE TO GET A NAME FOR 'XOPEN', 'XFILE', 'XDEV' & 'XDDEV' 2426 2427 003676 0000 GNAME, 0 /GET A FILE OR DEVICE NAME 2428 003677 3022 DCA TEMP1 /SET UP "." SWITCH AND 2429 003700 1022 TAD TEMP1 / FILE/DEVICE SWITCH 2430 003701 3023 DCA TEMP2 2431 003702 3025 DCA NAM1 2432 003703 3026 DCA NAM2 /CLEAR NAME AREA 2433 003704 3027 DCA NAM3 2434 003705 1376 TAD (2326 / & INIT EXTENSION TO "SV" 2435 003706 3030 DCA NAM4 2436 003707 1375 TAD (NAM1 / & INIT POINTER FOR NAME 2437 003710 3021 DCA TEMP 2438 003711 4564 JMS I SSKIPI /SKIP LEADING SPACES 2439 003712 7240 STA 2440 003713 1016 TAD COMOUT /BACK UP THE POINTER 2441 003714 3016 DCA COMOUT 2442 003715 4351 JMS GPAIR /1ST & 2ND CHAR 2443 003716 4351 JMS GPAIR /3RD & 4TH 2444 003717 4351 GETSCN, JMS GPAIR /5TH & 6TH OR 1ST & 2ND EXT. 2445 003720 4341 JMS GETNT /SCAN FOR TERMINATOR 2446 003721 7200 CLA 2447 003722 5320 JMP .-2 2448 / 2449 003723 1023 GETCOL, TAD TEMP2 /":" SEEN, DEVICE OR FILE NAME? 2450 003724 7640 SZA CLA 2451 003725 5346 JMP GETNTC / FILE, JUST USE THE ":" 2452 003726 2023 ISZ TEMP2 / DEVICE, FLAG ":" SEEN 2453 003727 5320 JMP GETSCN+1 / AND SCAN TO TERMIN. 2454 / 2455 003730 2022 GETPER, ISZ TEMP1 /"." FOUND, FIRST ONE? 2456 003731 4573 ERCM, ERROR /NO, THE END... 2457 003732 3030 DCA NAM4 /YES, RESET EXT, 2458 003733 1374 TAD (NAM4 / SET POINTER 2459 003734 3021 DCA TEMP 2460 003735 5317 JMP GETSCN / & GO GET IT 2461 / 2462 003736 7240 GETEND, STA /TERM = SPACE, SET SWITCH 2463 003737 3046 DCA CRSWT /TERM = CR, RESET SWITCH 2464 003740 5676 JMP I GNAME /..DONE.... 2465 2466 003741 0000 GETNT, 0 /GET & TEST A CHAR 2467 003742 4563 JMS I GETNI /GET NEXT CHAR 2468 003743 4567 JMS I SORTI /TEST IT 2469 003744 5444 GETLST-1 2470 003745 0005 GETOPS-GETLST 2471 003746 1035 GETNTC, TAD CHAR /OK, USE CHAR 2472 003747 0116 AND N77 /MASK TO 6 BITS 2473 003750 5741 JMP I GETNT / & EXIT WITH IT 2474 2475 003751 0000 GPAIR, 0 /GET RIGHT/LEFT-HALF-CHARS 2476 003752 4341 JMS GETNT 2477 003753 4543 JMS I RTL6I /TO LEFT HALF 2478 003754 3421 DCA I TEMP / & STORE IT 2479 003755 4341 JMS GETNT 2480 003756 1421 TAD I TEMP /MERGE WITH LAST LEFT 2481 003757 3421 DCA I TEMP 2482 003760 2021 ISZ TEMP /BUMP POINTER 2483 003761 5751 JMP I GPAIR 2484 2485 003762 0000 RTL6, 0 /ROTATE AC 6 LEFT 2486 003763 7106 CLL RTL 2487 003764 7006 RTL 2488 003765 7006 RTL 2489 003766 5762 JMP I RTL6 2490 2491 003767 0000 RTR6, 0 /ROTATE AC 6 RIGHT 2492 003770 7112 CLL RTR 2493 003771 7012 RTR 2494 003772 7012 RTR 2495 003773 5767 JMP I RTR6 2496 2497 2498 003774 0030 PAGE 003775 0025 003776 2326 003777 7740 2499 /SUBROUTINE TO READ A "LINE" FROM THE USER. IT CHECKS FOR 2500 / RUBOUT, ^U AND ^R FIRST, THEN CHECKS FOR ONE OF A LIST OF 2501 / TERMINATORS PASSED BY THE CALLER. AS WITH OS/8, RUBOUT 2502 / DELETES CHARACTES AND ^U DELETES THE CURRENT LINE. ^R 2503 / (FOR RETYPE) ECHOES THE CURRENT COMMAND BUFFER IN THE SAME 2504 / MANNER AS LINE-FEED DOES FOR OS/8. IF THE CHARACTER IS A 2505 / TERMINATOR, CONTROL PASSES DIRECTLY TO THE CORRESPONDING 2506 / CALLER ROUTINE (OUT OF THIS ROUTINE). INPUT CHARACTERS 2507 / ARE ALSO TRANSLATED FROM LOWER CASE TO UPPER CASE. EXIT 2508 / IN THE NORMAL MANNER OCCURS ONLY ON BUFFER EMPTY FROM 2509 / RUBOUT OR ^U. 2510 2511 004000 0000 READ, 0 /READ AND ECHO INPUT CHARACTER 2512 004001 1600 TAD I READ /GET TWO LIST ADDRESS PARAMETERS 2513 004002 2200 ISZ READ 2514 004003 3220 DCA RETERM / FROM CALLER AND SET UP IN 2515 004004 1600 TAD I READ / SORT ROUTINE CALL 2516 004005 2200 ISZ READ 2517 004006 3221 DCA RETERM+1 2518 004007 4312 RENEXT, JMS RKEY /GET A CHAR 2519 004010 5231 JMP RUBO /RUBOUT, GO BEGIN DELETIONS 2520 004011 3035 REKEY, DCA CHAR 2521 004012 4567 JMS I SORTI /CHECK FOR CTRL-R & CTRL-U 2522 004013 5523 REACTL-1 2523 004014 0003 REACTS-REACTL 2524 004015 1035 TAD CHAR 2525 004016 4536 JMS I TYPEI 2526 004017 4567 JMS I SORTI /CHECK FOR CALLER TERMINATORS 2527 004020 0000 RETERM, 0 / PARAMETERS HERE 2528 004021 0000 0 2529 004022 1035 TAD CHAR /NONE, JUST STORE IN BUFFER 2530 004023 7410 SKP 2531 004024 1377 RESPC, TAD (" /FOR CAMMAND INPUT, TAB -> SPACE! 2532 004025 6211 CDF 10 2533 004026 3415 DCA I COMIR /COMMAND (LINE) INPUT BUFFER 2534 004027 6201 CDF 0 2535 004030 5207 JMP RENEXT 2536 / 2537 /+++ FOR SCOPE OPERATION, RUBOUTS CAUSE OUTPUT OF THE 2538 /+++ SEQUENCE BACKSPACE, SPACE, BACKSPACE TO CLEAR THE 2539 /+++ PREVIOUS CHARACTER FROM THE SCREEN. IF "SCOPE 2540 /+++ MODE" IS SET, RUBO IS OVERLAID ON STARTUP. 2541 2542 /*** FOR BATCH OPERATION, RUBOUTS ARE IGNORED BY 'RKEY' 2543 /*** AND 'RUBO' IS OVERLAID WITH CODE TO IGNORE A LINE- 2544 /*** FEED THAT FOLLOWS A CARRIAGE-RETURN. 2545 / 2546 004031 4303 RUBO, JMS BTEST /RUBOUT TYPED,TEST FOR EMPTY 2547 004032 5261 JMP RUBOF / INPUT BUFFER EMPTY! 2548 004033 4526 JMS I TYPECI /OK, OUTPUT 1ST "\" 2549 004034 0334 "\ 2550 004035 4303 RUBO1, JMS BTEST /NOW EMPTY? 2551 004036 5257 JMP RUBOE / YES, LINE END 2552 004037 1015 TAD COMIR /ECHO LAST CHAR IN BUFFER 2553 004040 3341 DCA ENDC 2554 004041 6211 CDF 10 2555 004042 1741 TAD I ENDC 2556 004043 6201 CDF 0 2557 004044 4536 JMS I TYPEI 2558 004045 7240 STA 2559 004046 1015 TAD COMIR /NOW BACK UP POINTER 2560 004047 3015 DCA COMIR 2561 004050 4312 JMS RKEY /GET A CHAR 2562 004051 5235 JMP RUBO1 /ANOTHER RUBOUT, GO HANDLE 2563 004052 3303 DCA BTEST /SAVE THE CHAR 2564 004053 4526 JMS I TYPECI / DO CLOSING "\" 2565 004054 0334 "\ 2566 004055 1303 TAD BTEST 2567 004056 5211 JMP REKEY /& GO USE NEW CHAR 2568 / 2569 004057 4526 RUBOE, JMS I TYPECI /BUFFER WAS EMPTIED, 2570 004060 0334 "\ /OUTPUT CLOSING "\" 2571 004061 4530 RUBOF, JMS I CRLFI / & A CR/LF 2572 004062 5600 JMP I READ 2573 / 2574 004063 4526 RECHO, JMS I TYPECI /ECHO "^R" & THEN 2575 004064 0222 "R-100 2576 004065 4530 JMS I CRLFI /ECHO CURRENT LINE 2577 004066 1174 TAD COMST /INIT AUTO-XR 2578 004067 3016 DCA COMOUT 2579 004070 1016 RECHO1, TAD COMOUT /DONE? 2580 004071 7041 CIA 2581 004072 1015 TAD COMIR 2582 004073 7650 SNA CLA 2583 004074 5207 JMP RENEXT /YES, MORE INPUT 2584 004075 4563 JMS I GETNI /NO, GET NEXT CHAR 2585 004076 4536 JMS I TYPEI / & OUTPUT IT 2586 004077 5270 JMP RECHO1 / & CONTINUE 2587 / 2588 004100 4526 RERASE, JMS I TYPECI /OUTPUT "^U" 2589 004101 0225 "U-100 2590 004102 5261 JMP RUBOF /GO OUTPUT CR/LF & EXIT 2591 2592 004103 0000 BTEST, 0 /TEST FOR COMM. BUFFER EMPTY 2593 004104 1015 TAD COMIR 2594 004105 7041 CIA 2595 004106 1174 TAD COMST 2596 004107 7640 SZA CLA /EMPTY? 2597 004110 2303 ISZ BTEST /NO, STILL OK, TO CALL+2 2598 004111 5703 JMP I BTEST / OTHERWISE TO CALL+1 2599 004112 0000 RKEY, 0 /GET A NON-NULL CHAR, TEST & TRANSLATE 2600 004113 6031 KSF /*** JMS I CTRLI /CHECK KEYBOARD 2601 004114 5313 JMP .-1 /*** CIF BAT /BATCH OPER. 2602 004115 4534 JMS I CTRLI /*** JMS I BATINI 2603 004116 6031 KSF /*** ERROR /EOF!! 2604 004117 5313 JMP RKEY+1 /*** NOP /MUST USE SPECIAL CARE 2605 004120 6036 KRB /*** NOP / TO HANDLE CTRL-Q! 2606 004121 0117 AND N177 /MASK OFF PARITY 2607 004122 7450 SNA 2608 004123 5313 JMP RKEY+1 /NULL CHAR 2609 004124 1376 TAD (-177 /IS IT A RUBOUT? 2610 004125 7450 SNA 2611 004126 5712 RKEY0, JMP I RKEY /YES, EXIT TO CALL+1 /*** BATCH 2612 004127 2312 ISZ RKEY /NO, EXIT TO CALL+2 /*** OPER. 2613 004130 1375 TAD (2 /TEST FOR ALT-MODES 2614 004131 7500 SMA 2615 004132 5337 JMP RKEY1 / 375 OR 376 2616 004133 1374 TAD (35 /IS IT LOWER CASE? 2617 004134 7500 SMA 2618 004135 1373 TAD (-40 /YES, MAKE UPPER CASE 2619 004136 1372 TAD (-35 2620 004137 1371 RKEY1, TAD (375 /RESTORE CHAR & ADD PARITY 2621 004140 5712 JMP I RKEY / & EXIT WITH IT 2622 2623 2624 /SUBROUTINE TO TERMINATE COMMAND BUFFER WITH A C.R. 2625 /RETURN TO CALL+1 IF ONLY A CR (EXCLUDING LEADING 2626 /SPACES) IN BUFFER, TO CALL+2 IF ANYTHING ELSE. 2627 004141 0000 ENDC, 0 2628 004142 1370 TAD (215 /PUT A CR IN BUFFER 2629 004143 6211 CDF 10 2630 004144 3415 DCA I COMIR 2631 004145 6201 CDF 0 2632 004146 1174 TAD COMST /INIT'L BUFFER UNLOAD 2633 004147 3016 DCA COMOUT 2634 004150 1035 TAD CHAR /SAVE CHAR FOR POSSIBLE 2635 004151 3021 DCA TEMP / USE BY 'WCHEK' 2636 004152 4563 JMS I GETNI /GET FIRST CHARACTER 2637 004153 4564 JMS I SSKIPI /SKIP LEADING SPACES 2638 004154 1035 TAD CHAR /GET 1ST NON-SPACE 2639 004155 1105 TAD M215 /IS IT A CR? 2640 004156 7640 SZA CLA /YES, NOTHING IN BUFFER 2641 004157 2341 ISZ ENDC /OTHERWISE RETURN TO CALL+2 2642 004160 5741 JMP I ENDC 2643 2644 2645 004161 0000 DODIG, 0 /OUTPUT AC AS AN ASCII DIGIT 2646 004162 4526 JMS I TYPECI 2647 004163 0260 "0 2648 004164 5761 JMP I DODIG 2649 2650 2651 004170 0215 PAGE 004171 0375 004172 7743 004173 7740 004174 0035 004175 0002 004176 7601 004177 0240 2652 /'FPP'/OCTAL/'PDP' OUTPUT ROUTINE FOR ODT 2653 004200 0000 ODTOUT, 0 2654 004201 1017 TAD TYPSW /-1, 0, +1 2655 004202 1377 TAD (TAD ODTOL /GENERATE ADDRESS OF DESIRED 2656 004203 3204 DCA ODTOPT / OUTPUT ROUTINE 2657 004204 7402 ODTOPT, HLT /[USED TWICE!] 2658 004205 3204 DCA ODTOPT 2659 004206 4562 JMS I ODGETI /GET SPECIFIED WORD 2660 004207 4604 JMS I ODTOPT / & OUTPUT IT 2661 004210 5600 JMP I ODTOUT 2662 2663 004211 4400 FPPDMP /-1 = OCTAL + FPP 2664 004212 3400 ODTOL, OPRT / 0 = OCTAL 2665 004213 4214 PDPDMP /+1 = OCTAL + PDP 2666 2667 2668 /OCTAL & 'PDP' (SYMBOLIC) DUMP ROUTINE 2669 004214 0000 PDPDMP, 0 2670 004215 4540 JMS I OCTI /FIRST OUTPUT IN OCTAL 2671 004216 4533 SPACE2 /FOLLOWED BY 2 SPACES, 2672 004217 4221 JMS PDPOUT / & THEN AS 'PDP' 2673 004220 5614 JMP I PDPDMP 2674 2675 2676 /'PDP' (SYMBOLIC) INSTRUCTION DECODING 2677 004221 0000 PDPOUT, 0 2678 004222 7200 CLA 2679 004223 4776 JMS OPRTST /TEST FOR OPR & IOT 2680 004224 5262 JMP OPRS / OPR 2681 004225 4775 JMS IOPRNT / IOT 2682 004226 4774 SYMS, JMS GETOP /GET OP-CODE TO BITS 9-11 2683 004227 7004 RAL / * 2 2684 004230 4773 JMS SYMTYP /OUTPUT 3 CHAR SYMBOL & SPACE 2685 004231 2600 INSLST /(TABLE FOR INDEXING) 2686 004232 7776 -2 /(- # WORDS) 2687 004233 4776 JMS OPRTST /TEST FOR OPR & IOT 2688 004234 5256 JMP SYMEND / OPR, DONE 2689 004235 5257 JMP IOTS / IOT 2690 004236 4554 TADICAD /MEMORY REF., INDIRECT? 2691 004237 0372 AND (400 2692 004240 7650 SNA CLA 2693 004241 5244 JMP REFS1 /NO 2694 004242 4527 JMS I TWOCI /YES, OUTPUT "I " 2695 004243 1140 1140 2696 004244 4554 REFS1, TADICAD /SET UP ADDR BITS 2697 004245 0117 AND N177 2698 004246 3771 DCA BITVAL /SAVE THEM 2699 004247 4554 TADICAD /IS THIS A 'PAGE 0 REF'? 2700 004250 0120 AND N200 2701 004251 7640 SZA CLA 2702 004252 1061 TAD LOCL /NO, USE PAGE BITS 2703 004253 0106 AND M200 2704 004254 1771 TAD BITVAL /OK, NOW ADD ADDR BITS 2705 004255 4540 REFS2, JMS I OCTI /OUTPUT IN OCTAL 2706 004256 5621 SYMEND, JMP I PDPOUT /DONE, RETURN 2707 2708 / 2709 004257 4554 IOTS, TADICAD /USE ONLY LAST 9 BITS 2710 004260 0370 AND (777 2711 004261 5255 JMP REFS2 /AND OUTPUT IN OCTAL 2712 / 2713 004262 4554 OPRS, TADICAD /IS THIS A NOP? 2714 004263 0370 AND (777 2715 004264 7450 SNA 2716 004265 5226 JMP SYMS /YES, OUTPUT "NOP " 2717 004266 0120 AND N200 /IS THERE A CLA IN IT? 2718 004267 7650 SNA CLA 2719 004270 5275 JMP OPRS1 /NO, CONTINUE 2720 004271 4773 JMS SYMTYP /YES, OUTPUT "CLA " 2721 004272 2726 CLANAM 2722 004273 7776 -2 2723 004274 7001 IAC 2724 004275 3036 OPRS1, DCA CNT /SET ANYTHING OUTPUT SWITCH 2725 004276 4554 TADICAD /SET UP WORD FOR DECODE 2726 004277 4543 JMS I RTL6I 2727 004300 7010 RAR 2728 004301 3771 DCA BITVAL /SAVE IT 2729 004302 4554 TADICAD /CHECK FOR OPR1, OPR2 OR EAE 2730 004303 7110 CLL RAR 2731 004304 0120 AND N200 2732 004305 7450 SNA 2733 004306 5333 JMP OPR1A /OPR1 MICRO-INSTRUCTION 2734 004307 7620 SNL CLA 2735 004310 5767 JMP OPR2A /OPR2 MICRO-INSTRUCTION 2736 / 2737 /DO THE DOCODING FOR THE EAE MICRO-INSTRUCTIONS 2738 004311 1366 EAE, TAD (EAELST-2 /SET UP EAE LIST POINTER 2739 004312 3765 DCA BITPNT 2740 004313 4764 JMS BITS /SHIFT & CHECK BIT 5 2741 004314 4763 JMS OPRTYP /IF = 1, "MQA " 2742 004315 1771 TAD BITVAL /CHECK BIT 6 2743 004316 7104 CLL RAL /("SCA" IN "A" MODE OF 8/E 2744 004317 3771 DCA BITVAL / 'MODE BIT' IN "B" MODE) 2745 004320 7430 SZL 2746 004321 1115 TAD N20 /IF ON, USE OTHER WORDS 2747 004322 3332 DCA EAETMP 2748 004323 4764 JMS BITS /CHECK BIT 7 2749 004324 4763 JMS OPRTYP / "MQL " 2750 004325 4554 TADICAD 2751 004326 0362 AND (16 2752 004327 1332 TAD EAETMP /(ADD SWITCH WORD) 2753 004330 4761 JMS SYMLIM /CHECK FOR & OUTPUT LAST INST. 2754 004331 7742 -36 /UPPER LIMIT 2755 004332 0000 EAETMP, 0 2756 / 2757 /DO THE DECODING FOR THE OPR1 MICRO-INSTRUCTIONS 2758 004333 1360 OPR1A, TAD (OP1LST-2 /SET OPR1 LIST 2759 004334 3765 DCA BITPNT 2760 004335 4764 JMS BITS /SHIFT & CHECK BIT 5 2761 004336 4763 JMS OPRTYP /IF = 1, OUTPUT "CLL " 2762 004337 4764 JMS BITS /CHECK BIT 6 2763 004340 4763 JMS OPRTYP / "CMA " 2764 004341 4764 JMS BITS /CHECK BIT 7 2765 004342 4763 JMS OPRTYP / "CML " 2766 004343 2765 ISZ BITPNT /BUMP POINTER 2767 004344 2765 ISZ BITPNT 2768 004345 4554 TADICAD /LOOK FOR IAC 2769 004346 7010 RAR 2770 004347 7630 SZL CLA 2771 004350 4763 JMS OPRTYP /OUTPUT "IAC " 2772 004351 4554 TADICAD /SET UP TO CHECK FOR ROTATES 2773 004352 0362 AND (16 2774 004353 4761 JMS SYMLIM /CHECK & OUTPUT 2775 004354 7766 -12 /UPPER LIMIT 2776 2777 2778 004360 2616 PAGE 004361 4433 004362 0016 004363 4467 004364 4456 004365 4471 004366 2662 004367 4405 004370 0777 004371 4522 004372 0400 004373 4475 004374 6243 004375 4523 004376 4547 004377 1212 2779 /OCTAL & 'FPP' (SYMBOLIC) DUMP ROUTINE 2780 004400 0000 FPPDMP, 0 2781 004401 4540 JMS I OCTI /FIRST OUTPUT IN OCTAL 2782 004402 4533 SPACE2 / THEN 2 SPACES 2783 004403 4777 JMS FPPOUT / & THEN AS FPP 2784 004404 5600 JMP I FPPDMP 2785 2786 /THE FOLLOWING ROUTINES ARE USED BY 'PDPOUT' 2787 2788 /DO THE DECODING FOR THE OPR2 MICROINSTRUCTIONS 2789 004405 1376 OPR2A, TAD (OP2LST-2 /SET UP LIST POINTER 2790 004406 3271 DCA BITPNT 2791 004407 4256 JMS BITS /SHIFT & CHECK BIT 5 2792 004410 4315 JMS OPR2T /IF 1, OUTPUT "SMA " OR "SPA " 2793 004411 4256 JMS BITS /CHECK BIT 6 2794 004412 4315 JMS OPR2T / "SZA " OR "SNA " 2795 004413 4256 JMS BITS /CHECK BIT 7 2796 004414 4315 JMS OPR2T / "SNL " OR "SZL " 2797 004415 4256 JMS BITS /CHECK BIT 8 2798 004416 7410 SKP 2799 004417 5224 JMP OPR2B /IT WAS 0 2800 004420 4554 TADICAD /MUST CHECK FOR "SKP " 2801 004421 0375 AND (160 2802 004422 7650 SNA CLA /ARE ALL SKIP SENSES = 0? 2803 004423 4267 JMS OPRTYP /YES, SO OUTPUT "SKP " 2804 004424 1374 OPR2B, TAD (OP2LST+14 /SET UP CHECK FOR OSR & HLT 2805 004425 3271 DCA BITPNT 2806 004426 4256 JMS BITS /CHECK BIT 9 2807 004427 4267 JMS OPRTYP / "OSR " 2808 004430 4256 JMS BITS /CHECK BIT 10 2809 004431 4267 JMS OPRTYP / "HLT " 2810 004432 5246 JMP OPEND /CHECK FOR ANY DONE 2811 2812 004433 0000 SYMLIM, 0 /CHECK LAST SYMBOL AGAINST LIMIT 2813 004434 3035 DCA CHAR /SAVE AC 2814 004435 1035 TAD CHAR 2815 004436 7550 SPA SNA /IS IT > 0? 2816 004437 5246 JMP OPEND /NO, TEST IF ANY OUTPUT DONE 2817 004440 1633 TAD I SYMLIM /IT IS > UPPER LIMIT? 2818 004441 7740 SMA SZA CLA 2819 004442 5246 JMP OPEND /NO, GO CHECK AGAIN 2820 004443 1035 TAD CHAR /CALCULATE ADDRESS 2821 004444 4267 JMS OPRTYP / & OUTPUT LAST 2822 004445 5773 JMP SYMEND /...DONE 2823 / 2824 004446 7200 OPEND, CLA 2825 004447 1036 TAD CNT /ANYTHING OUTPUT? 2826 004450 7640 SZA CLA 2827 004451 5773 JMP SYMEND /YES, DONE WITH OUTPUT 2828 004452 4275 JMS SYMTYP /NO, OUTPUT "OPR " 2829 004453 2730 OPRMES 2830 004454 7776 -2 2831 004455 5772 JMP IOTS /NOW GO OUTPUT LAST 9 BITS 2832 2833 004456 0000 BITS, 0 /DECODE A WORD ONE BIT AT A TIME 2834 004457 1322 TAD BITVAL /SHIFT A BIT INTO LINK 2835 004460 7104 CLL RAL 2836 004461 3322 DCA BITVAL /SAVE FOR LATER 2837 004462 2271 ISZ BITPNT /BUMP SYMBOL POINTER 2838 004463 2271 ISZ BITPNT 2839 004464 7420 SNL 2840 004465 2256 ISZ BITS /TO CALL+2 IF L = 0 2841 004466 5656 JMP I BITS 2842 2843 004467 0000 OPRTYP, 0 /OUTPUT AN OPR SYMBOL 2844 004470 4275 JMS SYMTYP /OUTPUT THE SYMBOL 2845 004471 0000 BITPNT, 0 /ADDRESS 2846 004472 7776 -2 2847 004473 2036 ISZ CNT /SET SWITCH 2848 004474 5667 JMP I OPRTYP 2849 2850 004475 0000 SYMTYP, 0 /OUTPUT A SYMBOL 2851 004476 1675 TAD I SYMTYP /ADD TABLE ADDR TO ANY INDEX 2852 004477 2275 ISZ SYMTYP 2853 004500 3314 DCA SYMPNT /SAVE POINTER 2854 004501 1675 TAD I SYMTYP /GET COUNT OF WORDS 2855 004502 2275 ISZ SYMTYP 2856 004503 3256 DCA BITS / & SAVE IT 2857 004504 6211 SYMNXT, CDF 10 /"SYMBOL"S IN FIELD 1 2858 004505 1714 TAD I SYMPNT 2859 004506 6201 CDF 0 2860 004507 4535 JMS I TWOT /OUTPUT A PAIR OF LETTERS 2861 004510 2314 ISZ SYMPNT 2862 004511 2256 ISZ BITS /DONE? 2863 004512 5304 JMP SYMNXT 2864 004513 5675 JMP I SYMTYP 2865 004514 0000 SYMPNT, 0 2866 2867 004515 0000 OPR2T, 0 /OUTPUT AN OPR2 SYMBOL 2868 004516 4554 TADICAD 2869 004517 0371 AND (10 /IF BIT IS ON, REVERSE THE 2870 004520 4267 JMS OPRTYP /SENSE OF THE SKIP 2871 004521 5715 JMP I OPR2T 2872 2873 004522 0000 BITVAL, 0 2874 2875 2876 004523 0000 IOPRNT, 0 /OUTPUT I/O NAMES 2877 004524 1370 TAD (IOTTAB /SET UP POINTER 2878 004525 3344 IOPRN1, DCA IOPNT /SET (OR UPDATE) POINTER 2879 004526 6211 CDF 10 2880 004527 1744 TAD I IOPNT /GET NEXT IOT 2881 004530 6201 CDF 0 2882 004531 7450 SNA /AT END OF TABLE? 2883 004532 5723 JMP I IOPRNT /YES, CODE NOT FOUND 2884 004533 7041 CIA 2885 004534 4554 TADICAD /NO, DO THEY MATCH? 2886 004535 7650 SNA CLA 2887 004536 5342 JMP IOPRN2 /YES, OUTPUT NAME 2888 004537 1367 TAD (4 /NO, UPDATE POINTER 2889 004540 1344 TAD IOPNT 2890 004541 5325 JMP IOPRN1 / & TRY AGAIN 2891 / 2892 004542 7001 IOPRN2, IAC /WORD FOLLOWS CODE 2893 004543 4275 JMS SYMTYP /OUTPUT THE MNEMONIC 2894 004544 0000 IOPNT, 0 2895 004545 7775 -3 2896 004546 5773 JMP SYMEND / & RETURN 2897 2898 2899 004547 0000 OPRTST, 0 /TEST "INSTRUCTION" FOR OPR & IOT 2900 004550 4554 TADICAD /GET WORD 2901 004551 0122 AND N7000 /MASK OFF OP CODE 2902 004552 1366 TAD (1000 /IS IT AN OPR? 2903 004553 7450 SNA 2904 004554 5747 JMP I OPRTST /YES, EXIT TO CALL+1 2905 004555 2347 ISZ OPRTST 2906 004556 1366 TAD (1000 /IS IT AN IOT? 2907 004557 7640 SZA CLA 2908 004560 2347 ISZ OPRTST /NO, EXIT TO CALL+3 2909 004561 5747 JMP I OPRTST / YES, TO CALL+2 2910 2911 2912 004566 1000 PAGE 004567 0004 004570 2732 004571 0010 004572 4257 004573 4256 004574 2656 004575 0160 004576 2640 004577 4600 2913 /'FPP' (SYMBOLIC) INSTRUCTION DECODING 2914 004600 0000 FPPOUT, 0 2915 004601 7200 CLA /HARD TO TELL WHAT MIGHT COME! 2916 004602 4554 TADICAD /GET THE WORD 2917 004603 0377 AND (600 /MASK OFF MODE BITS 2918 004604 7450 SNA 2919 004605 5254 JMP SPECIAL / NON-ARITHMETIC 2920 004606 1103 TAD M400 /GIVES: -=BASE, 0=LONG, +=INDIR. 2921 004607 3023 DCA TEMP2 2922 004610 4776 JMS GETOP /GET OP-CODE TO BITS 9-11 2923 004611 4775 FPLEA, JMS MULT3 /MULTIPLY BY 3 (WORDS/OP OUT) 2924 004612 4774 JMS SYMTYP /OUTPUT 6 CHAR OPR SYMBOL 2925 004613 3757 FPPINS /(INCLUDING "LEA") 2926 004614 7775 -3 2927 004615 1023 TAD TEMP2 /NOW HANDLE MODE 2928 004616 7450 SNA 2929 004617 5240 JMP LONG / LONG INDEXED 2930 004620 7700 SMA CLA 2931 004621 5231 JMP INDIR / INDIRECT INDEXED 2932 004622 4525 BASE, JMS I TYPSI / BASE - OUTPUT " B+" 2933 004623 3743 MSBASE 2934 004624 4554 TADICAD /GET WORD AGAIN 2935 004625 0117 AND N177 / MASK OFF OFFSET 2936 004626 4775 JMS MULT3 / MULTIPLY IT BY 3 2937 004627 4773 JMS OCT3 / & OUTPUT IN OCTAL 2938 004630 5600 JMP I FPPOUT 2939 / 2940 004631 4525 INDIR, JMS I TYPSI /OUTPUT "% B+" 2941 004632 3746 MSINDI 2942 004633 4554 TADICAD /GET WORD AGAIN 2943 004634 0113 AND N7 / MASK OFF OFFSET 2944 004635 4775 JMS MULT3 / MULTIPLY IT BY 3 2945 004636 4773 JMS OCT3 / & OUTPUT IT IN OCTAL 2946 004637 5243 JMP XRPLUS /FINALLY DO XR OUTPUT 2947 / 2948 004640 4527 LONG, JMS I TWOCI /OUTPUT "# " 2949 004641 4340 4340 2950 004642 4772 JMS FLDOUT /AND FIELD AND "*" 2951 004643 4771 XRPLUS, JMS GET678 /GET XR FIELD 2952 004644 4527 JMS I TWOCI / & OUTPUT ",X" WHERE 2953 004645 5460 5460 / "X" IS A DIGIT 2954 004646 4554 TADICAD /GET WORD THE LAST TIME 2955 004647 0370 AND (100 / AND CHECK "+" BIT 2956 004650 7640 SZA CLA 2957 004651 4526 JMS I TYPECI /OUTPUT "+" OR SKIP 2958 004652 0253 "+ /[A NOP] 2959 004653 5600 JMP I FPPOUT 2960 / 2961 004654 4776 SPECIAL,JMS GETOP /GET OP-CODE 2962 004655 4567 JMS I SORTI / & BRANCH ON IT 2963 004656 4121 FPPMO0-1 2964 004657 0010 FPPMOJ-FPPMO0 2965 004660 4554 SPCOP0, TADICAD /FALLS THRU ON 0, GET 2966 004661 0367 AND (170 / SUB-OP-CODE 2967 004662 4567 JMS I SORTI / & BRANCH ON IT 2968 004663 4140 FPPOP0-1 2969 004664 0020 FPPOPJ-FPPOP0 2970 004665 4554 SPOP00, TADICAD /FALLS THRU ON 0, USE AS 2971 004666 0113 AND N7 / INDEX INTO LAST LIST 2972 004667 7001 IAC 2973 004670 4775 SPOP04, JMS MULT3 /THREE WORDS/SYMBOL 2974 004671 4774 JMS SYMTYP /OUTPUT ONE OF SEVERAL 2975 004672 4015 FPOP00 / SYMBOLS IN THIS LIST 2976 004673 7775 -3 2977 004674 5600 JMP I FPPOUT 2978 / 2979 004675 7340 SPOP05, CLL STA /= -1 2980 004676 5270 JMP SPOP04 /OUTPUT "STARTE" 2981 / 2982 004677 7344 SPNUSE, CLL STA RAL /= -2 2983 004700 5270 JMP SPOP04 /OUTPUT "UNUSED" 2984 / 2985 004701 4771 SPO123, JMS GET678 /"ALN X", "ATX X", "XTA X" 2986 004702 7104 CLL RAL /(2 WORDS PER) 2987 004703 4774 JMS SYMTYP /OUTPUT SYMBOL 2988 004704 4046 FPXR1S-2 2989 004705 7776 -2 2990 004706 5313 JMP XROUT / & XR VALUE 2991 / 2992 004707 1366 SPOP10, TAD (4 /"LDX *,X" 2993 004710 4774 SPOP11, JMS SYMTYP /"ADDX *,X" 2994 004711 4057 FPXR2S 2995 004712 7774 -4 2996 004713 4554 XROUT, TADICAD /GET XR FIELD 2997 004714 0113 AND N7 2998 004715 4531 DIGIT / & OUTPUT AS DIGIT 2999 004716 5600 JMP I FPPOUT 3000 / 3001 004717 4554 SPCOP1, TADICAD /GROUP 0 OR 1? 3002 004720 0370 AND (100 3003 004721 7650 SNA CLA 3004 004722 5337 JMP SPOP1J / 1 = CONDITIONAL JUMPS 3005 004723 4771 JMS GET678 / 0 = SETS, ETC. 3006 004724 1365 TAD (-4 /SUB-OP-CODES 0 THRU 3? 3007 004725 7700 SMA CLA 3008 004726 5277 JMP SPNUSE / NO, 4 THRU 7 = UN-USED 3009 004727 4771 JMS GET678 /0 THRU 3: SETX,SETB,JSA,JSR 3010 004730 7001 IAC / +1+1 => 2 THRU 5 3011 004731 7001 SPCOP3, IAC / 1: TRAP3 3012 004732 4775 SPCOP4, JMS MULT3 / 0: TRAP4 3013 004733 4774 JMS SYMTYP /GO DO ONE OF THESE 3014 004734 4067 FOP134 3015 004735 7775 -3 3016 004736 5342 JMP DOFLD /FINISH WITH FIELD 3017 / 3018 004737 4764 SPOP1J, JMS CONDIT /CONDITIONAL JUMPS 3019 004740 1200 1200 / "J--" 3020 004741 4533 SPACE2 3021 004742 4772 DOFLD, JMS FLDOUT /OUTPUT FIELD & "*" 3022 004743 5600 JMP I FPPOUT 3023 / 3024 004744 4525 SPCOP2, JMS I TYPSI /OUTPUT "JNX " 3025 004745 3751 MSJNX 3026 004746 5242 JMP XRPLUS-1 / & HANDLE ADDRESS 3027 / 3028 / SPCOP3 & SPCOP4 3029 / 3030 004747 4554 SPCOP5, TADICAD /GET WORD AGAIN 3031 004750 0370 AND (100 3032 004751 7640 SZA CLA 3033 004752 5277 JMP SPNUSE /BIT 5 ON IS UNUSED OP 3034 004753 4764 JMS CONDIT /LOAD TRUTH 3035 004754 1424 1424 / "LT--" 3036 004755 5600 JMP I FPPOUT 3037 / 3038 004756 7001 SPCOP7, IAC / "LEA" INDIRECT, SET SWITCH 3039 004757 3023 SPCOP6, DCA TEMP2 / "LEA" LONG, SET SWITCH 3040 004760 7340 CLL STA 3041 004761 5211 JMP FPLEA / & GO DO OUTPUT 3042 3043 3044 004764 6265 PAGE 004765 7774 004766 0004 004767 0170 004770 0100 004771 6251 004772 6277 004773 3407 004774 4475 004775 6257 004776 6243 004777 0600 3045 005000 0000 PDATE, 0 /ROUTINE TO OUTPUT AN EXTENDED DATE WORD 3046 005001 3244 DCA CRLF /SAVE IT 3047 005002 1244 TAD CRLF /GET WORD & MASK 3048 005003 0121 AND N377 3049 005004 7112 CLL RTR /DAY (4-8) TO 7-11 3050 005005 7010 RAR 3051 005006 4541 JMS I DEC2I / OUTPUT AS 2 DIGITS (MASKED) 3052 005007 4526 JMS I TYPECI / AND A SEPARATOR 3053 005010 0255 "- 3054 005011 1244 TAD CRLF /GET WORD A SECOND TIME 3055 005012 4544 JMS I RTR6I /MONTH (0-3) TO 7-10 3056 005013 7010 RAR / FOR MONTH*2 3057 005014 0377 AND (36 / MASK IT AND USE AS AN INDEX 3058 005015 4525 JMS I TYPSI / TO OUTPUT MONTH IN ALPHA 3059 005016 2521 MONTHS / FORM (WITH SAFETY...) 3060 005017 4526 JMS I TYPECI /FOLLOWED BY "-" 3061 005020 0255 "- 3062 005021 1244 TAD CRLF /GET LAST TIME 3063 005022 0113 AND N7 / MASK OFF YEAR 3064 005023 1231 TAD YRTEST / TEST IF .GT. THIS YEAR 3065 005024 7540 SMA SZA 3066 005025 1376 TAD (-10 / YES, SUBTRACT 8 3067 005026 1232 TAD YRBASE / ADD TO BASE YEAR 3068 005027 4541 JMS I DEC2I / & OUTPUT IT 3069 005030 5600 JMP I PDATE 3070 005031 0000 YRTEST, 0 /-(THIS YEAR) FOR TESTING 3071 005032 0000 YRBASE, 0 /BASE YEAR FOR DATE + THIS YEAR 3072 3073 3074 005033 0000 TYPEA, 0 /OUTPUT ASCII CHARACTER IN THE AC 3075 005034 1633 TAD I TYPEA /GET ARG, IF ANY 3076 005035 2233 ISZ TYPEA 3077 005036 3543 DCA I RTL6I /SAVE THE CHAR HERE FOR FIELD 1 3078 005037 4534 JMS I CTRLI 3079 005040 6212 CIF 10 3080 005041 5775 JMP TYPE1 /GO TO FIELD 1 TO DO THE OUTPUT 3081 / 3082 005042 2041 TYPEX, ISZ NCNT /BUMP LINE POSITION 3083 005043 5633 JMP I TYPEA / & EXIT 3084 3085 005044 0000 CRLF, 0 /OUTPUT CARRIAGE RETURN, LINE FEED 3086 005045 7200 CLA 3087 005046 4233 JMS TYPEA 3088 005047 0215 215 3089 005050 4233 JMS TYPEA 3090 005051 0212 212 3091 005052 3041 DCA NCNT /RESET LINE POSITION 3092 005053 5644 JMP I CRLF 3093 3094 3095 005054 0000 TYPEC, 0 /OUTPUT A SINGLE CHAR ARG 3096 005055 1654 TAD I TYPEC /GET IT 3097 005056 2254 ISZ TYPEC 3098 005057 4261 JMS TYPE /OUTPUT IT 3099 005060 5654 JMP I TYPEC 3100 3101 3102 005061 0000 TYPE, 0 /CHARACTER OUTPUT ROUTINE 3103 005062 0121 AND N377 /BE SURE ONLY 8 BITS 3104 005063 7450 SNA 3105 005064 1035 TAD CHAR /USE CHAR IF AC = 0 3106 005065 3277 DCA TCHAR /CHAR TO OUTPUT 3107 005066 1277 TAD TCHAR 3108 005067 4567 JMS I SORTI /CHECK FOR SPECIALS 3109 005070 4516 TYPEL-1 3110 005071 0056 TYPEOP-TYPEL 3111 005072 1277 TAD TCHAR /IS TCHAR < 240? 3112 005073 1104 TAD M240 3113 005074 7710 SPA CLA 3114 005075 5320 JMP TYPCTL /NO, OUTPUT AS CTRL-CHAR 3115 005076 4233 TYPC, JMS TYPEA /NOW OUTPUT CHAR 3116 005077 0000 TCHAR, 0 3117 005100 5661 JMP I TYPE 3118 / 3119 005101 4233 TYPALT, JMS TYPEA /OUTPUT "$" FOR ALT-MODES 3120 005102 0244 "$ 3121 005103 5661 JMP I TYPE 3122 / 3123 005104 4244 TYPCR, JMS CRLF /C.R. TO OUTPUT 3124 005105 5661 JMP I TYPE 3125 / 3126 005106 4233 TYPTAB, JMS TYPEA /SPACE OVER FOR TAB 3127 005107 0240 " 3128 005110 1041 TAD NCNT /TAB TO OUTPUT 3129 005111 1111 TAD M10 3130 005112 7450 SNA 3131 005113 5661 JMP I TYPE 3132 005114 7500 SMA 3133 005115 5311 JMP TYPTAB+3 /REDUCE BY TAB SIZE 3134 005116 7200 CLA 3135 005117 5306 JMP TYPTAB 3136 / 3137 005120 4233 TYPCTL, JMS TYPEA /CONTROL-CHAR, OUTPUT AS 3138 005121 0336 "^ 3139 005122 1324 TAD C100 / "^","CHAR+100" 3140 005123 5276 JMP TYPC 3141 005124 0100 C100, 100 3142 3143 3144 005125 0000 CTRL, 0 /CHECK FOR CTRL-C, CTRL-S, CTRL-Q & CTRL-P 3145 005126 3367 DCA CTRLQS /CLEAR HANG FLAG 3146 005127 6031 CTRL0, KSF /HAS A KEY BEEN HIT? 3147 005130 5363 JMP CTRLX /NO, TEST IF HANGING 3148 005131 6034 KRS 3149 005132 0117 AND N177 /YES, MASK OFF PARITY BIT 3150 005133 1374 TAD (-"C+300 /IS IT A CTRL-C (ABORT PROGRAM)? 3151 005134 7450 SNA 3152 005135 5360 BCTRLC, JMP CTRLC /*** JMP I CTRLCI /== ABORT == 3153 005136 1110 TAD M20 /IS IT A CTRL-S (STOP OUTPUT)? 3154 005137 7440 SZA 3155 005140 5343 JMP CTRL1 3156 005141 2367 ISZ CTRLQS / YES, SET HANG FLAG 3157 005142 6032 KCC / & CLEAR HARDWARE FLAG 3158 005143 1373 CTRL1, TAD (2 /IS IT A CTRL-Q (START OUTPUT)? 3159 005144 7440 SZA 3160 005145 5350 JMP CTRL2 3161 005146 6032 KCC / YES, CLEAR THE HARDWARE 3162 005147 5725 JMP I CTRL / & JUST EXIT 3163 / 3164 005150 7001 CTRL2, IAC /IS IT A CTRL-P (STOP PROGRAM)? 3165 005151 7640 SZA CLA 3166 005152 5363 JMP CTRLX /NO, TEST IF HANGING 3167 005153 6032 KCC 3168 005154 3052 DCA DSWIT /YES, RESET DUMP SWITCH 3169 005155 4526 JMS I TYPECI /OUTPUT "^P" 3170 005156 0220 "P-100 3171 005157 5571 JMP I RECRLF / THEN CR/LF & RESTART 3172 / 3173 /ROUTINE TO EXECUTE THE 'EXIT' COMMAND 3174 / 3175 XEXIT, 3176 005160 3052 CTRLC, DCA DSWIT /RESET DUMP SWITCH 3177 005161 5506 JMP I M200 / & GO TO SYSTEM 3178 005162 0516 CTRLCI, XERR4+1 /*** CTRL-C ABORTS JOB STREAM! *** 3179 / 3180 005163 1367 CTRLX, TAD CTRLQS /HANGING BECAUSE OF CTRL-S? 3181 005164 7640 SZA CLA 3182 005165 5327 JMP CTRL0 / YES, BACK FOR ANOTHER ROUND 3183 005166 5725 JMP I CTRL / NO, OUT WE GO! 3184 3185 005167 0000 CTRLQS, 0 /CTRL-S, CTRL-Q FLAG 3186 3187 3188 005173 0002 PAGE 005174 7775 005175 2400 005176 7770 005177 0036 3189 /INPUT AN UNSIGNED 24 BIT NUMBER 3190 005200 0000 ACCEPT, 0 3191 005201 3025 DCA ACC1 /CLEAR LO 3192 005202 3026 DCA ACC2 / & HI WORDS 3193 005203 3777 DCA DADD / & LEGAL INPUT SWITCH 3194 005204 4564 JMS I SSKIPI /GET FIRST NON-SPACE 3195 005205 7410 SKP 3196 005206 4563 ACCPT1, JMS I GETNI /DON'T IGNORE SPACES 3197 005207 4567 JMS I SORTI /CHECK FOR ^D, ^K, (, ", ', 3198 005210 5350 GWLST1-1 / DIGITS, SPACE 3199 005211 0043 ACOPS-GWLST1 3200 005212 5236 JMP ACCPT3 /NONE OF THE ABOVE 3201 / 3202 005213 1035 ACCNUM, TAD CHAR 3203 005214 1376 TAD (-"0 /MAKE A DIGIT 3204 005215 3261 DCA OCTSET 3205 005216 1261 TAD OCTSET /IS DIGIT LEGAL? 3206 005217 7041 CIA 3207 005220 1242 TAD ACBASE 3208 005221 7750 SPA SNA CLA 3209 005222 4573 ERC09, ERROR / NO, ILLEGAL DIGIT! 3210 005223 1242 ACCMUL, TAD ACBASE /SET UP MULTIPLY OF PREVIOUS 3211 005224 3031 DCA OPER1 / BY BASE 3212 005225 3032 DCA OPER2 3213 005226 4775 JMS DMUL / DO MULTIPLY 3214 005227 1261 TAD OCTSET /SET UP ADD OF NEXT "DIGIT" 3215 005230 3031 DCA OPER1 3216 005231 3032 DCA OPER2 3217 005232 4777 JMS DADD /OK, DO THE ADD (& SET SWITCH) 3218 005233 5206 JMP ACCPT1 3219 / 3220 005234 7240 STA / SPACE HERE 3221 005235 3046 DCA CRSWT /SET SWITCH: CR HERE 3222 005236 1777 ACCPT3, TAD DADD /TERMINATING CHAR RECEIVED 3223 005237 7650 SNA CLA /CHECK FOR LEGAL INPUT 3224 005240 4573 ERCR, ERROR /YOU CAN'T OUT-SMART ME! 3225 005241 5600 JMP I ACCEPT 3226 005242 0010 ACBASE, 10 3227 / 3228 / 3229 005243 4265 DQUOTE, JMS QUOTEC / " - GET SINGLE CHAR 3230 005244 3261 DCA OCTSET / SAVE VALUE 3231 005245 5223 JMP ACCMUL / & USE IT AS A "DIGIT" 3232 / 3233 005246 4265 SQUOTE, JMS QUOTEC / ' - PACKED ASCII, GET 1ST 3234 005247 0116 AND N77 /MASK TO 6 BITS 3235 005250 4543 JMS I RTL6I /MOVE TO LEFT HALF 3236 005251 3261 DCA OCTSET / & SAVE IT 3237 005252 4265 JMS QUOTEC /GET 2ND CHAR 3238 005253 0116 AND N77 /MASK 3239 005254 1261 TAD OCTSET /MERGE 3240 005255 5244 JMP DQUOTE+1 / & USE THIS AS A "DIGIT" 3241 / 3242 005256 1374 CTRLD, TAD (2 / ^D - SET RADIX TO DECIMAL 3243 005257 4261 CTRLK, JMS OCTSET / ^K - SET RADIX TO OCTAL 3244 005260 5206 JMP ACCPT1 3245 3246 3247 /SUB. TO SET UP FOR OCTAL/DECIMAL INPUT. CALLED FROM 3248 / COMMAND INPUT & MODIFY & IF AN "^K"/"^D" IN INPUT. 3249 005261 0000 OCTSET, 0 /SET UP FOR OCTAL/DECIMAL INPUT 3250 005262 1373 TAD (10 /ENTER WITH AC= 2 FOR DECIMAL 3251 005263 3242 DCA ACBASE 3252 005264 5661 JMP I OCTSET 3253 3254 005265 0000 QUOTEC, 0 /GET A QUOTED CHARACTER 3255 005266 4772 JMS CGTEST /GET & TEST FOR A CR 3256 005267 4573 ERC13, ERROR / ILLEGAL USE OF " OR ' 3257 005270 1035 TAD CHAR /OK, RETURN WITH IT 3258 005271 5665 JMP I QUOTEC 3259 3260 3261 /SUBROUTINE TO DEVELOP ARGUMENTS FROM THE COMMAND 3262 /BUFFER, AND RETURN WITH -(#) OF ARGS IN 'TEMP'. 3263 005272 0000 GARGS, 0 3264 005273 1175 TAD TEMPST /GET BUFFER ADDRESS 3265 005274 3010 DCA DPNT 3266 005275 3021 DCA TEMP /ZERO THE NUMBER OF ARGS 3267 005276 7240 GAR1, STA 3268 005277 3022 DCA TEMP1 /SET BLK TO -1 3269 005300 7240 STA 3270 005301 3036 DCA CNT /RESET SWITCH 3271 005302 4771 GAR2, JMS EXPRIN /GET NEXT ARG 3272 005303 4564 JMS I SSKIPI /IGNORE TRAILING SPACES 3273 005304 4567 JMS I SORTI /BRANCH ON TERMINATOR 3274 005305 5442 GARLST-1 3275 005306 7772 GAROPS-GARLST 3276 005307 4573 ERCS, ERROR /ILLEGAL TERMIN., FLAME OUT 3277 / 3278 005310 4326 GAR3, JMS GPUT /CR FOUND, END 3279 005311 1175 TAD TEMPST /SET UP POINTER FOR 3280 005312 3010 DCA DPNT / GETTING RESULTS 3281 005313 5672 JMP I GARGS 3282 / 3283 005314 4563 GAR4, JMS I GETNI /SKIP OVER "." 3284 005315 1025 TAD ACC1 /.= TERMIN (BLOCK PART) 3285 005316 5277 JMP GAR1+1 /SET BLOCK & GET NEXT 3286 / 3287 005317 1025 GAR5, TAD ACC1 /-= TERMIN (LOC PART) 3288 005320 3023 DCA TEMP2 3289 005321 4563 JMS I GETNI /SKIP OVER "-" 3290 005322 5301 JMP GAR2-1 /GO SET SWITCH 3291 / 3292 005323 4326 GAR6, JMS GPUT /,= TERMIN 3293 005324 4563 JMS I GETNI /SKIP OVER "," 3294 005325 5276 JMP GAR1 3295 3296 3297 /SUBROUTINE TO PUT THE DEVELOPED ARGS IN THE ARG 3298 /BUFFER. ALL ARGUMENTS ARE STORED IN 4 WORDS IN 3299 /THE BUFFER, AS SPECIFIED BY: 3300 / BLOCK.LOC1-LOC2 (TERMINATED BY , OR C.R.) 3301 /AS: 3302 /I-------I-------I-------I-------I----- 3303 /I WORD1 I WORD2 I WORD3 I WORD4 I ETC. 3304 /I-------I-------I-------I-------I----- 3305 /WHERE: 3306 / WORD1= BLOCK (OR -1 IF NONE SPECIFIED) 3307 / WORD2= LOC (HIGH) [ONLY 3 BITS, LOC2 IF SPEC'D] 3308 / WORD3= LOC1 (LOW) 3309 / WORD4= LOC2-LOC1-1 (LOC2=LOC1 IF NOT 3310 / SPECIFIED) [ONLY 12 LOW BITS USED] 3311 005326 0000 GPUT, 0 3312 005327 1022 TAD TEMP1 3313 005330 3410 DCA I DPNT /SET BLOCK 3314 005331 2036 ISZ CNT /WAS A LOC2 SPECIFIED? 3315 005332 5335 JMP GPUT1 /YES, OK 3316 005333 1025 TAD ACC1 3317 005334 3023 DCA TEMP2 /NO, MAKE ARGS SAME 3318 005335 1026 GPUT1, TAD ACC2 /STORE HIGH ADDR 3319 005336 0113 AND N7 /MASKED TO 3 BITS 3320 005337 3410 DCA I DPNT 3321 005340 1023 TAD TEMP2 /USE 1ST ARG 3322 005341 3410 DCA I DPNT 3323 005342 1025 TAD ACC1 3324 005343 7040 CMA 3325 005344 1023 TAD TEMP2 3326 005345 3410 DCA I DPNT /DIFF= (TEMP2-ACC1-1) 3327 005346 7240 STA 3328 005347 1021 TAD TEMP /ANOTHER ENTRY 3329 005350 3021 DCA TEMP 3330 005351 5726 JMP I GPUT 3331 3332 3333 005352 0000 XS240O, 0 /XS240 FORMAT PACKED ASCII 3334 005353 4544 JMS I RTR6I /HIGH 6 BITS 3335 005354 0116 AND N77 3336 005355 4532 SPACE1 / PLUS A SPACE 3337 005356 4554 TADICAD /THEN LOW 6 BITS, 3338 005357 0116 AND N77 3339 005360 4532 SPACE1 / PLUS A SPACE 3340 005361 5752 JMP I XS240O 3341 3342 3343 005362 0000 GETN, 0 /GET NEXT CHAR FROM COMM. BUFF. 3344 005363 6211 CDF 10 3345 005364 1416 TAD I COMOUT 3346 005365 6201 CDF 0 3347 005366 3035 DCA CHAR 3348 005367 5762 JMP I GETN 3349 3350 3351 005371 5727 PAGE 005372 2552 005373 0010 005374 0002 005375 6000 005376 7520 005377 5650 3352 /ROUTINE TO EVALUATE THE PARENTHESIZED EXPRESSION 3353 /OF DOUBLE PRECISION INTEGERS IN THE COMMAND BUFFER. 3354 /IT CALLS ITSELF RECURSIVELY TO EVALUATE EXPRESSIONS 3355 /IN "(...)", PLACING INFORMATION ON A PUSH-DOWN-LIST 3356 /OR DOING ARITHMETIC ACCORDING TO OPERATOR PRECIDENCE. 3357 / 3358 /OPERATIONS (IN ORDER OF PRECIDENCE): 3359 / OR AND ADD SUB DIV MPY 3360 / ! & + - / * 3361 3362 /ALL ARITHMETIC IS DONE IN DOUBLE-PRECISION SIGNED 3363 /INTEGER. OVERFLOW ON MULTIPLY, ADD OR SUBTRACT IS 3364 /IGNORED BUT DIVIDE BY 0 WILL CAUSE AN ERROR. 3365 3366 3367 005400 0000 EVAL, 0 3368 005401 3032 DCA OPER2 /0 => D.P. TEMP (NEW NUMBER 3369 005402 3031 DCA OPER1 / OR LAST RESULT). 3370 005403 3002 DCA LASTOP /0 => LASTOP 3371 005404 4765 JMS I TERMTI /GET NEXT & TEST FOR TERM. 3372 005405 5207 JMP EVAL1 /TERM, CHECK IT 3373 005406 5272 JMP ENUM / IT MUST BE A NUMBER 3374 3375 005407 4567 EVAL1, JMS I SORTI /CHECK LEGAL TERMS 3376 005410 5476 EVLST1-1 /"+","-" & "(" 3377 005411 7775 EVOPS1-EVLST1 3378 005412 4573 ERCT, ERROR /SORRY ABOUT THAT 3379 3380 005413 4764 EVAL2, JMS I LPARI /IS CHAR "("? 3381 005414 4573 ERCU, ERROR /YES,ILLEGAL (NO OP FIRST) 3382 005415 1040 EVMIN, TAD CNTRA /SEQN # OF TERMINATOR 3383 005416 3003 DCA THISOP /SET UP THISOP 3384 005417 1040 TAD CNTRA /IS IT ")" OR "CR"? 3385 005420 1111 TAD M10 3386 005421 7700 SMA CLA 3387 005422 3003 DCA THISOP /YES, 0 => THISOP 3388 005423 1003 EVAL3, TAD THISOP /CHECK PRIORITIES 3389 005424 7041 CIA 3390 005425 1002 TAD LASTOP /IS LASTOP < THISOP? 3391 005426 7710 SPA CLA 3392 005427 5256 JMP EVPAR /YES, CONTINUE SCAN 3393 005430 1003 TAD THISOP / IS THISOP+LASTOP=0? 3394 005431 1002 TAD LASTOP 3395 005432 7650 SNA CLA 3396 005433 5357 JMP EVALX /YES, DONE 3397 005434 1002 TAD LASTOP /NO, DO THIS OP NOW 3398 005435 1366 TAD EVTAB 3399 005436 3246 DCA EVOP /SET UP OPERATION 3400 005437 1002 TAD LASTOP /IS THIS =0? 3401 005440 7650 SNA CLA 3402 005441 5246 JMP EVOP /YES, DO OP 3403 005442 4551 POP /NO, POP LAST OFF LIST 3404 005443 3026 DCA ACC2 / INTO D.P.AC. 3405 005444 4551 POP 3406 005445 3025 DCA ACC1 3407 005446 7402 EVOP, HLT /JMS TO OPERATION ROUTINE 3408 005447 1026 TAD ACC2 3409 005450 3032 DCA OPER2 /DUPLICATE D.P.AC. INTO 3410 005451 1025 TAD ACC1 3411 005452 3031 DCA OPER1 / D.P. TEMP 3412 005453 4551 POP 3413 005454 3002 DCA LASTOP /POP UP ANOTHER OLD OPERATOR 3414 005455 5223 JMP EVAL3 /AND GO DO IT 3415 3416 005456 4764 EVPAR, JMS I LPARI /IS CHAR A "("? 3417 005457 5337 JMP EVLPAR /YES, GO DO A SUB-EXPRESSION 3418 005460 1002 TAD LASTOP /NO, PUSH DOWN OLD OP 3419 005461 4550 PUSH 3420 005462 1031 TAD OPER1 / & D.P. TEMP (LAST 3421 005463 4550 PUSH 3422 005464 1032 TAD OPER2 / RESULT OR NEW NUMBER). 3423 005465 4550 PUSH 3424 005466 1003 TAD THISOP /UPDATE LASTOP 3425 005467 3002 DCA LASTOP 3426 005470 4765 EVNEXT, JMS I TERMTI /GET NEXT & TEST FOR TERM. 3427 005471 5337 JMP EVLPAR /TERM, MUST BE A "(" 3428 005472 4567 ENUM, JMS I SORTI /CHECK FOR "C","B", ETC... 3429 005473 5502 EVLST2-1 3430 005474 0011 EVOPS2-EVLST2 3431 005475 4777 JMS ACCEPT /GET A # OR BOMB OUT! 3432 005476 7240 STA 3433 005477 1016 TAD COMOUT /BACK UP POINTER 3434 005500 3016 DCA COMOUT 3435 005501 1025 ENUMX, TAD ACC1 3436 005502 3031 DCA OPER1 /LO ORDER PART 3437 005503 1026 TAD ACC2 3438 005504 3032 DCA OPER2 /HI ORDER PART 3439 005505 5354 JMP EVOPN /GO CHECK TERMINATOR 3440 / 3441 005506 6211 EVDATE, CDF 10 /"D" -- USE DATE WORD 3442 005507 1776 TAD I (7666 /GET DATE WORD 3443 005510 6201 CDF 0 3444 005511 5334 JMP EVBLK+1 3445 005512 1027 EVREM, TAD ACCX1 /"R" -- USE REMAINDER 3446 005513 3025 DCA ACC1 3447 005514 1030 TAD ACCX2 / AS NEXT "INPUT". 3448 005515 5335 JMP EVBLK+2 3449 005516 1033 EVTEMP, TAD TEMPV1 /"T" -- USE 'TEMP' STORAGE 3450 005517 3025 DCA ACC1 3451 005520 1034 TAD TEMPV2 3452 005521 5335 JMP EVBLK+2 3453 005522 7614 EVSR, LAS SKP /"S" -- USE SWITCHES 3454 005523 4554 TADICAD /"C" -- USE CONTENTS 3455 005524 5334 JMP EVBLK+1 3456 005525 1074 EVFIL, TAD FILLER /"F" -- USE FILLER 3457 005526 5334 JMP EVBLK+1 3458 005527 1061 EVLOC, TAD LOCL /"L" -- USE LOCATION 3459 005530 3025 DCA ACC1 3460 005531 1060 TAD LOCH 3461 005532 5335 JMP EVBLK+2 3462 005533 1057 EVBLK, TAD BLK /"B" -- USE BLOCK 3463 005534 3025 DCA ACC1 /INTO LO ORDER PART 3464 005535 3026 DCA ACC2 /0 HIGH ORDER PART 3465 005536 5301 JMP ENUMX /CHECK NEXT CHARACTER 3466 3467 005537 4764 EVLPAR, JMS I LPARI /IS CHAR "("? 3468 005540 7410 SKP 3469 005541 4573 ERCV, ERROR /NO, DIE! (ILLEGAL OPERATOR) 3470 005542 1002 EVPAR2, TAD LASTOP /PUSH DOWN LASTOP 3471 005543 4550 PUSH 3472 005544 1200 TAD EVAL /PREPARE TO RE-CALL 3473 005545 4550 PUSH 3474 005546 4200 JMS EVAL /RECURSIVE CALL 3475 005547 4573 ERCW, ERROR /TERM = CR, NOT ENOUGH PARENS 3476 005550 4551 POP 3477 005551 3200 DCA EVAL /RESTORE RETURN ADDR 3478 005552 4551 POP 3479 005553 3002 DCA LASTOP /RESTORE LASTOP 3480 005554 4765 EVOPN, JMS I TERMTI /GET NEXT & TEST FOR TERM. 3481 005555 5213 JMP EVAL2 /OK 3482 005556 5341 JMP EVPAR2-1 /GARBAGE, GIVE SAME ERROR 3483 3484 005557 1040 EVALX, TAD CNTRA /WAS CHAR CR OR ")"? 3485 005560 1111 TAD M10 3486 005561 7650 SNA CLA 3487 005562 2200 ISZ EVAL / ")", RETURN TO CALL+2 3488 005563 5600 JMP I EVAL / CR, RETURN TO CALL+1 3489 3490 005564 5616 LPARI, LPAR 3491 005565 5624 TERMTI, TERMT 3492 3493 005566 4766 EVTAB, JMS I . /JMS THRU TABLE TO OPERATIONS 3494 3495 005567 5677 DIOR /INCLUSIVE OR 3496 005570 5667 DAND /AND 3497 005571 5650 DADD /ADD 3498 005572 5662 DSUB /SUBTRACT 3499 005573 6040 DDIV /DIVIDE 3500 005574 6000 DMUL /MULTIPLY 3501 3502 3503 005576 7666 PAGE 005577 5200 3504 005600 0000 PUSHX, 0 /PUSH AC ONTO LIST 3505 005601 6211 CDF 10 3506 005602 3407 DCA I PDLPT 3507 005603 6201 CDF 0 3508 005604 2007 ISZ PDLPT /BUMP POINTER 3509 005605 5600 JMP I PUSHX 3510 3511 005606 0000 POPX, 0 /POP LIST INTO AC 3512 005607 7360 STA STL /SET LINK SO IT WILL BE 0 3513 005610 1007 TAD PDLPT /BACK UP POINTER 3514 005611 3007 DCA PDLPT 3515 005612 6211 CDF 10 3516 005613 1407 TAD I PDLPT 3517 005614 6201 CDF 0 3518 005615 5606 JMP I POPX 3519 3520 3521 005616 0000 LPAR, 0 /CHECK IF CHAR = "(" 3522 005617 1035 TAD CHAR 3523 005620 1377 TAD (-"( 3524 005621 7640 SZA CLA 3525 005622 2216 ISZ LPAR /IF IT IS NOT, TO CALL+2 3526 005623 5616 JMP I LPAR / ELSE TO CALL+1 3527 3528 /COMPARE CHAR AGAINST LIST OF TERMINATORS. IF IT 3529 /IS ONE, RETURN TO CALL+1, ELSE TO CALL+2. 3530 005624 0000 TERMT, 0 3531 005625 7300 CLA CLL 3532 005626 4563 JMS I GETNI /GET NEXT CHARACTER 3533 005627 4564 JMS I SSKIPI /IGNORE SPACES 3534 005630 1376 TAD (TERMS-1 /SET UP POINTER 3535 005631 3011 DCA SPNT 3536 005632 3040 DCA CNTRA /SET CNTRA TO 0 3537 005633 6211 TERMT1, CDF 10 3538 005634 1411 TAD I SPNT /GET AN ITEM 3539 005635 6201 CDF 0 3540 005636 2040 ISZ CNTRA /ADD 1 TO ITEM # 3541 005637 7450 SNA 3542 005640 5246 JMP TERMTE /WAS 0, END 3543 005641 7041 CIA 3544 005642 1035 TAD CHAR /SAME AS THIS? 3545 005643 7650 SNA CLA 3546 005644 5624 JMP I TERMT /YES, TO CALL+1 3547 005645 5233 JMP TERMT1 3548 005646 2224 TERMTE, ISZ TERMT /DIDN'T FIND IT, TO 3549 005647 5624 JMP I TERMT / CALL+2 3550 3551 /DOUBLE-PRECISION ROUTINES 3552 3553 005650 0000 DADD, 0 /D.P. ADD 3554 005651 7100 CLL 3555 005652 1031 TAD OPER1 3556 005653 1025 TAD ACC1 /ADD LOW ORDER PARTS 3557 005654 3025 DCA ACC1 3558 005655 7004 RAL /GET CARRY TO AC11 3559 005656 1032 TAD OPER2 /ADD HIGH ORDER PARTS 3560 005657 1026 TAD ACC2 3561 005660 3026 DCA ACC2 /STORE HIGH ORDER PART 3562 005661 5650 JMP I DADD 3563 3564 005662 0000 DSUB, 0 /D.P. SUBTRACT 3565 005663 3001 DCA DPSGN /ZERO IT FOR SAFETY 3566 005664 4775 JMS MULNEG /NEGATE OPERAND 3567 005665 4250 JMS DADD / & ADD 3568 005666 5662 JMP I DSUB 3569 3570 005667 0000 DAND, 0 /D.P. LOGICAL AND 3571 005670 1026 TAD ACC2 /AND HIGH ORDER PARTS 3572 005671 0032 AND OPER2 3573 005672 3026 DCA ACC2 3574 005673 1025 TAD ACC1 /AND LOW ORDER PARTS 3575 005674 0031 AND OPER1 3576 005675 3025 DCA ACC1 3577 005676 5667 JMP I DAND /RETURN 3578 3579 005677 0000 DIOR, 0 /D.P. LOGICAL INCLUSIVE OR 3580 005700 1026 TAD ACC2 /IOR HIGH ORDER PARTS 3581 005701 7040 CMA 3582 005702 0032 AND OPER2 3583 005703 1026 TAD ACC2 3584 005704 3026 DCA ACC2 3585 005705 1025 TAD ACC1 /IOR LOW ORDER PARTS 3586 005706 7040 CMA 3587 005707 0031 AND OPER1 3588 005710 1025 TAD ACC1 3589 005711 3025 DCA ACC1 3590 005712 5677 JMP I DIOR 3591 3592 3593 /SUBROUTINE TO GET SINGLE ARGS FROM THE COMMAND 3594 /BUFFER. MUST BE IN 'BLOK.LOC' FORM. ONLY ".", 3595 /SPACE AND CR ARE ALLOWED OTHER THAN DIGITS. 3596 005713 0000 ARG, 0 3597 005714 7240 STA 3598 005715 3022 ARG1, DCA TEMP1 /SET 'BLOK' [INIT TO -1] 3599 005716 4327 JMS EXPRIN / GET AN ARG 3600 005717 4567 JMS I SORTI /LOOK UP TERMINATOR 3601 005720 5445 ARGLST-1 3602 005721 0010 ARGOPS-ARGLST 3603 005722 4573 ERCQ, ERROR /ILLEGAL TERMINATOR 3604 / 3605 005723 4563 ARG2, JMS I GETNI /SKIP OVER "." 3606 005724 1025 TAD ACC1 /TERM = ".", SET 'BLOK' 3607 005725 5315 JMP ARG1 3608 / 3609 005726 5713 ARG3, JMP I ARG /TERM = " " OR CR 3610 3611 3612 /GET NEXT ARG FROM COMM. BUFF. IF NEXT CHAR IS 3613 / A "(", USE 'EVAL' TO GET IT, OTHERWISE USE 3614 / 'ACCEPT'. 3615 005727 0000 EXPRIN, 0 3616 005730 4564 JMS I SSKIPI /IGNORE SPACES 3617 005731 4216 JMS LPAR /IS CHAR A "("? 3618 005732 5335 JMP EXPRI1 3619 005733 4774 JMS ACCEPT /NO, MUST BE A NUMBER 3620 005734 5727 JMP I EXPRIN 3621 / 3622 005735 4547 EXPRI1, JMS I EVALI /YES, GO EVALUATE EXPRESSION 3623 005736 4573 ERC08, ERROR /CR = ILLEGAL TERMINATOR 3624 005737 4773 JMS CGTEST /OK, SKIP OVER ")" & TEST FOR CR 3625 005740 7410 SKP 3626 005741 7240 STA /NO, SET SWITCH 3627 005742 3046 DCA CRSWT /YES, RESET IT 3628 005743 5727 JMP I EXPRIN / & LEAVE... 3629 3630 3631 005744 0000 SCANER, 0 /EXECUTION SUBROUTINE FOR 'SCAN' COMMAND 3632 005745 7200 CLA 3633 005746 1057 TAD BLK /SET UP DESIRED BLOCK 3634 005747 3054 DCA CBLK 3635 005750 4772 JMS GETIO /DO NECESSARY I/O 3636 005751 7610 SKP CLA / READ ERROR! 3637 005752 5744 JMP I SCANER /THIS BLOCK IS OK! 3638 005753 1057 TAD BLK 3639 005754 4540 JMS I OCTI /OUTPUT BLOCK NUMBER 3640 005755 4525 JMS I TYPSI / & TELL IT'S BAD 3641 005756 2137 MSBAD 3642 005757 4530 JMS I CRLFI / TO ANOTHER LINE 3643 005760 5744 JMP I SCANER 3644 3645 3646 005772 3027 PAGE 005773 2552 005774 5200 005775 6126 005776 5336 005777 7530 3647 /SIGNED MULTIPLY AND DIVIDE ROUTINES 3648 3649 006000 0000 DMUL, 0 3650 006001 4312 JMS MDCOM /MAKE DPAC POS, INITIALIZE 3651 006002 7710 SPA CLA /MAKE SURE MULTIPLIER IS POSITIVE 3652 006003 4326 JMS MULNEG / IT WAS NEG, MAKE POS & SET SIGN 3653 006004 1026 DMUL1, TAD ACC2 /SHIFT RIGHT & OUT 3654 006005 7010 RAR 3655 006006 3026 DCA ACC2 /THRU HI OF LO 3656 006007 1025 TAD ACC1 3657 006010 7010 RAR 3658 006011 3025 DCA ACC1 /THRU LO OF LO INTO LINK 3659 006012 2341 ISZ DPNEG /DONE YET? 3660 006013 5221 JMP DMUL2 /NO, CONTINUE 3661 006014 1001 DMUL4, TAD DPSGN /YES, CHECK SIGN OF RESULT 3662 006015 7010 RAR 3663 006016 7630 SZL CLA /SKIP IF SIGN OK 3664 006017 4341 JMS DPNEG /NOT OK, NEGATE 3665 006020 5600 JMP I DMUL 3666 / 3667 006021 7420 DMUL2, SNL /ADD IN THIS TIME? 3668 006022 5231 JMP DMUL3 /NO, BIT OUT WAS 0 3669 006023 7300 CLA CLL /YES, BIT WAS 1 3670 006024 1031 TAD OPER1 /START WITH LOW 3671 006025 1027 TAD ACCX1 3672 006026 3027 DCA ACCX1 3673 006027 7204 CLA RAL /GET CARRY 3674 006030 1032 TAD OPER2 /ADD HIGH PARTS 3675 006031 1030 DMUL3, TAD ACCX2 /AND BEGIN SHIFTING OUT 3676 006032 7010 RAR 3677 006033 3030 DCA ACCX2 3678 006034 1027 TAD ACCX1 3679 006035 7010 RAR 3680 006036 3027 DCA ACCX1 3681 006037 5204 JMP DMUL1 3682 3683 006040 0000 DDIV, 0 3684 006041 1240 TAD DDIV /MOVE RETURN ADDRESS 3685 006042 3200 DCA DMUL 3686 006043 4312 JMS MDCOM /MAKE DPAC POS, INITIALIZE 3687 006044 7700 SMA CLA /IS DIVISOR NEGATIVE? 3688 006045 4326 JMS MULNEG / NO, NEGATE IT & SET SIGN 3689 006046 7430 SZL / IS IT 0? (CARRY OUT ON NEGATE) 3690 006047 4573 ERCX, ERROR / YES, YOU LOST 3691 006050 2001 ISZ DPSGN /CORRECT FOR SIGN DIF IN * & / 3692 006051 1027 DDIV1, TAD ACCX1 /SUBTRACT LO OF LO 3693 006052 1031 TAD OPER1 3694 006053 3027 DCA ACCX1 3695 006054 7204 CLA RAL /CARRY TO AC 3696 006055 1030 TAD ACCX2 /SUBTRACT HI OF LO 3697 006056 1032 TAD OPER2 3698 006057 7510 SPA /TOO FAR? 3699 006060 5264 JMP DDIV2 /YES 3700 006061 7120 CLL CML /NO, SET LINK 3701 006062 3030 DCA ACCX2 3702 006063 5272 JMP DDIV3 3703 006064 7200 DDIV2, CLA 3704 006065 1031 TAD OPER1 /RESET LO ORDER PART 3705 006066 7041 CIA 3706 006067 1027 TAD ACCX1 3707 006070 3027 DCA ACCX1 3708 006071 7100 CLL /RESET LINK 3709 006072 1025 DDIV3, TAD ACC1 /BEGIN SHIFTING 3710 006073 7004 RAL 3711 006074 3025 DCA ACC1 3712 006075 1026 TAD ACC2 3713 006076 7004 RAL 3714 006077 3026 DCA ACC2 3715 006100 2341 ISZ DPNEG /DONE YET? 3716 006101 7410 SKP 3717 006102 5214 JMP DMUL4 /YES, CHECK SIGN & RETURN 3718 006103 1027 TAD ACCX1 /NO, KEEP SHIFTING 3719 006104 7004 RAL 3720 006105 3027 DCA ACCX1 3721 006106 1030 TAD ACCX2 3722 006107 7004 RAL 3723 006110 3030 DCA ACCX2 3724 006111 5251 JMP DDIV1 3725 3726 006112 0000 MDCOM, 0 /COMMON ROUTINE FOR MULTIPLY & DIVIDE 3727 006113 3001 DCA DPSGN /RESET SIGN 3728 006114 1026 TAD ACC2 /IS DPAC POS? 3729 006115 7710 SPA CLA 3730 006116 4341 JMS DPNEG /NO, NEGATE 3731 006117 3030 DCA ACCX2 / 0 => DPACX 3732 006120 3027 DCA ACCX1 3733 006121 1377 TAD (-31 /INITIALIZE COUNTER 3734 006122 3341 DCA DPNEG 3735 006123 7100 CLL 3736 006124 1032 TAD OPER2 /RETURN W. HIGH OPERAND 3737 006125 5712 JMP I MDCOM 3738 3739 006126 0000 MULNEG, 0 /NEGATE THE MULTIPLIER/DIVISOR 3740 006127 1031 TAD OPER1 /DO LO-ORDER PART 3741 006130 7141 CLL CIA 3742 006131 3031 DCA OPER1 3743 006132 1032 TAD OPER2 /DO HI-ORDER PART 3744 006133 7040 CMA 3745 006134 7430 SZL /CARRY? 3746 006135 7101 CLL IAC /YES, ADD IT IN 3747 006136 3032 DCA OPER2 3748 006137 2001 ISZ DPSGN /SIGN CHANGE MADE 3749 006140 5726 JMP I MULNEG 3750 3751 006141 0000 DPNEG, 0 /NEGATE THE D.P.AC. 3752 006142 1025 TAD ACC1 /DO LO-ORDER PART 3753 006143 7141 CLL CIA 3754 006144 3025 DCA ACC1 3755 006145 1026 TAD ACC2 /DO HI-ORDER PART 3756 006146 7040 CMA 3757 006147 7430 SZL /CARRY? 3758 006150 7101 CLL IAC /YES, ADD IT IN 3759 006151 3026 DCA ACC2 3760 006152 2001 ISZ DPSGN /SIGN CHANGE MADE 3761 006153 5741 JMP I DPNEG 3762 3763 3764 006154 0000 BLKTST, 0 /TEST & SET BLK 3765 006155 3341 DCA DPNEG /SAVE DATA 3766 006156 1341 TAD DPNEG /GET IT BACK AGAIN 3767 006157 2341 ISZ DPNEG /LEGAL BLOCK NUMBER? 3768 006160 3057 DCA BLK / YES IF NOT 7777 (-1) 3769 006161 7200 CLA / IF NOT, CLEAR JUNK 3770 006162 5754 JMP I BLKTST 3771 3772 3773 006163 0000 DICAD, 0 /"DCA I CAD" IN FIELD 1 3774 006164 6211 CDF 10 3775 006165 3456 DCA I CAD 3776 006166 6201 CDF 0 3777 006167 5763 JMP I DICAD 3778 3779 006170 0000 TICAD, 0 /"TAD I CAD" IN FIELD 1 3780 006171 6211 CDF 10 3781 006172 1456 TAD I CAD 3782 006173 6201 CDF 0 3783 006174 5770 JMP I TICAD 3784 3785 3786 006177 7747 PAGE 3787 /CHECK IF THE COMMAND BUFFER STARTS WITH A WORD. IF 3788 /IT DOES, RETURN TO 'MAIN3' WITH THE SPECIAL CHAR- 3789 /ACTER AND JUST USE IT AS PART OF THE COMMAND STRING. 3790 /IF IT DOES NOT, TEST FOR EXPRESSIONS [IN "(...)", 3791 /TO ALLOW CHARACTERS IN THE EXPRESSIONS TO NOT BE 3792 /TAKEN AS COMMAND CHARACTERS] AND SINGLE & DOUBLE 3793 /QUOTES [THE FOLLOWING CHARACTER OR CHARACTERS ARE 3794 /LITERALS, NOT COMMANDS]. IF THE PARENS MATCH AND 3795 /THE QUOTES ARE FOLLOWED BY THE CORRECT NUMBER OF 3796 /CHARACTERS, THEN THE LAST CHARACTER WAS AN "ODT" 3797 /COMMAND TO BE EXECUTED SO RETURN TO CALL+1. OTHER- 3798 /WISE RETURN TO 'MAIN3' AS ABOVE. 3799 3800 006200 0000 WCHEK, 0 3801 006201 4556 JMS I GWORDI /COM BUF BEGIN WITH A WORD? 3802 006202 5211 JMP WCHEK2 /NO, TEST FOR PARENS, ETC. 3803 006203 7240 WCHEK1, STA 3804 006204 1015 TAD COMIR /YES, BACK UP COMIR 3805 006205 3015 DCA COMIR 3806 006206 1021 TAD TEMP /AND USE THE SPECIAL CHAR AS 3807 006207 5610 JMP I .+1 / PART OF THE COMMAND STRING 3808 006210 4025 RESPC+1 3809 / 3810 006211 7240 WCHEK2, STA 3811 006212 1016 TAD COMOUT /SET UP ANOTHER A-XR 3812 006213 3010 DCA DPNT 3813 006214 3036 DCA CNT /RESET (OR SET) PAREN COUNT 3814 006215 4553 WCHEK3, TADIDP /GET A CHAR FROM COMM. BUFF. 3815 006216 4567 JMS I SORTI / & GO TEST IT 3816 006217 5460 WCKLST-1 3817 006220 0006 WCKOPS-WCKLST 3818 006221 5215 JMP WCHEK3 /NONE, CONTINUE SCAN 3819 / 3820 006222 1036 WCHEK4, TAD CNT /CR, DO PARENS MATCH? 3821 006223 7640 SZA CLA 3822 006224 5203 JMP WCHEK1 /NO, CONTINUE COMMAND INPUT 3823 006225 5600 JMP I WCHEK /YES, INPUT IS DONE 3824 / 3825 006226 7344 WCHEK5, STA CLL RAL /SET TO -2 3826 006227 7001 IAC /AC = +1 OR -1 3827 006230 1036 TAD CNT / UPDATE PAREN COUNT 3828 006231 5214 JMP WCHEK3-1 / & CONTINUE SCAN 3829 / 3830 006232 4235 WCHEK6, JMS WCHONE / ' -- 2 CHARACTERS 3831 006233 4235 JMS WCHONE / " -- 1 CHARACTER 3832 006234 5215 JMP WCHEK3 /OK, CONTINUE SCAN 3833 3834 006235 0000 WCHONE, 0 3835 006236 4553 TADIDP /GET NEXT CHAR 3836 006237 1105 TAD M215 /IS IT A CR? 3837 006240 7650 SNA CLA 3838 006241 5203 JMP WCHEK1 /YES, DON'T EXECUTE SPECIAL 3839 006242 5635 JMP I WCHONE /NO, OK 3840 /FPP INSTRUCTION DECODING SUPPORT SUBROUTINES 3841 3842 006243 0000 GETOP, 0 /GET OP-CODE (BITS 0-3) TO BITS 9-11 3843 006244 4554 TADICAD 3844 006245 0122 AND N7000 3845 006246 7106 CLL RTL 3846 006247 7006 RTL 3847 006250 5643 JMP I GETOP 3848 3849 006251 0000 GET678, 0 /GET BITS 678 TO BITS 9-11 3850 006252 4554 TADICAD 3851 006253 7112 CLL RTR 3852 006254 7010 RAR 3853 006255 0113 AND N7 3854 006256 5651 JMP I GET678 3855 3856 006257 0000 MULT3, 0 /MULTIPLY AC BY THREE 3857 006260 3243 DCA GETOP 3858 006261 1243 TAD GETOP 3859 006262 7104 CLL RAL 3860 006263 1243 TAD GETOP /WORKS FOR POS OR NEG! 3861 006264 5657 JMP I MULT3 3862 3863 006265 0000 CONDIT, 0 /OUTPUT CONDITIONAL FPP INSTRUCTION 3864 006266 1665 TAD I CONDIT /GET LEADING 1 OR 2 CHARS 3865 006267 2265 ISZ CONDIT 3866 006270 4535 JMS I TWOT / & OUTPUT THEM 3867 006271 4251 JMS GET678 /GET CONDITION CODE 3868 006272 4676 JMS I SYMTYI / AS INDEX TO TABLE 3869 006273 4111 FPCOND 3870 006274 7777 -1 3871 006275 5665 JMP I CONDIT 3872 006276 4475 SYMTYI, SYMTYP 3873 3874 006277 0000 FLDOUT, 0 /OUTPUT FIELD DIGIT & "*" 3875 006300 4554 TADICAD 3876 006301 0113 AND N7 /GET FIELD 3877 006302 4543 JMS I RTL6I / TO BITS 3-5 3878 006303 4527 JMS I TWOCI / & OUTPUT "F*" 3879 006304 6052 6052 / WHERE "F" IS DIGIT 3880 006305 5677 JMP I FLDOUT 3881 3882 3883 3884 DECIMAL /SET RADIX TO DECIMAL 3885 3886 TEMPL= . /ARGUMENT BUFFER 3887 /L(TEMPL)=180(10) 3888 F0END= TEMPL+180 3889 006306 0006 DMPHAN-F0END /(SHOW SPACE LEFT) 3890 3891 OCTAL 3892 3893 PAGE /****** MUST BE NO LITERALS! ****** 3894 3895 DMPHAN= 06600 /DUMP HANDLER AREA, 2 FIELD 0 PAGES 3896 3897 DEVHAN= 07200 /DEVICE HANDLER AREA, 2 FIELD 0 PGS 3898 3899 3900 IFNZRO DMPHAN-F0END&4000 3901 3902 /IF THE ABOVE ASSEMBLES, THE BUFFERS ARE OVER- 3903 / RUNNING THE DUMP DEVICE HANDLER. 3904 3905 3906 *TEMPL /ADD INITIALIZATION CODE WHICH IS OVERLAID 3907 3908 006306 0000 INIMSG, 0 /INITIALIZE ERROR MESSAGES ON SCRATCH BLKS 3909 006307 6211 CDF 10 3910 006310 1777 TAD I (7726 /BUT FIRST CHECK FOR "SCOPE MODE" 3911 006311 6201 CDF 0 3912 006312 0120 AND N200 / (BIT 4 OF 17726) 3913 006313 7650 SNA CLA 3914 006314 5322 JMP INIDAT / NOT SET, GO SET UP DATE 3915 006315 1411 INISCO, TAD I SPNT /SET, CHANGE RUBOUT HANDLER TO 3916 006316 7450 SNA 3917 006317 5322 JMP INIDAT / ERASE CHARACTERS FROM SCREEN 3918 006320 3410 DCA I DPNT / AND FROM BUFFER (MUCH EASIER 3919 006321 5315 JMP INISCO / THAN ON HARD COPY!) 3920 / 3921 006322 6211 INIDAT, CDF 10 /NOW INIT EXTENDED DATE 3922 006323 1776 TAD I (7666 /GET SYSTEM DATE WORD 3923 006324 6201 CDF 0 3924 006325 0113 AND N7 /PICK OFF THIS YEAR PART 3925 006326 7041 CIA 3926 006327 3775 DCA YRTEST / AND SET TEST YEAR (NEG) 3927 006330 1512 TAD I M1 /NOW GET EXTENDED YEAR BITS 3928 006331 0374 AND (600 / FROM "B.I.P." WORD AND 3929 006332 7112 CLL RTR / MOVE TO BITS 7,8 (*8) 3930 006333 7012 RTR 3931 006334 1373 TAD (106 /ADD TO A STARTING BASE OF 70[10] 3932 006335 7041 CIA 3933 006336 1775 TAD YRTEST /AND ADD THIS YEAR ALSO 3934 006337 7041 CIA 3935 006340 3772 DCA YRBASE /= 70 + EXTEND*8 + THIS YEAR 3936 006341 1771 TAD I (7746 /GET JSW 3937 006342 0370 AND (6777 /CLEAR BIT 2 (CAN RESTART!) 3938 006343 7110 CLL RAR 3939 006344 7124 STL RAL /SET BIT 11 (DON'T SAVE FIELD 1) 3940 006345 3771 DCA I (7746 /& PUT IT BACK 3941 006346 4767 JMS I (7607 /WRITE ERROR MESSAGES 3942 006347 4610 4610 / 6 PAGES, FIELD 1 3943 006350 0000 0 / FROM LOC 10000 3944 006351 0027 27 / NORMAL SAVE AREA! 3945 006352 7610 SKP CLA 3946 006353 5706 JMP I INIMSG /OK, JUST EXIT 3947 006354 1106 TAD M200 3948 006355 3766 DCA XERR3 /FAILED, ASSUME WRITE LOCKED 3949 006356 1365 TAD (ERROR / SO NO ERROR MESSAGES ON 3950 006357 3764 DCA ERC15 / ERROR OR "SHOW ERRORS" 3951 006360 5706 JMP I INIMSG 3952 3953 3954 006364 0545 PAGE /LITERALS HERE ARE OK! 006365 4573 006366 0505 006367 7607 006370 6777 006371 7746 006372 5032 006373 0106 006374 0600 006375 5031 006376 7666 006377 7726 3955 /INITIALIZATION CODE--RESIDES IN BUFFER AREA AND IS WIPED 3956 / OUT DURING EXECUTION. HANDLES CHAINED AND NORMAL STARTS. 3957 3958 006400 7610 START, CLA SKP /NORMAL 3959 006401 7240 STA /CHAINED (FROM CCL!) 3960 006402 3021 DCA TEMP 3961 006403 6211 CDF 10 3962 006404 3777 DCA I (CCBB /ZAP CCB SWITCH 3963 006405 6201 CDF 0 3964 006406 1120 TAD N200 3965 006407 3776 DCA I (7745 /RESET START ADDRESS 3966 006410 4775 JMS INIMSG /INIT SCOPE, DATE & ERROR MESSAGES 3967 006411 4774 JMS BATSET /TEST & SET UP FOR BATCH 3968 006412 2021 ISZ TEMP /CHAINED? 3969 006413 5773 JMP I (201 / NO, START IT UP! 3970 006414 6211 CDF 10 3971 006415 1506 TAD I M200 /YES, 1ST OUTPUT DEVICE? 3972 006416 6201 CDF 0 3973 006417 0372 AND (17 /(IGNORE LENGTH SPEC) 3974 006420 7450 SNA 3975 006421 5271 JMP STSWIT / NO, LEAVE AS SYS 3976 006422 3101 DCA DEVNO /YES, SET DEVICE NUMBER 3977 006423 1101 TAD DEVNO 3978 006424 4552 CALUSR /NOW DO HANDLER FETCH BY 3979 006425 0001 1 / NUMBER (PAINTING?) 3980 006426 7201 STDEV, DEVHAN+1 /--2 PAGES-- 3981 006427 5351 JMP STERR /ARGGGG! FAILED!!! 3982 006430 1226 TAD STDEV 3983 006431 3100 DCA DEVAD /SET UP HANDLER ENTRY 3984 006432 1106 TAD M200 3985 006433 3010 DCA DPNT /SET UP FIELD 1 POINTER 3986 006434 4553 TADIDP /GET NAME OF FILE 3987 006435 3025 DCA NAM1 3988 006436 4553 TADIDP 3989 006437 3026 DCA NAM2 3990 006440 4553 TADIDP 3991 006441 3027 DCA NAM3 3992 006442 4553 TADIDP /GET EXTENSION 3993 006443 3030 DCA NAM4 3994 006444 1025 TAD NAM1 /WAS THERE REALLY A NAME? 3995 006445 7640 SZA CLA 3996 006446 7240 STA / YES, SET NAME SWITCH 3997 006447 3021 DCA TEMP / NO, RESET 3998 006450 6211 CDF 10 3999 006451 3771 DCA I (XDNAM /CLEAR DEVICE NAME WORDS 4000 006452 3770 DCA I (XDNAM+1 4001 006453 1410 TAD I DPNT /GET NEXT WORD & TEST FOR ZERO 4002 006454 7640 SZA CLA 4003 006455 5271 JMP STSWIT / SOMETHING NOT RIGHT! 4004 006456 1410 TAD I DPNT /OK, ASSUME CCL CHAIN & SET 4005 006457 3771 DCA I (XDNAM / UP DEVICE NAME 4006 006460 1410 TAD I DPNT 4007 006461 3770 DCA I (XDNAM+1 4008 006462 1771 TAD I (XDNAM /EMPTY? 4009 006463 7640 SZA CLA 4010 006464 5271 JMP STSWIT 4011 006465 1367 TAD (0423 /YES, MUST BE DEFAULT NAME-- 4012 006466 3771 DCA I (XDNAM / "DSK" 4013 006467 1366 TAD (1300 4014 006470 3770 DCA I (XDNAM+1 4015 006471 6211 STSWIT, CDF 10 4016 006472 1765 TAD I (7643 /TEST SWITCHES 4017 006473 0120 AND N200 / "/E"? 4018 006474 3020 DCA ERMODE / 0= LONG, NON-0= SHORT 4019 006475 7001 IAC 4020 006476 0765 AND I (7643 / "/L"? [LOAD] 4021 006477 7650 SNA CLA 4022 006500 5307 JMP STSWO /NO, CHECK NEXT 4023 006501 1030 TAD NAM4 /YES, SET DEFAULT EXTENSION 4024 006502 7450 SNA 4025 006503 1364 TAD (1404 / TO ".LD" 4026 006504 3030 DCA NAM4 4027 006505 7001 IAC 4028 006506 5330 JMP STSWEX-2 / & GO SET MODE 4029 / 4030 006507 1763 STSWO, TAD I (7644 4031 006510 0362 AND (1000 / "/O"? [OFFSET] 4032 006511 7650 SNA CLA 4033 006512 5320 JMP STSWS /NO, GO CHECK LAST 4034 006513 1761 TAD I (7646 /YES, GET LOW 12 BITS OF 4035 006514 7041 CIA / "=NNNN" AS OFFSET AND 4036 006515 3073 DCA OFFSET / IT UP 4037 006516 7240 STA 4038 006517 5331 JMP STSWEX-1 / & GO SET MODE 4039 / 4040 006520 1763 STSWS, TAD I (7644 / "/S"? [SAVE] 4041 006521 0360 AND (40 4042 006522 7650 SNA CLA 4043 006523 5332 JMP STSWEX /NO, WAS NOT ANY THAT COUNT 4044 006524 1030 TAD NAM4 /YES, SET DEFAULT EXTENSION 4045 006525 7450 SNA 4046 006526 1357 TAD (2326 / TO ".SV" 4047 006527 3030 DCA NAM4 4048 006530 7001 IAC / & SET MODE 4049 006531 3044 DCA MODSW /-1=OFF,0=NOR,+1=SV,+2=LD 4050 006532 6201 STSWEX, CDF 0 4051 006533 2021 ISZ TEMP /FILE NAME SPECIFIED? 4052 006534 5773 JMP I (201 / NO, JUST START 4053 006535 3046 DCA CRSWT /YES, SET SWITCH TO CR, 4054 006536 6046 STTLS, TLS / START TTY *** BATCH OPER. 4055 006537 4530 JMS I CRLFI / & DO CR/LF 4056 006540 1030 TAD NAM4 /ANY EXTENSION SPECIFIED? 4057 006541 7650 SNA CLA 4058 006542 7240 STA / NO--ALLOW 3 TRIES: SV, LD, NULL 4059 006543 3022 DCA TEMP1 / ELSE ALLOW ONLY 1 TRY 4060 006544 1030 TAD NAM4 /IF NO EXTENSION SET YET, 4061 006545 7450 SNA 4062 006546 1357 TAD (2326 / SET TO START DEFAULTS WITH SV 4063 006547 3030 DCA NAM4 4064 006550 5756 JMP XFICHN /NOW GO DO FILE LOOKUP 4065 / 4066 006551 6046 STERR, TLS /START UP OUTPUT *** BATCH OPER. 4067 006552 5755 JMP ERCY / & GIVE ERROR! 4068 4069 4070 006555 1156 PAGE 006556 1026 006557 2326 006560 0040 006561 7646 006562 1000 006563 7644 006564 1404 006565 7643 006566 1300 006567 0423 006570 2465 006571 2464 006572 0017 006573 0201 006574 6600 006575 6306 006576 7745 006577 6400 4071 /INITIALIZATION CODE FOR BATCH OPERATION 4072 4073 006600 0000 BATSET, 0 4074 006601 1512 TAD I M1 /TEST BIT 1 OF 07777 FOR "BIP" 4075 006602 7004 RAL / (BATCH-IN-PROGRESS) 4076 006603 7700 SMA CLA 4077 006604 5600 JMP I BATSET / NO, INTERACTIVE MODE 4078 006605 1512 TAD I M1 / YES, GET FIELD BITS OF BATCH 4079 006606 0377 AND (70 / TO GENERATE A "CIF BAT" 4080 006607 1376 TAD (CIF / AND SET UP 3 CALLS: 4081 006610 3307 DCA CBATI / INPUT, 4082 006611 1307 TAD CBATI 4083 006612 3346 DCA CBATO / OUTPUT AND 4084 006613 1307 TAD CBATI 4085 006614 3336 DCA CBATE / ERROR. 4086 006615 1412 BATMOV, TAD I SCANX1 /GET NEXT STORAGE ADDRESS 4087 006616 7450 SNA 4088 006617 5600 JMP I BATSET / 0 = ALL DONE! 4089 006620 3010 DCA DPNT /SET UP POINTER 4090 006621 1412 BATLUP, TAD I SCANX1 /GET A PATCH WORD 4091 006622 7450 SNA 4092 006623 5215 JMP BATMOV / 0 = GROUP END 4093 006624 6201 BATPAT, CDF 0 /CHANGED FOR "TYPEB"!! 4094 006625 3410 DCA I DPNT /PATCH THE WORD 4095 006626 6201 CDF 0 4096 006627 5221 JMP BATLUP /DO IT AGAIN! 4097 4098 4099 /"SCOPE MODE" PATCHES FOR RUBOUT HANDLER. INITIAL- 4100 / IZATION CODE FIRST CHECKS FOR SCOPE AND THEN FOR 4101 / BATCH. THUS, IF BOTH ARE SET, FIRST THINGS WILL BE 4102 / SET UP FOR SCOPE AND THEN THEY WILL BE RESET FOR 4103 / BATCH. THIS SEQUENCE IS REQUIRED! 4104 4105 SCOPLS, RELOC RUBO 4106 004031* 4303 JMS BTEST /BUFFER NOW EMPTY? 4107 004032* 5207 JMP RENEXT / YES, JUST IGNORE RUBOUT 4108 004033* 7240 STA 4109 004034* 1015 TAD COMIR /NO, BACK UP POINTER 4110 004035* 3015 DCA COMIR 4111 004036* 1015 TAD COMIR /SET UP POINTER FOR TESTING, ALSO 4112 004037* 3016 DCA COMOUT 4113 004040* 4247 JMS RUBO2 /OUTPUT BACKSPACE, SPACE, BACKSPACE 4114 004041* 4563 JMS I GETNI /GET RUBBED OUT CHAR AND TEST 4115 004042* 1035 TAD CHAR 4116 004043* 1104 TAD M240 / FOR A CONTROL CHAR 4117 004044* 7710 SPA CLA 4118 004045* 4247 JMS RUBO2 /YES, ERASE "^" ALSO! 4119 004046* 5207 JMP RENEXT /TRY FOR ANOTHER CHAR 4120 4121 004047* 7402 RUBO2, HLT /MUST BE NON-ZERO!!! 4122 004050* 4656 JMS I TYPEAI /OUTPUT A BACKSPACE, 4123 004051* 0210 "H-100 /(CTRL-H) 4124 004052* 4532 SPACE1 / SPACE, 4125 004053* 4656 JMS I TYPEAI / BACKSPACE SEQUENCE TO 4126 004054* 0210 "H-100 / CLEAR OFF SCREEN CHAR 4127 004055* 5647 JMP I RUBO2 4128 004056* 5033 TYPEAI, TYPEA 4129 004057* 0000 0 4130 4131 RELOC 4132 4133 4134 BATLS, /PATCHES--ADDRESS-1, CODE, 0 WITH EXTRA 0 FOR END. 4135 4136 006657 4030 RUBO-1 /==== INPUT PATCHES ==== 4137 RELOC RUBO 4138 004031* 3035 DCA CHAR /SAVE NEW CHAR INPUT 4139 004032* 1035 TAD CHAR /IS THIS A FORM-FEED? 4140 004033* 1252 TAD RM214 4141 004034* 7450 SNA 4142 004035* 5313 JMP RKEY+1 / YES, JUST IGNORE IT! 4143 004036* 1253 TAD R2 /NO, THEN IS IT A LINE-FEED? 4144 004037* 7650 SNA CLA 4145 004040* 1254 TAD RLAST / YES, WAS LAST A CARRIAGE-RETURN? 4146 004041* 1105 TAD M215 4147 004042* 7640 SZA CLA 4148 004043* 1035 TAD CHAR /NO TO ONE OR OTHER, USE CHAR. 4149 004044* 3254 DCA RLAST / YES TO BOTH, SET TO 0! 4150 004045* 1254 TAD RLAST /OK, WAS IT A CR-LF PAIR? 4151 004046* 7650 SNA CLA 4152 004047* 5313 JMP RKEY+1 / YES, JUST IGNORE LF! 4153 004050* 5212 JMP REKEY+1 / NO, GO USE THIS CHAR 4154 4155 004051* 5400 BATINI, 5400 /IN THE BATCH FIELD 4156 004052* 7564 RM214, -214 4157 004053* 0002 R2, 2 4158 004054* 0215 RLAST, 215 /!!! CR OF ".R FUTIL" HAS AN LF !! 4159 004055* 0000 0 4160 4161 004056* 4112 RKEY+1-1 4162 RELOC /TO PUT 'CBATI' ON THIS PAGE 4163 CBATI= .+1 /REALLY ON "CIF BAT" 4164 RELOC RKEY+1 4165 004113* 4534 JMS I CTRLI /CHECK FOR CONTROL KEYS 4166 004114* 6202 CIF /*** CIF BAT 4167 004115* 4651 JMS I BATINI /GET A BATCH CHARACTER 4168 004116* 4573 ERC17, ERROR /!!! EOF ON INPUT !!! 4169 004117* 7000 NOP /FILLER FOR INTERACTIVE CTRL-Q 4170 004120* 7000 NOP 4171 004121* 0000 0 4172 4173 004122* 4125 RKEY0-1 4174 RELOC RKEY0 4175 004126* 5313 JMP RKEY+1 /IGNORE RUBOUT UNDER BATCH 4176 004127* 7000 NOP / & RETURN TO CALL+1! 4177 004130* 0000 0 4178 4179 004131* 5134 BCTRLC-1 4180 RELOC BCTRLC 4181 005135* 5762 JMP I CTRLCI /CTRL-C, ABORT JOB STREAM! 4182 005136* 0000 0 4183 4184 RELOC /==== OUTPUT PATCHES ==== 4185 006724 0200 201-1 4186 006725 7000 NOP 4187 006726 0000 0 4188 4189 006727 6535 STTLS-1 4190 006730 7000 NOP /ZAP 3 "TLS"S USED FOR STARTUP 4191 006731 0000 0 4192 4193 006732 6550 STERR-1 4194 006733 7000 NOP 4195 006734 0000 0 4196 4197 RELOC /==== ERROR PATCH ==== 4198 4199 006735 0514 XERR4-1 4200 CBATE= . /REALLY ON "CIF BAT" 4201 RELOC XERR4 4202 000515* 6202 CIF /*** CIF BAT 4203 000516* 5522 JMP I N7000 /ABORT TO BATCH FIELD! 4204 000517* 0000 0 4205 4206 RELOC 4207 4208 006741 6623 BATPAT-1 4209 006742 6211 CDF 10 /*** NEXT CODE IN FIELD 1 *** 4210 006743 0000 0 4211 4212 006744 2404 TYPEB-1 4213 RELOC 4214 CBATO= .+1 /REALLY ON "CIF BAT" 4215 IFDEF TYPEB 4218 002405* 6211 CDF 10 /*** SET UP RETURN D.F. 4219 002406* 6202 CIF /*** CIF BAT 4220 002407* 4610 JMS I .+1 /OUTPUT A CHARACTER TO LOG 4221 002410* 7400 7400 /BATOUT, IN THE BATCH FIELD 4222 002411* 6201 CDF 0 /*** RESET D.F. 4223 002412* 0000 0 4224 4225 RELOC 4226 4227 006753 0000 0 4228 4229 4230 006776 6202 PAGE 006777 0070 4231 4232 FIELD 1 /THE END OF FIELD 0! 4233 *10000 /PUT A POINTER HERE! 4234 4235 010000 3542 NXTIOT /ADDR OF NEXT FREE SPACE IN TABLE 4236 4237 4238 /ERROR MESSAGES AND ADDRESS LIST. THESE ITEMS RESIDE 4239 / UNDER THE USR, REQUIRING THAT THE USR SWAP THEM 4240 / WHEN IT IS USED AND THAT THE PROGRAM KICK OUT THE 4241 / USR WHEN AN ERROR OCCURS IN LONG ERROR MESSAGE MODE 4242 / OR WHEN A "SHOW ERRORS" COMMAND IS GIVEN. IT IS 4243 / TO THE ADVANTAGE OF DECTAPE (AND PROBABLY ALSO 4244 / FLOPPY DISK) SYSTEMS TO USE SHORT ERROR MESSAGE 4245 / MODE TO REDUCE USR SWAPPING IF DOING MANY "FILE" 4246 / OR "SET DEVICE ...DDEV..." COMMANDS. 4247 4248 *10002 /MESSAGE ADDRESS AT ERROR CODE NUMBER +1 (AUTO-XR) 4249 4250 /LIST OF ADDRESSES OF ERROR MESSAGES 4251 4252 010002 0062 ERMSA 4253 010003 0100 ERMSB 4254 010004 0116 ERMSC 4255 010005 1104 ERMS14 4256 010006 0125 ERMSD 4257 010007 0137 ERMSE 4258 010010 0227 ERMSG 4259 010011 0242 ERMSH 4260 010012 0256 ERMSI 4261 010013 0276 ERMSK 4262 010014 0267 ERMSJ 4263 010015 0322 ERMSXO 4264 010016 0341 ERMSL 4265 010017 0651 ERMSZ 4266 010020 0404 ERMSO 4267 010021 1051 ERMS11 4268 010022 0717 ERMS04 4269 010023 0417 ERMSP 4270 010024 0435 ERMSQ 4271 010025 0456 ERMSR 4272 010026 1030 ERMS09 4273 010027 1003 ERMS08 4274 010030 1071 ERMS13 4275 010031 0501 ERMSS 4276 010032 0523 ERMST 4277 010033 0543 ERMSU 4278 010034 0564 ERMSV 4279 010035 0604 ERMSW 4280 010036 0622 ERMSX 4281 010037 0636 ERMSY 4282 010040 0361 ERMSM 4283 010041 0673 ERMS00 4284 010042 0671 ERMS01 4285 010043 0706 ERMS02 4286 010044 0704 ERMS03 4287 010045 1037 ERMS10 4288 010046 0150 ERMSF 4289 010047 0171 ERMSGC 4290 010050 0207 ERMSHD 4291 010051 0742 ERMS05 4292 010052 0764 ERMS07 4293 010053 1163 ERMS18 4294 010054 1172 ERMS19 4295 010055 1201 ERMS20 4296 010056 1124 ERMS15 4297 010057 1135 ERMS16 4298 010060 1151 EMSEND, ERMS17 4299 010061 1212 ERMS99 4300 4301 4302 /ERROR MESSAGES: 4303 4304 010062 1114 ERMSA, TEXT &ILLEGAL SINGLE-WORD COMMAND& 010063 1405 010064 0701 010065 1440 010066 2311 010067 1607 010070 1405 010071 5527 010072 1722 010073 0440 010074 0317 010075 1515 010076 0116 010077 0400 4305 4306 010100 1114 ERMSB, TEXT &ILLEGAL MULTI-WORD COMMAND& 010101 1405 010102 0701 010103 1440 010104 1525 010105 1424 010106 1155 010107 2717 010110 2204 010111 4003 010112 1715 010113 1501 010114 1604 010115 0000 4307 4308 010116 2417 ERMSC, TEXT &TOO MANY ")"S& 010117 1740 010120 1501 010121 1631 010122 4042 010123 5142 010124 2300 4309 4310 010125 1114 ERMSD, TEXT &ILLEGAL FORMAT WORD& 010126 1405 010127 0701 010130 1440 010131 0617 010132 2215 010133 0124 010134 4027 010135 1722 010136 0400 4311 4312 010137 0201 ERMSE, TEXT &BAD FORMAT SYNTAX& 010140 0440 010141 0617 010142 2215 010143 0124 010144 4023 010145 3116 010146 2401 010147 3000 4313 4314 010150 1617 ERMSF, TEXT &NO FILE FOR C.C.B./HEADER REQUEST& 010151 4006 010152 1114 010153 0540 010154 0617 010155 2240 010156 0356 010157 0356 010160 0256 010161 5710 010162 0501 010163 0405 010164 2240 010165 2205 010166 2125 010167 0523 010170 2400 4315 4316 010171 0201 ERMSGC, TEXT &BAD C.C.B (NOT A SAVE FILE)& 010172 0440 010173 0356 010174 0356 010175 0240 010176 5016 010177 1724 010200 4001 010201 4023 010202 0126 010203 0540 010204 0611 010205 1405 010206 5100 4317 4318 010207 0201 ERMSHD, TEXT &BAD HEADER (NOT A LOAD MODULE)& 010210 0440 010211 1005 010212 0104 010213 0522 010214 4050 010215 1617 010216 2440 010217 0140 010220 1417 010221 0104 010222 4015 010223 1704 010224 2514 010225 0551 010226 0000 4319 4320 010227 1114 ERMSG, TEXT &ILLEGAL ITEM TO SHOW& 010230 1405 010231 0701 010232 1440 010233 1124 010234 0515 010235 4024 010236 1740 010237 2310 010240 1727 010241 0000 4321 4322 010242 1114 ERMSH, TEXT &ILLEGAL SEARCH MODIFIER& 010243 1405 010244 0701 010245 1440 010246 2305 010247 0122 010250 0310 010251 4015 010252 1704 010253 1106 010254 1105 010255 2200 4323 4324 010256 0201 ERMSI, TEXT &BAD SEARCH SYNTAX& 010257 0440 010260 2305 010261 0122 010262 0310 010263 4023 010264 3116 010265 2401 010266 3000 4325 4326 010267 1114 ERMSJ, TEXT &ILLEGAL MODE& 010270 1405 010271 0701 010272 1440 010273 1517 010274 0405 010275 0000 4327 4328 010276 2305 ERMSK, TEXT &SET OPTION FOLLOWED BY A CR, BAD SYNTAX& 010277 2440 010300 1720 010301 2411 010302 1716 010303 4006 010304 1714 010305 1417 010306 2705 010307 0440 010310 0231 010311 4001 010312 4003 010313 2254 010314 4002 010315 0104 010316 4023 010317 3116 010320 2401 010321 3000 4329 4330 010322 1625 ERMSXO, TEXT &NUMBER OR ILLEGAL SET OPTION& 010323 1502 010324 0522 010325 4017 010326 2240 010327 1114 010330 1405 010331 0701 010332 1440 010333 2305 010334 2440 010335 1720 010336 2411 010337 1716 010340 0000 4331 4332 010341 1625 ERMSL, TEXT &NUMBER OR ILLEGAL OUTPUT OPTION& 010342 1502 010343 0522 010344 4017 010345 2240 010346 1114 010347 1405 010350 0701 010351 1440 010352 1725 010353 2420 010354 2524 010355 4017 010356 2024 010357 1117 010360 1600 4333 4334 010361 1114 ERMSM, TEXT &ILLEGAL "." IN NAME (FILE OR DEVICE)& 010362 1405 010363 0701 010364 1440 010365 4256 010366 4240 010367 1116 010370 4016 010371 0115 010372 0540 010373 5006 010374 1114 010375 0540 010376 1722 010377 4004 010400 0526 010401 1103 010402 0551 010403 0000 4335 4336 010404 1114 ERMSO, TEXT &ILLEGAL MODIFY FORMAT& 010405 1405 010406 0701 010407 1440 010410 1517 010411 0411 010412 0631 010413 4006 010414 1722 010415 1501 010416 2400 4337 4338 010417 2022 ERMSP, TEXT &PROGRAM OR HARDWARE PROBLEM& 010420 1707 010421 2201 010422 1540 010423 1722 010424 4010 010425 0122 010426 0427 010427 0122 010430 0540 010431 2022 010432 1702 010433 1405 010434 1500 4339 4340 010435 0201 ERMSQ, TEXT &BAD TERMINATOR IN SINGLE ARGUMENT& 010436 0440 010437 2405 010440 2215 010441 1116 010442 0124 010443 1722 010444 4011 010445 1640 010446 2311 010447 1607 010450 1405 010451 4001 010452 2207 010453 2515 010454 0516 010455 2400 4341 4342 010456 2405 ERMSR, TEXT &TERMINATOR BEFORE LEGAL NUMBER INPUT& 010457 2215 010460 1116 010461 0124 010462 1722 010463 4002 010464 0506 010465 1722 010466 0540 010467 1405 010470 0701 010471 1440 010472 1625 010473 1502 010474 0522 010475 4011 010476 1620 010477 2524 010500 0000 4343 4344 010501 0201 ERMSS, TEXT &BAD TERMINATOR IN MULTIPLE ARGUMENT& 010502 0440 010503 2405 010504 2215 010505 1116 010506 0124 010507 1722 010510 4011 010511 1640 010512 1525 010513 1424 010514 1120 010515 1405 010516 4001 010517 2207 010520 2515 010521 0516 010522 2400 4345 4346 010523 1114 ERMST, TEXT &ILLEGAL CHARACTER IN EXPRESSION& 010524 1405 010525 0701 010526 1440 010527 0310 010530 0122 010531 0103 010532 2405 010533 2240 010534 1116 010535 4005 010536 3020 010537 2205 010540 2323 010541 1117 010542 1600 4347 4348 010543 1114 ERMSU, TEXT &ILLEGAL USE OF "(" IN EXPRESSION& 010544 1405 010545 0701 010546 1440 010547 2523 010550 0540 010551 1706 010552 4042 010553 5042 010554 4011 010555 1640 010556 0530 010557 2022 010560 0523 010561 2311 010562 1716 010563 0000 4349 4350 010564 1114 ERMSV, TEXT &ILLEGAL OPERATOR IN EXPRESSION& 010565 1405 010566 0701 010567 1440 010570 1720 010571 0522 010572 0124 010573 1722 010574 4011 010575 1640 010576 0530 010577 2022 010600 0523 010601 2311 010602 1716 010603 0000 4351 4352 010604 2417 ERMSW, TEXT &TOO FEW ")"S IN EXPRESSION& 010605 1740 010606 0605 010607 2740 010610 4251 010611 4223 010612 4011 010613 1640 010614 0530 010615 2022 010616 0523 010617 2311 010620 1716 010621 0000 4353 4354 010622 0411 ERMSX, TEXT &DIVISION BY 0 ATTEMPTED& 010623 2611 010624 2311 010625 1716 010626 4002 010627 3140 010630 6040 010631 0124 010632 2405 010633 1520 010634 2405 010635 0400 4355 4356 010636 2516 ERMSY, TEXT &UNKNOWN HANDLER NAME& 010637 1316 010640 1727 010641 1640 010642 1001 010643 1604 010644 1405 010645 2240 010646 1601 010647 1505 010650 0000 4357 4358 010651 1625 ERMSZ, TEXT &NUMBER OR ILLEGAL ERROR OPTION& 010652 1502 010653 0522 010654 4017 010655 2240 010656 1114 010657 1405 010660 0701 010661 1440 010662 0522 010663 2217 010664 2240 010665 1720 010666 2411 010667 1716 010670 0000 4359 4360 010671 1617 ERMS01, TEXT &NON-& 010672 1655 010673 0000 4361 *.-1 4362 4363 010673 0601 ERMS00, TEXT &FATAL READ ERROR& 010674 2401 010675 1440 010676 2205 010677 0104 010700 4005 010701 2222 010702 1722 010703 0000 4364 4365 010704 1617 ERMS03, TEXT &NON-& 010705 1655 010706 0000 4366 *.-1 4367 4368 010706 0601 ERMS02, TEXT &FATAL WRITE ERROR& 010707 2401 010710 1440 010711 2722 010712 1124 010713 0540 010714 0522 010715 2217 010716 2200 4369 4370 010717 1704 ERMS04, TEXT &ODD START LOC OR COUNT IN OS/8 MODIFY& 010720 0440 010721 2324 010722 0122 010723 2440 010724 1417 010725 0340 010726 1722 010727 4003 010730 1725 010731 1624 010732 4011 010733 1640 010734 1723 010735 5770 010736 4015 010737 1704 010740 1106 010741 3100 4371 4372 010742 0201 ERMS05, TEXT &BAD ADDRESS/OVERLAY (ODT COMMANDS)& 010743 0440 010744 0104 010745 0422 010746 0523 010747 2357 010750 1726 010751 0522 010752 1401 010753 3140 010754 5017 010755 0424 010756 4003 010757 1715 010760 1501 010761 1604 010762 2351 010763 0000 4373 4374 /ERMS06, 4375 4376 010764 0201 ERMS07, TEXT &BAD ADDRESS/OVERLAY (MODIFY)& 010765 0440 010766 0104 010767 0422 010770 0523 010771 2357 010772 1726 010773 0522 010774 1401 010775 3140 010776 5015 010777 1704 011000 1106 011001 3151 011002 0000 4377 4378 011003 0122 ERMS08, TEXT &ARGUMENT EXPRESSION NOT TERMINATED BY ")"& 011004 0725 011005 1505 011006 1624 011007 4005 011010 3020 011011 2205 011012 2323 011013 1117 011014 1640 011015 1617 011016 2440 011017 2405 011020 2215 011021 1116 011022 0124 011023 0504 011024 4002 011025 3140 011026 4251 011027 4200 4379 4380 011030 1114 ERMS09, TEXT &ILLEGAL DIGIT& 011031 1405 011032 0701 011033 1440 011034 0411 011035 0711 011036 2400 4381 4382 011037 0425 ERMS10, TEXT &DUMP HANDLER ERROR& 011040 1520 011041 4010 011042 0116 011043 0414 011044 0522 011045 4005 011046 2222 011047 1722 011050 0000 4383 4384 011051 1625 ERMS11, TEXT &NUMBER OR ILLEGAL DMODE OPTION& 011052 1502 011053 0522 011054 4017 011055 2240 011056 1114 011057 1405 011060 0701 011061 1440 011062 0415 011063 1704 011064 0540 011065 1720 011066 2411 011067 1716 011070 0000 4385 4386 /ERMS12, 4387 4388 011071 1114 ERMS13, TEXT &ILLEGAL USE OF ' OR "& 011072 1405 011073 0701 011074 1440 011075 2523 011076 0540 011077 1706 011100 4047 011101 4017 011102 2240 011103 4200 4389 4390 011104 1501 ERMS14, TEXT &MAPPED MODE--USE LIST, NOT DUMP& 011105 2020 011106 0504 011107 4015 011110 1704 011111 0555 011112 5525 011113 2305 011114 4014 011115 1123 011116 2454 011117 4016 011120 1724 011121 4004 011122 2515 011123 2000 4391 4392 011124 1617 ERMS15, TEXT &NO ERROR MESSAGES& 011125 4005 011126 2222 011127 1722 011130 4015 011131 0523 011132 2301 011133 0705 011134 2300 4393 4394 011135 1116 ERMS16, TEXT &INPUT ERROR ON MESSAGES& 011136 2025 011137 2440 011140 0522 011141 2217 011142 2240 011143 1716 011144 4015 011145 0523 011146 2301 011147 0705 011150 2300 4395 4396 011151 0517 ERMS17, TEXT &EOF ON BATCH INPUT& 011152 0640 011153 1716 011154 4002 011155 0124 011156 0310 011157 4011 011160 1620 011161 2524 011162 0000 4397 4398 011163 0516 ERMS18, TEXT &ENTER FAILED& 011164 2405 011165 2240 011166 0601 011167 1114 011170 0504 011171 0000 4399 4400 011172 0314 ERMS19, TEXT &CLOSE FAILED& 011173 1723 011174 0540 011175 0601 011176 1114 011177 0504 011200 0000 4401 4402 011201 0425 ERMS20, TEXT &DUMP FILE OVERRUN& 011202 1520 011203 4006 011204 1114 011205 0540 011206 1726 011207 0522 011210 2225 011211 1600 4403 4404 011212 0405 ERMS99, TEXT &DEBUG& 011213 0225 011214 0700 4405 *12000 /BEGIN ABOVE THE USR AREA 4406 4407 /GCCB & GHDR--ROUTINES TO READ IN THE FIRST BLOCK OF THE 4408 / LAST FILE SPECIFIED BY THE LAST "FILE" COMMAND, ASSUM- 4409 / ING THAT IT WAS A SAVE FILE OR LOAD MODULE, AND DO THE 4410 / FEW CHECKS THAT ARE AVAILABLE TO TEST FOR A CCB (CORE- 4411 / CONTROL-BLOCK) OR HEADER BLOCK BEFORE LETTING THE DATA 4412 / BE USED FOR THE APPROPRIATE PURPOSE. 4413 4414 012000 0000 GCCB, 0 /GET CORE-CONTROL-BLOCK 4415 012001 4300 JMS CCBHDR /DO COMMON TEST & READ-IN 4416 012002 7700 SMA CLA /1ST WORD (-# SEGS) NEG? 4417 012003 5220 JMP GCCERR / NO, CAN'T BE CCB 4418 012004 1777 TAD I (CCBB+3 /GET JOB STATUS WORD 4419 012005 0376 AND (200 /OVERLAY BIT SET (LINK)? 4420 012006 7640 SZA CLA / 0 = NO 4421 012007 1375 TAD (CCBB+140-1 / 1 = YES, START ADDR-1 4422 012010 6201 CDF 0 4423 012011 3774 DCA I (OVLFLG /NO = 0; YES = ADDR-1 4424 012012 6211 CDF 10 4425 012013 1773 TAD I (CCBB+1 /2ND WORD A "CDF CIF X0"? 4426 012014 0372 AND (7707 4427 012015 7041 CIA 4428 012016 1240 TAD GCCCDF 4429 012017 7640 SZA CLA 4430 012020 4771 GCCERR, JMS ERROR1 /LOOKS BAD, JUST EXIT NOW! 4431 012021 2333 ISZ GETSWX /LOOKS OK, 1ST TIME SINCE READ? 4432 012022 5236 JMP GCCB2 /NO, DON'T CHANGE THINGS AGAIN 4433 012023 1370 TAD (CCBB+140+3 /YES, POINT TO LENGTH WORDS 4434 012024 3242 GCCB1, DCA GHDR / TO CHANGE PAGES TO BLOCKS 4435 012025 1642 TAD I GHDR /GET A WORD - PAGES 4436 012026 7450 SNA 4437 012027 5236 JMP GCCB2 / 0 = DONE 4438 012030 7001 IAC /ROUND DOWN IN 2 STEPS FOR PDP-8 4439 012031 7110 CLL RAR 4440 012032 3642 DCA I GHDR /STORE A WORD - BLOCKS 4441 012033 1242 TAD GHDR /UPDATE POINTER TO NEXT 4442 012034 1367 TAD (4 4443 012035 5224 JMP GCCB1 4444 / 4445 012036 3333 GCCB2, DCA GETSWX /BE SURE SWITCH STAYS CLEAR 4446 012037 1721 TAD I SEGNI /GET -# SEGMENTS 4447 012040 6203 GCCCDF, CDF CIF 0 4448 012041 5600 JMP I GCCB /OK, RETURN VALUE 4449 4450 012042 0000 GHDR, 0 /GET HEADER BLOCK (FORTRAN IV) 4451 012043 1366 TAD (3 /TO SET UP CCBB+6 4452 012044 4300 JMS CCBHDR /DO COMMON TEST & READ-IN 4453 012045 1365 TAD (-2 /1ST WORD MUST BE EXACTLY 2 4454 012046 7640 SZA CLA 4455 012047 5273 JMP HDRERR / NO, CAN'T BE A HEADER 4456 012050 2333 ISZ GETSWX /1ST TIME THRU SINCE READ? 4457 012051 5274 JMP GHDR1 / NO, DON'T CHANGE ANYTHING 4458 012052 3764 DCA I (CCBB+47 /YES, BE SURE THESE WORDS 4459 012053 3763 DCA I (CCBB+50 / ARE 0 FOR USERS 4460 012054 1773 TAD I (CCBB+1 /GET START FIELD WORD 4461 012055 7450 SNA 4462 012056 5273 JMP HDRERR / SHOULD BE 1 THRU 7 4463 012057 7106 CLL RTL /LOOKS OK, MOVE FIELD TO BITS 4464 012060 7004 RAL / 6-8 TO HELP "SHOW HEAD" 4465 012061 3773 DCA I (CCBB+1 4466 012062 1773 TAD I (CCBB+1 /ARE THESE ONLY BITS SET? 4467 012063 0372 AND (7707 4468 012064 7640 SZA CLA 4469 012065 5273 JMP HDRERR / NO, SOMETHING MUST BE BAD 4470 012066 1777 TAD I (CCBB+3 /OK, TEST FIELD OF NEXT FREE 4471 012067 7450 SNA 4472 012070 5273 JMP HDRERR / SHOULD BE 1 THRU 7 4473 012071 0362 AND (7770 4474 012072 7640 SZA CLA 4475 012073 4771 HDRERR, JMS ERROR1 4476 012074 3333 GHDR1, DCA GETSWX /MAKE SURE THIS IS 0 4477 012075 7040 CMA /AC NON-ZERO FOR OK 4478 012076 6203 CDF CIF 0 4479 012077 5642 JMP I GHDR /OK, BACK TO USER 4480 4481 012100 0000 CCBHDR, 0 4482 012101 1377 TAD (CCBB+3 /CCBB+6 FOR GHDR 4483 012102 6201 CDF 0 4484 012103 3761 DCA I (GETPNT /SET UP POINTER FOR 'GET' 4485 012104 1760 TAD I (DEVAD /GET ADDR OF DEVICE 4486 012105 3332 DCA DEVADX / HANDLER & SAVE HERE 4487 012106 1757 TAD I (RBLK1 /GET START BLOCK NUMBER 4488 012107 7450 SNA 4489 012110 4771 ERCF, JMS ERROR1 / NO FILE!!! GIVE ERROR 4490 012111 6211 CDF 10 4491 012112 3322 DCA GCCBLK /OK, SET UP 1ST BLOCK 4492 012113 1721 TAD I SEGNI /IS SOMETHING IN MEMORY? 4493 012114 7440 SZA 4494 012115 5700 JMP I CCBHDR / YES, RETURN 1ST WORD 4495 012116 6202 CIF 0 4496 012117 4732 JMS I DEVADX /NO, READ 1ST BLOCK OF FILE 4497 012120 0110 0110 /READ; 1 PAGE; FIELD 1 4498 012121 6400 SEGNI, CCBB /BUFFER IS HERE 4499 012122 0000 GCCBLK, 0 /BLOCK NUMBER 4500 012123 5330 JMP RDERX /...BAD NEWS... 4501 012124 7240 STA 4502 012125 3333 DCA GETSWX /OK, SET "JUST READ" SWITCH 4503 012126 1721 TAD I SEGNI /AND GET 1ST WORD 4504 012127 5700 JMP I CCBHDR 4505 / 4506 012130 6203 RDERX, CDF CIF 0 /RETURN TO FIELD 0 4507 012131 5756 JMP I (RERROR / FOR READ ERROR 4508 4509 012132 0000 DEVADX, 0 4510 012133 0000 GETSWX, 0 4511 4512 4513 012134 4040 MSMOD, TEXT " MOD" 012135 1517 012136 0400 4514 4515 012137 4002 MSBAD, TEXT " BAD BLOCK" 012140 0104 012141 4002 012142 1417 012143 0313 012144 0000 4516 4517 4518 012156 2213 PAGE 012157 0077 012160 0100 012161 0014 012162 7770 012163 6450 012164 6447 012165 7776 012166 0003 012167 0004 012170 6543 012171 2433 012172 7707 012173 6401 012174 0000 012175 6537 012176 0200 012177 6403 4519 /CONTINUATION OF OUTPUT COMMANDS AND ROUTINES FROM FIELD 0 4520 4521 /CONTINUATION OF 'SET' 'DDEV' HANDLER 4522 4523 012200 3263 XDDEV1, DCA DDEVAD /SET UP HANDLER ADDRESS 4524 012201 1777 TAD I (GDEV2 4525 012202 3264 DCA DDEVNO / AND DEVICE NUMBER 4526 012203 6211 CDF 10 4527 012204 1264 TAD DDEVNO /LOOK AT DCW FOR SPECIFIED 4528 012205 1376 TAD (7760-1 / DEVICE TO SEE IF FILE 4529 012206 3265 DCA DDCWPT / STRUCTURED. 4530 012207 1665 TAD I DDCWPT /BIT 0 = 1 FOR FILES 4531 012210 7700 SMA CLA 4532 012211 1375 TAD (212 / NO, LINE-AT-A-TIME 4533 012212 3774 DCA DDEVS / YES, BLOCK-AT-A-TIME 4534 012213 1340 TAD DMPADR /OK, INITIALIZE OUTPUT POINTER 4535 012214 3353 DCA DMPPTR 4536 012215 3253 DCA XOSIZ / AND ZERO BLOCK COUNTER 4537 012216 3266 DCA DNAM / AND CLEAR ANY FILE NAME 4538 012217 7001 IAC 4539 012220 3341 DCA DMPBLK / AND SET BLOCK NUMBER TO 1 4540 012221 5773 JMP XDDEV2 /LAST, GO SET UP NAME FOR OUTPUT 4541 4542 4543 /CONTINUATION OF EXECUTION OF 'OPEN' COMMAND 4544 4545 012222 1372 XOPEN1, TAD (NAM1-1 /SET UP POINTER TO FIELD 0 FILE 4546 012223 3010 DCA DPNT / NAME (NOTE: XR IN FIELD 1!!!) 4547 012224 1410 TAD I DPNT /MOVE THE FILE NAME UP HERE 4548 012225 3266 DCA DNAM 4549 012226 1410 TAD I DPNT 4550 012227 3267 DCA DNAM+1 4551 012230 1410 TAD I DPNT 4552 012231 3270 DCA DNAM+2 4553 012232 1410 TAD I DPNT /GET THE EXTENSION PART 4554 012233 2771 ISZ I (TEMP1 / WAS ANYTHING REALLY SPECIFIED? 4555 012234 5237 JMP XOPEN2 4556 012235 7200 CLA 4557 012236 1370 TAD (0425 / NO, DEFAULT TO ".DU" 4558 012237 3271 XOPEN2, DCA DNAM+3 4559 012240 1310 TAD XCLNAM /SET UP POINTER TO NAME FOR USR 4560 012241 3252 DCA XOBLK 4561 012242 6211 CDF 10 /SET UP RETURN FIELD 4562 012243 1665 TAD I DDCWPT /CLEAR ANY OPEN FILE ON 4563 012244 0367 AND (7770 / THIS DEVICE SO "OPEN" 4564 012245 3665 DCA I DDCWPT / CAN BE DONE WHENEVER! 4565 012246 6202 CIF 0 /SET UP SUBROUTINE FIELD 4566 012247 1264 TAD DDEVNO /GET DUMP DEVICE NUMBER 4567 012250 4766 JMS USEUSR / AND GO GET USR & CALL IT. 4568 012251 0003 3 /ENTER 4569 012252 0000 XOBLK, 0 /NAME POINTER, BECOMES START BLK 4570 012253 0000 XOSIZ, 0 / BECOMES -# BLOCKS CAN USE 4571 012254 4765 ERC18, JMS ERROR1 /THE ENTER FAILED! 4572 012255 1252 TAD XOBLK /OK! SET UP FILE START BLOCK 4573 012256 3341 DCA DMPBLK 4574 012257 1340 TAD DMPADR /INITIALIZE POINTER 4575 012260 3353 DCA DMPPTR 4576 012261 6203 XOCEX, CDF CIF 0 4577 012262 5764 JMP MAIN1 /TRY NEXT COMMAND 4578 4579 012263 7607 DDEVAD, 7607 /INIT ADDRESS TO "SYS:" (SEE ABOVE) 4580 012264 0001 DDEVNO, 1 /INIT THIS TO "SYS:" ALSO. 4581 012265 7760 DDCWPT, 7760 / THIS ALSO 4582 4583 012266 0000 DNAM, 0 /DUMP FILE NAME, INIT TO NULL 4584 012267 0000 0 4585 012270 0000 0 4586 012271 0000 0 /(EXTENSION HERE) 4587 4588 4589 /CONTINUATION OF EXECUTION OF 'CLOSE' COMMAND 4590 4591 012272 1266 XCLOS1, TAD DNAM /IS ANY FILE OPEN? 4592 012273 7650 SNA CLA 4593 012274 5261 JMP XOCEX / NO, IGNORE COMMAND 4594 012275 1277 TAD XCTLZ / YES, OUTPUT A CTRL-Z 4595 012276 4315 JMS DMPOUT / AND FILL TO END 4596 012277 0232 XCTLZ, "Z-100 4597 012300 1252 TAD XOBLK /OK, CALCULATE FILE SIZE 4598 012301 7041 CIA 4599 012302 1341 TAD DMPBLK /= NEXT - START 4600 012303 3311 DCA XCLSIZ /= FILE SIZE IN BLOCKS 4601 012304 1264 TAD DDEVNO /GET DUMP DEVICE NUMBER 4602 012305 6202 CIF 0 4603 012306 4766 JMS USEUSR /GET USR AND CALL IT 4604 012307 0004 4 /CLOSE 4605 012310 2266 XCLNAM, DNAM /POINTER TO FILE NAME 4606 012311 0000 XCLSIZ, 0 /SIZE OF NEW FILE 4607 012312 4765 ERC19, JMS ERROR1 /OH NO! CLOSE FAILED! 4608 012313 3266 DCA DNAM /OK, ZAP KNOWLEDGE OF FILE 4609 012314 5261 JMP XOCEX 4610 4611 4612 012315 0000 DMPOUT, 0 /DUMP FILE CHARACTER OUTPUT ROUTINE 4613 012316 3352 DCA DMPCHR /SAVE THE CHARACTER 4614 012317 1352 TAD DMPCHR /PUT IT INTO FILE BUFFER 4615 012320 6211 CDF 10 /(MUST BE SURE!) 4616 012321 3753 DMPNUL, DCA I DMPPTR /INSERT AN 8 BIT CHAR 4617 012322 2353 ISZ DMPPTR 4618 012323 1353 TAD DMPPTR /NOW AT END OF BUFFER? 4619 012324 1363 TAD (-DMPBUF-400 4620 012325 7650 SNA CLA 4621 012326 5335 JMP DMPIT / YES, DUMP BUFFER NOW 4622 012327 1352 TAD DMPCHR /NO, FILL FOLLOWING THIS CHAR? 4623 012330 7041 CIA 4624 012331 1715 TAD I DMPOUT /(THE TEST CHAR @ CALL+1) 4625 012332 7650 SNA CLA 4626 012333 5321 JMP DMPNUL / YES, FILL WITH NULLS! 4627 012334 5715 JMP I DMPOUT / NO, EXECUTE FILL CHAR 4628 / 4629 012335 6202 DMPIT, CIF 0 4630 012336 4663 JMS I DDEVAD /CALL DUMP FILE HANDLER 4631 012337 4210 4210 /WRITE, 2 PAGES, FIELD 1 4632 012340 6600 DMPADR, DMPBUF 4633 012341 0001 DMPBLK, 1 /BLOCK NUMBER 4634 012342 4765 ERC10, JMS ERROR1 /ERROR ON OUTPUT FILE! 4635 012343 1340 TAD DMPADR /NOW RESET OUTPUT POINTER 4636 012344 3353 DCA DMPPTR 4637 012345 2341 ISZ DMPBLK /INCREMENT BLOCK NUMBER 4638 012346 2253 ISZ XOSIZ /ANY MORE SPACE LEFT? 4639 012347 5715 JMP I DMPOUT / YES, EXIT NOW 4640 012350 3266 DCA DNAM / NO! ZAP DUMP FILE 4641 012351 4765 ERC20, JMS ERROR1 / AND DIE! 4642 012352 0000 DMPCHR, 0 4643 012353 0000 DMPPTR, 0 /CHARACTER OUTPUT POINTER 4644 4645 4646 012363 0600 PAGE 012364 0204 012365 2433 012366 0520 012367 7770 012370 0425 012371 0022 012372 0024 012373 2441 012374 2430 012375 0212 012376 7757 012377 1154 4647 /CONTINUATION OF ROUTINE TO OUTPUT A CHAR TO A DEVICE 4648 4649 012400 1777 TYPE1, TAD I (DMODE /TTY= NONE, PART&-DSWIT, ALL 4650 012401 0776 AND I (DSWIT / SO TEST FOR PART&DSWIT 4651 012402 7640 SZA CLA 4652 012403 5212 JMP TYPE2 /NO OUTPUT TO TTY 4653 012404 1775 TAD I (RTL6 /GET CHARACTER TO OUTPUT 4654 012405 7000 TYPEB, NOP /*** CDF 10 /*** BATCH 4655 012406 6041 TSF /*** CIF BAT /*** CHANGES 4656 012407 5206 JMP .-1 /*** JMS I .+1 /*** LOG 4657 012410 6046 TLS /*** 7400 /*** OUTPUT 4658 012411 7200 CLA /*** CDF 0 4659 012412 7330 TYPE2, STL CLA RAR /=4000 (SET AC BIT 0 FOR TEST) 4660 012413 1776 TAD I (DSWIT /=4000 OR 4001 (DSWIT=1) 4661 012414 0777 AND I (DMODE /FILE= PART&DSWIT OR ALL 4662 012415 7650 SNA CLA 4663 012416 5231 JMP TYPE3 / OUTPUT TO TTY ONLY 4664 012417 1230 TAD DDEVS /FILE STRUCTURED OUTPUT? 4665 012420 6211 CDF 10 4666 012421 7450 SNA 4667 012422 1774 TAD I (DNAM / YES, FILE OPEN? 4668 012423 6201 CDF 0 4669 012424 7650 SNA CLA 4670 012425 5231 JMP TYPE3 / NO TO EITHER 4671 012426 1775 TAD I (RTL6 /OK, GET CHARACTER TO OUTPUT 4672 012427 4773 JMS DMPOUT /OUTPUT IT & TEST FOR END 4673 012430 0000 DDEVS, 0 /TEST: 0=FILE, 212= NON-FILE 4674 012431 6203 TYPE3, CDF CIF 0 4675 012432 5772 JMP TYPEX /BACK AND OUT 4676 4677 4678 012433 0000 ERROR1, 0 /FIELD 1 ERROR ROUTINE HEAD 4679 012434 7200 CLA /CLEAR POSSIBLE JUNK IN AC 4680 012435 1233 TAD ERROR1 /MOVE RETURN ADDR TO FIELD 0 4681 012436 6203 CDF CIF 0 4682 012437 3771 DCA I (XERROR 4683 012440 5770 JMP I (XERROR+1 4684 4685 4686 012441 6201 XDDEV2, CDF 0 /NAME IS OVER THERE 4687 012442 1767 TAD I (NAM1 /MOVE DEVICE NAME INTO STRING 4688 012443 3254 DCA XDDNAM / IN THIS FIELD FOR "SHOW DDEV" 4689 012444 1766 TAD I (NAM2 4690 012445 3255 DCA XDDNAM+1 4691 012446 6203 CDF CIF 0 4692 012447 5765 JMP XSETN /BACK TO 'SET' 4693 4694 012450 0004 MSDDEV, TEXT "@DDEV = SYS@" 012451 0405 012452 2640 012453 7540 012454 2331 012455 2300 012456 0000 4695 XDDNAM= .-3 4696 4697 012457 0004 MSDEV, TEXT "@DEVICE = SYS@" 012460 0526 012461 1103 012462 0540 012463 7540 012464 2331 012465 2300 012466 0000 4698 4699 XDNAM= .-3 /ADDR OF 1ST WORD OF DEVICE NAME 4700 4701 /CONTINUATION OF CODE FROM FIELD 0 4702 4703 012467 3264 XDEVM, DCA XDNAM /SET 4 DEVICE NAME CHARS IN 4704 012470 1766 TAD I (NAM2 / OUTPUT MESSAGE 4705 012471 3265 DCA XDNAM+1 4706 012472 6211 CDF 10 4707 012473 3764 DCA I (CCBB /NO C.C.B. OR HEADER PRESENT 4708 012474 6203 CDF CIF 0 4709 012475 7240 STA 4710 012476 3763 DCA I (RBLK /RESET BLOCK NUMBER 4711 012477 5765 JMP XSETN /GO DO NEXT OPTION 4712 4713 4714 012500 4005 MSERR, TEXT " ERROR CODES: FUTIL " 012501 2222 012502 1722 012503 4003 012504 1704 012505 0523 012506 7240 012507 0625 012510 2411 012511 1440 012512 0000 4715 *.-1 4716 4717 /VERSION NUMBER MESSAGE--THE FOLLOWING CODE INSERTS THE 4718 / VERSION NUMBER AND PATCH LEVEL SET NEAR THE START OF 4719 / THE SOURCE INTO THE VERSION MESSAGE. 4720 4721 012512 2605 MSVER, TEXT "VERSION = ???" /VERS = 2 DIGITS, PATCH = 1 012513 2223 012514 1117 012515 1640 012516 7540 012517 7777 012520 7700 4722 *.-2 4723 VERTEN= VERSION%12 /TENS DIGIT 4724 VERONE= -VERTEN^12+VERSION /ONES DIGIT 4725 012517 6067 VERTEN^100+VERONE+6060 /INSERT TWO DIGITS 4726 012520 0100 PATCH^100 /INSERT PATCH + NULL TERM 4727 4728 /ALPHA MONTH NAMES PLUS DUMMIES FOR PDATE SUBROUTINE 4729 4730 012521 4060 MONTHS, TEXT " 00@JAN@FEB@MAR@APR@MAY@JUN@JUL" 012522 6000 012523 1201 012524 1600 012525 0605 012526 0200 012527 1501 012530 2200 012531 0120 012532 2200 012533 1501 012534 3100 012535 1225 012536 1600 012537 1225 012540 1400 4731 012541 0125 TEXT "AUG@SEP@OCT@NOV@DEC@ 13@ 14@ 15" 012542 0700 012543 2305 012544 2000 012545 1703 012546 2400 012547 1617 012550 2600 012551 0405 012552 0300 012553 4061 012554 6300 012555 4061 012556 6400 012557 4061 012560 6500 4732 4733 4734 012563 3057 PAGE 012564 6400 012565 1600 012566 0026 012567 0025 012570 0455 012571 0454 012572 5042 012573 2315 012574 2266 012575 3762 012576 0052 012577 0053 4735 /SYMBOLICS FOR PDP-8 INSTRUCTIONS: 4736 012600 0116 INSLST, TEXT "AND TAD ISZ DCA JMS JMP IOT NOP " 012601 0440 012602 2401 012603 0440 012604 1123 012605 3240 012606 0403 012607 0140 012610 1215 012611 2340 012612 1215 012613 2040 012614 1117 012615 2440 012616 1617 012617 2040 012620 0000 4737 *.-1 4738 4739 / GROUP 1 MICRO-INSTS.: 4740 012620 0314 OP1LST, TEXT "CLL CMA CML IAC BSW RAL RTL RAR RTR " 012621 1440 012622 0315 012623 0140 012624 0315 012625 1440 012626 1101 012627 0340 012630 0223 012631 2740 012632 2201 012633 1440 012634 2224 012635 1440 012636 2201 012637 2240 012640 2224 012641 2240 012642 0000 4741 *.-1 4742 4743 4744 / GROUP 2 MICRO-INST'S: 4745 012642 2315 OP2LST, TEXT "SMA SZA SNL SKP SPA SNA SZL OSR HLT " 012643 0140 012644 2332 012645 0140 012646 2316 012647 1440 012650 2313 012651 2040 012652 2320 012653 0140 012654 2316 012655 0140 012656 2332 012657 1440 012660 1723 012661 2240 012662 1014 012663 2440 012664 0000 4746 *.-1 4747 4748 / EAE MICRO-INST'S: 4749 012664 1521 EAELST, TEXT "MQA MQL SCL MUY DVI NMI SHL ASR LSR SCA " 012665 0140 012666 1521 012667 1440 012670 2303 012671 1440 012672 1525 012673 3140 012674 0426 012675 1140 012676 1615 012677 1140 012700 2310 012701 1440 012702 0123 012703 2240 012704 1423 012705 2240 012706 2303 012707 0140 012710 0000 4750 *.-1 4751 012710 0401 TEXT "DAD DST SWBADPSZDPICDCM SAM " 012711 0440 012712 0423 012713 2440 012714 2327 012715 0201 012716 0420 012717 2332 012720 0420 012721 1103 012722 0403 012723 1540 012724 2301 012725 1540 012726 0000 4752 *.-1 4753 4754 012726 0314 CLANAM, 0314 /"CLA " 4755 012727 0140 0140 4756 4757 012730 1720 OPRMES, 1720 /"OPR " 4758 012731 2240 2240 4759 / IOT INSTRUCTIONS: 4760 4761 012732 6000 IOTTAB, 6000 4762 012733 2313 TEXT "SKON" 012734 1716 012735 0000 4763 012736 6001 6001 4764 012737 1117 TEXT "ION@" 012740 1600 012741 0000 4765 012742 6002 6002 4766 012743 1117 TEXT "IOF@" 012744 0600 012745 0000 4767 012746 6003 6003 4768 012747 2322 TEXT "SRQ@" 012750 2100 012751 0000 4769 012752 6004 6004 4770 012753 0724 TEXT "GTF@" 012754 0600 012755 0000 4771 012756 6005 6005 4772 012757 2224 TEXT "RTF@" 012760 0600 012761 0000 4773 012762 6006 6006 4774 012763 2307 TEXT "SGT@" 012764 2400 012765 0000 4775 012766 6007 6007 4776 012767 0301 TEXT "CAF@" 012770 0600 012771 0000 4777 012772 6010 6010 4778 012773 2220 TEXT "RPE@" 012774 0500 012775 0000 4779 012776 6011 6011 4780 012777 2223 TEXT "RSF@" 013000 0600 013001 0000 4781 013002 6012 6012 4782 013003 2222 TEXT "RRB@" 013004 0200 013005 0000 4783 013006 6014 6014 4784 013007 2203 TEXT "RCF@" 013010 0600 013011 0000 4785 013012 6016 6016 4786 013013 2203 TEXT "RCC@" 013014 0300 013015 0000 4787 013016 6020 6020 4788 013017 2003 TEXT "PCE@" 013020 0500 013021 0000 4789 013022 6021 6021 4790 013023 2023 TEXT "PSF@" 013024 0600 013025 0000 4791 013026 6022 6022 4792 013027 2003 TEXT "PCF@" 013030 0600 013031 0000 4793 013032 6024 6024 4794 013033 2020 TEXT "PPC@" 013034 0300 013035 0000 4795 013036 6026 6026 4796 013037 2014 TEXT "PLS@" 013040 2300 013041 0000 4797 013042 6030 6030 4798 013043 1303 TEXT "KCF@" 013044 0600 013045 0000 4799 013046 6031 6031 4800 013047 1323 TEXT "KSF@" 013050 0600 013051 0000 4801 013052 6032 6032 4802 013053 1303 TEXT "KCC@" 013054 0300 013055 0000 4803 013056 6034 6034 4804 013057 1322 TEXT "KRS@" 013060 2300 013061 0000 4805 013062 6035 6035 4806 013063 1311 TEXT "KIE@" 013064 0500 013065 0000 4807 013066 6036 6036 4808 013067 1322 TEXT "KRB@" 013070 0200 013071 0000 4809 013072 6040 6040 4810 013073 2406 TEXT "TFL@" 013074 1400 013075 0000 4811 013076 6041 6041 4812 013077 2423 TEXT "TSF@" 013100 0600 013101 0000 4813 013102 6042 6042 4814 013103 2403 TEXT "TCF@" 013104 0600 013105 0000 4815 013106 6044 6044 4816 013107 2420 TEXT "TPC@" 013110 0300 013111 0000 4817 013112 6045 6045 4818 013113 2423 TEXT "TSK@" 013114 1300 013115 0000 4819 013116 6046 6046 4820 013117 2414 TEXT "TLS@" 013120 2300 013121 0000 4821 013122 6100 6100 4822 013123 0420 TEXT "DPI@" 013124 1100 013125 0000 4823 013126 6101 6101 4824 013127 2315 TEXT "SMP@" 013130 2000 013131 0000 4825 013132 6102 6102 4826 013133 2320 TEXT "SPL@" 013134 1400 013135 0000 4827 013136 6103 6103 4828 013137 0520 TEXT "EPI@" 013140 1100 013141 0000 4829 013142 6104 6104 4830 013143 0315 TEXT "CMP@" 013144 2000 013145 0000 4831 013146 6105 6105 4832 013147 2354 TEXT "S,CMP" 013150 0315 013151 2000 4833 013152 6106 6106 4834 013153 0305 TEXT "CEP@" 013154 2000 013155 0000 4835 013156 6107 6107 4836 013157 2320 TEXT "SPO@" 013160 1700 013161 0000 4837 013162 6110 6110 4838 013163 2203 TEXT "RCTV" 013164 2426 013165 0000 4839 013166 6111 6111 4840 013167 2203 TEXT "RCRL" 013170 2214 013171 0000 4841 013172 6112 6112 4842 013173 2203 TEXT "RCRH" 013174 2210 013175 0000 4843 013176 6113 6113 4844 013177 2203 TEXT "RCCV" 013200 0326 013201 0000 4845 013202 6114 6114 4846 013203 2203 TEXT "RCGB" 013204 0702 013205 0000 4847 013206 6115 6115 4848 013207 2203 TEXT "RCLC" 013210 1403 013211 0000 4849 013212 6116 6116 4850 013213 2203 TEXT "RCCB" 013214 0302 013215 0000 4851 013216 6130 6130 4852 013217 0314 TEXT "CLZE" 013220 3205 013221 0000 4853 013222 6131 6131 4854 013223 0314 TEXT "CLSK" 013224 2313 013225 0000 4855 013226 6132 6132 4856 013227 0314 TEXT "CLOE" 013230 1705 013231 0000 4857 013232 6133 6133 4858 013233 0314 TEXT "CLAB" 013234 0102 013235 0000 4859 013236 6134 6134 4860 013237 0314 TEXT "CLEN" 013240 0516 013241 0000 4861 013242 6135 6135 4862 013243 0314 TEXT "CLSA" 013244 2301 013245 0000 4863 013246 6136 6136 4864 013247 0314 TEXT "CLBA" 013250 0201 013251 0000 4865 013252 6137 6137 4866 013253 0314 TEXT "CLCA" 013254 0301 013255 0000 4867 013256 6201 6201 4868 013257 0304 TEXT "CDF 00" 013260 0640 013261 6060 013262 0000 4869 *.-1 4870 013262 6211 6211 4871 013263 0304 TEXT "CDF 10" 013264 0640 013265 6160 013266 0000 4872 *.-1 4873 013266 6221 6221 4874 013267 0304 TEXT "CDF 20" 013270 0640 013271 6260 013272 0000 4875 *.-1 4876 013272 6231 6231 4877 013273 0304 TEXT "CDF 30" 013274 0640 013275 6360 013276 0000 4878 *.-1 4879 013276 6241 6241 4880 013277 0304 TEXT "CDF 40" 013300 0640 013301 6460 013302 0000 4881 *.-1 4882 013302 6251 6251 4883 013303 0304 TEXT "CDF 50" 013304 0640 013305 6560 013306 0000 4884 *.-1 4885 013306 6261 6261 4886 013307 0304 TEXT "CDF 60" 013310 0640 013311 6660 013312 0000 4887 *.-1 4888 013312 6271 6271 4889 013313 0304 TEXT "CDF 70" 013314 0640 013315 6760 013316 0000 4890 *.-1 4891 013316 6202 6202 4892 013317 0311 TEXT "CIF 00" 013320 0640 013321 6060 013322 0000 4893 *.-1 4894 013322 6212 6212 4895 013323 0311 TEXT "CIF 10" 013324 0640 013325 6160 013326 0000 4896 *.-1 4897 013326 6222 6222 4898 013327 0311 TEXT "CIF 20" 013330 0640 013331 6260 013332 0000 4899 *.-1 4900 013332 6232 6232 4901 013333 0311 TEXT "CIF 30" 013334 0640 013335 6360 013336 0000 4902 *.-1 4903 013336 6242 6242 4904 013337 0311 TEXT "CIF 40" 013340 0640 013341 6460 013342 0000 4905 *.-1 4906 013342 6252 6252 4907 013343 0311 TEXT "CIF 50" 013344 0640 013345 6560 013346 0000 4908 *.-1 4909 013346 6262 6262 4910 013347 0311 TEXT "CIF 60" 013350 0640 013351 6660 013352 0000 4911 *.-1 4912 013352 6272 6272 4913 013353 0311 TEXT "CIF 70" 013354 0640 013355 6760 013356 0000 4914 *.-1 4915 013356 6203 6203 4916 013357 0304 TEXT "CDIF00" 013360 1106 013361 6060 013362 0000 4917 *.-1 4918 013362 6213 6213 4919 013363 0304 TEXT "CDIF10" 013364 1106 013365 6160 013366 0000 4920 *.-1 4921 013366 6223 6223 4922 013367 0304 TEXT "CDIF20" 013370 1106 013371 6260 013372 0000 4923 *.-1 4924 013372 6233 6233 4925 013373 0304 TEXT "CDIF30" 013374 1106 013375 6360 013376 0000 4926 *.-1 4927 013376 6243 6243 4928 013377 0304 TEXT "CDIF40" 013400 1106 013401 6460 013402 0000 4929 *.-1 4930 013402 6253 6253 4931 013403 0304 TEXT "CDIF50" 013404 1106 013405 6560 013406 0000 4932 *.-1 4933 013406 6263 6263 4934 013407 0304 TEXT "CDIF60" 013410 1106 013411 6660 013412 0000 4935 *.-1 4936 013412 6273 6273 4937 013413 0304 TEXT "CDIF70" 013414 1106 013415 6760 013416 0000 4938 *.-1 4939 013416 6204 6204 4940 013417 0311 TEXT "CINT" 013420 1624 013421 0000 4941 013422 6214 6214 4942 013423 2204 TEXT "RDF@" 013424 0600 013425 0000 4943 013426 6224 6224 4944 013427 2211 TEXT "RIF@" 013430 0600 013431 0000 4945 013432 6234 6234 4946 013433 2211 TEXT "RIB@" 013434 0200 013435 0000 4947 013436 6244 6244 4948 013437 2215 TEXT "RMF@" 013440 0600 013441 0000 4949 013442 6254 6254 4950 013443 2311 TEXT "SINT" 013444 1624 013445 0000 4951 013446 6264 6264 4952 013447 0325 TEXT "CUF@" 013450 0600 013451 0000 4953 013452 6274 6274 4954 013453 2325 TEXT "SUF@" 013454 0600 013455 0000 4955 013456 6550 6550 4956 013457 0606 TEXT "FFST" 013460 2324 013461 0000 4957 013462 6551 6551 4958 013463 0620 TEXT "FPINT" 013464 1116 013465 2400 4959 013466 6552 6552 4960 013467 0620 TEXT "FPICL" 013470 1103 013471 1400 4961 013472 6553 6553 4962 013473 0620 TEXT "FPCOM" 013474 0317 013475 1500 4963 013476 6554 6554 4964 013477 0620 TEXT "FPHLT" 013500 1014 013501 2400 4965 013502 6555 6555 4966 013503 0620 TEXT "FPST" 013504 2324 013505 0000 4967 013506 6556 6556 4968 013507 0620 TEXT "FPRST" 013510 2223 013511 2400 4969 013512 6557 6557 4970 013513 0620 TEXT "FPIST" 013514 1123 013515 2400 4971 013516 6561 6561 4972 013517 0615 TEXT "FMODE" 013520 1704 013521 0500 4973 013522 6563 6563 4974 013523 0615 TEXT "FMRB" 013524 2202 013525 0000 4975 013526 6564 6564 4976 013527 0615 TEXT "FMRP" 013530 2220 013531 0000 4977 013532 6565 6565 4978 013533 0615 TEXT "FMDO" 013534 0417 013535 0000 4979 013536 6567 6567 4980 013537 0620 TEXT "FPEP" 013540 0520 013541 0000 4981 4982 4983 013542 0000 NXTIOT, ZBLOCK 200 /LEAVE ROOM FOR EXPANSION 013543 0000 013544 0000 013545 0000 013546 0000 013547 0000 013550 0000 013551 0000 013552 0000 013553 0000 013554 0000 013555 0000 013556 0000 013557 0000 013560 0000 013561 0000 013562 0000 013563 0000 013564 0000 013565 0000 013566 0000 013567 0000 013570 0000 013571 0000 013572 0000 013573 0000 013574 0000 013575 0000 013576 0000 013577 0000 013600 0000 013601 0000 013602 0000 013603 0000 013604 0000 013605 0000 013606 0000 013607 0000 013610 0000 013611 0000 013612 0000 013613 0000 013614 0000 013615 0000 013616 0000 013617 0000 013620 0000 013621 0000 013622 0000 013623 0000 013624 0000 013625 0000 013626 0000 013627 0000 013630 0000 013631 0000 013632 0000 013633 0000 013634 0000 013635 0000 013636 0000 013637 0000 013640 0000 013641 0000 013642 0000 013643 0000 013644 0000 013645 0000 013646 0000 013647 0000 013650 0000 013651 0000 013652 0000 013653 0000 013654 0000 013655 0000 013656 0000 013657 0000 013660 0000 013661 0000 013662 0000 013663 0000 013664 0000 013665 0000 013666 0000 013667 0000 013670 0000 013671 0000 013672 0000 013673 0000 013674 0000 013675 0000 013676 0000 013677 0000 013700 0000 013701 0000 013702 0000 013703 0000 013704 0000 013705 0000 013706 0000 013707 0000 013710 0000 013711 0000 013712 0000 013713 0000 013714 0000 013715 0000 013716 0000 013717 0000 013720 0000 013721 0000 013722 0000 013723 0000 013724 0000 013725 0000 013726 0000 013727 0000 013730 0000 013731 0000 013732 0000 013733 0000 013734 0000 013735 0000 013736 0000 013737 0000 013740 0000 013741 0000 4984 4985 013742 0000 0 /TABLE TERMINATOR 4986 4987 4988 /CODES MAY BE ADDED TO THE TABLE IN THE SPACE LEFT BY THE 4989 / "ZBLOCK 200". SINCE EACH ENTRY REQUIRES 4 WORDS (THE 4990 / ACTUAL CODE IN THE FIRST WORD AND UP TO 6 PACKED ASCII 4991 / CHARACTERS IN THE NEXT THREE WORDS, PADDED WITH TRAIL- 4992 / ING 0'S), THERE IS ROOM FOR 40 OCTAL (32 DECIMAL) IOTS 4993 / AND THEIR NAMES. THESE CAN BE PATCHED IN DIRECTLY 4994 / USING THE PROGRAM ITSELF. **** NOTE THAT THE CONTENTS 4995 / OF LOCATION 10000 POINT TO THE FIRST FREE ENTRY. **** 4996 /SYMBOLICS FOR FPP-12/8A INSTRUCTIONS 4997 4998 013743 4040 MSBASE, TEXT " B+" 013744 0253 013745 0000 4999 5000 013746 4540 MSINDI, TEXT "% B+" 013747 0253 013750 0000 5001 5002 013751 1216 MSJNX, TEXT "JNX " 013752 3040 013753 4000 5003 5004 /THE FOLLOWING STRINGS ARE PADDED WITH "@"S IN PROPER 5005 / PLACES TO FORCE WORD ALIGNMENT AS NEEDED. 5006 5007 013754 1405 TEXT "LEA@" /+1 WORD 0000 013755 0100 013756 0000 5008 013757 0614 FPPINS, TEXT "FLDA@@FADD@@FSUB@@FDIV" 013760 0401 013761 0000 013762 0601 013763 0404 013764 0000 013765 0623 013766 2502 013767 0000 013770 0604 013771 1126 013772 0000 5009 013773 0615 TEXT "FMUL@@FADDM@FSTA@@FMULM" 013774 2514 013775 0000 013776 0601 013777 0404 014000 1500 014001 0623 014002 2401 014003 0000 014004 0615 014005 2514 014006 1500 5010 5011 014007 2516 TEXT "UNUSEDSTARTE" 014010 2523 014011 0504 014012 2324 014013 0122 014014 2405 014015 0000 5012 *.-1 5013 014015 0616 FPOP00, TEXT "FNOP@@FEXIT@FPAUSEFCLA@@FNEG" 014016 1720 014017 0000 014020 0605 014021 3011 014022 2400 014023 0620 014024 0125 014025 2305 014026 0603 014027 1401 014030 0000 014031 0616 014032 0507 014033 0000 5014 014034 0616 TEXT "FNORM@STARTFSTARTDJAC@@" 014035 1722 014036 1500 014037 2324 014040 0122 014041 2406 014042 2324 014043 0122 014044 2404 014045 1201 014046 0300 014047 0000 5015 5016 014050 0114 FPXR1S, TEXT "ALN ATX XTA " 014051 1640 014052 0124 014053 3040 014054 3024 014055 0140 014056 0000 5017 5018 014057 0104 FPXR2S, TEXT "ADDX *,@LDX *,@" 014060 0430 014061 4052 014062 5400 014063 1404 014064 3040 014065 5254 014066 0000 5019 5020 014067 2422 FOP134, TEXT "TRAP4 TRAP3 SETX SETB JSA @JSR " 014070 0120 014071 6440 014072 2422 014073 0120 014074 6340 014075 2305 014076 2430 014077 4040 014100 2305 014101 2402 014102 4040 014103 1223 014104 0140 014105 4000 014106 1223 014107 2240 014110 4000 5021 5022 014111 0521 FPCOND, TEXT "EQGELEA@NELTGTAL" 014112 0705 014113 1405 014114 0100 014115 1605 014116 1424 014117 0724 014120 0114 014121 0000 5023 5024 5025 /CONTROL TABLES FOR FPP INSTRUCTION DECODING 5026 5027 014122 0007 FPPMO0, 7 /MAJOR SUB-OP-CODE OF SPECIALS 5028 014123 0006 6 5029 014124 0005 5 5030 014125 0004 4 5031 014126 0003 3 5032 014127 0002 2 5033 014130 0001 1 5034 014131 0000 0 /END & FALL-OUT POINT 5035 5036 014132 4756 FPPMOJ, SPCOP7 5037 014133 4757 SPCOP6 5038 014134 4747 SPCOP5 5039 014135 4732 SPCOP4 5040 014136 4731 SPCOP3 5041 014137 4744 SPCOP2 5042 014140 4717 SPCOP1 5043 5044 014141 0170 FPPOP0, 170 /MINOR SUB-OP-CODE OF SUB-OP-CODE 5045 014142 0160 160 / 0 SPECIALS 5046 014143 0150 150 5047 014144 0140 140 5048 014145 0130 130 5049 014146 0120 120 5050 014147 0110 110 5051 014150 0100 100 5052 014151 0070 70 5053 014152 0060 60 5054 014153 0050 50 5055 014154 0040 40 5056 014155 0030 30 5057 014156 0020 20 5058 014157 0010 10 5059 014160 0000 00 5060 5061 014161 4677 FPPOPJ, SPNUSE /ALL UNUSED POSSIBILITIES 5062 014162 4677 SPNUSE 5063 014163 4677 SPNUSE 5064 014164 4677 SPNUSE 5065 014165 4677 SPNUSE 5066 014166 4677 SPNUSE 5067 014167 4710 SPOP11 5068 014170 4707 SPOP10 5069 014171 4677 SPNUSE 5070 014172 4677 SPNUSE 5071 014173 4675 SPOP05 5072 014174 4670 SPOP04 5073 014175 4701 SPO123 5074 014176 4701 SPO123 5075 014177 4701 SPO123 5076 /MESSAGES: 5077 5078 014200 4075 MS01, TEXT " = " 014201 4040 014202 0000 5079 5080 014203 0023 MS07, 0023 /"SMASK = " 5081 014204 1501 MS02, TEXT "MASK = " 014205 2313 014206 4075 014207 4000 5082 5083 014210 0102 MS03, TEXT "ABS. LOC = " 014211 2356 014212 4014 014213 1703 014214 4075 014215 4000 5084 5085 014216 2520 MS04, TEXT "UPPER = " 014217 2005 014220 2240 014221 7540 014222 0000 5086 5087 014223 1417 MS05, TEXT "LOWER = " 014224 2705 014225 2240 014226 7540 014227 0000 5088 5089 014230 0617 MS06, TEXT "FORMAT = " 014231 2215 014232 0124 014233 4075 014234 4000 5090 5091 014235 0411 MS08, TEXT "DIRECTORY" 014236 2205 014237 0324 014240 1722 014241 3100 5092 5093 014242 1706 MS09, TEXT "OFFSET = " 014243 0623 014244 0524 014245 4075 014246 4000 5094 5095 014247 1517 MS10, TEXT "MODE = " 014250 0405 014251 4075 014252 4000 5096 5097 014253 0303 MS11, TEXT "CCB:" 014254 0272 014255 0000 5098 5099 014256 1704 MS12, TEXT "ODT LOC = " 014257 2440 014260 4014 014261 1703 014262 4075 014263 4000 5100 5101 014264 7240 MS13, TEXT ": " 014265 4040 014266 0000 5102 5103 014267 4040 MS14, TEXT " CORE SEGS: " 014270 0317 014271 2205 014272 4023 014273 0507 014274 2372 014275 4040 014276 4000 5104 5105 014277 1417 MS15, TEXT "LOOKUP FAILED" 014300 1713 014301 2520 014302 4006 014303 0111 014304 1405 014305 0400 5106 5107 014306 0620 MS16, TEXT "FPP" 014307 2000 5108 5109 014310 4001 MS17, TEXT " AT " 014311 2440 014312 0000 5110 5111 014313 4040 MS18, TEXT " SA = " 014314 2301 014315 4075 014316 4000 5112 5113 014317 5440 MS19, TEXT ", JSW = " 014320 4012 014321 2327 014322 4075 014323 4000 5114 5115 014324 2205 MS20, TEXT "REL. LOC = " 014325 1456 014326 4014 014327 1703 014330 4075 014331 4000 5116 5117 014332 2001 MS21, TEXT "PACKED" 014333 0313 014334 0504 014335 0000 5118 5119 014336 0123 MS22, TEXT "ASCII" 014337 0311 014340 1100 5120 5121 014341 1723 MS23, TEXT "OS/8" 014342 5770 014343 0000 5122 5123 014344 2516 MS24, 2516 /"UNSIGNED" 5124 5125 014345 2311 MS25, TEXT "SIGNED" 014346 0716 014347 0504 014350 0000 5126 5127 014351 1703 MS26, TEXT "OCTAL" 014352 2401 014353 1400 5128 5129 014354 1706 MS27, TEXT "OFFSET" 014355 0623 014356 0524 014357 0000 5130 5131 014360 2301 MS28, TEXT "SAVE" 014361 2605 014362 0000 5132 5133 014363 1617 MS29, TEXT "NORMAL" 014364 2215 014365 0114 014366 0000 5134 5135 014367 1725 MS30, TEXT "OUTPUT = " 014370 2420 014371 2524 014372 4075 014373 4000 5136 5137 014374 2004 MS31, TEXT "PDP" 014375 2000 5138 5139 014376 0214 MS32, TEXT "BLOCK = " 014377 1703 014400 1340 014401 7540 014402 0000 5140 5141 014403 5140 MS33, TEXT ") " 014404 4000 5142 5143 014405 1417 MS34, TEXT "LOAD" 014406 0104 014407 0000 5144 5145 014410 0203 MS35, TEXT "BCD" 014411 0400 5146 5147 014412 0231 MS36, TEXT "BYTE" 014413 2405 014414 0000 5148 5149 014415 0611 MS37, TEXT "FILLER = " 014416 1414 014417 0522 014420 4075 014421 4000 5150 5151 014422 1005 MS38, TEXT "HEADER:" 014423 0104 014424 0522 014425 7200 5152 5153 014426 5440 MS39, TEXT ", NEXT WORD = " 014427 1605 014430 3024 014431 4027 014432 1722 014433 0440 014434 7540 014435 0000 5154 5155 014436 5440 MS40, TEXT ", LOAD V " 014437 1417 014440 0104 014441 4026 014442 4000 5156 5157 014443 5440 MS41, TEXT ", E.P. REQ'D" 014444 0556 014445 2056 014446 4022 014447 0521 014450 4704 014451 0000 5158 5159 014452 4040 MS42, TEXT " OVLYS START BLOCK LENGTH" 014453 1726 014454 1431 014455 2340 014456 2324 014457 0122 014460 2440 014461 0214 014462 1703 014463 1340 014464 1405 014465 1607 014466 2410 014467 0000 5160 5161 014470 3023 MS43, TEXT "XS240" 014471 6264 014472 6000 5162 /MAIN LOOP CHARACTER LIST 5163 014473 0243 CCHARL, "# 5164 014474 0244 "$ 5165 014475 0245 "% 5166 014476 0246 "& 5167 014477 0272 ": 5168 014500 0274 "< 5169 014501 0275 "= 5170 014502 0276 "> 5171 014503 0277 "? 5172 014504 0300 "@ 5173 014505 0333 "[ 5174 014506 0334 "\ 5175 014507 0335 "] 5176 014510 0257 "/ 5177 014511 0241 "! 5178 014512 0253 "+ 5179 014513 0255 "- 5180 014514 0273 "; 5181 014515 0336 "^ 5182 014516 0337 "_ 5183 /'TYPE' COMMAND LIST 5184 014517 0211 TYPEL, 211 /TAB 5185 014520 0233 233 /ALT MODES 5186 014521 0375 375 5187 014522 0376 376 5188 /'XMODIF' CHECK LIST 5189 014523 0215 TYPEM, 215 /CR 5190 014524 0212 212 /LF 5191 014525 0000 0 5192 5193 /ADDRESSES FOR 'OMODES' 5194 014526 3415 OTABLE, BPRT /# 5195 014527 3511 OSTYPE /$ 5196 014530 3517 BYTEO /% 5197 014531 5352 XS240O /& 5198 014532 3423 SGNDP /: 5199 014533 3400 OPRT /< 5200 014534 3436 DPRT /= 5201 014535 4221 PDPOUT /> 5202 014536 3163 DIROUT /? 5203 014537 5000 PDATE /@ 5204 014540 2163 ASCII /[ 5205 014541 4600 FPPOUT /\ 5206 014542 3621 PACOUT /] 5207 5208 /MAIN LOOP JUMP LIST - RESPOND TO SPECIAL CHAR 5209 014543 0255 COPSL, OMODES 5210 014544 0255 OMODES 5211 014545 0255 OMODES 5212 014546 0255 OMODES 5213 014547 0255 OMODES 5214 014550 0255 OMODES 5215 014551 0255 OMODES /SEE ABOVE LIST 5216 014552 0255 OMODES 5217 014553 0255 OMODES 5218 014554 0255 OMODES 5219 014555 0255 OMODES 5220 014556 0255 OMODES 5221 014557 0255 OMODES 5222 014560 0237 SLASH 5223 014561 0312 EXCL 5224 014562 0344 PLUS 5225 014563 0345 MINUS 5226 014564 0310 SEMIC 5227 014565 0274 UPARR 5228 014566 0271 BACKAR 5229 014567 4024 RESPC 5230 014570 0253 ALTMOD 5231 014571 0253 ALTMOD 5232 014572 0253 ALTMOD 5233 014573 0216 CRCR 5234 014574 0311 LFLF 5235 5236 /'TYPE' JUMP LIST 5237 014575 5106 TYPEOP, TYPTAB 5238 014576 5101 TYPALT 5239 014577 5101 TYPALT 5240 014600 5101 TYPALT 5241 014601 5104 TYPCR 5242 014602 5105 TYPCR+1 5243 5244 /COMMAND WORD LIST FOR COMMANDS NOT FOLLOWED BY CR 5245 014603 0526 CWORDL, TEXT "EVE@DUD@LIL@FIF@OPSCSTSMWOW@MOM@SHSES@WRIFEXCOC@" 014604 0500 014605 0425 014606 0400 014607 1411 014610 1400 014611 0611 014612 0600 014613 1720 014614 2303 014615 2324 014616 2315 014617 2717 014620 2700 014621 1517 014622 1500 014623 2310 014624 2305 014625 2300 014626 2722 014627 1106 014630 0530 014631 0317 014632 0300 014633 0000 5246 5247 /MAIN LOOP JUMP LIST - EXECUTE A COMMAND 5248 014634 0400 WOPSL, XVAL 5249 014635 0400 XVAL 5250 014636 0603 XDUMP 5251 014637 0603 XDUMP 5252 014640 0632 XLIST0 5253 014641 0632 XLIST0 5254 014642 1024 XFILE 5255 014643 1024 XFILE 5256 014644 1000 XOPEN 5257 014645 0600 XSCAN 5258 014646 2216 XSTRIN 5259 014647 2600 XSMASK 5260 014650 2000 XWORD 5261 014651 2000 XWORD 5262 014652 2417 XMODIF 5263 014653 2417 XMODIF 5264 014654 1210 XSHOW 5265 014655 1602 XSET 5266 014656 1602 XSET 5267 014657 2400 XWRARG 5268 014660 1713 XIF 5269 014661 5160 XEXIT 5270 014662 0204 MAIN1 /COMMENT 5271 014663 0204 MAIN1 5272 5273 /LISTS FOR COMMANDS FOLLOWED BY A CR. 5274 014664 2205 CWORL2, TEXT "REWRENEXCLCOC@" 014665 2722 014666 0516 014667 0530 014670 0314 014671 0317 014672 0300 014673 0000 5275 5276 014674 2200 WOPSLL, XREWIN /REWIND 5277 014675 2403 XWRITE /WRITE 5278 014676 0204 MAIN1 /END 5279 014677 5160 XEXIT /EXIT 5280 014700 1004 XCLOSE /CLOSE 5281 014701 0204 MAIN1 /COMMENT 5282 014702 0204 MAIN1 5283 /'XFORM' LISTS ----ORDER IS CRITICAL---- 5284 014703 2001 FORML, TEXT "PAP@ASA@OSOSXSX@UNU@SIS@OCO@BCB@BYBYPDPDFPF@DID@" 014704 2000 014705 0123 014706 0100 014707 1723 014710 1723 014711 3023 014712 3000 014713 2516 014714 2500 014715 2311 014716 2300 014717 1703 014720 1700 014721 0203 014722 0200 014723 0231 014724 0231 014725 2004 014726 2004 014727 0620 014730 0600 014731 0411 014732 0400 014733 0000 5285 5286 014734 0740 FOPSL, XFCHR /PACKED (ASCII) 5287 014735 0740 XFCHR 5288 014736 0740 XFCHR /ASCII 5289 014737 0740 XFCHR 5290 014740 0740 XFCHR /OS/8 (ASCII, PACKED) 5291 014741 0740 XFCHR 5292 014742 0740 XFCHR /XS240 (ASCII, PACKED) 5293 014743 0740 XFCHR 5294 014744 0737 XFNUM /UNSIGNED (DECIMAL) 5295 014745 0737 XFNUM 5296 014746 0737 XFNUM /SIGNED (DECIMAL) 5297 014747 0737 XFNUM 5298 014750 0737 XFNUM /OCTAL 5299 014751 0737 XFNUM 5300 014752 0737 XFNUM /BCD 5301 014753 0737 XFNUM 5302 014754 0737 XFNUM /BYTE (OCTAL) 5303 014755 0737 XFNUM 5304 014756 0736 XFSYM /PDP (SYMBOLIC) 5305 014757 0736 XFSYM 5306 014760 0736 XFSYM /FPP (SYMBOLIC) 5307 014761 0736 XFSYM 5308 014762 0736 XFSYM /DIRECTORY 5309 014763 0736 XFSYM 5310 5311 / ROUTINE ADDRESS LIST 5312 5313 014764 3621 FTABLE, PACOUT 5314 014765 2163 ASCII 5315 014766 3511 OSTYPE 5316 014767 5352 XS240O 5317 014770 3436 DPRT 5318 014771 3423 SGNDP 5319 014772 3400 OPRT 5320 014773 3415 BPRT 5321 014774 3517 BYTEO 5322 014775 4214 PDPDMP 5323 014776 4400 FPPDMP 5324 014777 3155 DIRDMP 5325 5326 /'XSHFMT' DESCRIPTOR ADDRESS LIST 5327 015000 4332 FMTLS, MS21 /PACKED ASCII 5328 015001 4336 MS22 /ASCII 5329 015002 4341 MS23 /OS/8 ASCII 5330 015003 4470 MS43 /XS240 ASCII 5331 015004 4344 MS24 /UNSIGNED DECIMAL 5332 015005 4345 MS25 /SIGNED DECIMAL 5333 015006 4351 MS26 /OCTAL 5334 015007 4410 MS35 /BCD 5335 015010 4412 MS36 /BYTE 5336 015011 4374 MS31 /PDP SYMBOLIC 5337 015012 4306 MS16 /FPP SYMBOLIC 5338 015013 4235 MS08 /DIRECTORY 5339 5340 5341 /'XMODIF' COMMAND LIST 5342 015014 2001 MODIFL, TEXT "PAP@ASA@OSXSNUN@" 015015 2000 015016 0123 015017 0100 015020 1723 015021 3023 015022 1625 015023 1600 015024 0000 5343 5344 /'XMODIF' JUMP LIST 5345 015025 2620 MODIFO, XPAC0 /PACKED 5346 015026 2620 XPAC0 5347 015027 2537 XASC1 /ASCII 5348 015030 2537 XASC1 5349 015031 2634 XOPS1 /OS/8 5350 015032 2617 XXS20 /XS240 5351 015033 2514 XNUM2 /NUMERIC 5352 015034 2514 XNUM2 5353 5354 015035 2436 MODADS, XMOD0 /MODIFL TEST LIST 5355 015036 2436 XMOD0 5356 015037 2436 XMOD0 5357 015040 2436 XMOD0 5358 015041 2436 XMOD0 5359 015042 2436 XMOD0 5360 015043 2436 XMOD0 5361 015044 2436 XMOD0 5362 015045 2436 XMOD0 5363 5364 015046 2001 MODDLS, TEXT "PAASOSXSNUNUNUNUNUNUNUNU" /DEFAULT LIST 015047 0123 015050 1723 015051 3023 015052 1625 015053 1625 015054 1625 015055 1625 015056 1625 015057 1625 015060 1625 015061 1625 015062 0000 5365 5366 /'XMODIF' CHARACTER JUMP LIST 5367 015063 2465 MCHARO, XMODCR /CR, END 5368 015064 4007 RENEXT /LF, IGNORE 5369 5370 /'XIF' CHARACTER JUMP LIST 5371 015065 1731 IFSKPO, XIFCR /CR, END OF LINE 5372 015066 4007 RENEXT /LF, IGNORE 5373 5374 /XNUM JUMP LIST 5375 015067 2512 NUMOPS, XNUM1 /, 5376 015070 5722 ERCQ /: 5377 015071 5722 ERCQ /. 5378 015072 2513 XNUM1+1 /SPACE 5379 015073 2524 XNUM3 /CR 5380 /'XSHOW' COMMAND LIST 5381 015074 0214 SHOWL, TEXT "BLB@ODCCC@HEH@ABA@RER@SMVE" 015075 0200 015076 1704 015077 0303 015100 0300 015101 1005 015102 1000 015103 0102 015104 0100 015105 2205 015106 2200 015107 2315 015110 2605 015111 0000 5382 *.-1 5383 /'XSET' COMMAND LIST 5384 015111 0404 SETLST, TEXT "DDFOF@OUO@ERE@OFUPLOTEDEDMMOFIMAM@ 015112 0617 015113 0600 015114 1725 015115 1700 015116 0522 015117 0500 015120 1706 015121 2520 015122 1417 015123 2405 015124 0405 015125 0415 015126 1517 015127 0611 015130 1501 015131 1500 015132 0000 parens ^ 5385 5386 /'XSHOW' JUMP LIST 5387 015133 1200 SHOWOP, XSHBLK /BLOCK 5388 015134 1200 XSHBLK 5389 015135 1236 XSHODL /ODT LOC 5390 015136 1400 XSHCCB /CCB (CORE CONTROL BLOCK) 5391 015137 1400 XSHCCB 5392 015140 1457 XSHHDR /HEADER (F4 LOAD MODULE) 5393 015141 1457 XSHHDR 5394 015142 1250 XSHABS /ABS. LOC 5395 015143 1250 XSHABS 5396 015144 1243 XSHREL /REL. LOC 5397 015145 1243 XSHREL 5398 015146 1321 XSHSMS /SMASK 5399 015147 1216 XSHVER /VERSION 5400 015150 1360 XSHDDEV /DDEV 5401 015151 1277 XSHFMT /FORMAT 5402 015152 1277 XSHFMT 5403 015153 1314 XSHOUT /OUTPUT 5404 015154 1314 XSHOUT 5405 015155 1532 XSHERR /ERRORS 5406 015156 1532 XSHERR 5407 015157 1225 XSHOFF /OFFSET 5408 015160 1265 XSHUPP /UPPER 5409 015161 1272 XSHLOW /LOWER 5410 015162 1215 ERCG /TEMP--NOT ALLOWED FOR SHOW 5411 015163 1347 XSHDEV /DEVICE 5412 015164 1215 ERCG /DMODE--NOT ALLOWED FOR SHOW 5413 015165 1307 XSHMOD /MODE 5414 015166 1232 XSHFIL /FILLER 5415 015167 1221 XSHMSK /MASK 5416 015170 1221 XSHMSK 5417 5418 /'XSET' JUMP LIST 5419 015171 1134 SETJMP, XDDEV /DDEV (DUMP DEVICE) 5420 015172 0754 XFORM /FORMAT 5421 015173 0754 XFORM 5422 015174 1624 XOUTS /OUTPUT 5423 015175 1624 XOUTS 5424 015176 1647 XEMODE /ERROR (MODE) 5425 015177 1647 XEMODE 5426 015200 1642 XOFFS /OFFSET 5427 015201 1660 XUPP /UPPER 5428 015202 1663 XLOW /LOWER 5429 015203 1705 XTEMP /TEMP 5430 015204 1121 XDEV /DEVICE 5431 015205 1612 XDMODE /DMODE (DUMP MODE) 5432 015206 1666 XMODE /MODE 5433 015207 1701 XFILL /FILLER 5434 015210 1636 XMASK /MASK 5435 015211 1636 XMASK 5436 5437 /'XEMODE' COMMAND LIST 5438 015212 2310 XELST, TEXT "SHS@LOL@" 015213 2300 015214 1417 015215 1400 015216 0000 5439 5440 /'XEMODE' BRANCH LIST 5441 015217 1655 XEOPS, XEMOD1 /SHORT 5442 015220 1655 XEMOD1 5443 015221 1656 XEMOD1+1 /LONG 5444 015222 1656 XEMOD1+1 5445 5446 /'XOUTS' LISTS 5447 015223 0620 XOLST, TEXT "FPF@PDP@OCO@" 015224 0600 015225 2004 015226 2000 015227 1703 015230 1700 015231 0000 5448 5449 015232 1632 XOOPS, XOUTS1-1 /FPP SYMBOLIC 5450 015233 1632 XOUTS1-1 5451 015234 1633 XOUTS1 /PDP SYMBOLIC 5452 015235 1633 XOUTS1 5453 015236 1634 XOUTS1+1 /OCTAL 5454 015237 1634 XOUTS1+1 5455 5456 /'XMODE' COMMAND LIST 5457 015240 1706 MODLST, TEXT "OFO@SAS@LOL@NON@" 015241 1700 015242 2301 015243 2300 015244 1417 015245 1400 015246 1617 015247 1600 015250 0000 5458 5459 /'XMODE' JUMP LIST 5460 015251 1674 MODOPS, XMODS-1 /OFFSET 5461 015252 1674 XMODS-1 5462 015253 1676 XMODS+1 /SAVE FILE 5463 015254 1676 XMODS+1 5464 015255 1675 XMODS /LOAD MODULE 5465 015256 1675 XMODS 5466 015257 1677 XMODS+2 /NORMAL 5467 015260 1677 XMODS+2 5468 5469 /'XDMODE' LISTS 5470 015261 0114 XDMLST, TEXT "ALPANO" 015262 2001 015263 1617 015264 0000 5471 5472 015265 1620 XDMOPS, XDMODS-1 /ALL 5473 015266 1621 XDMODS /PART 5474 015267 1622 XDMODS+1 /NONE 5475 5476 5477 /LIST OF DESCRIPTOR ADDRESSES FOR "SHOW MODE" 5478 5479 015270 4354 MS27 /-1 = "OFFSET" 5480 015271 4363 MODELS, MS29 / 0 = "NORMAL" 5481 015272 4360 MS28 /+1 = "SAVE" 5482 015273 4405 MS34 /+2 = "LOAD" 5483 5484 5485 /LIST OF DESCRIPTOR ADDRESSES FOR "SHOW OUTPUT" 5486 5487 015274 4306 MS16 /-1 = "FPP (SYMBOLIC)" 5488 015275 4351 OUTLS, MS26 / 0 = "OCTAL" 5489 015276 4374 MS31 /+1 = "PDP (SYMBOLIC)" 5490 5491 5492 /'XWORD' COMMAND LIST 5493 015277 2516 XWORCL, TEXT "UNU@" 015300 2500 015301 0000 5494 *.-1 5495 /'XSTRIN' COMMAND LIST 5496 015301 0622 STRLST, TEXT "FRF@TOT@ABA@MAM@ME" 015302 0600 015303 2417 015304 2400 015305 0102 015306 0100 015307 1501 015310 1500 015311 1505 015312 0000 5497 5498 5499 /'XWORD' JUMP LIST 5500 015313 2004 XWOROP, XWOR2 /UNEQUAL 5501 015314 2004 XWOR2 5502 015315 2071 XWSFRM /FROM 5503 015316 2071 XWSFRM 5504 015317 2074 XWSTO /TO 5505 015320 2074 XWSTO 5506 015321 2066 XWSABS /ABSOLUTE 5507 015322 2066 XWSABS 5508 015323 2015 ERCH /MASKED--NO! 5509 015324 2016 XWOR7 /MEMREF 5510 015325 2016 XWOR7 5511 5512 /'XSTRIN' JUMP LIST 5513 015326 2071 STROPS, XWSFRM /FROM 5514 015327 2071 XWSFRM 5515 015330 2074 XWSTO /TO 5516 015331 2074 XWSTO 5517 015332 2066 XWSABS /ABSOLUTE 5518 015333 2066 XWSABS 5519 015334 2220 XSTR0 /MASKED 5520 015335 2220 XSTR0 5521 015336 2015 ERCH /MEMREF--NO! 5522 /LIST OF TERMINATORS, IN ORDER, FOR 'EVAL' 5523 015337 0241 TERMS, "! /1 5524 015340 0246 "& /2 5525 015341 0253 "+ /3 5526 015342 0255 "- /4 5527 015343 0257 "/ /5 5528 015344 0252 "* /6 5529 015345 0250 "( /7 5530 015346 0251 ") /10 5531 015347 0215 215 /CR: 11 5532 015350 0000 0 5533 5534 /'GWORD' & 'ACCEPT' COMMAND LISTS 5535 015351 0271 GWLST1, "9 5536 015352 0270 "8 5537 015353 0267 "7 5538 015354 0266 "6 5539 015355 0265 "5 5540 015356 0264 "4 5541 015357 0263 "3 5542 015360 0262 "2 5543 015361 0261 "1 5544 015362 0260 "0 5545 015363 0204 204 /^D 5546 015364 0213 213 /^K 5547 015365 0242 "" 5548 015366 0247 "' 5549 015367 0250 "( 5550 015370 0240 GWLST2, 240 /SPACE 5551 015371 0215 215 /CR 5552 015372 0000 0 5553 5554 /'GWORD' JUMP LISTS 5555 015373 3154 GWOPS1, GWD4 / 9 - A NUMBER 5556 015374 3154 GWD4 / 8 - A NUMBER 5557 015375 3154 GWD4 / 7 - A NUMBER 5558 015376 3154 GWD4 / 6 - A NUMBER 5559 015377 3154 GWD4 / 5 - A NUMBER 5560 015400 3154 GWD4 / 4 - A NUMBER 5561 015401 3154 GWD4 / 3 - A NUMBER 5562 015402 3154 GWD4 / 2 - A NUMBER 5563 015403 3154 GWD4 / 1 - A NUMBER 5564 015404 3154 GWD4 / 0 - A NUMBER 5565 015405 3154 GWD4 /^D - A NUMBER 5566 015406 3154 GWD4 /^K - A NUMBER 5567 015407 3154 GWD4 / " - A NUMBER 5568 015410 3154 GWD4 / ' - A NUMBER 5569 015411 3154 GWD4 / ( - A NUMBER 5570 015412 3150 GWOPS2, GWD2 /SPACE - TERMINATOR 5571 015413 3151 GWD3 / CR - " 5572 5573 /'ACCEPT' JUMP LIST 5574 015414 5213 ACOPS, ACCNUM / 9 - A DIGIT 5575 015415 5213 ACCNUM / 8 - A DIGIT 5576 015416 5213 ACCNUM / 7 - A DIGIT 5577 015417 5213 ACCNUM / 6 - A DIGIT 5578 015420 5213 ACCNUM / 5 - A DIGIT 5579 015421 5213 ACCNUM / 4 - A DIGIT 5580 015422 5213 ACCNUM / 3 - A DIGIT 5581 015423 5213 ACCNUM / 2 - A DIGIT 5582 015424 5213 ACCNUM / 1 - A DIGIT 5583 015425 5213 ACCNUM / 0 - A DIGIT 5584 015426 5256 CTRLD / ^D SWITCH 5585 015427 5257 CTRLK / ^K SWITCH 5586 015430 5243 DQUOTE / " - SINGLE ASCII 5587 015431 5246 SQUOTE / ' - PACKED ASCII 5588 015432 5240 ERCR / ( - ILLEGAL HERE 5589 015433 5234 ACCPT3-2 /SPACE - END 5590 015434 5235 ACCPT3-1 /CR - END 5591 5592 /'GARGS' JUMP LIST - TERMINATORS 5593 015435 5317 GAROPS, GAR5 /- 5594 015436 5323 GAR6 /, 5595 015437 5307 ERCS /:, SHOULDN'T SEE, WILL DO ERROR 5596 015440 5314 GAR4 /. 5597 015441 5307 ERCS /SPACE, SHOULDN'T SEE, WILL DO 'ERROR' 5598 015442 5310 GAR3 /CR 5599 5600 /'GARGS' & 'ARG' COMMAND LISTS 5601 015443 0255 GARLST, "- 5602 015444 0254 ", 5603 015445 0272 GETLST, ": 5604 015446 0256 ARGLST, ". 5605 015447 0240 240 /SPACE 5606 015450 0215 215 /CR 5607 015451 0000 0 5608 5609 /'GETNT' LISTS 5610 015452 3723 GETOPS, GETCOL 5611 015453 3730 GETPER 5612 015454 3736 GETEND 5613 015455 3737 GETEND+1 5614 5615 /'ARG' JUMP LIST 5616 015456 5723 ARGOPS, ARG2 5617 015457 5726 ARG3 5618 015460 5726 ARG3 5619 5620 /'WCHEK' LISTS 5621 015461 0250 WCKLST, "( 5622 015462 0251 ") 5623 015463 0242 "" 5624 015464 0247 "' 5625 015465 0215 215 5626 015466 0000 0 5627 5628 015467 6227 WCKOPS, WCHEK5+1 5629 015470 6226 WCHEK5 5630 015471 6233 WCHEK6+1 5631 015472 6232 WCHEK6 5632 015473 6222 WCHEK4 5633 5634 /'EVAL' JUMP LIST 1 5635 015474 5470 EVOPS1, EVNEXT /+ 5636 015475 5415 EVMIN /- 5637 015476 5537 EVLPAR /( 5638 5639 /'EVAL' COMMAND LISTS 5640 015477 0253 EVLST1, "+ 5641 015500 0255 "- 5642 015501 0250 "( 5643 015502 0000 0 5644 5645 015503 0314 EVLST2, "L 5646 015504 0302 "B 5647 015505 0323 "S 5648 015506 0303 "C 5649 015507 0306 "F 5650 015510 0322 "R 5651 015511 0324 "T 5652 015512 0304 "D 5653 015513 0000 0 5654 5655 /'EVAL' JUMP LIST 2 5656 015514 5527 EVOPS2, EVLOC /L (LOC) 5657 015515 5533 EVBLK /B (BLK) 5658 015516 5522 EVSR /S (S.R.) 5659 015517 5523 EVSR+1 /C (CONTENTS) 5660 015520 5525 EVFIL /F (FILLER) 5661 015521 5512 EVREM /R (REMAINDER) 5662 015522 5516 EVTEMP /T (TEMP) 5663 015523 5506 EVDATE /D (DATE) 5664 5665 /ACTION CHARS FOR "READLN" SUBROUTINE 5666 015524 0222 REACTL, "R-100 /CTRL-R = RE-ECHO 5667 015525 0225 "U-100 /CTRL-U = ERASE LINE 5668 015526 0000 0 5669 5670 015527 4063 REACTS, RECHO 5671 015530 4100 RERASE 5672 /ERROR ROUTINE ADDRESS LIST: 5673 5674 015531 0233 ERLIST, ERCA 5675 015532 0227 ERCB 5676 015533 0402 ERCC 5677 015534 0605 ERC14 5678 015535 0735 ERCD 5679 015536 0755 ERCE 5680 015537 1215 ERCG 5681 015540 2015 ERCH 5682 015541 2011 ERCI 5683 015542 1605 ERCK 5684 015543 1673 ERCJ 5685 015544 1611 XSET1 5686 015545 1631 ERCL 5687 015546 1654 ERCZ 5688 015547 2430 ERCO 5689 015550 1617 ERC11 5690 015551 2642 ERC04 5691 015552 2473 ERCP 5692 015553 5722 ERCQ 5693 015554 5240 ERCR 5694 015555 5222 ERC09 5695 015556 5736 ERC08 5696 015557 5267 ERC13 5697 015560 5307 ERCS 5698 015561 5412 ERCT 5699 015562 5414 ERCU 5700 015563 5541 ERCV 5701 015564 5547 ERCW 5702 015565 6047 ERCX 5703 015566 1156 ERCY 5704 015567 3731 ERCM 5705 015570 2214 ERC00 5706 015571 2215 ERC01 5707 015572 2415 ERC02 5708 015573 2416 ERC03 5709 015574 2342 ERC10 5710 015575 2110 ERCF 5711 015576 2020 GCCERR 5712 015577 2073 HDRERR 5713 015600 3103 ERC05 5714 015601 2502 ERC07 5715 015602 2254 ERC18 5716 015603 2312 ERC19 5717 015604 2351 ERC20 5718 015605 0545 ERC15 5719 015606 0564 ERC16 5720 015607 4116 ERC17 5721 015610 0000 0 5722 5723 5724 DECIMAL 5725 5726 015611 7777 SMASKB, -1 /STRING SEARCH MASK BUFFER 5727 /L(SMASKB)=66(10) 5728 COMB= SMASKB+66 /COMMAND INPUT BUFFER 5729 /L(COMB)= 140(10) 5730 PDLB= COMB+140 /PUSH-DOWN-LIST BUFFER 5731 /**** ALSO REWIND BUFFER! **** 5732 015612 0251 CCBB-PDLB /SHOW PDL SPACE 5733 5734 OCTAL 5735 5736 5737 CCBB= 16400 /CORE-CONTROL-BLOCK BUFFER AND HEADER 5738 / BUFFER FOR LOAD MODULES, 1 PAGE FIELD 1 5739 5740 DMPBUF= 16600 /DUMP OUTPUT BUFFER, 2 PAGES FIELD 1 5741 5742 IOBUF= 17200 /DEVICE I/O DUFFER, 2 PAGES FIELD 1 5743 5744 5745 $$$$ ABK1 1747 ABK2 1753 ABKLOC 1741 ABSSW 0051 ACBASE 5242 ACC1 0025 ACC2 0026 ACCEPT 5200 ACCMUL 5223 ACCNUM 5213 ACCPT1 5206 ACCPT3 5236 ACCX1 0027 ACCX2 0030 ACOPS 5414 ALTM1 0261 ALTMOD 0253 ARG 5713 ARG1 5715 ARG2 5723 ARG3 5726 ARGI 0160 ARGLST 5446 ARGOPS 5456 ASCII 2163 BACKAR 0271 BASE 4622 unreferenced BATINI 4051 BATLS 6657 BATLUP 6621 BATMOV 6615 BATPAT 6624 BATSET 6600 BCTRLC 5135 BITPNT 4471 BITS 4456 BITVAL 4522 BKLOC 3105 BKLOCI 0146 BLK 0057 BLKTST 6154 BPRT 3415 BTEST 4103 BUFST 3041 BYTEO 3517 C100 5124 CAD 0056 CALUSR 4552 CBATE 6736 CBATI 6707 CBATO 6746 CBLK 0054 CCBB 6400 CCBHDR 2100 CCHARL 4473 CCHDST 1555 CGET 2546 CGTEST 2552 CHAR 0035 CHARSW 0045 CLANAM 2726 CLOSE 0361 CNOP 2036 CNT 0036 CNTR 0037 CNTRA 0040 COMB 5713 COMIR 0015 COMOUT 0016 COMST 0174 CONDIT 6265 COPSL 4543 CRCR 0216 CRCR1 0230 CRCRC 0235 CRCRN 0234 CRLF 5044 CRLFI 0130 CRSWT 0046 CTRL 5125 CTRL0 5127 CTRL1 5143 CTRL2 5150 CTRLC 5160 CTRLCI 5162 CTRLD 5256 CTRLI 0134 CTRLK 5257 CTRLQS 5167 CTRLX 5163 CWORDL 4603 CWORL2 4664 DADD 5650 DAND 5667 DBLPGS 3063 DCAICA 4555 DDCWPT 2265 DDEVAD 2263 DDEVNO 2264 DDEVS 2430 DDIV 6040 DDIV1 6051 DDIV2 6064 DDIV3 6072 DEC2 3445 DEC2I 0141 DECI 0137 DEVAD 0100 DEVADX 2132 DEVHAN 7200 DEVNO 0101 DICAD 6163 DIGIT 4531 DIOR 5677 DIRDMP 3155 DIROUT 3163 DLOOP1 0427 DLOOP2 0445 DMODE 0053 DMPADR 2340 DMPBLK 2341 DMPBUF 6600 DMPCHR 2352 DMPHAN 6600 DMPIT 2335 DMPNUL 2321 DMPOUT 2315 DMPPTR 2353 DMUL 6000 DMUL1 6004 DMUL2 6021 DMUL3 6031 DMUL4 6014 DNAM 2266 DO1SP 2561 DO2SP 2565 DODIG 4161 DOFLD 4742 DPNEG 6141 DPNT 0010 DPRT 3436 DPSGN 0001 DQUOTE 5243 DSUB 5662 DSWIT 0052 EAE 4311 unreferenced EAELST 2664 EAETMP 4332 EBLK 2104 ECLOSE 0353 ELOCH 2105 ELOCL 2106 EMSEND 0060 ENDC 4141 ENDCI 0170 ENUM 5472 ENUMX 5501 ERC00 2214 ERC01 2215 ERC02 2415 ERC03 2416 ERC04 2642 ERC05 3103 ERC07 2502 ERC08 5736 ERC09 5222 ERC10 2342 ERC11 1617 ERC13 5267 ERC14 0605 ERC15 0545 ERC16 0564 ERC17 4116 ERC18 2254 ERC19 2312 ERC20 2351 ERCA 0233 ERCB 0227 ERCC 0402 ERCD 0735 ERCE 0755 ERCF 2110 ERCG 1215 ERCH 2015 ERCI 2011 ERCJ 1673 ERCK 1605 ERCL 1631 ERCM 3731 ERCO 2430 ERCP 2473 ERCQ 5722 ERCR 5240 ERCS 5307 ERCT 5412 ERCU 5414 ERCV 5541 ERCW 5547 ERCX 6047 ERCY 1156 ERCZ 1654 ERLIST 5531 ERMODE 0020 ERMS00 0673 ERMS01 0671 ERMS02 0706 ERMS03 0704 ERMS04 0717 ERMS05 0742 ERMS07 0764 ERMS08 1003 ERMS09 1030 ERMS10 1037 ERMS11 1051 ERMS13 1071 ERMS14 1104 ERMS15 1124 ERMS16 1135 ERMS17 1151 ERMS18 1163 ERMS19 1172 ERMS20 1201 ERMS99 1212 ERMSA 0062 ERMSB 0100 ERMSC 0116 ERMSD 0125 ERMSE 0137 ERMSF 0150 ERMSG 0227 ERMSGC 0171 ERMSH 0242 ERMSHD 0207 ERMSI 0256 ERMSJ 0267 ERMSK 0276 ERMSL 0341 ERMSM 0361 ERMSO 0404 ERMSP 0417 ERMSQ 0435 ERMSR 0456 ERMSS 0501 ERMST 0523 ERMSU 0543 ERMSV 0564 ERMSW 0604 ERMSX 0622 ERMSXO 0322 ERMSY 0636 ERMSZ 0651 ERROR 4573 ERROR1 2433 EVAL 5400 EVAL1 5407 EVAL2 5413 EVAL3 5423 EVALI 0147 EVALX 5557 EVBLK 5533 EVDATE 5506 EVFIL 5525 EVLOC 5527 EVLPAR 5537 EVLST1 5477 EVLST2 5503 EVMIN 5415 EVNEXT 5470 EVOP 5446 EVOPN 5554 EVOPS1 5474 EVOPS2 5514 EVPAR 5456 EVPAR2 5542 EVREM 5512 EVSR 5522 EVTAB 5566 EVTEMP 5516 EXCL 0312 EXCL1 0317 EXCL2 0336 EXPRI1 5735 EXPRIN 5727 F0END 6572 FBKLEN 1036 FCNT 0042 FILLER 0074 FLDOUT 6277 FMTLS 5000 FOP134 4067 FOPSL 4734 FORML 4703 FPCOND 4111 FPLEA 4611 FPOP00 4015 FPPDMP 4400 FPPINS 3757 FPPMO0 4122 FPPMOJ 4132 FPPOP0 4141 FPPOPJ 4161 FPPOUT 4600 FPRNT 1363 FPXR1S 4050 FPXR2S 4057 FSTBLK 1035 FTABLE 4764 GAR1 5276 GAR2 5302 GAR3 5310 GAR4 5314 GAR5 5317 GAR6 5323 GARGI 0157 GARGS 5272 GARLST 5443 GAROPS 5435 GCCB 2000 GCCB1 2024 GCCB2 2036 GCCBLK 2122 GCCCDF 2040 GCCERR 2020 GDEV1 1153 GDEV2 1154 GDEV3 1155 GDEVIC 1140 GET 3000 GET0 3010 GET1 3013 GET4 3200 GET678 6251 GETCOL 3723 GETCW 3360 GETEND 3736 GETI 0161 GETIO 3027 GETIO1 3044 GETIO2 3061 GETL1 3300 GETL2 3302 GETL3 3345 GETL4 3351 GETLST 5445 GETN 5362 GETNI 0163 GETNT 3741 GETNTC 3746 GETOP 6243 GETOPS 5452 GETORG 3357 GETPER 3730 GETPNT 0014 GETS1 3214 GETS2 3261 GETSCN 3717 GETSWX 2133 GETX 3026 GHDR 2042 GHDR1 2074 GNAME 3676 GPAIR 3751 GPUT 5326 GPUT1 5335 GWD1 3143 GWD2 3150 GWD3 3151 GWD4 3154 GWLST1 5351 GWLST2 5370 GWOPS1 5373 GWOPS2 5412 GWORD 3122 GWORDI 0156 HDRERR 2073 IFSKPO 5065 INC 3557 INCI 0166 INDIR 4631 INIDAT 6322 INIMSG 6306 INISCO 6315 INSLST 2600 IOBUF 7200 IOPNT 4544 IOPRN1 4525 IOPRN2 4542 IOPRNT 4523 IOTS 4257 IOTTAB 2732 LASTOP 0002 LBLK 0065 LCHEK 2147 LFLF 0311 LIMITI 0165 LIMITS 2752 LISTPT 0725 LLIS1 0664 LLIS2 0702 LLIS3 0712 LLIS4 0717 LLIS5 0722 LLIST 0661 LLOCH 0066 LLOCL 0067 LOCH 0060 LOCL 0061 LONG 4640 LOUTSW 0726 LPAR 5616 LPARI 5564 LSETL 2127 LSETUP 2107 M1 0112 M10 0111 M100 0107 M20 0110 M200 0106 M215 0105 M240 0104 M400 0103 MAIN1 0204 MAIN2 0212 unreferenced MASK 0075 MASKBS 0176 MCHARO 5063 MDCOM 6112 MINUS 0345 MODADS 5035 MODDLS 5046 MODELS 5271 MODIF 0050 MODIFL 5014 MODIFO 5025 MODLST 5240 MODOPS 5251 MODSW 0044 MODTMP 2477 MONTHS 2521 MS01 4200 MS02 4204 MS03 4210 MS04 4216 MS05 4223 MS06 4230 MS07 4203 MS08 4235 MS09 4242 MS10 4247 MS11 4253 MS12 4256 MS13 4264 MS14 4267 MS15 4277 MS16 4306 MS17 4310 MS18 4313 MS19 4317 MS20 4324 MS21 4332 MS22 4336 MS23 4341 MS24 4344 MS25 4345 MS26 4351 MS27 4354 MS28 4360 MS29 4363 MS30 4367 MS31 4374 MS32 4376 MS33 4403 MS34 4405 MS35 4410 MS36 4412 MS37 4415 MS38 4422 MS39 4426 MS40 4436 MS41 4443 MS42 4452 MS43 4470 MSBAD 2137 MSBASE 3743 MSDDEV 2450 MSDEV 2457 MSERR 2500 MSINDI 3746 MSJNX 3751 MSMOD 2134 MSVER 2512 MULNEG 6126 MULT3 6257 N15 0114 N177 0117 N20 0115 N200 0120 N377 0121 N7 0113 N7000 0122 N7400 0103 N77 0116 NAM1 0025 NAM2 0026 NAM3 0027 NAM4 0030 NCNT 0041 NUMB 3500 NUMDGT 3501 NUMO1 3455 NUMO2 3466 NUMOPS 5067 NUMOUT 3453 NXTIOT 3542 NXTOCT 1766 OCT3 3407 OCTI 0140 OCTSET 5261 ODGET 3073 ODGETI 0162 ODTOL 4212 ODTOPT 4204 ODTOUT 4200 OFFSET 0073 OMODES 0255 OMODPT 0270 ONECHR 3631 OP1LST 2620 OP2LST 2642 OPEND 4446 OPER1 0031 OPER2 0032 OPR1A 4333 OPR2A 4405 OPR2B 4424 OPR2T 4515 OPRMES 2730 OPRS 4262 OPRS1 4275 OPRT 3400 OPRTST 4547 OPRTYP 4467 OSRETN 3535 OSSET 3527 OSTYPE 3511 OSUNPK 3540 OTABLE 4526 OUTLS 5275 OUTPNT 0043 OUTSW 0765 OVLFLG 0000 PACK 2704 PACK1 2716 PACOUT 3621 PATCH 0001 PDATE 5000 PDATEI 0142 PDLB 6127 PDLPT 0007 PDPDMP 4214 PDPOUT 4221 PLUS 0344 PNAME 2731 PNAME1 2744 POP 4551 POPX 5606 PUSH 4550 PUSHX 5600 QUOTEC 5265 R2 4053 RBLK 3057 RBLK1 0077 RDERX 2130 REACTL 5524 REACTS 5527 READ 4000 READLN 4523 RECHO 4063 RECHO1 4070 RECRLF 0171 REFS1 4244 REFS2 4255 REKEY 4011 RENEXT 4007 RERASE 4100 RERROR 2213 RESPC 4024 RESTAR 0172 RETERM 4020 RKEY 4112 RKEY0 4126 RKEY1 4137 RLAST 4054 RM214 4052 RTL6 3762 RTL6I 0143 RTR6 3767 RTR6I 0144 RUBO 4031 RUBO1 4035 RUBO2 4047 RUBOE 4057 RUBOF 4061 SBLK 0070 SCANER 5744 SCANX1 0012 SCANX2 0013 SCOPLS 6630 SEGCNT 3361 SEGNI 2121 SEMIC 0310 SETJMP 5171 SETLST 5111 SGNDP 3423 SHOWL 5074 SHOWOP 5133 SHUT 0047 SLA1 0244 SLASH 0237 SLO1 0245 SLO2 0246 SLOCH 0071 SLOCL 0072 SMASKB 5611 SMASKL 0076 SMSKSW 2360 SOCTI 0145 SORT1 3652 SORT2 3673 SORTEM 3675 SORTI 0167 SORTJ 3643 SPACE1 4532 SPACE2 4533 SPCOP0 4660 unreferenced SPCOP1 4717 SPCOP2 4744 SPCOP3 4731 SPCOP4 4732 SPCOP5 4747 SPCOP6 4757 SPCOP7 4756 SPECIA 4654 SPNT 0011 SPNUSE 4677 SPO123 4701 SPOP00 4665 unreferenced SPOP04 4670 SPOP05 4675 SPOP10 4707 SPOP11 4710 SPOP1J 4737 SQUOTE 5246 SSET 2047 SSKIP 3502 SSKIPI 0164 START 6400 unreferenced STCDF 6211 STDEV 6426 STERR 6551 STJMP 5757 STRLST 5301 STRMSK 2357 STROPS 5326 STSWEX 6532 STSWIT 6471 STSWO 6507 STSWS 6520 STTLS 6536 SYMEND 4256 SYMLIM 4433 SYMNXT 4504 SYMPNT 4514 SYMS 4226 SYMTYI 6276 SYMTYP 4475 TADICA 4554 TADIDP 4553 TCHAR 5077 TEMP 0021 TEMP1 0022 TEMP2 0023 TEMP3 0024 TEMPL 6306 TEMPST 0175 TEMPV1 0033 TEMPV2 0034 TERMS 5337 TERMT 5624 TERMT1 5633 TERMTE 5646 TERMTI 5565 THISOP 0003 TICAD 6170 TIDPNT 2156 TTAGN 3607 TWOCI 0127 TWOCS 1761 TWOT 0135 TYPALT 5101 TYPC 5076 TYPCR 5104 TYPCTL 5120 TYPE 5061 TYPE1 2400 TYPE2 2412 TYPE3 2431 TYPEA 5033 TYPEAI 4056 TYPEB 2405 TYPEC 5054 TYPECI 0126 TYPEI 0136 TYPEL 4517 TYPEM 4523 TYPEOP 4575 TYPES 3600 TYPEX 5042 TYPSI 0125 TYPSTI 0124 TYPSTR 3605 TYPSW 0017 TYPTAB 5106 UBLK 0062 UCDF0 0525 ULOCH 0063 ULOCL 0064 UPARR 0274 UPARR1 0306 UPCBLK 3362 USEUSR 0520 USRAD 0102 USRCDF 0541 USRIN 0536 USROUT 0544 USRSAV 0544 VERONE 0007 VERSIO 0007 VERTEN 0000 WBLK 3042 WCHEK 6200 WCHEK1 6203 WCHEK2 6211 WCHEK3 6215 WCHEK4 6222 WCHEK5 6226 WCHEK6 6232 WCHONE 6235 WCKLST 5461 WCKOPS 5467 WERROR 2414 WOPSL 4634 WOPSLL 4674 XASC1 2537 XBLK 2364 XCLNAM 2310 XCLOS1 2272 XCLOSE 1004 XCLSIZ 2311 XCTLZ 2277 XDDEV 1134 XDDEV1 2200 XDDEV2 2441 XDDNAM 2454 XDEV 1121 XDEVM 2467 XDLCOM 0647 XDMLST 5261 XDMODE 1612 XDMODS 1621 XDMOPS 5265 XDNAM 2464 XDUM0 0610 XDUM1 0611 XDUM2 0617 XDUMP 0603 XELST 5212 XEMOD1 1655 XEMODE 1647 XEOPS 5217 XERR1 0465 XERR2 0475 XERR3 0505 XERR4 0515 XERROR 0454 XEXIT 5160 XFCHR 0740 XFICHN 1026 XFIERR 1006 XFILE 1024 XFILEN 1021 XFILL 1701 XFIOUT 1016 XFNUM 0737 XFORM 0754 XFSYM 0736 XGET 2500 XGFORM 0727 XIF 1713 XIFCR 1731 XIFSKP 1723 XLIS1 0633 XLIS2 0645 XLIST0 0632 XLOCH 2365 XLOCL 2366 XLOW 1663 XMASK 1636 XMOD0 2436 XMOD1 2441 XMOD2 2451 XMODCR 2465 XMODDN 2474 XMODE 1666 XMODEF 2431 XMODIF 2417 XMODS 1675 XNUM0 2506 XNUM1 2512 XNUM2 2514 XNUM3 2524 XOBLK 2252 XOCEX 2261 XOFFS 1642 XOLST 5223 XOOPS 5232 XOPEN 1000 XOPEN1 2222 XOPEN2 2237 XOPS1 2634 XOPS2 2643 XOPS3 2655 XOPS4 2673 XOPS5 2675 XOSIZ 2253 XOUTS 1624 XOUTS1 1633 XPAC0 2620 XPAC1 2621 XPAC2 2627 XREWIN 2200 XROUT 4713 XRPLUS 4643 XRSET 2343 XS240O 5352 XSCAN 0600 XSET 1602 XSET1 1611 XSETN 1600 XSHABS 1250 XSHBKS 1257 XSHBLK 1200 XSHCC1 1414 XSHCC2 1416 XSHCC4 1447 XSHCCB 1400 XSHCR 1204 XSHDDE 1360 XSHDEV 1347 XSHER1 1541 XSHERR 1532 XSHFIL 1232 XSHFM 1303 XSHFMT 1277 XSHHD1 1501 XSHHD2 1504 XSHHDR 1457 XSHLOW 1272 XSHMOD 1307 XSHMSK 1221 XSHODL 1236 XSHOFF 1225 XSHOUT 1314 XSHOW 1210 XSHREL 1243 XSHSM1 1332 XSHSM2 1342 XSHSMS 1321 XSHUPP 1265 XSHVER 1216 XSMAS1 2605 XSMASK 2600 XSTR0 2220 XSTR1 2232 XSTR10 2333 XSTR11 2336 XSTR2 2240 XSTR3 2246 XSTR4 2260 XSTR5 2277 XSTR6 2302 XSTR7 2306 XSTR8 2321 XSTR9 2324 XSTRIN 2216 XSTYPE 1203 XTEMP 1705 XUPP 1660 XVAL 0400 XWBLK 2410 XWOR1 2006 XWOR2 2004 XWOR3 2021 XWOR4 2027 XWOR5 2045 XWOR7 2016 XWORC 2033 XWORCL 5277 XWORD 2000 XWOROP 5313 XWRARG 2400 XWRITE 2403 XWSABS 2066 XWSFRM 2071 XWSRET 2100 XWSTO 2074 XXS20 2617 YRBASE 5032 YRTEST 5031