File: DPF50.LS of Disk: V50/Source/Source-Listing-PAL-2
(Source file text)
/ DATA PROCESSING FOCAL-20 V50.1 PAL8-V50X 09-JUL-88 PAGE 1 / DATA PROCESSING FOCAL-20 V50.1 / / / / / / / / / /COPYRIGHT (C) 1979,1980,2020 BY W. VAN DER MARK / / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DATAPLAN GMBH. /DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR /IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DATAPLAN'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DATAPLAN. / /DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY /OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DATAPLAN. / / / / / / / / / / / / DATA PROCESSING FOCAL-20 V50.1 PAL8-V50X 09-JUL-88 PAGE 2 / DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 3 0001 FIELD 1 /MISCELLANEOUS ITEMS 0000 *0 010000 0001 ECHO, 1 010001 0000 TABC, 0 /TABCOUNTER 010002 0240 SPC, 240 /CONSTANT 010003 0000 ATSW, 0 010004 0000 0 010005 0000 0 /FOR OD 010006 0000 0 0020 T=20 /TEXT FIELD NO. 0010 P=10 /PROGRAM FIELD NO. 0000 L=00 /LIBRARY FIELD NO. 0010 V=10 /VARIABLE FIELD NO. 010007 6600 FPNT /ADRESS OF FLOATING POINT(LOC*7) /AUTO INDEX REGISTERS 010010 0304 AXIN, LINE4 /STORAGE INDEX(LOC*10) 010011 0000 XRT, 0 /EXTRA XR 010012 0000 XRT2, 0 /EXTRA XR 010013 0256 PER, 256 /LET'S HOPE IT IS NOT INDIRECTLY ADRESSED! 010014 0000 FLTXR, 0 /XR FOR FLOATING POINT 010015 0000 FLTXR2, 0 /EXTRA FOR F.P. 010016 7522 MPER, -256 /CONSTANT 0017 TEXTP=. /TEXT POINTERS(LOC*17) 010017 0304 AXOUT, LINE4 /OUTPUT INDEX 010020 7777 XCT, 7777 /UNPACK SWITCH;THESE 4 ARE PUSHED 010021 0000 GTEM, 0 /UNPACK STORAGE 010022 0200 PC, PC0 /PROGRAM COUNTER 010023 0000 THISLN, 0 /LINE POINTER FROM 'FINDLN' 010024 0000 THISOP, 0 /CURRENT 'EVAL' OPERATION 010025 0000 LASTLN, 0 /BACK POINTER FROM 'FINDLN' 010026 0001 DEBGSW, 1 /DEBUG SWITCH;NON ZERO FOR LITERAL 010027 0000 PACKST, 0 /RUBOUT PROTECTION 010030 0000 PT1, 0 /VARIABLE POINTER 010031 3471 LASTV, STVAR /ADRESS OF LAST VARIABLE 010032 0000 T1, 0 /TEMP. REGISTER - MAIN 010033 0000 T2, 0 /TEMP FOR NEW INSTR. 010034 0000 T3, 0 /TEMP. REGISTER FOR OUTPUT 010035 0000 INSUB, 0 /0=GETC;#0=READC 010036 0000 SUBS, 0 /VARIABLE SUBSCRIPT 010037 0177 P177, 177 /STEP MASK;DON'T MOVE;AND P177=37!! DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 4 0040 *40 /FLOATING POINT 010040 0000 EX1, 0 /OPERAND STORAGE 010041 0000 AC1H, 0 010042 0000 AC1L, 0 010043 0000 OVER1, 0 0044 FLAC=. /FLOATING ACCUMULATOR 010044 0000 EXP, 0 010045 0000 HORD, 0 010046 0000 LORD, 0 010047 0000 OVER2, 0 010050 0000 SIGNF, 0 /FLOATING SIGN 010051 7000 MINSKI, ACMINS /NEGATE FLAC SUBROUTINE 010052 0001 FISW, 1 /OUTPUT FORMAT 1=FIXED,0=FLOAT 010053 7124 INTEGE, FIX /FIX FLAC 0054 *54 /VARIABLES - INITIALIZED FOR THE DIALOGUE 0054 CELSO=. /ECALL PUSHES THESE FOUR 010054 6213 POPFP, CIF CDF P /+ECALL=15 BIT POPJ 010055 0000 EFOP, 0 /FUNCTION CODE 010056 0000 LASTOP, 0 /LAST OPERATION FOR EVAL 010057 0000 SORTCN, 0 /NUMBER IN TABLE FROM SORTC 010060 0304 BUFR, LINE4 /NEXT LOC. IN BUFFER=LAST LOC. IN TEXT 010061 4300 ADD, 4300 /CHAR. BUF. IN 010062 0000 XCTIN, 0000 /PACK SWITCH 010063 0334 SPLAT, "\ /OR 210=BS FOR SCOPE 010064 3027 INDEV, LOWIN /POINTER TO IN. SUB. 010065 0000 CNTR, 0 /DELETE AND FP 0066 LIST6=. /INPUT LIST FOR "SFOUND" 010066 0213 CVT, 213 /V.T. (^K) 010067 0207 207 /BELL 0070 LIST7=. 010070 0375 375 /ALT MODE 010071 0233 233 /ESCAPE 010072 0225 225 /^U 010073 0337 P337, 337 /LEFT ARROW 010074 0212 CLF, 212 /L.F. 0075 LIST3=. /EXCRETION LIST 010075 0215 CCR, 215 /LIST BRANCHER 010076 7402 DMPSW, HLT /(SEARCH CHAR)-VARIABLE /=0000 FOR TRACE ON 010077 7600 P7600, 7600 /ENDS LISTS 010100 0077 P77, 77 /DON'T MOVE;AND P77=100!!! DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 5 /CONSTANTS 010101 0013 P13, 13 /USEFUL CONSTANT 010102 0200 C200, 200 010103 7701 M77, -77 /EXTEND CODE TEST 010104 0017 P17, 17 /BCD MASK 010105 0277 P277, 277 /"?" 010106 7776 M2, -2 /CONSTANT 4507 ERROR2=JMS I . /FIELD 1 ERROR ADRESS 010107 6001 ERROR /KEEP IT AT LOC. 107;SAME ADRESS IN USR;VOL!! 010110 0260 C260, 260 /ASCII FOR ZERO 010111 7773 M5, -5 /PAREN TEST 010112 7767 M11, -11 /PAREN TEST 010113 0040 P40, 40 010114 0010 FSIZE, 10 010115 0004 DECP, 4 010116 0012 DIGITS, 12 010117 7774 MFLT, -WORDS /=-4 FOR 4-WORD 010120 0001 NAGSW, 0001 /4000=ONE;1=ALL;0=GROUP;ALSO PUSHED 010121 0215 CHAR, 215 /THE MOST IMPORTANT REGISTER 010122 0000 LINENO, 0000 /LINE NUMBER READ BY GETLN 010123 0006 GINC, WORDS+2 /=6 FOR 4-WORD-CONSTANT /POINTERS ETC. 010124 0011 PAXPNT, PDLXR /POINTER FOR RESET 010125 7173 FLARGP, FLARG /DATA ADRESS 010126 7167 CFRSX, FLTZER /POINTER TO ZERO DATA & 010127 6517 DOUBLE, MULT2 /MULTIPLY FLAC BY 2 010130 6017 FOUTPU, FLOUTP /FLOATING OUTPUT 010131 6200 FINPUT, FLINTP /FLOATING INPUT 010132 0210 CFRS, LINE0 /ADRESS OF DUMMY LINE 010133 3471 END, STVAR /FIRST LOCATION 010134 1600 DECALL, ECALL /RECURSIVE EVAL 010135 2061 DPART, PARTES /PAREN COMPARE ETC. 010136 0227 ENDT, LINE1 0004 WORDS=4 /PDL INSTRUCTIONS 4537 POPA=JMS I . /RESTORE AC 010137 0416 XPOPA 4540 PUSHJ=JMS I . /RECURSIVE SUB. CALL 010140 6361 XPUSHJ 5541 POPJ=JMP I . /SUB. RETURN 010141 0446 XPOPJ 4542 PUSHA=JMS I . /SAVE AC 010142 0424 XPUSHA 4543 PUSHF=JMS I . /SAVE GROUP OF DATA 010143 0432 XPUSHF 4544 POPF=JMS I . /RESTORE GROUP DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 5-1 010144 0440 XPOPF DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 6 /NEW INSTRUCTIONS: 4545 STOCHR=JMS I . 010145 1546 CHRSTO /STORE A CHARACTER 4546 TSTCHR=JMS I . 010146 0557 CHRTST /SKIPS IF CHAR=ARG 4547 GETC=JMS I . /UNPACK A CHARACTER 010147 2277 UTRA 4550 PACKC=JMS I . /PACK A CHARACTER 010150 3073 PACBUF 4551 SORTJ=JMS I . /SORT AND BRANCH ON AC OR CHAR 010151 1130 SORTB 4552 SORTC=JMS I . /SORT CHAR 010152 0715 XSORTC 4553 PRINTC=JMS I . /PRINT AC OR CHAR 010153 3000 OUT 4554 READC=JMS I . /READ DATA INTO CHAR AND PRINT IT 010154 0526 IN 4555 PRNTLN=JMS I . /PRINT C(LINENO) 010155 2430 XPRNT 4556 GETLN=JMS I . /UNPACK AND FORM A LINENUMBER 010156 0243 CNUM, XGETLN 4557 FINDLN=JMS I . /SEARCH FOR A GIVEN LINE 010157 2245 XFIND 4560 SPNOR=JMS I . /IGNORE SPACES AND LEADING ZEROS 010160 2403 XSPNOR 4561 TESTN=JMS I . /PERIOD;OTHER;NUMBER 010161 2411 XTESTN 4562 TSTLPR=JMS I . /SKIP IF 5.L.SORTCN.L.E.11(I.E. AN L-PAR) 010162 2047 LPRTST 4563 TSTGRP=JMS I . /SKIP IF G(AC)=G(LINENO) 010163 0743 GRPTST 4564 TESTC=JMS I . /TERM;NUMBER;FUNCTION;LETTER- AND IGNORE SPACES 010164 0676 XTESTC 4565 DELETE=JMS I . /REMOVE OLD TEXT LINE 010165 2075 XDELETE 4566 DRONEP=JMS I . 010166 3412 XDRONE /VARIOUS NEW POINTERS ETC. 010167 6342 DPC, PCD /PC 010170 6347 DTHIS, THISD /THISLN 010171 6354 DPT1, PT1D /PT1 010172 6335 DXRT, XRTD /(TAD I XRT) 010173 3143 DAXIN, AXIND /(DCA I AXIN) 010174 3425 SECRTV, STSECR /FOR SECRET VARIABLES 010175 0000 EOL, 0 /END OF LINE SWITCH 010176 7577 PDLSTR, PDLEND-1 /START OF PDL DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 7 /FOCAL'S COMMAND/INPUT DRIVER 0177 *177 010177 0200 START, NEW /PROGRAM START FROM SELF (INDIRECT)(OR TO FORLEX) 010200 1102 NEW, TAD C200 010201 3022 DCA PC /FOR COMMAND MODE 010202 7001 IAC /USE ONE IN THE AC TO 010203 3076 DCA DMPSW /INIT UNPACK AND TRACE SWITCH 010204 3026 DCA DEBGSW /ENABLE TRACE FOR INPUT OF (?) 010205 1176 TAD PDLSTR /SET HIGH LIMIT FOR PDL 010206 6221 CDF T 010207 3524 DCA I PAXPNT 010210 6211 CDF P 010211 3000 DCA ECHO /PRINT ONLY IF ECHO 010212 2175 ISZ EOL /CHECK IF CR TERMINATED 010213 5323 JMP IBAR /NO;($) TREAT LIKE ^U,_ 010214 1156 IBAR1, TAD CNUM /ANNOUNCE PRESENCE WITH # 010215 4553 PRINTC 010216 2000 ISZ ECHO 010217 1060 TAD BUFR /COMMAND INPUT BUFFER 010220 3010 DCA AXIN /FOR UNPACKING 010221 3062 DCA XCTIN 010222 1060 TAD BUFR /RUBOUT PROTECTION 010223 3027 DCA PACKST 010224 4554 IGNOR, READC /READ COMMAND STRING 010225 4551 SORTJ 010226 0067 LIST7-1 010227 1466 INLIST-LIST7 010230 4550 PACKC /SAVE STRING CHARACTER 010231 5224 JMP IGNOR 010232 4540 INPUTX, PUSHJ /PROCESS IMMEDIATE COMMAND 010233 0613 PROC 010234 4567 JMS I DPC /TAD I PC 010235 7450 SNA /END OF PROGRM? 010236 5577 JMP I START /YES 010237 3022 DCA PC /SAVE NEW LINE NO 010240 1022 TAD PC /START NEW LINE 010241 7001 IAC 010242 5336 JMP GONE /PROCESS OTHER COMMANDS /TEXT LINE BUFFER FORMAT /#1 : POINTER OR ZERO IN LAST /#2 : LINENO /#3 - #N+1 : TEXT /#N : C.R. DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 8 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 9 /LINE NUMBER FORMATION;RANGE OF ACCEPTIBLE LINE NUMBERS /=1.01 TO 31.99 010243 0000 XGETLN, 0 /COMPUTED LINE #'S 010244 4560 SPNOR /IGNORE SPACES 010245 4546 TSTCHR /'A' IS SPECIAL 010246 7477 -"A 010247 7410 SKP 010250 5275 JMP TESTA 010251 4540 PUSHJ /EVALUATE NUMBER OR EXPRESSION 010252 1606 EVAL 010253 4453 JMS I INTEGER /GET GROUP PART 010254 1307 TAD P7740 /CHECK IF TOO BIG 010255 7700 SMA CLA 010256 4507 GZERR, ERROR2 /BAD GROUP # 010257 0206 206 /IG 010260 1046 TAD LORD /GET GROUP AGAIN 010261 7002 BSW 010262 7104 CLL RAL 010263 3122 DCA LINENO /SAVE IT 010264 4451 JMS I MINSKI 010265 7000 NOP /CDF V AFTER FENT 010266 4407 FENT 010267 1525 FADD I FLARGP /GET FRACTION 010270 4314 FMUL FL100 010271 1317 FADD FLP5 /ROUND UP 010272 0000 FEXT 010273 4453 JMS I INTEGER 010274 1122 TAD LINENO /ADD GROUP 010275 3122 TESTA, DCA LINENO 010276 7300 CLA CLL 010277 1122 TAD LINENO /CHECK FOR ERROR 010300 0077 AND P7600 010301 7640 SZA CLA 010302 7020 CML 010303 1122 TAD LINENO 010304 0037 AND P177 010305 7460 SNL SZA 010306 5256 JMP GZERR /ILLEGAL GROUP ZERO USAGE 010307 7740 P7740, SMA SZA CLA /SMA FOR 7740 010310 1320 TAD P2000 /SET NAGSW;GROUP=0,LINE=4000,ALL=1 010311 7024 CML RAL 010312 3120 DCA NAGSW 010313 5643 JMP I XGETLN 010314 0007 FL100, 0007 010315 3100 3100 010316 0000 0000 010317 0000 FLP5, 0000 010320 2000 P2000, 2000 010321 0000 0000 010322 0000 0000 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 10 010323 1075 IBAR, TAD CCR /ALTESC AND ^U,_ COME HERE 010324 4553 PRINTC 010325 5214 JMP IBAR1 /COMMAND/INPUT PROCESSOR 010326 1075 ESRETN, TAD CCR 010327 4545 STOCHR /ESCAPE CONVERTED TO CR 010330 7240 CLA CMA 010331 7040 IRETN, CMA 010332 3175 DCA EOL /EOL REMEMBERS WHICH 010333 4550 PACKC /START TO PACK C.R. 010334 4550 PACKC /FINISH C.R. 010335 1060 TAD BUFR /INITIALIZE FOR UNPACKING 010336 3017 GONE, DCA AXOUT /SETUP CURRENT LINE 010337 3020 DCA XCT 010340 4547 GETC /READ FIRST CHARACTER 010341 1307 TAD P7740 010342 1176 TAD PDLSTR /SET LOW LIMIT FOR PDL 010343 6221 CDF T 010344 3524 DCA I PAXPNT 010345 6211 CDF P 010346 4560 SPNOR /IGNOR LEADING BLANKC 010347 4561 TESTN /DOES THE LINE BEGIN WITH 1-9? 010350 5256 JMP GZERR /PERIOD =ILLEGAL GROUP ZERO USAGE 010351 5232 JMP INPUTX /NO 010352 2026 ISZ DEBGSW /YES, DISABLE TRACE FOR REPACKING 010353 4556 GETLN /READ THIS LINE NUMBER 010354 7330 CLA CLL CML RAR /TEST FOR SINGLE LINE 010355 1120 TAD NAGSW 010356 7640 SZA CLA 010357 4507 ERROR2 /ILLEGAL LINE NUMBER ON INPUT 010360 0213 213 /IL 010361 1060 TAD BUFR /SET POINTERS 010362 3010 DCA AXIN 010363 3062 DCA XCTIN 010364 1122 TAD LINENO /SAVE LINE # 010365 4573 JMS I DAXIN /DCA I AXIN 010366 4560 SPNOR /IGNORE SPACES AFTER LINE NUMBER 010367 7410 SKP DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 11 010370 4547 GETC /READ 1ST AFTER LINENO TERMINATOR 010371 4550 SRETN, PACKC /SAVE TEXT AND RESTORE DATA FIELD 010372 4546 TSTCHR /TEST FOR END OF INPUT STRING 010373 7563 -215 /-C.R. 010374 5370 JMP .-4 010375 4565 DELETE /REMOVE OLD LINE, IF ANY 010376 6221 CDF T /TERMINATE THE BUFFER LINE:OLD "ENDLN" 010377 1425 TAD I LASTLN 010400 3460 DCA I BUFR 010401 1060 TAD BUFR /POINT TO NEW NEXT LINE 010402 3425 DCA I LASTLN 010403 1061 TAD ADD /CHECK FOR EXTRA INFO. 010404 7440 SZA 010405 3410 DCA I AXIN 010406 1010 TAD AXIN /COMPUTE NEW END OF BUFFER 010407 7001 IAC 010410 3060 DCA BUFR 010411 6201 GOKILL, CDF L 010412 3615 DCA I LIBN /WE'VE CHANGED SOMETHING 010413 6211 CDF P 010414 5577 START1, JMP I START /POINTERS MUST BE REINITIALIZED 010415 0055 LIBN, LIBFIL DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 12 /PUSHDOWN LIST SATELLITES 7301 FLD1=CLA CLL IAC 010416 0000 XPOPA, 0 010417 7421 MQL 010420 7301 FLD1 010421 6222 CIF T 010422 4623 JMS I .+1 010423 0021 ZPOPA 010424 0000 XPUSHA, 0 010425 7421 MQL 010426 7301 FLD1 010427 6222 CIF T 010430 4631 JMS I .+1 010431 0025 ZPUSHA 010432 0000 XPUSHF, 0 010433 7421 MQL 010434 7301 FLD1 010435 6222 CIF T 010436 4637 JMS I .+1 010437 0071 ZPUSHF 010440 0000 XPOPF, 0 010441 7421 MQL 010442 7301 FLD1 010443 6222 CIF T 010444 4645 JMS I .+1 010445 0112 ZPOPF 010446 6223 XPOPJ, CIF CDF T 010447 5650 JMP I .+1 010450 0150 ZPOPJ DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 13 /RECURSIVE OPERATE, EXECUTE, OR CALL 010451 4556 DO, GETLN /EXECUTE ONE LUNE, A GROUP, OR ALL 010452 4543 PUSHF /SAVE REST OF THIS LINE 010453 0017 TEXTP /AXOUT,XCT,GTEM,PC 010454 4543 DGRP, PUSHF /SAVE NAGSW; CHAR; AND LINENO 010455 0120 NAGSW 010456 1120 TAD NAGSW /CHECK DATA FROM GETLN 010457 7710 SPA CLA /SKIP IF GROUP OR ALL 010460 5313 JMP DOONE /DO ONE LINE 010461 4557 FINDLN /INIT FOR GROUP AND SET THISLN 010462 0233 INDOL, 233 /WILL BE CHANGED TO '$' (PERHAPS) 010463 1023 TAD THISLN /TEST FOR GOOD GROUP NUMBER 010464 3011 DCA XRT 010465 4572 JMS I DXRT /TAD I XRT 010466 4563 TSTGRP 010467 4507 ERROR2 /NO SUCH GROUP NUMBER 010470 0066 66 /DG 010471 4540 DGRP1, PUSHJ /EXECUTE OBJECT LINE AND SET PC 010472 0610 PROCESS-2 010473 4544 POPF /RESTORE THE DATA 010474 0120 NAGSW 010475 4567 JMS I DPC /CHECK FOR END OF TEXT 010476 7450 SNA 010477 5322 JMP DCONT /ALL DONE 010500 7001 IAC 010501 3030 DCA PT1 /SAVE POINTER TO LINENO 010502 1120 TAD NAGSW /CHECK FOR GROUP 010503 7740 SMA SZA CLA 010504 5310 JMP .+4 /DO ALL 010505 4571 JMS I DPT1 /TEST GROUP 010506 4563 TSTGRP /AGAINST LINENO 010507 5322 JMP DCONT /NOT IN GROUP 010510 4571 JMS I DPT1 /READ NEXT LINE NO 010511 3122 DCA LINENO 010512 5254 JMP DGRP /CONTINUE THE SUBROUTINE 010513 4557 DOONE, FINDLN /FIND THE LINE 010514 4507 ERROR2 /NO SUCH LINE NUMBER 010515 0073 73 /DL 010516 4540 PUSHJ /EXECUTE IT 010517 0610 PROCESS-2 /AND SET PC 010520 4544 POPF /RESTORE CHAR 010521 0120 NAGSW 010522 4544 DCONT, POPF /RESTORE TEXT POINTERS 010523 0017 TEXTP 010524 5725 JMP I .+1 /CONTINUE PROCESSING THIS LINE 010525 0613 PROC DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 14 010526 0000 IN, 0 /READ IN A CHARACTER SUBROUTINE."READC" 010527 3353 DCA INCOMP /IF AC # 0 THEN KEEP CHAR TO COMPARE 010530 6203 CIF CDF L 010531 4464 JMS I INDEV 010532 4545 INCONV, STOCHR 010533 1121 TAD CHAR 010534 7041 CIA /NOW COMPARE 010535 1353 TAD INCOMP 010536 7650 SNA CLA 010537 5541 POPJ /FOUND IT;EXIT FROM 'FIND' 010540 3000 DCA ECHO 010541 4551 SORTJ 010542 2200 ECHOLST-1 /LF. OR RUB.:IGNORE 010543 0370 ECHOGO-ECHOLST /ALT.:CHANGE,ESC.:PRINT 010544 4553 PRINTC 010545 2000 INEX, ISZ ECHO 010546 5726 JMP I IN 010547 4453 FIND, JMS I INTEGE /GET VALUE OF SEARCH CHAR. 010550 4554 READC /PASS IT ON TO 'IN' 010551 1353 TAD INCOMP 010552 5350 JMP .-2 /LOOP;'IN' WILL GIVE 'POPJ' 010553 0000 INCOMP, 0 010554 2000 INALT, ISZ ECHO /FOR 'FIND' POPJ 010555 1262 TAD INDOL 010556 5332 JMP INCONV /CONVERT TO ESC 010557 0000 CHRTST, 0 /TEST CHAR SUB; "TSTCHR" 010560 1757 TAD I CHRTST /GET ARG 010561 2357 ISZ CHRTST /BUMP PAST ARG 010562 1121 TAD CHAR 010563 7650 SNA CLA 010564 2357 ISZ CHRTST /SKIP IF EQUAL 010565 5757 JMP I CHRTST 010566 4560 TERMER, SPNOR /GOES TO TERMINATOR 010567 1121 TAD CHAR /SAVE TEMP. 010570 7421 MQL /FASTER THAN PUSHA 010571 4552 SORTC 010572 1404 GLIST-1 010573 5541 POPJ /FIRST CHAR IN MQ 010574 4547 GETC 010575 5371 JMP TERMER+3 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 15 010576 1045 FLIST2, FLIMIT /,=STANDARD 010577 1110 FINFIN /;=SHORT 010600 1043 FLIMIT-2 /CR=DUMB 010601 1035 FLIST1, FINCR /,=STANDARD FORMAT 010602 0612 PROCESS /;=SET;PLUS,.. 010603 0617 PC1 /C.R.=SET COMMAND /PRIMARY CONTROL AND TRANSFER 010604 4556 GOTO, GETLN /READ THE LINE NUMBER REQUESTE 010605 4557 FINDLN /LOCATE IT AND RESET TEXTP 010606 4507 ERROR2 /NOT THERE 010607 0156 156 /GO 010610 1023 TAD THISLN /SET PC;DON'T MOVE ;REF. "DO" 010611 3022 DCA PC 010612 4547 PROCESS,GETC /TEST FOR END OF LINE 010613 4566 PROC, DRONEP 010614 4546 TSTCHR /FIRST CHARACTER READY = USE PROC 010615 7563 -215 /C.R. 010616 7410 SKP 010617 5541 PC1, POPJ /EXIT "PROCESS" 010620 4552 SORTC /IGNORE "SPACE",",", AND ";" 010621 1404 GLIST-1 010622 5212 JMP PROCESS 010623 4540 PUSHJ /GO TO TERMINATOR 010624 0566 TERMER 010625 7501 MQA 010626 0073 AND P337 /ALLOW LOWER CASE 010627 4551 SORTJ /GO DO COMMAND 010630 0767 COMLST-1 010631 0174 COMGO-COMLST 010632 4507 ERROR2 /ILLEGAL COMMAND 010633 0202 202 /IC 0617 COMMENTS=PC1 /ALSO IS CONTINUE DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 16 /OUTPUT COMMAND TEXT 010634 4556 WRITE, GETLN /SET LINENO OR 'DCA LINENO' *KEY* 010635 2026 ISZ DEBGSW /DISABLE TRACE 010636 4557 FINDLN /SEARCG FOR LINE NUMBER 010637 5265 JMP WTESTG /NOT THERE OR GROUP OR '0' 010640 1122 TAD LINENO 010641 7640 SZA CLA 010642 4555 PRNTLN /PRINT LINE NUMBER AND A SPACE 010643 4547 GETC 010644 4553 PRINTC /PRINT TEXT OF A LINE 010645 4546 TSTCHR 010646 7563 -215 /C.R. 010647 5243 JMP .-4 010650 4570 JMS I DTHIS /TEST FOR END OF TEXT OR '0' 010651 7450 WTEST2, SNA 010652 5267 JMP WX-2 /EXIT;DO NEXT INDIRECT LINE 010653 7001 IAC 010654 3030 DCA PT1 /SAVE POINTER TO LINENO OF NEXT 010655 1120 TAD NAGSW 010656 7700 SMA CLA 010657 4571 JMS I DPT1 010660 4563 TSTGRP /TRY NEXT LINENO FOR GROUP 010661 5271 JMP WX 010662 4571 WALL, JMS I DPT1 /SET LINENO 010663 3122 DCA LINENO 010664 5236 JMP WRITE+2 010665 1023 WTESTG, TAD THISLN /INIT GROUP PRINTOUT 010666 5251 JMP WTEST2 010667 3026 DCA DEBGSW 010670 5541 POPJ 010671 1120 WX, TAD NAGSW 010672 7750 SPA SNA CLA /SKIP IF ALL 010673 5267 JMP WX-2 010674 4553 PRINTC /PRINT C.R. AGAIN 010675 5262 JMP WALL DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 17 010676 0000 XTESTC, 0 /TEST THE NATURE OF THE NEXT ALPHANUMERIC - "TESTC" 010677 4560 SPNOR /IGNORE SPACES 010700 4552 SORTC /TEST THE VARIABLE TERMINATORS 010701 1776 TERMS-1 010702 5676 JMP I XTESTC /YES - SORTCN IS SET 010703 2276 ISZ XTESTC /NO 010704 4561 TESTN 010705 5676 JMP I XTESTC /. 010706 7410 SKP /OTHER 010707 5676 JMP I XTESTC /NUMBER 010710 4546 TSTCHR 010711 7472 -"F /SKIP IF 'F' 010712 2276 ISZ XTESTC 010713 2276 ISZ XTESTC /RETURNS:T;N;F;A 010714 5676 JMP I XTESTC 010715 0000 XSORTC, 0 /SORT CHAR OR AC AGAINST TABLE - "SORIC" 010716 7450 SNA /AC? 010717 1121 TAD CHAR /NO.TAKE CHAR 010720 3033 DCA T2 /STORE IN TEMP 010721 1715 TAD I XSORTC 010722 3012 DCA XRT2 /1ST ARG IS LIST-1 010723 1412 TAD I XRT2 010724 7510 SPA /LIST IS ENDED BY A NEGATIVE NUMBER 010725 5337 JMP SEXC /2AND EXIT = NOT IN LIST 010726 7041 CIA 010727 1033 TAD T2 010730 7640 SZA CLA /COMPARE 010731 5323 JMP .-6 010732 1715 TAD I XSORTC /COMPUTE INCREMENT : 0 - N 010733 7040 CMA 010734 1012 TAD XRT2 010735 3057 DCA SORTCN 010736 7410 SKP /1ST EXIT = YES 010737 2315 SEXC, ISZ XSORTC 010740 2315 ISZ XSORTC 010741 7200 CLA 010742 5715 JMP I XSORTC DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 18 010743 0000 GRPTST, 0 /AC VS LINENO - "TSTGRP" 010744 0077 AND P7600 010745 7041 CIA 010746 3033 DCA T2 010747 1122 TAD LINENO 010750 0077 AND P7600 010751 1033 TAD T2 010752 7650 SNA CLA 010753 2343 ISZ GRPTST 010754 5743 JMP I GRPTST /INPUT FROM TEXT OR KEYBOARD; /IF BACK-ARROW, RESTART INPUT 010755 0000 INPUT, 0 /INPUT A CHARACTER 010756 1035 TAD INSUB /NON/ZERO FOR KEYBOARD 010757 7640 SZA CLA 010760 5363 JMP .+3 010761 4547 GETC 010762 5755 JMP I INPUT 010763 4554 READC 010764 4551 SORTJ 010765 2176 SPECIAL-1 010766 0171 INFIX-SPECIAL 010767 5755 INPUAC, JMP I INPUT 0770 COMLST=. /COMMAND DECODING LIST 010770 0323 "S /SET 010771 0306 "F /FOR 010772 0311 "I /IF 010773 0302 "B /BRANCH 010774 0304 "D /DO 010775 0307 "G /GOTO 010776 0303 "C /COMMENT 010777 0301 "A /ASK 011000 0324 "T /TYPE 011001 0314 "L /LIBRARY 011002 0305 "E /ERASE 011003 0327 "W /WRITE 011004 0315 "M /MODIFY 011005 0321 "Q /QUIT 011006 0322 "R /RETURN 011007 0317 "O /OPEN / "X /EXTRA /THIS COMMAND LIST IS SPEED OPTIMIZED;"FOR" ENDS IT DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 19 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 20 /LOOP CONTROL STATEMENT 1010 SET=. /SUBSET OF "FOR" 011010 4540 FOR, PUSHJ /LOOPS, ETC. 011011 1411 GETARG /LOOK FOR "=" NEXT 011012 4560 SPNOR 011013 4546 TSTCHR 011014 7503 -"= 011015 4507 ERROR2 /LEFT OF "=" IN ERROR:'FOR' OR 'SET' 011016 0324 324 /NE 011017 4313 JMS SAVNAM /SAVE NAME OF VARIABLE 011020 4540 PUSHJ 011021 1605 EVAL-1 /GET INITIAL VALUE EXPRESSION 011022 4321 JMS GETNAM /ALL THIS FOR ZEROED VARS 011023 7000 NOP /EVENTUALLY FCDF V 011024 4407 FINT /INITIALIZE NOW 011025 0525 FGET I FLARGP /FLAC GETS KILLED BY GETNAM 011026 6430 FPUT I PT1 011027 0000 FXIT 011030 4551 SORTJ /TEST LAST CHAR FROM "EVAL" 011031 1405 TLIST-1 011032 7173 FLIST1-TLIST 011033 4507 ERROR2 /EXCESS R-PAR 011034 0117 117 /EP 011035 4313 FINCR, JMS SAVNAM /SAVE VARIABLE NAME 011036 4540 PUSHJ /EVALUATE THE INCREMENT,IF ANY 011037 1605 EVAL-1 011040 4551 SORTJ /TEST TERMINATORS 011041 1405 TLIST-1 011042 7170 FLIST2-TLIST 011043 4507 ERROR2 /ILLEGAL TERMINATOR IN 'FOR' 011044 0122 122 /FC=FOR COMMAND 011045 6211 FLIMIT, CDF V 011046 4543 PUSHF /SAVE THE INCREMENT 011047 7173 FLARG 011050 4540 PUSHJ /GET THE LIMIT(NO ERROR DETECTION AFTER LIMIT) 011051 1605 EVAL-1 011052 6211 FCONT, CDF V 011053 4543 PUSHF /SAVE THE LIMIT 011054 7173 FLARG 011055 4543 PUSHF /SAVE TEXT OF OBJECT STATEMENTS 011056 0017 TEXTP 011057 4540 PUSHJ /DO THE OBJECT STATEMENTS 011060 0612 PROCESS 011061 4544 POPF /RESTORE REMAINING TEXT 011062 0017 TEXTP 011063 6211 CDF V 011064 4544 POPF /GET LIMIT 011065 7173 FLARG 011066 4544 POPF /GET INCREMENT 011067 7363 ITER1 011070 4321 JMS GETNAM /GET VARIABLE NAME DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 21 011071 7000 NOP /FCDF V;IN AFTER FGET 011072 4407 FINT /INCREMENT AND TEST 011073 0706 FGET I FINKP /LOAD INCREMENT 011074 1430 FADD I PT1 /ADD VARIABLE 011075 6430 FPUT I PT1 /CHANGE IT 011076 2525 FSUB I FLARGP /TEST IT 011077 4706 FMUL I FINKP /ABSOLUTE FOR TEST 011100 0000 FXIT 011101 1045 TAD HORD 011102 7740 SMA SZA CLA 011103 5541 POPJ /END OF LOOP 011104 4313 JMS SAVNAM /SAVE NAME 011105 4543 PUSHF /SAVE INCREMENT AGAIN 011106 7363 FINKP, ITER1 011107 5252 JMP FCONT 011110 4543 FINFIN, PUSHF /SET INCREMENT TO ONE 011111 2376 FLTONE 011112 5252 JMP FCONT 011113 0000 SAVNAM, 0 /LOCAL SUB TO SAVE NAME AND SUBSCRIPT IN PDL 011114 1036 TAD SUBS 011115 4542 PUSHA 011116 1055 TAD EFOP 011117 4542 PUSHA 011120 5713 JMP I SAVNAM 011121 0000 GETNAM, 0 /IDEM FOR GETTING 011122 4537 POPA 011123 3055 DCA EFOP 011124 4537 POPA 011125 4540 PUSHJ /PASSES AC 011126 1442 GS1 /SETS PT1 011127 5721 JMP I GETNAM DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 22 011130 0000 SORTB, 0 /SORT AND BRANCH ROUTINE. - "SORTJ" 011131 7450 SNA 011132 1121 TAD CHAR /ASSUME CHAR IF AC=0 011133 7041 CIA 011134 3033 DCA T2 /SAVE SORT ITEM 011135 1730 TAD I SORTB /FIRST ARG IS LIST LESS ONE 011136 2330 ISZ SORTB /2AND IS INTRA-LIST LENGTH 011137 3012 DCA XRT2 011140 1412 TAD I XRT2 011141 7510 SPA /**LISTS ENDED BY NEGATIVE NUMBER** 011142 5354 JMP SEX /READ EXIT 011143 1033 TAD T2 /FIND ADRESS 011144 7640 SZA CLA 011145 5340 JMP .-5 011146 1012 TAD XRT2 /MATCH FOUND 011147 1730 TAD I SORTB 011150 3033 DCA T2 011151 1433 TAD I T2 011152 3330 DCA SORTB 011153 5355 JMP SEX+1 011154 2330 SEX, ISZ SORTB /MATCH NOT FOUND 011155 7300 CLA CLL 011156 6214 RDF 011157 1363 TAD .+4 011160 3361 DCA .+1 011161 7402 HLT 011162 5730 JMP I SORTB /RETURN TO CALLING SEQUENCE 011163 6203 CIF CDF 0 1164 COMGO=. /COMMAND ROUTINE ADRESSES 011164 1010 SET 011165 1010 FOR 011166 2650 IF 011167 2647 BR 011170 0451 DO 011171 0604 GOTO 011172 0617 COMMENT 011173 1204 ASK 011174 1205 TYPE 011175 2555 LIB 011176 2207 ERASE 011177 0634 WRITE 011200 2600 MODIFY 011201 0414 START1 /RETURN TO COMMAND MODE VIA 'QUIT' 011202 2163 RETRN 011203 6367 FILER /OPEN DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 23 /INPUT OUTPUT STATEMENTS 011204 7240 ASK, CLA CMA /REMEMBER WHICH CALL 011205 3003 TYPE, DCA ATSW 011206 3026 TASK, DCA DEBGSW /RE-ENABLE THE TRACE 011207 4551 SORTJ /SPECIAL CHARACTER? 011210 1374 ALIST-1 011211 0167 ATLIST-ALIST 011212 1003 TAD ATSW /TEST QUOTE SWITCH 011213 7700 SMA CLA 011214 5231 JMP TYPE2 011215 4540 PUSHJ /DO ASK; SETUP PT1 011216 1411 GETARG 011217 1121 TAD CHAR /SAVE IN LINE CHARACTER 011220 4542 PUSHA 011221 3000 DCA ECHO /ONLY IF ECHO 011222 1250 TAD DIDO /RING-A-DING-DONG 011223 4553 PRINTC 011224 2000 ISZ ECHO 011225 2035 ISZ INSUB /INDICATE 'READC' 011226 7001 IAC /POINT PAST CHAR 011227 4531 JMS I FINPUT /READ DATA AND SAVE 011230 5240 JMP ENDASK 011231 4540 TYPE2, PUSHJ /DO TYPE 011232 1606 EVAL 011233 1121 TAD CHAR 011234 4542 PUSHA /SAVE FOR RETEST 011235 4530 ENDESC, JMS I FOUTPUT /PRINT 011236 7001 IAC 011237 3000 DCA ECHO 011240 4537 ENDASK, POPA /RETEST LAST TERMINATOR 011241 4545 STOCHR 011242 5206 JMP TASK /CONTINUE PROCESSING 011243 3000 ESC, DCA ECHO /ONLY IF ECHO 011244 4407 FINT 011245 0430 FGET I PT1 011246 0000 FEXT 011247 5235 JMP ENDESC /ECHO CURRENT VALUE OF LITERAL 011250 0207 DIDO, 207 /BELL;CAN BE SET BY CD DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 24 011251 2026 TQUOT, ISZ DEBGSW /DISABLE TRACE 011252 4547 GETC /TYPE LITERALS 011253 4551 SORTJ 011254 1411 TLIST2-1 011255 0754 TLIST3-TLIST2 011256 4553 PRINTC 011257 5252 JMP TQUOT+1 011260 1002 TINTR, TAD SPC 011261 3704 DCA I LEADCH /RESET CHARS. 011262 1303 TAD SPCMZE 011263 3705 DCA I DFILL 011264 4547 GETC /PASS PERCENT SIGN 011265 4564 TESTC 011266 5276 JMP FILL /TERM.,SHOULD BE '*' 011267 5306 JMP FORMAT /NUMBER;NORMAL FORMAT 011270 0012 STRMSP, "*-240 /FALLS THRU 011271 4546 TSTCHR /OTHER;SET NO LEADER 011272 7444 -"\ /IF %\XXXX 011273 5306 JMP FORMAT /VARIABLE FORMAT 011274 1102 TAD C200 011275 5261 JMP TINTR+1 /DELETE LEADER 011276 4546 FILL, TSTCHR 011277 7526 -"* 011300 5307 JMP FORMFL /TERM., SET FLOAT FORMAT 011301 1270 TAD STRMSP /SET "*" 011302 5262 JMP TINTR+2 /GET NEXT CHAR 011303 7760 SPCMZE, 240-"0 011304 3251 LEADCH, LEDCHR 011305 3342 DFILL, FILLER 011306 7201 FORMAT, CLA IAC /FIXED POINT 011307 3052 FORMFL, DCA FISW /FLOATING 011310 4556 GETLN 011311 1122 TAD LINENO 011312 0077 AND P7600 011313 7002 BSW 011314 7110 CLL RAR 011315 7450 SNA 011316 1116 TAD DIGITS /FLOATING 011317 3114 DCA FSIZE 011320 1122 TAD LINENO 011321 0104 AND P17 011322 3115 DCA DECP 011323 1114 TAD FSIZE 011324 7041 CIA 011325 1115 TAD DECP 011326 7700 SMA CLA 011327 4507 FORMER, ERROR2 /FORMAT ERROR 011330 0136 136 /FO 011331 5206 JMP TASK DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 25 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 26 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 27 011332 7001 TCRLF, IAC /"!":CR,LF 011333 7001 TFOFED, IAC /"&":FOFED 011334 7001 TRESET, IAC /"#": RESET PAGE COMMAND 011335 1074 TLFEED, TAD CLF /"'":LINE-FEED 011336 4553 PRINTC 011337 4547 TASK4, GETC /MOVE TO NEXT CHAR 011340 5206 JMP TASK 011341 4540 XTAB, PUSHJ 011342 1605 EVAL-1 011343 4453 JMS I INTEGE 011344 7550 SPA SNA 011345 7201 CLA IAC /OVER LEFT MARGIN 011346 3046 DCA LORD /AND ALLOW FOR 'T :,' 011347 1001 FORW, TAD TABC /'T :1,' IS FIRST POSITION 011350 7140 CMA CLL 011351 1046 TAD LORD 011352 7450 SNA 011353 5206 JMP TASK /NO MOVEMENT 011354 7500 SMA /NEGATIVE IF BACKUP 011355 7161 CLL CML CIA /FORWARDS; SET LINK 011356 3065 DCA CNTR 011357 7430 SZL /FOR TERMINAL WITH BS 011360 5365 JMP P216+1 / JMP .+2 011361 1364 TAD P216 / TAD M30 011362 4553 PRINTC / TAD SPC 011363 5347 JMP FORW / DCA T3 011364 0216 P216, 216 /M30, -30 011365 1002 TAD SPC / TAD T3 011366 4553 PRINTC 011367 2065 ISZ CNTR 011370 5365 JMP .-3 011371 7040 CMA 011372 1046 TAD LORD 011373 3001 DCA TABC 011374 5206 JMP TASK DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 28 1375 ALIST=. /ASK/TYPE LIST OF CONTROLS 011375 0247 "' 011376 0246 "& 011377 0243 "# 011400 0272 ": 011401 0245 "% 011402 0242 "" 011403 0241 "! 011404 0244 "$ 1405 GLIST=. 011405 0240 240 /SPACE 1406 TLIST=. 011406 0254 ", 011407 0273 "; 011410 0215 215 /C.R. DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 29 /FIND OR ENTER A VARIABLE IN THE LIST 011411 4564 GETARG, TESTC /FIRST LETTER OF ARG 011412 0242 TLIST2, 0242 /" 011413 0215 0215 /C.R. - FUNCTION OR NUMBER IS NOT AN ARG. 011414 4507 ERROR2 /BAD ARGUMENT IN 'FOR','SET',OR 'ASK' 011415 0020 20 /BA 011416 3062 GETVAR, DCA XCTIN /PACK INTO ADD. 011417 4550 PACKC /PACK FIRST CHAR 011420 1061 TAD ADD /SAVE NAME 011421 3055 DCA EFOP /WHERE WE CAN PUSH IT 011422 4547 GETLP, GETC /GET NEXT CHAR 011423 4552 SORTC /END OF NAME? 011424 1776 TERMS-1 011425 5233 JMP GSERCH /YES 011426 2062 ISZ XCTIN /IS THIS THE SECOND CHAR? 011427 5222 JMP GETLP /MORE THAN 2 CHARS;IGNORE 011430 1121 TAD CHAR /PACK SECOND CHAR 011431 0100 AND P77 /MASK IT 011432 5220 JMP GETLP-2 /ADD TO NAME 011433 4562 GSERCH, TSTLPR /CHECK FOR SUBSCRIPT 011434 5242 JMP GS1 /NONE 011435 4534 JMS I DECALL /PICK IT UP 011436 4537 POPA /RESTORE NAME 011437 3055 DCA EFOP 011440 4535 JMS I DPART /CHECK PAREN MATCH,ETC. 011441 4453 JMS I INTEGE /CONVERT TO 12 BIT 011442 3036 GS1, DCA SUBS /SAVE SUBSCRIPT 011443 7421 MQL /CLEAR LAST ZERO HOLD 011444 1174 TAD SECRTV /START SEARCH WITH SECRET 011445 5257 JMP GSTRT /GO IN LOOP 011446 2011 GS2, ISZ XRT /NAME DID NOT MATCH 011447 2011 GS3, ISZ XRT /SUBSCRIPT DID NOT MATCH 011450 1411 TAD I XRT /GETS HORD OF VAR. 011451 7640 SZA CLA /IS VAR. ZERO? 011452 5255 JMP .+3 /NO.MUST BE REAL 011453 1030 TAD PT1 /YES!LET'S STORE ADRESSES 011454 7421 MQL /AS WE GO ALONG 011455 1030 TAD PT1 011456 1123 TAD GINC /NEXT /VARIABLES GET ADDED IN THE FOLLOWING WAY: /IF ANY ZERO'S AVAILABLE:FROM LASTV DOWNWARDS;BUT NOT SECRET /IF NO ZERO'S FROM LASTV UPWARDS;THEN BLOW-UP DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 30 011457 3030 GSTRT, DCA PT1 /FIRST OR NEXT POINTER 011460 1031 TAD LASTV /CHECK FOR END OF 011461 7141 CIA CLL /EXISTING VARS. 011462 1030 TAD PT1 011463 7630 SZL CLA 011464 5305 JMP MAKVAR /VAR. NOT IN LIST;CREATE NEW ONE 011465 1030 TAD PT1 /REPLICATE SO PT1 STAYS 011466 3011 DCA XRT /AT START OF VAR. 011467 6211 CDF V /VARIABLE FIELD 011470 1430 TAD I PT1 /NAME 011471 7041 CIA 011472 1055 TAD EFOP /ASKED NAME 011473 7640 SZA CLA /CHECK? 011474 5246 JMP GS2 /NO 011475 1411 TAD I XRT /OK.WHAT ABOUT SUBS.? 011476 7041 CIA 011477 1036 TAD SUBS 011500 7640 SZA CLA 011501 5247 JMP GS3 /ALMOST! 011502 2030 ISZ PT1 /FOUND IT!! 011503 2030 ISZ PT1 /POINT TO DATA 011504 5541 POPJ 011505 7501 MAKVAR, MQA /GET OUT LAST ZERO ADRESS 011506 7450 SNA /ANY ZERO'S? 011507 5317 JMP TOPVAR /NO.PUT IT ON TOP 011510 7041 CIA /CHECK FOR SECRET VARS. 011511 1133 TAD END /STVAR 011512 7660 SNL SZA CLA 011513 5317 JMP TOPVAR /IT WAS SECRET;ON TOP 011514 7501 MQA /OK.USE ZERO VAR. 011515 3030 DCA PT1 /RESET PT1 011516 5330 JMP VAREX DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 31 011517 1345 TOPVAR, TAD VARTOP /CHECK FOR TOP 011520 7141 CIA CLL 011521 1031 TAD LASTV 011522 7630 SZL CLA 011523 4507 ERROR2 /REALLY NO MORE SPACE! 011524 0265 265 /LF=LITERALS FULL 011525 1031 TAD LASTV /OK;UPDATE LASTV 011526 1123 TAD GINC 011527 3031 DCA LASTV 011530 1055 VAREX, TAD EFOP /NOW STORE IN RIGHT PLACE 011531 3430 DCA I PT1 011532 2030 ISZ PT1 011533 1036 TAD SUBS 011534 3430 DCA I PT1 011535 2030 ISZ PT1 /POINTING AT DATA 011536 6211 CDF P /CAREFUL FPNT! 011537 7000 NOP /FOR FCDF V 011540 4407 FINT 011541 0526 FGET I CFRSX /ZERO THE DATA 011542 6430 FPUT I PT1 011543 0000 FXIT 011544 5541 POPJ /EXIT 011545 5010 VARTOP, STARTF-10 011546 0000 CHRSTO, 0 /STORE A CHAR IN FLD 0 AND 1 - "STOCHR" 011547 3121 DCA CHAR 011550 1121 TAD CHAR 011551 6201 CDF L 011552 3755 DCA I XCHAR 011553 6211 CDF P 011554 5746 JMP I CHRSTO 011555 0077 XCHAR, CHARL DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 32 1556 INLIST=. /INPUT CONTROL CHARACTERS 011556 0326 ESRETN /ALTM = TERMINATE,ECHO $ 011557 0326 ESRETN /ESCAPE = "" "" 011560 0323 IBAR /^U = RESTART 011561 0323 IBAR /B.A. = RESTART 011562 0224 IGNOR /L.F. = IGNORE 011563 0331 IRETN /C.R. = TERMINATE STRING 1564 ATLIST=. 011564 1335 TLFEED /' - LINE FEED 011565 1333 TFOFED /& - FORM FEED 011566 1334 TRESET /# - RESET PAGE 011567 1341 XTAB /: - TABULATOR 011570 1260 TINTR /% - FORMAT DELIMITER 011571 1251 TQUOT /" - LITERAL DELIMITER 011572 1332 TCRLF /! - CARRIAGE RETURN AND LINE FEED 011573 2501 TDUMP /DOLLAR/- DUMP THE SYMBOL TABLE CONTENTS 011574 1337 TASK4 /SP- TERMINATOR FOR NAMES 011575 1337 TASK4 /, - TERMINATOR FOR EXPRESSIONS 011576 0612 PROCESS /; - TERMINATOR FOR COMMANDS 011577 0617 PC1 /C.R.TERMINATOR FOR STRINGS /DOLLAR/ - FOR TDUMP TERMINATES THE COMMAND 1600 PAGE DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 33 /EVALUATE AN EXPRESSION WHICH /TERMINATES WITH AN R-PAR, ; OR C.R. AND /LEAVE THE RESULT IN FLAC AND IN FLARG 011600 0000 ECALL, 0 /RECURSIVE CALL TO "EVAL" 011601 4543 PUSHF /SAVE SORTCN,LASTOP,EFOP 011602 0054 CELSO /INCLUDES 'CIF CDF P' FOR POPJ 011603 1200 TAD ECALL /RETURN TO CALLING 011604 4542 PUSHA /ADRESS AFTER NEXT POPJ 011605 4547 GETC /MOVE PAST EXTRA CHAR 011606 3056 EVAL, DCA LASTOP /EVALUATION CONTROLLER(CHECKPOINT?) 011607 4566 DRONEP /FOR ETOS 011610 4564 TESTC /TEST CHAR AND IGNORE SPACES 011611 5223 JMP ETERM1 /TERMINATOR 011612 5334 JMP ENUM /NUMBER 011613 5345 JMP EFUN /FUNCTION 011614 4540 PUSHJ /LETTER OF VARIABLE 011615 1416 GETVAR /FIND OR CREATE VARIABLE;ALSO SET PT1 011616 4564 OPNEXT, TESTC /PT1 TO ARG 011617 5240 JMP ETERMN /T 011620 7000 NOP /N-ERROR IN FORMAT 011621 7000 NOP /F 011622 5245 JMP ETERM+1 /'EVAL'FOUND A TERMINATOR WHICH WAS NOT AN OP. 011623 1126 ETERM1, TAD CFRSX /SET PT1 011624 3030 DCA PT1 /TO POINT TO ZERO 011625 1106 TAD M2 /TEST FOR UNARY OPERATIONS 011626 1057 TAD SORTCN 011627 7450 SNA 011630 5244 JMP ETERM /CREATE DUMMY FOR UNARY MINUS 011631 7001 IAC 011632 7650 SNA CLA 011633 5325 JMP ARGNXT /IGNORE UNARY PLUS 011634 1057 TAD SORTCN /TEST FOR NULL PARENS 011635 1112 TAD M11 011636 7710 SPA CLA 011637 5366 JMP ELPAR /MIGHT BE AN L-PAR 011640 4562 ETERMN, TSTLPR 011641 7410 SKP 011642 4507 ERROR2 /OPERATOR MISSING BEFORE PAREN 011643 0336 336 /NO=NO OPERATOR 011644 1057 ETERM, TAD SORTCN /SET FROM "TESTC"-"SORTC" 011645 3024 DCA THISOP 011646 1024 TAD THISOP 011647 1112 TAD M11 011650 7700 SMA CLA /END? 011651 3024 DCA THISOP DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 34 011652 1024 ETERM2, TAD THISOP /COMPARE PRIORITIES 011653 7041 CIA 011654 1056 TAD LASTOP 011655 7710 SPA CLA 011656 5311 JMP EPAR /CONTINUE 011657 1056 TAD LASTOP /FIND OPERATION 011660 7112 CLL RTR 011661 7012 RTR 011662 1333 TAD OPTABL 011663 3272 DCA FLOP 011664 1056 TAD LASTOP 011665 7640 SZA CLA /TEST FOR END OF DATA INTO FLOATING AC 011666 4544 POPF /GET LAST DATA 011667 0044 FLAC 011670 7000 NOP /LATER FCDF V 011671 4407 FINT 011672 0000 FLOP, 00 /(FLOPR I PT1)+-*/ 011673 6525 FPUT I FLARGP /SAVE RESULT 011674 0000 FXIT 011675 1125 TAD FLARGP 011676 3030 DCA PT1 011677 1024 TAD THISOP 011700 1056 TAD LASTOP /=0? 011701 7650 SNA CLA 011702 5306 JMP EVLEX /EXIT EVAL 011703 4537 POPA /GET PRIOR OP 011704 3056 DCA LASTOP 011705 5252 JMP ETERM2 /COMPARE THIS OP 011706 1057 EVLEX, TAD SORTCN 011707 3776 DCA I ULTSOR /SAVE LAST "SORTCN" 011710 5541 POPJ 011711 4562 EPAR, TSTLPR /TEST FOR SUB-EXPRESSION 011712 7410 SKP 011713 5371 JMP EPAR2 /GO EVALUATE EXPRESSION 011714 1056 TAD LASTOP /CONTINUE READING THE EXPRESSION 011715 4542 PUSHA /SAVE "LASTOP" 011716 1030 TAD PT1 011717 3322 DCA .+3 011720 6211 CDF V 011721 4543 PUSHF /SAVE LAST ARGUMENT 011722 0000 00 011723 1024 TAD THISOP /MORE TO COME 011724 3056 DCA LASTOP 011725 4547 ARGNXT, GETC /READ FIRST CHAR OF AN ARG. 011726 4564 TESTC /DO SPECIAL CHECK 011727 5366 JMP ELPAR 011730 5334 JMP ENUM /N 011731 5345 JMP EFUN /F 011732 5214 JMP OPNEXT-2 /L 011733 0430 OPTABL, FGET I PT1 /BASE FOR OPERATION COMPUTATION DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 35 011734 4543 ENUM, PUSHF /TO PROCESS ANUMBER,SAVE AC 011735 0044 FLAC 011736 1125 TAD FLARGP /SET POINTER AS FOR A VARIABLE 011737 3030 DCA PT1 011740 3035 DCA INSUB /POINT TO 'GETC' AND USE CHAR 011741 4531 JMS I FINPUT /READ TEXT NUMBER INTO FLARG 011742 4544 POPF /RESTORE THE AC 011743 0044 FLAC 011744 5216 JMP OPNEXT /CONTINUE 011745 3055 EFUN, DCA EFOP /SET CODE 011746 4547 GETC /READ FUNCTION NAME(1,2,3 LETTERS) 011747 4552 SORTC /LOOK FOR TERMINATION CHAR 011750 1776 TERMS-1 011751 5356 JMP EFUN2 /YES 011752 1055 TAD EFOP /NO 011753 7104 CLL RAL /MISH-MASH HASH CODE 011754 1121 TAD CHAR 011755 5345 JMP EFUN 011756 4562 EFUN2, TSTLPR 011757 4507 ERROR2 /MUST BE FOLLOWED BY PARENS TO SET ARGUMENT 011760 0025 25 /BF=BAD FUNCTION 011761 4200 JMS ECALL /CALL "EVAL" TO COMPUTE ARGUMENT 011762 4537 POPA /GET OUT EFOP 011763 4552 SORTC 011764 5677 FNTABL-1 011765 5774 JMP I STFUNC /FOUND IT 011766 4562 ELPAR, TSTLPR /LEFT PAREN OR FELL THROUGH FUNCTION TABLE 011767 4507 ERROR2 /DOUBLE OPERATORS OR ILLEGAL FUNCTION NAME 011770 0124 124 /FE=FUNCTION ERROR 011771 4200 EPAR2, JMS ECALL /EVALUATE NESTED EXPRESSION 011772 4537 POPA /DUMP EXTRA ARG 011773 5775 JMP I EFUN3I 011774 2020 STFUNC, FUNCST 011775 2033 EFUN3I, EFUN3 011776 2045 ULTSOR, SORTUL DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 36 1777 TERMS=. /TERMINATOR TABLE FOR 'EVAL' AND 'GETARG' 011777 0240 240 /0 SPACE 012000 0253 "+ /1 012001 0255 "- /2 012002 0257 "/ /3 012003 0252 "* /4 012004 0336 "^ /5 012005 0250 "( /6 012006 0333 "[ /7 012007 0274 274 /10 (LEFT ANGLE BRACKET) 012010 0251 ") /11 012011 0335 "] /12 012012 0276 276 /13(RIGHT ANGLE BRACKET) 012013 0254 ", /14 012014 0273 "; /15 012015 0215 215 /16 C.R. 012016 0275 "= /17 TO END GETARG FROM 'SET' 012017 5725 FNTAPT, FNTABF-1 /POINTER TO 2-WORD FNTABF 012020 1057 FUNCST, TAD SORTCN /SET BY SORTC 012021 7104 CLL RAL /*2 012022 1217 TAD FNTAPT 012023 3012 DCA XRT2 012024 1412 TAD I XRT2 /GET FIELD OF FUNCTION 012025 3230 DCA .+3 012026 1412 TAD I XRT2 /GET ADRESS 012027 3232 DCA .+3 012030 7402 HLT 012031 4540 PUSHJ 012032 7402 HLT /POPJ COMES BACK .+1 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 37 012033 7000 EFUN3, NOP /FOR FCDF 012034 4407 FINT 012035 7000 FNOR /NORMALIZE FUNCTION RETURN 012036 6525 FPUT I FLARGP /SAVE FUNCTION VALUE 012037 0000 FXIT 012040 1125 TAD FLARGP /SET POINTER 012041 3030 DCA PT1 012042 4261 JMS PARTEST 012043 5644 JMP I .+1 012044 1616 OPNEXT 012045 0000 SORTUL, 0 012046 0003 P3, 3 012047 0000 LPRTST, 0 /SKIP IF LEFT PAREN. - 'TSTLPR' 012050 1057 TAD SORTCN 012051 1112 TAD M11 012052 7700 SMA CLA 012053 5647 JMP I LPRTST 012054 1057 TAD SORTCN 012055 1111 TAD M5 012056 7740 SMA SZA CLA 012057 2247 ISZ LPRTST 012060 5647 JMP I LPRTST 012061 0000 PARTES, 0 /TEST THE PAREN MATCHINGS 012062 4537 POPA /RESTORE THE LAST OPERATION 012063 3056 DCA LASTOP 012064 4537 POPA 012065 1246 TAD P3 /+3 TO COMPARE CODES 012066 7041 CIA /CHECK FOR PAREN MATCH 012067 1245 TAD SORTUL /(STILL SET FROM THE LAST 'EVAL') 012070 7640 SZA CLA /SKIP IF MATCH 012071 4507 ERROR2 /PAREN ERROR 012072 0317 317 /MP=MISSING PARENTHESIS 012073 4547 GETC /MOVE PAST R-PAR 012074 5661 JMP I PARTEST DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 38 /THE DELETE ALINE ROUTINE 012075 0000 XDELET, 0 /UNCHAIN A LINE AND RECOVER THE SPACE 012076 7000 NOP/IOF /PROTECT POINTER CHANGES FROM INTERRUPTIONS 012077 4557 FINDLN /SETS "THISLN" AND "LASTLN" 012100 5675 JMP I XDELETE /ALREADY GONE 012101 2026 ISZ DEBGSW /DISABLE TRACE 012102 4547 GETC /MEASURE LENGTH 012103 4546 TSTCHR 012104 7563 -215 /C.R. 012105 5302 JMP .-3 012106 1017 TAD AXOUT /SAVE LAST ADRESS 012107 7040 CMA 012110 1023 TAD THISLN 012111 3065 DCA CNTR /LENGTH .L. 0 012112 1132 TAD CFRS /IT IS ILLEGAL TO DELETE THE FIRST LINE 012113 7041 CIA 012114 1023 TAD THISLN 012115 7650 SNA CLA 012116 5577 JMP I START /JUST IGNORE SUCH COMMANDS 012117 6221 CDF T /CHANGE DATA FIELD TO TEXT 012120 1423 TAD I THISLN /DISCONNECT 012121 3425 DCA I LASTLN 012122 1132 TAD CFRS /START LIST AT TOP 012123 3033 DOK, DCA T2 /EXAMINATION ADRESS 012124 1433 TAD I T2 012125 7450 SNA /TEST FOR END 012126 5341 JMP DONE /YES-WRAP UP ALL 012127 3032 DCA T1 /SAVE NEXT ADRESS 012130 1023 TAD THISLN /COMPARE LINE POSITIONS 012131 7141 CIA CLL 012132 1032 TAD T1 012133 7630 SZL CLA /SKIP IF THISLN .G. X 012134 1065 TAD CNTR /CHANGE (X) TO ACCOUNT FOR 012135 1032 TAD T1 /GARBAGE COLLECTION 012136 3433 DCA I T2 012137 1032 TAD T1 /GET NEXT 012140 5323 JMP DOK DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 39 /GARBAGE COLLECTION 012141 7040 DONE, CMA /BACKUP L FOR XR 012142 1023 TAD THISLN 012143 3011 DCA XRT 012144 1065 TAD CNTR /CORRECT END OF BUFFER POINTER 012145 1060 TAD BUFR 012146 3060 DCA BUFR 012147 1010 TAD AXIN /COMPUTE COUNT 012150 7040 CMA 012151 1017 TAD AXOUT 012152 3032 DCA T1 012153 1010 TAD AXIN 012154 1065 TAD CNTR 012155 3010 DCA AXIN 012156 1417 TAD I AXOUT 012157 3411 DCA I XRT 012160 2032 ISZ T1 012161 5356 JMP .-3 012162 5276 JMP XDELETE+1 /RESET 'LASTLN','THISLN', AND DATA FIELD 012163 1102 RETRN, TAD C200 012164 3022 DCA PC 012165 5541 POPJ 2166 SRNLST=. /'MODIFY' CONTROL CHARACTER TABLE 012166 2626 SCHAR /V.T. = CONTINUE 012167 2621 SCONT /BELL = CHANGE SEARCH CHAR 012170 0326 ESRETN /ALTM = END LINE 012171 0326 ESRETN /ESC = END LINE 012172 2635 SBAR /^U = RESTART 012173 2635 SBAR /B.A. = RESTART 012174 2624 SCEND /L.F. = FINISH THE LINE AS BEFORE 2175 LISTGO=. 012175 0331 IRETN /C.R. = END THE LINE HERE AS IT IS 012176 2645 SGOT /CHAR = SEARCH CHAR 2177 SPECIAL=. /INPUT CHARS 012177 0225 225 /CNTRL. U 012200 0334 334 /BACK-SLASH 012201 0377 ECHOLS, 377 /RUBOUT 012202 0212 212 /LINE FEED 012203 0375 375 /ALT MODE 012204 0233 233 /ESCAPE 012205 4547 MGETC, GETC 012206 5541 POPJ DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 40 /ERASE SINGLE LINES, GROUPS, OR VARIABLES 012207 4564 ERASE, TESTC /TEST THE SECOND WORD IF ANY 012210 5241 JMP ERVX /ERASE THE VARIABLES 012211 5224 JMP ERL /LINES OR GROUPS 012212 5215 JMP .+3 /ERROR 012213 4546 TSTCHR /ALL TEXT 012214 7477 -"A 012215 4507 ERROR2 /BAD ARG FOR ERASE 012216 0024 24 /BE=BAD ERASE 012217 1136 ERT, TAD ENDT /ERASE ALL TEXT 012220 3060 DCA BUFR 012221 6221 CDF T 012222 3532 DCA I CFRS 012223 5644 JMP I GOK /RESTART 012224 4556 ERL, GETLN /ERASE LINES 012225 1060 TAD BUFR /PROTECT REST OF TEXT 012226 3010 DCA AXIN 012227 4565 ERG, DELETE /EXTRACT ONE LINE 012230 2023 ISZ THISLN 012231 1120 TAD NAGSW 012232 7700 SMA CLA 012233 4570 JMS I DTHIS /(TAD I THISLN) 012234 4563 TSTGRP /DONE ERASING GROUP?(SKIP) 012235 5644 JMP I GOK /YES,ERASE 'CURRENT PROGRAM SAVED' FLAG 012236 4570 JMS I DTHIS /(TAD I THISLN) 012237 3122 DCA LINENO 012240 5227 JMP ERG 012241 1133 ERVX, TAD END /ZERO VARIABLES(BUT NOT SECRET VARIABLES) 012242 3031 DCA LASTV /MAY BE INDIRECT COMMAND 012243 5541 POPJ 012244 0411 GOK, GOKILL DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 41 /ROUTINE CALLED VIA "FINDLN": /SEARCH FOR A GIVEN LINE I.D. =[ "LINENO"] /1ST RETURN IF NOT FOUND, /2AND IF FOUND. /"THISLN" = FOUND LINE OR NEXT LARGER /"LASTLN" = LESSER AND/OR LAST /"TEXTP" IS SET 012245 0000 XFIND, 0 012246 1132 TAD CFRS /INITIALIZE POINTERS TO FIRST LINE 012247 3025 DCA LASTLN 012250 1132 TAD CFRS 012251 3023 FINDN, DCA THISLN /SAVE THIS ONE 012252 1023 TAD THISLN 012253 3011 DCA XRT 012254 1122 TAD LINENO 012255 7141 CLL CMA IAC /CLEAR LINK AND NEGATE LINENO 012256 4572 JMS I DXRT /LINENO=0 WILL BE FOUND (X-MEM) 012257 7450 SNA 012260 5271 JMP FEND3-1 /FOUND IT 012261 7630 SZL CLA 012262 5272 JMP FEND3 /PASSED IT 012263 1023 TAD THISLN /MOVE POINTERS 012264 3025 DCA LASTLN 012265 4570 JMS I DTHIS /END OF TEXT ? (X-MEM) 012266 7440 SZA 012267 5251 JMP FINDN /NOT YET 012270 7410 SKP 012271 2245 ISZ XFIND /2ND EXIT = FOUND 012272 1023 FEND3, TAD THISLN /1ST RETURN = NOT FOUND 012273 7001 IAC 012274 3017 DCA AXOUT /SET "TEXTP" 012275 3020 DCA XCT 012276 5645 JMP I XFIND DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 42 012277 0000 UTRA, 0 /UNPACK CHARACTER. - "GETC" 012300 4333 JMS GET1 012301 7710 UTE, SPA CLA /NORM & EXTEND 012302 1337 TAD GEND /300-337 & 340-376 012303 1363 TAD M137 /240-276 & 200-236 012304 1121 TAD CHAR 012305 7450 SNA 012306 5321 JMP UTX /"?" FOUND 012307 1073 TAD P337 012310 4545 UTQ, STOCHR 012311 1026 TAD DEBGSW 012312 1076 TAD DMPSW 012313 7650 SNA CLA /PRINT ONLY IF BOTH ARE ZERO 012314 4553 PRINTC 012315 5677 JMP I UTRA 012316 4333 EXTR, JMS GET1 012317 7040 CMA 012320 5301 JMP UTE 012321 1026 UTX, TAD DEBGSW /TEST FOR TRACE-ENABLED 012322 7740 M40, SMA SZA CLA /DEBGSW NEVER NEGATIVE 012323 5331 JMP .+6 012324 1076 TAD DMPSW /FLIP THE TRACE FLOP 012325 7650 SNA CLA 012326 7001 IAC 012327 3076 DCA DMPSW 012330 5300 JMP UTRA+1 /GET NEXT CHARACTER INSTEAD 012331 1105 TAD P277 /TRACE DISABLED = RETURN "?" 012332 5310 JMP UTQ 012333 0000 GET1, 0 /UNPACK 6 BITS 012334 2020 ISZ XCT /STARTS=0 012335 5352 JMP GET3 012336 1021 TAD GTEM 012337 0100 GEND, AND P77 012340 7450 SNA 012341 1113 TAD P40 /CONVERT TO SPACE 012342 3121 DCA CHAR /SAVE 012343 1121 TAD CHAR 012344 1103 TAD M77 012345 7650 SNA CLA 012346 5316 JMP EXTR /EXTENDED 012347 1121 TAD CHAR 012350 1322 TAD M40 012351 5733 JMP I GET1 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 43 012352 6221 GET3, CDF T 012353 1417 TAD I AXOUT 012354 6211 CDF P 012355 3021 DCA GTEM 012356 7040 CMA 012357 3020 DCA XCT 012360 1021 TAD GTEM 012361 7002 BSW 012362 5337 JMP GEND 012363 7641 M137, -137 /IF DEBGSW=0 : ENABLE FLIP-FLOP "DMPSW" / #0:DISABLE AND RETURN ALL"?" 'S /IF DMPSW = 0: TRACE ON, IF ENABLED / #0: TRACE OFF /IF BOTH = 0 : PRINT TRACE DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 44 012364 4556 PGETLN, GETLN 012365 5541 POPJ 2366 TLIST3=. 012366 1337 TASK4 /" (LITERAL TERMINATORS) 012367 0617 PC1 /C.R.=AUTOMATIC QUOTE MATCH 2370 INFIX=. /DATA CONTROL CHARACTERS 012370 6202 FLINTP+2 /CNTRL. U = KILL 012371 6202 FLINTP+2 /BACK-SLASH=KILL 012372 0767 INPUAC /RUBOUT=TERMINATOR 012373 0756 INPUT+1 /L.F.=IGNORE 012374 1243 ESC /ALT MODE=EXIT 012375 1243 ESC /ESC=ALT 012376 0001 FLTONE, 0001 /(NO RELATIVE REFERENCES) 012377 2000 2000 012400 0000 0000 012401 0000 0000 012402 7766 M12, -12 012403 0000 XSPNOR, 0 /IGNORE LEADING SPACES - "SPNOR" 012404 4546 TSTCHR 012405 7540 -240 /SPACE 012406 5603 JMP I XSPNOR 012407 4547 GETC 012410 5204 JMP XSPNOR+1 012411 0000 XTESTN, 0 /RETURNS: .; OTHER; NUMBER - "TESTN" 012412 1121 TAD CHAR 012413 1016 TAD MPER 012414 7440 SZA 012415 2211 ISZ XTESTN 012416 1106 TAD M2 012417 3057 DCA SORTCN /SAVE VALUE OF NUMBER 012420 1057 TAD SORTCN /TEST IF REALLY A DIGIT 012421 7710 SPA CLA 012422 5611 JMP I XTESTN 012423 1057 TAD SORTCN 012424 1112 TAD M11 012425 7750 SPA SNA CLA 012426 2211 ISZ XTESTN /IF A NUMBER 012427 5611 JMP I XTESTN DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 45 012430 0000 XPRNT, 0 /PRINT A LINENUMBER -"PRNTLN" 012431 3275 DCA COMBO+3 /IF AC='SKP' :PACK ALSO 012432 1122 TAD LINENO 012433 0077 AND P7600 012434 7002 BSW 012435 7010 RAR 012436 4247 JMS PRNT /TWO DIGIT PART NUMBER 012437 1013 TAD PER 012440 4272 JMS COMBO 012441 1122 TAD LINENO 012442 4247 JMS PRNT /TWO DIGIT STEP NUMBER 012443 1002 TAD SPC 012444 4272 JMS COMBO /PRINT AND SOMETIMES PACK 012445 3275 DCA COMBO+3 /RESET TO PRINT ONLY 012446 5630 JMP I XPRNT 012447 0000 PRNT, 0 /PRINT TWO DECIMAL DIGITS 012450 0037 AND P177 012451 3032 DCA T1 012452 1110 TAD C260 012453 3034 DCA T3 012454 5257 JMP .+3 012455 2034 ISZ T3 012456 3032 XYZ, DCA T1 012457 1032 TAD T1 012460 1202 TAD M12 012461 7500 SMA 012462 5255 JMP XYZ-1 012463 7200 CLA 012464 1034 TAD T3 012465 4272 JMS COMBO 012466 1032 TAD T1 012467 1110 TAD C260 012470 4272 JMS COMBO 012471 5647 JMP I PRNT 012472 0000 COMBO, 0 /COMBINED PRINT PACK 012473 4545 STOCHR 012474 4553 PRINTC 012475 0000 0 012476 5672 JMP I COMBO 012477 4550 PACKC 012500 5672 JMP I COMBO DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 46 /SYMBOL TABLE TYPEOUT ROUTINE 012501 1133 TDUMP, TAD END /INIT POINTER FOR DUMP (DON'T DUMP SECRET VARIABLES) 012502 3030 DCA PT1 012503 1031 TAD LASTV /TEST FOR END OF LIST 012504 7041 CIA 012505 1030 TAD PT1 012506 7650 SNA CLA 012507 5541 POPJ 012510 6211 CDF V 012511 1430 TAD I PT1 /GET VARIABLE 012512 6221 CDF T 012513 3752 DCA I OP+1 012514 6211 CDF P 012515 1351 TAD OP /SETUP UNPACK POINTERS 012516 3017 DCA AXOUT 012517 3020 DCA XCT 012520 4547 GETC /READ AND PRINT "XX(" 012521 4553 PRINTC 012522 4547 GETC 012523 4553 PRINTC 012524 4547 GETC 012525 4553 PRINTC 012526 2030 ISZ PT1 012527 6211 CDF V 012530 1430 TAD I PT1 /PRINT SUBSCRIPT TO 99 012531 6211 CDF P 012532 4247 JMS PRNT 012533 4547 GETC /PRINT ")" 012534 4553 PRINTC 012535 2030 ISZ PT1 012536 7000 NOP /FCDF V 012537 4407 FINT /PICK UP VALUE 012540 0430 FGET I PT1 012541 0000 FXIT 012542 4530 JMS I FOUTPUT /PRINT VALUE 012543 1075 TAD CCR 012544 4553 PRINTC 012545 1123 TAD GINC 012546 1106 TAD M2 012547 1030 TAD PT1 012550 5302 JMP TDUMP+1 012551 0203 OP, PC0+3 012552 0204 PC0+4 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 47 012553 4540 LGOSUB, PUSHJ /EXECUTE THE SUBROUTINE 012554 0452 DO+1 012555 6203 LIB, CIF CDF L /I.E. TO "PROC" FOR REST OF LINE 012556 5767 JMP I LIBLOW 012557 1370 LIBRET, TAD JMPGOS /RETURN TO APPROPRIATE ROUTINE 012560 3361 DCA .+1 012561 7402 HLT 012562 0613 PROCLB, PROC 012563 0414 START1 012564 2553 LGOSUB 012565 0605 GOTO+1 012566 0635 WRITE+1 /ONLY USED BY CD FOR /W OPTION 012567 1600 LIBLOW, LOWLIB 012570 5762 JMPGOS, JMP I PROCLB 012571 0545 ECHOGO, INEX 012572 0545 INEX 012573 0554 INALT 012574 0544 INEX-1 012575 2752 ILIST, IF1 /, 012576 0612 PROCESS /; 012577 0617 PC1 /CR DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 48 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 49 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 50 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 51 /SEARCH ROUTINES 012600 1122 MODIFY, TAD LINENO 012601 3003 DCA ATSW /KEEP IF GETLN GIVES 0 012602 4556 GETLN /READ LINE NO. 012603 1122 TAD LINENO 012604 7450 SNA 012605 1003 TAD ATSW /USE LAST IF 0 012606 3122 DCA LINENO 012607 4557 FINDLN /LOOK IT UP NOW 012610 4507 ERROR2 /NOT THERE = BAD COMMAND UNLESS ZERO 012611 0034 34 /BM=BAD MODIFY 012612 1060 TAD BUFR /SET POINTERS 012613 3010 DCA AXIN /FOR INPUT 012614 3062 DCA XCTIN 012615 1060 TAD BUFR 012616 3027 DCA PACKST 012617 1267 TAD MODSKP /SET PRNTLN FOR PACKING 012620 4555 PRNTLN 012621 7326 SCONT, CLA STL RTL /=2 DISABLE ECHO FOR MULTI8 012622 6203 CIF CDF L 012623 4464 JMS I INDEV /READ THE TELETYPE SILENTLY 012624 3076 SCEND, DCA DMPSW /SAVE SEARCH CHAR. 012625 2026 ISZ DEBGSW /NO BREAKS 012626 4547 SCHAR, GETC /TYPE+TEST-F.F. 012627 4553 PRINTC /PLAYBACK THE TEXT 012630 4551 SORTJ /LOOK FOR MATCH 012631 0074 LIST3-1 012632 2100 LISTGO-LIST3 012633 4550 PACKC /SAVE NEW LINE 012634 5226 JMP SCHAR 012635 7325 SBAR, STL CLA IAC RAL /RESTART-B.A. 012636 1060 TAD BUFR 012637 3010 DCA AXIN /SET POINTERS 012640 3062 DCA XCTIN 012641 4554 SFOUND, READC /READ FROM KEYBOARD 012642 4551 SORTJ /TEST 012643 0065 LIST6-1 012644 2100 SRNLST-LIST6 012645 4550 SGOT, PACKC /PACK CHAR. 012646 5241 JMP SFOUND /MORE DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 52 /CONDITIONAL TRANSFER PROCESS 7750 SPNA= SPA SNA CLA 012647 7240 BR, CLA CMA /THIS SETS BRANCH COMMAND 012650 3361 IF, DCA BRSW 012651 4564 TESTC /FIRST CHAR. MUST BE TERMINATOR 012652 5256 JMP IFOK /OK! 012653 0000 FRSTIF, 0 012654 0000 SCNDIF, 0 012655 5270 JMP IFER 012656 1377 IFOK, TAD (SPA 012657 3337 DCA IF2 /RESET IF2 012660 4534 JMS I DECALL /EVALUATE FIRST EXPRESSION 012661 4546 TSTCHR 012662 7524 -", /TEST IF TERMINATED BY ',' 012663 5330 JMP COMPIF /NO: COMPUTED IF 012664 4547 GETC /GOBBLE COMMA 012665 4552 SORTC 012666 3377 IFLIST-1 /GET FIRST REL. OP. 012667 7410 MODSKP, SKP 012670 4507 IFER, ERROR2 /NO SUCH! 012671 0204 204 /IE=IF ERROR 012672 1057 TAD SORTCN 012673 3253 DCA FRSTIF /KEEP FIRST REL. OP. 012674 3057 DCA SORTCN 012675 4547 GETC /NEXT REL. OP. IF ANY 012676 4552 SORTC 012677 3377 IFLIST-1 012700 4547 GETC /FOUND ONE;MOVE TO NEXT CHAR 012701 1057 TAD SORTCN 012702 3254 DCA SCNDIF /KEEP;IF NONE = 0 012703 7305 CLA CLL IAC RAL /2=OP. '-' 012704 3024 DCA THISOP 012705 4540 PUSHJ 012706 1711 EPAR /EVALUATE SECOND ARGUMENT DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 53 012707 1253 TAD FRSTIF 012710 7041 CIA 012711 1254 TAD SCNDIF 012712 7650 SNA CLA 012713 5270 JMP IFER /SOME COMBINATION LIKE:'==' 012714 1376 TAD (NOP 012715 3337 DCA IF2 /SET FOR TWO EXITS 012716 1253 TAD FRSTIF /NOW COMPUTE INSTRUCTION 012717 1254 TAD SCNDIF 012720 7110 CLL RAR /.GT. IN LINK 012721 7430 SZL 012722 7040 CMA /COMPL. IF .GT. 012723 7430 SZL 012724 1375 TAD (2004 /SET REVERSE SENSE 012725 7002 BSW 012726 7110 CLL RAR 012727 1374 TAD (7600-SPNA 012730 1373 COMPIF, TAD (SPNA 012731 3341 DCA IF3-1 012732 4537 POPA /DUMP EFOP 012733 4535 JMS I DPART /CHECK PARENS. 012734 1106 TAD M2 012735 3032 DCA T1 012736 1045 TAD HORD /TEST COMP.IF. -,0,+ 012737 7510 IF2, SPA 012740 2032 ISZ T1 012741 7750 SPA SNA CLA /OR SOME OTHER INSTR. 012742 2032 IF3, ISZ T1 /COUNT COMMAS 012743 7410 SKP 012744 5354 JMP IFBRCO /TRANSFER TO GO AND BRANCH 012745 4551 SORTJ /SEARCH TEXT UNTIL ,;C.R. 012746 1405 TLIST-1 012747 1167 ILIST-TLIST 012750 4547 GETC 012751 5345 JMP .-4 012752 4547 IF1, GETC /MOVE PAST COMMA 012753 5342 JMP IF3 012754 4556 IFBRCO, GETLN /GET LINE FIRST 012755 4772 JMS I (ENDCOM /GO TO END OF COMMAND 012756 2361 ISZ BRSW 012757 5771 JMP I (GOTO+1 012760 5770 JMP I (DO+1 BRSW, 012761 0000 SCOPSU, 0 /FOR SCOPE RUBOUTS 012762 1113 TAD P40 /BS ALREADY OUT 012763 4553 PRINTC /SPACE 012764 1063 TAD SPLAT /BS 012765 4553 PRINTC 012766 2000 ISZ ECHO 012767 5761 JMP I SCOPSU DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 53-1 012770 0452 012771 0605 012772 6372 012773 7750 012774 7630 012775 2004 012776 7000 012777 7510 3000 PAGE DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 54 013000 0000 OUT, 0 /OUTPUT A CHARACTER-"PRINTC" 013001 7450 SNA /USE AC OR CHAR 013002 1121 TAD CHAR 013003 0037 AND P177 013004 7450 SNA 013005 5600 JMP I OUT /IGNORE NULLS 013006 1222 TAD M15 /CHECK FOR CR 013007 7450 SNA 013010 5215 JMP NEWLIN /TYPE CR,LF 013011 1075 TAD CCR /ADD 200 BIT 013012 6203 OUTCLF, CIF CDF L 013013 4623 JMS I OUTDEV 013014 5600 JMP I OUT 013015 1075 NEWLIN, TAD CCR /CR 013016 6203 CIF CDF L 013017 4623 JMS I OUTDEV 013020 1074 TAD CLF /LF 013021 5212 JMP OUTCLF 013022 7763 M15, -15 013023 2522 OUTDEV, LOWOUT DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 55 /CHARACTER REMOVAL ROUTINE 013024 1010 RUB1, TAD AXIN /RUBOUT ONE LETTER 013025 7041 CIA 013026 1027 TAD PACKST /PROTECTION 013027 7710 SPA CLA 013030 1010 TAD AXIN /IF TOO LOW PUT 0 IN T2 013031 3033 DCA T2 013032 6221 CDF T 013033 2062 ISZ XCTIN /TEST HALF 013034 5260 JMP RUB2 013035 1433 TAD I T2 /ADD IS FULL 013036 0100 AND P77 /IF PROTECTION 013037 1103 TAD M77 /THIS NEVER GIVES ZERO 013040 7640 M140, SZA CLA /BECAUSE LOC.0 FLD T IS ZERO 013041 5251 JMP RUB4 013042 7040 RUB3, CMA /IT IS EXTEND CODE 013043 3062 DCA XCTIN /SET SWITCH 013044 7040 CMA 013045 1010 TAD AXIN 013046 3010 DCA AXIN 013047 1433 TAD I T2 /RESET ADD 013050 0333 AND P7700 013051 3061 RUB4, DCA ADD 013052 6211 CDF P 013053 3000 DCA ECHO /ONLY IF ECHO 013054 1063 TAD SPLAT /FOR RUBOUT ACKNOWLEDGEMENT 013055 4553 PRINTC 013056 4672 DELSCP, JMS I PSCOPS /OR 'ISZ ECHO' IF NO SCOPE RUBOUTS 013057 5673 JMP I PACBUF 013060 1033 RUB2, TAD T2 013061 7650 SNA CLA 013062 5321 JMP PACX /PROTECTED! 013063 1433 TAD I T2 /CHECK FOR EXTEND 013064 0333 AND P7700 013065 1236 TAD M140-2 013066 7640 SZA CLA 013067 5242 JMP RUB3 013070 3433 DCA I T2 /SAVE CORRECTION 013071 5243 JMP RUB3+1 013072 2761 PSCOPS, SCOPSU /SUB TO PRINT SPACE,BACKSPACE DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 56 013073 0000 PACBUF, 0 /PACK A CHAR. -"PACKC" 013074 1105 TAD P277 013075 7041 CIA 013076 1121 TAD CHAR 013077 7450 SNA /CHANGE 277 TO 377 013100 1113 TAD P40 013101 1333 TAD P7700 013102 7450 SNA /TEST FOR RUBOUT 013103 5224 JMP RUB1 013104 1307 TAD P377 013105 3033 DCA T2 /SAVE INPUT ITEM 013106 1033 TAD T2 /SO THAT QUESTION DOESN'T MAKE 013107 0377 P377, AND C140 /CHAR LOOK LIKE A LEFT ARROW 013110 1240 TAD M140 013111 7440 SZA /DATA WORD 013112 1377 TAD C140 013113 7650 SNA CLA 013114 5323 JMP ESCA /200-237 & 340-377 013115 1033 PA1, TAD T2 /240-337 013116 0100 AND P77 013117 7440 SZA /IGNORE 300 013120 4334 JMS PCK1 013121 6211 PACX, CDF P 013122 5673 JMP I PACBUF 013123 1100 ESCA, TAD P77 013124 4334 JMS PCK1 013125 5315 JMP PA1 013126 7002 ROT, BSW 013127 3061 DCA ADD 013130 7040 CMA 013131 3062 DCA XCTIN 013132 5734 JMP I PCK1 013133 7700 P7700, 7700 013134 0000 PCK1, 0 013135 2062 ISZ XCTIN /=0 TO START 013136 5326 JMP ROT 013137 1061 TAD ADD 013140 4573 JMS I DAXIN 013141 3061 DCA ADD /CLEAR PACKING WORD 013142 5734 JMP I PCK1 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 57 013143 0000 AXIND, 0 /AXIN SUB. NOW CHECKS FOR OVERFLOW 013144 6221 CDF T 013145 3410 DCA I AXIN 013146 1524 TAD I PAXPNT /PDLXR 013147 7141 CLL CIA 013150 1010 TAD AXIN 013151 1002 TAD SPC /PROGRAM UP TO 7300 013152 6211 CDF P /PROGRAMS MAX. 15 BLOCKS LONG 013153 7620 SNL CLA /7300 GIVES SPACE FOR APPEN AND PDL 013154 5743 JMP I AXIND 013155 4507 ERROR2 /TEXT OVERFLOW 013156 0365 365 /PF=PROGRAM FULL 013157 4554 FIN, READC /SINGLE CHAR. INPUT FUNCTION 013160 1121 TAD CHAR /FLOAT CHAR. 013161 3045 DCA HORD 013162 3046 DCA LORD 013163 3047 DCA OVER2 013164 1101 TAD P13 013165 3044 DCA EXP 013166 5541 POPJ 013167 4453 FOUT, JMS I INTEGE /SINGLE CHAR OUTPUT FUNCTION 013170 7450 SNA 013171 1102 TAD C200 /IN CASE IT'S ZERO 013172 4553 PRINTC 013173 5541 POPJ 013174 4453 XINT, JMS I INTEGE 013175 7300 CLA CLL 013176 5541 POPJ 013177 0140 C140, 140 /DON'T MOVE!! 3200 PAGE DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 58 /INPUT-OUTPUT ROUTINES FOR THE /FOCAL FLOATING POINT PACKAGE /IN THE COMMENTS BELOW:- /F=NUMBER OF DIGITS TO BE OUTPUT =FISW ---F--- /D=NUMBER OF DECIMAL PLACES =DECP ABC.DEF E GHI /E=DECIMAL EXPONENT =BEXP -D- -E- /P=NUMBER OF PLACES REMAINING TO BE /PRINTED BEFORE DECIMAL POINT 3364 PLCE=SGNPRN 013200 0000 TGO, 0 013201 1116 TAD DIGITS 013202 7040 CMA 013203 3346 DCA SCOUNT /SAVE MAX. NUMBER OF DIGITS AVAILABLE - SET COUNT 013204 1114 TAD FSIZE 013205 7041 CIA 013206 3347 DCA FCOUNT /-F 013207 1052 TAD FISW /(JMP FPRNT) - FOR NO ROUNDING 013210 7650 SNA CLA /FLOATING OUTPUT ? 013211 5216 JMP R6 /YES, F SIGNIFICANT PLACES 013212 1347 TAD FCOUNT 013213 1115 TAD DECP /D-F 013214 1034 TAD T3 /COMPARE DEC. EXPONENT D-F+E 013215 7500 SMA /F-D .G. E ? 013216 7200 R6, CLA /NO, ROUND OF TO .F PLACES 013217 1114 TAD FSIZE /YES 013220 7510 SPA /D+E.L.0 ? 013221 5250 JMP DEFEAT /YES, NO ROUNDING NEEDED, GO TO PRINT 013222 7040 CMA /NO, ROUND TO D+E PLACES 013223 1116 TAD DIGITS /-(D+E)-1+DIGITS 013224 7510 SPA /TO A MAX OF D PLACES DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 59 013225 7240 CLA CMA /*ROUND UP* 013226 7041 CIA 013227 1116 TAD DIGITS 013230 3033 DCA T2 /SAVE NUMBER+1 OF PLACES TO ROUND TO 013231 1014 TAD FLTXR 013232 1033 TAD T2 /SET UP BUFFER ADDRESS AT WHICH 013233 3364 DCA PLCE /ROUNDING OFF SHOULD START 013234 1033 TAD T2 013235 7041 CIA /SETUP COUNT OF MAX NO 013236 3033 DCA T2 /OF CARRIES ALLOWABLE 013237 1305 TAD K6 /LITTLE EXTRA ON FIRST DIGIT 013240 1764 RET, TAD I PLCE 013241 1340 TAD OM12 013242 7710 SPA CLA /CARRY REQUIRED ? 013243 5253 JMP FPRNT /NO, GO TO OUTPUT 013244 3764 DCA I PLCE /YES, MAKE CURRENT DIGIT ZERO 013245 2033 ISZ T2 /BEGIN OF BUF REACHED ? 013246 5333 JMP DECR /NO, DECREMENT BUF ADDR. AND REPEAT 013247 2764 ISZ I PLCE /YES, SET MANTISSA TO .1 013250 2034 DEFEAT, ISZ T3 /COMPENSATE BY INCREMENTING EXP 013251 0240 LEDCHR, 240 /SPACE OR $,F,M,ETC. 013252 7300 CLA CLL 013253 1115 FPRNT, TAD DECP 013254 3364 DCA PLCE /FOR INT/FLT CHECK 013255 1034 TAD T3 013256 3344 DCA OUTEXP /KEEP T3 FOR LATER 013257 1052 TAD FISW /AUTO-INDEX REG ALREADY SET - *PRINT* 013260 7650 SNA CLA /F=0 ? 013261 5356 JMP FLOUT /YES, OUTPUT AS FLOAT NUMBER 013262 1347 TAD FCOUNT 013263 1034 TAD T3 013264 7540 SMA SZA /E .G. F ? 013265 5356 JMP FLOUT /YES, CONVERT TO E FORMAT 013266 1115 TAD DECP /-F-E+D 013267 7500 SMA /E.L.F-D ? 013270 7200 CLA /NO, P=E 013271 7041 CIA /YES, TAKE P=F-D 013272 1034 TAD T3 013273 7041 CIA 013274 3032 DCA T1 /SETUP -P 013275 1344 BACK1, TAD OUTEXP /PRINT DD.DDD 013276 1032 TAD T1 013277 7640 SZA CLA /B=E ? 013300 5350 JMP NODIG /NO 013301 7040 CMA /YES, PRINT DIGIT 013302 1344 TAD OUTEXP /REDUCE E BY ONE 013303 3344 DCA OUTEXP 013304 2346 ISZ SCOUNT 013305 0006 K6, 6 013306 1346 TAD SCOUNT 013307 7710 SPA CLA /ALL SIGNIFICANT FIGURES? 013310 1414 TAD I FLTXR /NO, OUTPUT NUMBER DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 60 013311 3345 RIN, DCA OUTEM /YES-OUTPUT ZERO IN TEMP. 013312 1343 TAD OUTSGN 013313 7450 SNA /SIGN OUT ALLREADY? 013314 5317 JMP FILOUT-1/YES - FORGET IT 013315 4741 JMS I OPUT /NO - PRINT - OR FILL 013316 3343 DCA OUTSGN /SIGNAL SIGN OUT 013317 1345 TAD OUTEM /OUTPUT NUMBER 013320 4741 FILOUT, JMS I OPUT /OR FILLER 013321 2032 ISZ T1 /P CHARS. PRINTED? 013322 5330 JMP NOPER 013323 1364 TAD PLCE /IS IT INTEGER FORMAT? 013324 7650 SNA CLA 013325 5330 JMP NOPER /YES: NO PERIOD 013326 1013 TAD PER /YES, PRINT PERIOD 013327 4553 PRINTC /EVEN IF FIELD IS FULL 013330 2347 NOPER, ISZ FCOUNT /F CHARS. PRINTED? 013331 5275 JMP BACK1 /NO, BACK TO LOOP 013332 5600 JMP I TGO /YES, CHECK IF FLOAT 013333 7040 DECR, CMA /BACKUP TO TOP OF BUF 013334 1364 TAD PLCE 013335 3364 DCA PLCE 013336 2764 ISZ I PLCE /ADD ONE TO DIGIT AT CURRENT POSITION 013337 5240 JMP RET 013340 7766 OM12, -12 013341 6164 OPUT, OUTDG 013342 7760 FILLER, 240-"0 /SPACE OR * 013343 7760 OUTSGN, 240-"0 /GETS "- - "0 OR 'FILLER' 013344 0000 OUTEXP, 0 013345 0000 OUTEM, 0 013346 0000 SCOUNT, 0 013347 0000 FCOUNT, 0 013350 1032 NODIG, TAD T1 013351 7001 IAC 013352 7700 SMA CLA /P .G. 1? 013353 5311 JMP RIN /NO, PRINT ZERO 013354 1342 TAD FILLER /YES, TYPE FILLER 013355 5320 JMP FILOUT 013356 2364 FLOUT, ISZ PLCE /NO INT WHEN FORMAT OVERFLOW 013357 2200 ISZ TGO /TELL FLOUTP ABOUT FLOAT 013360 7201 CLA IAC 013361 3344 DCA OUTEXP /SET EXP=1 013362 7240 CLA CMA /FAKE F-D=1 013363 5274 JMP BACK1-1 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 61 013364 0000 SGNPRN, 0 /TYPES LEADER AND SETS SIGN 013365 1251 TAD LEDCHR 013366 4553 PRINTC 013367 1045 TAD HORD 013370 7710 SPA CLA /CHECK SIGN 013371 7146 CLL CMA RTL /="- - "0 013372 7450 SNA 013373 1342 TAD FILLER /IF POSITIVE 013374 3343 DCA OUTSGN /WILL GET OUT LATER 013375 5764 JMP I SGNPRN 013376 4507 ERCALL, ERROR2 /NO ITEM IN LIST 013377 0320 320 /NA=NOT AVAILABLE 3400 PAGE DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 62 013400 0300 IFLIST, 300 013401 0276 276 /.GT. 013402 0275 275 /.EQ. 013403 0300 300 013404 0274 274 /.LT. 013405 4451 MMINSK, JMS I MINSKI 013406 5541 POPJ 013407 6203 FORLEX, CIF CDF L 013410 5611 JMP I .+1 013411 2114 LEXIT 013412 0000 XDRONE, 0 013413 6202 CIF L 013414 4616 JMS I .+2 013415 5612 JMP I XDRONE 013416 2600 XIDLE 013417 7640 RELESE, SZA CLA /PRINT LINE ONLY IF RUNNING 013420 4555 PRNTLN 013421 1101 TAD P13 /=11 FOR MULTI8 RELEASE 013422 6770 6770 /GIANT IOT 013423 7200 CLA /YOU NEVER KNOW! 013424 5577 JMP I START /AND BACK TO KB OR OS/8 DPF INTERPRETER PAL8-V50X 09-JUL-88 PAGE 63 /SECRET VARIABLES 3425 STSECR=. 013425 4400 4400 013426 0000 0000 013427 0013 0013 013430 0001 DOLL, 0001 013431 0000 0000 013432 0000 0000 013433 4300 4300 3436 NMBSGN=.+2 013434 0000 ZBLOCK 5 013441 4100 4100 3444 EXCLA=.+2 013442 0000 ZBLOCK 5 /INTRPT VARIABLES 013447 4200 4200 3452 QUOTS=.+2 013450 0000 ZBLOCK 5 013455 2011 2011 /SECRET PI 013456 0000 0000 013457 0002 0002 013460 3110 3110 013461 3755 3755 013462 2421 2421 013463 2605 2605 /VERSION NUMBER 50.1 013464 0000 0000 013465 0006 0006 013466 3103 3103 013467 1463 1463 013470 1464 1464 3471 STVAR=. 013471 0000 ZBLOCK OVRLAY-. DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 64 /HEADER FOR FCARIT.SV 5000 *5000 5000 OVRLAY=. 015000 7402 ARIT, HLT 015001 1206 TAD STARIT 015002 3607 DCA I DVAR /UP TO THE PROGRAMMER TO ORGANIZE 015003 6203 CIF CDF L /HIS VARIABLES 015004 5605 JMP I .+1 015005 0201 CHENTR /BACK TO FOS8 015006 4770 STARIT, ARIT-10 015007 1545 DVAR, VARTOP DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 65 /EXPONENTIAL 1045 GETSGN=TAD HORD 5020 *5020 5020 STARTF=. 015020 1045 FEXP, GETSGN /TAKE ABSOLUTE VALUE 015021 7710 SPA CLA 015022 4724 JMS I NEGP 015023 3034 DCA T3 /C(SIGN)=-1 IF I X2.L.0 015024 4407 FINT 015025 4313 FMUL LG2E 015026 6675 FPUT I X2 015027 0000 FEXT 015030 4453 JMS I INTEGER 015031 3325 DCA FLAG2 /SAVE LOX ORDER DATA 015032 4407 FINT 015033 7000 FNOR 015034 6676 FPUT I XSQ2 015035 0675 FGET I X2 015036 2676 FSUB I XSQ2 015037 6675 FPUT I X2 015040 4675 FMUL I X2 015041 6676 FPUT I XSQ2 015042 1310 FADD DF 015043 6326 FPUT TEMP 015044 0305 FGET CF 015045 3326 FDIV TEMP 015046 2675 FSUB I X2 015047 1277 FADD AF 015050 6326 FPUT TEMP 015051 0302 FGET BF 015052 4676 FMUL I XSQ2 015053 1326 FADD TEMP 015054 6326 FPUT TEMP 015055 0675 FGET I X2 015056 3326 FDIV TEMP 015057 4321 FMUL TWO 015060 1316 FADD ONE 015061 0000 FEXT 015062 1325 TAD FLAG2 015063 1044 TAD EXP 015064 3044 DCA EXP 015065 2034 ISZ T3 015066 5541 POPJ 015067 4407 FINT 015070 6675 FPUT I X2 015071 0316 FGET ONE 015072 3675 FDIV I X2 015073 0000 FEXT 015074 5541 POPJ DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 66 /CONSTANTS FOR FEXP 015075 5365 X2, X 015076 5371 XSQ2, XSQR 015077 0004 AF, 0004 015100 2372 2372 015101 1402 1402 015102 7774 BF, 7774 015103 2157 2157 015104 5157 5157 015105 0012 CF, 0012 015106 5454 5454 015107 0343 0343 015110 0007 DF, 0007 015111 2566 2566 015112 5341 5341 015113 0001 LG2E, 0001 015114 2705 2705 015115 2435 2435 015116 0001 ONE, 0001 015117 2000 2000 015120 0000 0000 015121 0002 TWO, 0002 015122 2000 2000 015123 0000 0000 015124 5361 NEGP, FNEG 015125 0000 FLAG2, 0 015126 0000 TEMP, 0 015127 0000 0 015130 0000 0 015131 0000 0 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 67 /MAIN ALGORITHM FOR ARCTANGENT 015132 4407 ARCALG, FINT 015133 0675 FGET I X2 015134 4675 FMUL I X2 015135 6676 FPUT I XSQ2 015136 4374 FMUL BET2 015137 1371 FADD BET1 015140 4676 FMUL I XSQ2 015141 1366 FADD BETZ 015142 6326 FPUT TEMP 015143 0363 FGET ALF2 015144 4676 FMUL I XSQ2 015145 1360 FADD ALF1 015146 4676 FMUL I XSQ2 015147 1355 FADD ALFZ 015150 4675 FMUL I X2 015151 3326 FDIV TEMP 015152 0000 FEXT 015153 5754 JMP I .+1 015154 5224 ARCRTN /CONSTANTS - FLOATING ARC TANGENT 015155 0000 ALFZ, 0000 015156 2437 2437 015157 1643 1643 015160 7777 ALF1, 7777 015161 3304 3304 015162 4434 4434 015163 7773 ALF2, 7773 015164 3306 3306 015165 5454 5454 015166 0000 BETZ, 0000 015167 2437 2437 015170 1646 1646 015171 0000 BET1, 0000 015172 2427 2427 015173 2323 2323 015174 7775 BET2, 7775 015175 3427 3427 015176 7052 7052 5200 PAGE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 68 /FLOATING POINT ARC TANGENT 015200 1045 ARTN, GETSGN /TAKE ABSOLUTE VALUE 015201 7710 SPA CLA 015202 4361 JMS FNEG 015203 3034 DCA T3 015204 4407 FINT 015205 6365 FPUT X 015206 2636 FSUB I CON1 015207 0000 FEXT 015210 1045 GETSGN 015211 7710 SPA CLA 015212 5221 JMP GO /LESS THAN ONE 015213 4407 FINT 015214 0636 FGET I CON1 015215 3365 FDIV X 015216 6365 FPUT X 015217 0000 FEXT 015220 7240 CLA CMA 015221 3360 GO, DCA FLAG1 /SIGN FLAG OF RESULT 015222 5623 JMP I .+1 015223 5132 ARCALG 015224 2360 ARCRTN, ISZ FLAG1 /RETURN HERE 015225 5634 JMP I EXIT1 015226 4407 FINT 015227 6365 FPUT X 015230 0635 FGET I PI2 015231 2365 FSUB X 015232 0000 FEXT 015233 5634 JMP I .+1 015234 5502 EXIT1, EXIT2 /CONSTANTS FOR ARCTANGENT 015235 5516 PI2, PIOT 015236 5116 CON1, ONE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 69 /FLOATING LOGARITHM 015237 1045 FLOG, GETSGN 015240 7550 SPA SNA 015241 4507 ERROR2 /0 OR - ARGUMENT FOR LOG 015242 0274 274 /LM=LOG MINUS 015243 4407 FINT 015244 6754 FPUT I TEM 015245 2636 FSUB I CON1 015246 0000 FEXT 015247 1045 GETSGN 015250 7450 SNA 015251 5541 POPJ 015252 7700 SMA CLA 015253 5262 JMP STARTL 015254 4407 FINT 015255 0636 FGET I CON1 015256 3754 FDIV I TEM 015257 6754 FPUT I TEM 015260 0000 FEXT 015261 7240 CLA CMA 015262 3034 STARTL, DCA T3 015263 1101 TAD P13 015264 3044 DCA EXP 015265 7040 CMA 015266 1754 TAD I TEM 015267 3045 DCA HORD 015270 3046 DCA LORD 015271 3047 DCA OVER2 015272 7001 IAC 015273 3754 DCA I TEM 015274 4407 FINT 015275 4355 FMUL LOG2 015276 6365 FPUT X 015277 0754 FGET I TEM 015300 2636 FSUB I CON1 015301 6754 FPUT I TEM 015302 4351 FMUL LOG8 015303 1346 FADD LOG7 015304 4754 FMUL I TEM 015305 1343 FADD LOG6 015306 4754 FMUL I TEM 015307 1340 FADD LOG5 015310 4754 FMUL I TEM 015311 1335 FADD L4 015312 4754 FMUL I TEM 015313 1332 FADD L3 015314 4754 FMUL I TEM 015315 1327 FADD L2 015316 4754 FMUL I TEM 015317 1324 FADD L1 015320 4754 FMUL I TEM DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 69-1 015321 1365 FADD X 015322 0000 FEXT 015323 5634 JMP I EXIT1 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 70 015324 0000 L1, 0000 015325 3777 3777 015326 7742 7742 015327 7777 L2, 7777 015330 4000 4000 015331 4100 4100 015332 7777 L3, 7777 015333 2517 2517 015334 0307 0307 015335 7776 L4, 7776 015336 4113 4113 015337 7211 7211 /LOGARITHM CONSTANTS 015340 7776 LOG5, 7776 015341 2535 2535 015342 3301 3301 015343 7775 LOG6, 7775 015344 4746 4746 015345 0771 0771 015346 7774 LOG7, 7774 015347 2236 2236 015350 4304 4304 015351 7771 LOG8, 7771 015352 4544 4544 015353 1735 1735 015354 5126 TEM, TEMP 015355 0000 LOG2, 0 015356 2613 2613 015357 4414 4414 015360 0000 FLAG1, 0 015361 0000 FNEG, 0 015362 4451 JMS I MINSKI 015363 7240 CLA CMA 015364 5761 JMP I FNEG 015365 0000 X, 0 015366 0000 0 015367 0000 0 015370 0000 0 015371 0000 XSQR, 0 015372 0000 0 015373 0000 0 015374 0000 0 5400 PAGE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 71 /FLOATING POINT SINE AND COSINE 015400 4407 FCOS, FINT /COS(X)=SIN(PI/2-X) 015401 6722 FPUT I X1 015402 0316 FGET PIOT 015403 2722 FSUB I X1 015404 0000 FEXT 015405 1045 FSIN, GETSGN 015406 7740 SMA SZA CLA 015407 5215 JMP MOD 015410 1045 GETSGN 015411 7700 SMA CLA 015412 5541 POPJ /YES SIN(0)=0 015413 4451 JMS I MINSKI 015414 7040 CMA /NO:SIN(-X)=-SIN(X) 015415 3034 MOD, DCA T3 015416 4407 FINT 015417 3306 FDIV TWOPI /REDUCE X MODULO 2 PI 015420 6723 FPUT I XSQR1 015421 0000 FEXT 015422 4453 JMS I INTEGER 015423 4407 FINT 015424 7000 FNOR 015425 6722 FPUT I X1 015426 0723 FGET I XSQR1 015427 2722 FSUB I X1 015430 4306 FMUL TWOPI 015431 6722 FPUT I X1 015432 2312 FSUB PI /X .L. PI? 015433 0000 FEXT 015434 1045 GETSGN 015435 7710 SPA CLA 015436 5245 JMP PCHECK /YES 015437 4407 FINT /NO, SIN(X-PI)=-SIN(X) 015440 6722 FPUT I X1 015441 0000 FEXT 015442 1034 TAD T3 015443 7040 CMA 015444 3034 DCA T3 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 72 015445 4407 PCHECK, FINT /X.L.PI/2? 015446 0722 FGET I X1 015447 2316 FSUB PIOT 015450 0000 FEXT 015451 1045 GETSGN 015452 7710 SPA CLA 015453 5261 JMP PALG /YES 015454 4407 FINT /NO 015455 0312 FGET PI /SIN(X)=SIN(PI-X) 015456 2722 FSUB I X1 015457 6722 FPUT I X1 015460 0000 FEXT 015461 4407 PALG, FINT 015462 0722 FGET I X1 015463 3316 FDIV PIOT 015464 6722 FPUT I X1 015465 4722 FMUL I X1 015466 6723 FPUT I XSQR1 015467 0324 FGET C9 015470 4723 FMUL I XSQR1 015471 1330 FADD C7 015472 4723 FMUL I XSQR1 015473 1334 FADD C5 015474 4723 FMUL I XSQR1 015475 1340 FADD C3 015476 4723 FMUL I XSQR1 015477 1316 FADD PIOT 015500 4722 FMUL I X1 015501 0000 FEXT 015502 2034 EXIT2, ISZ T3 015503 5541 POPJ 015504 4451 JMS I MINSKI 015505 5541 POPJ DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 73 /CONSTANTS AND POINTERS 015506 0003 TWOPI, 0003 015507 3110 3110 015510 3755 3755 /3756 3-WORD 015511 2421 2421 015512 0002 PI, 0002 015513 3110 3110 015514 3755 3755 /3756 3-W0RD 015515 2421 2421 015516 0001 PIOT, 0001 /USED BY SINE AND COSINE 015517 3110 3110 015520 3755 3755 /3756 3-W0RD 015521 2421 2421 015522 5365 X1, X 015523 5371 XSQR1, XSQR /SINE CONSTANTS 015524 7764 C9, 7764 015525 2441 2441 015526 7015 7015 015527 1042 1042 015530 7771 C7, 7771 015531 5464 5464 015532 5514 5514 015533 6150 6150 015534 7775 C5, 7775 015535 2431 2431 015536 5361 5361 015537 4736 4736 015540 0000 C3, 0000 015541 5325 5325 015542 0414 0414 015543 3167 3167 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 74 015544 4407 FRAN, FENT /PSEUDO RANDOM NUMBER 015545 0372 FGET RNDM /X(1)=(2^17+3)*X(0) MOD.2^16 015546 6040 FPUT ADDR 015547 0000 FEXT 015550 1370 TAD M16 015551 3372 DCA T1S 015552 4527 JMS I DOUBLE 015553 2372 ISZ T1S 015554 5352 JMP .-2 015555 4771 JMS I ADDO 015556 4527 JMS I DOUBLE 015557 4771 JMS I ADDO /2*(2^16*X+X)+X 015560 4407 FINT 015561 6372 FPUT RNDM 015562 0000 FEXT 015563 3044 DCA EXP 015564 7350 CLA CLL CMA RAR /=3777 015565 0045 AND HORD 015566 3045 DCA HORD /BE SURE IT'S POSITIVE 015567 5541 POPJ 015570 7762 M16, -16 015571 6535 ADDO, DUBLAD 5572 RNDM=. 015572 0000 T1S, 0000 015573 4421 4421 015574 3040 3040 015575 0001 0001 5600 PAGE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 75 /FLOATING SQUARE ROOT FUNCTION 015600 4407 XSQRT, FINT 015601 6671 FPUT I TITER /VALUE 015602 0000 FEXT /NEWTON'S METHOD IS USED 015603 1045 GETSGN 015604 7710 SPA CLA 015605 4507 ERROR2 /NUMBER IS NEGATIVE = IMAGINARY ROOTS 015606 0214 214 /IM=IMAGINARY 015607 1044 TAD EXP /LINK =0 FROM FINT 015610 7510 SPA /MATCH THE SIGN WITH LINK BIT 015611 7020 CML 015612 7010 RAR 015613 3272 DCA SQAC /MAKE FIRST APPROXIMATION 015614 7430 SZL /TEST LSB OF EXP 015615 2272 ISZ SQAC 015616 7000 NOP 015617 1270 TAD SQCON1 015620 3273 DCA SQAC+1 015621 3274 DCA SQAC+2 015622 3275 DCA SQAC+3 015623 1045 TAD HORD 015624 7450 SNA 015625 1046 TAD LORD 015626 7650 SNA CLA 015627 5266 JMP SQEND /NUMBER = 0 015630 4407 CLCU, FINT 015631 0671 FGET I TITER 015632 3272 FDIV SQAC 015633 1272 FADD SQAC 015634 0000 FEXT DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 76 015635 7240 CLA CMA 015636 1044 TAD EXP 015637 3044 DCA EXP 015640 1044 TAD EXP 015641 7041 CMA IAC 015642 1272 TAD SQAC 015643 7640 SZA CLA /ARE EXPONENTS EQUAL? 015644 5262 JMP ROOTGO /NO 015645 1045 TAD HORD /ARE HIGH ORDER MANTISSAS EQUAL? 015646 7041 CMA IAC 015647 1273 TAD SQAC+1 015650 7640 SZA CLA 015651 5262 JMP ROOTGO /NO 015652 1046 TAD LORD 015653 7041 CMA IAC 015654 1274 TAD SQAC+2 /DO LOW ORDER MANTISSAS AGREE? 015655 7500 SMA 015656 7041 CMA IAC /WITHIN ONE BIT? 015657 7001 IAC 015660 7700 SMA CLA 015661 5541 POPJ 015662 4407 ROOTGO, FINT 015663 6272 FPUT SQAC 015664 0000 FEXT 015665 5230 JMP CLCU 015666 3044 SQEND, DCA EXP 015667 5541 POPJ 015670 3015 SQCON1, 3015 015671 7363 TITER, ITER1 015672 0000 SQAC, 0 015673 0000 0 015674 0000 0 015675 0000 0 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 77 5700 *XSQRT+100 /IN VERSION 2 AT 15700 5700 FNTABL=. 015700 2533 2533 /ABS 015701 2650 2650 /SGN 015702 2632 2632 /OS8 015703 2636 2636 /ITR 015704 2630 2630 /RAN 015705 2572 2572 /ATN 015706 2624 2624 /EXP 015707 2625 2625 /LOG 015710 2654 2654 /SIN /LIST OF CODED FUNCTION NAMES 015711 2575 2575 /COS 015712 2702 2702 /SQT 015713 1140 1140 /IN 015714 2672 2672 /OUT 015715 2604 2604 /(F)IND 015716 0324 0324 /T 015717 0325 0325 /U 015720 0326 0326 /V 015721 0327 0327 /W 015722 0330 0330 /X 015723 0331 0331 /Y 015724 0332 0332 /Z 015725 7777 -1 /ENDS TABLE / FUNCTIONS T,U,V,W,Y,Z NOT ASSIGNED (FREE FOR USER) / FOR CODING NAME, USE OCTAL CHARS WITH 200 BIT SET / AND CALCULATE THE FOLLOWING EXPRESSION: / / X=CHAR1 / IF CHAR2 THEN: X=X*2+CHAR2 / IF CHAR3 THEN: X=X*2+CHAR3 / THEN REPLACE A FREE SLOT BY THIS VALUE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 78 5726 *XSQRT+126 /IN VERSION 2 AT 15726 5726 FNTABF=. 015726 6201 CDF L 015727 0743 XABS /ABS -ABSOLUTE VALUE 015730 6201 CDF L 015731 0732 XSGN /SGN -REAL SIGN FUNCTION 015732 6201 CDF L 015733 0724 XOS8 /OS8 -OS8=1,MULTI8=0 FUNCTION 015734 6211 CDF P 015735 3174 XINT /ITR -INTEGER PART 015736 6211 CDF P 015737 5544 FRAN /RAN -RANDOM NUMBER * NOT 015740 6211 CDF P 015741 5200 ARTN /ATN - * LOADED 015742 6211 CDF P 015743 5020 FEXP /EXP -EXPO FUNCTIONS * WITH 015744 6211 CDF P 015745 5237 FLOG /LOG - * NO 015746 6211 CDF P 015747 5405 FSIN /SIN -TRIG FUNCTIONS * FUNCTIONS 015750 6211 CDF P 015751 5400 FCOS /COS - * OPTION 015752 6211 CDF P 015753 5600 XSQRT /SQT -SQUARE ROOT 015754 6211 CDF P 015755 3157 FIN /INP -CHAR INPUT 015756 6211 CDF P 015757 3167 FOUT /OUT -CHAR OUTPUT 015760 6211 CDF P 015761 0547 FIND /IND -FIND A CHAR 015762 6211 CDF P 015763 3376 ERCALL /T 015764 6211 CDF P 015765 3376 ERCALL /U 015766 6211 CDF P 015767 3376 ERCALL /V 015770 6211 CDF P 015771 3376 ERCALL /W 015772 6201 CDF L 015773 2200 XCOM /(F)X:ARRAY 015774 6211 CDF P 015775 3376 ERCALL /Y 015776 6211 CDF P 015777 3376 ERCALL /Z / THIS TABLE IS 2 TIMES LONGER THAN 'FNTABL' / INSERT THE FIELD AND ADRESS OF YOUR FUNCTION / IN THE APPROPRIATE FREE SLOT (CORRESPONDING / TO THE ONE SELECTED IN 'FNTABL'). BE SURE TO / LOAD A 'DPF0' SECTION IN THE FIELD YOU ARE / USING. SEE 'DPF0' FOR MORE INFO. DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 78-1 /END OF ARIT OVERLAY 6000 PAGE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 79 /FIELD 1 ERROR ROUTINE 016000 2740 ERROL+3 /FLD. 0 ERROR ROUTINE ADRESS 016001 0000 ERROR, 0 /MUST BE AT THIS ADRESS!!USR.VOLATILE!! 016002 7340 CLA CMA CLL 016003 1601 TAD I ERROR /PASS ON CODE-1 016004 6203 CIF CDF L 016005 5600 JMP I ERROR-1 016006 3175 ENDERR, DCA EOL /FORCE CR 016007 1002 TAD SPC 016010 4553 PRINTC 016011 2022 ISZ PC /END OF ERROR ROUTINE;USES SUBS. IN THIS FIELD 016012 4567 JMS I DPC 016013 3122 DCA LINENO 016014 1122 TAD LINENO 016015 5616 JMP I .+1 016016 3417 RELESE /RELEASE MULTI-8 DEVICES /FLOATING OUTPUT CONVERSION ROUTINE 016017 0000 FLOUTP, 0 016020 4745 JMS I PRNSGN /GO PRINT LEADER,SET SIGN 016021 4763 JMS I ABSOL2 016022 3034 FGO2, DCA T3 /INITIALIZE DEZ EXP 016023 1044 TAD EXP /IS EXP 0-4 ? 016024 7510 SPA 016025 5240 JMP FGO3 /TOO SMALL: MULT BY 10 016026 7440 SZA 016027 1352 TAD M4 016030 7750 SPA SNA CLA 016031 5245 JMP FGO4 016032 4407 FINT 016033 4754 FMUL I PPTEN / /10 016034 0000 FEXT 016035 7001 IAC 016036 1034 TAD T3 016037 5222 JMP FGO2 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 80 016040 4407 FGO3, FINT 016041 4762 FMUL I TENPT /*10 016042 0000 FEXT 016043 7040 CMA 016044 5236 JMP .-6 016045 3755 FGO4, DCA I DPT /MULTIPLY BY TWO TO POSITION BIT0 016046 3756 DCA I REPT /CLEAR OVERFLOW WORD 016047 1360 TAD SADR /INIT BUFFER POINTER 016050 3014 DCA FLTXR 016051 1044 TAD EXP /COMPUTE BITS IN 1ST DIGIT 016052 7140 CMA CLL 016053 3364 DCA OUTDG /TEMP COUNT 016054 1116 TAD DIGITS /SETUP COUNT OF TOTAL OUTPUT 016055 7040 CMA 016056 3044 DCA EXP 016057 4527 JMS I DOUBLE /ROTATE OUT THE 1ST 4 BITS 016060 2364 ISZ OUTDG 016061 5257 JMP .-2 016062 1756 TAD I REPT /TEST FOR 10-15,0,1-9 016063 7450 SNA 016064 5302 JMP FGO5 /IGNORE 1ST ZERO 016065 1353 TAD FM12 016066 7710 SPA CLA 016067 5276 JMP .+7 /0-9 016070 7001 IAC 016071 3414 DCA I FLTXR /OUTPUT A 1 016072 2044 ISZ EXP /COUNT THE DIGIT 016073 1353 TAD FM12 /CORRECT REMAINDER 016074 2034 ISZ T3 /BUMP DECIMAL EXP 016075 7000 NOP 016076 1756 TAD I REPT /COMPUTE RESULTANT OR SECOND DIGIT 016077 2034 ISZ T3 016100 7000 NOP 016101 7410 SKP 016102 4757 FGO5, JMS I M10PT /IE. .672X10=6+.72.. ETC. 016103 3414 DCA I FLTXR 016104 2044 ISZ EXP /ALL DIGITS OUTPUT?? 016105 5302 JMP .-3 /NO:CONTINUE 016106 1360 TAD SADR 016107 3014 DCA FLTXR /RESET BUFFER POINTER 016110 4761 JMS I ROUND /OUTPUT MANTISSA 016111 5617 JMP I FLOUTP /FIXED POINT DONE 016112 1347 TAD CHRT /PRINT "E" 016113 4553 PRINTC DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 81 /OUTPUT THE EXPONENT 016114 1777 TAD I (BUFFER 016115 7640 SZA CLA /IF #=0 KEEP EXP=0 016116 7240 CLA CMA 016117 1034 TAD T3 /TAKE ABSOLUTE VALUE OF EXPONENT 016120 7100 CLL 016121 7510 SPA 016122 7061 CIA CML 016123 3045 DCA HORD /SAVE + POWER 016124 7046 CMA RTL /PRINT SIGN 016125 1013 TAD PER /.-3=+ ; .-1=- 016126 4553 PRINTC 016127 1045 TAD HORD 016130 2044 ISZ EXP 016131 1350 TAD M144 016132 7500 SMA 016133 5330 JMP .-3 016134 1351 TAD C144 016135 3045 DCA HORD /SAVE TENS AND UNITS 016136 7040 CMA /OUTPUT HUNDREDS 016137 1044 TAD EXP 016140 7440 SZA 016141 4364 JMS OUTDG 016142 1045 TAD HORD /PRINT TWO DIGITS 016143 4746 JMS I PRNTI 016144 5617 JMP I FLOUTP DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 82 016145 3364 PRNSGN, SGNPRN 016146 2447 PRNTI, PRNT 016147 0305 CHRT, 305 /E 016150 7634 M144, -144 /-100 016151 0144 C144, 0144 /+100 016152 7774 M4, -4 016153 7766 FM12, -12 016154 6273 PPTEN, PTEN /IEI 016155 6515 DPT, DIGIT 016156 6514 REPT, REMAIN /OVERFLOW FROM INTEGER MULTIPLY 016157 6471 M10PT, MULT10 016160 7362 SADR, BUFFER-1 016161 3200 ROUND, TGO /ACTUAL OUTPUT ROUTINE 016162 6267 TENPT, TEN 016163 6306 ABSOL2, ABSOLV 016164 0000 OUTDG, 0 016165 1110 TAD C260 016166 4553 PRINTC 016167 5764 JMP I OUTDG 016170 0000 RESOLV, 0 016171 1050 TAD SIGNF 016172 7710 SPA CLA 016173 4451 JMS I MINSKI 016174 7300 CLA CLL 016175 5770 JMP I RESOLV 016177 7363 6200 PAGE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 83 /FLOATING POINT INPUT 016200 0000 FLINTP, 0 /IF C(AC)=0, USE CHAR 016201 7640 SZA CLA /IF C(AC)#0, GET NEXT 016202 4703 JMS I DINPUT /GET FIRST CHAR 016203 4546 TSTCHR 016204 7540 7540 /-SPACE 016205 7410 SKP 016206 5202 JMP .-4 016207 4677 JMS I DPCVPT /READ FIRST DIGIT GROUP 016210 4546 TSTCHR /ENDED BY PERIOD? 016211 7522 -". 016212 5220 JMP FIGO1 016213 4703 JMS I DINPUT /YES, READ SECOND GROUP 016214 3702 DCA I DPN 016215 4700 JMS I DCONP 016216 1702 TAD I DPN /SAVE NUMBER OF DIGITS IN T3 016217 7041 CMA IAC 016220 3034 FIGO1, DCA T3 /NO 016221 1305 TAD P43 016222 3044 DCA EXP 016223 4701 JMS I RESOL5 016224 4704 JMS I INORM /NORMALIZE FIRST ,THEN 016225 4407 FINT /SAVE NUMBER 016226 6430 FPUT I PT1 016227 0000 FEXT 016230 4546 TSTCHR /"E" READ IN? 016231 7473 -"E 016232 5244 JMP ENDFI+3 /NO 016233 4703 JMS I DINPUT /YES, READ 3RD DIGIT GROUP 016234 4677 JMS I DPCVPT /I.E. CONVERT DECIMAL EXPONENT 016235 4701 JMS I RESOL5 016236 1047 TAD OVER2 016237 1034 TAD T3 /C(SEXP) PLACES TO RIGHT OF LAST DIGIT 016240 3034 DCA T3 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 84 /COMPENSATE FOR DECIMAL EXPONENTS 016241 4407 ENDFI, FINT /RESTORE MANTISSA 016242 0430 FGET I PT1 016243 0000 FEXT 016244 1034 TAD T3 /TEST DECIMAL EXPONENT 016245 7450 SNA 016246 5600 JMP I FLINTP /FINISHED 016247 7700 SMA CLA 016250 5257 JMP FIGO4 016251 4407 FINT /. IS TO THE LEFT: 016252 4273 FMUL PTEN /TIMES .1000 016253 6430 FPUT I PT1 016254 0000 FEXT 016255 7001 IAC 016256 5264 JMP .+6 016257 4407 FIGO4, FINT /. IS TO THE RIGHT: 016260 4267 FMUL TEN /TIMES TEN 016261 6430 FPUT I PT1 016262 0000 FEXT 016263 7040 CMA 016264 1034 TAD T3 016265 3034 DCA T3 016266 5244 JMP ENDFI+3 016267 0004 TEN, 0004 016270 2400 2400 016271 0000 0000 016272 0000 0000 016273 7775 PTEN, 7775 016274 3146 3146 016275 3146 3146 /3147 3-WORD 016276 3150 3150 016277 6400 DPCVPT, DECONV 016300 6427 DCONP, DECON 016301 6170 RESOL5, RESOLV 016302 6516 DPN, DNUMBR 016303 0755 DINPUT, INPUT 016304 7535 INORM, DNORM 016305 0043 P43, 43 016306 0000 ABSOLV, 0 016307 1045 TAD HORD 016310 3050 DCA SIGNF 016311 1045 TAD HORD 016312 7710 SPA CLA 016313 4451 JMS I MINSKI 016314 5706 JMP I ABSOLV DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 85 016315 0000 MINUS2, 0 /NEGATE OPERAND 016316 7300 CLA CLL /TRIPLE PRECISION 016317 1043 TAD OVER1 016320 7041 CMA IAC 016321 3043 DCA OVER1 016322 1042 TAD AC1L 016323 7040 CMA 016324 7430 SZL 016325 7101 IAC CLL 016326 3042 DCA AC1L 016327 1041 TAD AC1H 016330 7040 CMA 016331 7430 SZL 016332 7101 IAC CLL 016333 3041 DCA AC1H 016334 5715 JMP I MINUS2 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 86 016335 0000 XRTD, 0 016336 6221 CDF T 016337 1411 TAD I XRT 016340 6211 CDF P 016341 5735 JMP I XRTD 016342 0000 PCD, 0 016343 6221 CDF T 016344 1422 TAD I PC 016345 6211 CDF P 016346 5742 JMP I PCD 016347 0000 THISD, 0 016350 6221 CDF T 016351 1423 TAD I THISLN 016352 6211 CDF P 016353 5747 JMP I THISD 016354 0000 PT1D, 0 016355 6221 CDF T 016356 1430 TAD I PT1 016357 6211 CDF P 016360 5754 JMP I PT1D 016361 0000 XPUSHJ, 0 016362 7421 MQL 016363 7301 FLD1 016364 6222 CIF T 016365 4766 JMS I .+1 016366 0127 ZPUSHJ 016367 6203 FILER, CIF CDF L 016370 5771 JMP I .+1 016371 0530 FILEST 016372 0000 ENDCOM, 0 /GO TO END OF COMMAND 016373 4552 SORTC 016374 1406 TLIST /; CR. 016375 5772 JMP I ENDCOM 016376 4547 GETC 016377 5373 JMP .-4 6400 PAGE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 87 /DOUBLE PRECISION DEZIMAL BINARY /INPUT AND CONVERSION FOR + OR - XXX.... 016400 0000 DECONV, 0 016401 3046 DCA LORD 016402 3044 DCA EXP /ZERO THE EXP AND 016403 3045 DCA HORD /INITIALIZE FLAC 016404 3047 DCA OVER2 016405 3316 DCA DNUMBR 016406 3050 DCA SIGNF 016407 1121 TAD CHAR /ALLOW KEYBOARD SIGN CHECKS 016410 1265 TAD MPLUS 016411 7450 SNA 016412 5220 JMP .+6 /PLUS SIGN; GET NEXT 016413 1106 TAD M2 /CHECK MINUS SIGN 016414 7640 SZA CLA 016415 5221 JMP .+4 016416 7040 CMA /INIT SIGN CHECK TO POS. 016417 3050 DCA SIGNF 016420 4670 JMS I XINPUT /GET NEXT 016421 1121 TAD CHAR /A SPACE PERHAPS ? 016422 1266 TAD MSPACE 016423 7650 SNA CLA 016424 5220 JMP .-4 016425 4227 JMS DECON 016426 5600 JMP I DECONV DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 88 016427 0000 DECON, 0 016430 1121 TAD CHAR /TEST LEAD. CHAR FOR TERMINATOR 016431 1263 TAD MINE 016432 7650 SNA CLA 016433 5627 JMP I DECON /E 016434 4561 TESTN 016435 5627 JMP I DECON /. 016436 5250 JMP DTST /OTHER 016437 1057 TAD SORTCN /N 016440 3315 DSAVE, DCA DIGIT /YES 016441 4271 JMS MULT10 /REMAIN MUST =0 SINCE OVERFL. IS CHECKED 016442 2316 ISZ DNUMBR /COUNT DIGITS 016443 7640 SZA CLA 016444 4507 ERROR2 /INPUT OVERFL ERROR 016445 0316 316 /MO=MANTISSA OVERFLOW 016446 4670 JMS I XINPUT 016447 5230 JMP DECON+1 /CONTINUE 016450 1121 DTST, TAD CHAR /ALLOW A-Z 016451 1267 TAD MINUSA 016452 7710 SPA CLA 016453 5627 JMP I DECON 016454 1121 TAD CHAR 016455 1264 TAD MINUSZ 016456 7740 SZA SMA CLA 016457 5627 JMP I DECON /USE 6 BITS OF ASCII 016460 1121 TAD CHAR 016461 0100 AND P77 016462 5240 JMP DSAVE 016463 7473 MINE, -305 016464 7446 MINUSZ, -332 016465 7525 MPLUS, -253 016466 7540 MSPACE, -240 016467 7477 MINUSA, -"A 016470 0755 XINPUT, INPUT DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 89 016471 0000 MULT10, 0 /ROUTINE TO MULTIPLY FLAC BY 10 016472 1047 TAD OVER2 016473 3043 DCA OVER1 016474 1046 TAD LORD /DOUBLE PRECISION WORD 016475 3042 DCA AC1L /BY 10(DEZ) 016476 1045 TAD HORD /REMAIN=REMAINDER 016477 3041 DCA AC1H 016500 3314 DCA REMAIN /CLEAR OVERFLOW WORD 016501 4317 JMS MULT2 /CALL SR TO 016502 4317 JMS MULT2 /MULT BY 2 016503 4335 JMS DUBLAD /CALL DOUBLE ADD 016504 4317 JMS MULT2 016505 1315 TAD DIGIT /ADD LAST DIGIT RECEIVED 016506 3043 DCA OVER1 016507 3042 DCA AC1L 016510 3041 DCA AC1H 016511 4335 JMS DUBLAD 016512 1314 TAD REMAIN /EXIT WITH REMAINDER 016513 5671 JMP I MULT10 /IN AC 016514 0000 REMAIN, 0 016515 0000 DIGIT, 0 /STORAGE FOR DIGIT 016516 0000 DNUMBR, 0 /= NUMBER OF DIGITS 016517 0000 MULT2, 0 /MULTIPLY OVER2, LORD, HORD BY TWO 016520 1047 TAD OVER2 016521 7104 CLL RAL /CARRY INSERT BIT IS IN LINK 016522 3047 DCA OVER2 016523 1046 TAD LORD 016524 7004 RAL 016525 3046 DCA LORD 016526 1045 TAD HORD 016527 7004 RAL 016530 3045 DCA HORD 016531 1314 TAD REMAIN 016532 7004 RAL 016533 3314 DCA REMAIN 016534 5717 JMP I MULT2 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 90 016535 0000 DUBLAD, 0 /TRIPLE PRECISION ADDITION 016536 7300 CLA CLL 016537 1047 TAD OVER2 016540 1043 TAD OVER1 016541 3047 DCA OVER2 016542 7004 RAL 016543 1046 TAD LORD 016544 1042 TAD AC1L 016545 3046 DCA LORD 016546 7004 RAL 016547 1045 TAD HORD 016550 1041 TAD AC1H 016551 3045 DCA HORD 016552 7004 RAL 016553 1314 TAD REMAIN 016554 3314 DCA REMAIN 016555 5735 JMP I DUBLAD 016556 0000 DIV1, 0 /SHIFT OPERAND RIGHT 016557 7300 CLA CLL /TRIPLE PRECISION 016560 1041 TAD AC1H 016561 7510 SPA 016562 7120 CLL CML 016563 7010 RAR 016564 3041 DCA AC1H 016565 1042 TAD AC1L 016566 7010 RAR 016567 3042 DCA AC1L 016570 1043 TAD OVER1 016571 7010 RAR 016572 3043 DCA OVER1 016573 2040 ISZ EX1 016574 5756 JMP I DIV1 016575 5756 JMP I DIV1 6600 PAGE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 91 /FLOATING POINT INTERPRETER FOR FOCAL 016600 0000 FPNT, 0 016601 7600 7600 /CLA;REFERENCED 016602 7100 CLL 016603 7000 NOP /DCA OVER1 016604 7000 NOP /DCA OVER2 3-WORD 016605 1600 TAD I FPNT /GET NEXT INSTRUCTION 016606 7450 SNA 016607 5600 JMP I FPNT /FAST EXIT 016610 3263 DCA JUMP 016611 1263 TAD JUMP 016612 0102 AND C200 /GET PAGE BIT 016613 7650 SNA CLA /PAGE ZERO? 016614 5217 JMP .+3 /YES 016615 1201 TAD FPNT+1 /NO 016616 0200 AND FPNT /C(FPNT) 0-4 CONTAINS PAGE BITS 016617 3040 DCA ADDR 016620 1037 TAD P177 /GET 7 BIT ADRESS 016621 0263 AND JUMP 016622 1040 TAD ADDR 016623 3040 DCA ADDR 016624 1264 TAD INDRCT /INDIRECT BIT =1? 016625 0263 AND JUMP 016626 7650 SNA CLA 016627 5232 JMP LOOP01 /NO- GO ON 016630 1440 TAD I ADDR /YES, DEFER W/O AUTO-INDEX 016631 3040 DCA ADDR 016632 2200 LOOP01, ISZ FPNT 016633 7040 CMA 016634 1040 TAD ADDR 016635 3015 DCA FLTXR2 016636 1263 TAD JUMP /GET COMMAND 016637 7106 CLL RTL 016640 7006 RTL 016641 0104 AND P17 /GET BITS 0-2,I.E. OPCODE 016642 7450 SNA 016643 5270 JMP FLGT 016644 1265 TAD TABLE /LOOK UP THE TABLE 016645 3263 DCA JUMP 016646 1663 TAD I JUMP 016647 7450 SNA 016650 5266 JMP FLPT 016651 3263 DCA JUMP 016652 1305 TAD CEX1 /SAVE FLOATING ARGUMENT,UNLESS 'GET' OR 'PUT' 016653 3014 DCA FLTXR 016654 1117 TAD MFLT 016655 3065 DCA CNTR 016656 1415 TAD I FLTXR2 016657 3414 DCA I FLTXR 016660 2065 ISZ CNTR 016661 5256 JMP .-3 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 91-1 016662 5663 JMP I JUMP /GO THERE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 92 016663 0000 JUMP, 0 0040 ADDR=EX1 016664 0400 INDRCT, 0400 016665 7350 TABLE, ITABLE 016666 1304 FLPT, TAD CEXP /EXP TO (ADDR) 016667 5274 JMP .+5 016670 1304 FLGT, TAD CEXP /(ADDR) TO EXP 016671 3015 DCA FLTXR2 016672 7040 CMA 016673 1040 TAD ADDR 016674 3014 DCA FLTXR /SAVE 'FROM' ADRESS 016675 1117 TAD MFLT /3 OR 4 WORDS 016676 3065 DCA CNTR 016677 1414 TAD I FLTXR 016700 3415 DCA I FLTXR2 016701 2065 ISZ CNTR 016702 5277 JMP .-3 016703 5201 JMP FPNT+1 016704 0043 CEXP, EXP-1 016705 0037 CEX1, EX1-1 016706 4767 FLSU, JMS I OPMINS /FSUB = 2, NEGATE THE OPERAND 016707 4772 FLAD, JMS I ALGN /FLAD = 1, FIRST ALIGN EXPONENTS 016710 5201 JMP FPNT+1 /RETURN IF NO ALIGMENT IS POSSIBLE 016711 4774 JMS I RAR2 /TRIPLE PRECISION ADDITION 016712 4773 JMS I RAR1 /SINCE BITS ARE SHIFTED 016713 4775 JMS I TRAD /RIGHT 016714 4771 NORF, JMS I NORM /NORMALIZE THE RESULT 016715 5201 JMP FPNT+1 /HINT: USE 700X FOR FUNCTIONS DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 93 /INTERPRETIVE POWER 016716 1045 FLEX, TAD HORD /ZERO? 016717 7640 SZA CLA 016720 5326 JMP .+6 016721 3044 ZERO, DCA EXP /YES 016722 3045 DCA HORD 016723 3046 DCA LORD 016724 3047 DCA OVER2 016725 5201 JMP FPNT+1 016726 4543 PUSHF /AC TO A + POWER 016727 0044 FLAC 016730 4543 PUSHF /SETUP ARGUMENT (THE EXPONENT) 016731 0040 EX1 016732 4544 POPF 016733 0044 FLAC 016734 4453 JMS I INTEGER /ONLY POSITIVE, INTEGER EXPONENTS 016735 7510 SPA 016736 5343 JMP .+5 /(COULD DIVIDE) 016737 7040 CMA 016740 3263 DCA JUMP /TEMP STORAGE 016741 7000 NOP /DCA OVER1 3-WORD 016742 1045 TAD HORD 016743 7640 SZA CLA 016744 4507 ERROR2 /TOO LARGE OR NEGATIVE EXPONENT 016745 0116 116 /EO=EXPONENT OVERFLOW 016746 4543 PUSHF /INITIALIZE TO ONE 016747 2376 FLTONE 016750 4544 POPF 016751 0044 FLAC 016752 4544 POPF 016753 7363 ITER1 016754 5362 JMP .+6 016755 4543 PUSHF 016756 7363 ITER1 016757 4544 POPF 016760 0040 EX1 016761 4770 JMS I MULT /"MULT" 016762 2263 ISZ JUMP 016763 5355 JMP .-6 016764 5201 JMP FPNT+1 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 94 016765 4770 FLMY, JMS I MULT /MULTIPLY 016766 5201 JMP FPNT+1 016767 6315 OPMINS, MINUS2 016770 7200 MULT, DMULT 016771 7535 NORM, DNORM 016772 7020 ALGN, ALIGN 016773 6556 RAR1, DIV1 016774 7147 RAR2, DIV2 016775 6535 TRAD, DUBLAD 7000 PAGE 017000 0000 ACMINS, 0 /ROUTINE TO COMPLEMENT FLAC - VIA "MINSKI" 017001 7300 CLL CLA 017002 1047 TAD OVER2 /TRIPLE PRECISION NEGATION 017003 7041 CMA IAC /OF FLOATING AC 017004 3047 DCA OVER2 017005 1046 TAD LORD 017006 7040 CMA 017007 7430 SZL 017010 7101 IAC CLL 017011 3046 DCA LORD 017012 1045 TAD HORD 017013 7040 CMA 017014 7430 SZL 017015 7101 IAC CLL 017016 3045 DCA HORD 017017 5600 JMP I ACMINS DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 95 017020 0000 ALIGN, 0 /SUBROUTINE TO ALIGN 017021 1045 TAD HORD /BINARY POINTS 017022 7450 SNA 017023 1046 TAD LORD 017024 7650 SNA CLA /IS MANTISSA ZERO? 017025 5306 JMP NOX1 /YES, RESULT=OPERAND 017026 1041 TAD AC1H /NO, IS OPERAND ZERO? 017027 7450 SNA 017030 1042 TAD AC1L 017031 7450 SNA 017032 1043 TAD OVER1 017033 7650 SNA CLA 017034 5620 JMP I ALIGN /YES, EXIT 017035 1040 TAD EX1 017036 7041 CMA IAC 017037 1044 TAD EXP 017040 7450 SNA /ARE EXPONENTS EQUAL? 017041 5270 JMP ADONE 017042 3200 DCA ACMINS 017043 1200 TAD ACMINS 017044 7500 SMA /NO 017045 7041 CIA /NEGATE AND 017046 3317 DCA AMOUNT /SAVE THE DIFFERENCE 017047 1317 TAD AMOUNT 017050 1336 TAD TEST2 017051 7710 SPA CLA /CAN THE EXPONENTS BE ALIGNED? 017052 5272 JMP NOX /NO, USE LARGER OF THE TWO 017053 1200 TAD ACMINS /YES, SHIFT THE SMALLER 017054 7700 SMA CLA 017055 5262 JMP ASHFT 017056 4347 JMS DIV2 017057 2317 ISZ AMOUNT 017060 5256 JMP .-2 017061 5270 JMP ADONE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 96 017062 7040 ASHFT, CMA 017063 1040 TAD EX1 017064 3040 DCA EX1 017065 4720 JMS I TAG1 017066 2317 ISZ AMOUNT 017067 5265 JMP .-2 017070 2220 ADONE, ISZ ALIGN 017071 5620 JMP I ALIGN 017072 1040 NOX, TAD EX1 /MISSION IMPOSSIBLE! 017073 7700 SMA CLA /CHECK FOR SIGN DIFFERENCE 017074 5301 JMP NOX2 017075 1044 TAD EXP 017076 7700 SMA CLA 017077 5620 JMP I ALIGN /-+ 017100 5303 JMP .+3 /-- 017101 1044 NOX2, TAD EXP 017102 7700 SMA CLA 017103 1200 TAD ACMINS /TEMP STORAGE OF DIFFERENCE, 017104 7740 SMA SZA CLA /-BOTH POSITIVE EXP OR BOTH NEG 017105 5620 JMP I ALIGN /OK (+-) 017106 1040 NOX1, TAD EX1 /USE LARGER 017107 3044 DCA EXP 017110 1041 TAD AC1H 017111 3045 DCA HORD 017112 1042 TAD AC1L 017113 3046 DCA LORD 017114 1043 TAD OVER1 017115 3047 DCA OVER2 017116 5620 JMP I ALIGN 017117 0000 AMOUNT, 0 017120 6556 TAG1, DIV1 017121 0027 P27, 27 017122 6306 ABSOL, ABSOLV 017123 6170 RESOL, RESOLV DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 97 /LEAVE 12 BIT ANSWER IN AC UPON RETURN /LEAVE FLAC AS AN INTEGER 017124 0000 FIX, 0 /VIA (INTEGER) 017125 4722 JMS I ABSOL 017126 1044 TAD EXP /TEST FOR FRACTION 017127 7750 SPA SNA CLA 017130 5343 JMP FIXM /DOUBLE CHECK FOR MINUS ONE 017131 7001 IAC 017132 3043 DCA OVER1 017133 1321 TAD P27 /INIT ALIGNEMENT 017134 3040 DCA EX1 017135 4220 JMS ALIGN /DO THE ALIGNEMENT TO AN INTEGER 017136 0043 TEST2, 0043 /ALREADY DONE; (27) FOR 3-WORD 017137 3047 DCA OVER2 /CLEAR THE FRACTION 017140 4723 JMS I RESOL 017141 1046 TAD LORD /EXIT WITH LOW ORDER RESULT IN AC 017142 5724 JMP I FIX 017143 3044 FIXM, DCA EXP /CLEAR EXPONENT 017144 3045 DCA HORD 017145 3046 DCA LORD 017146 5337 JMP TEST2+1 017147 0000 DIV2, 0 /SHIFT FLAC RIGHT 017150 7300 CLA CLL 017151 1045 TAD HORD 017152 7510 SPA 017153 7020 CML 017154 7010 RAR 017155 3045 DCA HORD 017156 1046 TAD LORD 017157 7010 RAR 017160 3046 DCA LORD 017161 1047 TAD OVER2 017162 7010 RAR 017163 3047 DCA OVER2 017164 2044 ISZ EXP 017165 5747 JMP I DIV2 017166 5747 JMP I DIV2 017167 0000 FLTZER, ZBLOCK 4 017173 0000 FLARG, ZBLOCK 4 7200 PAGE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 98 /(A+B+C)*(D+E+F)=C*F,C*E,B*F,C*D,A*F,B*E,A*E,B*D,A*D 017200 0000 DMULT, 0 /N-PRECISION MULTIPLY WITH 017201 7001 IAC /PRODUCT IN TRIPLE PRECISION 017202 1040 TAD EX1 /ADD EXPONENTS + 1 017203 4321 JMS SIGN /AND DETERMINE SIGN OF RESULT 017204 7710 SPA CLA 017205 4743 JMS I MINI 017206 3275 DCA DATUM-1 /INIT RESULT 017207 3274 DCA DATUM-2 017210 3273 DCA DATUM-3 017211 3272 DCA DATUM-4 017212 1045 TAD A /A*D 017213 3747 SAVE /STORE IN MP2 017214 1041 TAD D /SINGLE PREC MULT 017215 4750 MULTY 017216 0002 2 /ACCUM START IN #2 DATA WORD 017217 1042 TAD E /A*E 017220 4750 MULTY 017221 0003 3 017222 1046 TAD B /B*D 017223 3747 SAVE 017224 1041 TAD D 017225 4750 MULTY 017226 0003 3 017227 1042 TAD E /B*E 017230 4750 MULTY 017231 0004 4 017232 3271 DCA DATUM-5 /JMP DMDONE 3-WORD 017233 3270 DCA DATUM-6 017234 1043 TAD F /A*F 017235 3747 SAVE 017236 1045 TAD A 017237 4750 MULTY 017240 0004 4 017241 1046 TAD B /B*F 017242 4750 MULTY 017243 0005 5 017244 1047 TAD C /C*D 017245 3747 SAVE 017246 1041 TAD D 017247 4750 MULTY 017250 0004 4 017251 1042 TAD E /C*E 017252 4750 MULTY 017253 0005 5 017254 1043 TAD F /C*F 017255 4750 MULTY 017256 0006 6 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 99 017257 1275 DMDONE, TAD DATUM-1 /COPY RESULT 017260 3045 DCA HORD 017261 1274 TAD DATUM-2 017262 3046 DCA LORD 017263 1273 TAD DATUM-3 017264 3047 DCA OVER2 017265 4275 JMS MULDIV 017266 7000 NOP /DCA OVER2 3-WORD 017267 5600 JMP I DMULT 7276 DATUM=.+6 /INTERMEDIATE STORAGE /#6-LOW ORDER /#5 /#4 /#3 /#2 /#1-HIGH ORDER 7275 *DATUM-1 017275 0000 MULDIV, 0 /TERMINATE MULTIPLY AND DIVIDE 017276 2050 ISZ SIGNF /CORRECT FOR SIGN 017277 4451 JMS I MINSKI 017300 4745 JMS I NORMF /SHIFT LEFT 017301 7000 NOP /ISZ OVER2 3-WORD 017302 5675 JMP I MULDIV 017303 1041 FLDV, TAD AC1H /4:DIVIDE 017304 7650 SNA CLA 017305 4507 ERROR2 /DIVISION BY ZERO 017306 0070 70 /DI=DIV 017307 1040 TAD EX1 /SUBTRACT EXPONENTS+1 017310 7041 CMA IAC 017311 7001 IAC 017312 4321 JMS SIGN /SET UP SIGNS 017313 7700 SMA CLA 017314 4743 JMS I MINI /NEGATE DIVISOR 017315 4746 JMS I DIVIDE /DIVIDE 017316 4275 JMS MULDIV 017317 5720 JMP I .+1 017320 6601 FPNT+1 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 100 /THIS SUBROUTINE PREPARES MULTIPLY AND DIVIDE /FOR ANY COMBINATION OF SIGNED ARGUMENTS AND FOR ZERO /THE RESULT OF EITHER IS ZERO IF FLAC = 0 /RESULT OF MULTIPLY IS ZERO IF EITHER IS ZERO; /DIVISION BY ZERO IS CHECKED BERFORE THIS /ROUTINE IS CALLED /THE CALLING AC CONTAINS AN UPDATE VALUE FOR THE /EXPONENT, THE RETURNING AC CONTAINS THE SIGN OF /THE ARGUMENT FOR FURTHER TESTING BY EACH ROUTINE. 017321 0000 SIGN, 0 /TEST AND SAVE SIGN OF RESULT 017322 1044 TAD EXP /COMPUTE NEW EXP FOR MUL-DIV. 017323 3044 DCA EXP 017324 7130 CLL CML RAR /LOAD 4000 TO XOR THE SIGN BITS 017325 0045 AND HORD 017326 1041 TAD AC1H 017327 7700 SMA CLA /RESULT MAY BE ZERO 017330 7040 CMA 017331 3050 DCA SIGNF /+=-1;-=0 017332 1045 TAD HORD 017333 7450 SNA 017334 5744 JMP I REVIT /ANSWER IS ZERO 017335 7710 SPA CLA /TAKE ABSOLUTE VALUE OF FLAC 017336 4451 JMS I MINSKI 017337 1041 TAD AC1H 017340 7450 SNA /RESULT OF EITHER MAY BE ZERO 017341 5744 JMP I REVIT 017342 5721 JMP I SIGN 017343 6315 MINI, MINUS2 017344 6721 REVIT, ZERO 017345 7535 NORMF, DNORM 017346 7461 DIVIDE, DUBDIV 3747 SAVE=DCA I . 017347 7456 MP2 4750 MULTY=JMS I . 017350 7400 MP4 0045 A=HORD 0046 B=LORD 0047 C=OVER2 0041 D=AC1H 0042 E=AC1L 0043 F=OVER1 DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 101 7350 ITABLE=.-1 017351 6707 FLAD 017352 6706 FLSU 017353 7303 FLDV 017354 6765 FLMY 017355 6716 FLEX 017356 0000 0000 017357 6714 NORF 017360 4453 XINTEG, JMS I INTEGE 017361 7421 MQL /PRESERVE AC OVER POPJ 017362 5541 POPJ 7363 BUFFER=. 017363 0000 ITER1, ZBLOCK 13 7400 PAGE 017400 0000 MP4, 0 /SINGLE PREC,UNSIGNED "MULTY" 017401 7450 SNA 017402 5600 JMP I MP4 /NO RESULT ADDED 017403 3254 DCA MP1 017404 3253 DCA MP5 017405 1257 TAD THIR 017406 3255 DCA MP3 017407 7100 CLL DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 102 017410 1254 MP6, TAD MP1 017411 7010 RAR 017412 3254 DCA MP1 017413 1253 TAD MP5 017414 7420 SNL 017415 5220 JMP .+3 017416 7100 CLL 017417 1256 TAD MP2 017420 7010 RAR 017421 3253 DCA MP5 /SAVE HI ORDER 017422 2255 ISZ MP3 017423 5210 JMP MP6 017424 1254 TAD MP1 /CORRECT LO ORDER 017425 7010 RAR 017426 3255 DCA MP3 017427 1600 TAD I MP4 /PICKUP SCALE FACT. 017430 7041 CIA 017431 1252 TAD DATUMA 017432 3254 DCA MP1 017433 1255 TAD MP3 /LO ORDER 017434 7100 CLL 017435 1654 TAD I MP1 /ACCUMULATE 017436 3654 DCA I MP1 017437 2254 ISZ MP1 017440 7004 RAL 017441 1253 TAD MP5 017442 1654 TAD I MP1 017443 3654 DCA I MP1 017444 7420 SNL 017445 5600 JMP I MP4 /NO CARRY 017446 2254 ISZ MP1 017447 2654 ISZ I MP1 017450 5600 JMP I MP4 017451 5246 JMP .-3 /CARRY AGAIN 017452 7276 DATUMA, DATUM 017453 0000 MP5, 0 /PRODUCT 017454 0000 MP1, 0 /MULTIPLIER 017455 0000 MP3, 0 017456 0000 MP2, 0 /MULTIPLICAND 017457 7764 THIR, -14 /12 BITS 017460 7735 MIF, -43 /-27 3-WORD DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 103 017461 0000 DUBDIV, 0 /2 OR 3 PRECISION DIVIDE 017462 3200 DCA MP4 017463 3254 DCA MP1 017464 1260 TAD MIF /INIT BIT COUNTER 017465 3255 DCA MP3 017466 7410 SKP 017467 4527 DV3, JMS I DOUBLE /SHIFT FLAC LEFT 017470 7100 CLL 017471 1043 TAD OVER1 /----FROM HERE 4-WORD 017472 1047 TAD OVER2 017473 3253 DCA MP5 017474 7004 RAL 017475 1042 TAD AC1L /COMBINE ONE POSITION AND 017476 1046 TAD LORD 017477 3256 DCA MP2 /SAVE RESULT 017500 7004 RAL 017501 1045 TAD HORD /ADD OVERFLOW 017502 1041 TAD AC1H 017503 7420 SNL /SKIP IF OVERFLOW 017504 5312 JMP .+6 017505 3045 DCA HORD /UPDATE FLAC 017506 1253 TAD MP5 017507 3047 DCA OVER2 017510 1256 TAD MP2 017511 3046 DCA LORD 017512 7200 CLA /CLEAR ACCUMULATOR 017513 1254 TAD MP1 /SAVE OVERFLOW BITS CIRCULARLY 017514 7004 RAL 017515 3254 DCA MP1 017516 1200 TAD MP4 017517 7004 RAL 017520 3200 DCA MP4 017521 1335 TAD DNORM 017522 7004 RAL /EXTRA FOR 4-WORD 017523 3335 DCA DNORM 017524 2255 ISZ MP3 /TEST FOR END OF DIVIDE 017525 5267 JMP DV3 017526 1335 TAD DNORM 017527 3045 DCA HORD 017530 1200 TAD MP4 017531 3046 DCA LORD 017532 1254 TAD MP1 017533 3047 DCA OVER2 017534 5661 JMP I DUBDIV DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 104 017535 0000 DNORM, 0 /SUB TO NORMALIZE 017536 4775 JMS I ABSOL3 017537 4365 JMS TEST4 017540 1045 TAD HORD 017541 7450 SNA /IS MANT.=0? 017542 1047 TAD OVER2 017543 7450 SNA 017544 1046 TAD LORD 017545 7650 SNA CLA 017546 5363 JMP EXIT3 017547 1045 TAD HORD 017550 7104 RAL CLL 017551 7710 SPA CLA /WILL SHIFT TOO FAR? 017552 5360 JMP .+6 017553 4527 JMS I DOUBLE 017554 7140 CMA CLL 017555 1044 TAD EXP 017556 3044 DCA EXP 017557 5347 JMP .-10 017560 4776 JMS I RESOL3 017561 4365 JMS TEST4 /DON'T LEAVE 4000 017562 5735 JMP I DNORM 017563 3044 EXIT3, DCA EXP 017564 5735 JMP I DNORM 017565 0000 TEST4, 0 /TEST FOR 4000 017566 1045 TAD HORD 017567 7510 SPA 017570 7041 CIA 017571 7710 SPA CLA 017572 4774 JMS I XRAR2 /SHIFT BACK 017573 5765 JMP I TEST4 017574 7147 XRAR2, DIV2 017575 6306 ABSOL3, ABSOLV 017576 6170 RESOL3, RESOLV 7600 PAGE DPF FCARIT AND FPP PAL8-V50X 09-JUL-88 PAGE 105 IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 106 /****** STORAGE ALLOCATION MAP ****** /***** ***** /* 200 START,OCLOSE,NOCHAR,OSETUP /* 400 OOPEN,ICHAR,FILEST,EXITOS /* 600 IOPEN,POP,NAMEVL,XABS,XSGN,XOS8 /* 1000 NAME,GTMON,DISMISS /* 1200 HANDAD,COMPARE,LOADER,IOWAIT /* 1400 SAVPR,ENDLOD,OROI /* 1600 LOWLIB,LOADS,GOSUB,RETOUR,FILSEC /* 2000 OPEN,BUMP,XIN,EXIT,MORE /* 2200 XCOM,CORITE,CCLOSE /* 2400 COHNDL,ARRAY,LOWOUT,COCLR /* 2600 XIDLE,XOUT,ERROL /* 3000 ERROL,LOWIN,TERMNL 3200 COMBUF=3200 5200 OUTBUF=5200 /ALSO INIT ##SEE BELOW## 5600 INBUFF=5600 /* 6200 OUTPUT HANDLER /* 6600 INPUT HANDLER /* 7200 LIBRARY AND COMMON HANDLER /***** ***** /************************************ /***** COMMAND DECODER INIT ***** /* /* 3200 APPEN /* 3600 MONTHS /* 36XX DEVICES /* 4200 CDTBL /* 4400 USRTBL /* 4600 SETUP 1 /* 5000 SETUP 2 /* 5200 SETUP 3 /* 5400 SETUP 4 /* 5600 SETUP SUBS /* 6000 POPS PAGE /* 6200 HEADER PAGE /* ---- REST OVERLAYS-PATCHES /* 7200 ALWAYS RESERVED /***** ***** /************************************ IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 107 0000 FIELD 0 0001 *1 000001 6232 CIF 30 /INTERRUPT? SERVICE ROUTINE 000002 5001 JMP 1 /FOR SYMBIONT 000003 7777 PAUS, -1 000004 7670 LINLEN, -110 000005 7670 PAGLEN, -110 000006 0000 CHRCNT, 0 000007 0000 LINCNT, 0 /AUTO-INDEX REGISTERS 000010 0000 AUTO1, 0 /GENERAL 000011 0000 AUTO2, 0 /COMPARE 000012 0000 AUTO3, 0 /COMPARE 000013 0000 INFLG, 0 /FILE INPUT:1,TTY:0,EOF:-1 000014 0000 INECH, 0 /INPUT ECHO:0,NO ECHO:-1 000015 0000 OUTFLG, 0 /FILE OUTPUT:1,TTY:0 000016 0000 OUTECH, 0 /OUTPUT ECHO:0,NO ECHO:-1 000017 0000 ERRCOD, 0 000020 0000 XCNTR, 0 /GENERAL COUNTER- 000021 7700 USR, 7700 /POINTER TO MONITOR (200 IF USR IN) 000022 0000 NAMLOC, ZBLOCK 3 /USED BY NAME 000025 0000 EXTENS, 0 /"FC", "FD", OR "FN" 000026 0000 NEWDEV, ZBLOCK 2 /USED BY NAME 000030 0000 TEM7, 0 000031 0000 ATEM, 0 /KEEP HERE : TPOPF NEWDEV /DEFINE LOWER FIELD INSTRUCTIONS . . . 4432 DRONE=JMS I . 000032 2600 XIDLE 4433 TSORTJ=JMS I . 000033 1130 SORTB 4434 TINTEG=JMS I . 000034 0437 MINTEG 4435 ERROR1=JMS I . 000035 2735 ERROL 4436 TPOPA=JMS I . 000036 0630 MPOPA 4437 TPUSHA=JMS I . 000037 0636 MPUSHA 4440 TPUSHF=JMS I . 000040 0644 MPUSHF 4441 TPOPF=JMS I . 000041 0652 MPOPF 4442 TPUSHJ=JMS I . 000042 0660 MPUSHJ 5443 TPOPJ=JMP I . 000043 0666 MPOPJ IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 108 000044 0000 ECHFLG, 0 /-1:NO ECHO 000045 0000 OPNFLG, 0 /OOPEN:-1;OCLOSE:0 000046 0000 IPNFLG, 0 /IOPEN:-1;EOF:0 000047 0000 OUTINH, 0 /NOT LAST BLK:0,LAST BLK:1 000050 0000 DEVHLD, 0 /OOPEN:DEV. NO. FOR CLOSE 000051 0000 FILEN, 0 /SPECIFIED FILE LENGTH [] 000052 0000 FLNGTH, 0 /SET BY OPEN 000053 0000 STBLK, 0 /SET BY OPEN 000054 0000 DEVNO, 0 /SET BY HANDAD 000055 0000 LIBFIL, 0 /START BLK OF SAVED PROG;UNSAVED:0 000056 0000 LIBBLK, 0 /FOR DEVICE NAME 000057 0000 0 000060 7200 7200 /LOAD POINT 000061 0000 0 /FOR DEVICE # 000062 0000 LIBHND, 0 /HANDLER ENTRY 000063 0000 INBLK, 0 000064 0000 0 000065 6600 6600 000066 0000 0 000067 0000 INHND, 0 000070 0000 OUTBLK, 0 000071 0000 0 000072 6200 6200 000073 0000 0 000074 0000 OUTHND, 0 000075 4435 DERR, ERROR1 /DEVICE ERROR 000076 0064 64 /DE=DEV.ERR. 000077 0000 CHARL, 0 000100 0121 DCHAR, CHAR 000101 0000 CLNGTH, 0 /SET BY COMMON 000102 0000 COMFLG, 0 /1:WRITE;0:READ 000103 0000 SETBLK, 0 /THE RELATIVE BLOCK IN USE 000104 0000 THSBLK, 0 /ASKED FOR BLOCK 000105 0001 COWRIT, 1 /WRITE:1 READ:0 000106 0000 TELSW, 0 000107 0000 GOSWIT, 0 000110 0000 MONA, 0 000111 0000 LISA, 0 000112 0000 YEAR, 0 000113 0000 INBUF, 0 000114 0000 DEPTH, 0 000115 2701 DXOUT, XOUT 000116 0212 LF, 212 /RELOC PROBLEMS 000117 0003 MECH, 3 /MULTI8 ECHO SWITCH 000120 7777 WAIT, -1 /WAIT COUNTER 0200 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 109 /OS/8 FILE ROUTINES /CHAIN WITH AC=0 FOR PROCEED,1:START,2:GOSUB,3:GOTO,4:WRITE 000200 7201 MAINTR, CLA IAC /MAIN ENTRY-POINT 000201 5617 CHENTR, JMP I STRTSW /CHAIN ENTRY-POINT - - 000202 4440 TPUSHF /OR 'DCA STRTSW' AFTER INIT 000203 0370 MONHUK /INSTALL CTRL.C HOOK 000204 4441 TPOPF 000205 7600 7600 000206 3106 DCA TELSW /ALLOW TTY: TO START 000207 7240 CLA CMA 000210 1217 TAD STRTSW 000211 7650 SNA CLA 000212 5616 JMP I AAMESG /GO START DIRECT MODE 000213 1217 TAD STRTSW 000214 3107 CONTIN, DCA GOSWIT /GO BACK TO 'PROC':MAIN FLOW 000215 5577 JMP I [EXITOS 000216 2744 AAMESG, RESTRT 000217 4600 STRTSW, SETUP 000220 0000 OCLOSE, 0 /CLOSE THE OPEN OUTPUT FILE 000221 1045 TAD OPNFLG 000222 7650 SNA CLA /DON'T BOTHER IF IT ISN'T OPEN 000223 5620 JMP I OCLOSE 000224 3045 DCA OPNFLG /MUST BE HERE! 000225 3047 DCA OUTINH /WE CAN CLOSE THE LAST BLK 000226 1176 TAD [232 /WRITE '^Z' 000227 4575 JMS I [NOCHAR 000230 1337 TAD OPTR1 /PAD BUFFER WITH ZEROS 000231 1377 TAD (-OUTBUF /(AND WRITE IT OUT) 000232 7640 SZA CLA 000233 5227 JMP .-4 000234 4574 JMS I [GTMON 000235 1050 TAD DEVHLD /SAVED DEVICE # 000236 6212 CIF 10 000237 4421 JMS I USR 000240 0004 4 /CLOSE 000241 0524 ONMTMP /POINTER TO SAVED NAME 000242 0000 BLKCNT, 0 /FILE LENGTH; ZEROED BY OOPEN 000243 5075 JMP DERR /HUH? 000244 3015 DCA OUTFLG /RESTORE TELETYPE OUTPUT ROUTINE 000245 5620 JMP I OCLOSE /DO WHATEVER ELSE NEEDS TO BE DONE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 110 /OS/8 3/2 BUFFERED CHARACTER OUTPUT 000246 0000 NOCHAR, 0 /ENTER WITH 2XX 000247 2307 ISZ O3 /WHICH CHAR OF THREE?;-3 INITIALLY 000250 5304 JMP O2 /STRAIGHT PACKING 000251 4307 JMS RT /HALF WORD PACKING - PACK FIRST HALF 000252 1031 TAD ATEM /GET SAVED ARG 000253 4307 JMS RT /PACK SECOND HALF 000254 7346 CLA CLL CMA RTL /RESET 3-WAY SWITCH 000255 3307 DCA O3 000256 2342 ISZ OCHCT /BUFFER CAN ONLY BE FILLED 000257 5646 JMP I NOCHAR / WITH 3RD CHAR OF 3 000260 4573 JMS I [PUTDEV /TELL USR THIS HANDLER'S IN 000261 0073 OUTHND-1/POINTER TO DEVICE # AND ENTRY 000262 1047 TAD OUTINH /LAST BLOCK? 000263 7640 SZA CLA 000264 5321 JMP OOVER /YES, CLOSE IN EXTREMIS 000265 4474 JMS I OUTHND /WRITE ONE BLOCK BUFFER 000266 4200 4200 000267 5200 OUTBUF 000270 0000 OBLK, 0 /SET BY OOPEN 000271 5075 JMP DERR /DEVICE ERROR 000272 2270 ISZ OBLK /BUMP OUTPUT BLOCK 000273 2242 ISZ BLKCNT /AND COUNT OF BLOCKS SO FAR 000274 7300 CLA CLL 000275 1341 TAD OLNGTH /-MAXIMUM ALLOWABLE LENGTH+1 000276 1242 TAD BLKCNT /LENGTH SO FAR 000277 7630 SZL CLA /HAS HE GONE TOO FAR? 000300 2047 ISZ OUTINH /YES;MUST CLOSE BEFORE NEXT END 000301 1047 TAD OUTINH /ONE WORD LESS IN NEXT BLOCK 000302 4325 JMS OSETUP /RESET POINTERS FOR NEXT BUFFER 000303 5646 JMP I NOCHAR 000304 3737 O2, DCA I OPTR1 /NORMAL PACKING IS EASY! 000305 2337 ISZ OPTR1 /BUMP POINTER 000306 5646 JMP I NOCHAR 0307 O3=. /WHY NOT? 000307 0000 RT, 0 /HALF-WORD PACK ROUTINE 000310 7106 CLL RTL 000311 7006 RTL 000312 3031 DCA ATEM /SAVE FOR SECOND HALF 000313 1031 TAD ATEM 000314 0172 AND [7400 000315 1740 TAD I OPTR2 /ADD IN CHARACTER IN RIGHT HALF 000316 3740 DCA I OPTR2 /PACK IT 000317 2340 ISZ OPTR2 /BUMP POINTER AGAIN 000320 5707 JMP I RT IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 111 000321 7240 OOVER, CLA CMA /THERE IS JUST ROOM FOR CTRL.Z 000322 3342 DCA OCHCT /LET CLOSE WRITE IT FROM ERROR 000323 4435 ERROR1 000324 0345 345 /OF=OUTPUT FULL 000325 0000 OSETUP, 0 /RESET ALL THE POINTERS 000326 1171 TAD [7600 /THIS IS CHANGED TO -177 000327 3342 DCA OCHCT / FOR LAST BLOCK 000330 1267 TAD OBLK-1 000331 3337 DCA OPTR1 000332 1267 TAD OBLK-1 000333 3340 DCA OPTR2 000334 7346 CLA CLL CMA RTL 000335 3307 DCA O3 000336 5725 JMP I OSETUP 000337 0000 OPTR1, 0 000340 0000 OPTR2, 0 000341 0000 OLNGTH, 0 /SET BY OOPEN 000342 0000 OCHCT, 0 000343 0560 COMPO, SAVER 000344 1617 FETCHER 000345 1615 CHAINER 000346 2043 BUMP 000347 1710 GOSUB 000350 1735 RETOUR 000351 2114 LEXIT 000352 1332 LOADER 000353 0617 FOCTXT, FILENAME FOCAL.TM /USED BY GOSUB 000354 0301 000355 1400 000356 2415 000357 2424 TTYTXT, DEVICE TTY 000360 3100 000361 0671 NAMGO, NAMEVL 000362 1060 PERD 000363 1101 ECHCHK 000364 1071 CHANEL 000365 1075 RESTOR 000366 1136 NAMLEN 000367 1017 NAMEC 000370 6203 MONHUK, CIF CDF L 000371 5602 5602 /'JMP I .+1' 000372 2110 MEXIT 000373 0000 CNMTMP, ZBLOCK 4 000377 2600 0400 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 112 000400 1170 OOPEN, TAD [ORST /RESTORE ADRESS 000401 4567 JMS I [OPEN /CALL USR, HANDLER; ENTER FILE 000402 0067 YINT, OUTBLK-1/OUTPUT HANDLER BLOCK 000403 0003 3 /MONITOR 'ENTER' CODE 000404 5233 JMP TTYOUT /'OPEN OUTPUT TTY:' 000405 5777 JMP I (OCLCHK /SEE IF FILE OPEN 000406 4440 TPUSHF /SAVE NAME AND EXTENSION 000407 0022 NAMLOC 000410 4441 TPOPF 000411 0524 ONMTMP 000412 1053 TAD STBLK /STARTING BLOCK 000413 3776 DCA I (OBLK /IN NOCHAR 000414 1052 TAD FLNGTH /-MAXIMUM ALLOWABLE LENGTH 000415 7101 CLL IAC /CHECK IF ONE BL0CK LONG 000416 3775 DCA I (OLNGTH /IN NOCHAR (+1) 000417 7004 RAL /IF ONE LONG, LINK SET 000420 3047 DCA OUTINH /SEND OUT ^Z AT END OF FIRST BUFF 000421 1047 TAD OUTINH /ADJUST CHAR.CNT. 000422 4774 JMS I (OSETUP /SET UP PACKING POINTERS 000423 7340 CLA CLL CMA /THERE'S A FILE OPEN! 000424 3045 DCA OPNFLG 000425 1054 TAD DEVNO /SAVE FOR CLOSE 000426 3050 DCA DEVHLD 000427 3773 DCA I (BLKCNT /DITTO 000430 1045 ORST, TAD OPNFLG /ENTRY FOR 'OPEN RESTORE OUTPUT' 000431 7640 SZA CLA /IF 'OPEN OUTPUT', FLAG IS SET 000432 7201 CLA IAC /SET OUTPUT TO NOCHAR 000433 3015 TTYOUT, DCA OUTFLG /SET OUTPUT TO TTY (INTERRUPT) 000434 1044 TAD ECHFLG 000435 3016 DCA OUTECH /SET OUTPUT ECHO 000436 5566 JMP I [CONTIN /FINISH THE LINE 000437 0000 MINTEG, 0 /INTEGER FAKE 000440 6211 CDF P 000441 4442 TPUSHJ 000442 7360 XINTEG 000443 7501 MQA /RESTORE AC OVER POPJ 000444 5637 JMP I MINTEG IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 113 000445 0000 ICHAR, 0 /GET A CHARACTER FROM A FILE 000446 7320 CLA CLL CML /MAKE SURE-SET LINK FOR KEY BIT 000447 2323 ISZ INCHT /NEED ANOTHER BUFFER?;-1 INITIALLY 000450 5705 JMP I RDPTR /NO, UNPACK THE CHARACTER 000451 4467 JMS I INHND /YES, GO GET IT 000452 0200 0200 000453 5600 INBUFF 000454 0000 IBLK, 0 /SET BY IOPEN 000455 7700 SMA CLA /ONLY BOTHER WITH FATAL ERRORS 000456 7610 SKP CLA /REFERENCED! 000457 5075 JMP DERR /WE'VE GOT ONE 000460 4565 JMS I [DISMIS 000461 2254 ISZ IBLK /BUMP TO NEXT BLOCK 000462 1253 TAD IBLK-1 /AND RESTORE POINTERS 000463 3322 DCA IPNTR 000464 7240 CLA CMA /-1 FOR FIRST TIME ROUND 000465 1164 TAD [-600 000466 3323 DCA INCHT 000467 4305 ICHARL, JMS RDPTR /FIRST TIME AND KEY IN POS. 0 000470 7006 RTL 000471 7006 RTL 000472 7510 SPA /KEY IN POS. 0? 000473 5267 JMP ICHARL /YES;READ IN COMBINED WORD 000474 3321 DCA ITEMP /SAVE HALF-WORD AND KEY:POS.8-4-0 000475 1722 TAD I IPNTR /GET FULL WORD 000476 4305 JMS RDPTR 000477 1722 TAD I IPNTR /GET HALF WORD 000500 2322 ISZ IPNTR 000501 0172 AND [7400 /ISOLATE 000502 7104 CLL RAL /MAGIC STEP 000503 1321 TAD ITEMP /ADD IN OTHER HALF? AND KEY 000504 5270 JMP ICHARL+1 /GO SHIFT MORE AND TEST IF FULL 000505 0000 RDPTR, 0 /THIS IS A COROUTINE 000506 0163 AND [177 /ISN'T THAT AMAZING? 000507 7450 SNA /IGNORE NULLS AND PARITY 000510 5246 JMP ICHAR+1 000511 1372 TAD (-32 /END OF FILE? (^Z) 000512 7440 SZA 000513 5317 JMP .+4 /NO 000514 3046 DCA IPNFLG /YES, CLEAR OPEN FILE FLAG 000515 7240 CLA CMA /PREVENT AN 000516 3013 DCA INFLG /'ATTEMPT-TO-READ-PAST-EOF'! 000517 1176 TAD [232 /PASS ^Z TO PROGRAM FOR TESTING 000520 5645 JMP I ICHAR IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 114 000521 0000 ITEMP, 0 000522 0000 IPNTR, 0 000523 0000 INCHT, 0 /SET TO -1 BY IOPEN 000524 0000 ONMTMP, ZBLOCK 4 000530 1371 FILEST, TAD (604 /HERE'S WHERE FILES START! 000531 3025 DCA EXTENSION /SET '.FD' ASSUMED EXTENSION 000532 6211 CDF P 000533 4442 TPUSHJ 000534 0566 TERMER 000535 7501 MQA 000536 6212 CIF P 000537 4433 TSORTJ /GO DO COMMAND 000540 0551 FILIST-1 000541 7772 FILGO-FILIST 000542 4435 ERROR1 /OOPS - BAD 'O' COMMAND 000543 0036 36 /BO=BAD OPEN COMMAND 000544 0600 FILGO, IOPEN 000545 0400 OOPEN 000546 2143 OROI 000547 1367 OCLOSR 000550 2436 ARRAY 000551 2366 CCLOSR 000552 0311 FILIST, "I /INPUT 000553 0317 "O /OUTPUT 000554 0322 "R /RESTORE 000555 0303 "C /CLOSE 000556 0301 "A /ARRAY=COMMON 000557 0324 "T /TERMINATE(COMMON) 000560 4562 SAVER, JMS I [NAME /GET NAME FOR SAVE 000561 4770 JMS I (SAVPR /DO IT 000562 4565 EXITOS, JMS I [DISMIS /NORMAL RETURN FOR OS/8 COMMANDS 000563 1107 TAD GOSWIT 000564 6213 CDF CIF 10 000565 5766 JMP I .+1 000566 2557 LIBRET 000570 1401 000571 0604 000572 7746 000573 0242 000574 0325 000575 0341 000576 0270 000577 2062 0600 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 115 000600 1377 IOPEN, TAD (IRST /RESTORE ADRESS 000601 4567 JMS I [OPEN /CALL GENERAL-PURPOSE SUBROUTINE 000602 0062 INBLK-1 000603 0002 2 /MONITOR 'LOOKUP' 000604 5221 JMP TTYIN /'OPEN INPUT TTY:' 000605 5216 JMP IRST+2 /WHOOPS - FILE NOT FOUND 000606 1053 TAD STBLK /SET POINTERS AND OTHER CRAP 000607 3776 DCA I (IBLK /IN ICHAR 000610 7340 CLA CLL CMA 000611 3046 DCA IPNFLG 000612 7340 CLA CLL CMA 000613 3775 DCA I (INCHT /IN ICHAR 000614 1046 IRST, TAD IPNFLG /'OPEN RESTORE INPUT' COMES HERE 000615 7650 SNA CLA /FLAG IS SET ALREADY IF 'OPEN INPUT' 000616 4435 ERROR1 /NO INPUT FILE TO RESTORE 000617 0330 330 /NI=NO INPUT FILE 000620 7201 CLA IAC /SET I/O POINTERS 000621 3013 TTYIN, DCA INFLG 000622 1044 TAD ECHFLG /AND ECHO MODE 000623 3014 DCA INECH 000624 7325 CLA STL IAC RAL /=3 + ECHO=0/NO ECHO=-1 000625 1014 TAD INECH 000626 3117 DCA MECH /=> MULTI8 ECHO=3/NO ECHO=2 000627 5566 JMP I [CONTIN 7300 FLD0=CLA CLL /PDL SATELLITES;FIELD 0 000630 0000 MPOPA, 0 000631 7421 MQL 000632 7300 FLD0 000633 6222 CIF T 000634 4635 JMS I .+1 000635 0021 ZPOPA 000636 0000 MPUSHA, 0 000637 7421 MQL 000640 7300 FLD0 000641 6222 CIF T 000642 4643 JMS I .+1 000643 0025 ZPUSHA 000644 0000 MPUSHF, 0 000645 7421 MQL 000646 7300 FLD0 000647 6222 CIF T 000650 4651 JMS I .+1 000651 0071 ZPUSHF IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 116 000652 0000 MPOPF, 0 000653 7421 MQL 000654 7300 FLD0 000655 6222 CIF T 000656 4657 JMS I .+1 000657 0112 ZPOPF 000660 0000 MPUSHJ, 0 000661 7421 MQL 000662 7300 FLD0 000663 6222 CIF T 000664 4665 JMS I .+1 000665 0127 ZPUSHJ 000666 6223 MPOPJ, CIF CDF T 000667 5670 JMP I .+1 000670 0150 ZPOPJ /THE FOLLOWING CODE WILL RECOGNIZE FOR EX.L C DATA(X) /AND LOOK FOR DATA99 IF X=99 000671 1774 NAMEVL, TAD I (NAMECT /CHECK NUMBER OF CHARS 000672 1373 TAD (-4 /AT MOST 4 000673 7740 SMA SZA CLA 000674 4435 EVLERR, ERROR1 000675 0135 135 /FN=FILE NAME ERROR 000676 3031 DCA ATEM /CLEAR TEN COUNTER 000677 6211 CDF P /GO TO EVAL 000700 4442 TPUSHJ /'('READY,DUMP ')' 000701 1605 EVAL-1 000702 4434 TINTEG 000703 1372 TAD (-144 /.LT. 100 (DEC) 000704 7430 SZL /NOW WE HAVE X-100 000705 5274 JMP EVLERR 000706 1161 TAD [12 /X-100+ATEM*10 000707 2031 ISZ ATEM 000710 7510 SPA 000711 5306 JMP .-3 000712 7421 MQL /OVERFLOW IS LOW ORDER 000713 1031 TAD ATEM /ATEM IS 10 - HIGH ORDER 000714 7041 CIA /HIGH ORDER - 10 000715 1161 TAD [12 /HIGH ORDER 000716 1160 TAD [60 /6-BIT ASCII 000717 4771 JMS I (NAMSTO 000720 7501 MQA /LOW ORDER AGAIN 000721 1160 TAD [60 000722 4771 JMS I (NAMSTO 000723 5770 JMP I (NAMEC IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 117 000724 6211 XOS8, CDF P /OS8-MULTI8 FUNCTION 000725 6254 6254 /SKIP ON MULTI8 000726 5336 JMP YOS8 /OS8=1 000727 4440 TPUSHF 000730 7167 FLTZER /MULTI8=0 000731 5340 JMP NOS8 000732 6211 XSGN, CDF P /REAL SIGNUM FUNCTION 000733 1767 TAD I (HORD 000734 7650 SNA CLA 000735 5443 TPOPJ /FSGN(0)=0 000736 4440 YOS8, TPUSHF /DF P! 000737 2376 FLTONE 000740 6211 NOS8, CDF P 000741 4441 TPOPF 000742 0044 FLAC 000743 6211 XABS, CDF V /TAKE ABS OF FLAC 000744 1753 TAD I FLARGH 000745 7700 SMA CLA 000746 5443 TPOPJ 000747 6211 CDF P 000750 4442 TPUSHJ 000751 3405 MMINSK 000752 5443 TPOPJ 000753 7174 FLARGH, FLARG+1 000754 7757 DCWBM, 7757 000755 0000 GETDEV, 0 /GET DEVICE TYPE FROM MONITOR TABLE 000756 1354 TAD DCWBM /DCB-1 000757 1054 TAD DEVNO 000760 3230 DCA MPOPA 000761 6211 CDF P 000762 1630 TAD I MPOPA 000763 6201 CDF L 000764 5755 JMP I GETDEV 000767 0045 000770 1017 000771 1037 000772 7634 000773 7774 000774 1133 000775 0523 000776 0454 000777 0614 1000 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 118 /LIBRARY COMMAND PROCESSOR /READ A DEV:FILENAME.EX STRING INTO 'NAMLOC' & 'NEWDEV' 001000 0000 NAME, 0 001001 3335 DCA NAMRET /SETUP RESTORE RETURN 001002 3051 DCA FILEN /SET TO LARGEST EMPTY 001003 4565 JMS I [DISMIS /'GETC' WON'T WITH THE USR IN CORE 001004 1157 TAD [5723 /CODE FOR 'DSK:' 001005 3026 DCA NEWDEV /(DEFAULT DEVICE) 001006 3027 NAME2, DCA NEWDEV+1 001007 3022 DCA NAMLOC /CLEAR NAME AREA 001010 3023 DCA NAMLOC+1 /(DON'T CLEAR ASSUMED EXTENSION) 001011 3024 DCA NAMLOC+2 001012 1156 TAD [NAMLOC /INITIALIZE POINTERS 001013 3331 DCA NMBASE 001014 7240 CLA CMA 001015 3332 DCA PERDSW 001016 3333 NAME3, DCA NAMECT 001017 6211 NAMEC, CDF P 001020 4442 TPUSHJ 001021 2205 MGETC 001022 7340 NAMENC, CLA CLL CMA 001023 3044 DCA ECHFLG /INIT. ECHO FLAG 001024 6212 CIF P 001025 4433 TSORTJ 001026 1322 NAMLST-1 001027 7036 NAMGO-NAMLST 001030 4314 JMS DECODE /MUST BE A-Z, 0-9 001031 5311 JMP NAMOUT /NO!, NOR IN NAMLST:END OF NAME 001032 7430 SZL /RESTORE CHARACTER 001033 1377 TAD (57 001034 7001 IAC /6-BIT ASCII 001035 4237 JMS NAMSTO 001036 5217 JMP NAMEC /CONTINUE LOOP IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 119 001037 0000 NAMSTO, 0 001040 3314 DCA DECODE /TEMPORARY STORAGE 001041 1333 TAD NAMECT /NO MORE THAN 6 CHARACTERS/NAME 001042 1155 TAD [-6 001043 7700 US7700, SMA CLA 001044 5217 JMP NAMEC 001045 1333 TAD NAMECT /BUILD POINTER TO CHARACTER POS 001046 7110 CLL RAR 001047 1331 TAD NMBASE 001050 3334 DCA TT 001051 1314 TAD DECODE /LEFT OR RIGHT HALF? 001052 7420 SNL 001053 7002 BSW /LEFT, SHIFT OVER 001054 1734 TAD I TT /ADD IN OTHER HALF 001055 3734 DCA I TT 001056 2333 ISZ NAMECT /BUMP COUNT 001057 5637 JMP I NAMSTO 001060 1022 PERD, TAD NAMLOC /FOUND A PERIOD IN STRING 001061 7640 SZA CLA 001062 2332 ISZ PERDSW 001063 4435 ERROR1 /DOUBLE PERIODS OR NO FILE NAME 001064 0035 35 /BN=BAD NAME IN FILES 001065 3025 DCA EXTENSION /CLEAR EXTENSION 001066 2331 ISZ NMBASE /FAKE OUT POINTERS 001067 1154 TAD [4 001070 5216 JMP NAME3 001071 1022 CHANEL, TAD NAMLOC /MOVE TO DEVICE AREA 001072 3026 DCA NEWDEV 001073 1023 TAD NAMLOC+1 001074 5206 JMP NAME2 /GET FILENAME 001075 1335 RESTOR, TAD NAMRET /COMES HERE ON '"' 001076 7440 SZA 001077 3200 DCA NAME /CHANGE RETURN IF NON. 0 001100 5217 JMP NAMEC IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 120 001101 6211 ECHCHK, CDF P /MOVE PAST COMMA 001102 4442 TPUSHJ 001103 2205 MGETC 001104 6211 CDF P 001105 4442 TPUSHJ /MOVE TO END KEEP FIRST 001106 0566 TERMER 001107 7501 MQA 001110 1376 TAD (-"E /MUST BE 'E' 001111 7650 NAMOUT, SNA CLA /DECODE 'NO' EXIT IS NON-ZERO 001112 3044 DCA ECHFLG /SET ECHO FLAG 001113 5600 JMP I NAME 001114 0000 DECODE, 0 /CHECK FOR A-Z, 0-9 001115 1077 TAD CHARL /IF YES ISZ RETURN 001116 1375 TAD (-"9-1 001117 7100 CLL 001120 1161 TAD ["9+1-"0 001121 7430 SZL 001122 5327 JMP DCDYES /NUMBER;CHAR-260;L=1 001123 1374 TAD ("0-"Z-1 001124 7120 CLL CML 001125 1373 TAD ("Z-"A+1 001126 7420 SNL 001127 2314 DCDYES, ISZ DECODE /ALPHA;CHAR-301;L=0 001130 5714 JMP I DECODE 001131 0000 NMBASE, 0 001132 0000 PERDSW, 0 001133 0000 NAMECT, 0 001134 0000 TT, 0 001135 0000 NAMRET, 0 IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 121 001136 6211 NAMLEN, CDF P /INDICATE OPT. FILE LENGHT 001137 4442 TPUSHJ 001140 1605 EVAL-1 /GETS NUMBER IN [] 001141 4434 TINTEG 001142 7106 CLL RTL 001143 7006 RTL 001144 0153 AND [7760 001145 3051 DCA FILEN 001146 5217 JMP NAMEC 001147 0000 GTMON, 0 /LOCK THE USR IN CORE /(NOP IF ALREADY IN CORE) 001150 6201 CDF L 001151 6212 CIF P 001152 4421 JMS I USR 001153 0010 10 001154 1152 TAD [200 /SET POINTER FOR LATER CALLS 001155 3021 DCA USR 001156 5747 JMP I GTMON 001157 0000 DISMIS, 0 /IF THE USR IS IN, KICK IT OUT 001160 7300 CLA CLL 001161 6201 CDF L /MAKE SURE 001162 1021 TAD USR /CHECK POINTER TO FIND OUT 001163 7710 SPA CLA 001164 5757 JMP I DISMIS 001165 6212 CIF P 001166 4421 JMS I USR 001167 0011 11 001170 1243 TAD US7700 /RESET POINTER 001171 3021 DCA USR 001172 5757 JMP I DISMIS 001173 0032 001174 7725 001175 7506 001176 7473 001177 0057 1200 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 122 /HANDAD CALL: HANDAD /SLOT /SETS DEVNO; DEVICE NO. IN SLOT; ENTRYPOINT IN SLOT 001200 0000 HANDAD, 0 /LOADS HANDLER INTO PROPER SLOT 001201 1600 TAD I HANDAD /WHICH SLOT? 001202 2200 ISZ HANDAD 001203 3206 DCA SLOT 001204 4300 JMS COMPARE /IF THE HANDLER HAS THE SAME NAME, 001205 7776 -2 /DON'T LOAD IT AGAIN 001206 0000 SLOT, 0 001207 0025 NEWDEV-1 001210 5221 JMP NOTEQ /DIFFERENT NAMES, LOAD NEW HANDLER 001211 2011 ISZ AUTO2 001212 1411 TAD I AUTO2 /(SET BY 'COMPARE') 001213 3054 DCA DEVNO /MOVE DEVICE# (FOR SAVE AND CLOSE) 001214 1011 TAD AUTO2 /POINTS TO DEVICE # 001215 3217 DCA .+2 001216 4573 JMS I [PUTDEV /SO USR KNOWS IT'S IN CORE 001217 0000 0 001220 5600 JMP I HANDAD 001221 2206 NOTEQ, ISZ SLOT /BUMP POINTER TO SAVE NAME 001222 1026 TAD NEWDEV /MOVE NEW DEVICE NAME TO TABLE 001223 3606 DCA I SLOT 001224 2206 ISZ SLOT 001225 1027 TAD NEWDEV+1 001226 3606 DCA I SLOT 001227 2206 ISZ SLOT 001230 4574 JMS I [GTMON 001231 1026 RETRY, TAD NEWDEV /MOVE DEVICE NAME FOR MONITOR CALL 001232 3243 DCA DEVC 001233 1027 TAD NEWDEV+1 001234 3244 DCA DEVC+1 001235 1606 TAD I SLOT /MOVE LOAD POINT 001236 7001 IAC /TWO PAGE HANDLER! 001237 3245 DCA DLOAD 001240 6212 CIF P 001241 4421 JMS I USR /CALL MONITOR (ALREADY IN CORE) 001242 0001 1 /FETCH BY NAME 001243 0000 DEVC, 0 /NAME 001244 0000 0 /RETURNS DEVICE NO. 001245 0000 DLOAD, 0 /RETURNS ENTRY POINT 001246 4435 ERROR1 /DEVICE NOT AVAILABLE 001247 0323 323 /ND=NO DEVICE 001250 7100 CLL IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 123 001251 1245 TAD DLOAD /ENTRY POINT FOR HANDLER 001252 1152 TAD [200 /IF THIS HANDLER IS IN PAGE 7600, 001253 7630 SZL CLA /DON'T CHECK FOR LEGALITY 001254 5267 JMP HANDOK /SYSTEM HANDLER 001255 1245 TAD DLOAD /IF THE HANDLER WAS NOT LOADED 001256 0171 AND [7600 /INTO THE PROPER PAGE, RELOAD IT 001257 7141 CLL CIA 001260 1606 TAD I SLOT /PROPER LOADING ADDRESS 001261 7650 SNA CLA 001262 5267 JMP HANDOK /EVERYTHING'S ALL RIGHT 001263 3245 DCA DLOAD /CLEAR ENTRY POINT 001264 4573 JMS I [PUTDEV /TELL USR THE HANDLER IS NOT 001265 1244 DEVC+1 /IN CORE ANYMORE 001266 5231 JMP RETRY /LOAD IT THIS TIME 001267 2206 HANDOK, ISZ SLOT /BUMP POINTER TO DEVICE # 001270 1244 TAD DEVC+1 /SAVE IT 001271 3606 DCA I SLOT 001272 2206 ISZ SLOT /MOVE TO ENTRY POINT 001273 1245 TAD DLOAD /SAVE ENTRY 001274 3606 DCA I SLOT 001275 1244 TAD DEVC+1 /GET DEVICE # 001276 3054 DCA DEVNO /SAVE IT AND EXIT 001277 5600 JMP I HANDAD 001300 0000 COMPARE,0 /COMPARE TWO BLOCKS 001301 1700 TAD I COMPARE /CALLING SEQUENCE: 001302 2300 ISZ COMPARE /JMS COMPARE 001303 3020 DCA XCNTR / -# OF WORDS TO CHECK 001304 1700 TAD I COMPARE / FIRST-1 001305 2300 ISZ COMPARE / SECOND-1 001306 3011 DCA AUTO2 /RETURN IF NO MATCH 001307 1700 TAD I COMPARE /RETURN IF MATCH 001310 2300 ISZ COMPARE 001311 3012 DCA AUTO3 001312 1411 AGAIN, TAD I AUTO2 /COMPARE TWO WORDS 001313 7041 CIA 001314 1412 TAD I AUTO3 001315 7640 SZA CLA 001316 5700 JMP I COMPARE /NO MATCH 001317 2020 ISZ XCNTR /FINISHED? 001320 5312 JMP AGAIN /NO, CHECK NEXT TWO 001321 2300 ISZ COMPARE /YES, BUMP RETURN POINTER 001322 5700 JMP I COMPARE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 124 001323 0250 NAMLST, "( /SUBSCRIPTED FILE NAMES 001324 0256 ". /EXTENSION 001325 0254 ", /ECHO 001326 0272 ": /DEVICE 001327 0242 "" /RESTORE OLD IN/OUT 001330 0333 "[ /FILE LENGHT SPEC. 001331 0240 " /SPACE: IGNORE /THIS IS FOR CHAINING TO ANOTHER PROGRAM 001332 4551 LOADER, JMS I [OCHK /DON'T FORGET TO CLOSE THE FILES 001333 4562 JMS I [NAME /OR FOR OVERLAYING FOCAL ITSELF 001334 1377 TAD (2326 /EXTENSION "SV" IS FORCED ON 001335 3025 DCA EXTENSION /IT HAS TO BE A SAVE FILE:CHAIN 001336 4550 JMS I [IOWAIT 001337 1156 TAD [NAMLOC /POINTER TO NAME 001340 3347 DCA LOADUS+2 001341 7326 CLA STL RTL /=2 001342 3346 DCA LOADUS+1 001343 7001 IAC /CHAIN EXPECTS IT TO BE ON SYS: 001344 6212 CIF P 001345 4421 LOADUS, JMS I USR 001346 0002 2 /LOOKUP RETURNS FILE START IN ARG2 001347 0022 NAMLOC 001350 0000 0 001351 4435 ERROR1 /USR DID NOT FIND IT 001352 0047 47 /CH=CHAINING ERROR 001353 3056 DCA LIBBLK /KILL LIB HANDLER;CHAIN DOES RESET 001354 7327 CLA IAC STL RTL /OK! CHANGE USR FUNCTION TO CHAIN=6 001355 3346 DCA LOADUS+1 001356 5344 JMP LOADUS-1 /BY-BY!! MIGHT SEE YOU AGAIN 001357 0323 COMLIST,"S /SAVE 001360 0303 "C /CALL 001361 0322 "R /RUN 001362 0304 "D /DELETE 001363 0307 "G /GOSUB 001364 0215 215 /'LIBRARY RETURN' 001365 0305 "E /EXIT 001366 0314 "L /LOAD; CHAIN A PROGRAM 001367 4547 OCLOSR, JMS I [OCLOSE /CLOSE OUTPUT FILE 001370 5566 JMP I [CONTIN 001371 0000 IOWAIT, 0 001372 4432 DRONE 001373 1106 TAD TELSW 001374 7640 SZA CLA 001375 5372 JMP .-3 001376 5771 JMP I IOWAIT 001377 2326 1400 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 125 001400 0000 CODENU, 0 001401 0000 SAVPR, 0 /CALLED BY 'SAVER' AND 'GOSUB' 001402 1156 TAD [NAMLOC /POINTER TO NAME 001403 3273 DCA SAVEPT 001404 6211 CDF P 001405 1777 TAD I (BUFR 001406 3343 DCA BLOCK /SAVE TEMP. PROGRAM LENGTH 001407 6221 CDF T 001410 1146 TAD [LINE0+2 001411 3010 DCA AUTO1 /SET AUTO-INDEX FOR TRNSFR. 001412 1022 TAD NAMLOC 001413 3410 DCA I AUTO1 001414 1023 TAD NAMLOC+1 001415 3410 DCA I AUTO1 /TRANSFER NAME 001416 1024 TAD NAMLOC+2 001417 3410 DCA I AUTO1 001420 1025 TAD EXTENS 001421 7002 BSW 001422 0145 AND [77 001423 1376 TAD (5600 001424 3410 DCA I AUTO1 /TRANSFER .F 001425 1025 TAD EXTENS 001426 0145 AND [77 001427 7002 BSW 001430 3410 DCA I AUTO1 /REST OF EXTENSION: O@ 001431 1110 TAD MONA /GET MONTH NAME 001432 3410 DCA I AUTO1 /SAVE 001433 1111 TAD LISA /SECOND HALF+ "-" 001434 3410 DCA I AUTO1 001435 1112 TAD YEAR 001436 3410 DCA I AUTO1 /SAVE YEAR 001437 1343 TAD BLOCK 001440 3665 DCA I LINPUT /SAVE PROGRAM LENGTH 001441 4574 JMS I [GTMON /GET USR;RESETS DF 001442 4551 JMS I [OCHK /CLOSE OUTPUT FILE, AVOID TROUBLE 001443 4544 JMS I [HANDAD /AND GET HANDLER 001444 0055 LIBBLK-1 001445 1343 TAD BLOCK 001446 0171 AND [7600 /MASK OFF 001447 7110 CLL RAR /CONVERT TO PAGES 001450 3343 DCA BLOCK /FOR HANDLER 001451 1343 TAD BLOCK /ROUND UP TO BLOCKS 001452 1143 TAD [100 001453 0171 AND [7600 001454 7112 CLL RTR 001455 7010 RAR 001456 3342 DCA RECORD /FOR MONITOR 'ENTER':BITS 0-7 IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 126 001457 1054 TAD DEVNO /PREDELETE FILE 001460 6212 CIF 10 001461 4421 JMS I USR 001462 0004 4 001463 0022 NAMLOC 001464 0000 0 001465 0207 LINPUT, LINE0-1 /SKIP ERROR 001466 1342 TAD RECORD /GET DESIRED LENGTH 001467 1054 TAD DEVNO /(SET BY 'HANDAD') 001470 6212 CIF 10 001471 4421 JMS I USR /ENTER OUTPUT FILE 001472 0003 3 001473 0022 SAVEPT, NAMLOC 001474 0000 0 001475 4435 ERROR1 /NO ROOM ON DEVICE 001476 0065 65 /DF=DEVICE FULL 001477 1342 TAD RECORD /SHIFT FOR CLOSING LENGTH - 001500 7112 CLL RTR / - OR '0' 001501 7012 RTR 001502 3310 DCA SAVBLK 001503 1054 TAD DEVNO /CLOSE THE FILE BEFORE WE WRITE IT! 001504 6212 CIF 10 /(SURE, IT'S CHEATING, BUT 001505 4421 JMS I USR /IT SAVES TIME!) 001506 0004 4 /CLOSE 001507 0022 NAMLOC 001510 0000 SAVBLK, 0 /NO. OF BLOCKS 001511 5075 JMP DERR /IMPOSSIBLE ERROR! 001512 1310 TAD SAVBLK /SAVE THIS CRAP TO REMEMBER 001513 7041 CIA /WHERE THIS PROGRAM IS 001514 3337 DCA LIBLEN /IN CASE WE WANT TO GOSUB 001515 1273 TAD SAVEPT 001516 3055 DCA LIBFIL 001517 1026 TAD NEWDEV 001520 3340 DCA LIBDEV 001521 1027 TAD NEWDEV+1 001522 3341 DCA LIBDEV+1 001523 1273 TAD SAVEPT /MOVE STARTING BLOCK FOR WRITE 001524 3333 DCA POINT4 001525 1336 TAD WRFUN /GET FUNCTION WORD 001526 1343 TAD BLOCK /HOW MUCH TO WRITE /=220 READ!! 001527 3331 DCA BLLL 001530 4462 JMS I LIBHND 001531 0000 BLLL, 0 /WRITE (BLOCK) BLOCKS FROM FIELD 2 001532 0200 200 /FROM 200 UP 001533 0000 POINT4, 0 001534 5075 JMP DERR /GO COMPLAIN ABOUT DEVICE 001535 5601 JMP I SAVPR IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 127 001536 4021 WRFUN, 4021 /WRITE IN FIELD 2 FORW 001537 0000 LIBLEN, 0 /SAVED LENGTH 001540 0000 LIBDEV, ZBLOCK 2 001542 0000 RECORD, 0 001543 0000 BLOCK, 0 001544 1026 ENDLOD, TAD NEWDEV /SAVE THIS STUFF SO WE 001545 3340 DCA LIBDEV /KNOW WHERE WE ARE 001546 1027 TAD NEWDEV+1 001547 3341 DCA LIBDEV+1 001550 1053 TAD STBLK 001551 3055 DCA LIBFIL 001552 1052 TAD FLNGTH 001553 3337 DCA LIBLEN 001554 6221 CDF T 001555 1200 TAD CODENU 001556 1775 TAD I (PC0+2 001557 3310 DCA SAVBLK 001560 1775 TAD I (PC0+2 001561 7440 SZA 001562 5371 JMP SAVCIF 001563 1665 TAD I LINPUT 001564 6211 KEYRES, CDF P 001565 3777 DCA I (BUFR 001566 6203 CIF CDF L 001567 5577 JMP I [EXITOS 001570 1234 1234 001571 6222 SAVCIF, CIF T 001572 5710 JMP I SAVBLK 001575 0202 001576 5600 001577 0060 1600 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 128 /ACTUAL LIBRARY PROCESSOR /STARTING WITH COMMAND DECODE: 001600 3107 LOWLIB, DCA GOSWIT 001601 1142 TAD [617 /NEW EXTENSION .FO 001602 3025 DCA EXTENSION 001603 6211 CDF P 001604 4442 TPUSHJ 001605 0566 TERMER 001606 7501 MQA 001607 6212 CIF P 001610 4433 TSORTJ /AND BRANCH TO APPROPRIATE ROUTINE 001611 1356 COMLIST-1 001612 6764 COMPO-COMLIST 001613 4435 LIERR, ERROR1 /SORRY, CHARLIE! 001614 0270 270 /LI=LIBRARY COMMAND ERROR /LOOKUP AND LOAD ROUTINES 001615 2107 CHAINER,ISZ GOSWIT /THESE ALL DO THE SAME THING 001616 2107 GOSUB1, ISZ GOSWIT /AND THEN GO TO DIFFERENT PLACES 001617 2107 FETCHER,ISZ GOSWIT 001620 4567 JMS I [OPEN /CALL THE HANDLER AND LOOKUP FILE 001621 0055 LIBBLK-1 001622 0002 2 001623 5231 JMP .+6 /TTY: NOT A DIRECTORY DEVICE 001624 4435 ERROR1 001625 0337 337 /NP=NO PROGRAM FOUND 001626 4565 JMS I [DISMISS 001627 4541 JMS I [GETDEV /GET DEVICE TYPE 001630 7700 SMA CLA 001631 4435 ERROR1 /NOT A DIRECTORY DEVICE 001632 0063 63 /DD=NOT A DIR. DEV. 001633 6211 CDF P 001634 4442 TPUSHJ 001635 2364 PGETLN /SOME COMMANDS HAVE LINE NUMBERS IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 129 001636 4565 LOADGO, JMS I [DISMISS /ONLY USED BY 'RETOUR' 001637 1053 TAD STBLK /BLOCK TO READ FROM 001640 3305 DCA POINT6 001641 7344 CLA CLL CMA RAL /(=-2) 001642 1107 TAD GOSWIT /IS THIS A GOSUB? 001643 7640 SZA CLA 001644 5252 JMP NOGOSB /NO, SKIP THIS GARBAGE 001645 1077 TAD CHARL /YES, SAVE PROGRAM NAME, ETC. 001646 4437 TPUSHA /PDL NOW CONTAINS: 001647 1140 TAD [215 /CHAR,DEV,FILE LENGTH,START BLOCK 001650 6211 CDF P 001651 3500 DCA I DCHAR 001652 1052 NOGOSB, TAD FLNGTH /COMPUTE FUNCTION WORD 001653 7040 CMA /BLOCKS-1 001654 7002 BSW 001655 7124 CLL CML RAL /SET TO SEARCH FORWARD 001656 3303 DCA LENF1 001657 1052 TAD FLNGTH /NOW CHECK FOR LENGHT 001660 1377 TAD (17 /.LE. 15(10) 001661 7510 SPA 001662 5276 JMP PLERR /READING IN NONSENSE 001663 7640 SZA CLA /IS IT MAX. LENGTH? 001664 1143 TAD [100 /NO: READ ALL 001665 1376 TAD (120 /YES: READ 1 PAGE LESS (SET FIELD) 001666 1303 TAD LENF1 001667 3303 DCA LENF1 /FINAL CONTROL WORD 001670 6221 CDF T 001671 1775 TAD I (PDLXR /BOTTOM OF PDL 001672 7041 CIA 001673 7110 CLL RAR /TEST CTW-(PDL-200)/2 001674 1143 TAD [100 /FOR PAGE 0 001675 1303 TAD LENF1 001676 6201 PLERR, CDF L 001677 7710 SPA CLA 001700 4435 ERROR1 /PROGRAM TOO LONG 001701 0373 373 /PL=PROGRAM LENGTH ERROR 001702 4462 JMS I LIBHND /GET THE PROGRAM 001703 3521 LENF1, 3521 /LARGEST CTW 001704 0200 200 001705 0000 POINT6, 0 001706 5075 JMP DERR 001707 5774 JMP I (ENDLOD /REMARK: THE PDL MAY NOT BE LOWER THAN 7444 FOR / A PROGRAM OF MAXIMAL LENGTH (15 BLKS). IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 130 001710 1055 GOSUB, TAD LIBFIL /CHECK FOR CURRENT PROGRAM 001711 7440 SZA 001712 5326 JMP NOSAVE /NO NEED TO SAVE CORE 001713 4440 TPUSHF /MOVE 'FOCAL.TM' TO NAME AREA 001714 0353 FOCTXT 001715 4441 TPOPF 001716 0022 NAMLOC 001717 1157 TAD [5723 /DEVICE 'DSK' FOR SAVE 001720 3026 DCA NEWDEV 001721 3027 DCA NEWDEV+1 001722 4773 JMS I (SAVPR /SAVE FILE (LEAVE USR IN CORE) 001723 1142 TAD [617 /RESET EXTENSION TO 'FO' 001724 3025 DCA EXTENSION 001725 1055 TAD LIBFIL /STARTING BLOCK 001726 4437 NOSAVE, TPUSHA /'LIBFIL' STILL IN AC 001727 1772 TAD I (LIBLEN 001730 4437 TPUSHA 001731 4440 TPUSHF 001732 1540 LIBDEV 001733 2114 ISZ DEPTH 001734 5216 JMP GOSUB1 001735 7340 RETOUR, STA CLL 001736 1114 TAD DEPTH 001737 3114 DCA DEPTH /KEEP COUNT OF SUBS 001740 7420 SNL 001741 5213 JMP LIERR 001742 4436 TPOPA /GET BACK ALL THE JUNK WE SAVED 001743 6211 CDF 10 /FOR THE LAST GOSUB 001744 3500 DCA I DCHAR /IN-LINE CHARACTER 001745 6201 CDF 001746 4441 TPOPF /DEVICE NAME 001747 0026 NEWDEV 001750 4436 TPOPA /FILE LENGTH 001751 3052 DCA FLNGTH 001752 4436 TPOPA /STARTING BLOCK 001753 3053 DCA STBLK 001754 4544 JMS I [HANDAD /GET THE HANDLER BACK 001755 0055 LIBBLK-1 001756 5236 JMP LOADGO /LOAD THE PROGRAM IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 131 001757 0000 COCLR, 0 /CLEAR COMMON BUFFER 001760 1371 TAD (COMBUF-1 /DON'T TOUCH LINK! 001761 3010 DCA AUTO1 001762 1137 TAD [-2000 001763 3020 DCA XCNTR 001764 3410 DCA I AUTO1 001765 2020 ISZ XCNTR 001766 5364 JMP .-2 001767 5757 JMP I COCLR 001771 3177 001772 1537 001773 1401 001774 1544 001775 0011 001776 0120 001777 0017 2000 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 132 /MISCELLANEOUS GENERAL-PURPOSE ROUTINES /THIS IS THE GENERAL OPEN SUBROUTINE /CALLNG SEQUENCE: /JMS I [OPEN /HANDLER BLOCK /MONITOR CALL CODE /RETURN IF TTY: IS DEVICE /ERROR RETURN /NORMAL RETURN /SETS STBLK, FLNGTH ON PAGE ZERO 002000 0000 OPEN, 0 002001 4562 JMS I [NAME /GET DEVICE AND FILENAME 002002 4777 JMS I (COMPAR /DEVICE 'TTY:' IS SPECIAL 002003 7776 -2 002004 0025 NEWDEV-1 002005 0356 TTYTXT-1 002006 5212 JMP OTHER /DEVICE OTHER THAN TTY 002007 2200 ISZ OPEN /INCREMENT TO PROPER RETURN 002010 2200 ISZ OPEN 002011 5600 JMP I OPEN 002012 1600 OTHER, TAD I OPEN /GET HANDLER BLOCK TO USE 002013 3221 DCA HND 002014 2200 ISZ OPEN 002015 1156 TAD [NAMLOC /POINTER TO NAME 002016 3233 DCA NAMPT 002017 4574 JMS I [GTMON 002020 4544 JMS I [HANDAD /GET THE HANDLER 002021 0000 HND, 0 /SET TO HANDLER BLOCK 002022 1600 TAD I OPEN /GET MONITOR CALL CODE (2 OR 3) 002023 2200 ISZ OPEN 002024 3232 DCA CALL 002025 3234 DCA LNGTH /FOR MONITOR KLUDGE 002026 1054 TAD DEVNO /DO THE CALL 002027 1051 TAD FILEN /ADD IN OPT. FILE LENGHT 002030 6212 CIF 10 /DEV # IN AC 002031 4421 JMS I USR /2: LOOKUP 002032 0000 CALL, 0 /3: ENTER 002033 0022 NAMPT, NAMLOC /NAME POINTER;RETURNS START BLOCK 002034 0000 LNGTH, 0 /RETURNS -FILE LENGTH IN BLOCKS /TENTATIVE FOR ENTER 002035 5210 JMP OTHER-2 /CALLING ROUTINE HANDLES ERROR 002036 1234 TAD LNGTH /MOVE PARAMETERS TO PAGE ZERO 002037 3052 DCA FLNGTH 002040 1233 TAD NAMPT 002041 3053 DCA STBLK 002042 5207 JMP OTHER-3 /AND TAKE NORMAL RETURN IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 133 002043 4562 BUMP, JMS I [NAME /DELETE IS AN EASY ONE (THANK GOD!) 002044 4574 JMS I [GTMON 002045 4544 JMS I [HANDAD 002046 0055 LIBBLK-1 002047 4551 JMS I [OCHK /CLOSE ANY OPEN OUTPUT FILE 002050 6212 CIF 10 /DELETE THE FILE 002051 1054 TAD DEVNO 002052 4421 JMS I USR 002053 0004 4 002054 0022 NAMLOC 002055 0000 0 002056 4435 ERROR1 002057 0123 123 /FD=FILE DELETION ERROR 002060 3055 DCA LIBFIL /IF CURRENT PROGRAM DELETED 002061 5577 JMP I [EXITOS 002062 1045 OCLCHK, TAD OPNFLG 002063 7650 SNA CLA 002064 4435 ERROR1 002065 0344 344 /OE=OPEN OUTPUT ERROR 002066 4547 JMS I [OCLOSE 002067 1376 TAD (YINT 002070 3200 DCA OPEN 002071 5212 JMP OTHER 002072 0000 PUTDEV, 0 /TELL USR A HANDLER IS IN OR OUT 002073 1672 TAD I PUTDEV /GET POINTER TO DEV# AND ENTRY 002074 3324 DCA XIN 002075 1724 TAD I XIN /DEVICE# 002076 2324 ISZ XIN /BUMP POINTER TO ENTRY 002077 1375 TAD (7646 /MONITOR TABLE 002100 3307 DCA PUTTEM /POINTER TO 'HANDLER IN CORE' FLAG 002101 1724 TAD I XIN /FLAG IS HANDLER ENTRY 002102 6211 CDF P /TABLE IS IN FIELD ONE 002103 3707 DCA I PUTTEM 002104 6201 CDF L 002105 2272 ISZ PUTDEV 002106 5672 JMP I PUTDEV 002107 0000 PUTTEM, 0 IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 134 002110 6032 MEXIT, KCC 002111 4550 JMS I [IOWAIT /BE SURE ^C CAN BE SENT 002112 1374 TAD (203 002113 4536 JMS I [TERMNL /TYPE ^C 002114 4440 LEXIT, TPUSHF /LIBRARY EXIT ROUTINE 002115 2370 RESMON /ALSO USED BY CTRL.C 002116 4441 TPOPF 002117 7600 7600 /RESTORE MONITOR CALL 002120 4551 JMS I [OCHK /CLOSE FILES 002121 4565 JMS I [DISMISS /BOOT USR OUT 002122 4550 JMS I [IOWAIT /WAIT FOR TTY;IOF 002123 5571 JMP I [7600 /LEAVE FOCAL 002124 0000 XIN, 0 /VIA (INDEV) 002125 4550 JMS I [IOWAIT 002126 7240 STA 002127 3120 DCA WAIT /CLEAR WAIT 002130 6031 KSF 002131 5330 JMP .-1 002132 4432 DRONE 002133 1113 TAD INBUF 002134 3272 DCA PUTDEV 002135 3113 DCA INBUF 002136 6032 KCC 002137 1272 TAD PUTDEV 002140 7450 SNA 002141 5325 JMP XIN+1 /IGNORE KILLER NULL 002142 5724 JMP I XIN 002143 6211 OROI, CDF P 002144 4442 TPUSHJ 002145 0566 TERMER 002146 7501 MQA 002147 1373 TAD (-"I 002150 7650 SNA CLA 002151 1372 TAD (IRST-ORST 002152 1170 TAD [ORST /DEFAULT O R O 002153 3562 DCA I [NAME /FAKE OUT NAME 002154 5771 JMP I (NAMENC /TO SET ECHO MODE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 135 /LEIDER NO SPACE /MORE, 0 / CDF V / NOP /SKIP1 / JMP MORE2 /VAR. FLD STILL ON / DCA I XNMBSG /CLEARS HORD VAR "#" / NOP /CLEAR1 /MORE2, NOP /SKIP2 / JMP MORE3 / DCA I XEXCLA /VARIABLE "!" / NOP /CLEAR2 /MORE3, NOP /SKIP3 / JMP I MORE / DCA I XQUOTS /VARIABLE """ / NOP /CLEAR3 / JMP I MORE /XNMBSG, NMBSGN /XEXCLA, EXCLA /XQUOTS, QUOTS 002155 0000 CONVER, 0 002156 1370 TAD (-33 002157 7650 SNA CLA 002160 5365 JMP CONESC 002161 1367 TAD (136 002162 4515 JMS I DXOUT /TYPE ^ 002163 1143 TAD [100 002164 5755 JMP I CONVER /AND CONVERT;100+LOWIN=ALPHA 002165 1135 CONESC, TAD ["$-33 002166 5755 JMP I CONVER 002167 0136 002170 7745 002171 1022 002172 0164 002173 7467 002174 0203 002175 7646 002176 0402 002177 1300 2200 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 136 002200 4434 XCOM, TINTEG /COMMON FOR 4096 4-W. VARIABLES 002201 3242 DCA BLKTMP 002202 1242 TAD BLKTMP 002203 0134 AND [377 /ADRESS IN BUFFER 002204 7106 CLL RTL /*4 : 4-WORD 002205 1777 TAD I (COSTA /START OF BUFFER 002206 4437 TPUSHA 002207 1242 TAD BLKTMP 002210 0172 AND [7400 /:8 BUFFERS 002211 7002 BSW /OF 4 BLOCKS EACH 002212 4437 TPUSHA /STORE RECURSIVELY 002213 4442 TPUSHJ /PUT OR GET? 002214 2246 ARG 002215 7240 CLA CMA /GET 002216 3227 DCA GEPUSW /PUT 002217 4436 TPOPA /GET BLOCK # 002220 4442 TPUSHJ 002221 2257 COMEXT /GET BLOCK 002222 2227 ISZ GEPUSW 002223 5234 JMP COMPUT 002224 4436 TPOPA /NOW GET ADRESS 002225 3227 DCA GEPUSW 002226 4440 TPUSHF 002227 3200 GEPUSW, COMBUF 002230 6211 CDF P 002231 4441 TPOPF 002232 0044 FLAC 002233 5443 TPOPJ 002234 4436 COMPUT, TPOPA 002235 3242 DCA BLKTMP 002236 6211 CDF P 002237 4440 TPUSHF 002240 0044 FLAC 002241 4441 TPOPF 002242 3200 BLKTMP, COMBUF 002243 7001 IAC 002244 3105 DCA COWRIT 002245 5443 TPOPJ 002246 1077 ARG, TAD CHARL 002247 1133 TAD [-", 002250 7640 SZA CLA 002251 5443 TPOPJ 002252 6211 CDF P 002253 4442 TPUSHJ 002254 1605 EVAL-1 002255 7001 IAC 002256 5443 TPOPJ IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 137 002257 3104 COMEXT, DCA THSBLK /ASKED FOR BLOCK 002260 1104 TAD THSBLK 002261 7041 CIA 002262 1103 TAD SETBLK /IS IT ALLREADY HERE? 002263 7650 SNA CLA 002264 5443 TPOPJ /YES.EXIT 002265 7125 CLL CML IAC RAL /+3 SO THAT WE DON'T 002266 1104 TAD THSBLK / WRITE ON ANOTHER FILE 002267 1101 TAD CLNGTH /SET TO 0 BY CCLOSE 002270 7700 SMA CLA 002271 4435 ERROR1 /WE ARE ASKING FOR TO MUCH! 002272 0004 4 /AE=ARRAY EXCEEDING CORE LIMITS 002273 4320 JMS CORITE /WRITE OUT IF ANY MODIFICATIONS 002274 1102 TAD COMFLG /AND CLEAR BUFFER IF WRITE 002275 7650 SNA CLA /NEW OR OLD? 002276 5307 JMP COINPT /OLD 002277 1360 TAD COCNT /LARGEST SO FAR 002300 7041 CIA 002301 1104 TAD THSBLK 002302 7710 SPA CLA 002303 5307 JMP COINPT /THSBLK .LT. COCNT;ALREADY OUT 002304 1360 TAD COCNT 002305 3103 DCA SETBLK /SET TO WRITE AND CLEAR NEXT BUFF 002306 5260 JMP COMEXT+1 002307 7300 COINPT, CLA CLL /LNK=0 FOR READ 002310 1104 TAD THSBLK /READ ASKED FOR BLOCK 002311 7421 MQL 002312 4776 JMS I (COHNDL 002313 1104 TAD THSBLK 002314 3103 DCA SETBLK /NOW SET CURRENT BLOCK 002315 1102 TAD COMFLG /IF NEW FILE SET WRITE FLAG, IF OLD 002316 3105 DCA COWRIT /CLEAR WRITE FLAG 002317 5443 TPOPJ IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 138 002320 0000 CORITE, 0 /ALSO CALLED BY CCLOSE 002321 1105 TAD COWRIT 002322 7650 SNA CLA /ONLY WRITE IF NEW DATA 002323 5720 JMP I CORITE 002324 7320 CLA CLL CML /LNK=1 FOR WRITE 002325 1103 TAD SETBLK /WRITE BLOCK IN CORE 002326 7421 MQL 002327 4776 JMS I (COHNDL 002330 4775 JMS I (COCLR /NOW CLEAR BUFFER 002331 1103 TAD SETBLK 002332 7041 CIA 002333 1360 TAD COCNT /CHECK IF LAST BUFFER 002334 7640 SZA CLA 002335 5720 JMP I CORITE 002336 7307 CLA CLL IAC RTL /4 002337 1360 TAD COCNT 002340 3360 DCA COCNT /UPDATE COCNT 002341 5720 JMP I CORITE /SUBROUTINE CALLED BY 'OPEN TERMINATE' AND 'OCHK' 002342 0000 CCLOSE, 0 002343 1101 TAD CLNGTH 002344 7650 SNA CLA 002345 5742 JMP I CCLOSE 002346 4320 JMS CORITE 002347 1102 TAD COMFLG 002350 7650 SNA CLA 002351 5363 JMP CLOOUT /ONLY CLOSE INTERNALLY 002352 4574 JMS I [GTMON 002353 1054 TAD DEVNO 002354 6212 CIF P 002355 4421 JMS I USR 002356 0004 4 /CLOSE 002357 0373 CNMTMP 002360 0000 COCNT, 0 002361 4435 ERROR1 002362 0002 2 /AC=ARRAY CLOSE ERROR 002363 3101 CLOOUT, DCA CLNGTH /ONLY INCORE FX() NOW 002364 3103 DCA SETBLK /AND ONLY FX(0)-FX(255) 002365 5742 JMP I CCLOSE 002366 4532 CCLOSR, JMS I [CCLOSE 002367 5566 JMP I [CONTIN 002370 4207 RESMON, 4207 /'JMS SHNDLR' 002371 5000 5000 /WRITE 10 PAGES FIELD 0 002372 0000 0000 /FROM ADRESS 0 002373 0033 0033 /IN BLOCK 33 002375 1757 002376 2400 002377 2426 IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 138-1 2400 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 139 002400 0000 COHNDL, 0 /SUB FOR READING OR WRITING ARRAY BUFFER 002401 7430 SZL 002402 5210 JMP .+6 /WRITE 002403 1103 TAD SETBLK /READ 002404 1161 TAD [12 /IF LAST WRITTEN BLOCK+4+7 002405 7040 CMA 002406 1104 TAD THSBLK /IS SMALLER THAN ASKED FOR BLOCK 002407 7206 CLA RTL /ROTATE LINK FOR SEARCH FORWARD 002410 1167 TAD [2000 /HERE LNK=0:READ;1:WRITE 002411 7010 RAR /5000:WRITE;1000:READ;8 PAGES 002412 3225 DCA COARG /1001:READ FORWARD 002413 7501 MQA /BLOCK 002414 1233 TAD CBLOCK /FIRST OF FILE 002415 3227 DCA COSTA+1 002416 4440 TPUSHF 002417 2434 COMDEV 002420 4441 TPOPF 002421 0026 NEWDEV /GET HANDLER BACK 002422 4544 JMS I [HANDAD 002423 0055 LIBBLK-1 002424 4462 JMS I LIBHND 002425 0000 COARG, 0 002426 3200 COSTA, COMBUF 002427 0000 0 002430 5075 JMP DERR 002431 4565 JMS I [DISMIS 002432 5600 JMP I COHNDL 002433 0000 CBLOCK, 0 002434 0000 COMDEV, ZBLOCK 2 IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 140 /"OPEN ARRAY" 002436 4532 ARRAY, JMS I [CCLOSE //FILE STILL OPEN? 002437 1377 TAD (0601 /ASSUMED EXTENSION .FA 002440 3025 DCA EXTENS 002441 4567 JMS I [OPEN 002442 0055 LIBBLK-1 002443 0002 2 /FIRST DO A LOOKUP 002444 5263 JMP NODIR /TTY NOT A DIRECTORY DEVICE 002445 7610 SKP CLA /THERE WAS NO FILE OF THAT NAME 002446 5260 JMP COMON /FOUND IT! 002447 1254 TAD ARPNT /FAKE 'OPEN' FOR ENTER 002450 3567 DCA I [OPEN 002451 5776 JMP I (OTHER 002452 0055 LIBBLK-1 002453 0003 3 /ENTER 002454 2452 ARPNT, .-2 /IT CAN'T COME HERE;ALREADY TESTED 002455 4435 ERROR1 /DEFINITELY AN ERROR 002456 0005 5 /AF=ARRAY FULL 002457 7201 CLA IAC /1 IF NEW FILE 002460 3102 COMON, DCA COMFLG /SET NEW/OLD FLAG 002461 4541 JMS I [GETDEV /I.E. A DISPLAY IS NO GOOD 002462 7700 SMA CLA 002463 4435 NODIR, ERROR1 002464 0003 3 /AD=ARRAY DEVICE ERROR 002465 4440 TPUSHF /EVERYTHING IS OK 002466 0022 NAMLOC 002467 4441 TPOPF 002470 0373 CNMTMP /SAVE NAME FOR CLOSE 002471 1026 TAD NEWDEV 002472 3234 DCA COMDEV 002473 1027 TAD NEWDEV+1 002474 3235 DCA COMDEV+1 002475 1053 TAD STBLK 002476 3233 DCA CBLOCK /SAVE FIRST BLOCK 002477 7100 CLL 002500 1052 TAD FLNGTH 002501 1143 TAD [100 /IS LENGTH GREATER THAN 100BLOCKS? 002502 7420 SNL 002503 7300 CLA CLL /YES;IGNORE 002504 1262 TAD NODIR-1 /-100 002505 3101 DCA CLNGTH /STORE LENGTH .LE. 100 (NEG) 002506 3775 DCA I (COCNT /NEW LENGTH IS ZERO 002507 3104 DCA THSBLK /FIRST BLOCK IS IN CORE 002510 4442 TPUSHJ /SET SETBLK=THSBLK, COWRIT=COMFLG 002511 2307 COINPT /AND READ FIRST BUFFER (EVEN IF NEW) 002512 1102 TAD COMFLG /IS IT AN NEW FILE? 002513 7640 SZA CLA 002514 4774 JMS I (COCLR /YES, CLEAR BUFFER OF FIRST BLOCK (HAS RUBBISH) 002515 5566 JMP I [CONTIN IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 141 002516 0000 OCHK, 0 /IF ANY FILE EXISTS CLOSE IT 002517 4532 JMS I [CCLOSE 002520 4547 JMS I [OCLOSE 002521 5716 JMP I OCHK 002522 0000 LOWOUT, 0 /OUT DRIVER 002523 3364 DCA LOWOTM 002524 6211 CDF P 002525 1531 TAD I [ECHO /CHK ECHO 002526 1014 TAD INECH 002527 7710 SPA CLA /0+-1:NO PRINT 002530 5360 JMP OUTOUT 002531 1364 TAD LOWOTM 002532 1373 TAD (-216 /IS IT CRONLY? 002533 7440 SZA /YES; CHANGE TO REAL CR 002534 7001 IAC /NO; DON'T CHANGE CHAR 002535 7450 SNA /IF 215-216 RESET TABC 002536 3772 DCA I (TABC 002537 1371 TAD (215-240 /IS IT PRINTING? 002540 7500 SMA 002541 2772 ISZ I (TABC /YES INC TABC 002542 7000 NOP 002543 1130 TAD [240 002544 3364 DCA LOWOTM 002545 6201 CDF L 002546 1015 TAD OUTFLG 002547 7650 SNA CLA /0:TTY 002550 5356 JMP LOWTTO 002551 1364 TAD LOWOTM 002552 4575 JMS I [NOCHAR /WRITE ON FILE 002553 1016 TAD OUTECH 002554 7640 SZA CLA /0:ECHO 002555 5360 JMP OUTOUT 002556 1364 LOWTTO, TAD LOWOTM 002557 4536 JMS I [TERMNL /ON TTY 002560 6201 OUTOUT, CDF L 002561 4432 DRONE 002562 6213 CIF CDF P 002563 5722 JMP I LOWOUT 002564 0000 LOWOTM, 0 002571 7755 002572 0001 002573 7562 002574 1757 002575 2360 002576 2012 002577 0601 2600 PAGE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 142 002600 0000 XIDLE, 0 002601 7300 CLA CLL 002602 6214 RDF 002603 1311 TAD CCDI 002604 3265 DCA INTEXI+1 002605 6201 CDF L 002606 6031 KSF /CHECK FOR KEYBOARD FIRST 002607 5245 JMP TINT /MORE TO COME 002610 6034 CTRLSO, KRS /INPUT CHARACTER 002611 0163 AND [177 /IGNORE BLANK AND L-T AND PARITY BIT 002612 7450 SNA 002613 5244 JMP TINT-1 /GO INITIATE NEXT READ 002614 1152 TAD [200 002615 3270 DCA XTEMP 002616 1270 TAD XTEMP 002617 1127 TAD [-203 /CTRL.C? 002620 7450 SNA 002621 5671 JMP I DMEXIT /YES 002622 1153 TAD [-20 002623 7450 SNA /CTRL S? 002624 5275 JMP CTRLS 002625 1126 TAD [2 002626 7450 SNA /CTRL.Q? 002627 5244 JMP TINT-1 /KILL 002630 1126 TAD [2 /(CHAR-217)/2=0 FOR CTRL.O AND P 002631 7110 CLL RAR /IS IT? 002632 7650 SNA CLA 002633 5343 JMP RECOVR /YES A BREAK 002634 1113 TAD INBUF 002635 7450 SNA 002636 1270 TAD XTEMP 002637 3113 DCA INBUF 002640 6211 CDF V 002641 1113 TAD INBUF 002642 3667 DCA I XDOL /SAVE IN INPUT VARIABLE 002643 7410 SKP 002644 6032 KCC 002645 6041 TINT, TSF 002646 5264 JMP INTEXI 002647 3106 DCA TELSW /TURN OFF THE IN-PROGRESS-FLAG 002650 6211 CDF P 002651 1674 TAD I OPTRI 002652 7450 SNA 002653 5264 JMP INTEXI 002654 6046 TLS /TYPE NEXT 002655 3106 DCA TELSW /CLEAR AC AND TURN ON THE FLAG 002656 3674 DCA I OPTRI /ZERO OUT THE DATA AREA 002657 1274 TAD OPTRI 002660 7001 IAC 002661 0304 AND K37 002662 1272 TAD OPTR0 002663 3274 DCA OPTRI IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 142-1 002664 7200 INTEXI, CLA / JMS I DMORE 002665 7402 HLT 002666 5600 JMP I XIDLE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 143 002667 3430 XDOL, DOLL 002670 0000 XTEMP, 0 /DMORE, MORE 002671 2110 DMEXIT, MEXIT 7600 OFILES=7600 002672 7600 OPTR0, OFILES 002673 7600 OPTRO, OFILES 002674 7600 OPTRI, OFILES 002675 6032 CTRLS, KCC /KILL ^S IN BUFFER 002676 6031 KSF 002677 5276 JMP .-1 /WAIT FOR GODOT 002700 5210 JMP CTRLSO /USE GODOT 002701 0000 XOUT, 0 /VIA (OUTDEV) 002702 3335 DCA ERROL 002703 2006 ISZ CHRCNT 002704 0037 K37, 37 002705 6211 CDF P 002706 1673 TAD I OPTRO /ANY ROOM ? 002707 7650 SNA CLA /A CHAR. IS NONZERO 002710 5314 JMP .+4 002711 6203 CCDI, CIF CDF 0 002712 4432 DRONE /NO = WAIT 002713 5305 JMP .-6 002714 1106 TAD TELSW /IN PROGRESS ? 002715 7740 MIN40, SMA SZA CLA 002716 5323 JMP .+5 002717 1335 TAD ERROL /NO 002720 6046 TLS /TYPE CHAR 002721 3106 DCA TELSW /SET IN PROGRESS FLAG 002722 5332 JMP .+10 /RETURN 002723 1335 TAD ERROL /SEND DATA 002724 3673 DCA I OPTRO 002725 1273 TAD OPTRO /SET POINTERS 002726 7001 IAC 002727 0304 AND K37 002730 1272 TAD OPTR0 002731 3273 DCA OPTRO 002732 6201 CDF L 002733 5701 JMP I XOUT IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 144 002734 7776 ERRONC, -2 002735 0000 ERROL, 0 /ERROR PRINT AND RESET 002736 7340 CLA CMA CLL 002737 1735 TAD I ERROL /GET ERROR CODE 002740 3017 DCA ERRCOD /DEFINED BY TECO CODE: /^O^T-1&37*20UY^T-1&17+QY==^D CODES UP TO ?ZP 002741 4550 JMS I [IOWAIT /WAIT FOR OUTPUT TO FINISH 002742 1017 TAD ERRCOD 002743 7001 RECOVR, IAC /AB=A BREAK 002744 3017 RESTRT, DCA ERRCOD /AA=START ALL OVER 002745 6032 KCC 002746 2334 ISZ ERRONC /AVOID STAYING IN CLOSE ERROR 002747 4551 JMS I [OCHK 002750 4565 JMS I [DISMISS 002751 7344 CLA CLL CMA RAL /NOW WE ARE OK 002752 3334 DCA ERRONC 002753 3114 DCA DEPTH 002754 3113 DCA INBUF /CLEAR INPUT BUFFER 002755 1315 TAD MIN40 /CLEAR OUTPUT BUFFER 002756 3020 DCA XCNTR 002757 7040 CMA 002760 1272 TAD OPTR0 002761 3010 DCA AUTO1 002762 1272 TAD OPTR0 002763 3274 DCA OPTRI 002764 1272 TAD OPTR0 002765 3273 DCA OPTRO 002766 3016 DCA OUTECH 002767 3014 DCA INECH 002770 7325 CLA STL IAC RAL /ENABLE MULTI8-ECHO 002771 3117 DCA MECH 002772 3015 DCA OUTFLG /CLEAR IN/OUT FLAGS 002773 3013 DCA INFLG 002774 6211 CDF P 002775 3410 DCA I AUTO1 002776 2020 ISZ XCNTR 002777 5375 JMP .-2 IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 145 003000 7201 CLA IAC /RESET ECHO TO ON 003001 3531 DCA I [ECHO 003002 6201 CDF L 003003 1140 TAD [215 /BACK TO START OF LINE 003004 4250 JMS TERMNL 003005 1116 TAD LF 003006 4250 JMS TERMNL 003007 1377 TAD (213 /RESET COUNTERS 003010 4250 JMS TERMNL 003011 1145 TAD [77 003012 4250 JMS TERMNL /? 003013 1017 TAD ERRCOD 003014 7112 CLL RTR 003015 7012 RTR 003016 1376 TAD (301 /FIRST LETTER 003017 4250 JMS TERMNL 003020 1017 TAD ERRCOD 003021 0375 AND (17 003022 1376 TAD (301 /SECOND LETTER 003023 4250 JMS TERMNL 003024 6213 CIF CDF P 003025 5626 JMP I .+1 /FOR LINENO PRINTOUT 003026 6006 ENDERR /IN DRIVER 003027 0000 LOWIN, 0 003030 7450 SNA /DISABLE ECHO =2 IN AC 003031 1117 TAD MECH /DEFAULT SET BY INECH 003032 6770 6770 /IN MULTI8 003033 4432 DRONE 003034 1013 TAD INFLG 003035 7510 SPA 003036 5246 JMP EOF /-:END OF FILE 003037 7650 SNA CLA 003040 5243 JMP LOWTTI /0:TTY 003041 4774 JMS I (ICHAR /INPUT FROM FILE 003042 7410 SKP 003043 4773 LOWTTI, JMS I (XIN /FROM TTY 003044 6213 CIF CDF P 003045 5627 JMP I LOWIN 003046 4435 EOF, ERROR1 003047 0105 105 /EF=END-OF-FILE IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 146 003050 0000 TERMNL, 0 /HANDLER FOR TTY DEVICE 003051 0163 AND [177 003052 3227 DCA LOWIN 003053 1227 TAD LOWIN 003054 1125 TAD [-16 /CHAR-16 003055 7100 CLL 003056 1124 TAD [7 /OVERFLOW IF 7.LE.CHAR.GE.15 003057 7630 SZL CLA /FORMAT CHAR.? 003060 5330 JMP TERCTL 003061 1227 TAD LOWIN /CONTRL.CHAR.? 003062 0274 AND TERNMV 003063 7640 SZA CLA 003064 5277 JMP TEROUT /NO;OUT NORMAL 003065 1013 TAD INFLG 003066 7041 CIA 003067 7500 SMA 003070 1014 TAD INECH /O I TTY:? 003071 7500 SMA /FALLS THRU WITH -1;SO NO MOVE 003072 5366 JMP TERCON /NO. CONVERT TO ^X 003073 7001 TERMMV, IAC /WITH NEXT GIVES -2 003074 7140 TERNMV, CMA CLL /-1, ALSO MASK 140 003075 1006 TAD CHRCNT 003076 3006 DCA CHRCNT /MODIFIED CHAR.CNT. 003077 1227 TEROUT, TAD LOWIN /GIVE OUT STANDARD 003100 4515 JMS I DXOUT 003101 1006 TERCHK, TAD CHRCNT /CHECK IF OVERFLOW 003102 7710 SPA CLA 003103 5650 JMP I TERMNL /NO. GO BACK 003104 1140 TAD [215 /FALLS IN FROM LINE OVERFLOW 003105 4515 JMS I DXOUT 003106 1116 TERLFD, TAD LF 003107 2007 ISZ LINCNT /TEST IF AT END OF PAGE 003110 5343 JMP LINRES-1 /NO: GIVE LF 003111 4550 TERPS, JMS I [IOWAIT 003112 2007 TERLUP, ISZ LINCNT 003113 5312 JMP TERLUP 003114 6031 KSF 003115 7410 SKP 003116 5321 JMP TERLST 003117 2120 ISZ WAIT 003120 5312 JMP TERLUP 003121 1116 TERLST, TAD LF 003122 4515 JMS I DXOUT IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 147 003123 1003 TAD PAUS 003124 3120 DCA WAIT 003125 1005 TERRES, TAD PAGLEN /AT END ***** 003126 3007 DCA LINCNT /RESET 003127 5344 JMP LINRES /NOW RESET LINE 003130 1227 TERCTL, TAD LOWIN /BUILD JUMP 003131 1340 TAD TERJMP 003132 3333 DCA .+1 003133 7402 HLT /MUST!! BE 6 AFTER 'TERRES'***** 003134 5274 JMP TERNMV /" 7":BELL;UNCHANGED;NO MOVE 003135 5273 JMP TERMMV /"10":BSPC; " " ;BACKUP CHAR.CNT. 003136 5357 JMP TERTAB /"11":HTAB 003137 5306 JMP TERLFD /"12":LF ;RESETS CHAR.CNT. 003140 5325 TERJMP, JMP TERRES /"13":VTAB;RESET 003141 5347 JMP TERFF /"14":FFED;SIMULATE 003142 1140 TAD [215 /"15":CRET;CRLF 003143 4515 JMS I DXOUT 003144 1004 LINRES, TAD LINLEN /RESET CHAR. CNTR. 003145 3006 DCA CHRCNT 003146 5650 JMP I TERMNL /FORMFEED: /HARDWARE /SOFTWARE 003147 1166 TERFF, TAD [214 / ISZ LINCNT 003150 4515 JMS I DXOUT / SKP 003151 1152 TAD [200 / JMP .+4 003152 4515 JMS I DXOUT / TAD LF 003153 2007 ISZ LINCNT / JMS I DXOUT 003154 5351 JMP .-3 / JMP TERFF 003155 7325 CLA STL IAC RAL / 003156 5321 JMP TERLST / 003157 1372 TERTAB, TAD (240 003160 4515 JMS I DXOUT 003161 1006 TAD CHRCNT 003162 0124 AND [7 003163 7640 SZA CLA 003164 5357 JMP TERTAB 003165 5301 JMP TERCHK /GO CHECK IF END OF LINE 003166 1227 TERCON, TAD LOWIN 003167 4771 JMS I (CONVER 003170 5277 JMP TEROUT 003171 2155 003172 0240 003173 2124 003174 0445 003175 0017 003176 0301 003177 0213 3200 *COMBUF 003200 0000 ZBLOCK 400 IO-UTILITY-INIT PAL8-V50X 09-JUL-88 PAGE 147-1 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 148 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 149 /MONTHS OF THE YEAR 003600 5555 MONAME, TEXT "--19" 003601 6171 003602 0000 3602 *.-1 003602 1201 TEXT "JAN-" 003603 1655 003604 0000 3604 *.-1 003604 0605 TEXT "FEB-" 003605 0255 003606 0000 3606 *.-1 003606 1501 TEXT "MAR-" 003607 2255 003610 0000 3610 *.-1 003610 0120 TEXT "APR-" 003611 2255 003612 0000 3612 *.-1 003612 1501 TEXT "MAY-" 003613 3155 003614 0000 3614 *.-1 003614 1225 TEXT "JUN-" 003615 1655 003616 0000 3616 *.-1 003616 1225 TEXT "JUL-" 003617 1455 003620 0000 3620 *.-1 003620 0125 TEXT "AUG-" 003621 0755 003622 0000 3622 *.-1 003622 2305 TEXT "SEP-" 003623 2055 003624 0000 3624 *.-1 003624 1703 TEXT "OCT-" 003625 2455 003626 0000 3626 *.-1 003626 1617 TEXT "NOV-" 003627 2655 003630 0000 3630 *.-1 003630 0405 TEXT "DEC-" 003631 0355 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 149-1 003632 0000 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 150 /DEVICE NAME TABLE: CODE / # OF OF INDEXED NAMES-1 / DEVICE NAME /7777 IN CODE ENDS LIST /CODES IN INCREASING ORDER! 003633 0406 DVCDNM, 406 / 003634 0000 0 003635 0406 DEVICE DF 003636 0000 003637 2426 2426 / 003640 0000 0 003641 2426 DEVICE TV 003642 0000 003643 4004 4004 / 003644 0000 0 003645 1004 DEVICE HDX 003646 3000 003647 4020 4020 / 003650 0000 0 003651 1420 DEVICE LPT 003652 2400 003653 4023 4023 / 003654 0000 0 003655 1423 DEVICE LST 003656 2400 003657 4024 4024 / 003660 0000 0 003661 2024 DEVICE PTP 003662 2000 003663 4215 4215 /4217 003664 0002 2 003665 2214 DEVICE RL0A 003666 6001 003667 4224 4224 / 003670 0000 0 003671 2024 DEVICE PTR 003672 2200 003673 4315 4315 /4317 003674 0002 2 003675 2214 DEVICE RL1A 003676 6101 003677 4325 4325 003700 0000 0 003701 1725 DEVICE OUT 003702 2400 003703 4415 4415 /4417 003704 0002 2 003705 2214 DEVICE RL2A 003706 6201 003707 4503 4503 /4512 003710 0007 7 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 150-1 003711 0323 DEVICE CSA0 003712 0160 003713 4513 4513 / 003714 0000 0 003715 0411 DEVICE DIAB 003716 0102 003717 4515 4515 /4517 003720 0002 2 003721 2214 DEVICE RL3A 003722 6301 003723 4573 4573 /4576 003724 0003 3 003725 0413 DEVICE DKA0 003726 0160 003727 4604 4604 /4613 003730 0007 7 003731 0424 DEVICE DTA0 003732 0160 003733 4622 4622 003734 0000 0 003735 2405 DEVICE TERM 003736 2215 003737 4631 4631 / 003740 0000 0 003741 2331 DEVICE SYS 003742 2300 003743 4673 4673 /4676 003744 0003 3 003745 0413 DEVICE DKB0 003746 0260 003747 4731 4731 003750 0000 0 003751 2405 DEVICE TEST 003752 2324 003753 5074 5074 /5077 003754 0003 3 003755 2314 DEVICE SLU0 003756 2560 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 151 003757 5524 5524 / 003760 0000 0 003761 2424 DEVICE TTY 003762 3100 003763 5604 5604 /5613 003764 0007 7 003765 1424 DEVICE LTA0 003766 0160 003767 5622 5622 003770 0000 0 003771 0504 DEVICE EDIN 003772 1116 003773 5704 5704 /5713 003774 0007 7 003775 1524 DEVICE MTA0 003776 0160 003777 5723 5723 / 004000 0000 0 004001 0423 DEVICE DSK 004002 1300 004003 6002 6002 / 004004 0000 0 004005 0402 DEVICE DBL 004006 1400 004007 6003 6003 /6012 004010 0007 7 004011 0423 DEVICE DSK0 004012 1360 004013 6034 6034 / 004014 0000 0 004015 0317 DEVICE COMM 004016 1515 004017 6145 6145 / 004020 0000 0 004021 0425 DEVICE DUMP 004022 1520 004023 6362 6362 /6371 004024 0007 7 004025 2202 DEVICE RBA0 004026 0160 004027 6373 6373 /6376 004030 0003 3 004031 2213 DEVICE RKA0 004032 0160 004033 6410 6410 /6417 004034 0007 7 004035 2230 DEVICE RXA0 004036 0160 004037 6431 6431 004040 0000 0 004041 0504 DEVICE EDOU 004042 1725 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 151-1 004043 6464 6464 /6467 004044 0003 3 004045 2304 DEVICE SDA0 004046 0160 004047 6473 6473 /6476 004050 0003 3 004051 2213 DEVICE RKB0 004052 0260 004053 6504 6504 / 004054 0000 0 004055 0304 DEVICE CDR 004056 2200 004057 6564 6564 /6567 004060 0003 3 004061 2304 DEVICE SDB0 004062 0260 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 152 004063 6601 6601 / 004064 0000 0 004065 0201 DEVICE BAT 004066 2400 004067 6605 6605 /6614 004070 0007 7 004071 2425 DEVICE TUA0 004072 0160 004073 7010 7010 /7017 004074 0007 7 004075 2630 DEVICE VXA0 004076 0160 004077 7241 7241 / 004100 0000 0 004101 1625 DEVICE NULL 004102 1414 004103 7310 7310 /7317 004104 0007 7 004105 2230 DEVICE RXH0 004106 1060 004107 7421 7421 / 004110 0000 0 004111 1421 DEVICE LQP 004112 2000 004113 7501 7501 /7510 004114 0007 7 004115 1421 DEVICE LQP0 004116 2060 004117 7777 7777 4200 PAGE DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 153 004200 0000 CDTBL, ZBLOCK 200 004400 0000 USRTBL, ZBLOCK 200 /FIRST TIME INITIALIZING FOR PDF FOCAL 004600 3340 SETUP, DCA CHAINS /REMEMBER CALL 004601 6201 CDF 0 004602 6212 CIF 10 004603 4777 JMS I (7700 /CALL USR 004604 0010 10 /LOCK IN 004605 1340 TAD CHAINS 004606 7650 SNA CLA 004607 5214 JMP NODECD 004610 6212 CIF 10 004611 4776 JMS I (200 004612 0005 5 /COMMAND DECODE 004613 5200 5200 /SPECIAL MODE 004614 1775 NODECD, TAD I (7777 /GET BOS WORD 004615 0374 AND (1600 /EXTRACT EXT DATE 004616 7112 CLL RTR 004617 7012 RTR 004620 3112 DCA YEAR /SAVE 004621 3030 DCA TEM7 /INIT COUNTER 004622 6211 CDF 10 004623 1773 TAD I (7666 /GET DATE WORD 004624 0372 AND (7 /EXTRACT MOD 8 YEAR 004625 1112 TAD YEAR /ADD FOR 6 BIT YEAR 004626 3112 DCA YEAR 004627 1112 TAD YEAR 004630 1371 TAD (-36 /100-70 004631 7700 SMA CLA 004632 1370 TAD (-1200 /ABOVE 2000 004633 3337 DCA OFFSET 004634 1112 TAD YEAR 004635 1367 TAD (-12 /DIVIDE BY 10(10) 004636 2030 ISZ TEM7 004637 7500 SMA /DONE? 004640 5235 JMP .-3 004641 1366 TAD (6760-100+12 004642 1337 TAD OFFSET 004643 7002 BSW /YES 004644 1030 TAD TEM7 /PUT IN 10'S 004645 7002 BSW 004646 3112 DCA YEAR /YEAR IN 2 6-BITS 004647 1773 TAD I (7666 /GET MONTH 004650 0365 AND (7400 004651 7002 BSW 004652 7110 CLL RAR 004653 1364 TAD (MONAME /ADDRESS OF NULL MONTH NAME 004654 3030 DCA TEM7 004655 6201 CDF 0 004656 1430 TAD I TEM7 /GET 'JA' FROM JAN- 004657 3110 DCA MONA DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 153-1 004660 2030 ISZ TEM7 004661 1430 TAD I TEM7 /GET 'N-' FROM JAN- 004662 3111 DCA LISA DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 154 004663 6211 CDF 10 004664 7240 STA 004665 1763 TAD I (36 /GET POINTER TO DEVNAM TABLE 004666 6201 CDF 0 004667 3273 DCA .+4 004670 4762 JMS I (MVCORE /MOVE TABLE DOWN 004671 7760 -20 004672 6211 CDF 10 004673 7402 HLT 004674 6201 CDF 0 004675 4400 USRTBL /IN BUFFER AREA 004676 4762 JMS I (MVCORE /MOVE FILE TABLE DOWN 004677 7730 -50 004700 6211 CDF 10 004701 7600 7600 004702 6201 CDF 0 004703 4200 CDTBL /ALSO IN BUFFER AREA 004704 6212 CIF 10 004705 4776 JMS I (200 004706 0011 11 /USROUT 004707 4762 JMS I (MVCORE /CLEAR OUTPUT BUFFER 004710 7740 -40 004711 6201 CDF 0 004712 3200 COMBUF 004713 6211 CDF 10 004714 7600 7600 004715 1761 TAD I (CDTBL+6 /CHECK IF NAME 004716 7650 SNA CLA 004717 5760 JMP I (GOSTRT /NO;RUN FCINIT(MAYBE) 004720 1757 TAD I (CDTBL+5 /GET DEVNO 004721 4756 JMS I (DNTONM /CONVERT 004722 6267 LINE3A+4 004723 5755 JMP I (DEVERR 004724 4762 JMS I (MVCORE 004725 7775 -3 /MOVE FILENAME 004726 6201 CDF 0 004727 4206 CDTBL+6 004730 6201 CDF 0 004731 6272 LINE3A+7 004732 1754 TAD I (CDTBL+11 /CHECK EXTENSION 004733 7450 SNA 004734 1353 TAD (617 /DEFAULT - FO 004735 3752 DCA I (LINE3A+13 004736 5751 JMP I (CHKINP 004737 0000 OFFSET, 0 004740 0000 CHAINS, 0 004751 5000 004752 6276 004753 0617 004754 4211 004755 5766 004756 5670 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 154-1 004757 4205 004760 5065 004761 4206 004762 5600 004763 0036 004764 3600 004765 7400 004766 6672 004767 7766 004770 6600 004771 7742 004772 0007 004773 7666 004774 1600 004775 7777 004776 0200 004777 7700 5000 PAGE DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 155 005000 1777 CHKINP, TAD I (CDTBL+12 /CHECK INPUT 005001 7450 SNA 005002 5230 JMP NOINPT+3 /SET TTY:,E 005003 4776 JMS I (DNTONM 005004 6251 LINE2A+4 005005 5775 JMP I (DEVERR 005006 1774 TAD I (CDTBL+13 005007 7650 SNA CLA 005010 5225 JMP NOINPT /NO NAME 005011 4773 JMS I (MVCORE 005012 7775 -3 /MOVE NAME 005013 6201 CDF 0 005014 4213 CDTBL+13 005015 6201 CDF 0 005016 6254 LINE2A+7 005017 1372 TAD (5640 /SET . FOR EXTNSN 005020 3771 DCA I (LINE2A+12 005021 1770 TAD I (CDTBL+16 005022 7450 SNA 005023 1367 TAD (604 /DEFAULT .FD 005024 3766 DCA I (LINE2A+13 005025 4765 NOINPT, JMS I (GESWIT 005026 0011 "I-300 /INPUT ECHO? 005027 7410 SKP 005030 1364 TAD (5405 /YES - SET ,E 005031 3763 DCA I (LINE2A+14 005032 1762 TAD I (CDTBL /GO ON WITH O O 005033 7450 SNA 005034 5262 JMP NOOUTP+3 005035 4776 JMS I (DNTONM 005036 6233 LINE1A+4 005037 5775 JMP I (DEVERR 005040 1761 TAD I (CDTBL+1 005041 7650 SNA CLA 005042 5257 JMP NOOUTP 005043 4773 JMS I (MVCORE 005044 7775 -3 005045 6201 CDF 0 005046 4201 CDTBL+1 005047 6201 CDF 0 005050 6236 LINE1A+7 005051 1372 TAD (5640 005052 3760 DCA I (LINE1A+12 005053 1757 TAD I (CDTBL+4 005054 7450 SNA 005055 1367 TAD (604 005056 3756 DCA I (LINE1A+13 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 156 005057 4765 NOOUTP, JMS I (GESWIT 005060 0017 "O-300 005061 7410 SKP 005062 1364 TAD (5405 005063 3755 DCA I (LINE1A+14 005064 5270 JMP MOD3 005065 4765 GOSTRT, JMS I (GESWIT /CHECK IF CHAIN TO FCINIT 005066 0003 "C-300 005067 7610 SKP CLA 005070 7201 MOD3, CLA IAC 005071 7124 CLL CML RAL /SETS MODE TO 1 OR 3 005072 3754 DCA I (MODE /FOR START OR GOTO 005073 4765 JMS I (GESWIT /NO FUNCTIONS? 005074 0016 "N-300 005075 5301 JMP .+4 005076 1353 TAD (CDF 10 005077 4752 JMS I (PATCH 005100 6511 NOFUNC 005101 4765 JMS I (GESWIT /REDUCED PRECISION? 005102 0041 "6-225 005103 5751 JMP I (FULPRC 005104 1353 TAD (CDF 10 /REDUCED PRECISION PATCHES 005105 4752 JMS I (PATCH 005106 6533 REDPRC 005107 1350 TAD (CDF 0 005110 4752 JMS I (PATCH 005111 6530 OTHVAR 005112 4773 JMS I (MVCORE 005113 7747 -31 005114 6201 CDF 0 005115 6306 DIVOVL 005116 6211 CDF 10 005117 7471 DUBDIV+10 005120 4773 JMS I (MVCORE 005121 7742 -36 005122 6201 CDF 0 005123 6353 NEWVAR 005124 6211 CDF 10 005125 3425 STSECR 005126 5751 JMP I (FULPRC DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 157 005150 6201 005151 5200 005152 5744 005153 6211 005154 5450 005155 6243 005156 6242 005157 4204 005160 6241 005161 4201 005162 4200 005163 6261 005164 5405 005165 5635 005166 6260 005167 0604 005170 4216 005171 6257 005172 5640 005173 5600 005174 4213 005175 5766 005176 5670 005177 4212 5200 PAGE DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 158 005200 4777 FULPRC, JMS I (GESWIT 005201 0002 "B-300 /BACK SPACE TERMINAL? 005202 5211 JMP NOBCKS 005203 4776 JMS I (MVCORE 005204 7772 -6 005205 6201 CDF 0 005206 6337 BACKSP 005207 6211 CDF 10 005210 1360 FORW+11 005211 4777 NOBCKS, JMS I (GESWIT 005212 0001 "A-300 /MODIFY ASK TO COLON? 005213 5216 JMP NOCOL 005214 1375 TAD (": 005215 5227 JMP SETASK 005216 4777 NOCOL, JMS I (GESWIT 005217 0022 "R-300 005220 5223 JMP NOBEL 005221 1374 TAD (207 /BELL IN ASK 005222 5227 JMP SETASK 005223 4777 NOBEL, JMS I (GESWIT 005224 0021 "Q-300 005225 5232 JMP NOQUES 005226 1373 TAD ("? /? IN ASK 005227 6211 SETASK, CDF 10 005230 3772 DCA I (DIDO 005231 6201 CDF 0 005232 4777 NOQUES, JMS I (GESWIT 005233 0020 "P-300 005234 5243 JMP NOPAG 005235 4776 JMS I (MVCORE 005236 7772 -6 005237 6201 CDF 0 005240 6345 SFTFF 005241 6201 CDF 0 005242 3147 TERFF 005243 6211 NOPAG, CDF 10 005244 1771 TAD I (7726 /LOOK FOR SCOPE BIT 005245 0370 AND (200 005246 7650 SNA CLA 005247 5263 JMP NOSCOP 005250 1367 TAD (210 /BACKSPACE 005251 3766 DCA I (SPLAT /FOR RUBOUT 005252 1365 TAD (-120 005253 3004 DCA LINLEN 005254 1364 TAD (-30 005255 3005 DCA PAGLEN 005256 1363 TAD (-200 005257 3003 DCA PAUS 005260 1003 TAD PAUS 005261 3120 DCA WAIT 005262 5265 JMP SCOPMR DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 159 005263 1362 NOSCOP, TAD (ISZ ECHO 005264 3761 DCA I (DELSCP /KILL BS-SPACE-BS 005265 6201 SCOPMR, CDF 0 005266 1760 TAD I (CDTBL+42 005267 0357 AND (3777 /ELIMINATE ALT-MODE SWITCH 005270 7041 CIA 005271 7450 SNA 005272 1005 TAD PAGLEN 005273 3005 DCA PAGLEN 005274 1756 TAD I (CDTBL+46 /CHECK = OPTION 005275 7041 CIA 005276 7450 SNA 005277 1004 TAD LINLEN /ALREADY DEFINED (SET?) 005300 3004 DCA LINLEN 005301 1004 TAD LINLEN 005302 3006 DCA CHRCNT 005303 1005 TAD PAGLEN 005304 3007 DCA LINCNT 005305 4777 NOTTWD, JMS I (GESWIT 005306 0023 "S-300 /SAVE SWITCH;GO BACK TO KM. 005307 7410 SKP 005310 5763 JMP I (7600 /WITH PATCHES SET 005311 4777 JMS I (GESWIT 005312 0027 "W-300 /WRITE PROGRAM? 005313 5755 JMP I (NOWRIT 005314 1354 TAD (340 /YES;SET L C;NO EXECUTION 005315 3753 DCA I (LINE3A+3 005316 7325 CLA CLL IAC CML RAL /'GO'=3 005317 3752 DCA I (MODE 005320 1351 TAD (ENDWRT /SET TO COME BACK HERE 005321 6211 CDF 10 005322 3750 DCA I (FORLEX+2 005323 5747 JMP I (NOWRIT+3 /SIMULATE ALT-MODE DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 160 005324 1346 ENDWRT, TAD (LEXIT /RESET 005325 6211 CDF 10 005326 3750 DCA I (FORLEX+2 005327 1370 TAD (200 005330 3745 DCA I (PC 005331 6221 CDF 20 005332 1344 TAD (GORETN-1 005333 3743 DCA I (PDLXR /RESET PDL FOR RETURN 005334 6201 CDF 0 005335 7307 CLA CLL IAC RTL /'WRITE'=4 005336 5742 JMP I (CHENTR 005342 0201 005343 0011 005344 7535 005345 0022 005346 2114 005347 5403 005350 3411 005351 5324 005352 5450 005353 6266 005354 0340 005355 5400 005356 4246 005357 3777 005360 4242 005361 3056 005362 2000 005363 7600 005364 7750 005365 7660 005366 0063 005367 0210 005370 0200 005371 7726 005372 1250 005373 0277 005374 0207 005375 0272 005376 5600 005377 5635 5400 PAGE DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 161 005400 4777 NOWRIT, JMS I (GESWIT 005401 0000 0 /CHECK ALT-ESC 005402 5210 JMP NOALTM /NONE 005403 6211 CDF 10 /YES CHANGE EXIT 005404 1376 TAD (FORLEX 005405 3775 DCA I (START 005406 6201 CDF 0 005407 5216 JMP YESGO 005410 4777 NOALTM, JMS I (GESWIT /CHECK IF GO 005411 0007 "G-300 005412 7610 SKP CLA 005413 5216 JMP YESGO 005414 1374 TAD (340 005415 3773 DCA I (LINE3A+3 /SET L C 005416 7040 YESGO, CMA 005417 1250 TAD MODE 005420 7640 SZA CLA /IF START ERASE ALL 005421 5227 JMP NOSTRT 005422 3772 DCA I (LINE0A 005423 1371 TAD (LINE1 005424 6211 CDF 10 005425 3770 DCA I (BUFR 005426 6201 CDF 0 005427 1251 NOSTRT, TAD CHNDCA 005430 3767 DCA I (CHENTR /RESET CHAIN ENTRY 005431 4766 JMS I (MVCORE /NOW MOVE HEADER UP 005432 7400 -400 005433 6201 CDF 0 005434 6000 POPSUB 005435 6221 CDF 20 005436 0000 0 005437 4766 JMS I (MVCORE /AND PDL (WIPE OUT BATCH?) 005440 7700 -100 005441 6201 CDF 0 005442 6411 PDLMON 005443 6221 CDF 20 005444 7500 7500 005445 4765 CDEXIT, JMS I (COCLR 005446 1250 TAD MODE /GO TO FOCAL 005447 5767 JMP I (CHENTR DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 162 005450 0000 MODE, 0 005451 3217 CHNDCA, STRTSW&177+3200 005565 1757 005566 5600 005567 0201 005570 0060 005571 0227 005572 6210 005573 6266 005574 0340 005575 0177 005576 3407 005577 5635 5600 PAGE DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 163 /MOVE CORE ROUTINE: JMS MVCORE / -# OF WORDS / CDF FROM / ADRESS FROM / CDF TO / ADRESS TO 005600 0000 MVCORE, 0 005601 1600 TAD I MVCORE 005602 3232 DCA MVCNT 005603 2200 ISZ MVCORE 005604 1600 TAD I MVCORE 005605 3220 DCA FRMCDF 005606 2200 ISZ MVCORE 005607 1600 TAD I MVCORE 005610 3233 DCA MVPTFR 005611 2200 ISZ MVCORE 005612 1600 TAD I MVCORE 005613 3223 DCA TOCDF 005614 2200 ISZ MVCORE 005615 1600 TAD I MVCORE 005616 3234 DCA MVPTTO 005617 2200 ISZ MVCORE 005620 7402 FRMCDF, HLT 005621 1633 TAD I MVPTFR 005622 2233 ISZ MVPTFR 005623 7402 TOCDF, HLT 005624 3634 DCA I MVPTTO 005625 2234 ISZ MVPTTO 005626 2232 ISZ MVCNT 005627 5220 JMP FRMCDF 005630 6201 CDF 0 005631 5600 JMP I MVCORE 005632 0000 MVCNT, 0 005633 0000 MVPTFR, 0 005634 0000 MVPTTO, 0 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 164 /GET A SWITCH ROUTINE: JMS GESWIT / CODE: ALTESC=0,A-Z="X-300,0-9="#-225 / RETURN NOT SET / RETURN SET 005635 0000 GESWIT, 0 005636 1635 TAD I GESWIT 005637 7041 CIA 005640 3265 DCA SWITNU /SAVE SWITCH NUMBER NEGATIVE 005641 1267 TAD SWILOC 005642 3266 DCA SWIPNT /RESET POINTER 005643 1265 TAD SWITNU 005644 7640 SZA CLA /ALT-ESC? 005645 5251 JMP NEXSWI /NO 005646 7240 CLA CMA /YES 005647 3265 DCA SWITNU /ROTATE ONLY ONCE 005650 7410 SKP /KEEP POINTER AT FIRST WORD 005651 2266 NEXSWI, ISZ SWIPNT /NEXT WORD 005652 7320 CLA CLL CML /SET MASK-BIT 005653 7010 SWILUP, RAR 005654 7430 SZL /AT END OF WORD? 005655 5251 JMP NEXSWI /YES;TO NEXT WORD,DON'T BUMP SWITNU 005656 2265 ISZ SWITNU /RIGHT LOC? 005657 5253 JMP SWILUP /NO;SHIFT MORE 005660 0666 AND I SWIPNT /YES;AND MASK WITH SWITCH 005661 2235 ISZ GESWIT 005662 7640 SZA CLA /BIT SET? 005663 2235 ISZ GESWIT /YES;BUMP RETURN 005664 5635 JMP I GESWIT 005665 0000 SWITNU, 0 005666 0000 SWIPNT, 0 005667 4242 SWILOC, CDTBL+42 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 165 /DEVICE CODE TO NAME AND STORE ROUTINE / TAD DEVNO / JMS DNTONM / ADRESS FOR STORE / ERROR RETURN (NOT IN LIST) / NORMAL RETURN (STORED) 005670 0000 DNTONM, 0 005671 0377 AND (17 /TAKE DEVICE BITS 005672 1376 TAD (USRTBL /ADRESS OF TABLE 005673 3341 DCA DNPTR 005674 1670 TAD I DNTONM 005675 3342 DCA PUTDCN /SET ADRESS FOR STORE 005676 2270 ISZ DNTONM /AT ERROR RETURN 005677 1741 TAD I DNPTR /GET USR DEVICE NAME 005700 7041 CIA 005701 3343 DCA DCCODE 005702 1375 TAD (DVCDNM /START SEARCH 005703 3341 DCA DNPTR 005704 7300 DNLOOP, CLA CLL 005705 1343 TAD DCCODE 005706 1741 TAD I DNPTR /GET CODE,IS IT .GE. DCCODE? 005707 2341 ISZ DNPTR 005710 7450 SNA 005711 5325 JMP DNFND+2 /EXACT 005712 7430 SZL 005713 5337 JMP DNEXIT /NOT IN LIST 005714 1741 TAD I DNPTR /SEE IF WE GET AN INDEXED NAME 005715 7430 SZL 005716 5323 JMP DNFND /YES;OVERFLOW IS MAX#-# 005717 2341 ISZ DNPTR 005720 2341 ISZ DNPTR /BUMP POINTER-SEARCH ON 005721 2341 ISZ DNPTR 005722 5304 JMP DNLOOP 005723 7041 DNFND, CIA /#-MAX# 005724 1741 TAD I DNPTR /# 005725 7421 MQL 005726 2341 ISZ DNPTR 005727 1741 TAD I DNPTR /TRANSFER NAME 005730 3742 DCA I PUTDCN 005731 2341 ISZ DNPTR 005732 2342 ISZ PUTDCN 005733 7501 MQA /ADD IN NUMBER 005734 1741 TAD I DNPTR 005735 3742 DCA I PUTDCN 005736 2270 ISZ DNTONM /NORMAL RETURN 005737 7300 DNEXIT, CLA CLL 005740 5670 JMP I DNTONM 005741 0000 DNPTR, 0 005742 0000 PUTDCN, 0 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 165-1 005743 0000 DCCODE, 0 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 166 005744 0000 PATCH, 0 /ROUTINE PATCH CDF ADRESS OF TABLE 005745 3357 DCA PATCDF /COMES IN WITH CDF X 005746 1744 TAD I PATCH /GET LIST ADRESS 005747 2344 ISZ PATCH 005750 3364 DCA PATATO 005751 1764 PATLUP, TAD I PATATO /GET ADRESS TO PATCH 005752 7450 SNA 005753 5744 JMP I PATCH /0 ENDS LIST 005754 3365 DCA PATTER 005755 2364 ISZ PATATO 005756 1764 TAD I PATATO /A LA RIM LOADER 005757 7402 PATCDF, HLT 005760 3765 DCA I PATTER 005761 6201 CDF 0 005762 2364 ISZ PATATO 005763 5351 JMP PATLUP 005764 0000 PATATO, 0 005765 0000 PATTER, 0 005766 6212 DEVERR, CIF 10 /USER ERROR 7 005767 4774 JMS I (7700 005770 0007 7 005771 0007 7 005774 7700 005775 3633 005776 4400 005777 0017 6000 PAGE DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 167 000124 0007 000125 7762 000126 0002 000127 7575 000130 0240 000131 0000 000132 2342 000133 7524 000134 0377 000135 0211 000136 3050 000137 6000 000140 0215 000141 0755 000142 0617 000143 0100 000144 1200 000145 0077 000146 0212 000147 0220 000150 1371 000151 2516 000152 0200 000153 7760 000154 0004 000155 7772 000156 0022 000157 5723 000160 0060 000161 0012 000162 1000 000163 0177 000164 7200 000165 1157 000166 0214 000167 2000 000170 0430 000171 7600 000172 7400 000173 2072 000174 1147 000175 0246 000176 0232 000177 0562 0000 FIELD 0 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 168 6000 *6000 6000 POPSUB=. 0000 RELOC 0 /GETS LOADED IN FIELD 2 /CORE MAP: /0-177: PDL SUBROUTINES /200-X: TEXT /X-7545: PUSHDOWN LIST /7546-7577: MONTHS OF THE YEAR 000000* 0000 0 /FOR RUBOUT PROTECTION;SEE RUB1 000001* 0060 PSHBUF, BUFR /INDIRECT FOR TEXT PROTECTION 000002* 6201 PSHCDF, CDF 0 000003* 2740 PSHERR, ERROL+3 /POINTER TO ERRROR ROUTINE 000004* 0000 0 000005* 0000 0 /FOR ODT 000006* 0000 0 000007* 0000 PSHCNT, 0 000010* 0000 PSHAX, 0 000011* 7535 PDLXR, GORETN-1 /MAIN AX FOR PDL 000012* 7774 PSHM4, -4 000013* 0007 PSHMSK, 7 000014* 0375 POPOVR, 376-1 /PO=PDL. OVERFLOW 000015* 7773 PSHM5, -5 000016* 7402 FLDCDI, HLT /CDI CURRENT 000017* 5420 JMP I FLDRET /EXIT 000020* 0000 FLDRET, 0 000021* 0000 ZPOPA, 0 /ONE ITEM FROM PDL TO AC;OLD AC IN MQ 000022* 4036 JMS FLDSET 000023* 1411 TAD I PDLXR 000024* 5016 JMP FLDCDI /NO INC RETURN 000025* 0000 ZPUSHA, 0 /AC TO PDL;AC TO MQ 000026* 4036 JMS FLDSET 000027* 7240 CLA CMA 000030* 4155 JMS PCHK 000031* 7501 MQA 000032* 3411 DCA I PDLXR 000033* 7240 CLA CMA 000034* 4155 JMS PCHK 000035* 5016 JMP FLDCDI /NO INC RETURN /LOCAL FIELD SATELLITES FOR ALL POPS EXCEPT /POPJ MUST BE AS FOLLOWS: /XPOPU, 0 / MQL / FLDCUR (DEFINED ON OTHER PAGE) / CIF T (WHERE T IS FIELD OF POP SUBS.) / JMS I .+1 / ZPOPU DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 169 /FLDCUR=CLA FOR FIELD 0 / =CLA IAC 1 / =CLA IAC RAL 2 / =CLA CLL CML IAC RAL 3 / =CLA IAC RTL 4 / =CLA CLL CMA RTL 5 / =CLA CLL CMA RAL 6 / =CLA CMA 7 000036* 0000 FLDSET, 0 /SUBROUTINE FOR ANALYZING FIELDS AND ADRESSES 000037* 0013 AND PSHMSK /TAKE ONLY 7 BITS 000040* 7104 CLL RAL 000041* 7006 RTL 000042* 1002 TAD PSHCDF 000043* 3056 DCA FLDCDF /CALLING DATA FIELD 000044* 1002 TAD PSHCDF /NOW LET'S SEE WHICH D.F. HE PUT 000045* 6214 RDF 000046* 3077 DCA ACCES /ACCES DATA FIELD 000047* 6221 CDF T /THIS FIELD 000050* 7344 CLA CLL CMA RAL /JMS FLDSET ALWAYS FIRST INSTR. OF ZPOPU'S 000051* 1036 TAD FLDSET /ZPOPU+2 000052* 3020 DCA FLDRET /NOW BECAUSE OF STANDARD FORM OF SATELLITES 000053* 1015 TAD PSHM5 /-5 PLUS THE 000054* 1420 TAD I FLDRET /CONT. OF ZPOPU ENTRY,GIVES ADRESS OF XPOPU 000055* 3020 DCA FLDRET 000056* 7402 FLDCDF, HLT /CHANGE TO CALLING D.F. 000057* 1420 TAD I FLDRET /THIS IS ADRESS OF ARG. 000060* 3020 DCA FLDRET /AND FINAL RETURN ADD. FOR POPA,PUSHA 000061* 7240 CLA CMA /FOR RELATIVE ADRESSING:'TAD FLDRET' 000062* 1420 TAD I FLDRET /ARGUMENT-1 FOR AX 000063* 3010 DCA PSHAX 000064* 7305 CLA CLL IAC RAL /BUILD A CIF CDF CALLING FIELD 000065* 1056 TAD FLDCDF /FOR FINAL RETURN 000066* 3016 DCA FLDCDI 000067* 6221 CDF T /BACK TO THIS FIELD 000070* 5436 JMP I FLDSET /BY THE WAY: THE DATA FIELD IS ALWAYS RESET TO CURRENT /THIS CAN BE USEFUL /CALLS IN A PROGRAM WILL LOOK LIKE THIS: /CDF ACCES /PUSHF / LOC /RELATIVE: LOC-.-1 /WILL PUSH 4 WORDS STARTING IN LOC IN FIELD ACCES DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 170 000071* 0000 ZPUSHF, 0 /4 WORDS IN PDL;AC CONSERVED;AC TO MQ 000072* 4036 JMS FLDSET 000073* 1012 TAD PSHM4 000074* 4155 JMS PCHK 000075* 1012 TAD PSHM4 000076* 3007 DCA PSHCNT 000077* 7402 ACCES, HLT /SET BY FLDSET 000100* 1410 TAD I PSHAX /"" 000101* 6221 CDF T 000102* 3411 DCA I PDLXR /STORE IN PDL 000103* 2007 ISZ PSHCNT 000104* 5077 JMP ACCES /LOOP 000105* 1012 TAD PSHM4 000106* 4155 JMS PCHK /RESET PDLXR 000107* 7501 PSHFEX, MQA /RESTORE AC 000110* 2020 ISZ FLDRET /BUMP PAST ARG 000111* 5016 JMP FLDCDI 000112* 0000 ZPOPF, 0 /4 WORDS FROM PDL IN LOC;AC CONSERVED;AC TO MQ 000113* 4036 JMS FLDSET 000114* 1012 TAD PSHM4 000115* 3007 DCA PSHCNT 000116* 1077 TAD ACCES /RELOCATE CDF ACCES 000117* 3122 DCA .+3 000120* 6221 POPLOP, CDF T 000121* 1411 TAD I PDLXR 000122* 7402 HLT 000123* 3410 DCA I PSHAX 000124* 2007 ISZ PSHCNT 000125* 5120 JMP POPLOP /LOOP 000126* 5107 JMP PSHFEX /SAME RETURN AS ZPUSHF /!!!!! /POPJ IS THE ONLY POPU THAT NEEDS ANOTHER SATELLITE! /XPOPJ, CIF CDF T / JMP I .+1 /JMP!! / ZPOPJ DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 171 000127* 0000 ZPUSHJ, 0 /GO TO ARG IN ACCES;CDF ALSO ACCES;AC CONSERVED 000130* 4036 JMS FLDSET /AC TO MQ 000131* 7344 CLA CLL CMA RAL /-2 000132* 4155 JMS PCHK 000133* 7001 IAC /TO BUMP PAST ARG 000134* 1020 TAD FLDRET /RETURN AFTER POPJ 000135* 3411 DCA I PDLXR 000136* 1016 TAD FLDCDI /CDI AFTER POPJ 000137* 3411 DCA I PDLXR 000140* 7344 CLA CLL CMA RAL 000141* 4155 JMS PCHK 000142* 7305 CLA CLL IAC RAL 000143* 1077 TAD ACCES /BUILD CDI ACCES 000144* 3146 DCA .+2 000145* 7501 MQA 000146* 7402 HLT 000147* 5410 JMP I PSHAX /!! 000150* 1411 ZPOPJ, TAD I PDLXR /AC INCS RETURN AND IS LOST;MQ CONSERVED 000151* 3020 DCA FLDRET 000152* 1411 TAD I PDLXR 000153* 3016 DCA FLDCDI 000154* 5016 JMP FLDCDI 000155* 0000 PCHK, 0 /SUB TO BACKUP PDL AND CHECK OVERFLOW 000156* 1011 TAD PDLXR /AC COMES IN WITH AMOUNT OF BACKUP 000157* 3011 DCA PDLXR 000160* 1011 TAD PDLXR 000161* 7141 CIA CLL 000162* 6211 CDF P /SOME OTHER FIELD 000163* 1401 TAD I PSHBUF /GET LOWER BOUNDARY 000164* 6221 CDF T 000165* 7620 SNL CLA 000166* 5555 JMP I PCHK /NO OVERFLOW 000167* 1014 TAD POPOVR 000170* 6203 CIF CDF L 000171* 5403 JMP I PSHERR 4572 VPOPA=JMS I . /FOR FIELD T POPS 000172* 7000 NOP 4573 VPUSHA=JMS I . 000173* 7000 NOP 4574 VPUSHJ=JMS I . 000174* 7000 NOP 5575 VPOPJ=JMP I . 000175* 7000 NOP 4576 VPUSHF=JMS I . 000176* 7000 NOP 4577 VPOPF=JMS I . 000177* 7000 NOP 6200 RELOC DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 172 6200 *6200 0200 RELOC 200 000200* 0000 PC0, 0 /TEXT BUFFER HEAD 000201* 0000 0 /OR C(LINE1) 000202* 0000 0 / 000203* 0000 0 000204* 0000 0 000205* 5051 5051 /LPAR,RPAR FOR DUMP 000206* 0060 BUFR 000207* 0305 LINE4+1 000210* 0227 LINE0, LINE1 6210 LINE0A=LINE0+POPSUB 000211* 0000 0 000212* 0355 TEXT "C-DATA PROC. FOCAL - DPF" 000213* 0401 000214* 2401 000215* 4020 000216* 2217 000217* 0356 000220* 4006 000221* 1703 000222* 0114 000223* 4055 000224* 4004 000225* 2006 000226* 0000 0226 *.-1 000226* 7715 7715 /DUMMY CR 6227 LINE1A=.+POPSUB /TEXT FOR AUTOMATIC LOADING AFTER CHAIN 000227* 0245 LINE1, LINE2 / 000230* 0212 212 /LINE 1.1 000231* 1740 TEXT "O O TTY : ,E" 000232* 1740 000233* 2424 000234* 3140 000235* 7240 000236* 4040 000237* 4040 000240* 4040 000241* 4040 000242* 4040 000243* 5405 000244* 0000 0244 *.-1 000244* 7715 7715 6245 LINE2A=.+POPSUB DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 173 000245* 0263 LINE2, LINE3 000246* 0224 224 /LINE 1.2 000247* 1740 TEXT "O I TTY : ,E" 000250* 1140 000251* 2424 000252* 3140 000253* 7240 000254* 4040 000255* 4040 000256* 4040 000257* 4040 000260* 4040 000261* 5405 000262* 0000 0262 *.-1 000262* 7715 7715 6263 LINE3A=.+POPSUB 000263* 0000 LINE3, 0000 000264* 0236 236 /LINE 1.3 000265* 1440 TEXT "L R DSK : FCINIT. FO <00.0> " 000266* 2240 000267* 0423 000270* 1340 000271* 7240 000272* 0603 000273* 1116 000274* 1124 000275* 5640 000276* 0617 000277* 4074 000300* 6060 000301* 5660 000302* 7640 000303* 0000 0303 *.-1 000303* 7715 7715 6304 LINE4A=.+POPSUB 0304 LINE4=. 000304* 7715 7715 000305* 7715 7715 6306 RELOC DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 174 /OVERLAYS 6306 DIVOVL=. 7471 RELOC DUBDIV+10 007471* 1042 TAD AC1L 007472* 1046 TAD LORD 007473* 3256 DCA MP2 007474* 7004 RAL 007475* 1045 TAD HORD 007476* 1041 TAD AC1H 007477* 7420 SNL 007500* 5304 JMP .+4 007501* 3045 DCA HORD 007502* 1256 TAD MP2 007503* 3046 DCA LORD 007504* 7200 CLA 007505* 1254 TAD MP1 007506* 7004 RAL 007507* 3254 DCA MP1 007510* 1200 TAD MP4 007511* 7004 RAL 007512* 3200 DCA MP4 007513* 2255 ISZ MP3 007514* 5267 JMP DV3 007515* 1254 TAD MP1 007516* 3046 DCA LORD 007517* 1200 TAD MP4 007520* 3045 DCA HORD 007521* 5661 JMP I DUBDIV 6337 RELOC 6337 BACKSP=. 1360 RELOC FORW+11 /FOR TERMINAL WITH BS 001360* 5362 JMP .+2 001361* 1364 TAD M30 001362* 1002 TAD SPC 001363* 3034 DCA T3 001364* 7750 M30, -30 001365* 1034 TAD T3 6345 RELOC 6345 SFTFF=. 3147 RELOC TERFF /FOR SIMULATED FF'S 003147* 2007 ISZ LINCNT 003150* 7410 SKP 003151* 5355 JMP .+4 003152* 1116 TAD LF 003153* 4515 JMS I DXOUT 003154* 5347 JMP TERFF 6353 RELOC DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 175 6353 NEWVAR=. 3425 RELOC STSECR 003425* 4400 4400 003426* 0000 0000 003427* 0013 0013 003430* 0001 DOLL1, 0001 003431* 0000 0000 003432* 4300 4300 3435 NMBSG1=.+2 003433* 0000 ZBLOCK 4 003437* 4100 4100 3442 EXCLA1=.+2 003440* 0000 ZBLOCK 4 003444* 4200 4200 3447 QUOTS1=.+2 003445* 0000 ZBLOCK 4 003451* 2011 2011 /PI 003452* 0000 0000 003453* 0002 0002 003454* 3110 3110 003455* 3756 3756 003456* 2605 2605 /VERSION NUMBER 50.1 003457* 0000 0000 003460* 0006 0006 003461* 3103 3103 003462* 1463 1463 3463 STVAR1=. 6411 RELOC 6411 PDLMON=. 7500 RELOC 7500 007500* 0000 ZBLOCK 36 007536* 0234 GORETN, INPUTX+2 /RETURN FOR GOTO 007537* 6213 CIF CDF P 007540* 0000 ZBLOCK 40 7600 PDLEND=. 6511 RELOC DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 176 /PATCHES 006511 1545 NOFUNC, VARTOP / 006512 5570 XSQRT-10 006513 5737 FNTABF+11 / 006514 3376 ERCALL 006515 5741 FNTABF+13 / 006516 3376 ERCALL 006517 5743 FNTABF+15 / 006520 3376 ERCALL 006521 5745 FNTABF+17 / 006522 3376 ERCALL 006523 5747 FNTABF+21 / 006524 3376 ERCALL 006525 5751 FNTABF+23 / 006526 3376 ERCALL 006527 0000 0000 OTHVAR, /XNMBSG / / NMBSG1 / XEXCLA / / EXCLA1 / XQUOTS / / QUOTS1 006530 2667 XDOL / 006531 3430 DOLL1 006532 0000 0000 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 177 006533 0031 REDPRC, LASTV /ADRESS 006534 3463 STVAR1 006535 0133 END / 006536 3463 STVAR1 006537 0114 FSIZE / 006540 0006 6 006541 0115 DECP / 006542 0003 3 006543 0123 GINC / 006544 0005 5 006545 0117 MFLT / 006546 7775 -3 006547 0116 DIGITS / 006550 0007 7 006551 5510 TWOPI+2 / 006552 3756 3756 006553 5514 PI+2 / 006554 3756 3756 006555 5520 PIOT+2 / 006556 3756 3756 006557 6275 PTEN+2 / 006560 3147 3147 006561 6603 FPNT+3 / 006562 3043 DCA OVER1 006563 6604 FPNT+4 / 006564 3047 DCA OVER2 006565 6741 ZERO+20 / 006566 3043 DCA OVER1 006567 7136 TEST2 / 006570 0027 27 006571 7232 DMULT+32 / 006572 5257 DMDONE&177+5200 006573 7266 DMDONE+7 / 006574 3047 DCA OVER2 006575 7301 MULDIV+4 / 006576 2047 ISZ OVER2 006577 7460 MIF / 006600 7751 -27 006601 0000 0000 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 178 0000 FIELD 0 0200 *200 $$$$ DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 179 A 0045 BUFFER 7363 COMPO 0343 DIVIDE 7346 AAMESG 0216 BUFR 0060 COMPUT 2234 DIVOVL 6306 ABSOL 7122 BUMP 2043 CONESC 2165 DIV1 6556 ABSOLV 6306 C 0047 CONTIN 0214 DIV2 7147 ABSOL2 6163 CALL 2032 CONVER 2155 DLOAD 1245 ABSOL3 7575 CBLOCK 2433 CON1 5236 DMDONE 7257 ACCES 0077 CCDI 2711 CORITE 2320 DMEXIT 2671 ACMINS 7000 CCLOSE 2342 COSTA 2426 DMPSW 0076 AC1H 0041 CCLOSR 2366 COWRIT 0105 DMULT 7200 AC1L 0042 CCR 0075 CTRLS 2675 DNEXIT 5737 ADD 0061 CDEXIT 5445 CTRLSO 2610 DNFND 5723 ADDO 5571 CDTBL 4200 CVT 0066 DNLOOP 5704 ADDR 0040 CELSO 0054 C140 3177 DNORM 7535 ADONE 7070 CEXP 6704 C144 6151 DNPTR 5741 AF 5077 CEX1 6705 C200 0102 DNTONM 5670 AGAIN 1312 CF 5105 C260 0110 DNUMBR 6516 ALFZ 5155 CFRS 0132 C3 5540 DO 0451 ALF1 5160 CFRSX 0126 C5 5534 DOK 2123 ALF2 5163 CHAINE 1615 C7 5530 DOLL 3430 ALGN 6772 CHAINS 4740 C9 5524 DOLL1 3430 ALIGN 7020 CHANEL 1071 D 0041 DONE 2141 ALIST 1375 CHAR 0121 DATUM 7276 DOONE 0513 AMOUNT 7117 CHARL 0077 DATUMA 7452 DOUBLE 0127 ARCALG 5132 CHENTR 0201 DAXIN 0173 DPART 0135 ARCRTN 5224 CHKINP 5000 DCCODE 5743 DPC 0167 ARG 2246 CHNDCA 5451 DCDYES 1127 DPCVPT 6277 ARGNXT 1725 CHRCNT 0006 DCHAR 0100 DPN 6302 ARIT 5000 CHRSTO 1546 DCONP 6300 DPT 6155 ARPNT 2454 CHRT 6147 DCONT 0522 DPT1 0171 ARRAY 2436 CHRTST 0557 DCWBM 0754 DRONE 4432 ARTN 5200 CLCU 5630 DEBGSW 0026 DRONEP 4566 ASHFT 7062 CLF 0074 DECALL 0134 DSAVE 6440 ASK 1204 CLNGTH 0101 DECODE 1114 DTHIS 0170 ATEM 0031 CLOOUT 2363 DECON 6427 DTST 6450 ATLIST 1564 CNMTMP 0373 DECONV 6400 DUBDIV 7461 ATSW 0003 CNTR 0065 DECP 0115 DUBLAD 6535 AUTO1 0010 CNUM 0156 DECR 3333 DVAR 5007 AUTO2 0011 COARG 2425 DEFEAT 3250 DVCDNM 3633 AUTO3 0012 COCLR 1757 DELETE 4565 DV3 7467 AXIN 0010 COCNT 2360 DELSCP 3056 DXOUT 0115 AXIND 3143 CODENU 1400 DEPTH 0114 DXRT 0172 AXOUT 0017 COHNDL 2400 DERR 0075 E 0042 B 0046 COINPT 2307 DEVC 1243 ECALL 1600 BACKSP 6337 COMBO 2472 DEVERR 5766 ECHCHK 1101 BACK1 3275 COMBUF 3200 DEVHLD 0050 ECHFLG 0044 BETZ 5166 COMDEV 2434 DEVNO 0054 ECHO 0000 BET1 5171 COMEXT 2257 DF 5110 ECHOGO 2571 BET2 5174 COMFLG 0102 DFILL 1305 ECHOLS 2201 BF 5102 COMGO 1164 DGRP 0454 EFOP 0055 BLKCNT 0242 COMLIS 1357 DGRP1 0471 EFUN 1745 BLKTMP 2242 COMLST 0770 DIDO 1250 EFUN2 1756 BLLL 1531 COMMEN 0617 DIGIT 6515 EFUN3 2033 BLOCK 1543 COMON 2460 DIGITS 0116 EFUN3I 1775 BR 2647 COMPAR 1300 DINPUT 6303 ELPAR 1766 BRSW 2761 COMPIF 2730 DISMIS 1157 END 0133 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 179-1 ENDASK 1240 FGO5 6102 FL100 0314 GTEM 0021 ENDCOM 6372 FIGO1 6220 FM12 6153 GTMON 1147 ENDERR 6006 FIGO4 6257 FNEG 5361 GZERR 0256 ENDESC 1235 FILEN 0051 FNTABF 5726 HANDAD 1200 ENDFI 6241 FILER 6367 FNTABL 5700 HANDOK 1267 ENDLOD 1544 FILEST 0530 FNTAPT 2017 HND 2021 ENDT 0136 FILGO 0544 FOCTXT 0353 HORD 0045 ENDWRT 5324 FILIST 0552 FOR 1010 IBAR 0323 ENUM 1734 FILL 1276 FORLEX 3407 IBAR1 0214 EOF 3046 FILLER 3342 FORMAT 1306 IBLK 0454 EOL 0175 FILOUT 3320 FORMER 1327 ICHAR 0445 EPAR 1711 FIN 3157 FORMFL 1307 ICHARL 0467 EPAR2 1771 FINCR 1035 FORW 1347 IF 2650 ERASE 2207 FIND 0547 FOUT 3167 IFBRCO 2754 ERCALL 3376 FINDLN 4557 FOUTPU 0130 IFER 2670 ERG 2227 FINDN 2251 FPNT 6600 IFLIST 3400 ERL 2224 FINFIN 1110 FPRNT 3253 IFOK 2656 ERRCOD 0017 FINKP 1106 FRAN 5544 IF1 2752 ERROL 2735 FINPUT 0131 FRMCDF 5620 IF2 2737 ERRONC 2734 FISW 0052 FRSTIF 2653 IF3 2742 ERROR 6001 FIX 7124 FSIN 5405 IGNOR 0224 ERROR1 4435 FIXM 7143 FSIZE 0114 ILIST 2575 ERROR2 4507 FLAC 0044 FULPRC 5200 IN 0526 ERT 2217 FLAD 6707 FUNCST 2020 INALT 0554 ERVX 2241 FLAG1 5360 GEND 2337 INBLK 0063 ESC 1243 FLAG2 5125 GEPUSW 2227 INBUF 0113 ESCA 3123 FLARG 7173 GESWIT 5635 INBUFF 5600 ESRETN 0326 FLARGH 0753 GETARG 1411 INCHT 0523 ETERM 1644 FLARGP 0125 GETC 4547 INCOMP 0553 ETERMN 1640 FLDCDF 0056 GETDEV 0755 INCONV 0532 ETERM1 1623 FLDCDI 0016 GETLN 4556 INDEV 0064 ETERM2 1652 FLDRET 0020 GETLP 1422 INDOL 0462 EVAL 1606 FLDSET 0036 GETNAM 1121 INDRCT 6664 EVLERR 0674 FLDV 7303 GETSGN 1045 INECH 0014 EVLEX 1706 FLD0 7300 GETVAR 1416 INEX 0545 EXCLA 3444 FLD1 7301 GET1 2333 INFIX 2370 EXCLA1 3442 FLEX 6716 GET3 2352 INFLG 0013 EXITOS 0562 FLGT 6670 GINC 0123 INHND 0067 EXIT1 5234 FLIMIT 1045 GLIST 1405 INLIST 1556 EXIT2 5502 FLINTP 6200 GO 5221 INORM 6304 EXIT3 7563 FLIST1 0601 GOK 2244 INPUAC 0767 EXP 0044 FLIST2 0576 GOKILL 0411 INPUT 0755 EXTENS 0025 FLMY 6765 GONE 0336 INPUTX 0232 EXTR 2316 FLNGTH 0052 GORETN 7536 INSUB 0035 EX1 0040 FLOG 5237 GOSTRT 5065 INTEGE 0053 F 0043 FLOP 1672 GOSUB 1710 INTEXI 2664 FCONT 1052 FLOUT 3356 GOSUB1 1616 IOPEN 0600 FCOS 5400 FLOUTP 6017 GOSWIT 0107 IOWAIT 1371 FCOUNT 3347 FLPT 6666 GOTO 0604 IPNFLG 0046 FEND3 2272 FLP5 0317 GRPTST 0743 IPNTR 0522 FETCHE 1617 FLSU 6706 GSERCH 1433 IRETN 0331 FEXP 5020 FLTONE 2376 GSTRT 1457 IRST 0614 FGO2 6022 FLTXR 0014 GS1 1442 ITABLE 7350 FGO3 6040 FLTXR2 0015 GS2 1446 ITEMP 0521 FGO4 6045 FLTZER 7167 GS3 1447 ITER1 7363 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 179-2 JMPGOS 2570 LOOP01 6632 MULT10 6471 NOINPT 5025 JUMP 6663 LORD 0046 MULT2 6517 NOOUTP 5057 KEYRES 1564 LOWIN 3027 MVCNT 5632 NOPAG 5243 K37 2704 LOWLIB 1600 MVCORE 5600 NOPER 3330 K6 3305 LOWOTM 2564 MVPTFR 5633 NOQUES 5232 L 0000 LOWOUT 2522 MVPTTO 5634 NORF 6714 LASTLN 0025 LOWTTI 3043 M10PT 6157 NORM 6771 LASTOP 0056 LOWTTO 2556 M11 0112 NORMF 7345 LASTV 0031 LPRTST 2047 M12 2402 NOSAVE 1726 LEADCH 1304 L1 5324 M137 2363 NOSCOP 5263 LEDCHR 3251 L2 5327 M140 3040 NOSTRT 5427 LENF1 1703 L3 5332 M144 6150 NOS8 0740 LEXIT 2114 L4 5335 M15 3022 NOTEQ 1221 LF 0116 MAINTR 0200 M16 5570 NOTTWD 5305 LGOSUB 2553 MAKVAR 1505 M2 0106 NOWRIT 5400 LG2E 5113 MECH 0117 M30 1364 NOX 7072 LIB 2555 MEXIT 2110 M4 6152 NOX1 7106 LIBBLK 0056 MFLT 0117 M40 2322 NOX2 7101 LIBDEV 1540 MGETC 2205 M5 0111 OBLK 0270 LIBFIL 0055 MIF 7460 M77 0103 OCHCT 0342 LIBHND 0062 MINE 6463 NAGSW 0120 OCHK 2516 LIBLEN 1537 MINI 7343 NAME 1000 OCLCHK 2062 LIBLOW 2567 MINSKI 0051 NAMEC 1017 OCLOSE 0220 LIBN 0415 MINTEG 0437 NAMECT 1133 OCLOSR 1367 LIBRET 2557 MINUSA 6467 NAMENC 1022 OFFSET 4737 LIERR 1613 MINUSZ 6464 NAMEVL 0671 OFILES 7600 LINCNT 0007 MINUS2 6315 NAME2 1006 OLNGTH 0341 LINENO 0122 MIN40 2715 NAME3 1016 OM12 3340 LINE0 0210 MMINSK 3405 NAMGO 0361 ONE 5116 LINE0A 6210 MOD 5415 NAMLEN 1136 ONMTMP 0524 LINE1 0227 MODE 5450 NAMLOC 0022 OOPEN 0400 LINE1A 6227 MODIFY 2600 NAMLST 1323 OOVER 0321 LINE2 0245 MODSKP 2667 NAMOUT 1111 OP 2551 LINE2A 6245 MOD3 5070 NAMPT 2033 OPEN 2000 LINE3 0263 MONA 0110 NAMRET 1135 OPMINS 6767 LINE3A 6263 MONAME 3600 NAMSTO 1037 OPNEXT 1616 LINE4 0304 MONHUK 0370 NEGP 5124 OPNFLG 0045 LINE4A 6304 MPER 0016 NEW 0200 OPTABL 1733 LINLEN 0004 MPLUS 6465 NEWDEV 0026 OPTRI 2674 LINPUT 1465 MPOPA 0630 NEWLIN 3015 OPTRO 2673 LINRES 3144 MPOPF 0652 NEWVAR 6353 OPTR0 2672 LISA 0111 MPOPJ 0666 NEXSWI 5651 OPTR1 0337 LISTGO 2175 MPUSHA 0636 NMBASE 1131 OPTR2 0340 LIST3 0075 MPUSHF 0644 NMBSGN 3436 OPUT 3341 LIST6 0066 MPUSHJ 0660 NMBSG1 3435 OROI 2143 LIST7 0070 MP1 7454 NOALTM 5410 ORST 0430 LNGTH 2034 MP2 7456 NOBCKS 5211 OSETUP 0325 LOADER 1332 MP3 7455 NOBEL 5223 OTHER 2012 LOADGO 1636 MP4 7400 NOCHAR 0246 OTHVAR 6530 LOADUS 1345 MP5 7453 NOCOL 5216 OUT 3000 LOG2 5355 MP6 7410 NODECD 4614 OUTBLK 0070 LOG5 5340 MSPACE 6466 NODIG 3350 OUTBUF 5200 LOG6 5343 MULDIV 7275 NODIR 2463 OUTCLF 3012 LOG7 5346 MULT 6770 NOFUNC 6511 OUTDEV 3023 LOG8 5351 MULTY 4750 NOGOSB 1652 OUTDG 6164 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 179-3 OUTECH 0016 POPLOP 0120 REDPRC 6533 SIGNF 0050 OUTEM 3345 POPOVR 0014 RELESE 3417 SLOT 1206 OUTEXP 3344 POPSUB 6000 REMAIN 6514 SORTB 1130 OUTFLG 0015 PPTEN 6154 REPT 6156 SORTC 4552 OUTHND 0074 PRINTC 4553 RESMON 2370 SORTCN 0057 OUTINH 0047 PRNSGN 6145 RESOL 7123 SORTJ 4551 OUTOUT 2560 PRNT 2447 RESOLV 6170 SORTUL 2045 OUTSGN 3343 PRNTI 6146 RESOL3 7576 SPC 0002 OVER1 0043 PRNTLN 4555 RESOL5 6301 SPCMZE 1303 OVER2 0047 PROC 0613 RESTOR 1075 SPECIA 2177 OVRLAY 5000 PROCES 0612 RESTRT 2744 SPLAT 0063 O2 0304 PROCLB 2562 RET 3240 SPNA 7750 O3 0307 PSCOPS 3072 RETOUR 1735 SPNOR 4560 P 0010 PSHAX 0010 RETRN 2163 SQAC 5672 PACBUF 3073 PSHBUF 0001 RETRY 1231 SQCON1 5670 PACKC 4550 PSHCDF 0002 REVIT 7344 SQEND 5666 PACKST 0027 PSHCNT 0007 RIN 3311 SRETN 0371 PACX 3121 PSHERR 0003 RNDM 5572 SRNLST 2166 PAGLEN 0005 PSHFEX 0107 ROOTGO 5662 STARIT 5006 PALG 5461 PSHMSK 0013 ROT 3126 START 0177 PARTES 2061 PSHM4 0012 ROUND 6161 STARTF 5020 PATATO 5764 PSHM5 0015 RT 0307 STARTL 5262 PATCDF 5757 PTEN 6273 RUB1 3024 START1 0414 PATCH 5744 PT1 0030 RUB2 3060 STBLK 0053 PATLUP 5751 PT1D 6354 RUB3 3042 STFUNC 1774 PATTER 5765 PUSHA 4542 RUB4 3051 STOCHR 4545 PAUS 0003 PUSHF 4543 R6 3216 STRMSP 1270 PAXPNT 0124 PUSHJ 4540 SADR 6160 STRTSW 0217 PA1 3115 PUTDCN 5742 SAVBLK 1510 STSECR 3425 PC 0022 PUTDEV 2072 SAVCIF 1571 STVAR 3471 PCD 6342 PUTTEM 2107 SAVE 3747 STVAR1 3463 PCHECK 5445 P13 0101 SAVEPT 1473 SUBS 0036 PCHK 0155 P17 0104 SAVER 0560 SWILOC 5667 PCK1 3134 P177 0037 SAVNAM 1113 SWILUP 5653 PC0 0200 P2000 0320 SAVPR 1401 SWIPNT 5666 PC1 0617 P216 1364 SBAR 2635 SWITNU 5665 PDLEND 7600 P27 7121 SCEND 2624 T 0020 PDLMON 6411 P277 0105 SCHAR 2626 TABC 0001 PDLSTR 0176 P3 2046 SCNDIF 2654 TABLE 6665 PDLXR 0011 P337 0073 SCONT 2621 TAG1 7120 PER 0013 P377 3107 SCOPMR 5265 TASK 1206 PERD 1060 P40 0113 SCOPSU 2761 TASK4 1337 PERDSW 1132 P43 6305 SCOUNT 3346 TCRLF 1332 PGETLN 2364 P7600 0077 SECRTV 0174 TDUMP 2501 PI 5512 P77 0100 SET 1010 TELSW 0106 PIOT 5516 P7700 3133 SETASK 5227 TEM 5354 PI2 5235 P7740 0307 SETBLK 0103 TEMP 5126 PLCE 3364 QUOTS 3452 SETUP 4600 TEM7 0030 PLERR 1676 QUOTS1 3447 SEX 1154 TEN 6267 POINT4 1533 RAR1 6773 SEXC 0737 TENPT 6162 POINT6 1705 RAR2 6774 SFOUND 2641 TERCHK 3101 POPA 4537 RDPTR 0505 SFTFF 6345 TERCON 3166 POPF 4544 READC 4554 SGNPRN 3364 TERCTL 3130 POPFP 0054 RECORD 1542 SGOT 2645 TERFF 3147 POPJ 5541 RECOVR 2743 SIGN 7321 TERJMP 3140 DPF COMMAND DECODER AND INIT PAL8-V50X 09-JUL-88 PAGE 179-4 TERLFD 3106 TYPE2 1231 XPUSHJ 6361 TERLST 3121 T1 0032 XRAR2 7574 TERLUP 3112 T1S 5572 XRT 0011 TERMER 0566 T2 0033 XRTD 6335 TERMMV 3073 T3 0034 XRT2 0012 TERMNL 3050 ULTSOR 1776 XSGN 0732 TERMS 1777 USR 0021 XSORTC 0715 TERNMV 3074 USRTBL 4400 XSPNOR 2403 TEROUT 3077 US7700 1043 XSQR 5371 TERPS 3111 UTE 2301 XSQRT 5600 TERRES 3125 UTQ 2310 XSQR1 5523 TERTAB 3157 UTRA 2277 XSQ2 5076 TESTA 0275 UTX 2321 XTAB 1341 TESTC 4564 V 0010 XTEMP 2670 TESTN 4561 VAREX 1530 XTESTC 0676 TEST2 7136 VARTOP 1545 XTESTN 2411 TEST4 7565 VPOPA 4572 XYZ 2456 TEXTP 0017 VPOPF 4577 X1 5522 TFOFED 1333 VPOPJ 5575 X2 5075 TGO 3200 VPUSHA 4573 YEAR 0112 THIR 7457 VPUSHF 4576 YESGO 5416 THISD 6347 VPUSHJ 4574 YINT 0402 THISLN 0023 WAIT 0120 YOS8 0736 THISOP 0024 WALL 0662 ZERO 6721 THSBLK 0104 WORDS 0004 ZPOPA 0021 TINT 2645 WRFUN 1536 ZPOPF 0112 TINTEG 4434 WRITE 0634 ZPOPJ 0150 TINTR 1260 WTESTG 0665 ZPUSHA 0025 TITER 5671 WTEST2 0651 ZPUSHF 0071 TLFEED 1335 WX 0671 ZPUSHJ 0127 TLIST 1406 X 5365 TLIST2 1412 XABS 0743 TLIST3 2366 XCHAR 1555 TOCDF 5623 XCNTR 0020 TOPVAR 1517 XCOM 2200 TPOPA 4436 XCT 0020 TPOPF 4441 XCTIN 0062 TPOPJ 5443 XDELET 2075 TPUSHA 4437 XDOL 2667 TPUSHF 4440 XDRONE 3412 TPUSHJ 4442 XFIND 2245 TQUOT 1251 XGETLN 0243 TRAD 6775 XIDLE 2600 TRESET 1334 XIN 2124 TSORTJ 4433 XINPUT 6470 TSTCHR 4546 XINT 3174 TSTGRP 4563 XINTEG 7360 TSTLPR 4562 XOS8 0724 TT 1134 XOUT 2701 TTYIN 0621 XPOPA 0416 TTYOUT 0433 XPOPF 0440 TTYTXT 0357 XPOPJ 0446 TWO 5121 XPRNT 2430 TWOPI 5506 XPUSHA 0424 TYPE 1205 XPUSHF 0432 ERRORS DETECTED: 0 LINKS GENERATED: 0