;*************************** AMUS Program Label ******************************
; Filename: PAGE.M68                                        Date: 01/13/89
; Category: UTIL         Hash Code: 173-630-667-451      Version: 1.0(100)
; Initials: PHI/AM       Name: JIM DULANEY
; Company: SYSTEMS TECHNOLOGY                      Telephone #:
; Related Files: FILER.M68 (MACROS)
; Min. Op. Sys.:                               Expertise Level: BEG
; Special:
; Description: Dumps a file to printer trm:printr.
; .PAGE filename(.lst) begining-page# ending-page#
;
;*****************************************************************************
;Output a page at a time to TRM:PRINTR
;04/24/81 - System Technology
;11/01/82 - [100] Converted to L processor

       SEARCH  SYS
       SEARCH  SYSSYM
       SEARCH  TRM
       SEARCH  FILER

       VMAJOR=1
       VMINOR=0
       VEDIT=100.

;Storage areas
OFINI
       .OFDEF  PAGNO,4
       .OFDEF  BEGPAG,4
       .OFDEF  ENDPAG,4
       .OFDEF  INDDB,D.DDB
       .OFDEF  PRDDB,D.DDB
OFSIZ   IMPSIZ


PAGE:   PHDR    -1,0,PH$REE!PH$REU
       CRLF
       TYPE    <== AM-100>
       MOV     #'/,D1
       TTY
       TYPESP  <L Print Page Utility>
       VCVT    PAGE+2,OT$TRM
       TYPECR  < ==>
       CRLF
       BYP
       LIN
       BNE     1$
       TYPECR  <USAGE: PAGE file(.LST) begining-page# ending-page#>
       EXIT

1$:
       GETIMP  IMPSIZ,A5
       OPNINP  INDDB(A5),LST
       PUSH    A2
       LEA     A2,PRNTR
       OPNOUT  PRDDB(A5)
       POP     A2
       CLR     PAGNO(A5)
       MOV     #-1,ENDPAG(A5)
       BYP
       GTDEC
       MOV     D1,BEGPAG(A5)
       BYP
       GTDEC
       TST     D1
       BEQ     PAGLP
       MOV     D1,ENDPAG(A5)

PAGLP:  INC     PAGNO(A5)
       CMM     BEGPAG(A5),PAGNO(A5)
       BLOS    BEGIN
PAGLP1: CALL    GETC
       JEQ     EOF
       CMPB    D1,#FF
       BNE     PAGLP1
       TYPE    <Skipping >
       CALL    PRPAG
       CRLF
       BR      PAGLP

BEGIN:  MOV     PRDDB+D.WRK(A5),A4
       CLR     PRDDB+D.IDX(A5)
       CALL    GETC
       JEQ     EOF
       CMM     ENDPAG(A5),PAGNO(A5)
       JLO     DONE
       CRLF
       TYPECR  <Insert paper into the Printer>
       BR      BRK

LOOP:   CTRLC   ABORT
       CALL    GETC
       JEQ     EOF
LOOP1:  CALL    CHOUT
       CMPB    D1,#FF
       BNE     LOOP

       INC     PAGNO(A5)
       CMM     ENDPAG(A5),PAGNO(A5)
       JLO     DONE
       CALL    GETC
       JEQ     EOF
BRK:    CALL    PRPAG
       TYPE    <Hit RETURN to continue>
       KBD
       BR      LOOP1

GETC:   GETCHR  INDDB(A5)
       RTN

PRPAG:  TYPESP  <Page No.>
       PUSH    D1
       MOV     PAGNO(A5),D1
       DCVT    0,2
       TAB
       POP     D1
       RTN

CLOSIT: CLOSE   PRDDB(A5)
       CALL    WAITOT
       CLOSE   INDDB(A5)
       RTN

WAITOT: SLEEP   #1000.
       MOVW    @A4,D7
       ANDW    #T$OIP,D7
       BNE     WAITOT
       RTN

DONE:   CALL    CLOSIT
       TYPECR  <Done.>
ABORT:  EXIT

EOF:    CALL    CLOSIT
       TYPECR  <End of File>
       EXIT

CHOUT:  PUTCHR  PRDDB(A5)
       CMPB    D1,#LF
       BEQ     LINOUT
       CMPB    D1,#FF
       BEQ     LINOUT
       RTN

LINOUT: PUSH    PRDDB+D.SIZ(A5)
       MOV     PRDDB+D.IDX(A5),PRDDB+D.SIZ(A5)
       WRITE   PRDDB(A5)
       POP     PRDDB+D.SIZ(A5)
       CLR     PRDDB+D.IDX(A5)
       CMPB    D1,#FF
       BNE     CHX
       CLOSE   PRDDB(A5)
       CALL    WAITOT
       OPENO   PRDDB(A5)
CHX:    RTN

PRNTR:  ASCII   /TRM:PRINTR/
       BYTE    0
       EVEN

       END