	TITLE	GRH ENTERPRISES LABEL PRINTER
	LIST	NOCOND
;*************************************************************************
;
;	MULTIPLE LABEL PRINTER
; PRINTS SEVERAL LABELS ON ONE SHEET
;
;*************************************************************************
;
;	REVISIONS:
;
; 1.0 -	9 FEB 85   GRH
;	RELEASE
;
; 1.1 - 31 JAN 88   GRH
;	CHANGE ADDRESS, RE-STRUCTURE MESSAGE AREA.
;
VERS	EQU	'11'
;*************************************************************************

BDOS	EQU	0005H

LF	EQU	0AH
CR	EQU	0DH
GS	EQU	1DH
RS	EQU	1EH
US	EQU	1FH

;****************************************************************************
;
;	MAIN PROGRAM
;
;****************************************************************************
	ORG	0100H
;
;   OUTPUT SIGN ON MESSAGE
;
	LD	DE,SIGNON
RESTART:
	LD	C,9
	CALL	BDOS
;
;   WAIT FOR KEY PRESSED
;
	LD	C,1
	CALL	BDOS
;
;   MAIN LOOP FOR PAGE
;
	LD	HL,(PINIT)	;INITIALIZE PRINTER
	CALL	PRINT
;
	LD	A,(LABROW)	;SET # ROWS FROM TOP TO BOTTOM
	LD	B,A
LP1:
;
;   DO LINE PTRS UNTIL A NUL PTR
;
	LD	HL,LINE1
;
LP2:	LD	E,(HL)		;FETCH PTR FROM ARRAY
	INC	HL
	LD	D,(HL)
	INC	HL
;
	LD	A,E		;CHECK FOR NUL PTR
	OR	A,D
	JR	Z,ROWDONE	;IF NUL PTR THEN DONE
;
	PUSH	HL		;SAVE ARRAY PTR
	EX	DE,HL
	PUSH	BC		;SAVE COUNT TOO
	CALL	PRINT
	POP	BC
	POP	HL
	JP	LP2
;
;
;   FIRST ROW DONE, IF NOT LAST THEN REPEAT
;
ROWDONE:
	DJNZ	LP1
;
;   PAGE DONE, CLEAN UP
;
	LD	HL,(PSTOP)
	CALL	PRINT
;
;   IF USER WANTS MORE THEN REPEAT WHOLE OPERATION
;
	LD	DE,REQM		;QUERY FOR MORE
	LD	C,9
	CALL	BDOS
;
	LD	C,1
	CALL	BDOS
	AND	A,5FH
	CP	A,'Y'
	LD	DE,CONTM
	JP	Z,RESTART
;
;   ELSE QUIT
;
	JP	0


;*************************************************************************
;
;	NEW LINE TO PRINTER
;
;*************************************************************************
PCRLF:	LD	HL,CRLFM
;
;   FALL INTO PRINT
;


;*************************************************************************
;
;	PRINT FUNCTION
;	ENTRY -	HL= STRING PTR (BIT 7 = 0: OK, 1: LAST CHAR)
;			0: NUL PTR, ABORT
;	EXIT -	A = ?
;
;*************************************************************************
PRINT:
;
;   CHECK FOR NUL PTR 1ST
;
	LD	A,L
	OR	A,H
	RET	Z
;
;   NOW PRINT TEXT UNTIL BIT 7 SET
;
PRINT1:	LD	E,(HL)		;GET CHAR
	PUSH	HL		;SAVE PTR FROM BDOS
	LD	C,5
	RES	7,E		;CLEAR POSSIBLE END FLAG
	CALL	BDOS
	POP	HL
	BIT	7,(HL)
	INC	HL
	JP	Z,PRINT1
;
	RET


;*************************************************************************
;
;	MESSAGES
;
;*************************************************************************
SIGNON	DB	CR,LF,'GRH Enterprises label maker  Vers '
	DB	HIGH VERS,'.',LOW VERS
CONTM	DB	CR,LF,LF
	DB	'READY PRINTER AND PRESS ANY KEY TO CONTINUE',CR,LF
	DB	'$'
REQM	DB	CR,LF,'ANOTHER SHEET? (Y/N) - $'
;
;   NEW LINE TEXT
;
CRLFM	DM	CR,LF


;############################################################################
;
;   PRINTER UNIQUE TEXT
;
;############################################################################
;
;   DATA
;
LABROW	DB	11			;NUMBER OF ROWS OF LABELS
;
;   PRINTER TEXT PTRS
;
PINIT	DW	PI			;INITIALIZE PRINTER PTR
PSTOP	DW	PS			;RESTORE PRINTER WHEN DONE PTR
LINE1	DW	L1,L2,L3,L4,L5,L6,L7	;LINE PTRS (0 TERMINATES)
;
;   INITIALIZE PRINTER TEXT (0: NONE)
;
PI	DM	1BH,58H,01H,12H		;INITIALIZE TO LETTER QUAL,10CPI
PS	DM	12H,1BH,58H,0		;RESET TO 10CPI, DRAFT QUAL
;
;   MACRO TO GENERATE THE TEXT
;
GENLINE	MACRO	#TEXT,#GAP1,#GAP2
	DB	#TEXT
	DB	#GAP1
	DB	#TEXT
	DB	#GAP2
	DB	#TEXT
	ENDM
;
;   TEXT LINES
;
L1:	DB	0EH,0FH		;DOUBLE WIDE, 17CPI
	GENLINE	'  GRH ENTERPRISES',     '        ','       '
	DM	CR,LF
L2:	DB	12H,14H		;NORMAL TEXT, 10CPI
	GENLINE	'   1129 Stonylake Ct    ','     ','    '
	DM	CR,LF
L3:	GENLINE	'  SUNNYVALE, CA 94089   ','     ','    '
	DM	CR,LF
L4:	DM	LF
L5:	GENLINE	'  Phone (408) 745-7655  ','     ','    '
	DM	CR,LF
L6:	DM	LF
L7:	EQU	0

	END
