[net.micro.amiga] Patch for EPSON Printer Drivers

carl@umd5.UUCP (02/06/86)

In article<3030@vax4.fluke.UUCP>, star@fluke.UCCP (David Whitlock) raised a
question concerning the partial overlay of print lines on dot matrix
printers in graphics mode. In a followup article, David Berezowski (CBM/AMIGA)
pointed out that the fix is in a one line change to the EPSON family and
MPS-1000 drivers. That is:

"        The line in error is in the epson 'render.c' function.

INCORRECT:
if (err=(*(PD->pd_PWrite)) ("\0331",2)) return(err);
/* select 7/72 inch spacing */

CORRECT:
if (err=(*(PD->pd_PWrite)) ("\0333\030",3) return(err);
/* select 24/216 (8/72) inch spacing */

         Sorry for the inconvience. "

   Well I'm happy to see that there is nothing wrong with my EPSON JX-80 and
that the gfx line overlay problem is associated with a simple bug in the
printer driver. David Berezowski's reply to the original printer driver
question was *terrific*.  It told me everything I needed to look for, so I
took the bull by the horns and tried to patch this printer driver animal.

   The HEX option on the TYPE command is a great help.  Using a dump of the
driver and a 68K reference manual I was able to find the right spots to
modify. Luckily, the Lattice compiler allocated a long word for the string
constant output to the printer...plenty of room to add another byte (hurray!).
Also, the number of bytes to output was stored in its own 16 bit word and
therefore easy to bump up by one (hurray again!). No need to enlarge hunks
here...an inline patch...no muss, no fuss.

   All of this now said, here are the bits you need to know to patch the
EPSON printer drivers supplied with AMIGA DOS V1.1:

 Generic EPSON printer driver is in file:  DEVS:PRINTERS/EPSON
 Patch is: OFFSET  OLD   NEW  (HEX)
            A69    02    03        output 3 chars to printer
            D0B    31    33        change ESC "1" to ESC "3"
            D0C    00    18        set 24/216 spacing

 EPSON JX-80 printer driver is in file:   DEVS:PRINTERS/EPSON_JX-80
 Patch is: OFFSET  OLD   NEW  (HEX)
            B4D    02    03
            F69    31    33
            F6A    00    18

This patch makes my JX-80 work great! There still is, at times, some 'play'
in the tractor feed mechanism.  This can sometimes cause overlapping or
white spaces between lines. For the best print, take the tractor drive off
the printer and engage the friction feeder.  Also, using a single sheet of
paper (instead of fanfold) works best.

   I have provided a throwaway ABasiC program which will fix up the two
EPSON drivers. I know that this is a horrible little program and it is *NOT*
an example of how to code in basic. Just accept this at face value...I used
it and it worked for me.

110   OPEN "R",#1,"DEVS:PRINTERS/EPSON",128
120   FIELD #1, 128 AS X$
130   RGET #1,21
140   Y$ = X$
150   REPLACE$(Y$,106,1) = CHR$(3)
160   LSET X$ = Y$
170   RPUT #1,21
180   RGET #1,27
190   Y$ = X$
200   REPLACE$(Y$,12,1) = "3"
210   REPLACE$(Y$,13,1) = CHR$(24)
220   LSET X$ = Y$
230   RPUT #1,27
240   CLOSE #1
250   OPEN "R",#1,"DEVS:PRINTERS/EPSON_JX-80",128
260   FIELD #1, 128 AS X$
270   RGET #1,23
280   Y$ = X$
290   REPLACE$(Y$,78,1) = CHR$(3)
300   LSET X$ = Y$
310   RPUT #1,23
320   RGET #1,31
330   Y$ = X$
340   REPLACE$(Y$,106,1) = "3"
350   REPLACE$(Y$,107,1) = CHR$(24)
360   LSET X$ = Y$
370   RPUT #1,31
380   CLOSE #1

   Many patching adventures such as this are possible. What is really needed
is a general purpose patch utility to assist in the user installation of
patches. Also, does anyone know of a good 68K disassembler available for the
AMIGA?  One which will dissamble object files and executable files? It would
have come in handy here...

***** As an aside...
If you want to use this patch with DeluxePaint you are going to have to
WRITE on your DeluxePaint disk!!!! Just another reason *AGAINST* copy
protected software products such as those, like DeluxePaint, which come
bundled with a particular version of an OS and its associated bugs. One more
frustration we don't need in these pioneer Amiga days.

                                 Regards, Carl Symborski

bruceb@amiga.UUCP (Bruce Barrett) (02/10/86)

In article <861@umd5.UUCP> carl@umd5.UUCP (Carl Symborski) writes:
>... lots of good patching info for Epson printers, Thanks! ...
(I haven't tried/tested the above procedures but they look OK.)

>***** As an aside...
>If you want to use this patch with DeluxePaint you are going to have to
>WRITE on your DeluxePaint disk!!!! Just another reason *AGAINST* copy
>protected software products such as those, like DeluxePaint, which come
>bundled with a particular version of an OS and its associated bugs. One more
>frustration we don't need in these pioneer Amiga days.
>
>                                 Regards, Carl Symborski

There is a potential problem with the above, but a solution too.

Problem:	Writing to a DeluxePaint disk (Rev A or what ever they 
call it) can, and eventually WILL cause disk write errors.  This is because
they did not fully understand the scheme for AmigaDOS sector allocation.
EA tried to indicate that thier copy protect area was made unavailable to 
DOS but missed.

Solution:	Never write to youe EA disk.  Boot from a different
"workbench" or "cli" disk and load DeluxePaint from another.  This way
a) you are free to change the Epson driver, b) You don't have to write
to the EA disk.

(BYW, Thanks EA for a very nice paint program!)

--Bruce Barrett