
        IFND  INTUITION_PREFERENCES_I
INTUITION_PREFERENCES_I SET  1

*** preferences.i ***********************************************************
*
*  the Preferences structure -- (extended by bart)
*
*  $Header:
*
*  Confidential Information: Commodore-Amiga Computer, Inc.
*  Copyright (c) Commodore-Amiga Computer, Inc.
*                               Modification History
*      date    :   author :    Comments
*     ------       ------      -------------------------------------
*     3-1-85        -jimm               
*     8-11-85       -bart               split off from intuition.i              
*
****************************************************************************/

        IFND EXEC_TYPES_I
        INCLUDE "exec/types.i"
        ENDC

        IFND    DEVICES_TIMER_I
        include 'devices/timer.i'
        ENDC

; ======================================================================== 
; === Preferences ======================================================== 
; ======================================================================== 

; these are the definitions for the printer configurations 
FILENAME_SIZE EQU       30      ; Filename size 

POINTERSIZE     EQU     (1+16+1)*2      ; Size of Pointer data buffer 

; These defines are for the default font size.  These actually describe the
; height of the defaults fonts.  The default font type is the topaz
; font, which is a fixed width font that can be used in either 
; eighty-column or sixty-column mode.  The Preferences structure reflects
; which is currently selected by the value found in the variable FontSize,
; which may have either of the values defined below.  These values actually
; are used to select the height of the default font.  By changing the
; height, the resolution of the font changes as well.
TOPAZ_EIGHTY    EQU     8       
TOPAZ_SIXTY     EQU     9

; Preferences Extension Size
PREF_EXTBYTES   EQU     $40

; ------------------------------------------------------------------------
 STRUCTURE Preferences,0

    ; the default font height
    BYTE pf_FontHeight          ; height for system default font

    ; constant describing what's hooked up to the port
    BYTE pf_PrinterPort ; printer port connection

    ; the baud rate of the port
    WORD pf_BaudRate            ; baud rate for the serial port
    
    ; various timing rates
    STRUCT pf_KeyRptSpeed,TV_SIZE ; repeat speed for keyboard
    STRUCT pf_KeyRptDelay,TV_SIZE ; Delay before keys repeat
    STRUCT pf_DoubleClick,TV_SIZE ; Interval allowed between clicks

    ; Intuition Pointer data
    STRUCT pf_PointerMatrix,POINTERSIZE*2 ; Definition of pointer sprite
    BYTE pf_XOffset             ; X-Offset for active 'bit'
    BYTE pf_YOffset             ; Y-Offset for active 'bit'
    WORD pf_color17             ;********************************
    WORD pf_color18             ; Colours for sprite pointer
    WORD pf_color19             ;********************************
    WORD pf_PointerTicks        ; Sensitivity of the pointer    

    ; Workbench Screen colors
    WORD pf_color0              ;********************************
    WORD pf_color1              ;  Standard default colours
    WORD pf_color2              ;   Used in the Workbench
    WORD pf_color3              ;********************************

    ; positioning data for the Intuition View
    BYTE pf_ViewXOffset         ; Offset for top lefthand corner
    BYTE pf_ViewYOffset         ; X and Y dimensions
    WORD pf_ViewInitX           ; View initial offsets at startup
    WORD pf_ViewInitY           ; View initial offsets at startup

    BOOL EnableCLI              ; CLI availability switch

    ; printer configurations
    WORD pf_PrinterType         ; printer type
    STRUCT pf_PrinterFilename,FILENAME_SIZE ; file for printer

    ; print format and quality configurations
    WORD pf_PrintPitch          ; print pitch
    WORD pf_PrintQuality        ; print quality
    WORD pf_PrintSpacing        ; number of lines per inch
    WORD pf_PrintLeftMargin     ; left margin in characters
    WORD pf_PrintRightMargin    ; right margin in characters
    WORD pf_PrintImage          ; positive or negative
    WORD pf_PrintAspect         ; horizontal or vertical
    WORD pf_PrintShade          ; b&w, half-tone, or color
    WORD pf_PrintThreshold      ; darkness ctrl for b/w dumps


    ; print paper description
    WORD pf_PaperSize           ; paper size
    WORD pf_PaperLength         ; paper length in lines
    WORD pf_PaperType           ; continuous or single sheet

    ; Serial device settings: These are six nibble-fields in three bytes
    ; (these look a little strange so the defaults will map out to zero)
    BYTE pf_SerRWBits           ; upper nibble = (8-number of read bits)
                                    ; lower nibble = (8-number of write bits)
    BYTE pf_SerStopBuf          ; upper nibble = (number of stop bits - 1)
                                ; lower nibble = (table value for BufSize)
    BYTE pf_SerParShk           ; upper nibble = (value for Parity setting)
                                ; lower nibble = (value for Handshake mode)

    BYTE pf_LaceWB              ; if workbench is to be interlaced

    STRUCT pf_WorkName,FILENAME_SIZE ; temp file for printer

    BYTE pf_sys_reserved1       ; 
    BYTE pf_sys_reserved2       ;

    UWORD   pf_PrintFlags       ; user preference flags
    WORD    pf_PrintMaxWidth    ; max width of printed picture in 10ths/inch
    UWORD   pf_PrintMaxHeight   ; max height of printed picture in 10ths/inch 
    UBYTE   pf_PrintDensity     ; print density
    UBYTE   pf_PrintXOffset     ; offset of printed picture in 10ths/inch

    UWORD   pf_wb_Width                 ; override default workbench width
    UWORD   pf_wb_Height                ; override default workbench height
    UBYTE   pf_wb_Depth                 ; override default workbench depth

    UBYTE       pf_ext_size             ; extension information -- do not touch!
                                        ; extension size in blocks of 64 bytes
    STRUCT  pf_ext_bytes,PREF_EXTBYTES

    LABEL pf_SIZEOF


; === Preferences definitions ===========================================

; Workbench Interlace (use one bit)
LACEWB          EQU     $01

; PrinterPort
PARALLEL_PRINTER EQU    $00
SERIAL_PRINTER  EQU     $01

; BaudRate
BAUD_110        EQU     $00
BAUD_300        EQU     $01
BAUD_1200       EQU     $02
BAUD_2400       EQU     $03
BAUD_4800       EQU     $04
BAUD_9600       EQU     $05
BAUD_19200      EQU     $06
BAUD_MIDI       EQU     $07

; PaperType
FANFOLD         EQU     $00
SINGLE          EQU     $80

; PrintPitch
PICA            EQU     $000
ELITE           EQU     $400
FINE            EQU     $800

; PrintQuality
DRAFT           EQU     $000
LETTER          EQU     $100

; PrintSpacing
SIX_LPI         EQU     $000
EIGHT_LPI       EQU     $200

; Print Image
IMAGE_POSITIVE  EQU     $00
IMAGE_NEGATIVE  EQU     $01

; PrintAspect
ASPECT_HORIZ    EQU     $00
ASPECT_VERT     EQU     $01

; PrintShade
SHADE_BW        EQU     $00
SHADE_GREYSCALE EQU     $01
SHADE_COLOR     EQU     $02

; PaperSize
US_LETTER       EQU     $00
US_LEGAL        EQU     $10
N_TRACTOR       EQU     $20
W_TRACTOR       EQU     $30
CUSTOM          EQU     $40

; PrinterType
CUSTOM_NAME     EQU     $00
ALPHA_P_101     EQU     $01
BROTHER_15XL    EQU     $02
CBM_MPS1000     EQU     $03
DIAB_630        EQU     $04
DIAB_ADV_D25    EQU     $05
DIAB_C_150      EQU     $06
EPSON           EQU     $07
EPSON_JX_80     EQU     $08
OKIMATE_20      EQU     $09
QUME_LP_20      EQU     $0A
; new printer entries, 3 October 1985
HP_LASERJET     EQU     $0B
HP_LASERJET_PLUS EQU    $0C


; Serial Input Buffer Sizes
SBUF_512        EQU     $00
SBUF_1024       EQU     $01
SBUF_2048       EQU     $02
SBUF_4096       EQU     $03
SBUF_8000       EQU     $04
SBUF_16000      EQU     $05

; Serial Bit Masks
SREAD_BITS      EQU     $F0     ; pf_SerRWBits
SWRITE_BITS     EQU     $0F

SSTOP_BITS      EQU     $F0     ; pf_SerStopBuf
SBUFSIZE_BITS   EQU     $0F

SPARITY_BITS    EQU     $F0     ; pf_SerParShk
SHSHAKE_BITS    EQU     $0F

; Serial Parity (high nibble, but here shifted right, as by C-macro SPARNUM)
SPARITY_NONE    EQU     $00
SPARITY_EVEN    EQU     $01
SPARITY_ODD     EQU     $02

; Serial Handshake Mode (low nibble, mask by SHSHAKE_BITS)
SHSHAKE_XON     EQU     $00
SHSHAKE_RTS     EQU     $01
SHSHAKE_NONE    EQU     $02

; new defines for PrintFlags
CORRECT_RED             EQU     $01    ; color correct red shades
CORRECT_GREEN   EQU     $02    ; color correct green shades 
CORRECT_BLUE    EQU     $04    ; color correct blue shades
CENTER_IMAGE    EQU     $08        ; center image on paper
RELATIVE_DIMENSIONS     EQU     $10    ; use max width/height as boundaries
ABSOLUTE_DIMENSIONS     EQU     $20    ; use max width/height as absolutes
INTEGER_SCALING         EQU     $40    ; force integer scaling
HALFTONE_DITHERING      EQU     $80    ; halftone dithering

CORRECT_RGB_MASK        EQU     (CORRECT_RED+CORRECT_GREEN+CORRECT_BLUE)
IGNORE_DIMENSIONS       EQU     $0000   ; ignore max width/height settings
DIMENSIONS_MASK         EQU     (RELATIVE_DIMENSIONS+ABSOLUTE_DIMENSIONS)

        ENDC
