VIDPRI ;		* * * * * * * * * * * * *
 ;		*  PROGRAM BY KIM WATT  *
 ;		* BREEZE COMPUTING INC. *
 ;		*     P.O. BOX  1013    *
 ;		* BERKLEY, MICH.  48072 *
 ;		*    (313) 288-9422     *
 ;		* * * * * * * * * * * * * 				
 ;	RELOCATABLE MACHINE CODE TO TRANSFER THE
 ;	CONTENTS OF THE SCREEN TO THE LINEPRINTER.
 ;
 ;	GRAPHICS CHARACTERS ARE PRINTED AS PERIODS.
 ;
 ;	PRINTING MAY BE INTERRUPTED BY HITTING
 ;	THE <BREAK> KEY.
 ;
 ;	ORG	4FABH		;4-K LOCATION
 ;	ORG	7FABH		;16-K LOCATION
 ;	ORG	0BFABH		;32-K LOCATION
 	ORG	0FFABH		;48-K LOCATION
 ENTRY	LD	A,(14400)	;KEYBOARD MEMORY
 	CP	8		;SEE IF IT'S <[>
 	RET	NZ		;RETURN IF NO
 	LD	A,(14464)	;SHIFT KEY ADDRESS
 	OR	A		;SET FLAGS
 	RET	Z		;RETURN IF NO
 	LD	A,(37E8H)	;LINE PRINTER ADDRESS
 	AND	80H		;TEST BIT 7
 	RET	NZ		;LINE PRINTER NOT READY
 	XOR	A		;ZERO ACCUMULATOR
 	LD	(LABEL1),A	;LD INTO COUNTER ADDR.
 	LD	B,40H		;LENGTH OF SCREEN LINE
 	LD	DE,3BFFH	;VIDEO ADDR. -1
 	LD	HL,37E8H	;LINE PRINTER ADDRESS
 LABEL3	INC	DE		;INC. VIDEO ADDR.
 	LD	A,(DE)		;GET VIDEO BYTE
 	CP	80H		;GRAPHICS CHARACTER ?
 	JR	Z,PAST		;128 ASCII SPACE
 	JP	M,PAST		;GO IF NO
 	LD	A,46		;ASCII FOR PERIOD <.>
 PAST	CALL	LABEL2		;TRANSFER TO PRINTER
 	LD	A,(3840H)	;KEYBOARD MEMORY
 	CP	4		;<BREAK> KEY PRESSED ?
 	RET	Z		;RETURN IF IT IS
 	DJNZ	LABEL3		;GET NEXT CHARACTER
 	LD	A,0DH		;CARRIAGE RETURN BYTE
 	CALL	LABEL2		;PRINTER LINEFEED
 	LD	A,(LABEL1)	;GET LOOP VALUE
 	INC	A		;INCREMENT
 	LD	(LABEL1),A	;STORE NEW VALUE
 	CP	10H		;LOOP FOR 16 LINES
 	RET	Z		;RETURN IF DONE
 	LD	B,40H		;LOAD # CHAR. PER LINE
 	JR	LABEL3		;PRINT NEXT LINE
 LABEL2	LD	C,(HL)		;GET LINEPRINTER STATUS
 	BIT	7,C		;TEST IF READY
 	JR	NZ,LABEL2	;WAIT IF NOT READY
 	LD	(HL),A		;SEND BYTE TO PORT
 	RET			;CHARACTER SENT
 LABEL1	DEFB	0		;COUNTER ADDRESS
 	END	ENTRY
