
How to run any DOS/Windows V64 send tool under Windows NT
=========================================================

 by Stan (stan@sbox.tu-graz.ac.at), 12-august-1997


1. SUMMARY

As we all know, DOS or Windows V64 send tools do not work under NT. That
was until now. Here you have a driver that allows you to run any of those
tools under NT, be it talk64, TPC, or one of the RTool programs. 

2. USAGE

To run your send tools under NT, you must first install a driver on your
system, and then EVERY TIME before you invoke your send tool activate the
driver using the included command file. NOTE: you will need admin privileges
to do any of this. If you are not logged in via the Administrator account,
make sure you are in the power user group or in another group with admin
privileges.

Step 1: Install the driver using LOADDRV.EXE
  Unpack the archive to the directory you want to have it installed in. Do
NOT use a temporary directory, the driver will need to be in that directory
forever. Next, invoke the LOADDRV.EXE program by double-clicking it, a
window will appear. Enter the FULL PATH to the GIVEIO.SYS driver, e.g.
C:\N64\NT\GIVEIO.SYS and click the INSTALL button. Do NOT press Return, that
would exit the program. The status line of the program should now read
"Operation successful". Now, click on start. The status line should still
read "Operation sucessful", if it does you are done and can exit the program
by clicking OK.  Otherwise, if it says "An unexpected error occured" you
have probably specified an incorrect path. Click Remove, correct the name,
then again Install and Start.

Step 2: Activate the driver using ACTIVATE.CMD
  Now the driver is installed, but before you can use your send tool, you
need to activate it. You need to activate the driver each time before you
start your send tool (with some exceptions). To easily activate the driver I
have included a batch file called ACTIVATE.CMD.  You can run it by
double-clicking it in the explorer. It should then open a command window,
amd the text in it should read "You can now start your send tool from this
shell." and a prompt should be below. If there is some error message the
driver is probably installed incorrectly or my script is buggy - go figure
out yourself. Otherwise start your send program now, e.g. invoke TPC.  You
can also run the ACTIVATE.CMD script directly with your send program as
parameter, just enter e.g. 'activate tpc 2 myrom.v64'

Notes:

 * I only tested it on my home PC with NT 4.0 Workstation (Build 1381, no
service packs). Still, should be the same on other versions of NT.
 * NT sets the BIOS area for the parallel ports somewhat strangely, that
means that LPT1 under DOS will probably not be LPT1 under NT. Under NT LPT1
is always at 3BC, LPT2 at 378, and LPT3 at 278. Keep that in mind when
invoking your send tool.
 * I have done most testing with my own send tool, talk64. I had no problems
under NT, should be the same with all other tools. 
 * I also tested TPC and IAS for DOS, worked fine. I did not have any of the
other tools at home, but they should work just as well. If they don't, it is
probably a bug in the send tools.
 * Transfer speed was the exact same as under DOS for me.

3. EXPLANATION

Hell, why do I need a driver to run those tools under NT? They work fine
under 95! Well, the reason is that NT is a real operating system, and direct
hardware access as performed by send tools and a real OS don't mix. That's
in fact a good thing if you want to have an OS. The bad news is that it is a
Microsoft OS, that means if you do need direct hardware access you need to
go through a lot of troubles and create a VXD driver using the Microsoft
DDK. Under Linux any root program just needs to make one function call...
But because it is a Microsoft OS, there is also a way around it using some
undocumented kernel functions. That is what the GIVEIO driver does, it
allows you unrestricted access to the system hardware, which is more than we
wanted as we only need the parallel port, but that's the way things go today
with MS. 
  The other program, LOADDRV.EXE just installs the driver on the fly by
creating the required registry entries. The GIVEIO.SYS driver, once
installed will show up in Control Panel/Drivers as giveio. It needs to be
started from there or via the command line. But that is not enough, it also
needs to be 'activated'. I have no idea why that is, but it is activated by
calling "debug \\.\giveio".  After that all programs started from this shell
will have full access to the hardware ports. Invoking programs other than
debug with the \\.\giveio cookie does not activate the driver, I do not have
the slightest idea what is really going on, but then I do not care at all. 

4. CREDITS

Please note that I have neither written the GIVEIO.SYS driver nor the
LOADDRV.EXE program. I just found them, made use of them, and then gave them
to you. The credits for these programs go to: 

 GIVEIO.SYS by Dale Roberts, 
       available via http://www.dc.ee/Files/Programm.Windows/directio.zip
 LOADDRV.EXE by Paula Tomlinson, 
       available via ftp://ftp.mfi.com/pub/windev/1995/may95.zip

5. GREETINGS

Greetings to all people in the N64 scene, especially those in #n64dev. In
particular, these are (in no special order): Corsair (yeah), Nagra, Stumble,
Datawiz, Super_Doc, Sispeo, Widget, Twinsen, RIP, Silo, Fractal, Jovis,
Uxorious, the German speaking folks: Hartec, Rene, KidStardust, Unit,
Ayatollah, and of course Mike. Sorry to all I forgot.

