File: PLSUBS.RA of Tape: Various/Decus/decus-4
(Source file text) 

/ PLSUBS - SUBROUTINES USED BY "CALCOM", THE FORTRAN
/ PROGRAM WHICH REPRODUCES SCREEN DISPLAYS SAVED BY
/ "TKPLOT" ON A LOCAL INCREMENTAL (CALCOMP) PLOTTER.
/ THIS MODULE CONTAINS TWO SUBROUTINES, "PLINIT" AND
/ "PLREED".  "PLINIT" IS CALLED WITH TWO ARGUMENTS,
/ THE ARRAY INTO WHICH "PLREED" WILL STORE THE
/ VALUES RETRIEVED FROM THE FILE, AND A VARIABLE
/ WHICH INDICATES END OF FILE.  THESE ADDRESSES
/ ARE ACQUIRED AND STORED, THE LENGTH OF THE INPUT
/ FILE IS GOTTEN FROM THE DSRN TABLE, NEGATED, -1 IS
/ ADDED (BECAUSE WE PRE-INCREMENT) AND STORED IN XR4
/ SO "PLREED" CAN DETECT END OF FILE.
/ "PLREED" CHECKS FOR END OF FILE;  IF FOUND, IT
/ SETS THE INDICATOR VARIABLE TO ZERO AND RETURNS;
/ IF NOT, IT READS THE NEXT BLOCK OF 85 "FLOATING
/ POINT" VALUES FROM THE FILE.  EACH OF THESE VALUES
/ IS REALLY THREE 12 BIT WORDS, SO THEY ARE
/ CONVERTED TO THREE WORD FLOATING POINT VALUES AND
/ STORED IN THE 255 LOCATIONS OF THE ARRAY.

	SECT	PLINIT
	ENTRY	PLREED

	EXTERN	#RUO	/UNFORMATTED READ LOCS
	EXTERN	#RSVO
	EXTERN	#RENDO

	JA	#ST	/GO START EXECUTION
#XR,	ORG	.+10	/INDEX REGISTERS
NAME,	TEXT	+PLINIT+ /NAME FOR TRACEBACK
#RET,	SETX	#XR
	SETB	#BASE
	JA	.+3
#BASE,	ORG	.+6	/BASE PAGE
IAR,	ORG	.+3	/ARG ADDRESSES
ENDFIL,	ORG	.+3
NAME2,	TEXT	+PLREED+ /FOR TRACEBACK
	ORG	#BASE+30
	FNOP		/RETURN TO US
	JA	#RET
	FNOP		/RETURN TO CALLER
#GOBAK,	0;0
#ARGS,	ORG	.+3
#LIT9,	F 9.0		/LITERAL
#RTN,	BASE	#BASE
	JA	#GOBAK
#ST,	STARTD
	0210		/GET RETURN
	FSTA	#GOBAK,0 /STORE
	0200		/GET ARG POINTER
	SETX	#XR	/SET OUR INDEX REGS
	SETB	#BASE	/AND BASE PAGE
	LDX	0,1
	FSTA	#BASE	/STORE ARG POINTER
	FSTA	#ARGS
	FLDA%	#BASE,1+ /GET AND STORE
	FSTA	IAR	/ ARG ADDRESSES
	FLDA%	#BASE,1+
	FSTA	ENDFIL
	STARTF
	SETX	04363	/GET FILE LENGTH
	XTA	0	/FROM DSRN TABLE
	SETX	#XR
	FNEG		/NEGATE
	ATX	4	/STORE IN XR4
	ADDX	-1,4	/ADD -1
	FLDA	NAME2	/CHANGE TRACEBACK
	FSTA	NAME	/NAME
	JA	#RTN	/RETURN

PLREED,	STARTD		/ENTRY
	0210		/GET RETURN
	FSTA	#GOBAK,0 /STORE
	0200		/GET NEXT LOCN
	SETX	#XR	/SET OUR INDEX REGS
	SETB	#BASE	/AND BASE PAGE
	FSTA	#BASE
	STARTF		/NO ARGS
	JXN	NXTBUF,4+ /JUMP UNLESS
	FCLA		/END OF FILE
	FSTA%	ENDFIL	/STORE ZERO
	JA	#RTN	/RETURN
NXTBUF,	LDX	-1,3	/ARRAY INDEX
	LDX	-125,2	/COUNTER (-85)
	TRAP3	#RUO	/INITIALIZE READ
	JA	#LIT9	/I/O UNIT 9
READ1,	TRAP3	#RSVO	/GET ONE VALUE
	FSTA	#XR+5	/STORE IN XR'S
	XTA	5	/CONVERT 3 12-BIT TO
	FSTA%	IAR,3+	/3 FLOATING POINT &
	XTA	6	/STORE IN ARRAY
	FSTA%	IAR,3+
	XTA	7
	FSTA%	IAR,3+
	JXN	READ1,2+ /REPEAT UNLESS DONE
	TRAP3	#RENDO	/TERMINATE READ
	JA	#RTN	/RETURN