[comp.sys.atari.st] DeskJet Plus Fixes

close@lunch.wpd.sgi.com (Diane Barlow Close) (09/25/90)

For everyone's benefit, here are the articles from 1989 on the great 
solder-in fix discovered by John Logajan:

Path: cacilj!crash!ncr-sd!ncrlnk!uunet!cs.utexas.edu!csd4.csd.uwm.edu!uakari.primate.wisc.edu!indri!paz.geology.wisc.edu!uwvax!umn-d-ub!nic.MR.NET!ns!logajan
From: logajan@ns.network.com (John Logajan)
Newsgroups: comp.sys.atari.st
Subject: DeskJet Plus power-up sequence fix!
Message-ID: <1582@ns.network.com>
Date: 20 Aug 89 02:57:53 GMT
Sender: logajan@ns.network.com (John Logajan)
Organization: Network Systems Corp. Mpls MN
Lines: 125

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 M. Logajan @ Network Systems; 7600 Boone Ave; Brooklyn Park, MN 55428  -
- logajan@ns.network.com / ...rutgers!umn-cs!ns!logajan / john@logajan.mn.org -


From crash!ncr-sd!ncrlnk!uunet!lll-winken!csd4.csd.uwm.edu!srcsip!nic.MR.NET!ns!logajan Thu Aug 24 13:09:08 PDT 1989
Article 17084 of comp.sys.atari.st:
Path: cacilj!crash!ncr-sd!ncrlnk!uunet!lll-winken!csd4.csd.uwm.edu!srcsip!nic.MR.NET!ns!logajan
From: logajan@ns.network.com (John Logajan)
Newsgroups: comp.sys.atari.st
Subject: Burning out the printer port?
Message-ID: <1592@ns.network.com>
Date: 23 Aug 89 05:03:44 GMT
Sender: logajan@ns.network.com (John Logajan)
Organization: Network Systems Corp. Mpls MN
Lines: 55


Someone wrote to me about my DeskJet Plus single transistor fix to the
power-up-sequence problem and STROBE line drive buffering.

They were still concerned that the data bits need buffering -- I hope
to show with my measurements that there is nothing to worry about.
The data lines do not need to be buffered.

I measured the resistance of the DJ+ data pins.  This was done by
connecting a potentiometer between a data pin and ground.  The pot was
then adjusted until it read 2.5 volts, or 1/2 the applied no-load
voltage.  2.5 volts occured when the pot was set to 2000 ohms.

So it is safe to say that the DJ+ has at least 2000 ohm pullup.

I further measured at .8 volts and .4 volts, which had 300 and 100 ohms
respectively.  You can see that the current draw increases non-linearly
as the voltage drops because you are not only drawing current from the
pull-up, but also from the TTL input.

I also re-measured the actual voltage present when the Atari was pulling
a data bit to zero.  That was between .2 and .3 volts, let's say .3.

Actually, let's say .4, because I don't have a current measurement for
.3.  .4v/100ohm=.004amp  .004amp*.4volt=.0016mw

Now the Atari (according to a quote from a manual) is spec'd to be able to
drive 3000 ohm loads on the data pins.  They would have to spec it at the
worst case maximum low voltage level, the TTL standard being 0.8 volts.

If 0.8 volts is at the driver, that leaves 4.2 across the pullup resistor/
TTL input.  4.2volts/3000ohms=.0014amps  1.6 ma is considered a standard
TTL input low load.  So it looks like Atari is claiming the data pins can
drive one TTL load.

Power wise, 0.8volts*.0014amps = 0.00112 watts, or 1.12 milliwatts.

So we have the difference between 1.6 and 1.12 milliwatts, the case would even
be better if I had the current measurements for the "real" .2 to .3 volt
logic zero level.

The power difference at this level is miniscule and not worth worrying about.
These drivers are designed to withstand direct shorts to the power rails --
the difference here is piddly in comparison.

Thus I'd say the Atari is quite safe running the DJ+ without buffers (on
everything except the STROBE line, which needs buffering for other reasons
also.)

So, I think my one transistor buffering is a complete solution to the
power-up problem and STROBE loading.

-- 
- John M. Logajan @ Network Systems; 7600 Boone Ave; Brooklyn Park, MN 55428  -
- logajan@ns.network.com / ...rutgers!umn-cs!ns!logajan / john@logajan.mn.org -
--
Diane Barlow Close
	close@lunch.wpd.sgi.com
	also 	close@cygnus.com
	I'm at lunch today.  :-)