| R1-> | | dumper number
|
| R2-> | | command to ensure the dumper is present
|
| R3-> | | string (256 bytes) where to find the palette file
|
| | this block is transient, and a local copy should be
|
| | taken if persistence is required
|
| | eg. "Printers:Palettes.0"
|
| R4-> | | config block (272 bytes)
|
| | this block is transient, and a local copy should be
|
| | taken if persistence is required
|
| | byte 0 = height in dots per strip (PrintEdit's DumpLength)
|
| | byte 1 = number of vertical interlace passes (PrintEdit's x interlace)
|
| | byte 2 = number of horizontal interlace passes (PrintEdit's y interlace)
|
| | byte 3 = number of passes over line - 1 (used for multipass printing, eg CMYK)
|
| | byte 4 = strip type
|
| | byte 5 = output depth in bpp (1, or 8)
|
| | byte 6 = number of passes per strip - 1
|
| | byte 7 = number of current pass
|
| | bytes 8-11 = copy of dumper's private word
|
| | bytes 12-255 (ie 244 bytes) comes from !Printers and contains printer
|
| | configuration strings and some other parameters.
|
| | The location of each configuration string within the
|
| | buffer is given as an offset from byte 12.
|
| | The first byte of each string denotes its length in bytes
|
| | or in RISC OS 5 it may be zero to indicate that a 24-bit length
|
| | and 32-bit pointer are provided (see below).
|
| | byte at +12 data length multiplier
|
| | byte at +13 data length added
|
| | byte at +14 dump height
|
| | byte at +15 -> page start string (0 for none)
|
| | byte at +16 -> page end string (0 for none)
|
| | byte at +17 -> line return string (0 for none)
|
| | byte at +18 -> line skip string (0 for none)
|
| | byte at +19 -> line end 1 string (0 for none)
|
| | byte at +20 -> line end 2 string (0 for none)
|
| | byte at +21 -> line end 3 string (0 for none)
|
| | byte at +22 -> zero skip string (0 for none)
|
| | byte at +23 -> line start 1 string (0 for none)
|
| | byte at +24 -> line start 2 string (0 for none)
|
| | byte at +25 -> line pass 1 string (0 for none)
|
| | byte at +26 -> line pass 1b string (0 for none)
|
| | byte at +27 -> line pass 2 string (0 for none)
|
| | byte at +28 -> line pass 2b string (0 for none)
|
| | byte at +29 -> line pass 3 string (0 for none)
|
| | byte at +30 -> line pass 3b string (0 for none)
|
| | byte at +31 -> line pass 4 string (0 for none)
|
| | byte at +32 -> line pass 4b string (0 for none)
|
| | byte at +33 -> set lines per page string (0 for none)
|
| | byte at +34 = number of lines per page
|
| | byte at +35 = number of leading zeros to leave
|
| | byte at +36 = multiplier to convert to skip (see skip resolution)
|
| | byte at +40 = divider to convert to skip (see skip resolution)
|
| | byte at +44 = short advance to use for continuous roll paper
|
| | byte at +48 -> form feed string (0 for none)
|
| | byte at +49 = reserved
|
| | byte at +50 = reserved
|
| | byte at +51 = reserved
|
| | byte at +52 = paper x offset
|
| | byte at +56 = paper y offset
|
| | word at +256 configuration word (see R5)
|
| | word at +260 pointer to active printer dumper
|
| | word at +264 printer dumper number (see R1)
|
| | word at +268 left margin in pixels
|
| R5= | | configuration word
|
| R11= | | 0 (reason code)
|
| R12-> | | private word
|
Previous printer dumpers and printer managers could therefore never have strings of longer than
255 bytes (and given the string also had to fit in the 244 byte block, somewhat less).
Now, where the length byte is zero this signifies that the two words are of the new format:
This provides for a configuration string up to 16Mbytes long, though in practice the
PrintEdit and Printer Manager applications will put a more conservative limit on this.
Printer dumpers can support both old and new Printer Manager applications by inspecting the
length byte. For non zero it can assume it is running on a pre RISC OS 5 system and behave
as before by outputting the short string, for zero it simply needs to fetch the larger pointer
and address and output as before (probably using a shared output routine).
As there are 20 string pointers which in their extended form are 8 bytes each this gives
a maximum of 160 bytes, hence the new style block still fits in the existing 244 byte
block limits.