| Atari SLM804 Printer Emulator Version 1.2 |
| Copyright (c) 1988 Atari Corporation |
EMULATOR DISK CONTENTS
The SLM804 Printer Emulator Version 1.2 program disk con-
tains the following program and data files. If you
currently have Version 1.1, you need only replace files
labeled "mod" and install files labeled "new".
SLM804 Printer Emulator
RAZB10LS.FNT new (hand-bolded Razor 10 point)
RAZI10LS.FNT new (hand-italicized Razor 10 point)
RAZR06LS.FNT new (Razor 6 point)
README.DOC new (this document)
SPEEDPRN.PRG new (fast output for text files)
SERIAL SELF-TEST FIX
When in serial mode (print data source is external), Ver-
sion 1.1 would "bomb" if self-test was attempted. Ver-
sion 1.2 has this problem fixed.
LARGE FONTS FIX
Large fonts (those whose graphics form exceeds 64K) would
not bold or italicize correctly in Version 1.1. This is
fixed in Version 1.2. Font files may now be up to
200,000 bytes in length with a 128-pixel height as a max-
LARGE HMI FIX
When setting large HMI values (using n), back-
space would not use the correct spacing amount. Only HMI
values less than 52 work correctly in Version 1.1. Ver-
sion 1.2 correctly backspaces with HMI up to the docu-
mented maximum of 125.
THICKNESS FIELD FIX
Fonts to be bolded will hang the Emulator while loading
if the value in the thickness field (bold amount) in the
font header is inadvertently set to zero. Version 1.2
will use a default value of three if zero is found there.
PAGE BREAK FIX
The Emulator preserves the current print position across
a page break and no longer performs a logical carriage
BIT-MAP MODE FIX
Documentation for the Emulator indicates that the escape
sequence for bit-map graphics print
(G$hhhhhhhh) may optionally include the
dollar sign immediately preceding the hex digit string.
In Version 1.1, "$" will prematurely exit bit-map mode
without printing the bit-map. Version 1.2 tolerates "$"
correctly. To be on the safe side, applications should
omit the dollar sign.
Note: the Emulator documentation does not make clear
what SCALE FACTOR is for bit-map printing and what values
may be used. The only acceptable values are 1, 2, or 4
and they define the resolution (300, 150, or 75 dots per
inch respectively) in which the bit-map image will
appear. Destination X and Y values are always in 300
dots per inch units, however.
SELF-TEST FORMAT ENHANCEMENT
Self-test displays all characters of all fonts loaded
providing that there is enough room on one page. Version
1.1 determines this cut-off point (where there is no more
room for font characters) based only on one paper size
(letter-size). Version 1.2 adjusts this cut-off point
appropriate to any of the 4 paper sizes that can be found
in the paper cassette.
AUTO-BOOT ESCAPE ENHANCEMENT
Certain font files with inconsistent header information
(caused by file system corruption, etc.) may crash the
system when the Emulator is loading fonts. This can be
very inconvenient if the Emulator is configured to auto-
boot on a hard disk. Version 1.2 looks for the depres-
sion of the left or right key before each font
file is loaded and exits without installing itself if
that key was depressed. Make certain to wait until the
screen lights-up after reset before depressing the
HARDWARE BLIT ENHANCEMENT
Version 1.1 uses a specially-designed software blit rou-
tine to "build" the graphics images of text as the page
is being printed. Version 1.2 will engage the hardware
blit to provide this function if the BLiTTER is present
in the system. The advantage of using hardware blits is
that a higher density of characters can be printed than
is possible with software blits. Heavy use of overstrik-
ing, very small fonts packing the page with large numbers
of characters, etc. can cause a CHAR DENSITY OVERLOAD
error. When this error occurs, the top part of the page
appears normal up to a certain horizontal line below
which appears an area filled with white space, black
space, or a repeating pattern. The threshold where this
error occurs is greatly extended when a BLiTTER is avail-
able to boost blit performance.
Note: some BLiTTERs have been found to cause a system
crash when used simultaneously with DMA as is done by
Version 1.2. If the system crashes when printing with
the Emulator, try disengaging the BLiTTER via the Desktop
SPEED PRINT ENHANCEMENT
A higher maximum printing speed is now possible using
Version 1.2. The maximum print speed for Version 1.1
appeared to be about five pages per minute. Of course,
this maximum was only possible if the application supply-
ing the print data was doing so at a reasonably rapid
rate. Dumping a file to the printer from the Desktop
would perform at this maximum rate. However, Version 1.2
has a new feature which provides maximum throughput of
about eight to nine pages per minute.
Note: some restrictions apply to achieve this top speed.
All the data to be printed must be in RAM at the time the
SPEED PRINT code is issued. Reverse line-feed,
engaging fonts taller or shorter than the current font,
changing the VMI values, double-sided printing and some
other Emulator features may have unpredictable results
during speed printing and should be avoided.
To invoke SPEED PRINT, send * to the printer with
the a1 register pointing to a structure in memory con-
taining the data to be printed. The first long word of
this structure is a pointer to one byte beyond the last
character to be printed. The print data itself should
follow this end pointer.
a1 --> end ptr (long) ---|
print data |
SPEEDPRN.PRG is a rudimentary program that reads a file
into RAM and SPEED PRINTs it using this new feature.
BIT-MAP PRINTING ENHANCEMENT
The bit-map printing by image number feature was added to
Version 1.2 since existing word-processors couldn't issue
the bit-map print command. Also there are difficulties
for the mere mortal in using the bit-map print feature of
Version 1.1 that could be overcome with this new feature
in Version 1.2.
The idea here is to load bit-map images from files into
memory, hook them up to the Emulator with a linked list
structure, and terminate & stay resident. With the
images residing in memory arranged in this linked-list,
they could be easily printed by number with a simple
code sequence from a word processor.
A simple program is needed to load images, connect them
to the linked list of the Emulator and terminate & stay
resident. The program should form the same 20-byte
header for each image loaded as is used by the previously
documented BIT-MAP PRINT code. Preceeding this
header should be the link pointer which links to the next
image or 0 to indicate the last in the list. The first
(actually, the 0th) image is connected to the Emulator by
writing its address to an address within the Emulator.
The address to write to is found by taking the address
found in the trap #13 vector (at location $000000B4), and
subtracting 16 decimal from it. If a long word 0 is
found there, no images have previously been installed.
Otherwise, the value is presumed to be an address of the
0th image header in the linked list of images.
| .dc.l LINK POINTER (or 0) --> NEXT LINK POINTER (or 0) ----
| .dc.l xx .dc.l s_form (bit-map #0) |
| .dc.l xx .dc.w s_xmin |
| .dc.l xx .dc.w s_ymin |
--> Emulator trap #13 intercept .dc.w s_nxln |
.dc.w b_width |
.dc.w b_height |
.dc.w d_xmin |
.dc.w d_ymin |
.dc.w scalefac |
NEXT LINK PTR (or 0 etc.) <-------
Once the images are installed by a terminate & stay
resident program, they may be invoked (printed) from a
word processor or other application by using
#n[,x,y,s], where n is an ASCII string
equivalent of the decimal image number. This image
number corresponds to the order in the linked list of
images starting with image #0 up to a maximum of image
#32767. Optionally, a parameter list may follow to
specify a new X and Y position for the top-left corner of
the bit-map image as well as a new scale factor "s" to
override the default values already installed.
These X and Y values are in laser pixel units of 300 dots
per inch and the scale factor may be 1, 2, or 4 only.
Any parameter (except image number) may be omitted if the
default value is desired by placing a null string between
commas. For example, to print image #4 at the default X
position but with a new Y value of 1250, send
#4,,1250. Regardless of whether or not
this optional parameter list is used, the code
sequence must be terminated by a space character.
| *** Atari SLM804 Printer Caveats *** |
(1) If an SLM804 Laser Printer is connected to the ST Hard
Disk (DMA bus) port, then the printer must be powered-
on in order for floppy or hard disk operations to
(2) For the best print results on an SLM804 Laser Printer,
set up the application software to maintain a minimum
half-inch left and right page margin.
HardwareRequires Atari SLM804 Laser Printer