home *** CD-ROM | disk | FTP | other *** search
/ AMIGA PD 1 / AMIGA-PD-1.iso / Programme_zum_Heft / Programmieren / Kurztests / PascalPCQ / Include / Devices / PrtBase.i < prev    next >
Text File  |  1990-08-28  |  5KB  |  143 lines

  1. {
  2.     PrtBase.i for PCQ Pascal
  3.  
  4.     printer device data definition
  5. }
  6.  
  7. {$I "Include:Exec/Nodes.i"}
  8. {$I "Include:Exec/Lists.i"}
  9. {$I "Include:Exec/Ports.i"}
  10. {$I "Include:Exec/Libraries.i"}
  11. {$I "Include:Exec/Tasks.i"}
  12. {$I "Include:Devices/Parallel.i"}
  13. {$I "Include:Devices/Serial.i"}
  14. {$I "Include:Devices/Timer.i"}
  15. {$I "Include:Libraries/DosExtens.i"}
  16. {$I "Include:Intuition/Intuition.i"}
  17.  
  18. Type
  19.  
  20.     DeviceData = record
  21.     dd_Device    : Library;    { standard library node }
  22.     dd_Segment    : Address;    { A0 when initialized }
  23.     dd_ExecBase    : Address;    { A6 for exec }
  24.     dd_CmdVectors    : Address;    { command table for device commands }
  25.     dd_CmdBytes    : Address;      { bytes describing which command queue }
  26.     dd_NumCommands    : Short;    { the number of commands supported }
  27.     end;
  28.     DeviceDataPtr = ^DeviceData;
  29.  
  30. Const
  31.  
  32.     P_STKSIZE        = $0800;    { stack size for child task }
  33.     P_BUFSIZE        = 256;        { size of internal buffers for text i/o }
  34.     P_SAFESIZE        = 128;        { safety margin for text output buffer }
  35.  
  36. Type
  37.  
  38.     PrinterData = record
  39.     pd_Device    : DeviceData;
  40.     pd_Unit        : MsgPort;    { the one and only unit }
  41.     pd_PrinterSegment : Address;    { the printer specific segment }
  42.     pd_PrinterType    : Short;    { the segment printer type }
  43.                     { the segment data structure }
  44.     pd_SegmentData    : Address;    { (PrinterSegmentPtr) }
  45.     pd_PrintBuf    : Address;    { the raster print buffer }
  46.     pd_PWrite    : Address;    { the write function }
  47.     pd_PBothReady    : Address;    { write function's done }
  48.     pd_ior0        : IOExtPar;    { or IOExtSer: port I/O request }
  49.     pd_ior1        : IOExtPar;    { or IOExtSer: for double buffering }
  50.     pd_TIOR        : TimeRequest;    { timer I/O request }
  51.     pd_IORPort    : MsgPort;    {   and message reply port }
  52.     pd_TC        : Task;        { write task }
  53.     pd_Stk        : Array [0..P_STKSIZE-1] of Byte;
  54.                     {   and stack space }
  55.     pd_Flags    : Byte;        { device flags }
  56.     pd_pad        : Byte;
  57.     pd_Preferences    : Preferences;    { the latest preferences }
  58.     pd_PWaitEnabled    : Byte;    { wait function switch }
  59.     end;
  60.     PrinterDataPtr = ^PrinterData;
  61.  
  62. Const
  63.  
  64. { Printer Class }
  65.  
  66.     PPCB_GFX        = 0;        { graphics (bit position) }
  67.     PPCF_GFX        = 1;        { graphics (and/or flag) }
  68.     PPCB_COLOR        = 1;        { color (bit position) }
  69.     PPCF_COLOR        = 2;        { color (and/or flag) }
  70.  
  71.     PPC_BWALPHA        = 0;        { black&white alphanumerics }
  72.     PPC_BWGFX        = 1;        { black&white graphics }
  73.     PPC_COLORALPHA    = 2;        { color alphanumerics }
  74.     PPC_COLORGFX    = 3;        { color graphics }
  75.  
  76. { Color Class }
  77.  
  78.     PCC_BW        = 1;        { black&white only }
  79.     PCC_YMC        = 2;        { yellow/magenta/cyan only }
  80.     PCC_YMC_BW        = 3;        { yellow/magenta/cyan or black&white }
  81.     PCC_YMCB        = 4;        { yellow/magenta/cyan/black }
  82.     PCC_4COLOR        = 4;        { a flag for YMCB and BGRW }
  83.     PCC_ADDITIVE    = 8;        { not ymcb but blue/green/red/white }
  84.     PCC_WB        = 9;        { black&white only, 0 == BLACK }
  85.     PCC_BGR        = 10;        { blue/green/red }
  86.     PCC_BGR_WB        = 11;        { blue/green/red or black&white }
  87.     PCC_BGRW        = 12;        { blue/green/red/white }
  88.  
  89. {
  90.     The picture must be scanned once for each color component, as the
  91.     printer can only define one color at a time.  ie. If 'PCC_YMC' then
  92.     first pass sends all 'Y' info to printer, second pass sends all 'M'
  93.     info, and third pass sends all C info to printer.  The CalComp
  94.     PlotMaster is an example of this type of printer.
  95. }
  96.  
  97.     PCC_MULTI_PASS    = $10;        { see explanation above }
  98.  
  99. Type
  100.  
  101.     PrinterExtendedData = record
  102.     ped_PrinterName    : String;    { printer name, null terminated }
  103.     ped_Init    : Address;    { called after LoadSeg }
  104.     ped_Expunge    : Address;    { called before UnLoadSeg }
  105.     ped_Open    : Address;    { called at OpenDevice }
  106.     ped_Close    : Address;    { called at CloseDevice }
  107.     ped_PrinterClass : Byte;    { printer class }
  108.     ped_ColorClass    : Byte;        { color class }
  109.     ped_MaxColumns    : Byte;        { number of print columns available }
  110.     ped_NumCharSets    : Byte;        { number of character sets }
  111.     ped_NumRows    : Short;    { number of 'pins' in print head }
  112.     ped_MaxXDots    : Integer;    { number of dots max in a raster dump }
  113.     ped_MaxYDots    : Integer;    { number of dots max in a raster dump }
  114.     ped_XDotsInch    : Short;    { horizontal dot density }
  115.     ped_YDotsInch    : Short;    { vertical dot density }
  116.     ped_Commands    : Address;    { printer text command table }
  117.     ped_DoSpecial    : Address;    { special command handler }
  118.     ped_Render    : Address;    { raster render function }
  119.     ped_TimeoutSecs    : Integer;    { good write timeout }
  120.  
  121.     { the following only exists if the segment version is >= 33 }
  122.  
  123.     ped_8BitChars    : Address;    { conv. strings for the extended font }
  124.     ped_PrintMode    : Integer;    { set if text printed, otherwise 0 }
  125.  
  126.     { the following only exists if the segment version is >= 34 }
  127.     { ptr to conversion function for all chars }
  128.  
  129.     ped_ConvFunc    : Address;
  130.     end;
  131.     PrinterExtendedDataPtr = ^PrinterExtendedData;
  132.  
  133.  
  134.     PrinterSegment = record
  135.     ps_NextSegment    : Address;    { (actually a BPTR) }
  136.     ps_runAlert    : Integer;    { MOVEQ #0,D0 : RTS }
  137.     ps_Version    : Short;    { segment version }
  138.     ps_Revision    : Short;    { segment revision }
  139.     ps_PED        : PrinterExtendedData;    { printer extended data }
  140.     end;
  141.     PrinterSegmentPtr = ^PrinterSegment;
  142.  
  143.