Author Topic: PCI(x) printerports and addressing  (Read 1160 times)

0 Members and 1 Guest are viewing this topic.

Offline free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8517
  • Country: us
    • SiliconValleyGarage
PCI(x) printerports and addressing
« on: July 15, 2022, 04:29:21 pm »
i'm trying to get printerports running on modern computers under WINDOWS XP/7/10
please do not start discussions about linux or other os's.

This is purely about windows to get windows based programs running that need access to old printerports : Things like JTAG dongles, eprom programmers and other doohickeys. they need the factory software.

Modern machines no longer come with the good old parallel port we have come to know as the "printerport"
There are PCI and PCIx boards available but they do not work with programs that do direct access.

so far i have isolated the following information :

Anything PCI resides at different addresses from what was usual under the "DOS days" . Standard printerports used to reside at 378, 278 or 3BC. If you boot into dos, some boards do show up at 378 or 3bc. The moment you start windows the PCI cards are re-initialized and the ports sit at different locations. (no longer in the I/O space that DOs used) .
Standard printerports also need an interrupt ( 5 or 10) and some need to support ECP/EPP mode.

This remap is the problem : the drivers do not allow you to switch back into the DOS I/O space.

I found 1 PCI board that has hardware switches to lock the old style address : Sunix PAR5008R(L) . unfortunately nowhere to be found so i can't try it.

Problem 2 is the PCI structure on the motherboard. Only the root PCI has access to the old DOS I/O space. Anything behind a repeater or bridge cannot remap to the old I/O space.
I have not found a single PCIx board that works, simply because of the bridge problem.

So buying even a used computer made in the last 10..15 years in many cases is hit and miss...

Solutions that do work :
- modern-ish motherboards that have a printerport part of a multi-io controller that sits on the LPC bus (Low Pin Count bus part of certain intel chipsets and that emulates the old ISA bus. these ports DO work)

Solutions that are a hack and sometimes work
- an address translating kernel driver. it traps the I/O instructions and redirects them, essentially up and down shifting the operations. The problem is timing. control programs for eprom programmers have trouble.

I'm trying to find out what :
- modern-ish computers (dell or hp) that are readily available on the used market still have a workable printerport. Dell optiplex 75x works, but only the on-board lpt. the PCI connector sits behind a bridge so the plugins do not work (tried on the 755. plugin does not work)
- modern-ish computers where there is at least one pci port in the root so plugin will work
- modern-ish plug-in cards (PCI) that have hard-lock ability or will work in root pci

why ? because i have three different rom programmers that need LPT access. (Dataman48LV , EEttols winprog and a hilo systems. I also have some other tools.
The system should be able to run a minimum of Windows XP (all the tools i have use windows xp based programs) and potentially windows 7 (i'd like to see if i can make the tools run on windows 7 (32 bit, we're not going 64 bit)

Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Online Nominal Animal

  • Super Contributor
  • ***
  • Posts: 6262
  • Country: fi
    • My home page and email address
Re: PCI(x) printerports and addressing
« Reply #1 on: July 15, 2022, 05:22:54 pm »
Would you consider running Windows XP in a virtual machine?

You see, as long as the parallel port shows up as a standard LPT port on the host Windows machine, at least VirtualBox can map it as a standard parallel port LPT1: in the virtualized guest Windows XP, just as if it was standard DOS hardware LPT1 port, down to I/O port and IRQ support.  Essentially, VirtualBox emulates the parallel port, but using techniques that makes it transparent to the guest OS.  This was implemented in VirtualBox 4.2.0 in 2013 or so, and works fine even with DOS guests.

Here is a VirtualBox thread on the subject.
 

Offline Foxxz

  • Regular Contributor
  • *
  • Posts: 123
  • Country: us
Re: PCI(x) printerports and addressing
« Reply #2 on: July 15, 2022, 05:34:24 pm »
I was going to suggest this as well. Run the OS in something like virtualbox which will emulate the old port addresses but can then bridge them through to a physical port on the host OS be it a USB based device or whatever you can get.
 

Offline free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8517
  • Country: us
    • SiliconValleyGarage
Re: PCI(x) printerports and addressing
« Reply #3 on: July 15, 2022, 05:34:28 pm »
 lot seems to be riding on the I/O controller.
the ICH10 supports 378 278 and 3BC translation (including the ECP/EPP 778 , 678 and 7bc base ports required for that)
But .. 279 is read only so LPT2 (278 base)  may not work for all devices

LPT ranges
LPT1 : 378.. 37F  and 778 .. 77F
LPT2 : 278.. 27F and 678 .. 67F
PRN / LPT2 : 3BC.. 3BE  and 7BC .. 7BE

a true printerportt only needs 3 consecutive addresses (like PRN) , but the extended modes expand those.

the IC10 supports translation for one printerport to the LPC bus, so LPT1 or PRN on a LPC controller should work fine on computers that have the ich10  (Q43/Q45 based)

Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8517
  • Country: us
    • SiliconValleyGarage
Re: PCI(x) printerports and addressing
« Reply #4 on: July 15, 2022, 05:39:38 pm »
hmm. never really thought about emulation... it's worth a try...
i'd like to be able to run all three printerports. that'll avoid me needing one of those old school clunker switches...

hmmm. looks like the only support 1 lpt port...
WMware can support all 3 but will not work with PCI based cards because it does not translate the addressses ( PCI cards do not use the 378/278/3bc)

many people have problems getting this stuff to work. these bit-twiddling programs really like to see physical registers. they often use trickery to do things with the port .

so i'm really looking for what hardwar / chipsets will work ... might be time to go look for a good aold board with an ISA slot .. that always worked

« Last Edit: July 15, 2022, 06:00:58 pm by free_electron »
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline David Hess

  • Super Contributor
  • ***
  • Posts: 16615
  • Country: us
  • DavidH
Re: PCI(x) printerports and addressing
« Reply #5 on: July 15, 2022, 06:10:55 pm »
My last PCI systems had a BIOS screen where IRQs could be assigned to individual PCI slots, and plug-and-play could be controlled.  I have a general purpose PCI serial/parallel card but only used it for RS-232.

My old programmer included a custom ISA board with an 8255 and I kept my last workstation with ISA ports for just that sort of thing.
 

Online Nominal Animal

  • Super Contributor
  • ***
  • Posts: 6262
  • Country: fi
    • My home page and email address
Re: PCI(x) printerports and addressing
« Reply #6 on: July 15, 2022, 06:18:53 pm »
If your computer has lots of (single-core) processing power, bochs IA-32 emulator would also work. It emulates Intel 32-bit architecture at the hardware level, in software so you can run it even on ARM CPUs.  True emulation, that is.  AFAIK, it only supports two parallel ports (I forgot the IO-port and IRQ numbers).

Windows XP client (running in Bochs) has worked fine for over a decade in bochs.
« Last Edit: July 15, 2022, 06:21:17 pm by Nominal Animal »
 

Offline free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8517
  • Country: us
    • SiliconValleyGarage
Re: PCI(x) printerports and addressing
« Reply #7 on: July 15, 2022, 06:39:38 pm »
right now i'm not very inclined to look at emulation / virtualisation.
these devices do weird stuff with the printerports and it may be hit and miss...

i prefer real hardware that works correctly.
i had it running on a Q35 chipset with ICH9 and the on-board lpt. but not over pci boards...
looks like the q45 and q57 with ich10 and on-board lpt should work as well.
all these chipsets still have the LPC bus (which is basically ISA but time multiplexed onto fewer wires)
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Online Nominal Animal

  • Super Contributor
  • ***
  • Posts: 6262
  • Country: fi
    • My home page and email address
Re: PCI(x) printerports and addressing
« Reply #8 on: July 15, 2022, 07:08:24 pm »
Yup, the good ol' parallel port was a surprisingly complex beast, what with EPP and ECP modes and interrupt capability and so on.  AFAIK, bochs does emulate it at the hardware level, and a lot of users use old DOS software that did really weird stuff on the printer port, so I wouldn't discard it offhand just because it is "only" software.

Better test before you decide, is all I'm saying.
 

Offline mariush

  • Super Contributor
  • ***
  • Posts: 5029
  • Country: ro
  • .
Re: PCI(x) printerports and addressing
« Reply #9 on: July 15, 2022, 09:27:35 pm »
eBay is full of socket AM3 motherboards, for example see motherboards with 760g chipset that still come with 2 or more native PCI slots, provided by the SB710 southbridge (or SB750)
Here's an example of such motherboard : https://www.ebay.com/itm/131361951592

There's models that still have the printer port, for example the Asus models have an extra L in the name

ASUS M5A78L LE  : https://www.ebay.com/itm/283882066250 or https://www.ebay.com/itm/384347623448

or the matx versions  ASUS M5A78L-M LX https://www.ebay.com/itm/263908829347

Gigabyte has an extra P in the title  ex if my memory is correct Gigabyte GA-78LMT-S2PT : https://www.ebay.com/itm/125350462907

Socket AM3 processors and FX series processors are plenty, you have integrated graphics in chipset, all you need is some DDR3 and a power supply. Drivers should work on Windows XP, 2000, 2003, Windows 7 (basic windows 2d acceleration only maybe)...


If you search you may even find some Atom based motherboards with LPT and PCI slots.  For example this ITX Asus AT5NM10-I motherboard : https://www.ebay.com/itm/373987126279

You get cpu and motherboard for under $50, if you don't mind the low performance it could be a good value.
« Last Edit: July 15, 2022, 09:31:25 pm by mariush »
 
The following users thanked this post: free_electron

Offline free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8517
  • Country: us
    • SiliconValleyGarage
Re: PCI(x) printerports and addressing
« Reply #10 on: July 15, 2022, 09:28:17 pm »
two other things have come to light

The (hardware wise, we're not talking emulation or translating drivers. we are talking raw bus i/o that toggles flipflops with requiring software.) 
Translation of old I/O addresses can only work for a PCI on lane 0. Anything behind a bridge does not work. so PCIe is out of the question.

so : a LPT on the LPC bus will work , no matter what. ICH9 and ICH10 i/o controllers attached to a multi-io can do that.

so far i have only found 1 PCI card LPT controller that has hardware switches : the UL7512. Startech and Sunix have a board with this on board.
there seems ot be one other that can translate : the shentek board. no idea what the chipset is. no switches , but the driver can do the remap.
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8517
  • Country: us
    • SiliconValleyGarage
Re: PCI(x) printerports and addressing
« Reply #11 on: July 15, 2022, 09:36:25 pm »
eBay is full of socket AM3 motherboards,

i'm looking for a bit more .. .intel-y.. not very fond of AMD. They left sour taste with their VIA and ITE chips on board. Via had problems with PCI bus (they did not follow spec because they did not want to pay royalties...)
this may be solved now , but still ... once burned ...

price is a bit crazy too.. i can buy complete Dell systems case, processor, memory , clean win10 install and all for 100$ ... bare motherboards at 50..100$ are a bit .. overpriced.

will keep this as backup plan. i got a DELL optiplex980 on order with i7. Q57 . ICH10 with SMSC LPC controller. two PCI , one 4 lane PCIx one 16 lane PCIx (used for graphics card)
we'll see where this ends up. If i can get two printerports working i will be happy. I want to get the dataman 48Lv and topmax programmer working. mainly cause they support many older type devices the new programmers cannot handle.
it works on the 755 but that machine is a bit .. slow...

« Last Edit: July 15, 2022, 09:58:17 pm by free_electron »
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8517
  • Country: us
    • SiliconValleyGarage
Re: PCI(x) printerports and addressing
« Reply #12 on: July 30, 2022, 08:40:16 pm »
So , got the optiplex 980. Set up Windows 7 32 bit Professional , loaded latest intel chipset drivers. All peripherals detected, no external drivers needed.

On board printerport set to ECP mode in bios and locked to 0x3BC
- Dataman 48LV programmer works  ( even though they claim you need a hardware change to be compatible with windows xp, it works fine on windows 7 )
- EEtools Topmax programmer works
- Agilent Logicwave logic analyser works

Tried :
PCIx printerport : does not work
PCI mos9008 : does not work
PCI Sunix 400x : does not work
PCI Startech with hardware switches to lock address to 378 278 or 3bc : does not work

Loaded the "legacy " windows driver and hard coded to an lpt address : does not work.

so i kept digging further
- install virtual pc , load windows XP : same story , onboard port works, plugin boards don't

So did a bit more digging :
the root problem is the translation of PCIx to PCI.
Modern computers do not have true PCI ports anymore. The root hub is a PCIx hub. A translation happens from PCIx to PCI. That translation does not pass the old ISA address space to PCI.
Even though PCI in itself can map the old ISA ports , the root hub does block it. So no matter what you try : the data simply does not arrive at the endpoint.

The on-board LPT does work because it does not sit on the PCI or PCIx hub : it sits on the LPC bus , which is the old-school ISA bus with data and address time multiplexed over reduced pins. The LPC super i/o chip (in case of the optiplex a SMSC device)
converts that back to full ISA and has the things like PS/2 , floppy, printer, serial and other legacy stuff. This conversion is pure hardware.

It may be possible that even older hardware that does not have PCIx could work with plugin cards but i am not going to try. Those machines are so old it is not worth it.

If you get a machine to drive old school programmers and equipment : check that there is an on-board printerport driven from an i/o controller that sits on the LPC bus. They work.

So now i have to find an old-school switch. Or make my own and use analog bus switches like  TI's SN74CBT16212 that have enough channels. i can add additional ESD protection on the ports. make a 1 to 4 switch , or even a 1 to 6 , room for expansion...
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline Zoli

  • Frequent Contributor
  • **
  • Posts: 498
  • Country: ca
  • Grumpy old men
Re: PCI(x) printerports and addressing
« Reply #13 on: July 30, 2022, 09:20:09 pm »
Motherboard: MSI B450-A PRO MAX; manual page 36. Unfortunately, not available anymore, but looks like the MSI PRO (E)ATX motherboards have on-board LPT and COM port(PRO B550-P GEN3 would be an example).
 

Offline free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8517
  • Country: us
    • SiliconValleyGarage
Re: PCI(x) printerports and addressing
« Reply #14 on: July 30, 2022, 10:02:29 pm »
That one may work : https://www.nuvoton.com/resource-files/NCT6796D_Datasheet_V0_6.pdf
That is an LPC i/o controller

But i'm not interested in "build from scratch" ... i got a Dell Optiplex 980 with I7 and 4Gbyte of ram , GT330 graphics card for 60$ ... can;t beat that. Built like a tank

Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf