Menu:
This page briefly covers the WSGEN and SHGEN utilities used for making IPX.COM.
Prior to sometime in 1990 network drivers for the NetWare client were distributed as object files (.obj). The IPX/SPX driver was also delivered as an object file. These are basically just the raw output from an assembler or C compiler and aren't actually directly executable on their own. To make an EXE (or COM) you take all the object files that make up a program and give them to the linker which combines them into a single EXE.
Rather than making the user run something like nlink -o1 ipx.com ipx.obj sne2000.obj to make ipx.com and then do whatever is required to configure the thing Novell provided a user-friendly tool that asks you a few questinos then runs the linker for you. This tool is SHGEN or, in NetWare 3.11, WSGEN.
SHGEN and WSGEN are basically both the same thing. They look very slightly different but work exactly the same way. Pick your network card, pick the configuration, confirm your selection, wait for the linker to do its thing, done. WSGEN is the newer tool but its so similar to SHGEN I've really no idea why they built it - SHGEN seems perfectly fine.
Its worth noting here that IPX.COM and all the things for building it (WSGEN, SHGEN, ipx.obj) are totally obsolete. Even more obsolete than the NETX client itself. Sometime in 1990 Novell introduced IPXODI.COM as a replacement for IPX.COM that lets you use ODI drivers - no special configuration utility or linker required!
So this page is really just me satsfying my curiosity. This is the first and probably the last time I'll use either SHGEN or WSGEN as if you've got ODI drivers for your network card thats really just easier than this process.
I'm doing this all in an emulator (86Box) as due to current covid restrictions I'm not able to fetch a real PC AT clone out of storage.
I'm emulating an IBM PC/AT with 640K of RAM and CGA Video.
I've given it a pair of floppy drives - 1.2MB and 360K
Network interface is an NE2000 and I'm using PCap as SLiRP is no good for IPX.
And this is the configuration for the NIC.
And on the emulated 10MB MFM/RLL hard disk I've got a clean install of MS-DOS 3.21, the oldest copy of MS-DOS 3.x I've got.
This is the tool used on NetWare 3.11 and apparently NetWare 2.2 as well. It appears to be new with these versions of NetWare with prior versions using SHGEN.
I'm using an image of the "DOS/DOS ODI Workstation Services WSGEN" disk that came with my copy of NetWare 3.11. Note that this process modifies the WSGEN disk so you really need to use a copy - never the original disk.
Here is the contents of the disk! The .OBJ files are the provided network drivers which will be linked with IPX.OBJ to produce a suitable IPX.COM for this computer.
To start, run wsgen from the floppy disk.
WSGEN slowly starting up...
The familiar CWORTHY interface, in CGA
Press enter to continue.
Please wait... This took a while
Select your network card and press enter. An NE2000 is being emulated here.
Select the cards configuration and press enter. IRQ3 and I/O Base 300h match the emulators configuration.
If the configuration is correct, hit enter to being linking object files!
Linking...
Configuring...
Done! Press enter to exit.
Two new files! SHELL.LNK and IPX.COM. No idea what the LNK file is (trash probably). Next you'd copy IPX.COM and the appropriate shell (NET3.COM for DOS 3.x, NET4.COM for DOS 4.x, etc, or NETX.EXE if its a newer shell version) to your hard disk and add them to autoexec.
But to test I'm just going to run straight from the floppy as this is just an image and I can easily undo any changes I make. First up: run IPX.COM.
IPX/SPX protocol stack started. This copy of IPX.COM will only work on an NE2000 set to IRQ3 with an I/O Base of 300h. Want to change the cards IRQ? Got to run WSGEN again and make a new IPX.COM. The next command to run is NET3.COM as I'm running DOS 3.x.
Fail. It can't find my NetWare server (it did look though - the emulators network icon was blinking). This is probably due to the frame types I've got configured on my NetWare servers (from NetWare 3.12 novell changed the default frame type). Its supposed to be possible to change the frame type IPX.COM uses with the ECONFIG utiltiy but I've not managed to make it work.
This is the tool used prior to NetWare 3.11 for creating IPX.COM and what comes with the NetWare DOS Client Kit v3.01a. For this I've copied the contents of DSWIN1.ZIP and DSWIN2.ZIP onto a floppy disk (image) labeled SHGEN-1.
Here is the contents of my SHGEN-1 disk! I've no idea if this is what a real shipped-by-Novell copy of SHGEN-1 looks like (the DSWIN*.ZIP files are too big for a 360K disk but much too small to even half fill a 1.2M disk). But its what I'm using for this.
To start, run shgen from the floppy disk.
This flashes up for a moment
Then a blank screen for a while.
More waiting...
This is basically the same thing as WSGEN. Why Novell rewrote it I've no idea. Hit enter to select one of the bundled drivers or down then enter to select a driver from a different disk.
Select your network card and hit enter. This emulator is emulating an NE2000.
This screen is a bit weird. Hit escape to continue or enter to change your driver. Why they didn't put two options in the menu (continue / change selection) I've no idea.
Pick the LAN driver configuration and press enter.
Hit enter to make IPX.COM.
Linking...
Configuring...
Done!
Two new files: SHELL.LNK and IPX.COM. The .LNK file is probably just garbage. Next you'd copy IPX.COM and the appropriate shell ((NET3.COM for DOS 3.x, NET4.COM for DOS 4.x, etc, or NETX.EXE if its a newer shell version) to your hard disk and add them to autoexec.
But to test I'm just going to run straight from the floppy as this is just an image and I can easily undo any changes I make. First up: run IPX.COM.
IPX/SPX protocol stack started. This copy of IPX.COM will only work on an NE2000 set to IRQ3 with an I/O Base of 300h. Want to change the cards IRQ? Got to run WSGEN again and make a new IPX.COM. The next command to run is NET3.COM as I'm running DOS 3.x.
Fail. Same problem as the very slightly newer 3.02 disk - it can't see my netware server. The ODI drivers work fine to be a problem with the ancient verison of ipx.obj or the network driver not supporting the required frame type.
And thats SHGEN! Its basically WSGEN but with a slightly different look.
I'm not a netware expert, don't have any of those fancy novell certifications and have never administred a netware network; I've just played with it at home occasionally since 2004 or so. Email me if you've got any suggestions or corrections for this page or any extra information you think is worth including here. My address is david at this websites domain name (without the www bit of course).