Remapping parallel port addresses

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
This problem is related to my new pc but I wanted to start a new thread in case others are experiencing the same issues, rather than burying this deep in the new pc thread. Here's the issue in a nutshell-I can't get my microcontroller programmer to work on my new machine. I more or less solved all the other legacy issues associated with moving from my vintage 2003 box to the new one. I have my old XP install on a VM, so migrating old software at this point is a non-issue. I even made a DOS 6.22 VM just for the fun of it, although I doubt it will ever see any practical use. Anyway, the problem is the software for my microcontroller programmer looks for a parallel port at the three standard parallel port addresses-0x0378, 0x0278, and 0x03BC but Windows 7 allocates non-standard parallel port addresses to PCI parallel port cards with no way to manually change them. I've already tried 2 cards with no success. The one Merc sent assigns 0xE050 and the Lava parallel card I bought on eBay assigns 0xE000. I even tried editing the microcontroller software with a hex editor and replacing one of the standard addresses with the one Windows 7 assigned. Still no luck. I've come to the conclusion that the only way I can potentially make this work is to intercept calls for, say 0x0378 from my microcontroller programmer software and redirect them to the Windows 7 parallel port address, and do the reverse in the other direction. Is there any software which would allow me to do this? The company which made the programmer is long out of business. That obviously means zero chance of getting updated software which would work with Windows 7. I thought perhaps a VM might automatically do this, but my XP VM doesn't even see the physical parallel port (although it sees the motherboard's serial port just fine because it's a legacy address which XP can deal with).

I'm really surprised this issue hasn't been solved. From my reading it seems many older parallel port dongles are affected by this as well.
 

mubs

Storage? I am Storage!
Joined
Nov 22, 2002
Messages
4,908
Location
Somewhere in time.
A couple of quick suggestions:
1) Would using a PCI-E parallel port card help (if there is such a thing)?
2) Would using a USB->Parallel port converter help? I should have one or two in a box somewhere I could ship to you if you need them.

Maybe Win7 will treat the above differently.

Also, you did mention you tried XP Mode, but it is possible it may be more compatible, considering that MS released it expressly for compatibility with older software.
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
From what I've read, a PCI-E parallel port card (yes, such a thing exists) would have the same issues as a PCI parallel port card. Basically, it would end up with whatever address the BIOS or O/S assigned to it, with no way to manually change it.

A USB->parallel port converter is just about guaranteed not to work with a device like I have. I've read tons of reviews on Newegg, many of which state there are issues even getting them to work with printers. Most drivers for USB to parallel port converters give "USB printing services" instead of a genuine LPT port.

I could try to see if it'll work in XP Mode instead of a VMWare XP virtual machine but I'm dubious of success. Most of my reading shows XP Mode to be less compatible with parallel ports than VMWare.

This is about the only hardware solution possibly likely to work, and even then I have no guarantees of success.

I still think this problem can be solved in software but so far I've yet to come across a solution. I just downloaded version 1.7 of my programmer software. I have 1.6 installed. 1.7 was the last version before the company went out of business. I'll see if this works. If not, I may face two choices-spending about $70 to try the Startech card, or finding a new programmer which uses usb. There are a lot of these on eBay, but most only program a small subset of chips compared to my existing programmer (Needham Electronics EMP-11)
 

CougTek

Hairy Aussie
Joined
Jan 21, 2002
Messages
8,729
Location
Québec, Québec
Some BIOS still have an address assigned for the parallel port even when the motherboard doesn't have the connector for it on the back plate. Go in the BIOS and try to find the address for the legacy ports and then change it to something else. If my theory is right, it might free the standard address for the add-on controller.

This is only a theory. I've never had to do this.
 

Chewy509

Wotty wot wot.
Joined
Nov 8, 2006
Messages
3,357
Location
Gold Coast Hinterland, Australia
IIRC, (from reading the PCI spec many-many moons ago), any PCI or PCIe card won't touch the legacy ISA port address spaces for compatibility reasons. USB adapters don't work (I've used just about every model out there, and they don't really work). AFAIC, that $70 card will be about it.

At my last job, we needed PCs with LPT ports that operated on the legacy ISA port range for receipt printers for Point of Sale systems. The Epson OPOS software only worked on the legacy LPT ports or you had to switch to the USB printer models ($$$). Our solution was to get HP RP5700 desktops (which are designed for Point of Sale) and came with a premium price tag, but they had a LPT port on IO Port 278 and worked like a treat, as at the time we couldn't find any adapters to work with OPOS. (Yes, it was easier to sell someone a new PC, than replace a 24mth old receipt printer - go figure).

From what I can tell, you're in the same position with the parallel port situation as what we had with OPOS. It had to be on IO Port 278/378/3BC, or it would not work...
 

mubs

Storage? I am Storage!
Joined
Nov 22, 2002
Messages
4,908
Location
Somewhere in time.
I used a USB-2-parallel converter with my parallel printer for about 5 years with no problems. It's when I bought a new printer a year ago that I went native USB-2-USB.

I'd have to agree that the Startech card is your best bet.
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
IIRC, (from reading the PCI spec many-many moons ago), any PCI or PCIe card won't touch the legacy ISA port address spaces for compatibility reasons. USB adapters don't work (I've used just about every model out there, and they don't really work). AFAIC, that $70 card will be about it.

At my last job, we needed PCs with LPT ports that operated on the legacy ISA port range for receipt printers for Point of Sale systems. The Epson OPOS software only worked on the legacy LPT ports or you had to switch to the USB printer models ($$$). Our solution was to get HP RP5700 desktops (which are designed for Point of Sale) and came with a premium price tag, but they had a LPT port on IO Port 278 and worked like a treat, as at the time we couldn't find any adapters to work with OPOS. (Yes, it was easier to sell someone a new PC, than replace a 24mth old receipt printer - go figure).

From what I can tell, you're in the same position with the parallel port situation as what we had with OPOS. It had to be on IO Port 278/378/3BC, or it would not work...
Yep, that's the problem in a nutshell. From my reading, lots of other devices have this issue. It's a shame that modern motherboards without parallel ports won't let add-on cards use the legacy addresses. They took something which was working fine and broke it.

I used a USB-2-parallel converter with my parallel printer for about 5 years with no problems. It's when I bought a new printer a year ago that I went native USB-2-USB.

I'd have to agree that the Startech card is your best bet.

Amazon has it for $43.24 with free shipping. Hopefully I can return it without too much hassle if it doesn't work. Although I'm philosophically against spending more than maybe $10 for a parallel port card, the only alternative at this point seems to be junking a perfectly good programmer which I'm used to using and purchasing a less capable one for a lot more than $43. Another alternative which I'm less than thrilled about would be to dual boot between Windows 7 and Windows 98. The Lava card does allow setting legacy addresses, but only in Windows 95/98.

BTW, I just read that VMWare Player doesn't support add-on parallel cards at all while XPMode has no option to add a parallel port. It looks like I'm out of luck going the VM route.

Some BIOS still have an address assigned for the parallel port even when the motherboard doesn't have the connector for it on the back plate. Go in the BIOS and try to find the address for the legacy ports and then change it to something else. If my theory is right, it might free the standard address for the add-on controller.

This is only a theory. I've never had to do this.
I tried looking without success for the legacy addresses in the BIOS. I even disabled the serial port but I still end up with the same address for my parallel port card.
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
Just to update things I bought the StarTech card and the programmer still doesn't work. I set the I/O address to 0378 via DIP switches on the card, and then followed the instructions. I had to manually set the I/O range in device manager. 0378-037F apparently caused a conflict when I first set it but upon rebooting device manager said no conflicts. Still, the software fails to find the programmer, even though the parallel port is at one of the legacy I/O ranges. I'm fresh out of ideas at this point. The problem might be that the device driver for the programmer is 32-bit, not 64-bit. I haven't yet moved the new motherboard into the case because I need the programmer working before I do that.

If I could get my XP VM to recognize the parallel port (which it should because it's at a legacy address) then I might be able to get the programmer to work from within a VM. That's my last hope other than going the dual boot route, which I'd rather not do. So far though, VM Player is refusing to recognize my parallel port card, even though for all intents and purposes the I/O range is the same as an onboard parallel port would be.

If the Startech card turns out to be useless, I hope I don't have a lot of trouble getting my money back.

Would it be so hard for MB manufacturers to stick a simple parallel port header on all new motherboards by default? Seriously, my motherboard has a serial port header even though serial ports are even more obsolete than parallel ports. Why couldn't they put on a parallel port instead?
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
Serial port headers seem to still be on many motherboards these days. My new MB has one also. It seems parallel port headers, if they're available at all, are only on micro ATX motherboards.
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
Why don't you buy a new programmer?
I don't really have that kind of money right now. I can get USB programmers on eBay for under $50 which can program only a subset of the chips this one does. To get something comparable, it would be $500 at least, plus the learning curve associated with new hardware (which I don't have time for right now). It would also annoy me on many levels to junk a perfectly good programmer just for lack of a compatible parallel port.

And now I have another potential issue-no floppy on the new machine. Are there USB floppy adaptors which could plug into the 34-pin floppy connector on the floppy drive I already have in my case, and then connect to one of the motherboard's internal USB headers? All I've seen are external USB floppy drives. As for the reason why-unfortunately some of my customers still send me stuff on floppy disks and/or want files back on floppy disks. Yes, I know it's 2012. I even have a customer who is still using a vintage 1990 386 with Windows 3.1. I wish I was kidding but I'm not. I don't know what the guy will do if it ever breaks.
 

LunarMist

I can't believe I'm a Fixture
Joined
Feb 1, 2003
Messages
17,497
Location
USA
I don't really have that kind of money right now. I can get USB programmers on eBay for under $50 which can program only a subset of the chips this one does. To get something comparable, it would be $500 at least, plus the learning curve associated with new hardware (which I don't have time for right now). It would also annoy me on many levels to junk a perfectly good programmer just for lack of a compatible parallel port.

And now I have another potential issue-no floppy on the new machine. Are there USB floppy adaptors which could plug into the 34-pin floppy connector on the floppy drive I already have in my case, and then connect to one of the motherboard's internal USB headers? All I've seen are external USB floppy drives. As for the reason why-unfortunately some of my customers still send me stuff on floppy disks and/or want files back on floppy disks. Yes, I know it's 2012. I even have a customer who is still using a vintage 1990 386 with Windows 3.1. I wish I was kidding but I'm not. I don't know what the guy will do if it ever breaks.

I would just maintain an old computer (perhaps a laptop) with XP and dedicate it to the purpose.
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
I would just maintain an old computer (perhaps a laptop) with XP and dedicate it to the purpose.
I'm going to put my A7N8X-E and power supply in another case for exactly that reason. I'd still like to be able to do almost everything on my new machine. I don't care much if I can't read floppies-I only need to a few times a year. The programmer however I might use every day in a busy week.
 

mubs

Storage? I am Storage!
Joined
Nov 22, 2002
Messages
4,908
Location
Somewhere in time.
Just to update things I bought the StarTech card and the programmer still doesn't work. I set the I/O address to 0378 via DIP switches on the card, and then followed the instructions. I had to manually set the I/O range in device manager. 0378-037F apparently caused a conflict when I first set it but upon rebooting device manager said no conflicts. Still, the software fails to find the programmer, even though the parallel port is at one of the legacy I/O ranges. I'm fresh out of ideas at this point. The problem might be that the device driver for the programmer is 32-bit, not 64-bit. I haven't yet moved the new motherboard into the case because I need the programmer working before I do that.
Have you tried taking out the Startech, cold rebooting, checking Device Manager, then putting the card back in and rebooting?
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
I uninstalled VMPlayer and reinstalled it. Apparently it only installs the parallel port driver if a parallel port is present during installation (I didn't have one the first time I installed it). Now my VMs recognize the Startech parallel port (but not the other ones which don't have standard addresses). Unfortunately, the programmer still won't work from within a VM. It might be a matter of just finding the right set of LPT parameters for the VM.
 

timwhit

Hairy Aussie
Joined
Jan 23, 2002
Messages
5,278
Location
Chicago, IL
I uninstalled VMPlayer and reinstalled it. Apparently it only installs the parallel port driver if a parallel port is present during installation (I didn't have one the first time I installed it). Now my VMs recognize the Startech parallel port (but not the other ones which don't have standard addresses). Unfortunately, the programmer still won't work from within a VM. It might be a matter of just finding the right set of LPT parameters for the VM.

Have you tried VirtualBox?
 

Chewy509

Wotty wot wot.
Joined
Nov 8, 2006
Messages
3,357
Location
Gold Coast Hinterland, Australia
Also have you confirmed which mode the card is using? SPP, EPP or ECP? And what the software needs. (Also confirm the IRQ assigned)

On the windows side, are you running the software as Administrator (as in right click on the executable and selecting Run As Administrator) and set the compatibility to something crazy old like Windows 95 (which allows greater flexibility in allowing software to talk directly to hardware)?

PS. Some systems expect the following... (others expect LPT1 to be at 0x378 )
Code:
PORT NAME 	Interrupt # 	Starting I/O 	Ending I/O
LPT1 		IRQ 7 		0x3BC 		0x3BF
LPT2 		IRQ 7 		0x378 		0x37F
LPT3 		IRQ 5 		0x278 		0x27F
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
I finally "solved" this issue, albeit not in the way I had initially hoped for. Before proceeding any further, I checked to make sure the parallel port was working by connecting my Samsung ML-2510. It turns out that the StarTech card didn't work at all when set to the "legacy" addresses but it worked just fine using plug-and-play. Of course, I needed a legacy address to get my programmer to work (or so I thought-more on that later). Anyway, the next step was to see if I could get the StarTech card to work in XP (native XP, not an XP VM). I installed the necessary drivers to enable my XP install to boot from my new motherboard. So far, so good. Again, the StarTech card just plain didn't work when set to legacy addresses (but worked just fine as plug-and play). For whatever reason, regardless of O/S, it seems a parallel port card can't be assigned legacy addresses on this motherboard, even though device manager showed no conflicts (in both XP and 7).

Next thing to try was one of the other cards ( the Moschip 9805 Merc sent and the Lava card I bought on eBay). Both are plug-and-play only which means non-legacy addresses. Of course, neither of these worked because the microcontrolller programmer software was looking only at the three legacy LPT addresses. I decided to try my old idea of editing the executable with a hex editor, and changing the address to match whatever address Windows assigned to the card. This didn't work under 7 but I figured it was worth a shot. Bingo! Works a treat. Either card can run the programmer so long as I edit the executable with the correct I/O address.

Why did this work under XP, but not in 7, and not with an XP VM under 7? The driver which communicates with the parallel port is 32-bit. I had hoped that a VM might make the parallel port accessible in such a way that the 32-bit driver in the VM would be able to communicate with the parallel port controlled by Windows 7, but I guess this just isn't possible. Even if the StarTech card worked with legacy addresses under 7, it wouldn't have mattered. I still would have needed a 64-bit driver to communicate directly with the parallel port. So yes, the programmer works, but I need to boot into XP in order to make it work. Nothing I could conceivable do short of writing a 64-bit driver will make it work under 7. Looking on the bright side, at least I don't need to run another machine just to use the programmer.

Unfortunately, the StarTech card was neither useful nor needed here. Now on to see if Amazon will refund my money.
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
What MCU's are you trying to program that they require a parallel port programmer?
Mostly PIC microcontrollers but I occasionally need to program oddball EPROMs and other stuff for which USB programmers aren't available. The EMP-11 programs a huge range of chips. If all I did was PIC microcontrollers then USB programmers are readily available for about $15. In fact, I might get one or two of those anyway just to see how they work.
 

jhallows

What is this storage?
Joined
Mar 24, 2013
Messages
2
Next thing to try was one of the other cards ( the Moschip 9805 Merc sent and the Lava card I bought on eBay). Both are plug-and-play only which means non-legacy addresses. Of course, neither of these worked because the microcontrolller programmer software was looking only at the three legacy LPT addresses. I decided to try my old idea of editing the executable with a hex editor, and changing the address to match whatever address Windows assigned to the card. This didn't work under 7 but I figured it was worth a shot. Bingo! Works a treat. Either card can run the programmer so long as I edit the executable with the correct I/O address.

Can you please give some details what EMP11 file you edited and what hex address in the file did you change? I have the same problem.

Thanks.
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
Can you please give some details what EMP11 file you edited and what hex address in the file did you change? I have the same problem.

Thanks.
Look for the file EMP.EXE. It should be in the folder "C:\Program Files\nei\EMP Device Programming Software" if you did a normal install. Now open the file with a hex editor such as Neo Hex Editor. Use the search function of the hex editor to find the text string "Auto Search" ( it was at offset 172DC0 in my version of emp.exe). Right after that you'll see the three legacy parallel port addresses: 0x0278, 0x0378, and 0x03BC. Change one of these to match the address of the parallel port card in your machine. So long as you're using XP or an earlier O/S, this should work. It won't work in Windows Vista, 7, or 8.
 

jtr1962

Storage? I am Storage!
Joined
Jan 25, 2002
Messages
4,375
Location
Flushing, New York
Unfortunately, the StarTech card was neither useful nor needed here. Now on to see if Amazon will refund my money.
To update everyone on this, no problems getting my money back from Amazon. They didn't even wait until the card arrived to refund my money. As soon as they saw that the package was mailed with the shipping label they gave me I was issued a refund.
 

jhallows

What is this storage?
Joined
Mar 24, 2013
Messages
2
Look for the file EMP.EXE. It should be in the folder "C:\Program Files\nei\EMP Device Programming Software" if you did a normal install. Now open the file with a hex editor such as Neo Hex Editor. Use the search function of the hex editor to find the text string "Auto Search" ( it was at offset 172DC0 in my version of emp.exe). Right after that you'll see the three legacy parallel port addresses: 0x0278, 0x0378, and 0x03BC. Change one of these to match the address of the parallel port card in your machine. So long as you're using XP or an earlier O/S, this should work. It won't work in Windows Vista, 7, or 8.

Thank You very much for this. It solved my problem.
 
Top