File LPRINT.QS

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

START		;LABEL PRINTER
INCLUDE (01,NAMFIL,RS)
RECORD PRINTREC,C
	PRINTBUFF,	A120
RECORD PTREC4,X
	P4,	A96
RECORD PTREC3,X
	P3,	A72
RECORD PTREC2,X
	P2,	A48
RECORD PTREC1,X
	P1,	A24
SPACE 1
RECORD STOREC,C
	SLNAME,	5A12
	SFNAME,	5A12
	SADDR1,	5A24
	SADDR2,	5A24
	SADDR3,	5A15
	SSTATE,	5A2
	SZIP,	5D5
;				THESE 5 BUFFERS HOLD THE 5 LABELS WHICH
;					MIGHT BE WAITING TO PRINT.
SPACE 1
RECORD,C
	PLINE,	A24			;HOLD ONE LINE OF ONE LABEL
	NUP,	D1			;N UP,  NUMBER OF LABELS/WIDTH
	KB1,	A1			;KEYBOARD READ IN BUFFER
	KB3,	A3			;KEYBOARD READ IN BUFFER
	KBD,	D3			; KEYBOARD TERMINATOR
	CNT,	D3			;COUNTER FOR LOOPS
	LINE,	D1			;COUNTER FOR LABEL LINE NUMBER
	POS,	D3			;COUNTER FOR LINE POSITION
	RECNO,	D3			;RECORD NUMBER
	RECMAX,	D3			;MAX REC NUM TO PRINT
	EOFLAG,	D1			;FLAG SET=1 WHEN LAST REC READ
SPACE 3
PROC	;LABEL PRINT PROCEDURES
INIT,	ON ERROR INPERR			;BAD INPUT ROUTINE SET
DISPLAY(1,1,1)			;CLEAR SCREEN
DISPLAY(2,30,'LABEL PRINTING PROGRAM')
DISPLAY(5,5,'HOW MANY LABELS WIDE ARE THE FORMS? (1 TO 5) ')
ACCEPT(KBD,KB1)						;READ N-UP VALUE
NUP=KB1
DISPLAY(7,5,'WHAT IS THE BEGINNING RECORD NUMBER? ')
ACCEPT(KBD,KB3)					;READ 3 CHARS
IF (KBD.NE.013) GOTO  INPERR			;MAYBE BAD IF NOT <CR>
RECNO = KB3					;SAVE FIRST REC NUM
RECNO = RECNO-1					; WILL BE INCR LATER
DISPLAY(9,5,'WHAT IS THE ENDING RECORD NUMBER? ')
ACCEPT(KBD,KB3)					;READ 3 CHARS
IF (KBD.NE.013)  GOTO INPERR			;MAYBE BAD IF NOT <CR>
RECMAX = KB3					;SAVE MAX REC NUM
ON ERROR					;UNSET INPUT ERROR
OPEN('160107NAMFILDT')				;OPEN INPUT FILE ON RXA1
SPACE 2
MLOOP,	
	CNT = 1					;BEGIN EACH GROUP OF LABELS HERE
READ,
	INCR RECNO
	IF (RECNO.GE.RECMAX) CALL EOFSET	;RESET NUP & EOF FLAG
	READ(01,NAMFIL,RECNO)
	SLNAME(CNT)=LNAME			;STORE ALL READS IN ARRAYS
	SFNAME(CNT)=FNAME
	SADDR1(CNT)=ADDR1
	SADDR2(CNT)=ADDR2
	SADDR3(CNT)=ADDR3
	SSTATE(CNT)=STATE
	SZIP(CNT)  =ZIP
	INCR CNT
	IF (CNT.LE.NUP)   GOTO READ		;REPEATNUP TIMES
SPACE 1
	LINE =1
LINBLD,
	CNT=1
LLOOP,
	PLINE=					;CLEAR LABEL LINE BUFFER
	CALL(LN1,LN2,LN3,LN4),LINE		;FILL PLINE
	POS = (24*(CNT-1))+1
	PRINTBUF(POS,POS+24) = PLINE		;POSITION IN PRINT BUFFER
	INCR CNT
	IF (CNT.LE.NUP) GOTO LLOOP		;REPEAT NUP TIMES
SPACE 2
	CALL(PRT1,PRT2,PRT3,PRT4,PRT5),NUP	;WRITE PRINT BUFFER
	INCR LINE
	IF (LINE.LT.5) GOTO LINBLD		;REPEAT FOR ALL 4 LINES
SPACE 2
	FORMS(6,3)				;SKIP 3 LINES AFTER LABEL
	IF (EOFLAG=1) GOTO EOF			;FINISHED LAST LINE
	GOTO MLOOP				;FINISH FILE
SPACE 4
LN1,	PLINE(1,12)=SFNAME(CNT)
	PLINE(13,24)=SLNAME(CNT)
	RETURN
LN2,	PLINE = SADDR1(CNT)
	RETURN
LN3,	PLINE = SADDR2(CNT)
	RETURN
LN4,	PLINE(1,15) = SADDR3(CNT)
	PLINE(17,18) = SSTATE(CNT)
	PLINE(20,24) = SZIP(CNT)
	RETURN
SPACE 2
PRT1,	XMIT(6,PTREC1)
	RETURN
PRT2,	XMIT(6,PTREC2)
	RETURN
PRT3,	XMIT(6,PTREC3)
	RETURN
PRT4,	XMIT(6,PTREC4)
	RETURN
PRT5,	XMIT(6,PRINTREC)
	RETURN
SPACE 2
INPERR,	DISPLAY(20,20,'INPUT ERROR')
	DISPLAY(21,10,'THE QUESTIONS MUST BE ANSWERED WITH NUMBERS')
	DISPLAY(22,10,'PLEASE PRESS <CR> TO REPEAT QUESTIONS.')
	ACCEPT(KBD,KB1)
	GOTO INIT
SPACE 3
EOFSET,
	NUP = CNT			;LAST LINE IS ONLY CNT LABELS WIDE
	EOFLAG = 1			;SET FLAG
	RETURN
SPACE 3
EOF,
	FINI(01)
	FINI(06)
	DISPLAY(10,30,'FINISHED')
END



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