; ************************** AMUS Program Label ******************************
; Filename: PDV.M68                                         Date: 06/02/90
; Category: UTIL         Hash Code: 236-224-245-646      Version: 2.0(100)
; Initials: ULTR/AM      Name: DAVID PALLMANN
; Company: ULTRASOFT CORPORATION                   Telephone #: 5163484848
; Related Files: PDVSYM.M68 (version shipped with AlphaWRITE 2.0)
; Min. Op. Sys.: Any                           Expertise Level: BEG
; Special:
; Description: Displays information about an AlphaWRITE-compatible printer
; driver, including characteristics and supported fonts.  Ex: .PDV LASJET
;
; ****************************************************************************

;****************************************************************************
;*                                                                          *
;*                                   PDV                                    *
;*               Displays information about a Printer Driver                *
;*                                                                          *
;****************************************************************************
;Copyright (C) 1990 UltraSoft Corporation.  All Rights Reserved.
;
;Written by: David Pallmann
;
;Edit History:
;2.0(100)  02-Jun-90  created. /DFP

       VMAJOR  =2
       VMINOR  =0
       VSUB    =0
       VEDIT   =100.
       VWHO    =0

       SEARCH  SYS
       SEARCH  SYSSYM
       COPY    PDVSYM

       .OFINI
       .OFDEF  PDV,    D.DDB           ; file DDB
       .OFSIZ  MEMSIZ

DEFINE  CHK     FLAG,TEXT
       MOV     D5,D7
       AND     #FLAG,D7
       BEQ     1$$
       TYPECR  TEXT
1$$:
       ENDM

DEFINE  BIT     SRC,DST
       MOV     DST,D7
       AND     SRC,D7
       ENDM

START:  PHDR    -1,0,PH$REE!PH$REU      ;
       GETIMP  MEMSIZ,A5               ;

CMDLIN: BYP                             ;
       LIN                             ;
       JEQ     USAGE                   ;
       FSPEC   PDV(A5),PDV             ;
       INIT    PDV(A5)                 ;
       LOOKUP  PDV(A5)                 ;
       JEQ     FOUND                   ;
       MOVW    #[DSK],PDV+D.DEV(A5)    ;
       CLRW    PDV+D.DRV(A5)           ;
       MOVW    #1_8.+6,PDV+D.PPN(A5)   ;
       CLR     D.DVR(A5)               ;
       LOOKUP  PDV(A5)                 ;
       JEQ     FOUND                   ;

NOT.FOUND:
       TYPE    ?                       ;
       PFILE   PDV(A5)                 ;
       TYPECR  < not found>            ;
       CRLF                            ;

USAGE:  TYPECR  The PDV command displays information about a printer driver
       TYPECR  Copyright (C) 1990 UltraSoft Corporation.  All Rights Reserved.
       CRLF                            ;
       TYPECR  Usage: .PDV driver      ;
       CRLF                            ;
       EXIT                            ;

FOUND:  FETCH   PDV(A5),A4              ;
       JNE     NOT.FOUND               ;
       TYPESP  Information about       ;
       PRNAM   PDV+D.FIL(A5)           ;
       TYPE    < version >             ;
       VCVT    P.HDR+2(A4),OT$TRM      ;
       CRLF                            ;
       CRLF                            ;

FLAGS:  MOV     P.FLG(A4),D5            ;
       TYPECR  Characteristics:
       CHK     PD$VAR,<  - printer has variable spacing>
       CHK     PD$PRO,<  - printer has proportional spacing>
       CHK     PD$FED,<  - printer has cut sheet feeder>
       CHK     PD$EXT,<  - PDV supports extended entry points>
       CHK     PD$PTS,<  - PDV supports point-oriented calls>
       CHK     PD$SAV,<  - PDV can save & restore print state>
       CHK     PD$BLD,<  - PDV supports bold text>
       CHK     PD$UND,<  - PDV supports underscored text>
       CHK     PD$ITL,<  - PDV supports italic text>
       CHK     PD$SCR,<  - PDV supports screened text>
       CHK     PD$REV,<  - PDV supports reverse text>
       CHK     PD$GRY,<  - PDV supports gray tone control>
       CHK     PD$GRF,<  - PDV supports graphics functions>
       CHK     PD$LED,<  - PDV supports leading>
       CHK     PD$FNT,<  - PDV has a font table>
       CHK     PD$WH1,<  - PDV uses type 1 (AM302) print wheels>
       CHK     PD$WH2,<  - PDV uses type 2 (AM301) print wheels>
       CHK     PD$TOP,<  - printer uses top-of-char orientation>
       CHK     PD$EDG,<  - printer can't print to edge of page>
       CHK     PD$IMG,<  - printer has image support>
       CHK     PD$SFC,<  - printer has selectable font cartridges>
       CHK     PD$KRN,<  - supports track kerning>
       CHK     PD$KEY,<  - PDV supports keycap>
       CHK     PD$W20,<  - PDV is AlphaWRITE 2.0-compatible>
       CRLF                            ;

FONTS:  MOV     D5,D7                   ;
       AND     #PD$EXT,D7              ;
       JEQ     EXIT                    ;
       TYPECR  Fonts supported:        ;
       CALL    P.FTBL(A4)              ;
       MOV     A6,A0                   ;
5$:     TYPE    <  >                    ;
       MOV     #2,D4                   ;
10$:    CMPW    D4,#68.                 ;
       BLT     11$                     ;
       CRLF                            ;
       BR      5$                      ;
11$:    TSTW    @A0                     ;
       BEQ     20$                     ;
       MOVB    FO.LOG(A0),D1           ;
       TTY                             ;
       INCW    D4                      ;
       CLR     D1                      ;
       MOVW    FO.SIZ(A0),D1           ;
       BEQ     12$                     ;
       DCVT    0,OT$TRM                ;
       INCW    D4                      ;
       CMPW    D1,#10.                 ;
       BLT     14$                     ;
       INCW    D4                      ;
       CMPW    D1,#100.                ;
       BLT     14$                     ;
       INCW    D4                      ;
       BR      14$                     ;
12$:    TYPE    < scalable>             ;
       ADDW    #10.,D4                 ;
14$:    BIT     #FO$BLD,FO.FLG(A0)      ;
       BEQ     16$                     ;
       TYPE    < bold>                 ;
       ADDW    #5,D4                   ;
16$:    BIT     #FO$OBL,FO.FLG(A0)      ;
       BEQ     18$                     ;
       TYPE    < italic>               ;
       ADDW    #7,D4                   ;
18$:    TYPE    <; >                    ;
       ADDW    #2,D4                   ;
       ADD     #FO.ESZ,A0              ;
       JMP     10$                     ;
20$:    CRLF                            ;
       CRLF                            ;

EXIT:   EXIT                            ;

       END