;PDVSYM         AlphaWRITE Printer Driver Symbol File
NOLIST
;
;                                 NOTICE
;
;All  rights  reserved.  This software is the property of Alpha Microsystems
;and the material contained herein is the  proprietary  property  and  trade
;secrets  of  Alpha Microsystems, embodying substantial creative efforts and
;confidential information, ideas and expressions, no part of  which  may  be
;reproduced  or  transmitted  in  any  form  or  by  any  means, electronic,
;mechanical,  or  otherwise,  including  photocopying  or  input  into   any
;information  storage  or  retrieval  system  without  the  express  written
;permission of Alpha Microsystems.
;
;CAUTION: Unauthorized distribution or reproduction  of  this  material  may
;subject you to legal action.
;
;Copyright (C) 1984, 1988 - All rights reserved.
;
;
;Edit History:
;[107] 17 May 1991  Edited by David Pallmann
;       Added new entry points P.OUTL and P.CBAR for AlphaWRITE 2.1A.
;       Added printer characteristics entry point P.PCH and PD$PCH flag.
;[106] 18 May 1990  Edited by David Pallmann
;       Defined ISO Latin I support and other flags for AlphaWRITE 2.1.
;[105] 16 June 1988  Edited by David Pallmann
;       Defined extended printer driver format and added new entry points for
;       AlphaWRITE 2.0 support.
;[104] 21 Jan 1986
;       Added Extended Character entry point (P.ECHR). /JC
;[103] 18 Nov 1985
;       Add super/sub flag (SSFLAG). /JC
;[102] 22 May 1985
;       Add variable for multi-pass color printing. /JC
;[101] 31 October 1984
;       Add symbols for font selection. /RBC
;[100] 9 August 1984
;       Add symbols for double underscore. /RBC
;
LIST
       PAGE
; Define Printer Driver Header Format
;
OFINI

OFDEF   P.HDR,  PH.SIZ                  ; header
OFDEF   P.FLG,  4                       ; flags:
       PD$VAR  =1                      ;   printer has variable spacing
       PD$PRO  =2                      ;   printer has proportional spacing
       PD$FED  =4                      ;   printer has cut sheet feeder
       PD$EXT  =10                     ;   PDV supports extended entry points  [105]
       PD$PTS  =20                     ;   PDV supports point-oreinted calls   [105]
       PD$SAV  =40                     ;   PDV can save & restore print state  [105]
       PD$BLD  =100                    ;   PDV supports bold text              [105]
       PD$UND  =200                    ;   PDV supports underscored text       [105]
       PD$ITL  =400                    ;   PDV supports italic text            [105]
       PD$SCR  =1000                   ;   PDV supports screened text          [105]
       PD$REV  =2000                   ;   PDV supports reverse text
       PD$GRY  =4000                   ;   PDV supports gray tone control
       PD$GRF  =10000                  ;   PDV supports graphics functions
       PD$LED  =20000                  ;   PDV supports leading
       PD$FNT  =40000                  ;   PDV has a font table
       PD$WH1  =100000                 ;   PDV uses AM301 type print wheels
       PD$WH2  =200000                 ;   PDV uses AM302 type print wheels
       PD$TOP  =400000                 ;   printer uses top-of-char orientation
       PD$EDG  =1000000                ;   printer can't print to edge of page
       PD$IMG  =2000000                ;   printer has image support
       PD$SFC  =4000000                ;   has selectable font cartridges
       PD$KRN  =10000000               ;   supports track kerning
       PD$KEY  =20000000               ;   PDV supports keycap
       PD$W20  =40000000               ;   PDV is AlphaWRITE 2.0-compatible
       PD$ISO  =100000000              ;   PDV supports ISO Latin I    [106]
       PD$W21  =200000000              ;   PDV is AlphaWRITE 2.1-compatible [106]
       PD$DSP  =400000000              ;   PDV supports double-sided printing [106]
       PD$ROT  =1000000000             ;   PDV supports text rotation [106]
       PD$OUT  =2000000000             ;   PDV supports outline fonts [107]
       PD$CHG  =4000000000             ;   PDV supports change bars [107]
       PD$PCH  =10000000000            ;   PDV can return characteristics [107]
OFDEF   P.INI,  4                       ; printer initialization
OFDEF   P.CLS,  4                       ; printer shutdown
OFDEF   P.CHR,  4                       ; output character in D1
OFDEF   P.CTL,  4                       ; output control string indexed by D1
       PC$CHOME        =0              ;  00 return carriage home
       PC$MOVAHT       =1              ;  01 move to absolute horizontal tab
       PC$ROLUP        =2              ;  02 roll up a partial line
       PC$ROLDWN       =3              ;  03 roll down a partial line
       PC$NEGLF        =4              ;  04 output negative line feed
       PC$SPLPT0       =5              ;  05 special print position 0
       PC$SPLPT1       =6              ;  06 special print position 1
       PC$RIBSC1       =7              ;  07 print in Secondary ribbon color 1
       PC$RIBSC2       =8.             ;  08 print in Secondary ribbon color 2
       PC$RIBSC3       =9.             ;  09 print in Secondary ribbon color 3
       PC$RIBPRM       =10.            ;  10 print in Primary ribbon color
       PC$FEDTR1       =11.            ;  11 select Feeder tray 1
       PC$FEDTR2       =12.            ;  12 select Feeder tray 2
       PC$FEDTR3       =13.            ;  13 select Feeder tray 3
       PC$FEDTR4       =14.            ;  14 select Feeder tray 4
       PC$FEDTGL       =15.            ;  15 select Feeder tray 1 & then tray 2
       PC$FEDEJT       =16.            ;  16 select Feeder eject
       PC$USR1         =17.            ;  17 user function 1
       PC$USR2         =18.            ;  18 user function 2
       PC$USR3         =19.            ;  19 user function 3
       PC$USR4         =20.            ;  20 user function 4
       PC$RIBSC4       =21.            ;  21 print in Secondary ribbon color
       PC$RIBSC5       =22.            ;  22 print in Secondary ribbon color
       PC$RIBSC6       =23.            ;  23 print in Secondary ribbon color
       PC$RIBSC7       =24.            ;  24 print in Secondary ribbon color
OFDEF   P.SPL,  4                       ; output control string & char in D2
OFDEF   P.CRLF, 4                       ; output CR/LF pair & setup new line
OFDEF   P.TOF,  4                       ; ouput FF & setup new page
OFDEF   P.PSON, 4                       ; enable proportional
OFDEF   P.PSOF, 4                       ; disable proportional
OFDEF   P.UNDR, 4                       ; toggle underscore
OFDEF   P.BOLD, 4                       ; toggle bold
OFDEF   P.STRK, 4                       ; toggle strikeout
OFDEF   P.BAR,  4                       ; toggle over-bar
OFDEF   P.SLPI, 4                       ; set Vertical Motion Index
OFDEF   P.SHMI, 4                       ; set Horizontal Motion Index
OFDEF   P.SCPI, 4                       ; set Characters Per Inch
OFDEF   P.STPM, 4                       ; set Top Margin
OFDEF   P.MTPM, 4                       ; move to Top Margin
OFDEF   P.SLPO, 4                       ; set Left Paper Offset
OFDEF   P.MLPO, 4                       ; move to Left Paper Offset
OFDEF   P.SLPP, 4                       ; set Lines per Page
OFDEF   P.SLSP, 4                       ; set line spacing (in 1/2 lines)
OFDEF   P.OVRP, 4                       ; setup to overprint the last character
OFDEF   P.LF,   4                       ; output line feeds per count in D2
OFDEF   P.DBL,  4                       ; toggle double underscore flag         [100]
OFDEF   P.FONT, 4                       ; select type font in D1                [101]
OFDEF   P.ECHR, 4                       ; output Extended Characters            [104]
OFDEF   P.SPARE,5.*4.                   ; THESE 5 ENTRIES RESERVED FOR ALPHA MICRO
OFDEF   P.USER, 8.*4.                   ; THESE 8 ENTRIES RESERVED FOR USERS
OFDEF   P.PSIZ, 4                       ; set page size to points in D2
OFDEF   P.TMAR, 4                       ; set top margin to points in D2
OFDEF   P.SPAR2,3*4                     ; RESERVED FOR ALPHA MICRO
OFDEF   P.LEFT, 4                       ; Set left paper offset to points in D2
OFDEF   P.LEAD, 4                       ; Set leading to points in D2
OFDEF   P.FNAM, 4                       ; Set font by name (ASCIZ string @A6)   [105]
OFDEF   P.FSIZ, 4                       ; Set font size to points in D2         [105]
OFDEF   P.ITAL, 4                       ; Toggle italic                         [105]
OFDEF   P.SCRN, 4                       ; Toggle screened                       [105]
OFDEF   P.REV,  4                       ; Toggle reverse
OFDEF   P.FATR, 4                       ; Set font attributes directly          [105]
OFDEF   P.MCHR, 4                       ; Move to character position in D2      [105]
OFDEF   P.MLIN, 4                       ; Move to line position in D2           [105]
OFDEF   P.MOVE, 4                       ; Move to points (D1,D2) coordinates    [105]
OFDEF   P.SAVE, 4                       ; Save print state                      [105]
OFDEF   P.REST, 4                       ; Restore print state                   [105]
OFDEF   P.FTBL, 4                       ; Return index to font table in A6      [105]
OFDEF   P.BYTE, 4                       ; Direct output of byte in D1           [105]
OFDEF   P.SPOR, 4                       ; Set page orientation (D1= "P" or "L") [105]
OFDEF   P.GRAY, 4                       ; Set gray (% in D2 - 0=wht, 100=blk)
OFDEF   P.GRAF, 4                       ; Perform graphics function (code in D2)
               PG$BL   =0              ;   00 begin line
               PG$EL   =1              ;   01 end line
               PG$BB   =2              ;   02 begin box
               PG$EB   =3              ;   03 end box
               PG$BR   =4              ;   04 begin rounded box
               PG$ER   =5              ;   05 end rounded box
               PG$BG   =6              ;   06 begin gray box
               PG$EG   =7              ;   07 end gray box
OFDEF   P.FSUB, 4                       ; Perform font substitution (font letter in D1)
OFDEF   P.TRSC, 4                       ; Translate special character
OFDEF   P.TREC, 4                       ; Translate extended character
OFDEF   P.OTSC, 4                       ; Output special character, return
OFDEF   P.OTEC, 4                       ; Output extended character
OFDEF   P.SETL, 4                       ; set line weight to points in D2
OFDEF   P.POVR, 4                       ; output page overlay, A6 indexes text
OFDEF   P.IMON, 4                       ; begin image/icon
OFDEF   P.IMOF, 4                       ; end image/icon
OFDEF   P.KEY,  4                       ; toggle keycap
OFDEF   P.CART, 4                       ; set cartridge/printwheel/thimble
OFDEF   P.KERN, 4                       ; set kerning as per D2
OFDEF   P.SPAG, 4                       ; set page printing
OFDEF   P.OUTL, 4                       ; toggle outline fonts
OFDEF   P.CBAR, 4                       ; toggle change bars
OFDEF   P.PCH,  4                       ; return printer characteristics        [107]
OFDEF   P.DDPE, 4                       ; toggle device-dependent print effect, code in D2
OFSIZ   P.SIZ                           ; size of PDV header & jump table area

PAGE
;Define IMPURE area indexed by A3 on entry to .PDV
;
;CAUTION: DO NOT change the order or size of this impure area as it must
;         always match the area in WRTPRT.
;

OFINI

OFDEF   PTDDB,  D.DDB                   ; print file output DDB
OFDEF   PTBUF,  512.                    ; buffer for above DDB
OFDEF   FM.FLG, 1                       ; formatting flags
        FM$UND = ^H01                  ;     underscore enabled
          FM%UND =0
        FM$BLD = ^H02                  ;     bold print enabled
          FM%BLD =1
        FM$STK = ^H04                  ;     strikeout print enabled
          FM%STK =2
        FM$BAR = ^H08                  ;     over-bar print enabled
          FM%BAR =3
        FM$PRO = ^H10                  ;     proportional spacing enabled
          FM%PRO =4
        FM$FED = ^H20                  ;     use cut sheet feeder
          FM%FED =5
        FM$DBL = ^H40                  ;     double underscore enabled         [100]
          FM%DBL =6
        FM$ITA = ^H80                  ;     italic (oblique) enabled
          FM%ITA =7
        FM$SCR = ^H100                 ;     screened enabled
          FM%SCR =10
        FM$REV = ^H200                 ;     reverse enabled
          FM%REV =11
OFDEF   STKCHR, 1                       ; current character to strikeout with
OFDEF   HMISAV, 2                       ; current Horizontal Motion Index
OFDEF   LPISAV, 2                       ; current Lines per Inch (in 1/48 units)
OFDEF   LPPSAV, 2                       ; current Lines per Page (lines)
OFDEF   CPISAV, 2                       ; current Characters per Inch
OFDEF   TPMSAV, 2                       ; current Top Margin (lines)
OFDEF   LPOSAV, 2                       ; current Left Paper Offset (1/10 inch)
OFDEF   LSPSAV, 2                       ; current line spacing (in 1/2 lines)
OFDEF   CURLIN, 4                       ; current line number
OFDEF   CURCOL, 2                       ; current output column
OFDEF   BLDCOL, 2                       ; start of bold field
OFDEF   BLDPTR, 4                       ; pointer into bold buffer
OFDEF   BLDBUF, 512.                    ; bold buffer
OFDEF   UNDCOL, 2                       ; start of underline field
OFDEF   STKCOL, 2                       ; start of strikeout field
OFDEF   BARCOL, 2                       ; start of overbar field
OFDEF   FSTCHR, 2                       ; flag that says we have output chars
OFDEF   DBLCOL, 2                       ; start of double underscore field      [100]
OFDEF   COLCNT, 2                       ; column count                          [102]
OFDEF   COLCOL, 2                       ; multi-color column count              [103]
OFDEF   MCOLSW, 1                       ; multi-color switch                    [102]
OFDEF   EXPPSW, 1                       ; expanded print mode switch            [103]
OFDEF   SSFLAG, 2.                      ; SUPER/SUB FLAG                        [103]

;definitions added for extended printer driver support
;storage space from RESVAM was used so that value of PDVIMP did not change.
;printer drivers that allocate their own memory must insure that they are not
;using more than PDVEXT bytes under any circumstances.

OFDEF   WRDSPC, 6                       ; inter-word spacing, pts. (AM floating)
OFDEF   VRTLOC, 2                       ; vertical location (points)
OFDEF   HRZLOC, 2                       ; horizontal location (points)
OFDEF   CWIDTH, 6                       ; width of character (AM float)
OFDEF   PDVARG, 6                       ; general-purpose PDV work area
OFDEF   SPLPOS, 4                       ; spooling flags (positive)     [154]
OFDEF   SPLNEG, 4                       ; spooling flags (negative)     [154]
OFDEF   SPCCNT, 2                       ; number of spaces in line      [168]
OFDEF   RESVAM, 10.                     ; AREA RESERVED FOR ALPHA MICRO         [100]
OFDEF   RESVUS, 50.                     ; AREA RESERVED FOR USERS

OFSIZ   PDVIMP                          ; size of PDV impure area

OFDEF   RESPDV, 200.                    ; reserved space for PDV variables

OFSIZ   PDVEXT                          ; size of extended PDV impure area

PAGE
;Define ASCII constants
;

       $NUL    =       00.
       $SOH    =       01.
       $STX    =       02.
       $ETX    =       03.
       $EOT    =       04.
       $ENQ    =       05.
       $ACK    =       06.
       $BEL    =       07.
       $BS     =       08.
       $HT     =       09.
       $LF     =       10.
       $VT     =       11.
       $FF     =       12.
       $CR     =       13.
       $SO     =       14.
       $SI     =       15.
       $DLE    =       16.
       $DC1    =       17.
       $DC2    =       18.
       $DC3    =       19.
       $DC4    =       20.
       $NAK    =       21.
       $SYN    =       22.
       $ETB    =       23.
       $CAN    =       24.
       $EM     =       25.
       $SUB    =       26.
       $ESC    =       27.
       $FS     =       28.
       $GS     =       29.
       $RS     =       30.
       $US     =       31.
       $SPC    =       32.

PAGE
; Define some printer macros
;
DEFINE  MOVAHT
       MOV     #01.,D1
       CALL    P.SPL(A1)
ENDM

DEFINE  NEGLF
       MOV     #04.,D1
       CALL    P.CTL(A1)
ENDM

;*************************************
;*  Printer Driver Font Table Entry  *
;*************************************

       .OFINI

       .OFDEF  FO.LOG,30.              ; logical name of font (ASCIZ)
       .OFDEF  FO.CAR,10.              ; cartridge name (ASCIZ)
       .OFDEF  FO.PHY,40.              ; physical name of font
       .OFDEF  FO.FLG,4                ; font flags
               FO$PRO  =1              ;  proportionally spaced font
               FO$KRN  =2              ;  kerned font
               FO$BLD  =4              ;  bold font
               FO$OBL  =10             ;  oblique font
               FO$SCL  =20             ;  scalable font (no fixed point size)
               FO$POR  =40             ;  orientation portrait
               FO$LAN  =100            ;  orientation landscape
               FO$RES  =200            ;  resident font
       .OFDEF  FO.TBL,4                ; width table name (RAD50)
       .OFDEF  FO.SIZ,2                ; type size (points) (zero if scalable)
       .OFDEF  FO.LED,2                ; leading (points) (zero if scalable)
       .OFDEF  FO.CPI,2                ; CPI/pitch (for fixed fonts)

       .OFSIZ  FO.ESZ                  ; table entry size

;Set Direct Print Attributes - flags
;
               PA$BLD  =1              ;  bold
               PA$UND  =2              ;  underscore
               PA$ITA  =4              ;  italic
               PA$SCR  =10             ;  screened
               PA$REV  =20             ;  reverse
               PA$DBL  =40             ;  double underscore
               PA$BAR  =100            ;  overbar
               PA$GRY  =200            ;  gray

;Font width table symbols
;
       FT$AFM=1                        ; FWT format is Adobe Font Metric Table
       FT$PTS=2                        ; FWT format is table of points*100
       FT$PKT=4                        ; a pairwise kerning table is present

;Printer characteristics block

       .OFINI
       .OFDEF  PC.MAK, 20.             ; make
       .OFDEF  PC.MOD, 20.             ; model
       .OFDEF  PC.LNG, 20.             ; page description language
       .OFDEF  PC.EXT, 8.*2            ; valid graphic file extensions
       .OFDEF  PC.XXX, 180.            ; unused
       .OFSIZ  PC.SIZ