	.TITLE	VRSSMBFLG - FLAG PAGE ROUTINE
	.SBTTL	DECLARATIONS
;
;
;	LANGUAGE:  VAX-11 MACRO
;
;	OPERATING SYSTEM:  VAX/VMS
;
;	ORDER NUMBER:  12X-9XV
;
;	PART NUMBER:  000-025809-XXX REV. G  MAY, 1985
;
;	PRODUCT: VAX-11 DIAGNOSTIC,
;	PRODUCT: VAX/VMS DRIVER, SYMBIONT, AND OUTPUT PACKAGE
;
;	VERSATEC, INC., SANTA CLARA, CALIFORNIA 95051
;	A XEROX COMPANY
;
;	Copyright (C) 1985 by Xerox Corporation.  All rights reserved.
;
;	"NOTICE. THIS PROGRAM IS THE EXCLUSIVE PROPERTY OF VERSATEC,
;	INC. AND IS ISSUED IN STRICT CONFIDENCE UNDER A PREARRANGED
;	LICENSE AGREEMENT AND IS NOT TO BE DISCLOSED IN ANY MANNER TO
;	PERSONS OUTSIDE THE LICENSED ORGANIZATION AND SHALL NOT BE
;	REPRODUCED OR DISSEMINATED, IN WHOLE OR PART, TO ANYONE OUTSIDE
;	THE LICENSED ORGANIZATION WITHOUT THE PRIOR WRITTEN APPROVAL OF
;	VERSATEC, INC. UNLESS OTHERWISE PROVIDED FOR BY SUCH LICENSE
;	AGREEMENT.  THIS WORK IS PROTECTED AS AN UNPUBLISHED WORK UNDER
;	THE COPYRIGHT ACT OF 1976."
;
;
;	VERSATEC SYMBIONT FLAG PAGE ROUTINE
;
;	B.L.	MAY, 1985	INITIAL RELEASE WITH REV. G DRIVER
;
;
	$QIODEF
 
	.LIBRARY	\SYS$LIBRARY:LIB\
	$SMBDEF
;F_STRING: .BLKB 100
 
	.PSECT	VRSSMBFLG,EXE,RD,NOWRT,LONG
 
HDR1:	.WORD	2$-1$,0			;FAO STRING FOR HEADER LINE
	.ADDRESS 1$
1$:	.ASCII	\File name !AS  \	;FILE SPECIFICATION
2$:
HDR2:	.WORD	4$-3$,0			;FAO STRING FOR HEADER LINE
	.ADDRESS 3$
3$:	.ASCII	\Job !AS \		;JOB NAME
	.ASCII	\queued to !AS \	;QUEUE NAME
	.ASCII	\at !17%D  \		;TIME FILE QUEUED
	.ASCII	\by user !AS, \		;USER NAME
	.ASCII	\started on printer !AS: \ ;PRINTER NAME
	.ASCII	\at !17%D.\		;TIME FILE PRINTED
4$:
 
	.PAGE
	.SBTTL	FLAG PAGE ROUTINE
;++
; FUNCTIONAL DESCRIPTION: ROUTINE TO PRINT THE FLAG/BURST PAGE(S)
; FOR THE SYMBIONT.  PAPER IS ASSUMED TO BE AT TOP OF FORM.
;
;
; CALLING SEQUENCE:
;	BSB/JSB		VRSSMB$FLAGPAGE
;
; SIDE EFFECTS:
;	R2,R3,R4 DESTROYED
 
 
VRSSMB$FLAGPAGE::			;PRINT HEADER PAGE
 
10$:	BSBW	100$			;PRINT HEADER LINES
	BLBC	R0,15$			;BRANCH IF ERROR
	BSBW	140$			;MOVE DOWN PAGE 2 LINES
	BLBC	R0,15$			;BRANCH IF ERROR
	MOVZWL	SD_Q_USR_NAM,R2		;SIZE OF USER NAME
	MOVL	SD_Q_USR_NAM+4,R3	;ADDRESS OF USER NAME
	MOVL	#<2*256+1*256+1*256+25>,-; SET WIDE PRINTING PARAMETERS
		R4			;SPACOUT=25,WIDTH=1,HEIGTH=1,SPACING=2
	BSBW	VRSSMB$CHRGEN		;PRINT USER NAME
	BLBC	R0,15$			;BRANCH IF ERROR
	BSBW	140$			;POSITION PAPER
	BLBC	R0,15$			;BRANCH IF ERROR
	$FILESCAN_S	SD_Q_FILE_SPEC,SD_L_FILE_SCAN ;FIND FILENAME AND TYPE
	BLBC	R0,15$			;BRANCH IF ERROR
	MOVZWL	SD_W_FNAM_LEN,R2	;SIZE OF FILE NAME
	CMPL	R2,#10			;MAKE SURE NOT TOO LONG
	BLEQ	12$			;BR IF OK
	MOVL	#10,R2			;PRINT ONLY FIRST 10 CHARACTERS
12$:	MOVL	SD_L_FNAM_ADDR,R3	;ADDRESS OF FILE NAME
	MOVL	#<2*256+2*256+2*256+4>,-; SET MAGIC CONSTANT FOR WIDLINE
		R4			;SPACOUT=4,WIDTH=2,HEIGHT=2,SPACING=2
	BSBW	VRSSMB$CHRGEN		;PRINT FILE NAME
	BLBC	R0,15$			;BR IF ERROR
	BSBW	140$			;SPACE DOWN THE PAGE 2 LINES
	BLBS	R0,20$			;BRANCH IF NO ERROR
15$:	BRW	30$			;GO HANDLE ERROR
20$:	ADDW3	SD_W_FTYP_LEN,SD_W_FVER_LEN,R2 ;SIZE OF FILE TYPE
	CMPL	R2,#10			;MAKE SURE NOT TOO LONG
	BLEQ	25$			;BR IF OK
	MOVL	#10,R2			;PRINT ONLY FIRST 10 CHARACTERS
25$:	MOVL	SD_L_FTYP_ADDR,R3	;ADDRESS OF FILE TYPE
	MOVL	#<2*256+2*256+2*256+4>,-; SET MAGIC CONSTANT FOR WIDLINE
		R4			;SPACOUT=4,WIDTH=2,HEIGHT=2,SPACING=2
	BSBW	VRSSMB$CHRGEN		;AND PRINT THAT
	BLBC	R0,15$			;BR IF ERROR
	BSBW	140$			;MAKE SOME BLANK LINES
	BLBC	R0,15$			;BR IF ERROR
	BSBW	140$			;MAKE SOME BLANK LINES
	BLBC	R0,15$			;BR IF ERROR
 
	PUSHAW	#120			;MAX FILENAME LENGTH IS 120 CHARS.
	PUSHAQ	SD_Q_FILE_TRIM		;ADDRESS OF DESCR. TO HOLD TRIMMED SPEC.
	PUSHAQ	SD_Q_FILE_SPEC		;ADDRESS OF FILE-SPEC DESCRIPTOR
	CALLS	#3,G^LIB$TRIM_FILESPEC	;TRIM FILE SPECIFICATION TO FIT BUFFER
	BLBC	R0,15$			;BR IF ERROR
	PUSHAQ	SD_Q_FILE_TRIM		;ADDRESS OF DESCR. TO HOLD TRIMMED SPEC.
	PUSHAQ	SD_Q_FBUF_DESC		;ADDRESS OF FLAGPAGE BUFFER DESCRIPTOR
	PUSHAW	SD_W_FBUFCNT		;ADDR OF WORD TO HOLD LENGTH
	PUSHAL	HDR1			;PUSH FORMAT STRING ADDRESS
	CALLS	#4,@#SYS$FAO		;FORMAT THE STRING
	BLBC	R0,15$			;BR IF ERROR
	MOVZWL	SD_W_FBUFCNT,R0		;SIZE OF TEXT TO OUTPUT
	MOVAL	SD_T_FBUF,R1		;ADDRESS OF TEXT TO OUTPUT
	BSBW	VRSSMB$WRITELINN	;WRITE THE LINE
	BLBC	R0,27$			;BR IF ERROR
	BSBW	140$			;BLANK LINE
	BLBS	R0,28$			;BRANCH IF NO ERROR
27$:	BRB	30$			;GO HANDLE ERROR
 
28$:	PUSHAQ	SD_Q_PTIME		;TIME FILE WAS PRINTED
	PUSHAQ	SD_Q_DEV_NAM		;ADDR OF PRINTER NAME DESCRIPTOR
	PUSHAQ	SD_Q_USR_NAM		;ADDRESS OF USER NAME DESCRIPTOR
	PUSHL	SD_Q_TIM_QUE+4		;TIME FILE WAS QUEUED
	PUSHAQ	SD_Q_QUE_NAM		;ADDRESS OF QUEUE NAME DESCRIPTOR
	PUSHAQ	SD_Q_JOB_NAM		;ADDRESS OF JOB NAME DESCRIPTOR
	PUSHAQ	SD_Q_FBUF_DESC		;ADDRESS OF FLAGPAGE BUFFER DESCRIPTOR
	PUSHAW	SD_W_FBUFCNT		;ADDR OF WORD TO HOLD LENGTH
	PUSHAL	HDR2			;PUSH FORMAT STRING ADDRESS
	CALLS	#9,@#SYS$FAO		;FORMAT THE STRING
	BLBC	R0,30$			;BR IF ERROR
	MOVZWL	SD_W_FBUFCNT,R0		;SIZE OF TEXT TO OUTPUT
	MOVAL	SD_T_FBUF,R1		;ADDRESS OF TEXT TO OUTPUT
	BSBW	VRSSMB$WRITELINN	;WRITE THE LINE
	BLBC	R0,30$			;BR IF ERROR
	BSBW	140$			;POSITION PAPER
	BLBC	R0,30$			;BR IF ERROR
 
	BSBB	100$			;PRINT TRAILER
	BLBC	R0,30$			;BR IF ERROR
	BBCC	#SMBMSG$V_FILE_BURST,SD_L_SEP_CTL,30$ ;BR IF NO BURST INDICATOR
	BSBW	140$			;PRINT 2 BLANK LINES
	BLBC	R0,30$			;BR IF ERROR
	BSBB	100$			;PRINT BURST INDICATOR
	BLBC	R0,30$			;BR IF ERROR
	BSBB	100$			;PRINT BURST INDICATOR AGAIN
	BLBC	R0,30$			;BR IF ERROR
	BSBW	140$			;PRINT 2 BLANK LINES
	BLBC	R0,30$			;BR IF ERROR
	BRW	10$			;PRINT FLAG PAGE AGAIN
 
30$:	RSB				;RETURN
;
; LOCAL SUBROUTINE FOR HEADER/TRAILER PRINTING
100$:	MOVL	#132,R0			;LENGTH OF STRING
	MOVAL	SD_T_STAR_BUF,R1	;ADDRESS OF STAR BUFFER
	BSBW	VRSSMB$WRITELINN	;WRITE WITH NORMAL SPACING
	BLBC	R0,110$			;BR IF ERROR
	MOVL	#132,R0			;LENGTH OF STRING
	MOVAL	SD_T_FHBUF,R1		;ADDRESS OF FLAGPAGE HEADER BUFFER
	BSBW	VRSSMB$WRITELINN	;WRITE WITH NORMAL SPACING
	BLBC	R0,110$			;BR IF ERROR
	MOVL	#132,R0			;LENGTH OF STRING
	MOVAL	SD_T_STAR_BUF,R1	;ADDRESS OF STAR BUFFER
	BSBW	VRSSMB$WRITELINN	;WRITE WITH NORMAL SPACING
110$:	RSB
 
;
; LOCAL SUBROUTINE FOR SPACING DOWN THE PAGE
;
140$:	MOVZBL	#^A\0\,SD_G_QIOBLK+QIO$_P4 ;PUT CC IN QIO BLOCK
	MOVAL	SD_T_TBUF,R1		;TEMP BUFFER ADDRESS (DUMMY ADDRESS)
	CLRL	R0			;NUMBER OF BYTE TO PRINT IS 0
	BSBW	VRSSMB$WRITELINS	;OUTPUT THE DATA
	RSB
 
	.END
