MAJ Tom, here is a small pothole on the Golden Path.
Though I'd expect RLE to be an optional implementation. Maybe, maybe
not. YMWV...
As briefly discussed earlier, the ECP Protocol includes a Simple
Compression Scheme called Run Length Encoding. It can support a maximum compression ratio of 64:1 and works by sending repetitive single bytes
as a run count and one copy of the byte. The run count determines how
many times the following byte is to be repeated.
For example, if a string of 25 'A's were to be sent, then a run count
byte equal to 24 would be sent first, followed by the byte 'A'. The
receiving peripheral on receipt of the Run Length Count, would expand
(Repeat) the next byte a number of times determined via the run count.
The Run Length Byte has to be distinguished from other bytes in the Data
Path. It is sent as a Command to the ECP's Address FIFO Port. Bytes sent
to this register can be of two things, a Run Length Count or an Address.
These are distinguished by the MSB, Bit 7. If Bit 7 is Set (1), then the
other 7 bits, bits 0 to 6 is a channel address. If Bit 7 is Reset (0),
then the lower 7 bits is a run length count. By using the MSB, this
limits channel Addresses and Run Length Counts to 7 Bits (0 - 127).
Louis Ohland wrote:
Fortified with Caffeine and an insatiable desire, I'm looking at the ECP
and Type 3 information [such as it is] with the goal of enabling some
sordid ECP to DMA port functionality.
Gonna have to drop it down into granny low gear and slowly let out the clutch...
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)