• Please review our updated Terms and Rules here

GPIB to Serial or parallel printer adapter with the PET

… of course, back in the old days the closest thing you got to a “generic” printer driver that could handle graphical printing was Epson MX/LX-80 or IBM Proprinter emulation. As early as the mid-1980’s it was pretty common for printers from other manufacturers to emulate one or both of these, and before the era of OS-level printer drivers something with these emulations was your best shot at making sure you’d be able to get fancy formatting from your word processor and greeting cards from The Print Shop.

(The Apple ImageWriter itself is a reskinned C. Itoh 8510, which was a distant third place in the “there will probably be a driver for this” race. I’ve used one with my DOS machine and the 8510 driver works for graphics.)

By the 1990’s add “Epson LQ” (24 pin dot matrix) and HP Laserjet II to the list of “try this if you’re desperate“ drivers.
 
Oh no. Old Windows... I eventually persuaded them to move to an iMac when the 'new' Windows interface came out and p*ssed everyone off (what, no [Start] button)...

But that's a whole other story!

Dave
 
Windows with a generic text-only printer driver is a pretty sad thing to behold. I mean, I guess it lets you put letters on paper, but it's kind of missing the whole point of the WYSIWYG thing.
 
I think there are different 'levels' of generic printer driver though, but this is a while ago now...

So far as I'm aware there was no such thing in the pre-GDI era, IE, a printer driver that could give you any sort of graphical output or enhanced formatting on any serial or parallel printer. There were drivers for "Generic Epson 9-pin", "Generic Epson 24-pin", "Generic Postscript", et al, that would get you printing on just about any printer that fit into one of those broad categories (but you might be missing support for whatever enhanced features the printer might have), but these still rely on you guessing on what category your printer might emulate. (Which, to be clear, the Epson emulations were almost universal in dot-matrix printers by the late '80's. Even some laser printers can emulate Epson dot-matrix printers, although for laser printers HP Laserjet II emulation is the nearly sure thing.) How different line printers did their graphics (if they could do them at all) varied drastically between brands and models back in the bad old days, before everyone gave in and started emulating a market leader for at least baseline functionality.

In any case this is all irrelevant for a printer interfaced to a PET unless you're planning to program it; so far as I'm aware nobody ever made a version of Print Shop for the PET. There might be software out there for the PET that specifically relied on some of the "smart" features that were in the Commodore-brand printers (which were also capable of printing PETSCII graphics), but you're not going to find any third-party printer that emulates that stuff. (That's why I was mentioning the idea of building an Arduino-type widget as a "modern" PET printer adapter earlier; this would easily have enough CPU horsepower to handle translating Commodore-specific printer output into Epson graphics or whatever.)
 
There were word processing packages available for the PET, so they must have come with a selection of reasonably well supported printers. A word processor that printed in plain ASCII is not a word processor...

Dave
 
There were word processing packages available for the PET, so they must have come with a selection of reasonably well supported printers. A word processor that printed in plain ASCII is not a word processor...

Not today, but in 1980? Remember, the gold standard back then was "does it look as good as a typewriter?".

Looking at the manual for "WordPro 4" for the PET the manual suggests the only "supported" printers were various daisywheel models (Diablo 630, NEC Spinwriter, etc, and "supported" means the manual has recommended DIP switch settings for them) and for special effects you had underline and bold, both of which were implemented by sending backspace characters and typing over characters you'd already spat out. This requires the printer support Control-H, which... is a pretty darn low bar to get over.

(The double-splat for boldface is kind of funny in and of itself; dig around and you'll find old printer reviews where they actually complain about printer XXX being "too well built" because the head-spacing was so precise that backspacing over a letter and hitting it again wouldn't make it noticeably darker than a single impact.)
 
Looking at the manual for "WordPro 4" for the PET the manual suggests the only "supported" printers were various daisywheel models (Diablo 630, NEC Spinwriter, etc, and "supported" means the manual has recommended DIP switch settings for them) and for special effects you had underline and bold, both of which were implemented by sending backspace characters and typing over characters you'd already spat out. This requires the printer support Control-H, which... is a pretty darn low bar to get over.
In the early days you were lucky if your editor supported the printer you have. Therefore quite some firms produced lists with codes so you could create your own kind of driver. I have no idea if nowadays printers provide such a list.
As long as the printer has the "old fashioned" LPT or RS232 interface, it is just a matter of finding the right codes.

Another solution: what about using a RPi as an intermediair: old computer sends the text to the RPi and it on its turn sends the data in acceptable form over USB to the printer? OK, needs some programming of the RPi of course.
 
Another solution: what about using a RPi as an intermediair: old computer sends the text to the RPi and it on its turn sends the data in acceptable form over USB to the printer? OK, needs some programming of the RPi of course.
Sounds like a good Forum project, "old computer to modern USB printer adapter". Most vintage computers have, or can organized to have, a serial link. So it would be a serial to USB adapter with options to select what computer type would be diving it, though probably just generic would be fine and perhaps have output selections on the RPi for the common USB printer types.
 
So it would be a serial to USB adapter with options to ....
Haven't thought about that one at all! But at second thoughts, would be any programming needed at the host computer as well? I don't think it just "Ho, somebody is knocking at my USB port, I need to print something!". I ask because I'm quite unfamiliar with these things. That is the disadvantage of Windows and even Linux, everything is done for you. The only advantage of Linux is that if you want to know how it is done, you can have a look into the sources.
I have created a small program in Lazarus that exchanged data with an Arduino. The last one doesn't know better than that it is talking to a serial port. The only thing I would have to do is to tell Lazarus to send the stuff to a printer. I have no idea right now how to do that but that was also the case with communicating with the Arduino. So it certainly is not impossible.
 
FWIW, if you're willing to use a Raspberry Pi or other "runs Linux"-strength computer for this it's already pretty much a solved problem. There are several open-source solutions capable of translating output intended for Epson dot-matrix printers (see here, here, and here) into bitmaps, PDFs, or Postscript output, which can then be readily printed from a Linux computer to any compatible printer (either locally connected via USB or across the network) via CUPS. If your "classic" computer is already converted to output standard RS-232 serial literally all you need to do is capture the output, batch submit it through one of these filters, and pipe the output from that to a printer. Banging together some software to do this should be an afternoon's work.

For intercepting Centronics parallel output obviously you need to be able to capture the parallel bitstream, which is going to take some hardware. Here's an output that implemented that hardware on a daughter board to stick on a Raspberry Pi. Underneath that hardware layer this device essentially does what I'm describing above for a serial port, IE, capturing whatever it gets, batching it through autofilters, and spitting it out to a modern printer. If you want to DIY it a plain old Arduino Nano has enough horsepower to convert parallel to serial, that's a cheap, generic way to do without the custom hardware shield and give you a serial input for any host computer that speaks USB. (Where you would then listen for input and do the batch-filter thing.)

It's also possible to do IEEE488 with an Arduino, so it should be possible to just use one directly as a PET->Serial converter to either go straight to a serial printer (*via level converters) or speak to a computer to translate, per the above.

EDIT: And yeah, just for the record, no, the computer is not going to have to speak "Serial Centronics Printer", it just doing normal flow control should be fine... 🙄
 
Last edited:
But here is one major problem.

I was thinking about buying a more modern printer, because it is more light weight, compact and NOS, compared to the older generation printer.

But here is the problem:

As time went by, some genius decided that hardware was "old fashioned" and got rid of things like the baud rate "mechanical switches" that also set start bits stop bits, parity etc and decided that, why bother with those as a hardware settings, you just specify those on software setting that come up in Windows with the driver (disk provided) installed in the Windows or Apple operating platform. It requires that these settings are sent to the printers registers, to configure it, by the driver software (you cannot run that software in a PET)

So I think, one of these newer printers, if you got one, you might "get lucky" if the serial interface default settings happened to match what you could achieve with an interface like the ADA1200 (unlikely). But mostly, if the mechanical switches are gone, and its software registers in control, it is "game over" for using it with the PET, unless you can work out the protocols that the manufacturer put into their driver disk for their particular printer to configure it, even something simple like the serial port.

A more primitive printer like the Apple Imagewriter has these switches, that is why it is possible to get it to work with the PET and the ADA1200. Newer printers were too smart for their own good and dependent on proprietary software to set up their ports (affectionately called drivers) that committed them to more advanced operating systems.
 
Last edited:
time went by, some genius decided that hardware was "old fashioned" and got rid of things like the baud rate "mechanical switches" that also set start bits stop bits, parity etc and decided that, why bother with those as a hardware settings, you just specify those on software setting that come up in Windows with the driver (disk provided) installed in the Windows or Apple operating platform. It requires that these settings are sent to the printers registers, to configure it, by the driver software (you cannot run that software in a PET)

Do you have a concrete example of a printer that has a physical RS-232 serial port but has this problem? Because I’ve never seen such a thing.

I just downloaded the manual for one of the few serial line printers you can still buy, an Oki Microline 320 with the optional card, and all the settings are accessible via a menu system. (That looks like it wastes a ton of paper, but it’s there.) They do have a program called “Dipus” that you can run from Windows to set all the options, which would probably be more efficient, but you don’t have to use it. Or you could use it once before hooking it up to your old computer, it saves the settings in nvram.
 
Do you have a concrete example of a printer that has a physical RS-232 serial port but has this problem? Because I’ve never seen such a thing.

I just downloaded the manual for one of the few serial line printers you can still buy, an Oki Microline 320 with the optional card, and all the settings are accessible via a menu system. (That looks like it wastes a ton of paper, but it’s there.) They do have a program called “Dipus” that you can run from Windows to set all the options, which would probably be more efficient, but you don’t have to use it. Or you could use it once before hooking it up to your old computer, it saves the settings in nvram.
Yes I think that would work. The printer would have to be set up with a modern computer and a serial link & configured with its driver and with any luck it would remember the serial port settings would remain in NVRAM, then it hopefully would be independent of the driver after that. The manuals on modern printers, if you get them, appeared to only contain information on how to load and use the driver, nothing about what code they sent to the printer. I have looked at more and one I found has that menu system too. Though later I thought the code sequence could be examined while running on a modern computer to find out what data would configure it. But I guess if it stays in the NVRAM like you say, and is only done once, it would not really matter that I didn't know what it was.

Would it be likely that the command/s that initiated and stopped printing would be uniform for all printers, or could that also depend on the custom driver ? Or would it be expected that once the data was received in the printer's buffer, that after a time, if no more was sent it would automatically print it out ? Probably the manual print button on the machine (if it had one) would print out the contents of the buffer anyway, so it would not be a worry.
 
Just to reiterate, if you're going out today looking for a "new" printer that has a serial port (in particular) at all it's going to be a very, very short list; if there's a particular printer you have your eye on it would probably make more sense to just ask about that one before you buy it whether there's any hope or not. Serial ports were practically extinct on mainstream desktop printers by the mid-1990's.

Would it be likely that the command/s that initiated and stopped printing would be uniform for all printers, or could that also depend on the custom driver ? Or would it be expected that once the data was received in the printer's buffer, that after a time, if no more was sent it would automatically print it out ? Probably the manual print button on the machine (if it had one) would print out the contents of the buffer anyway, so it would not be a worry.

This is a remarkably broad question for which there is no short answer because printers come in so many different "flavors", but to oversimplify it as much as possible: *IF* your printer can handle "dumb text" at all then if it's a "line printer" (dot matrix or *some* inkjets) it should spit out as soon as you start sending text; if it's a "page printer" (which I mostly think of as laser printers, but some Inkjet printers also behave like page printers; for instance, I think this applies to most PCL HP DeskJets) won't spit out the paper until you send enough lines to trigger an auto page-feed (I mentioned this above, with the standard margins it'll be about 60 lines), send an ASCII Form Feed command, or hit the "Form Feed" button on the printer's front panel. (If it's so equipped. Some printers don't have these controls anymore.)

Again, is there some particular printer you want to hook up? Because it's pretty much impossible to generalize about whether "any random printer" will work on those adapters you bought for your PET. I mean, I will go out on a limb and say that it's probable that just about any printer you find that actually has a built-in serial port on it will work in at least some capacity simply because a printer that has one was probably intentionally built to handle input from "low tech" sources. Centronics parallel printers I have to be more guarded about, but I'll go so far as to say that if it's either not a laser printer or was a laser printer that cost more than about $600 when it was new than you're also probably good; if it was a cheap laser printer built between around 1998 and the end of cheap printers with Centronics printer ports or a cheap Inkjet printer then you might be in trouble.
 
Last edited:
As for all this talk about "drivers", I kind of feel like there's a little bit of confusion about what role a driver plays on "oldschool" printers verses modern ones.

The printers most widely used on personal computers from the dawn of the breed in the 1970's up through around the mid-1990's were descended from receive-only teletype machines. IE, they were a box that took ASCII input and typed it onto paper. In addition to knowing how to translate printable characters into marks on the paper they'd also generally understand at least a handful of additional "action codes"; besides the obvious ones (carriage return and linefeed) they'd usually know how to backspace, form-feed to a new piece of paper, at least sometimes they'd be able to do something useful with horizontal tabs... and that was about all that was "generically" defined. If you were happy with your printer being limited to about the same level of special effects that you could achieve by using the keys on a standard Selectric typewriter then you didn't need a driver, you just threw text at the printer and life was good.

Obviously people started wanting more from printers; one pass underline, italics, boldface
, proportional spacing, additional fonts, and eventually, graphics 👾🦄🚀. Unfortunately there was no universal ASCII standards for these features, so printer manufacturers implemented special effects the same way terminal manufactures did; via Escape codes chosen completely at random. Here's a list of Epson FX escape codes; compare them to the list of supported codes in the Apple Imagewriter manual and you'll find they're completely different. Here's an abbreviated reference of basic HP PCL 4.x escape codes; also completely different. So... yeah. On one hand, all these printers are "compatible" without drivers if you want them to print like a typewriter, but if you want 🦄boldface italic unicorns🦄 to come out you need a driver specific to your printer.

If you're hooking up a printer to an OS that depends on graphics and unicorns you need a driver. But it seems like we're spending an awful lot of time worrying about drivers for a computer that has no unicorns, never did. YOU DON'T NEED A DRIVER FOR A PET. Unless you're writing your own software, and then you're writing the driver. The one exception to this I think might be significant is if you run into software that specifically wants a Commodore Printer; Commodore's printers for the PETs had their own special features that were pretty elaborate, like a data formatting mode and they could also print PETSCII graphics. If this is what you want then, well, you're not going to find a printer that does that. Your best bet is to start building your own adapter to capture the PET's IEEE-488 output so you can run it through your own translator that will emulate one of those Commodore printers and spit out a graphics file or whatever that you can print on a more generic printer.

Edit: Almost forgot: Post the mid-1990's (and there were some examples before this but they were rare enough you probably don't need to worry about them), after everyone's desktop computers became so infested with graphical unicorns that nobody thought they wanted plain text printers anymore, manufactures started building devices that could only print pictures, they actually didn't bother with the least common denominator ASCII printer functions anymore. This is the one kind of printer that your PET is going to be completely hopeless talking to unless you have some newer computer sitting in between it and the printer to do translation. And like I said, I think your chances of finding a printer with an RS-232 serial port on it that falls into this category are pretty nil (unless you're going really out a limb into things like receipt or label printers... maybe?), you're probably *mostly* safe with Centronics printers, and obviously you have no converter to go straight from your PET to a USB printer so it doesn't matter that most USB-only printers *do* fall into this category to at least some extent.
 
Last edited:
Thanks for that info Eudi. As time goes by I will report any successes (or failures) with some modern printers on the PET. It might be possible to make a list of the convenient more modern models that work, especially if others try them too.

Although the Imagewriter does work now, it has a number of problems. One thing I have found, if you can find something electro-mechanical that is NOS in its original box, not only are there no wear issues, the packing around the object is generally designed for safe shipping by the manufacturer with the original foam inserts. Often when used equipment gets packed by ebay sellers, the seller packs it nowhere near as well for international shipping, sometimes a few bits of newspaper around it and in a box that is too small, it can really get hammered. So you can end up with something that is near worn out and looks like it has been thrown down three flights of stairs as well. (and looks like the famous box delivery scene on the movie PET Detective). It is harder to find very early printers that are still NOS in their boxes, but there are some.

 
Last edited:
I have been doing some more work with the Taylor -Wilson adapter which has both serial and parallel printer outputs.

It was stone dead with serial output data when I tried it and the cause/s turned out to be somewhat interesting. Of course, there is no schematic available.

After a lot of testing I found that the 6402 UART was being held in a reset mode. After tracing out the circuit for the power on reset, it turned out they had used a 75154 IC as a reset generator. The ICwas powered from the +5V rail, but its input, which had a 10uF capacitor was charged via a 27k resistor from the +12V rail.

The capacitor was charging to just below 2V and not quite enough to reach the threshold of the input gate. At first I thought the 10uF capacitor might be leaky, but it wasn't.

A few calculations based on the input resistance and threshold voltage for this IC showed that it could have a threshold value above or below the level that the capacitor was charging to, depending on the IC specimen. The resistor they chose (27k) is really too high in value making it somewhat marginal.

But the unit was said by the previous owner to "work".

In the end made sense and it probably was working at its location in the UK, as I also had found that the regulated +12v rail was a little low, because running the unit here on 230V line voltage, the input to the +12V regulator was too low and the regulation had failed making the +12V rail sit at around +11V and that made the already borderline threshold voltage at the input of the 75154, just a tad too low. So an interesting combination of factors. Powering the unit by 240V to 245V line voltage from a Variac caused the 75154's threshold voltage to be reached, and that just allowed the release of the reset on the UART.

In any case I have changed the charging resistor in the power on reset circuit to 10k and for this unit, I will actually have to change the small power transformer in it, to one of the same voltage outputs, but a slightly larger core (with thicker wire) with better voltage regulation. The one in it sags down significantly even with the 180mA load of the large number of TTL IC's on the board and running on 230V is just not getting the voltage required prior to the +12V regulator. All the rectifiers, filter capacitors etc are normal and the current drain is about right for the number of IC's. So I have ordered a suitable transformer from Mouser.

One other thing, a little odd unless anyone has an explanation for it, they had connected the +5V output directly from the 7805 regulator to pin 6 of the 25 pin serial output connector with no current limiting (aside from the 7805 shut down protections). I did not think this was very smart as also +5V is not strictly a standard RS-232 high level, but it is high enough to be interpreted as high. Though its better with +/- 12V. Maybe somebody wanted the +5v to power some sort of peripheral device on the connector. Pin 6 is the DSR (data set ready connection) that is not used at least on the Apple serial printer I have. Can anybody think of a reason why they would have tied that pin to +5V ? Should that be tied high, say to +12V via a resistor instead?

RTS and CTS are not used.

They also applied -12V to pin 18 (that pin is not normally used) and +12V to pin 24 which is often not connected either. , but could be connected in some systems to the DTE transmitter clock.

The only other pin used on the connector is the DTR terminal on pin 20 which connects into some 75154 gate inputs on the board and some DIP switch options.

So in summary on this particular RS232 serial connector, aside from the usual signal ground on pin 7, there is just the one output Tx is used on pin 3 and only the one input DTR. And no RTS-CTS style handshaking.

I'm inclined to disconnect the +12v,-12v and +5V connections from the 25 pin serial connector in case they cause trouble one day.

The Taylor Wilson unit had very awkward soldered on wired to its psu board. So I replaced that with 1mm dia pcb pins and individual sockets for each wirte, so I could unplug the whole psu board for servicing the logic board.

Also, both this unit and the ADA1200 work fine to send serial data to Tera Term, for example a plot from the PLOT program, not so good on my PET's screen as the column wrap around fouls it up, but great on a modern VDU or the printer.
 

Attachments

  • twilson.jpg
    twilson.jpg
    278.6 KB · Views: 11
  • Plot.jpg
    Plot.jpg
    105.6 KB · Views: 10
Last edited:
I have repaired the power supply issue in the Taylor-Wilson PET Printer interface unit.

The original power transformer was a little small and it had a fairly high internal resistance, meaning that with current loading, its output voltage dropped too much under load to feed the 12V regulator, which requires at least +2.5V above the 12V output level to regulate properly.

The original transformer was nominally 240V to 24V CT. The problem was aggravated by running it on 230V here in AU.

I replaced it with a better transformer from Mouser, with a larger core & power rating ( the regulation is better.....that means the output is more stable with a higher load range). It required two new mounting holes.

I was surprised by a few things, because I do transformer winding myself and I'm somewhat picky about transformer quality. Mostly I'm disappointed with the construction quality of small line power transformers. Often they use the low temperature yellow tape, the winding tension is too high and the bobbin edges splayed apart. And they often have messily stacked laminations too.

But, this power transformer from Mouser, made in the Dominican Republic, is really very well finished. All looks good with the winding and lamination stack and they have finished it with high quality black fiberglass tape......very professional job.
 

Attachments

  • Newtrans.jpg
    Newtrans.jpg
    280.9 KB · Views: 10
Back
Top