Post Reply 
HP-19C Print
02-03-2023, 04:44 AM
Post: #1
HP-19C Print
Hi all,

Even though the HP-19C printer worm gear causes the print head to automatically reverse at the end of its travel, the driver seems to have a motor reverse capability.

Just wondering if anyone knows whether the HP-19C always prints using full line widths or just partial ones for smaller print lines like if was to do a PRX with 0.00 on the display.

cheers

Tony
Find all posts by this user
Quote this message in a reply
02-03-2023, 07:53 AM
Post: #2
RE: HP-19C Print
(02-03-2023 04:44 AM)teenix Wrote:  Just wondering if anyone knows whether the HP-19C always prints using full line widths or just partial ones for smaller print lines like if was to do a PRX with 0.00 on the display.

I just tried printing numbers of different lengths using different FIX settings on a physical 19C, and the print head always traverses the entire line every time. Therefore FIX 0 takes just as long to print as FIX 9. This behavior is different from the HP-97 whose printhead only moves as far across the paper as needed, making FIX 0 print faster than FIX 9.

<0|ΙΈ|0>
-Joe-
Visit this user's website Find all posts by this user
Quote this message in a reply
02-03-2023, 01:02 PM
Post: #3
RE: HP-19C Print
Hi Joe,

Thanks for the response, that helps a lot.

I thought the circuit had provision for reversing the motor, but looking closer now, it just speeds the motor up when homing the print head.

cheers

Tony
Find all posts by this user
Quote this message in a reply
02-03-2023, 01:24 PM
Post: #4
RE: HP-19C Print
(02-03-2023 07:53 AM)Joe Horn Wrote:  I just tried printing numbers of different lengths using different FIX settings on a physical 19C, and the print head always traverses the entire line every time. Therefore FIX 0 takes just as long to print as FIX 9. This behavior is different from the HP-97 whose printhead only moves as far across the paper as needed, making FIX 0 print faster than FIX 9.

I've heard that older brothers are lazier... just sayin... no reflection on Jim. Wink Hey wait, I'm an older brother too...

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
02-03-2023, 05:49 PM
Post: #5
RE: HP-19C Print
(02-03-2023 04:44 AM)teenix Wrote:  .
Just wondering if anyone knows whether the HP-19C always prints using full line widths or just partial ones for smaller print lines like if was to do a PRX with 0.00 on the display.

That surprised me when I got the 19C microcode working in Nonpariel a few months ago. I don't have a real 19C at hand for comparison, but it appears to be the intended behavior. Given that the same PICK chip (or PIK, HP wasn't consistent) as the 97 is used, if there's a physical limitation of the 19C printer mechanism, then the microcode must be written to work around it. Since huge portion of the 19C/29C microcode are directly copied with little or no change from the 67/97, it seems unlikely that they would have changed the printing microcode unless the hardware required it.

The same engineer, William Egbert, wrote much of the microcode for the 67/97 and 19C/29C, designed the motor driver circuit for the printer used in Topcat and Sting calculators, and wrote a series of HP Journal articles on calculator algorithms.
Find all posts by this user
Quote this message in a reply
02-03-2023, 11:26 PM (This post was last modified: 02-03-2023 11:28 PM by teenix.)
Post: #6
RE: HP-19C Print
It sounds like William was quite ingenious in developing all of this.

After creating a pseudo PIK chip for the 97 CPU replacement board, from what I've seen the printer microcode is fairly simple (if you ignore the processing of the print data).

Format print data, making sure an EOL character ($3F) is the last
Test if printer ready
turn off display to allow max battery power available for printer
send data to PIK
The PIK adds this data to the current buffer start point.
PIK starts printing if not already

If more data is to be printed on the same line, the microcode processes and sends this to the PIK chip which the PIK also adds at the current buffer start point. In this case is at the EOL character from the previous data. This permits printing long lines (up to 20 characters) allowing for the limitation of the C register size that the PIK reads its data from. Of course, this all has to be done before the PIK reaches the first EOL byte in the print buffer, or the PIK starts HOMing the print head.

The print codes in the C register can either be decoded as 4 bit codes, which allows more characters to be packed into the C register, or 6 bit codes. The microcode formats the print data into either of these two formats depending on what it needs to print. Printing 74.00 ENT (up arrow) is done with a combination of 6 bits (for ENT up arrow) + EOL, and 4 bits (for the numbers and DP) + EOL.

Internally, the PIK converts 4 bit codes to 6 bits by placing the 4 bit data at bit position 5 4 3 2 and setting bits 1 and 0 = 1. These 6 bit codes are an address into the PIKs 64 character ROM (0 - 63)

For example a 4 bit code [0000] is extracted from the C register, the PIK transforms this to 6 bit code [000011], which is the ROM address for character [0]. The PIK would extract [000011] out of the C register for character [0] in 6 bit format. EOL = [1111] or [111111]

Upon reaching the EOL character in the buffer, the PIK activates the HOM output and the printhead homes by reversing and/or speeding up depending on the type of motor drive circuitry.

For the 19C, this activates bypass circuitry for the motor speed signal to the PIK VM input forcing the PIK to output max motor drive. For the Topcats, the HOM signal activates the reverse part of the motor H-Drive circuitry and bypasses motor speed control. In both cases, the print head traverses home faster than when it prints.

Finally, the HOM switch is triggered (hopefully) which tells the PIK to brake the motor and then turn it off. The PIK will then wait for new print data.

After all the data for a single print line has been sent to the PIK and while it is busy controlling the printer, the HP microcode can then go 1 of 2 ways.

If there are no more lines to print the display comes back on and normal code routines resume.

If there is more to print, the microcode will wait in a tight loop continually asking the PIK if the printing has finished - (homed and motor stopped).

PrWait pik1120 // is printer ready?
if s3 = 0
then go to PrWait // no

When printing is complete, the PIK will respond to the microcode's "inquiry" by asserting the Status[3] bit HI in the ACT whereby the microcode will detect this send new data to the PIK. At this point (depending on the printer requirements - say for printing a program) the microcode will also monitor for a key press and stop printing if so.

This process will continue until all the required print lines are completed.

Unfortunately, if the print head does not home for any reason, the microcode will stay in this code loop indefinitely and the calculator will need to be switched off then on to resume. Upon switching on, the PIK will try to home the head if it is not already. The microcode gives no indication of a fault if the head does not home.

A faulty home switch is a disastrous situation (for Topcats) because the print gears can be damaged or the motor may burn out (stalled) when the carriage is jammed against the side of the printer casing, which is why my thoughts were about the soft intermediate gear maybe being sacrificial. (as well as quieter). For the 19C, the print head will keep going back and forth. The "PIK" in the 97 CPU replacement detects this situation and stops the motor and displays a Home? error.

For the Topcats, the print head can slam against the left side of the casing too if the speed of the printing has been fiddled with and increased too far. In this regard, the 19C has a better design for its printer.

Therefore, from the microcode's point of view, it just asks the printer if it is ready, and if so sends data. The PIK does the rest.

The PIK also reads and stores up to 7 keystrokes which the microcode reads when ready.

cheers

Tony
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)