File LPC.TK

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

/******* MULTI8 LINEPRINTER DRIVER *******
/******* CENTRONICS - DR8EA INTERF *******
/LAST EDIT: 28-SEP-78, HOU <TAB BUG>
/LAST EDIT: 21-NOV-77, HOU
/LAST EDIT: 17-DEC-75, JV
/LAST EDIT:  4-SEP-75, JV
/LAST EDIT: 12-AUG-75, ELC

/NAME:	LP 
/FUNCTION:TO PRINT A BUFFER (BLOCK) IN CORE ON THE LINEPRINTER.
/CONCEPT: THIS MODULE BELONGS TO THE FAMILY OF BLOCKDRIVERS
/	AND SHOULD BE HANDLED ACCORDINGLY. CHARACTERS ARE
/	UNPACKED FROM THE BLOCK BUFFER AND PRINTED ON THE
/	LINEPRINTER. CTRL/Z TERMINATES PRINTING.
/	THE BLOCKDRIVER RECOGNIZES THE FOLLOWING CHARACTERS:
/	BLANK	:IGNORED
/	RUBS	:IGNORED
/	215	:CARRIAGE RETURN; RESET POSITION COUNTER
/	214	:FORMFEED;RESETS POSITION COUNTER
/	232	:STOPS PRINTING AND SWPOUTS LP WITH 20 IN AC
/	TAB	:PRINTS REQUIRED NUMBER OF SPACES.
/SPECIAL:WE TRIED TO MAKE THIS TASK MORE OR LESS INTELLIGENT
/	FOR INSTANCE IT SUPPLIES AN EXTRA LF JUST
/	BEFORE THE CHARACTER THAT DOESN'T FIT ON THE LINE
/	AND IT WILL NEVER GIVE TWO CONSEQUTIVE FORMFEEDS !
/	IF THE SYMBOL LE8E HAS A POSITIVE VALUE (BIT 0=0)
/	ALL LOWERCASE CHARACTERS ARE CONVERTED TO THEIR
/	UPPERCASE EQUIVALENTS.
/	A ^Z (232) SHOULD BE SEND TO LP AS THE LAST CHARACTER,
/	TO RELEASE THE CLAIM.
/USE:	TAD (POINTER TO TRANSFER VECTOR
/	JMS MONITOR
/	   CALL
/	   "L^100+"P&3777
/	 JMP BUSY	/STILL BUSY; AC UNCHANGED
/	DCA LPSLOT	/RETURNS WAIT SLOT NUMBER
/	JMS MONITOR	/NOW WAIT FOR COMPLETION
/	   WAIT
/LPSLOT,   0		/WAIT SLOT
/	RETURN		/AC='HRDERR' IF READ-REQUEST
/			/AC=0 IF ALL OK. >
LPCA,	TASKNA LP
LPWC,	400
LOAD,	XLOAD
LPCHAR,	0
LP,	DCA LPCHAR	//SAVE POINTER TO REQUEST
	AC4000
	TAD I LPCHAR	//FETCH FIRST ARGUMENT
	AND C7700	//GET READ/WRITE+LENGTH
	CIA		/WORDCOUNT IS NEGATIVE
	DCA LPWC
	TAD I LPCHAR	/GET FIELDBITS
	AND C70
	TAD C6201
	DCA LPCDF
	ISZ LPCHAR	//ADVANCE POINTER TO BUFFERADDRESS
	TAD I LPCHAR
	DCA LPCA	//SET UP CURRENT ADDRESS
	CDTOIF
	CIF MONFLD
	JMS I ZRESERV	/GERESEV INTERRUPTSLOT
	   JMS ALARM	/NO SLOT AVAILABLE !
	DCA LPSLOT
	TAD LPSLOT
	JMS MONITOR
	   RETURN CONTINUE /GIVE INTERRUPT SLOT TO USER
	DCA ERSLOT	/AND COPY SLOT# IN ERRORRETURN
	SNL		/LINK STIL CONTAINS READ/WRITE BIT
	 JMP LPERR	/CAN'T READ FROM THE PRINTER
LPCDF,	CDF		//OVERLAID WITH CDF TO BUFFER FIELD
LPLOOP,	JMS LPSUB
	DCA LPCDF
	JMS LPSUB	//SOME RECURRING INSTRUCTIONS
	CLL RTR
	RTR
	TAD LPCDF	//ADD IN HIGHORDER BITS
	RTR
	RTR
	JMS PRINT
	ISZ LPWC
	 JMP LPLOOP
	JMS MONITOR
	   SIGNAL HALT
LPSLOT,	   0

LPSUB,	0
	TAD I LPCA
	JMS PRINT
	TAD I LPCA
	AND C7400
	ISZ LPCA
	JMP I LPSUB
LPEXIT,
	LE8E=LE8C
	TAD C215
	JMS LPOUT	/
	TAD (214
	JMS PRINT	/
	TAD C17	/(EOFERR-PROGER
LPERR,	IAC	/TAD (PROGER
	JMS MONITOR
	   SIGNAL HALT CLEAR SWPOUT
ERSLOT,	   0

PRINT,	0
	AND C177
	LPWDTH=LE8E&377 //# OF COLUMNS
	DCA LPCHAR
	TAD LPCHAR
	SZA		//SKIP NULL'S
	 TAD M177
	SNA
	 JMP I PRINT	//IGNORE RUBOUTS
	TAD (377-232
	SNA
	 JMP LPEXIT	//^Z
	TAD (232-214
	SNA
	 JMP FF		//FORM FEED
	TAD M1		//(214-215
	SZA
	 TAD C3		//(215-212
	SNA
	 JMP CRLF	//LINE FEED
	IAC		//TAD (212-211
K7640,	SZA CLA
	 JMP NOTAB
	TAD C240
	JMS LPOUT	//PRINT SPACE
	ISZ POS
	TAD POS
	AND C7
K7740,	SZA CLA SMA
	 JMP LPTAB
	JMP I PRINT
NOTAB,	STA
	DCA FFFLG	//FORMFEEDS ALLOWED FROM NOW
	TAD POS
LF,	TAD (-LPWDTH
	SMA
	 JMP LFEXTR
	TAD (LPWDTH+1	//INCREMENT POS
CRLF,	DCA POS		//RESET POS FOR CR AND LF
	TAD LPCHAR
IFZERO LE8E&4000 <	//IF YOUR LPT CAN'T HANDLE L.C.
	TAD K7640
	SMA
	 TAD K7740
	TAD (340	/ >
	JMS LPOUT
	JMP I PRINT

LFEXTR,
M177,	7601	/CLA
	TAD C212
	JMS LPOUT	//GIVE EXTRA LF
	JMP LF

FF,	ISZ FFFLG	//FORMFEED NECESARY ?
	 JMP I PRINT	//NO
	JMP CRLF

LPOUT,	0
	DCA	LPTMP
LPTAB,	TAD	LPTMP
	JMS I	LOAD
	JMS	MONITOR
	   WAIT
	   LPT
	JMP I LPOUT
LPTMP,	0
POS,	0
FFFLG,	0
	PAGE
	0
XLOAD,	0
	AND	(177
	6505
	CMA
	AND	(177
	6506
	CLA
	TAD	(4000
	6503
	6506
	6505
	CLA
	6501
	JMP I XLOAD
	$$$$$$



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