@DATABASE Printers @AUTHOR PJ Hutchison @$VER: 1.1 @NODE MAIN Contents A Guide to Printers on the Amiga by Peter J Hutchison @{"Workbench Preferences Drivers" link WBDRV} @{"Public Domain Drivers" link PDDRV} @{"Commercial Drivers" link COMDRV} @{"What do the drivers do?" link WHAT} @{"Printer driver service" link SERVICE} @{"Writing Printer Drivers" link PROGRAM} @ENDNODE @NODE WBDRV "Workbench Preference Drivers" From the very first Workbench, printer drivers have been provided for the range of printers that were available at that time. In the 1980s, the majority of printers available were dot-matrix and laser printers. Installation is very simple: Workbench 1.3 Run a CLI or Shell and insert the Extras disk. Copy the files in devs/printers to devs:printers on your Workbench disk. Run the Prefs/ Printer program and select the printer required and Save the new preferences. Workbench 2.0 Insert the Extras disk, open the disk icon to show its contents, from the Windows menu select Show/All Files. Find the Devs/Printers directory and drag the appropiate printer driver files on to your Workbench disk in devs/Printers. Run the prefs Printer program to select the printer and save. Run the PrinterGfx prefs program to change the graphics preferences. Workbench 3.0 Do the same as WB 2.0 but the printer drivers are located on the Storage disk. Upto WB3.0, the following printers are supported: CalComp_ColorMaster CalComp_ColorMaster2 CanonBJ10 CBM_MPS1000 Diablo_630 EpsonQ EpsonX EpsonXOld Howtek_Pixelmaster HP_DeskJet HP_DeskJetOld HP_LaserJet HP_PaintJet HP_ThinkJet ImagewriterII NEC_Pinwriter Okidata_293I Okidata_92 Okimate_20 PostScript Seiko_5300 Seiko_5300a Sharp_JX-730 Tektronix_4693D Tektronix_4696 Toshiba_P351C Toshiba_P351SX Xerox_4020 Limitations of the preference drivers: a) No new printers since 1992 have been added to the printer drivers esp. new Laser and Inkjet or Bubblejet printers. b) Limited to a maximum of 4096 colours, so true colour pictures are not possible. c) Workbench does not support PC GDI printers. @ENDNODE @NODE PDDRV "Public Domain Drivers" Since no new printer drivers have been provided by Commodore or Amiga Technologies, then the Amiga developers and users have written their own Printer drivers. Information on writing a printer driver is available in the Amiga Rom Kernal Reference Manual : Devices (p.196). Some new printer drivers have been released to the public and its a case of finding them. Be wary though, these drivers may not have been thoroughly tested and may cause unpredictable results. See docs with the drivers for further information. The following suppliers are known suppliers of printer drivers: Undergound PD, 54 Carmania Close, Shoeburyness, Essex SS3 9YZ. Tel 01702 295887. (HP, Cannon, Epson and others) PDSoft, 217-219 Hamstel Road, Southend-on-Sea, Essex SS2 4LB. Tel 01702 306060 or 306061. (Panasonic, HP, Canon, Citizen, Epson etc) Software 2000, 8 Falcon, Wincote, Tamworth B77 5DN. Tel 01827 287377 Software 2000, 9 Wills St, Lozells, Birmingham B19 1PP. Tel 0374 678068 (Star, Seiko, Panasonic, Citizen, Canon and others) Ask your nearest or favourite PD supplier to see if they have the printer driver you require! If you have a modem, try calling your local BBS and see if they have any on their file base. If you have internet access, you can try Aminet sites (text/print) to download drivers or you can call the printer manufacturer's sites such as: http://www.europe.canon.com/ http://www.hp.com/ http://www.epson.com/ @ENDNODE @NODE COMDRV "Commercial Printer Drivers" The latest commercial software for the Amiga such as Word processors, Desktop Publishing and Paint packages do provide there own printer drivers. Some may be additional preference drivers or drivers specific to that program. There are two software packages available that replace the preferences drivers altogether and provide new features for today's high speed, colour printers: a) Print Studio II Cost: 49.99 Suppliers: First Computer Centre, Power Computing b) Turbo Print 4.1 Cost: 49.99 Suppliers: Wizard Developments c) EnPrint (for Epson Stylus Printers) Cost: 29.99 Supplier: Eyetech These provide a wide range of drivers for old and new printers and have new features that overcome the limitations of Workbench printer drivers such as true colour printing and supports higher resolution output. Both of these cost fifty pounds (you can get it for less if bought with a printer). @ENDNODE @NODE WHAT "What do drivers do?" To print on a printer requires special codes which tell the printer about the text or graphics to print. There are many standards for these printer langauges such as Epson ESC sequences, Hewlett Packard's PCL language and there's the high end Postscript language for top of the range lasers. Each printer has its own features and limitations and therefore each printer requires a driver to access these features from Workbench. When printing something from a program, the output is usually sent to the PRT: device, this is handled by the printer.device located in the DEVS drawer. Workbench supports a list of printer commands (see p.9-23 in the Workbench User Guide for these codes) and most Amiga programs use these codes for printing text or graphics. Obviously, these codes are understood by Workbench only and do not relate to any specific printer. To convert them to a format the printer understands requires a driver for each different printer type. The driver then coverts the Workbench printer codes to real printer codes. For example, if we had an Epson compatible printer (NB: = Code 27): Description Workbench code Epson code Init Printer #1 @ Boldface on [1m E Italics on [3m 4 Underline on [4m _1 and so on these are stored in a command table in the printer driver. Special printer commands are dealt with a dospecial.c program which does specific things for certain commands. To send graphics two other programs are written called render.c and transfer.c which sets up the printer, the graphics data and transfers this data to the printer. @ENDNODE @NODE SERVICE "Printer Driver Service" If you cannot find the driver you want or unsure which driver to use, please send one floppy and a -stamped- SAE with the following details and I'll return you a driver or a recommended driver for you to buy (or both): Printer Make ______________________ Printer Model _____________________ Emulation modes ___________________________________ Type of Printer Dot Matrix ___ Dasiy Wheel ___ Inkjet ___ Bubblejet ___ Mono Laser ___ Line Printer ___ Colour Laser ___ Postscript ___ Currently used driver (if any) ______________ Amiga model _____________ Workbench version _______________ OFFICE USE Supplied driver _____________________ Recommended driver _____________________ Send to: Peter Hutchison, 75 Lower Skircoat Green, Copley Lane, Halifax, W Yorks HX3 0TG. @ENDNODE @NODE PROGRAM "Writing Printer Drivers" Writing a printer driver is more complex than you think and requires some programming knowledge, an assembler or compiler that can produce object code and access to the Amiga Development Kit on floppy or CD. Information on writing a printer driver is available from: Amiga ROM Kernel Reference Manual: Devices p196 - 245 description of files and programs to write inc. examples of Epson & HP driver! NDUK 3.1 Example source You might be able to get hold of the example files in the NDUK kit to help you. To write a driver you need the following files: macros.i Contains printer device macros printertag.asm Contains printer specific characteristics such as density, char sets and colour. init.asm Open various libraries for the printer data.c Contains printer RAW commands and extended char set dospecial.c Printer specific special processing for commands such as aSLRM and aSFC render.c Processing for graphics output and fill buffer transfer.c Processing called by render.c to output the buffer to the printer. density.c Contructs proper printer density commands Other requirements: PrinterSegment Contains printer extended data structures See devices/prtbase.h CommandTable Converts ANSI data commands to printer specific commands. See devices/printer.h ExtendedCharTable Contains definitions for characters from $A0 to $FF. ConvertChar() Function to do character conversion for one character to a combination of others. Render() Graphics output function. Transfer() Output buffer to printer. SetDensity() Contructs density setting commands. Once all these data tables and functions are written they can be combined to produce a printer driver that will reside in devs:printers. @ENDNODE