[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

   IFND  DEVICES_PRTBASE_I
DEVICES_PRTBASE_I EQU   1
**
**      $Filename: devices/prtbase.i $
**      $Release: 2.04 Includes, V37.4 $
**      $Revision: 1.9 $
**      $Date: 90/07/26 $
**
**      printer.device base structure definitions
**
**      (C) Copyright 1987-1999 Amiga, Inc.
**          All Rights Reserved
**

   IFND  EXEC_TYPES_I
   INCLUDE  "exec/types.i"
   ENDC
   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_LIBRARIES_I
   INCLUDE  "exec/libraries.i"
   ENDC
   IFND  EXEC_TASKS_I
   INCLUDE  "exec/tasks.i"
   ENDC

   IFND  DEVICES_PARALLEL_I
   INCLUDE  "devices/parallel.i"
   ENDC
   IFND  DEVICES_SERIAL_I
   INCLUDE  "devices/serial.i"
   ENDC
   IFND  DEVICES_TIMER_I
   INCLUDE  "devices/timer.i"
   ENDC
   IFND  LIBRARIES_DOSEXTENS_I
   INCLUDE  "libraries/dosextens.i"
   ENDC
   IFND  INTUITION_INTUITION_I
   INCLUDE  "intuition/intuition.i"
   ENDC


 STRUCTURE  DeviceData,LIB_SIZE
    APTR dd_Segment           ; A0 when initialized
    APTR dd_ExecBase          ; A6 for exec
    APTR dd_CmdVectors        ; command table for device commands
    APTR dd_CmdBytes          ; bytes describing which command queue
    UWORD   dd_NumCommands    ; the number of commands supported
    LABEL   dd_SIZEOF


*------
*------ device driver private variables ------------------------------
*------
du_Flags EQU   LN_PRI         ; various unit flags

;------ IO_FLAGS
    BITDEF  IO,QUEUED,4       ; command is queued to be performed
    BITDEF  IO,CURRENT,5      ; command is being performed
    BITDEF  IO,SERVICING,6    ; command is being actively performed
    BITDEF  IO,DONE,7         ; command is done

;------ du_Flags
    BITDEF  DU,STOPPED,0      ; commands are not to be performed


*------ Constants ----------------------------------------------------
P_PRIORITY      EQU     0
P_OLDSTKSIZE    EQU     $0800   ; stack size for child task (OBSOLETE)
P_STKSIZE       EQU     $1000   ; stack size for child task
P_BUFSIZE       EQU     256     ; size of internal buffers for text i/o
P_SAFESIZE      EQU     128     ; safety margin for text output buffer

*------ pd_Flags ------
   BITDEF   P,IOR0,0          ; IOR0 is in use
   BITDEF   P,IOR1,1          ; IOR1 is in use
   BITDEF   P,EXPUNGED,7      ; device to be expunged when all closed

 STRUCTURE  PrinterData,dd_SIZEOF
    STRUCT  pd_Unit,MP_SIZE   ; the one and only unit
    BPTR pd_PrinterSegment    ; the printer specific segment
    UWORD   pd_PrinterType    ; the segment printer type
    APTR pd_SegmentData       ; the segment data structure
    APTR pd_PrintBuf          ; the raster print buffer
    APTR pd_PWrite            ; the parallel write function
    APTR pd_PBothReady        ; the parallel write function's done

    IFGT IOEXTPar_SIZE-IOEXTSER_SIZE
    STRUCT  pd_IOR0,IOEXTPar_SIZE   ; port I/O request 0
    STRUCT  pd_IOR1,IOEXTPar_SIZE   ;   and 1 for double buffering
    ENDC

    IFLE IOEXTPar_SIZE-IOEXTSER_SIZE
    STRUCT  pd_IOR0,IOEXTSER_SIZE   ; port I/O request 0
    STRUCT  pd_IOR1,IOEXTSER_SIZE   ;   and 1 for double buffering
    ENDC

    STRUCT  pd_TIOR,IOTV_SIZE       ; timer I/O request
    STRUCT  pd_IORPort,MP_SIZE      ;   and message reply port
    STRUCT  pd_TC,TC_SIZE           ; write task
    STRUCT  pd_OldStk,P_OLDSTKSIZE  ;   and stack space (OBSOLETE)
    UBYTE   pd_Flags                ; device flags
    UBYTE   pd_pad                  ; padding
    STRUCT  pd_Preferences,pf_SIZEOF ; the latest preferences
    UBYTE   pd_PWaitEnabled         ; wait function switch
;   /* new fields for V2.0 */
    UBYTE   pd_Pad1                 ; padding
    STRUCT  pd_Stk,P_STKSIZE        ; stack space
    LABEL   pd_SIZEOF               ; warning! this may be odd

    BITDEF  PPC,GFX,0           ;graphics (bit position)
    BITDEF  PPC,COLOR,1         ;color (bit position)

PPC_BWALPHA     EQU     $00     ;black&white alphanumerics
PPC_BWGFX       EQU     $01     ;black&white graphics
PPC_COLORALPHA  EQU     $02     ;color alphanumerics
PPC_COLORGFX    EQU     $03     ;color graphics

PCC_BW          EQU     1       ;black&white only
PCC_YMC         EQU     2       ;yellow/magenta/cyan only
PCC_YMC_BW      EQU     3       ;yellow/magenta/cyan or black&white
PCC_YMCB        EQU     4       ;yellow/magenta/cyan/black

PCC_4COLOR      EQU     $4      ;a flag for YMCB and BGRW
PCC_ADDITIVE    EQU     $8      ;not ymcb but blue/green/red/white
PCC_WB          EQU     $9      ;black&white only, 0 == BLACK
PCC_BGR         EQU     $a      ;blue/green/red
PCC_BGR_WB      EQU     $b      ;blue/green/red or black&white
PCC_BGRW        EQU     $c      ;blue/green/red/white
;       The picture must be scanned once for each color component, as the
;       printer can only define one color at a time.  ie. If 'PCC_YMC' then
;       first pass sends all 'Y' info to printer, second pass sends all 'M'
;       info, and third pass sends all C info to printer.  The CalComp
;       PlotMaster is an example of this type of printer.
PCC_MULTI_PASS  EQU     $10     ;see explanation above

 STRUCTURE  PrinterExtendedData,0
    APTR    ped_PrinterName   ; printer name, null terminated
    APTR    ped_Init          ; called after LoadSeg
    APTR    ped_Expunge       ; called before UnLoadSeg
    APTR    ped_Open          ; called at OpenDevice
    APTR    ped_Close         ; called at CloseDevice
    UBYTE   ped_PrinterClass  ; printer class
    UBYTE   ped_ColorClass    ; color class
    UBYTE   ped_MaxColumns    ; number of print columns available
    UBYTE   ped_NumCharSets   ; number of character sets
    UWORD   ped_NumRows       ; number of 'pins' in print head
    ULONG   ped_MaxXDots      ; number of dots maximum in a raster dump
    ULONG   ped_MaxYDots      ; number of dots maximum in a raster dump
    UWORD   ped_XDotsInch     ; horizontal dot density
    UWORD   ped_YDotsInch     ; vertical dot density
    APTR    ped_Commands      ; printer text command table
    APTR    ped_DoSpecial     ; special command handler
    APTR    ped_Render        ; raster render function
    LONG    ped_TimeoutSecs   ; good write timeout
;------ the following only exists if the segment version is 33 or greater
        APTR     ped_8BitChars  ;conversion strings for the extended font
        LONG     ped_PrintMode  ;set if text printed, otherwise 0
;------ the following only exists if the segment version is 34 or greater
        APTR    ped_ConvFunv    ; ptr to conversion function for all chars
        LABEL   ped_SIZEOF

 STRUCTURE  PrinterSegment,0
    ULONG   ps_NextSegment    ; (actually a BPTR)
    ULONG   ps_runAlert       ; MOVEQ #0,D0 : RTS
    UWORD   ps_Version        ; segment version
    UWORD   ps_Revision       ; segment revision
    LABEL   ps_PED            ; printer extended data

   ENDC