[comp.sys.atari.st] Problem using HP II P laserprinter with 1040 ST

heiden@kboeng.enet.dec.com (Matthias Heiden) (03/27/91)

While trying to print to an HP II P laserprinter using the parallel
port I'm running into two annoying errors:
	1.  The printer is only recognised by the system if:
	      first the printer is powered on and then the 
	      system is booted.  This wouldn't be a problem,
	      but   
	2.   after some time without printing anything (around 
	      20 - 30 minutes), the system just stops running.
	      System needs a reboot to come into live again.  
Does anybody made similar experience and found solutions to
these problems ? My setup is:
	1040 ST with  2.5 Mbyte , TOS 1.4, Neodesk 3.0,
	 SH204  and SM124 

Any help is appreciated.		Matthias Heiden
--
digital equipment GmbH                  heiden@kbomfg.enet.dec.com
advanced system process development
Sudetenstrasse 5
W - 8950 Kaufbeuren (Germany)           work: +49 8341 913392
--

logajan@ns.network.com (John Logajan) (03/28/91)

heiden@kboeng.enet.dec.com (Matthias Heiden) writes:
>While trying to print to an HP II P laserprinter using the parallel
>port I'm running into two annoying errors:
>	1.  The printer is only recognised by the system if:
>	      first the printer is powered on and then the 
>	      system is booted.  This wouldn't be a problem,

This also happens with the HP Deskjet series of printers.  For some
reason, the Atari parallel port interface chip will lock the printer
strobe bit down (or was it the busy bit?) if it is pulled low for
any lenght of time (fractions of a second.)

The HP printer is a very heavy load until it is powered up.  Once the
Atari bit flips, even if the load is removed, it stays flipped.

There is a software program around that will go in and toggel the bit
and get things running again.  There are also parallel port buffer 
drivers available.  But I opted for a one transistor in the printer
cable solution. 

Included here is a repost of my solution to this age old problem :-)

 ****** repost *****

HP DeskJet Plus / Atari ST power-up sequence problem -- solved!

I have discovered that if the Atari ST parallel (printer) port 
STROBE line (normally high) is pulled toward ground (low) by a 
heavy load (such as a powered-off HP DeskJet Plus), the ST STROBE 
line will thereafter stay low until the load is removed (by 
powering up the DJ+), and until software intentionally sets the 
STROBE line high again.  (Weird note: the STROBE line has to be 
pulled low for something on the order of 1/2 second or longer for 
it to "stick" low -- I do not know why this is.)

Once the STROBE line gets stuck low, the DJ+ responds with a BUSY 
set high.  The Atari TOS will not send any data to the printer 
while the BUSY line is high -- so no printing can take place.

There are six solutions to this grid-lock (I recommend #6):

1.) Power up the DJ+ first and the ST second.  (Then the ST will 
    never see a heavy "low" load on the STROBE line.)

2.) Push the Atari RESET button.  (The reset sequence sets the 
    STROBE line high, clearing the problem.)

3.) Have a software routine which sets the STROBE line high.  (No 
    sense putting this in the auto folder to clear it on reboot, 
    since reboot itself clears the problem -- until next time.)

4.) Power cycle the DJ+ with a print job in the ST "queue".  (You 
    will lose the first part of the print job, and I think the 
    print job must be a minimum length of bytes long to get it 
    over the DJ+ power-up self-test delay.)

5.) Momentarily ground the BUSY line with a print job in the ST 
    "queue".  (I'm not sure if you will lose the first byte of 
    your listing with this method.)

6.) Install a PNP transistor in the STROBE line.  This fix is 
    much simpler than it may seem.  Also it simultaneously solves 
    the heavy loading problem the DJ+ puts on the Atari STROBE 
    line.  (Without the transistor, the loading on the STROBE line 
    appears to push it near the 0.8 volt level limit.  The DATA 
    lines do not seem to have same problem, their low levels seem 
    to be well within limits -- so no buffering seems needed.)

You need:

 - One 2N2907 (or practically any PNP transistor)

 - Access to the Printer cable wires for pin #1 (STROBE) and any 
   ground pin (pins 18-25 on the Atari end, or pins 19-30 on the
   DJ+ end.)  I managed to do this inside the cover of the
   Centronics-type connector.

Step #1  Disconnect the STROBE wire from pin #1.

Step #2  Connect the Emitter (E) wire of the transistor to the 
         Printer side of the wire/pin#1 split you did in step #1.
         (It depends upon which end of the cable you put your
         transistor into.)

Step #3  Connect the Base (B) of the transistor to the Atari side 
         of the wire/pin#1 split you did in step #1.
         
Step #4  Connect the Collector (C) of the transistor to one of the 
         ground pins (18-25 Atari end, or 19-30 DJ+ end.)
         [Caution: Metal cased transistors often have the case
         electrically connected to the Collector -- hence the case
         will most likely be grounded -- avoid having the case
         touch anything that should not be grounded.]

Step #5  Close up and/or wrap up.  Make sure the transistor case 
         and connections are not touching anything they shouldn't
         be touching.


Figures:

                          -----> Ground
                          !
                         / C
                     B !/
from Atari STROBE >----!
                       !\
                         \ E
                         !
                         ----------> to Printer STROBE
        -------
       /     B \
      / E       \   Metal Can style transistor -- common pin
    ==           !  configuration -- bottom view.
      \      C  /
       \       /
        -------

        ----
        ! C  \
        ! B   !     Plastic Flat sided style transistor -- common
        ! E  /      pin configuration -- bottom view.
        ----


Appendix:

              Speed on the parallel printer port.

 The Atari does screen dumps at about 1250 bytes/second.

 The Atari does text dumps at about 714 bytes/second.

 A GFA Basic program I wrote dumps graphic bytes to the DJ+ at 
 about 2174 bytes/second.  Since an 8 by 8 inch graphic picture
 with 300dpi density requires 720,000 bytes -- you can see that the 
 dump alone should take almost 6 minutes for even the GFA program.

 This all suggests that one might want to take advantage of the 
 DJ+'s mixed mode graphic commands, where "blank" space is jumped 
 over.  Software should be able to "count" over these locations 
 much faster than it would take to dump them in dumb mode.

THE END.

-- 
- John Logajan @ Network Systems; 7600 Boone Ave; Brooklyn Park, MN 55428
- logajan@ns.network.com, 612-424-4888, Fax 612-424-2853

goo@hpindda.cup.hp.com (Michael Goo) (03/29/91)

in comp.sys.atari.st / heiden@kboeng.enet.dec.com (Matthias Heiden) /  
7:19 am  Mar 27, 1991 / writes...

>While trying to print to an HP II P laserprinter using the parallel
>port I'm running into two annoying errors:
>	1.  The printer is only recognised by the system if:
>	      first the printer is powered on and then the 
>	      system is booted.  This wouldn't be a problem,
>	      but   
>	2.   after some time without printing anything (around 
>	      20 - 30 minutes), the system just stops running.
>	      System needs a reboot to come into live again.  
>Does anybody made similar experience and found solutions to
>these problems ? My setup is:
>	1040 ST with  2.5 Mbyte , TOS 1.4, Neodesk 3.0,
>	 SH204  and SM124 

Hmmmmmm.  I have a similar setup and have not experienced any of the symptoms
you describe.  I can turn on the printer at any time, and it can sit around for
hours on end with no trouble.  My setup:

  520ST, TOS 1.4 (was 1.0 for awhile), 2 meg, 2 DS/DD, 65 Meg HD, Mono + Color,
  Neodesk 3.0, HP LJ IIP w/2.5 Meg

Your first problem sounds similar to problems reported by people using the
HP DeskJet printer.  There are several PD fixes available for this problem.
Ask around.

Your pal,
  Mike Goo

davea@col.hp.com (David E Allen) (04/02/91)

logajan@ns.network.com (John Logajan) /  9:02 pm  Mar 27, 1991 /
> I have discovered that if the Atari ST parallel (printer) port 
> STROBE line (normally high) is pulled toward ground (low) by a 
> heavy load (such as a powered-off HP DeskJet Plus), the ST STROBE 
> line will thereafter stay low until the load is removed (by 
> powering up the DJ+)
> 6.) Install a PNP transistor in the STROBE line.
>                           -----> Ground
>                           !
>                          / C
>                      B !/
> from Atari STROBE >----!
>                        !\
>                          \ E
>                          !
>                          ----------> to Printer STROBE

Would just a diode work - connected in the STROBE line with cathode towards
the Atari? It would be simpler to wire in. It would prevent the printer
from pulling the atari low on this line. It would require the Atari to
sink more current in the low state (than the transistor), but not any more
than with the direct connection.

dave allen

logajan@ns.network.com (John Logajan) (04/02/91)

In article <16830011@col.hp.com> davea@col.hp.com (David E Allen) writes:
>> 6.) Install a PNP transistor in the STROBE line.
>>                           -----> Ground
>>                           !
>>                          / C
>>                      B !/
>> from Atari STROBE >----!
>>                        !\
>>                          \ E
>>                          !
>>                          ----------> to Printer STROBE
>
>Would just a diode work - connected in the STROBE line with cathode towards
>the Atari?

There is no amplification in a diode, and it has a forward voltage
drop anywhere from .3 to .8 volts.  This added to the low current drive
capability of the Atari strobe line puts the "0" voltage up into the
1.0 - 1.5 volt range.  I'm not sure if the HP requires TTL levels or
CMOS levels, but the minimum low of TTL is usually spec'd at 0.8 volts.
 
You could try it though.  If you drop bytes or your print routine hangs
often you'll have a good guess why. :-)

Besides, how hard it it to solder three wires instead of two (33% harder :-)


-- 
- John Logajan @ Network Systems; 7600 Boone Ave; Brooklyn Park, MN 55428
- logajan@ns.network.com, 612-424-4888, Fax 612-424-2853

rgoseweh@digi.lonestar.org (Roy Gosewehr) (04/03/91)

The DeskJet 500 has the same problem.  I installed a _diode_ per the
instructions that someone had posted on GEnie.  The diode works just
fine on the DeskJet and will probably work just fine on the LaserJet
IIp, IMHO.

Roy C. Gosewehr