MintPRINT
=========
MintPRINT lets classic AmigaOS applications print to modern network
printers - the same IPP/AirPrint printers phones and modern computers
already use - with no printer-specific software needed on the printer
side. It is a real DEVS:Printers/ printer.device driver plus MintPrint
Settings, a GUI setup, discovery and test tool.
Print graphics from applications that use AmigaOS' standard printer graphics
dump interface (including MultiView, GraphicDump and many paint/DTP programs),
or print plain text through the standard PRT: device. MintPRINT converts the
printer.device output into JPEG, PostScript, PWG Raster, or PDF and submits the
resulting document directly to the printer's IPP endpoint over the network.
AmigaOS 3.0/3.1 use the separate classic pre-V44 driver build. Newer
V44-capable AmigaOS releases use the normal extended driver build. Both use
the same MintPrint Settings GUI and the same IPP/JPEG/PostScript/PWG/PDF
backend.
Archive contents
----------------
This archive contains two drawers:
MintPRINT/
MintPrintSettings GUI setup, discovery and test tool
MintPRINT driver for newer printer.device versions
MintPRINT-OS31/
MintPrintSettings same GUI setup, discovery and test tool
MintPRINT classic AmigaOS 3.0/3.1 driver build
Use MintPRINT-OS31 on AmigaOS 3.0 or 3.1.
Use MintPRINT on V44-capable classic AmigaOS systems such as AmigaOS 3.2,
3.5 and 3.9.
Features
--------
- Real DEVS:Printers/ printer.device driver
- AmigaOS 3.0/3.1 support via a dedicated classic driver build
- 68000-compatible driver
- Graphics printing through the standard printer.device raster interface
- Plain-text printing through PRT:/CMD_WRITE
- Prints using JPEG, PostScript, PWG Raster, or PDF, selectable per printer
- LAN printer discovery using SSDP and mDNS
- IPP capability query - reads the printer's supported media, trays,
colour modes, quality settings and document formats directly
- Up to eight saved printer profiles (Unit0-Unit7), with one active
for printing at a time
- Printer make/model shown after a successful query
- Built-in test page sent through printer.device
- Built-in AmigaGuide help from the Help menu
- Warns if a printer advertises none of the formats MintPRINT can
produce, with information on reporting the printer for support
- Detects and offers to install or update the bundled driver
- No printer-specific Amiga driver or vendor software required
Requirements
------------
- Motorola 68000 or later
- AmigaOS 3.0 or later
- A running TCP/IP stack providing bsdsocket.library. This is required
for every printing path because MintPRINT talks directly to the
printer over IP.
- A network printer supporting IPP and at least one document format
MintPRINT can generate: JPEG, PostScript, PWG Raster, or PDF
- AirPrint or IPP Everywhere printers are the most likely to work
without additional printer-specific support
MintPrint Settings performs network discovery and IPP capability parsing
and therefore needs a larger stack than small classic Amiga utilities.
Use the supplied MintPrintSettings.info file when launching from
Workbench.
Installation
------------
Extract the archive and choose the drawer for your AmigaOS version:
AmigaOS 3.0 or 3.1:
use MintPRINT-OS31/
V44-capable AmigaOS 3.x systems (including 3.2, 3.5 and 3.9):
use MintPRINT/
Copy the selected drawer wherever you like and run MintPrintSettings.
On first run MintPrintSettings detects that DEVS:Printers/MintPRINT is
missing and offers to install the bundled driver. On later runs, if the
driver bundled beside MintPrintSettings is newer than the installed copy,
it offers to update it.
Reboot after any driver install or update. A printer driver segment that
is already resident in memory will not pick up a replaced file until the
system reloads it.
After rebooting:
1. Open Prefs/Printer and select MintPRINT as the printer.
2. Run MintPrintSettings.
3. Enter the printer IP/hostname and IPP path, or use Discover.
4. Press Query Printer to read the printer's capabilities.
5. Select the document engine and required media/tray/colour/quality
options.
6. Save the settings.
7. Use Test Print to verify the complete printer.device -> MintPRINT ->
IPP path.
The active printer configuration is Unit0. Additional configurations can
be stored in Unit1-Unit7 and copied to Unit0 when required.
AmigaOS 3.0/3.1 notes
---------------------
The MintPRINT-OS31 package uses a classic pre-V44 printer driver structure and
a compatibility rendering path for the older printer.device raster format.
The same ABI also covers AmigaOS 3.0. The IPP networking and
JPEG/PostScript/PWG Raster/PDF output code is shared with the newer driver
build.
AmigaOS 3.0 compatibility follows from the V39/V37 library requirements and
pre-V44 printer.device ABI used by this build. AmigaOS 3.1 has had more direct
real-hardware testing, so 3.0 user reports are especially welcome.
MintPrintSettings should be launched using the supplied icon so its
configured stack size is used. If launching from a Shell on a classic
system and using a build which does not provide its own enlarged stack,
set a large Shell stack first, for example:
Stack 400000
Reporting a problem
-------------------
If MintPrint Settings' Query reports that your printer does not support
any format MintPRINT can produce, or printing otherwise fails, please
open an issue at:
https://github.com/boingball/MintPRINT/issues
and attach the output of windows_ipp_probe.py (included in the source
repository) run against the printer from a Windows PC on the same
network. This helps separate printer-side IPP behaviour from Amiga-side
driver problems without requiring any Amiga-specific diagnostic tools.
The tested-printer list and full report template are maintained at:
https://github.com/boingball/MintPRINT/blob/main/docs/PRINTER_COMPATIBILITY.md
Please include the AmigaOS version, TCP/IP stack, document engine, DPI,
media/tray, scaling, quality and colour mode so a successful configuration
can be reproduced by another user.
When reporting an AmigaOS 3.0/3.1 problem, please also mention that the
MintPRINT-OS31 driver build is being used.
Source Code
-----------
Source code, build instructions and development history:
https://github.com/boingball/MintPRINT
License
-------
MIT License. See the LICENSE file in the source repository for the full
text - in short, free to use, copy, modify and redistribute, including
commercially, provided the copyright notice is kept.
Credits
-------
Driver, GUI, IPP client, and the JPEG/PostScript/PWG Raster/PDF document encoders
by Darren Banfi (boingball), developed with assistance from Anthropic
Claude.
History
-------
1.2.0 Faster JPEG, PRT: text printing, and PostScript compatibility fixes.
- Added plain-text printer.device output through PRT:/CMD_WRITE.
Text printing supports normal characters, CR/LF, tabs, automatic
wrapping and form-feed page breaks, and has been tested with
AmigaDOS Type and MultiView
- Further accelerated the JPEG encoder with constant-block shortcuts,
static zig-zag lookup, combined chroma sampling and a direct-pointer
fast path for complete interior MCUs, reducing JPEG CPU time on
classic 68k systems; PostScript benefits from the same JPEG work
- PostScript Fit/Fill now performs explicit page placement, with Fit
respecting hardware imageable margins reported by the printer so
borders and edge content are not placed in non-printable areas;
Fill retains its full-sheet cover/crop behaviour
- Fixed the 300* DPI compatibility option so it appears immediately
after the first Query on PWG Raster printers that omit 300 DPI from
their advertised resolution list
- Fixed IPP enum parsing for print-quality and printer-state, and now
rejects failed Get-Printer-Attributes HTTP/IPP responses instead of
treating them as valid capability data
- Added built-in AmigaGuide help, available from MintPrint Settings'
Help menu and included in both release drawers
- Driver build revision is now 29 so MintPrint Settings can detect and
offer the updated driver automatically
1.1.0 PostScript engine, faster JPEG, and more reliable wireless setup.
- Added a fourth output engine, PostScript, for printers (e.g.
Samsung C480W) that advertise IPP JPEG support but silently
discard the job; it reuses the existing JPEG encoder internally,
so it benefits from the speed-up below too
- Query/Discover now wait long enough for Wi-Fi printers that
power down their radio between jobs (HP OfficeJet/Envy series
confirmed) to wake up, instead of giving up after one attempt
- Fixed printer.device occasionally reporting an oversized page
width for a single-shot page (observed producing a page ~30%
wider than the configured media); the fix now correctly tells
a genuinely oversized page apart from a legitimate landscape
one, and covers the JPEG and PDF engines as well as PWG Raster
- Fixed the test page's Wi-Fi-driven-oversized-page fix leaving a
blank left margin and clipping the right edge on some hardware
- PWG Raster (the cheapest engine to encode) is now the default
whenever a printer advertises it, instead of always defaulting
to JPEG
- Replaced the JPEG encoder's page-width DCT with a much faster
algorithm (fewer than a tenth of the multiplications for the
same result), significantly speeding up JPEG and PostScript
jobs on real 68k hardware
- Test Print now runs asynchronously so the window stays
responsive while printing, and uses the current Workbench
screen's own palette instead of a fixed one, fixing a
toner-wasting grey background on at least one laser printer
1.0.3b Page-boundary fixes and clearer setup options.
- Fixed multi-page PWG jobs being combined into one oversized
raster when applications left SPECIAL_NOFORMFEED set; complete
media-sized pages and narrow end-of-page auxiliary dumps now
provide safe physical-page boundaries
- Preserved media-height padding for genuine WordWorth strip
printing, preventing short portrait documents being rotated or
expanded while allowing multi-page documents to print every page
- Added a printer-capability-backed DPI selector and renamed it DPI
- Replaced the debug JPEG option with a simple Debug on/off setting
- Added an early TCP-stack check so the driver fails safely when no
bsdsocket.library-compatible stack is available
1.0.3 WordWorth support and more reliable printer connections.
- Fixed strip-printed pages (WordWorth, and likely explains
ArtEffect's long-standing "many near-blank pages" behaviour
too) submitting as several separate, massively oversized
pages instead of one correct one - the driver now honours
SPECIAL_NOFORMFEED and assembles the bands into a single
document before sending it
- Fixed MintPrint Settings' status box going blank and staying
that way after certain other applications have run
- Fixed Query being able to freeze the whole program with no
way out but a reboot, if the printer didn't respond -
connection attempts are now properly bounded and time out
cleanly instead
- Fixed a bug where MintPrint Settings' own Get-Printer-
Attributes request could be rejected by some printers
(reported against a Canon TS8300), leaving Query showing no
capabilities at all even though the printer itself was fine
- Query now prefers the standard IPP port (631) over port 80
when discovering or querying a printer
- Query no longer accepts an all-empty capability response as
a successful result
1.0.2 Bug fixes from real-hardware testing reports.
- Fixed an IPP response parsing bug (a printer's interim "100
Continue" response was mistaken for the final one) that could
report a print job as failed even though it printed, and could
leave MintPrint Settings' Query showing Media/Scaling/Quality/
Print Mode as undetected on printers that do support them
- MintPrint Settings' Query no longer accepts an incomplete
response from the printer as a successful result
- Scaling now defaults to "auto" after a Query when the printer
offers it, for better cross-printer compatibility
- Added a safety guard against a rare runaway "many near-blank
pages" print storm triggered by some third-party applications
- Driver auto-update detection now also offers to update a
driver installed before version tracking was added
- About box shows the installed and bundled driver revision
- Various MintPrint Settings layout and text-truncation fixes
1.0.0 Initial Aminet release.
- DEVS:Printers/MintPRINT driver
- Separate AmigaOS 3.1 classic driver build
- JPEG, PostScript, PWG Raster and PDF document backends
- MintPrint Settings GUI
- LAN printer discovery
- IPP capability query
- Up to eight saved printer profiles
- Built-in printer.device test page
- Automatic driver install/update
|