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