Installing (my) SBS (formerly Bit3) Model 616,617,618,620
driver files on Windows NT. & Windows 2K

by 
R. Angstadt 
11/28/2001
(last changed: 7/30/2007)

Introduction (Goal):
To install my drivers for the SBS (formerly Bit3) model 616,617,618,620 PCI bus to VME bus on an Intel (only) machine running Version 4.x and/or Win 2K or Win XP. (Sorry nothing tried for VISTA (try XP and let me know if it works! I don't have a VISTA machine and/or SDK/DDK ect. for it anyway... no plans at present for this.))(Sorry: not written to HAL specs and I don't have any non-Intel machines to test on: basically built to go fast at the expense of working everywhere.)
(WARNING: One may install the SBS drivers and mine on the same machine but be sure to NOT run them simultaneously. (Be sure to iniatialize (again) when switching back and forth between applications that use one driver and then the other to try to keep things determinate... or just pick one and just use that one else garbage can result as they will both talk to the same hardware with indeterminate results.)

Assumptions are you have (full: including being able to edit the registry) administrator privledges on the target machine and that NT and/or 2K are installed in the following (root) path: "c:\winnt". (if not then please substitute your root path "c:\winnt" as needed below.)

1. Copy files you need.

[ 7/30/2007 update.
XP is not listed explicitly in the instructions below but
it can be installed by substituting base directories and for
XP *.sys file installs please follow the Win 2K (branch) install instructions.
For exmaple the instructions below give the source as
"\d0server4\users\angstadt\b6nt\"
so substitute the latest version on would use:
"\d0server4\users\angstadt\b6xp_v2"
as the new source.
The hightest/latest version for Win 2K is
"\d0server4\users\angstadt\b6nt_v3" etc.

In cases where a file is not under the newer directory root than go back
to the original directory.. It means it was not changed. (The reason for this
complication is that I am out of quota on this server.) For example givio.sys
is unchanged throughout so that one is still the original as below.

There may be some different "mapmem.sys" lurking around..
some don't support dma. The good one is as stated in the section below and also here:
"\d0server4\users\angstadt\mapmem\sys\I386\mapmem.sys"

There are also newer ones for the 810 in B810. it only does longword (32 bit) dma's
and is supposed to also do hugeword (64 bit) dma capability but i have
never managed to make that work (unsuported.. though the source is there
if you want to try to make it work. Unfortunately the 810 no longer does
16 bit dma. This is a "feature" of the hardware unless SBS fixed it...
As of about a year ago (the ones we bought anyway) so unless they've changed
it the 810 does not support 16 bit dma.

There are some versions ending in "big". This refers to
the maximum size of the dma safe buffer in mapmem.sys, mapbig.sys ect.
the normal mamem.sys is 64k bytes. that means that the dma cannot be longer
than 64 kbytes. So if one needs/wants a bigger DMA then one wants to use
"d0server4\users\angstadt\b6xp_V2BIG"
as the root and
"d0server4\users\angstadt\b6xp_V2BIG\sys\obj\I386\mapbig.sys"
for dma's up to 512 kilo-bytes in length. (Although the SBS boards are scatter/gather capable of
much larger sizes...for the sake of software simplicity I do not use this feature(s)...
And since most of needs are small (64K) and some of our machines were originally limited..
and I wanted to use the simpler"continuguous DMA safe buffer... it is most likely to work
asking for as little as possible.)

(You can use an XP version on Win 2k if u want... the B810 version has the larger dma byte length
limitation by default.)

There are more details in various "aReadme.txt" and possibly "ntdv617.ver" (text)
files under the sub-directory of interest. The later versions include
improved DMA (tuneable) performance and microsecond precision timing (delays
and profiling) capability when run on Pentium II's or above.
Hope this helps. End of 7/30/2007 update.]
Copy from:  To:  Notes/Comments 
d0server4\users\angstadt\b6nt\sys\giveio.sys  c:\winnt\system32\drivers\giveio.sys  recompile of dale roberts giveio via ddj http://www.ddj.com/ftp/1996/1996.05/directio.zip/
d0server4\users\angstadt\mapmem\sys\i386\mapmem.sys  c:\winnt\system32\drivers\mapmem.sys  version in d0server4\users\angstadt\b6nt\sys\mapmem.sys does not support dma 
d0server4\users\angstadt\b6nt\sys\instdrv.exe  c:\any_(temp)_directory_you_want\instdrv.exe  (useful) Microsoft utility to install any *.sys driver (changes registry!) 
d0server4\users\angstadt\b6nt\bntdv617\debug\bntdv617.dll  c:\winnt\system32\bntdv617.dll  ring3 (user) driver dll that calls giveio.sys and mapmem.sys 
d0server4\users\angstadt\b6nt\bnt617ex\debug\bnt617ex.exe  c:\b6nt\bnt617ex.exe  Window simple peek/poke program to test bntdv617.dll (and all that it calls) 
d0server4\users\angstadt\b6nt\xlsnt617\EXCEL8.XLB  c:\winnt\EXCEL8.XLB  Optional: this contains a custom Excel Toolbar for Initing the Bit3 which some sheets may use. 

2. Install the driver (in the registry still logged in as administrator):
Open up a command prompt and from the sub-directory where "instdrv.exe" is and type:
    "instdrv giveio c:\winnt\system32\drivers\giveio.sys"
    "instdrv mapmem c:\winnt\system32\drivers\mapmem.sys"

You should get back 3 lines with "success..." for both giveio and mapmem in the
first word of each line. If you don't then something went wrong....
You can undo whatever went wrong by typing in the command prompt:
     "instdrv giveio remove"
     or
     "instdrv mapmem remove"
     ("instdrv ?" {will list help/options}
(whichever didn't go right) and repeat these steps as necessary until the filespech is correct the way you want it and with "success.." in the first word of each line for both giveio and mapmem.

This says to NT V4.x and/or Win 2K that there is a driver with the logical name of
"giveio" (or "mapmem") and it can be found in c:\winnt...blah blah blah (wherever!). So it puts a
"giveio" (or "mapmem") entry in the registry which will be needed later. (Better than doing all of the registry editing by hand as in step 3.b. below.)

3. Set the drivers to start at boot time automatically:
  a.  If You are running NT V4.x then drill down to "Devices"
      by double clicking each of the following (starting from the "Desktop") on:
         "My Computer"
           "Control Panel"
               "Devices"
     then scroll down to "giveio" and select it by clicking on it and then click on the Startup"
     button and then click on the "Automatic" (radio) button and then the "OK" button and then "Close" button.
     then scroll down to "mapmem" and set it to "Automatic" as above.
     (Note: if giveio and/or mapmem is not there then reboot and repeat this step (only for the one(s) not there). If it is still not there then
     go back to the previous step.)

  b.  If you are running Win 2K it's almost easier to edit the registry than to use the new interface (they've removed the "devices" entry from the control panel.)   If You are running Win2k then drill down to "System"
      by double clicking each of the following (starting from the "Desktop") on:
         "My Computer"
           "Control Panel"
              "System"
                 "Hardware" (single click from now on as they are tabs and buttons)
                  "Device Manager"
                    "View"
                      "Show hidden devices"
                         on "Non-Plug and Play Drivers" make sure that branch is expanded (click on "+" if not)
                           right click on "giveio" and select"properties"
                             then click on the "Driver" tab
                               finally on the "Startup" pull down (sub-)window select "Automatic". ("Type" appears to the left of it").
after this is done click on the "OK" button. do the same for "mapmem" so it is in "Automatic" as well. Both of these should appear under the "Non-Plug and Play Drivers" gray diamond.
     (Note: if giveio and/or mapmem is not there then reboot and repeat this step (only for the one(s) not there). If it is still not there then
     go back to the previous step.)
     OR You can (still) do the last step by editing the registry
     (with regedit or whatever) as administrator and do a
     search for "giveio" which for NT should be in:

     "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\giveio"

     (note that the above is exact on my machines (without the quotes) butt if one is
     running from a different "ControlSet" than that obviously should be changed instead and/or as well!
     (if in doubt all instances should be edited).)

     You need to change the "Start" value from 0x03 (manual) to 0x02 (automatic).

     Repeat whatever you did for "giveio" for the "mapmem" driver as above.
     (Both giveio and mapmem should now be set to "Automatic".
     This means that they will be started at boot time which leads us
     to the next and last step!)

4. Reboot.
After booting you're done! You can now run bnt617ex.exe to test the installation and copy whatever spreadsheet to a local directory and run it o.k.

Note that failure to reboot will mean the *.sys driver(s) will not be started so that a givio.sys or mapmem.sys "connect failed" message will occur and that somehow "Automatic" in step 3 above means the driver(s) should start sometime during the boot sequence.

Caution: mapmem.sys has single threading protection so be sure to close bnt617ex.exe before trying to use a spreadsheet or other program that uses bntdv617.dll (and vice-versa) else things won't work. (A message saying that it cannot connect to "mapmem.sys" will come up when the bit3 is initialized.) if this happens in Excel and bnt617ex.exe is not running close Excel and restart it as something has been corrupted. This usually only happens if a VB macro is stopped via ctrl-break. (My unproven theory is that that VB somehow causes bntdv617.dll and its mapmem.sys connection to be broken (possibly by reloading (another instance) bntdv617)... once broken the single-threading in mapmem.sys blocks the thread (second instance of bntdv617) from (again) reconnecting. Although this can be annoying especially when developing/debugging VB macros, restarting Excel quickly recovers. (I've left the thread protection in mapmem as a guard to prevent different callers from getting indeterminate results from potential multiple users applications.)

updated May 8,2007 (removed instdrv incorrect switch delimiter and added the "instdrv ?". r.a.

last updated July 30,2007 (added rudimentary substitution info about XP and other options.)