File FDIS.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/T-4002 PLOTTING ROUTINES

	FIELD 1

	TYPEC=JMS I OUTDEV
	GS=235
	US=37
	XJ=3012
	YJ=3112

	*377
	FDIS		/PATCH TO FUNCTION TABLE

	*401		/ANOTHER PATCH
	FJOY

	*1142
PRINTX,	0		/OVERLAYS OLD FDIS
	TYPEC
	CIF
	JMP I PRINTX

	*2172		/PATCH TO 'FNTABL'
	2637

	*3216
FDIS,	TAD FCHKP	/CHEAT LIKE HELL!!
	DCA 151		/KLUDGE PRINTC SO WE KNOW WHAT MODE WE ARE ...
	INTEGER		/CHECK FIRST ARG (FDIS(I,X,Y))
	SMA SZA CLA	/NEGATIVE ARG MEANS START POINT PLOT
	TAD FDSW	/ARE WE IN GRAPHICS MODE?
C40,	SZA CLA
	JMP PLOT	/WE'RE IN GRAPHICS AND I WAS POSITIVE
	TAD FLAC+2	/MIGHT BE POINT PLOT (FS=GS-1)!
	SPA CLA		/CHECK FOR -1 ARG
	CMA		/IT IS, CHANGE GS TO FS
	TAD (GS		/OTHERWISE, START NEW LINE HERE
	TYPEC
PLOT,	PUSHJ		/GET X COORDINATE
		EVAL-1	/SKIP OVER COMMA
	INTEGER
FCHKP,	DCA FCHK	/TEMP
	PUSHJ		/GET Y COORDINATE
		EVAL-1
	INTEGER
	JMS HIGH	/AREN'T WE THOUGH!!
		0	/LAST HIGH GETS STORED HERE
	TAD C40		/ADD APPROPRIATE SIGNAL BITS
	TYPEC		/PRINT IT
	TAD FCHK	/SAVED X
	JMS HIGH	/HIGH ORDER X
		0
JXIT,	TYPEC
	JMP I EFUN3I	/AND RETURN

	FDSW=.
HIGH,	0		/SUB TO CHECK HIGH-ORDER, ONLY PRINT IF NEEDED
	DCA FDT2	/SAVE ARG
	TAD FDT2	/GET IT BACK
	CLL RTR
	RTR
	RAR
	AND (37
	TAD C40
	DCA JFLOAT
	TAD JFLOAT
	TAD I HIGH	/COMPARE WITH LAST HIGH
	SNA CLA
	JMP HXIT	/OKAY
	TAD JFLOAT	/NOT SO GOOD, PRINT IT
	TYPEC
	TAD JFLOAT
	CLL CIA
	DCA I HIGH	/SAVE FOR NEXT TIME
HXIT,	ISZ HIGH	/SKIP
	TAD FDT2
	AND (37
	TAD C100
	JMP I HIGH

FCHK,	0		/PRINTC WAS CALLED, SWITCH TO NORMAL MODE
	DCA HIGH	/SAVE CHAR IN AC
	TAD (2465	/POINTER TO OUT
	DCA 151
	TAD (US
	TYPEC
	TAD HIGH	/PRINT CHAR
	PRINTC		/WE RESTORED THE POINTER, REMEMBER?
	DCA FDSW	/RESET MODE SWITCH
	JMP I FCHK

FJOY,	INTEGER		/CHECK ARG
	SNA CLA
	TAD C214	/ZERO, TURN ON CURSOR AND WAIT (C214=DC1-ENQ)
	TAD ENQ		/NON-ZERO, READ IT NOW
	PRINTC
	TAD FLAC+2	/STILL HOLDS ARG
	SPA SNA CLA	/NEGATIVE ARG IS TO READ WITHOUT CURSOR
	JMS X133	/READ FIRST CHAR IF NEEDED
	DCA FCHK	/TEMP
	TAD (XJ		/X-COORDINATE GOES IN 'XJ'
	JMS JLOOK	/PUT IT THERE
	TAD (YJ
	JMS JLOOK	/DITTO FOR Y
	TAD FCHK	/FLOAT FIRST CHAR FOR RETURN
	JMS JFLOAT
	TAD (US		/SWITCH BACK TO NORMAL MODE
	JMP JXIT	/ALSO ENABLE INTERRUPT

	FDT2=.
JLOOK,	0		/CREATES VARIABLE IF NEEDED, AND FILLS IT
	DCA ADD		/SAVE NAME IN 'ADD'
	PUSHJ
		GS1	/CALL 'GETVAR'
	JMS X133	/GET HIGH-ORDER
	AND (37		/MASK IT
	CLL RTL
	RTL
	RAL
	DCA FLAC+1	/SNEAKY, ISN'T IT?
	JMS X133
	AND (37
	TAD FLAC+1
	JMS JFLOAT	/FLOAT IT
	FENT		/AND PUT IT AWAY
	FNOR
	FPUT I PT1	/SET BY 'GETVAR'
	FEXT
	JMP I JLOOK

JFLOAT,	0		/FLOATS 12-BIT AC
	DCA FLAC+1
ENQ,	TAD P13		/PROPER EXPONENT
	DCA FLAC
	DCA FLAC+2	/CLEAR OTHER WORDS
	JMP I JFLOAT

	PAGE

	STVAR=.



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search