PCI(x) printerports and addressing - Page 1
Forum section: electronics / general

author: free_electron
author_rank: Super Contributor
timestamp: July 15, 2022, 04:29:21 pm
content: i'm trying to get printerports running on modern computers under WINDOWS XP/7/10please 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 pciwhy ? 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)

author: Nominal Animal
author_rank: Super Contributor
timestamp: July 15, 2022, 05:22:54 pm
content: 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 thehostWindows 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, VirtualBoxemulatesthe 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.Hereis a VirtualBox thread on the subject.

author: Foxxz
author_rank: Regular Contributor
timestamp: July 15, 2022, 05:34:24 pm
content: 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.

author: free_electron
author_rank: Super Contributor
timestamp: July 15, 2022, 05:34:28 pm
content: 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 devicesLPT rangesLPT1 : 378.. 37F and 778 .. 77FLPT2 : 278.. 27F and 678 .. 67FPRN / LPT2 : 3BC.. 3BE and 7BC .. 7BEa true printerportt only needs 3 consecutive addresses (like PRN) , but the extended modes expand those.the IC10 supports translation foroneprinterport to the LPC bus, so LPT1 or PRN on a LPC controller should work fine on computers that have the ich10 (Q43/Q45 based)

author: free_electron
author_rank: Super Contributor
timestamp: July 15, 2022, 05:39:38 pm
content: 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

author: David Hess
author_rank: Super Contributor
timestamp: July 15, 2022, 06:10:55 pm
content: 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.

author: Nominal Animal
author_rank: Super Contributor
timestamp: July 15, 2022, 06:18:53 pm
content: If your computer haslotsof (single-core) processing power,bochsIA-32emulatorwould 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.

author: free_electron
author_rank: Super Contributor
timestamp: July 15, 2022, 06:39:38 pm
content: 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)

author: Nominal Animal
author_rank: Super Contributor
timestamp: July 15, 2022, 07:08:24 pm
content: 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.

author: mariush
author_rank: Super Contributor
timestamp: July 15, 2022, 09:27:35 pm
content: 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/131361951592There's models that still have the printer port, for example the Asus models have an extra L in the nameASUS M5A78LLE :https://www.ebay.com/itm/283882066250orhttps://www.ebay.com/itm/384347623448or the matx versions ASUS M5A78L-MLXhttps://www.ebay.com/itm/263908829347Gigabyte has an extra P in the title ex if my memory is correct Gigabyte GA-78LMT-S2PT :https://www.ebay.com/itm/125350462907Socket 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/373987126279You get cpu and motherboard for under $50, if you don't mind the low performance it could be a good value.

author: free_electron
author_rank: Super Contributor
timestamp: July 15, 2022, 09:28:17 pm
content: two other things have come to lightThe (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.

author: free_electron
author_rank: Super Contributor
timestamp: July 15, 2022, 09:36:25 pm
content: Quote from: mariush on July 15, 2022, 09:27:35 pmi'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...

author: free_electron
author_rank: Super Contributor
timestamp: July 30, 2022, 08:40:16 pm
content: 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 worksTried :PCIx printerport : does not workPCI mos9008 : does not workPCI Sunix 400x : does not workPCI Startech with hardware switches to lock address to 378 278 or 3bc : does not workLoaded 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'tSo 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...

author: Zoli
author_rank: Frequent Contributor
timestamp: July 30, 2022, 09:20:09 pm
content: 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).

author: free_electron
author_rank: Super Contributor
timestamp: July 30, 2022, 10:02:29 pm
content: That one may work :https://www.nuvoton.com/resource-files/NCT6796D_Datasheet_V0_6.pdfThat is an LPC i/o controllerBut 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