Print a picture from a modern PC with an old-fashioned Commodore MPS 803 compatible printer
This utility outputs raw bytes for printing on a Commodore MPS 803 compatible printer. It should be used with opencbm package by Spiro Trikaliotis to redirect the output to the printer, connected through a XUM1541 cable, such as ZoomFloppy.
- source - Source code in C
- cbmage.c - Main program
- stb_image.h - STB library by Sean Barrett for reading image files
- Makefile - Makefile
- binaries - Precompiled executable files for different platforms
- win32/cbmage.exe binary for Windows XP
- win64/cbmage.exe binary for Windows 10
- macOS/cbmage binary for macOS, 64 bit
- linux64/cbmage binary for Linux (x86_64)
- macOS or Windows (32/64 bit) or Linux
- an MPS 803 printer or a compatible one
- XUM1541 / ZoomFloppy
- opencbm package installed
- gcc if you want to compile from sources
To install opencbm you can use the installer from its website, or if you use a debian-based version of Linux, you can install it with:
sudo apt-get install opencbm
on macOS you can use a similar command:
brew install opencbm
Once you have gcc installed, just enter the "source" directory and launch:
make
An executable file named "cbmage" will be generated: it's ready to use.
Synopsis:
cbmage <image file name>
This is the basic syntax: it will simply write on stdout (so, the termainal window) the raw bytes that should be interpreted by the MPS 803 printer. Quite useless.
The typical sequence of command you should use to do the task is:
cbmctrl reset
cbmctrl lock
cbmctrl listen 4 0
./cbmage picture.png | cbmctrl write
cbmctrl unlisten
cbmctrl unlock
In particular, the 4th line (./cbmage picture.png | cbmctrl write
) produces the raw byes (launch it without "./" if you run on Windows), which are redirected to the printer through the piped cbmwrite command
Maximum width of the picture is 480 pixel, the printer is a black and white one. The recommended format is PNG: every single dot which is white (total white: #ffffff
in hex) will be left blank, while any other pixel color will result in a black dot on the printer.
Thanks to Spiro Trikaliotis for the opencbm package, to Till Harbaum for the initial case study of the XU1541 (and also for the fantastic MIST) and to Sean Barrett for it's powerful and effective STB Image Library.