Monday, November 2, 2020

Remembering the dot-matrix printer: Epson LQ-2500 24-pin dot matrix emulation on 86BOX running Windows 95


Example of simulated printout from Epson LQ-2500 24-pin impact dot-matrix printer

I was thinking about the venerable dot matrix printers I grew up with. In an era WordPerfect for DOS ruled supreme, Panasonic, Epson and other printer manufacturers competed furiously, going from 9 pins in the print head to 24 and even to 48. Impact dot-matrix printing technology improved in leaps and bounds, eventually featuring "near letter quality" (NLQ) modes approaching laser printers. Epson's ESC/P standard was immensely popular, allowing software to select from various fonts and styles, even bitmap graphics and barcodes, built right into printers or optional cartridges. Those were great times for novice programmers to fool around with little filters in C to set the styles and pipe input to the printer. I could print AUTOEXEC.BAT in superscripted bolded italics by piping the DOS TYPE command through my filters written in Borland Turbo C, eventually out through LPT1! (The purpose of doing so eludes me now after a quarter century later from Windows 95.)

It recently occurred to me to look for emulators for those classic dot-matrix printers. However, it turned out to be a bit more difficult than I expected. Other than a commercial product called PRTWIN ("Epson matrix printer emulator under Windows") there was little out there on the internet for an emulator that would, for example, create a virtual parallel port (LPT1) for other programs to send print jobs to. I posted a question at - of all places - the QEMU mailing list, and was excited to hear from Will Senn about an emulator called 86BOX that includes the option of connecting an emulated ESC/P capable virtual printer to the LPT1 port of an emulated PC compatible machine.

86BOX - Windows 95 Printer Test Page on emulated Epson LQ-2500 dot-matrix printer

Turns out 86BOX is a fascinating PC emulator that I had not played with before. It emulates a numerous variety of PC architectures comprehensively and precisely at the motherboard and add-on card levels including BIOS and firmware. Of particular importance: among the hardware emulated by 86BOX is a generic Epson ESC/P standard printer that can be attached virtually to LPT1: parallel port!

Back in the day, my setup (actually my Dad's setup) was a Windows 95 PC with a Panasonic dot-matrix printer. I thus have a special bond with Windows 95, but getting Windows 95 to work on 86BOX with a functional LPT1: port proved to be a bit challenging. In the beginning, I could readily install Windows 95 OSR 2.5 on numerous motherboard, processor and peripheral combinations on 86BOX, but ended up every time with a dysfunctional parallel port (yellow exclamation in device manager) or no LPT1: port at all. Turns out the problem was, as usual, resource conflict with the sound card, and I had forgotten to allocate the sound card and parallel port IRQs specifically to the ISA bus instead of the default PCI (more details are below).

I nailed it eventually and now have a fully functional 86BOX PC with multimedia sound, networking and EPSON LQ-2500 dot-matrix printer. (This specific printer model is recommended for use with the ESC/P emulator built into 86BOX.)

The printer emulation works great including from WordPerfect Office 2000 and Microsoft Office 95. The LQ-2500 dot-matrix printer emulator happily generates PNG image files for printed pages in a "printer" subdirectory.

Printing from Microsoft Word 95  (Windows 95) to Simulated Epson LQ-2500 Dot Matrix Printer

Printing from WordPerfect 9 (Windows 95) to Simulated Epson LQ-2500 Dot Matrix Printer

Feeling more adventurous, I set up the 86BOX Windows 95 instance with pcap networking and shared the virtual printer on the network. Windows 95 successfully obtains an IP address from my router and connects to the internet. I can even see the Windows 95 shared LQ-2500 printer from other Windows 10 PCs on the network, but attempts to connect to it from Windows 10 have failed so far. Windows 10, unfortunately, throws up some hex error codes that I will have to do more research on (TBD). An initial web search seems to indicate NTLM version mismatch. Anyway, my working configuration of 86BOX running Windows 95 OSR 2.5 with simulated dot-matrix printing is:

  • Machine Type: Socket 7-3V
  • Machine: [i430FX] ASUS P/I-P54TP4XE
  • CPU: Pentium OverDrive MMX 75
  • Memory: 128 MB
  • Video: [PCI] Diamond Stealth 64 VRAM (S3 Vision964)
  • Mouse: Standard PS/2 Mouse
  • Sound card: [ISA] Sound Blaster AWE32 (IRQ 5 has to be manually allocated to ISA in BIOS)
  • MIDI Out Device: System MIDI
  • Network adapter: [PCI] AMD PCnet-PCI II
  • LPT1 Device: Generic ESC/P Dot-Matrix (IRQ 7 has to be manually allocated to ISA in BIOS)
  • Hard disk: 1GB (2078 cylinders, 16 heads, 63 sectors = 1022 MB) on IDE Primary Master (Channel 0:0)
  • 32x ATAPI CD-ROM on IDE Secondary Master (Channel 1:0)
  • 3.5" 1.44 MB Floppy drive A:
  • 5.25 1.2 MB Floppy drive B:

Here is the corresponding 86BOX configuration file:

As was usual for the Windows 95 era, I did go through the BIOS screens and fixed everything up to reflect the hardware. Once again, of special importance is the assignment of the IRQs used by the sound card and parallel port to ISA instead of PCI. Here are the BIOS screens:

While at it, of course I could not resist having some fun, while appreciating how remarkably close 86BOX comes to the "real" Windows 95 PC gaming experience.

Johnny Castaway Screensaver (Sierra, 1992)

Fury 3 on Windows 95

Monster Truck Madness on Windows 95

Sid Meier's Civilization II


If you wish, you can grab my entire Windows 95 86BOX virtual machine here.

No comments:

Post a Comment

"SEO" link builders: move on, your spam link will not get posted.

Recommended Products from Amazon