amos-professional/includes/devices/printer.i
2020-04-26 02:58:13 +02:00

212 lines
8.0 KiB
OpenEdge ABL

IFND DEVICES_PRINTER_I
DEVICES_PRINTER_I SET 1
**
** $Filename: devices/printer.i $
** $Release: 1.3 $
**
** printer device command definitions
**
** (C) Copyright 1985,1986,1987,1988 Commodore-Amiga, Inc.
** All Rights Reserved
**
IFND EXEC_NODES_I
INCLUDE "exec/nodes.i"
ENDC
IFND EXEC_LISTS_I
INCLUDE "exec/lists.i"
ENDC
IFND EXEC_PORTS_I
INCLUDE "exec/ports.i"
ENDC
IFND EXEC_IO_I
INCLUDE "exec/io.i"
ENDC
DEVINIT
DEVCMD PRD_RAWWRITE
DEVCMD PRD_PRTCOMMAND
DEVCMD PRD_DUMPRPORT
DEVCMD PRD_QUERY
;****** printer definitions
aRIS EQU 0 ; ESCc reset ISO
aRIN EQU 1 ; ESC#1 initialize +++
aIND EQU 2 ; ESCD lf ISO
aNEL EQU 3 ; ESCE return,lf ISO
aRI EQU 4 ; ESCM reverse lf ISO
aSGR0 EQU 5 ; ESC[0m normal char set ISO
aSGR3 EQU 6 ; ESC[3m italics on ISO
aSGR23 EQU 7 ; ESC[23m italics off ISO
aSGR4 EQU 8 ; ESC[4m underline on ISO
aSGR24 EQU 9 ; ESC[24m underline off ISO
aSGR1 EQU 10 ; ESC[1m boldface on ISO
aSGR22 EQU 11 ; ESC[22m boldface off ISO
aSFC EQU 12 ; SGR30-39 set foreground color ISO
aSBC EQU 13 ; SGR40-49 set background color ISO
aSHORP0 EQU 14 ; ESC[0w normal pitch DEC
aSHORP2 EQU 15 ; ESC[2w elite on DEC
aSHORP1 EQU 16 ; ESC[1w elite off DEC
aSHORP4 EQU 17 ; ESC[4w condensed fine on DEC
aSHORP3 EQU 18 ; ESC[3w condensed off DEC
aSHORP6 EQU 19 ; ESC[6w enlarged on DEC
aSHORP5 EQU 20 ; ESC[5w enlarged off DEC
aDEN6 EQU 21 ; ESC[6"z shadow print on DEC (sort of)
aDEN5 EQU 22 ; ESC[5"z shadow print off DEC
aDEN4 EQU 23 ; ESC[4"z doublestrike on DEC
aDEN3 EQU 24 ; ESC[3"z doublestrike off DEC
aDEN2 EQU 25 ; ESC[2"z NLQ on DEC
aDEN1 EQU 26 ; ESC[1"z NLQ off DEC
aSUS2 EQU 27 ; ESC[2v superscript on +++
aSUS1 EQU 28 ; ESC[1v superscript off +++
aSUS4 EQU 29 ; ESC[4v subscript on +++
aSUS3 EQU 30 ; ESC[3v subscript off +++
aSUS0 EQU 31 ; ESC[0v normalize the line +++
aPLU EQU 32 ; ESCL partial line up ISO
aPLD EQU 33 ; ESCK partial line down ISO
aFNT0 EQU 34 ; ESC(B US char set or Typeface 0 (default)
aFNT1 EQU 35 ; ESC(R French char set or Typeface 1
aFNT2 EQU 36 ; ESC(K German char set or Typeface 2
aFNT3 EQU 37 ; ESC(A UK char set or Typeface 3
aFNT4 EQU 38 ; ESC(E Danish I char set or Typeface 4
aFNT5 EQU 39 ; ESC(H Sweden char set or Typeface 5
aFNT6 EQU 40 ; ESC(Y Italian char set or Typeface 6
aFNT7 EQU 41 ; ESC(Z Spanish char set or Typeface 7
aFNT8 EQU 42 ; ESC(J Japanese char set or Typeface 8
aFNT9 EQU 43 ; ESC(6 Norweign char set or Typeface 9
aFNT10 EQU 44 ; ESC(C Danish II char set or Typeface 10
; Suggested typefaces are:
;
; 0 - default typeface.
; 1 - Line Printer or equiv.
; 2 - Pica or equiv.
; 3 - Elite or equiv.
; 4 - Helvetica or equiv.
; 5 - Times Roman or equiv.
; 6 - Gothic or equiv.
; 7 - Script or equiv.
; 8 - Prestige or equiv.
; 9 - Caslon or equiv.
; 10 - Orator or equiv.
;
aPROP2 EQU 45 ; ESC[2p proportional on +++
aPROP1 EQU 46 ; ESC[1p proportional off +++
aPROP0 EQU 47 ; ESC[0p proportional clear +++
aTSS EQU 48 ; ESC[n E set proportional offset ISO
aJFY5 EQU 49 ; ESC[5 F auto left justify ISO
aJFY7 EQU 50 ; ESC[7 F auto right justiy ISO
aJFY6 EQU 51 ; ESC[6 F auto full justify ISO
aJFY0 EQU 52 ; ESC[0 F auto justify off ISO
aJFY2 EQU 53 ; ESC[2 F word space(auto center) ISO (special)
aJFY3 EQU 54 ; ESC[3 F letter space (justify) ISO (special)
aVERP0 EQU 55 ; ESC[0z 1/8" line spacing +++
aVERP1 EQU 56 ; ESC[1z 1/6" line spacing +++
aSLPP EQU 57 ; ESC[nt set form length n DEC
aPERF EQU 58 ; ESC[nq perf skip n (n>0) +++
aPERF0 EQU 59 ; ESC[0q perf skip off +++
aLMS EQU 60 ; ESC#9 Left margin set +++
aRMS EQU 61 ; ESC#0 Right margin set +++
aTMS EQU 62 ; ESC#8 Top margin set +++
aBMS EQU 63 ; ESC#2 Bottom marg set +++
aSTBM EQU 64 ; ESC[Pn1;Pn2r T&B margins DEC
aSLRM EQU 65 ; ESC[Pn1;Pn2s L&R margin DEC
aCAM EQU 66 ; ESC#3 Clear margins +++
aHTS EQU 67 ; ESCH Set horiz tab ISO
aVTS EQU 68 ; ESCJ Set vertical tabs ISO
aTBC0 EQU 69 ; ESC[0g Clr horiz tab ISO
aTBC3 EQU 70 ; ESC[3g Clear all h tab ISO
aTBC1 EQU 71 ; ESC[1g Clr vertical tabs ISO
aTBC4 EQU 72 ; ESC[4g Clr all v tabs ISO
aTBCALL EQU 73 ; ESC#4 Clr all h & v tabs +++
aTBSALL EQU 74 ; ESC#5 Set default tabs +++
aEXTEND EQU 75 ; ESC[Pn"x extended commands +++
aRAW EQU 76 ; ESC[Pn"r Next 'Pn' chars are raw +++
STRUCTURE IOPrtCmdReq,IO_SIZE
UWORD io_PrtCommand ; printer command
UBYTE io_Parm0 ; first command parameter
UBYTE io_Parm1 ; second command parameter
UBYTE io_Parm2 ; third command parameter
UBYTE io_Parm3 ; fourth command parameter
LABEL iopcr_SIZEOF
STRUCTURE IODRPReq,IO_SIZE
APTR io_RastPort ; raster port
APTR io_ColorMap ; color map
ULONG io_Modes ; graphics viewport modes
UWORD io_SrcX ; source x origin
UWORD io_SrcY ; source y origin
UWORD io_SrcWidth ; source x width
UWORD io_SrcHeight ; source x height
LONG io_DestCols ; destination x width
LONG io_DestRows ; destination y height
UWORD io_Special ; option flags
LABEL iodrpr_SIZEOF
SPECIAL_MILCOLS EQU $0001 ; DestCols specified in 1/1000"
SPECIAL_MILROWS EQU $0002 ; DestRows specified in 1/1000"
SPECIAL_FULLCOLS EQU $0004 ; make DestCols maximum possible
SPECIAL_FULLROWS EQU $0008 ; make DestRows maximum possible
SPECIAL_FRACCOLS EQU $0010 ; DestCols is fraction of FULLCOLS
SPECIAL_FRACROWS EQU $0020 ; DestRows is fraction of FULLROWS
SPECIAL_CENTER EQU $0040 ; center image on paper
SPECIAL_ASPECT EQU $0080 ; ensure correct aspect ratio
SPECIAL_DENSITY1 EQU $0100 ; lowest resolution (dpi)
SPECIAL_DENSITY2 EQU $0200 ; next res
SPECIAL_DENSITY3 EQU $0300 ; next res
SPECIAL_DENSITY4 EQU $0400 ; next res
SPECIAL_DENSITY5 EQU $0500 ; next res
SPECIAL_DENSITY6 EQU $0600 ; next res
SPECIAL_DENSITY7 EQU $0700 ; highest res
SPECIAL_NOFORMFEED EQU $0800 ; don't eject paper after gfx prints
SPECIAL_TRUSTME EQU $1000 ; don't reset on gfx prints
;
; Compute print size, set 'io_DestCols' and 'io_DestRows' in the calling
; program's 'IODRPReq' structure and exit, don't print. This allows the
; calling program to see what the final print size would be in printer
; pixels. Note that it modifies the 'io_DestCols' and 'io_DestRows'
; fields of your 'IODRPReq' structure. Also, set the print density and
; update the 'MaxXDots', 'MaxYDots', 'XDotsInch', and 'YDotsInch' fields
; of the 'PrinterExtendedData' structure.
;
SPECIAL_NOPRINT EQU $2000 ; see above
PDERR_NOERR EQU 0 ; clean exit, no errors
PDERR_CANCEL EQU 1 ; user cancelled print
PDERR_NOTGRAPHICS EQU 2 ; printer cannot output graphics
PDERR_INVERTHAM EQU 3 ; OBSOLETE
PDERR_BADDIMENSION EQU 4 ; print dimensions illegal
PDERR_DIMENSIONOVFLOW EQU 5 ; OBSOLETE
PDERR_INTERNALMEMORY EQU 6 ; no memory for internal variables
PDERR_BUFFERMEMORY EQU 7 ; no memory for print buffer
;
; Note : this is an internal error that can be returned from the render
; function to the printer device. It is NEVER returned to the user.
; If the printer device sees this error it converts it 'PDERR_NOERR'
; and exits gracefully. Refer to the document on
; 'How to Write a Graphics Printer Driver' for more info.
;
PDERR_TOOKCONTROL EQU 8 ; I took control in case 0 of render
; internal use
SPECIAL_DENSITYMASK EQU $0700 ; masks out density values
SPECIAL_DIMENSIONSMASK EQU SPECIAL_MILCOLS!SPECIAL_MILROWS!SPECIAL_FULLCOLS!SPECIAL_FULLROWS!SPECIAL_FRACCOLS!SPECIAL_FRACROWS!SPECIAL_ASPECT
ENDC ; DEVICES_PRINTER_I