home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / MAXONPASCAL3.DMS / in.adf / DEMOS-OS1.3 / SysProg / printerdevice.p < prev    next >
Encoding:
Text File  |  1994-07-25  |  1.8 KB  |  70 lines

  1. { Umsetzung des Bsp.Programms Set_Prefs.c aus den RKRM_devices 3rd Ed.
  2.  
  3.   in KickPascal 2.12.
  4.  
  5.   © & P by PackMAN (Falk Zühlsdorff) Lindenberg 66, 98693 Ilmenau/Thür.
  6.   Zum Laufen gebracht von Jens Gelhar am 20.07.94
  7.   Und compiliertbar mit OS3.0 Includes (sowie 2.0!) von J.Schmitz 23.07.94
  8.  
  9.   FREEWARE  {V0.01}                                       IL/29/04/94  }
  10.  
  11. Program Prtdevs;
  12.  
  13. USES Intuition,GRAPHICS,EXECIO;
  14. {$incl "devices/printer.h","devices/prtbase.h"}
  15.  
  16.  
  17. TYPE PrinterIO=Record
  18.  { Was in C eine "union" ist, modelliert man in Pascal als Record mit
  19.    Variantenteil. JG }
  20.                 Case integer Of
  21.                  0: ( ios      : IOStdReq );
  22.                  1: ( iodrp    : IODRPReq );
  23.                  2: ( iopc     : IOPrtCmdReq );
  24.                End;
  25.  
  26. VAR PrintMP  : ^MsgPort;
  27.     pio      : ^PrinterIO;
  28.     message  : string[200];
  29.  
  30. PROCEDURE DoTest;
  31. VAR PD         : ^PrinterData;
  32.     prefs      : ^Preferences;
  33.     newpitch   : word;
  34.     newspacing : word;
  35.     PrtReq     : ^IOStdReq;
  36.     len        : cardinal;
  37.     yho        : byte;
  38.  
  39. BEGIN
  40.  pio^.ios.io_Command:=CMD_WRITE;
  41.  pio^.ios.io_Data   :=^message;
  42.  pio^.ios.io_length :=-1;
  43.  
  44.  yho:=DoIO(ptr(pio));
  45.  { genau hier war der Fehler, denn früher stand hier
  46.    "yho:=DoIO(^pio)", also ein Pointer auf einen Pointer als Parameter.
  47.    Das war offensichtlich eine Referenzierungsstufe zuviel. JG }
  48.  { Da DoIO laut RKM einen p_IORequest erwartet, muß hier noch ein
  49.    ptr() eingefügt werden. JS }
  50.  
  51. END;
  52.  
  53. PROCEDURE DoPrinter;
  54. BEGIN
  55.  message:="This is a test message to see how this looks when printed"\n"using various printer settings."\n\n;
  56.  PrintMP:=CreatePort('Prtdevs',0);
  57.  pio:=CreateExtIO(PrintMP,SizeOf(PrinterIO));
  58.  Open_Device('printer.device',0,pio,0);
  59.  DoTest;
  60.  Close_Device(pio);
  61.  DeleteExtIO(pio);
  62.  DeletePort(PrintMP);
  63. END;
  64.  
  65.  
  66.  
  67. BEGIN
  68. doprinter;
  69. END.
  70.