File PLOTDOT

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

*20
///PLOTDOT
	 
/PLOTS DOT MATRIX GENERATED BY 
/PROGRAM DISDOT
	 
	SEGMNT 5
	*20
	 
/BETA REGISTER DEFINITIONS
	FILLST=1
	PLOPTR=2
	GETPTR=3
	SEGCNT=10
	FILCNT=11
	SAMCNT=12
	ROLCNT=13
	 
/INITIAL QUESTIONS
	 
BEG,	LIF 4
	INUNIT
	 
	JMP WRDSET	/SET WORD1 & 2
	 
D1,	LIF 4
	INTRACT
	CJ1
	M1		/ALL?:
	 
CJ1,	T1
	J1
T1,	YES
	NO
	0
	 
J1,	JMP BEG		/CR
	JMP GETALL	/YES
	JMP GETTAB	/NO
	JMP D1		/0
	 
//ROUTINES FOR PLOTING ALL FILES
	 
GETALL,	LIF 4
	DIRINI
	 
/GET FIRST FILE NAME
	LIF 4
	MGETNAM
	 JMP END	/END OF ALL FILES
/INITIALIZE FILE NAME FOR COMPARISON
MORALL,	JMP COMINI
/CHECK FOR MORE FILES IN MATRIX
	LIF 4
	MGETNAM
	 JMP ENDALL	/END OF ALL FILES
/COMPARE FILE NAME TO SEE IF CONTINUATION
/OF CURRENT MATRIX
	JMP COMPAR
	 JMP .-4	/MATRIX CONT.
/GOT ALL FILE NAMES OF MATRIX
	JMP SETNXT	/SET FOR NEXT MATRIX
	JMP PLOTIT	/PLOT MATRIX
/INITIALIZE FOR NEXT MATRIX
ENDSWA,	JMP NXTINI
	JMP MORALL	/GET NEXT MATRIX
	 
//ROUTINES TO PLOT FROM A TABLE OF FILE NAMES
	 
GETTAB,	LIF 4
	TABSET
	0		/TABLE NUMBER
	LDF 7
	3000
	400
	 
	LIF 4
	INTABLE
	0
	 
	LIF 4
	TABINI
	0
	 
/GET FIRST FILE NAME
BEGTAB,	LIF 4
	TABGET
	0
	 JMP FIN	/END OF TABLE
	 JMP .-4	/NOT FOUND
/ZERO ENTRY
	LIF 4
	TABZER
	0
/INITIALIZE FILE NAME FOR COMPARISON
MORTAB,	JMP COMINI
/CHECK FOR MORE FILES IN MATRIX
	LIF 4
	TABGET
	0
	 JMP ENDTAB	/END OF TABLE
	 JMP BEGTAB	/NOT FOUND
/ZERO ENTRY
	LIF 4
	TABZER
	0
/COMPARE FILE NAME TO SEE IF CONTINUATION
/OF CURRENT MATRIX
	JMP COMPAR
	 JMP MORTAB+1	/MATRIX CONT.
/GOT ALL FILE NAMES OF MATRIX
	JMP SETNXT	/SET FOR NEXT MATRIX
	JMP PLOTIT	/PLOT MATRIX
/INITIALIZE FOR NEXT MATRIX
ENDSWT,	JMP NXTINI
	JMP MORTAB	/GET NEXT MATRIX
	 
//ROUTINES USED BY GETALL AND GETTAB
	 
/INITIALIZE FILE NAME FOR COMPARISON
COMINI,	LDF 4
	SET I FILLST
	FILE-1
	LDA
	FILNAM
	STA I FILLST
	STC F1
	LDA
	FILNAM+1
	STA I FILLST
	STC F2
	JMP 0
	 
/COMPARE CURRENT FILE NAME WITH LAST
/FILE NAME TO SEE IF CONTINUATION OF
/CURRENT MATRIX
COMPAR,	SET 17
	0
	LDF 4
	LDA
	FILNAM
	SAE I
F1,	0		/LAST FILNAM
	JMP ENDDOT	/NOT CONT.
/MATCH, STORE IN FILE LIST
	STA I FILLST
/INCREMENT LAST FILE NUMBER FOR COMPARISON
	LDA I
	1
	ADM
	F2
	LDA
	FILNAM+1
	SAE I
F2,	0		/LAST FILNAM+1
	JMP ENDDOT+1	/NOT CONT.
/MATCH, STORE IN FILE LIST
	STA I FILLST
	JMP 17
ENDDOT,	XSK I FILLST
	CLR
	STA FILLST
	XSK I 17
	JMP 17
	 
/LIST OF FILE NAMES OF CURRENT MATRIX
FILE,	0		/1
	0
	0		/2
	0
	0		/3
	0
	0		/4
	0
	0		/TERMINATOR
	 
/SET UP FOR NEXT MATRIX
/SAVE LAST FILE NAME WHICH WAS NOT A
/CONTINUATION OF XURRENT MATRIX
SETNXT,	LDF 4
	LDA
	FILNAM
	STA I
FN1,	0
	LDA 
	FILNAM+1
	STA I
FN2,	0
	JMP 0
	 
/INITIALIZE FOR NEXT MATRIX
/GET SAVED FILE NAME AND PUT INTO DECODE
NXTINI,	LDF 4
	LDA
	FN1
	STA
	FILNAM
	LDA
	FN2
	STA
	FILNAM+1
	JMP 0
	 
/END OF ALL DIRIECTORIES
/ALTER PROGRAM TO STOP AFTER NEXT PLOT
ENDALL,	LDA I
	JMP END
	STC ENDSWA
	JMP ENDSWA-1
	 
/END OF ALL TABLE ENTRIES
/ALTER PROGRAM TO STOP AFTER NEXT PLOT
ENDTAB,	LDA I
	JMP FIN
	STC ENDSWT
	JMP ENDSWT-1
	 
//FINISHED ALL PLOTTING
//COME HERE TO STOP
	 
FIN,	LIF 4		/ENTRY FROM GETTAB
	MISSNG
	0
	 NOP		/MISSING ENTRIES
END,	LIF 4		/ENTRY FROM GETALL
	STOP
	 
//ROUTINE TO PLOT DOT MATRIX
	 
PLOTIT,	LDA
	0
	STC PLOTX
	 
	SET I FILLST
	FILE-1		/FILE NAME LIST
	JMP FILGET	/GET 1ST FILE
	JMP SETPAR	/SET PARAMETERS
	JMP PENINI	/INITIALIZE PEN
	SKP
	 
NEWFIL,	JMP FILGET	/2ND FILE ON
	JMP SETROL	/WORD ROTATION
	LDA I
	3777
	STC DSTRT	/DATA ADDRESS
	SET I FILCNT
	-4		/QUARTERS PER FILE
	 
/UNWIND PACKED FILE AND PLOT LINE BY LINE
UNWIND,	SETPTR		/SET STORE PTR
	SET I GETPTR
DSTRT,	0		/DATA POINTER
MORDAT,	LDF 6
	LDA I GETPTR
ROTCOM,	0		/ROL N
	BCL I
	7775
	LDF 7
	STA I PLOPTR
	 
	XSK I SAMCNT	/LINE DONE?
	JMP MORDAT	/NO
	 
/LINE UNWOUND, PLOT IT
	SETPTR
	LDF 7
MORPLO,	LDA I PLOPTR
	AZE
	JMP PLOT1	/1, SPIKE
	JMP PLOT0	/0, NO SPIKE
FINDOT,	XSK I SAMCNT	/DONE?
	JMP MORPLO	/NO
	 
/CURRENT LINE PLOTTED
/INCREMENT ROTCOM
	LDA 
	ROTCOM
	ADD KP1
	STC ROTCOM
/RESET PEN FOR NEXT LINE
	STC X
	ADD Y
	ADA I
	4		/LINE SPACING
	STC Y
	STC PC		/PEN UP
	JMP PLO		/MOVE PEN
/MATRIX DONE?
	XSK I SEGCNT
	JMP .+3		/NO
/MATRIX DONE, PLOT FILE NAME AND LEAVE
	JMP NAMSET
PLOTX,	JMP
/QUARTER DONE?
	XSK I ROLCNT
	JMP UNWIND	/NO, DO NEXT LINE
/QUARTER DONE, FILE DONE?
	XSK I FILCNT
	SKP		/NO
	JMP NEWFIL	/YES, NEXT FILE
/FILE NOT DONE, SET DATA PTR TO NEXT QN
	LDA
	FILCNT		/-3,-2 OR -1
	ADA I
	QNPTR		/DATA PTR LIST
	STC 5
	LDA 5
	STC DSTRT
	JMP SETROL
	JMP UNWIND
	 
/DATA PTR LIST. STARTING ADDRESSES OF QNS
	2377
	2777
	3377
QNPTR,	3777
	 
//ROUTINES USED BY PLOTIT
	 
/INITIALIZE PEN TO PLOT MATRIX
PENINI,	SET 17
	0
	OPR I 4
	0
	0
	-0
	LDA I
	310		/200(10)=2 INCHES
	STC Y
	STC X
	STC PC
	JMP PLO
	JMP 17
	 
/SET WORD1 AND WORD2 FOR FILE INPUT
WRDSET,	LDF 4
	LDA I
	7105		/Q7 DF5
	STA
	WORD1		/PBLOCK
	LDA I
	4406		/Q4-7 DF6
	STA
	WORD2		/DATA
	JMP 0
	 
/GET FIRST FILE NAME OF MATRIX, PUT IN
/OUTPUT BUFFER AND PLOT
NAMSET,	LDA
	0
	STC SETX
	 
	LDA
	FILE		/FILE NAME LIST
	STC NAME
	SFLOAT
	FILE+1
	SETWRD
	0400
	OUTPUT
	NAME+1
/PLOT NAME
	OPR 11
	30
	0
	5
	DISBUF
	JMP .-5
	OPR 1
	30
	.+3
	JMP .-3
	OPR 5
	OPR 2
	30
SETX,	JMP 		/EXIT
	 
	 
DISBUF,	0
	0
	0		/X
	-300		/Y
	LDF 5
	NAME
	4001
	4000
	 
NAME,	0
	0
	0
	3400
	 
/ROUTINE TO BRING IN NEXT FILE FROM MATRIX
/FILE NAME LIST
FILGET,	SET 17
	0
	LDF 4
	LDA I FILLST
	AZE I		/END OF LIST
	JMP PLOTX	/YES, LEAVE
	STA
	FILNAM
	LDA I FILLST
	STA
	FILNAM+1
	LIF 4
	MGETFIL
	 JMP PLOTX	/NOT FOUND
	JMP 17
	 
/SET PARAMETERS FOR MATRIX PLOT
SETPAR,	LDA
	P0		/DATA TYPE
	SAE I
	-0		/DISDOT CODE
	JMP PLOTX	/NOT DOT MATRIX FILE
	LDA
	P20		/NO. OF SEGMENTS (LINES)
	COM
	STA
	SEGCNT		/CNTR
	STC DESSEG
	LDA
	P17		/SAMPS PER SEG
	COM
	STC DESSAM
	JMP 0
	 
DESSAM,	0
DESSEG,	0
	 
/INITIALIZE WORD ROTATION COMMAND
SETROL,	SET I ROLCNT
	-14		/BITS PER WORD
	LDA I
	ROL 1
	STC ROTCOM
	JMP 0
	 
/SET POINTER FOR DATA PICK UP
	SETPTR=JMP .
	SET I PLOPTR
	3777
	SET SAMCNT
	DESSAM		/SAMPS PER LINE
	JMP 0
	 
/ROUTINES TO PLOT LINE
/NO SPIKE, LIFT PEN
PLOT0,	STC PC		/CLR PC, PEN UP
	JMP STUFX
/SPIKE, LOWER PEN
PLOT1,	LDA I
KP1,	1
	STC PC		/PC=1, PEN DOWN
/INCREMENT X TO PLOT POINT
STUFX,	ADD X
	ADA I
	3		/POINT SIZE
	STC X
	JMP PLO		/PLOT POINT
	JMP FINDOT	/LEAVE
	 
/PLOT POINT
PLO,	LDA
	0
	STC PLOX
	 
	OPR I 4
X,	0
Y,	0
PC,	0		/PEN CONTROL
	OPR 1
	25
	PLOX
	JMP .-3
	OPR 5
PLOX,	JMP
	 
/MESSAGES AND BUFFERS
M1,	TEXT &ALL?: &
	 
AAEND,	0
	 
	 
	 
/PBLOCK FOLLOWS
	 
	NOLIST
	 
//PBLOCK
/PARAMETER BLOCK ASSIGNMENTS
/
	P0=1400		/DATA TYPE
	P17=1417	/NO.SAMP IN SEG
	P20=1420	/NO.SEG IN ENSM
/
/COMMAND DECODER ASSIGNMENTS
/
	STOP=JMP 20
	INUNIT=JMP 22
	DIRINI=JMP 26
	INTRACT=JMP 42
	TABSET=JMP 45
	INTABLE=JMP 46
	MISSNG=JMP 47
	TABGET=JMP 50
	TABZER=JMP 52
	TABINI=JMP 54
	MGETNAM=JMP 55
	MGETFIL=JMP 56
/
/COMMAND LOCATIONS.
/
	FILNAM=2320
	WORD1=2323
	WORD2=2324
	 
/COMMAND NUMBERS.
/
	YES=17
	NO=20
/
/EXEC3 ASSIGNMENTS
/
	OPR=500
	 
/FLOATING POINT DEFINITIONS.
/
	SETWRD=746
	OUTPUT=750
	SFLOAT=754
/
/PBLOCK
/JUNE 73
	 
///END PLOTDOT
/DEC 73
/JLB



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