File DPL.PA (PAL assembler source file)

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






/OS-8 PLOTTER DRIVER FOR DIABOLO HYTYPE PRINTER


/F. WESSELY

/AUGUST 7, 1975




/DEFINITIONS OF IOTS

	DBCO1=6505
	DBSO1=6506
	DBCO2=6515
	DBSO2=6516
	DBRI2=6514



*5600


/PLOTTER DRIVER ENTRY

DPL,	0		/CALLER RETURN ADDRESS
	CLA CLL
	RDF		/GET CALLING FIELD N
	TAD	CDF0	/MAKE A"CDF N" COMMAND
	TAD	C2	/CHANGE TO "CDF CIF N" COMMAND
	DCA	RETRN	/SAVE IT FOR RETURN


/LOOK AT ARGUMENTS OF CALLER

	TAD I	DPL	/GET FUNCTION WORD
	AND	C70	/MASK BUFFER FIELD
	TAD	CDF0	/MAKE A "CDF BUFFER FIELD"
	DCA	BFCDF	/SAVE IT

	TAD I	DPL	/GET FUNCTIN AGAIN
	SMA		/IS IT "WRITE"?
	JMP	FERR	/NO- FATAL
	
	CLL RAR		/GET BIT 11 & STORE
MONX,	CLA		/USED AS MONITOR EXIT
	TAD I	DPL	/GET FUNCTION AGAIN
	AND	C3700	/MASK RECORD COUNT
	SZL		/RECORD COUNT SPECIFIED?
	BSW		/NO, CHANGE TO WORD COUNT
	SNA		/ZERO COUNT ?
	JMP	FINIT	/YES, NORMAL EXIT
	CIA		/NEGATE AND SAVE WC
	DCA	WC

	ISZ	DPL	/POINTER TO BUFFER ADDRESS
	TAD I 	DPL	/FETCH ADDRESS
	DCA	BUFP	/AND SAVE

	ISZ	DPL	/IGNORE BLOCKNUMBER	


/FETCH DATA FROM BUFFER

NEXT,	CLA CLL
BFCDF,	HLT		/CONTAINS "CDF BUFFER FIELD"
	TAD I	BUFP	/GET TWO DATA-WORDS 
	DCA	FX	/FROM BUFFER  SAVE
	ISZ	BUFP
	TAD I	BUFP
	DCA	FY
	ISZ	BUFP



/PLOTTER FUNCTION COMMAND

CDF0,	CDF 0		/DRIVER ALWAYS IN FIELD 0
	TAD	FX	/GET X-DATA
	SMA		/IS IT A COMMAND?
	JMP	PLOT	/NO- GO PLOT & PRINT
	AND	C177	/MASK CHARACTER
	SZA		/CHARACTER COMMAND?
	DCA	CHAR	/YES- STORE IT
	TAD	FX	/GET COMMAND AGAIN
	CLL RTL		/IF EOF-CMD, THEN LINK SET
	CLA CMA		/AC TO 7777
	DBCO2		/CLEAR PLOTTER CMD-REGISTER
	CLA CLL
	TAD	FY	/GET COMMAND WORD
	AND	C7770	/DON'T TOUCH STROBE LINES
	DBSO2		/SET LINES AS SPECIFIED
	AND	C10	/MASK RESTORE BIT
	DBCO2		/REMOVE RESTORE LINE IF SET
	SZL		/WAS EOF SPECIFIED?
	JMP 	FINIT	/YES- EXIT
	JMP	NEXT	/ELSE FETCH NEW DATA




/PLOT & PRINT SEQUENCE

PLOT,	CLA CLL
	DBRI2		/READ PLOTTER STATUS REGISTER
	AND	C1	/CHARACTER READY LINE
	SNA CLA		/READY?
	JMP	CHECK	/NOT YET-DO SOME CHECKS
	JMS	OUT	/PUT OUT CARRIAGE MOVEMENT
FX,	0		/CONTAINS CR-INCREMENTS
C2,	2		/CARRIAGE STROBE
	JMS	OUT	/THEN PAPER FEED MOVEMENT
FY,	0		/CONTAINS PF-INCREMENTS
C4,	4		/PF-STROBE
	JMS	OUT	/NOW PRINT A CHARACTER
CHAR,	56		/DEFAULT IS "."
C1,	1		/CHARACTER STROBE

	ISZ	WC	/ALL DONE?
	JMP	NEXT	/NO- PROCEED



/RETURN SEQUENCE

FINIT,	ISZ	DPL	/ADJUST RETURN ADDRESS
FERR,	CIA		/SET -AC IF FATAL RETURN
	ISZ	DPL
RETRN,	HLT		/BECOMES A "CDF CIF N"
	JMP I	DPL	/RETURN TO CALLING PROGRAM



/CHECK FOR CTRL/C AND  ERRORS

CHECK,	KSF		/KEYBOARD FLAG UP?
	JMP	CHK	/NO
	KRS		/YES- READ STATIC
	AND	C177	/IGNORE PARITY
	TAD	M3	/CTRL/C?
	SNA CLA
	JMP I	MONX	/YES- UP TO MONITOR
CHK,	DBRI2		/READ PLOTTER STATUS
	SPA		/CHECK CONDITION SET?
	JMP	FERR+1	/YES- FATAL EXIT
	RAL		/GET "PRINTER READY"
	SMA CLA		/READY? I.E. POWER ON?
	JMP	CHECK	/NO- WAIT
	JMP	PLOT	/YES- TRY AGAIN




/OUTPUT SUBROUTINE

OUT,	HLT
	CLA CMA		/FIRST RESET DATA-LINES
	DBCO1
	CLA CLL
	TAD I OUT	/GET DATA-WORD
	DBSO1		/SET LINES
	CLA CLL
	ISZ OUT
	TAD I 	OUT	/GET STROBE BIT
	DBSO2
	DBCO2
	ISZ	OUT
	JMP I	OUT	/AND RETURN



/CONSTANTS AND VARIABLES

C10,	10		/RESET MASK (CURR. "RESTORE" ONLY)
C70,	70
C177,	177
C3700,	3700
C7770,	7770
M3,	-3

WC,	0		/WORD COUNT
BUFP,	0		/POINTER TO DATA-BUFFER
$




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