Link to home
Start Free TrialLog in
Avatar of uriahsky
uriahsky

asked on

DOS Dongle bypassing

I have an old piece of test equipment. A Protech 1990 In-Circuit Functional IC Tester. It was made in the 1990's and the company is long gone.  There is barely a trace of it on the web. It uses a SSI Activator on the Parallel port and all of the programs run under DOS.  The dongle doesn't seem to be working.

I have looked at the files and the programs and I can't see how the program access the dongle.  There are no driver files related to the dongle.  There is a PORTS.DAT file that has some numbers in it, and in the .EXE file that requires the dongle there is a reference to the PORTS.DAT file. That is the only thing I can find.

How would the .EXE file access the dongle?  Is there an assembly  instruction that goes directly to the parallel port?

I have looked at the program under IDA and am not sure how it confirms that the dongle is there.  

I first want to make sure it is trying to access the parallel port.

Thank you
Russ
Avatar of Steve Knight
Steve Knight
Flag of United Kingdom of Great Britain and Northern Ireland image

What are the numbers in the ports.dat file - are these the hex addresses of the LPTx: port and the interrupt it is set to perhaps?  Are you running this on an old machine with physical printer port and real DOS as anything later than Windows 9x is likely to block access to it.
Old DOS software like that often directly accessed the hardware dongle.  In DOS there was nothing to stop them.  I still have one of those on a DOS machine that makes me a lot of money.  The software will recognize it on any standard LPT port.  http://en.wikipedia.org/wiki/LPT
Avatar of uriahsky
uriahsky

ASKER

The ports.dat file consists of the following.

888
0
0
171
1

It is running on a 80286 that has five EISA slots and 3 ISA slots. It does have a printer port.

Do you think those numbers  give any clues?  I have two machines and the other PORTS.DAT files.

888
0
0
2230
22

It is laid out just like that.

Are/is there any particular code I should look for when the EXE tries to access the parallel port?  I have disassembled the exe file in ADA but I am not that familiar with assemble language.
Thanks
Russ
SOLUTION
Avatar of Dave Baldwin
Dave Baldwin
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
It is a LONG time since I dabbled in x86 assembler,  early DOS days using Quick Basic and bits of assembler and 6809/6502 before that ... but if it talks directly to the printer port you will see it referencing port 378h, probably with a MOV command to put the data into a register then OUT to write to the port etc. i.e. you are going to see 78 and 03 for the port, though presumably in this case it will come from the config file.

DaveBaldwin I guess is in a better position if he has the same kit?
888 is the address for the LPT1 port. That is very interesting, I didn't think it would be that easy to find a link between the dongle and this file.

So the EXE looks to the PORTS.DAT file to find the address of where the dongle is, but the other numbers are still a mystery.

I will look search the code to see if I can find references to 378h.  I thought maybe there was some kind of specific unique assembly instruction that deals with the parallel port but it can be as simple as a MOV command?  

This machine has about ten to fifteen different separate DOS files that runs the machine.  They are all under a menu system but they are all separate.  I have two versions of some of them. One that works without a dongle and one that requires the dongle.  I looked at them under IDA and the difference is in the beginning of the code. The one without the dongle is missing a few blocks of code.

I quickly got lost looking at that first block of code because of all of the sub routines but I would think the answer lies in that missing block of code. But then it can't be too simple.  I am sure they had some tricks and ways to hide the dongle routine.  Can I post the block of code and maybe someone could give me their opinion on what the code is doing? I will check the BIOS to see how the port is configured and do some more tests with Lpt1.
Thanks again,
Russ
Well generally speaking you either have dos interrupt calls having configured the relevant registers first, or you program the LPTx port to the right mode then send or retrieve data from the port with MOV etc. to get the data and address into registers then OUT etc.

Like I say we are talking getting on for 20 years ago here!
Direct I/O instructions are going to be IN or OUT instructions.  It will most likely be preceded with a MOV DX,378h instruction.  It could be simply IN AX,378h.
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial