Skip to content

MintPRINT 1.2.4

Choose a tag to compare

@boingball boingball released this 27 Aug 00:17
· 239 commits to main since this release

A big development day - Moving up to 1.2.4 bringing a lot of changes - including Apple Raster support.
Live Ink Level Query,
MintAMP's PNG Engine to show Printer Icon (If your printer supports it)
Graphics to show the duplex status.
Installer Support - and unified Program Directory

1.2.4 Single combined archive with automatic driver selection, driver
revision 41.1 (no driver change).

   - Merged the separate MintPRINT / MintPRINT-OS31 release bundles
     into one MintPRINT/ drawer, with both compiled drivers staged
     under Drivers/MintPRINT-V44/ and Drivers/MintPRINT-OS31/. There
     is no longer a "which archive for my AmigaOS version" choice to
     make before downloading
   - MintPrint Settings now detects this machine's AmigaOS/
     printer.device generation from exec.library's version and
     automatically installs/updates the matching bundled driver,
     showing the detected AmigaOS version and chosen driver in the
     install/update prompts and the About box
   - Added an Install script (classic AmigaDOS Installer format) as an
     alternative to running MintPrintSettings first, offering the same
     auto-detected driver choice with a chance to override it
   - Fixed the ink/toner level bars sometimes showing the wrong
     colour, and sometimes losing it again. Two bugs found back to
     back on real hardware: ObtainBestPenA() only ever reuses whatever
     existing pen was closest to the requested colour, so on a screen
     with few free colour registers (e.g. a default 32-colour
     Workbench) with no true cyan/magenta already on screen, several
     markers snapped onto the same wrong pen (both cyan and magenta
     bars turned yellow) - fixed by trying ObtainPen() first, which
     only succeeds by setting a genuinely free pen to the exact
     requested colour. That then exposed a second bug: each marker
     released its pen immediately after drawing, so the next marker's
     ObtainPen() could reclaim the same shared colour register and
     repaint it, instantly recolouring every bar already drawn with
     that pen index (all four bars flashed the right colour, then
     collapsed to whichever was requested last). Pens are now held
     until just before the next redraw, or released at shutdown
   - Shortened the OS-detection text in the driver install/update and
     About requesters: EasyRequest sizes its window to the single
     widest line with no wrapping, and the full detected-AmigaOS/
     driver-path text on one line could push the requester wider than
     a default low-resolution AmigaOS screen

1.2.3 Printer ink/toner status is back on Query, driver revision 41.1
(no driver change).

   - Query now also requests the IPP marker-names/marker-colors/
     marker-types/marker-levels/marker-low-levels/marker-high-levels
     attributes (RFC 3805 / PWG5100.13 Printer MIB). Up to six
     reported markers are shown in a compact 2x3 ink/toner panel in
     the spare area beside IPP Path / Printer Engine / Debug, filled
     in the colour the printer itself reports.
   - The main window stays at 520px wide. The GadTools controls were
     rearranged to make better use of the existing space, with Unit
     across the top row and DPI/Sides sharing the lower option rows.

1.2.2 Real AmigaOS $VER: driver versioning, driver revision 41.1.

   - DEVS:Printers/MintPRINT now embeds a standard
     "$VER: MintPRINT 41.1 (dd.mm.yyyy)" string, readable by AmigaOS's
     own Version command and Workbench's Information requester - the
     same convention MintPrint Settings' own $VER: line already used.
     Replaces the earlier ad-hoc "MPDRVREV:<n>" marker, which existed
     only for MintPrint Settings' own bundled-vs-installed update
     check and wasn't understood by anything else
   - The driver's own version now has two parts, matching real Amiga
     version.revision pairs (e.g. Workbench 3.9's 47.102), so "driver
     revision" is never just a bare integer that could be misread as
     printer.device's own fixed V44 PrinterSegment ABI marker in the
     same file. Going forward the revision half is what moves for an
     ordinary driver rebuild - 41.1, 41.2, 41.3, and so on, the same
     way a real Amiga library keeps one version number across many
     small revisions - and the version half only bumps for something
     that warrants a new version number outright
   - MintPrint Settings' update-detection and About/Test Print version
     display now parse and compare the real $VER: string instead of
     the old single-integer marker
   - No driver behaviour change, so no version-number bump for the
     driver's own build count - only the versioning scheme itself
     changed

1.2.1 Added Apple Raster (URF) engine and duplex, driver revision 41.

   - Added a fifth output engine, Apple Raster (ENGINE=urf, image/urf),
     for printers that advertise none of MintPRINT's other formats
     (JPEG, PostScript, PWG Raster, PDF) - reported for the OKI B412 in
     issue #60. Reuses the PWG Raster encoder's proven row compression
   - One-sided URF printing confirmed physically on a Brother
     MFC-J6930DW; the OKI B412 report that motivated this engine is
     still pending its own confirmation
   - Added duplex support to the URF engine: one multi-page stream
     submitted once from DriverClose(), same as PWG Raster, using
     Apple Raster's own duplex/tumble page-header byte and a
     patched-in-after-the-fact page count (its file header declares
     the total up front, unlike PWG's per-page header). Unlike PWG
     Raster, no backside row/column reversal is performed - Apple
     Raster's page header has no equivalent transform fields, so the
     printer's own duplex mechanism is trusted to orient the backside
   - Fixed a real bug found on the first URF duplex test (Brother
     MFC-J6930DW, driver revision 31): strip-printed documents had no
     accumulator for URF (PWG-only until now), so every small
     SPECIAL_NOFORMFEED band became its own "duplex page" - 62 queued
     for what should have been a handful - and the printer rejected the
     job. Fixed in revision 32 by extending PWG Raster's existing
     strip-printing accumulator (growable declared height, tiny-band
     discarding, post-hoc height-field patch) to also cover URF
   - Fixed a second real bug found immediately after (same Brother
     test, driver revision 32): the accumulator now built two real
     pages, but they came out different heights - front content
     naturally overshot the media-derived target while the back only
     got padded to it - and the printer rejected the job again, since
     a physical duplex sheet needs matching front/back geometry. Fixed
     in revision 33 by flooring every later page's target at the
     tallest page the duplex job has finalized so far, converging
     same-sized pages onto one height without ever truncating real
     content
   - Fixed a third real bug found immediately after (same Brother
     test, driver revision 33): with both pages now byte-perfect and
     an exactly matching height, the printer still rejected the job,
     immediately and synchronously. The duplex/tumble byte itself
     (page header offset 2) was wrong - the original implementation
     used 1/2/3 for no-duplex/short-side/long-side, paraphrased from
     CUPS source, but cross-checking against a second, independent,
     real-world URF reverse-engineering (tested against an HP
     DesignJet T230) found the correct values are 0/1/2, meaning this
     printer was being sent an undefined byte value (3) for every
     two-sided-long-edge job. Fixed in revision 34; backside
     orientation still remains unconfirmed
   - Fixed a fourth real bug, found testing PWG Raster one-sided on
     the same printer rather than URF or duplex specifically (driver
     revision 34): a two-page Wordworth document printed with no IPP
     error, but visibly corrupted - decoding the retained job file
     showed a graphic cut off at the top of the second physical
     sheet. The strip-printing accumulator only checked whether a
     page had reached its target height after accepting a whole
     SPECIAL_NOFORMFEED band, never whether accepting it would
     overshoot the target, so up to ~100 rows belonging to the next
     page (including its own top margin) got silently welded onto
     the page that just filled up. Affects PWG Raster and URF alike,
     one-sided or duplex, and predates this URF duplex work entirely.
     Revision 35 split an overshooting band at the physical media
     height, but a real retest proved Wordworth's printable page ends
     earlier: 3062 rows (thirty 100-row bands plus a final 62-row
     remainder), not the 3505-row A4 raster. It therefore still took
     443 rows from page 2. Revision 36 recognises the short terminal
     band as the logical page boundary, including narrow auxiliary
     dumps, and pads/finalises the physical sheet there; the media
     height split remains as a fallback for other applications
   - Fixed the top margin going missing on Wordsworth pages once
     revision 36 started trusting the application's own logical page
     boundary instead of always padding to the physical media height
     (driver revisions 37-38): a real trace showed Wordsworth clears
     its margins and sends only a 70-line form length, not its
     separate Print Borders values, through the margin commands.
     Revision 37 restores the top border in strip pages from that
     signal; revision 38 adds a form-length/physical-media fallback
     that restores the documented 0.50-inch top border (150 rows at
     300 DPI) whenever no real vertical movement or explicit aSTBM
     placement is present. The media-height finalizer still supplies
     the matching bottom border
   - Restored real pre-dump vertical movement as the strongest margin
     placement signal (driver revision 39): the driver now processes
     and accumulates the aIND/aNEL and literal line-feed movement
     Wordsworth issues before a graphics dump, converts it from
     printer.device's 1/216-inch VMI, and emits the corresponding
     leading white raster rows ahead of the revision 38 form-length
     fallback
   - Added complete legacy page layout diagnostics (driver revision
     40): debug logs now record every printer layout command from
     aVERP0 through aCAM, both parameter slots, live line/VMI/CRLF
     state, and each raster band's complete IODRPReq source/
     destination geometry, to expose any placement signal outside the
     commands already handled - without changing revision 39's output
   - Physically confirmed on a Brother MFC-J6930DW: Wordsworth's PWG
     Raster page boundaries/margins print correctly, and Apple Raster
     (URF) two-sided long-edge duplex completes and prints
   - Fixed PRT:/CMD_WRITE text printing silently submitting image/jpeg
     instead of image/urf when ENGINE=urf is selected: the text path's
     own engine dispatch had no URF case and fell through to JPEG,
     which fails outright on a URF-only printer such as the OKI B412.
     command_table.c now recognises engine=urf and encodes/submits
     text pages as Apple Raster like the graphics path already does
   - Fixed the revision 37-39 top-margin restoration corrupting
     non-PWG/URF strip-printed pages: it computes and writes leading
     whitespace rows for any NOFORMFEED job regardless of engine, but
     the helper it called only understood PWG and URF, silently
     writing into the (unopened) PWG encoder for a JPEG, PDF or
     PostScript job instead of the one actually in use.
     mp_job_reserve_page()/mp_job_pad_page() now dispatch to whichever
     encoder the job is actually using for all five engines. Neither
     fix has been physically re-tested yet
   - Driver build revision is now 41 so MintPrint Settings can detect
     and offer the updated driver automatically

What's Changed

  • Add Apple Raster (URF) engine for printers supporting only image/urf by @boingball in #61
  • Switch driver version tracking to standard AmigaOS $VER: string by @boingball in #62
  • Bring back printer ink/toner status on Query (v1.2.3) by @boingball in #63
  • Merge driver builds into single archive with runtime detection by @boingball in #64

Full Changelog: 1.2.0...1.2.4