Shoebill now has working Ethernet support!

Great news!  The excellent A/UX capable emulator Shoebill, now has working Ethernet support!  The sad news is that it only supports the TUN/TAP interface.  So Windows users are kind of left out in the fun.

Shoebill + Ethernet

Shoebill + Ethernet

Except, I’ve been here before with SIMH ages ago.  So I dusted off my source code, and injected it into Shoebill.  The first issue I had was that SLiRP was rejecting all the inputted frames, because of invalid frame length.  Even more weird is that ARP worked, and I could see the 10.0.2.2 and 10.0.2.3 virtual IP’s but TCP and UDP outbound wouldn’t work at all.

It took me longer than it should have but although this code worked great with GCC 2.7 and 3.0, 4.x breaks it.  And it’s the same reason why Shoebill originally didn’t work on Win32, the blasted packed structures!  So adding the ‘-mno-ms-bitfields’ flag to GCC is all it took, and now I could ping 10.0.2.2 for about 5-7 pings until SLiRP would crash.  I tried all kinds of stuff trying to see if there was an issue with SLiRP, but I should have payed closer attention to the debugger, with all those threads flying around.  It turns out Shoebill was trying to read & write a the same time, which caused SLiRP to crash as it is not re-entrant.  I tried to place mutex’s on every SLiRP call but that ended up having SLiRP not process any packets.  Very strange.  I then reduced it to where I read the frame out of SLiRP and pass it to Shoebill, and where Shoebill write’s a frame out the SLiRP.  And much to my amazement I can run ‘worms’ just fine!

So after a minute of worming and pinging I called it ‘good enough’ and rebuilt a production binary, and packaged up my source code.

For anyone who want’s to play, my Win32 EXE is here, and the source code I am using is here.

DOOM over TCP/IP

I never played DOOM over the internet, as by the time I had a proper connection and fast enough machine, Quake was all the rage, and all I had was this crappy cable modem that used a dialup connection for the upstream.

If I wanted to play multiplayer I’d wind up dong a LAN party anyways.  We were living in the era of $20 NE2000 clones, and 56kb modems, with the occasional 1mbit down cable.

Anyways I recently saw The Internet DOOM Client/Server System v0.01, which was a simple TCP/IP DOOM matchmaking server that includes source the client and server.  This eventually grew up into iDOOM.  It looked simple enough and it does mention that it is based on the opensource IPX component of DOOM.  I’d never looked at it so taking a peek I saw this:

DOOMNET.C

// hook an interrupt vector
p= CheckParm (“-vector”);

if (p)
{
doomcom.intnum = sscanf (“0x%x”,_argv[p+1]);
}
else
{
for (doomcom.intnum = 0x60 ; doomcom.intnum <= 0x66 ; doomcom.intnum++)
{
vector = *(char far * far *)(doomcom.intnum*4);
if ( !vector || *vector == 0xcf )
break;
}
if (doomcom.intnum == 0x67)
{
printf (“Warning: no NULL or iret interrupt vectors were found in the 0x60 to 0x66\n”
“range. You can specify a vector with the -vector 0x<num> parameter.\n”);
doomcom.intnum = 0x66;
}
}
printf (“Communicating with interupt vector 0x%x\n”,doomcom.intnum);

olddoomvect = getvect (doomcom.intnum);
setvect (doomcom.intnum,NetISR);
vectorishooked = 1;

IPXSETUP.C

/*
=============
=
= NetISR
=
=============
*/

void interrupt NetISR (void)
{
if (doomcom.command == CMD_SEND)
{
localtime++;
SendPacket (doomcom.remotenode);
}
else if (doomcom.command == CMD_GET)
{
GetPacket ();
}
}

So for those who missed it, the IPX client just hooks in as a TSR, which doom calls down to, and then either sends or receives data.  Now I wish I’d looked earlier I didn’t realize that it was something so simple.

So I thought it’d be interesting to watch it in action.  Now it compiles on modern Linux, but it doesn’t work.  I don’t know why, I didn’t investigate much.  Instead I opted for a server from the era, UnixWare.  Oddly enough that works (and so does OS X).  I fired up GNS3, put the server on one network, and added two clients on separate TCP/IP networks.  I went ahead with DOOM v1.2.

doom tcpipThe clients are able to connect to the server, and once the both register, they drop out of the server, and pass all the command line arguments to TCPSETUP, and away they go.
doom tcpip 2Now it’s worth noting that back in these days people use registered addresses.  None of this will work with NAT as it expects 1:1 UDP port mappings.  The clients are all equal peers.

So could a newer driver be written to support a server, and work behind NAT? Yeah I don’t see why not.  Is there any point in doing so?

Probably not.

In 2004 it was hard enough trying to do a deathmatch online, but 2014?.. 20 years too late.

But it’s kind of interesting how convoluted the networking setup had to be for a 32bit protected mode program calling down to a real mode TCP/IP TSR, which in turn called the network driver.  It’s amazing it even works.

 

what is more fringe than a telnet bbs?

Synchronet over decnet

Synchronet over decnet

A bbs over decnet!

I found a simple c server and client program that was ported to decnet.  And it was easy enough to follow I thought I’d try something fun.  So I took Synchronet 3.00c and started to identify the winsock tcpip portions and then slowly alter them to either stubs or being more decnet friendly.

Surprisingly this wasn’t so hard.

The hard part is that decnet doesn’t have a telnet like protocol,  and I don’t have enough patience to try to reverse how ctermd works, so with a lot of searching I found a semi simple telnet client and mostly got it running on decnet.   Right now I have issues resolving address,  so it is hardcoded.

I have to admit it was pretty cool to see the first connection,  even though it aborted when it couldn’t figure out my ip address.   I made some more changes, and it worked!!

The next step was to fire up gns3 and build a simple 2 area decnet network and see if a NT box from area one could connect to a bbs in area two.  And with a few false starts I finally got a working multi area network (decnet isn’t like tcpip!!) This document on cisco’s site was invaluable.

Simple GNS DECnet network

Simple GNS DECnet network

As you can see this is pretty simple.  I wanted two serial connections so I could run DECnet on one serial connection, and TCP/IP on the other.  This way I could shut down the TCP/IP connection to ensure my conversation was 100% over DECnet.

R1:

decnet routing iv-prime 1.1
decnet node-type area
!
interface FastEthernet0/0
ip address 192.168.0.1 255.255.255.0
duplex auto
speed auto
decnet cost 20
!
interface Serial1/0
no ip address
decnet cost 20
serial restart-delay 0
!
interface Serial1/1
ip address 10.5.0.1 255.255.255.252
serial restart-delay 0
!
router rip
network 10.0.0.0
network 192.168.0.0

 And R2:

decnet routing iv-prime 2.1
decnet node-type area
!
interface FastEthernet0/0
ip address 192.168.2.1 255.255.255.0
duplex auto
speed auto
decnet cost 10
!
interface FastEthernet0/1
ip address dhcp
duplex auto
speed auto
!
interface Serial1/0
no ip address
decnet cost 10
serial restart-delay 0
!
interface Serial1/1
ip address 10.5.0.2 255.255.255.252
serial restart-delay 0
!
router rip
redistribute static
network 10.0.0.0
network 192.168.2.0

 As you can see the configuration is pretty simple.  I went with RIP because it’s a small network, and I only need a few routes.  EIRP, OSPF and friends are just pure overkill.  And recall VMNet8 is the NAT interface provided by VMWare Player.

Checking output from the routers, shows that DECnet is routing, and that I can ping both of my test NT boxes:

R1#show decnet route
Area Cost Hops Next Hop to Node Expires Prio
*1 0 0 (Local) -> 1.1
*2 20 1 Serial1/0 -> 2.1 44 64 A+
Node Cost Hops Next Hop to Node Expires Prio
*(Area) 0 0 (Local) -> 1.1
*1.1 0 0 (Local) -> 1.1
*1.3 20 1 FastEthernet0/0 -> 1.3 65
R1#ping decnet 1.3

Type escape sequence to abort.
Sending 5, 100-byte DECnet echos to atg 0 area.node 1.3, timeout is 5 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/7/12 ms
R1#ping decnet 2.5

Type escape sequence to abort.
Sending 5, 100-byte DECnet echos to atg 0 area.node 2.5, timeout is 5 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/34/60 ms
R1#

 Everything is looking good! I fired up my DECnet telnet and success!!

Success!

Success!

Anyone crazy enough to want it can find the BBS on sourceforge, along with the telnet client.

Announcing HECnetNT!

HECnetNT in action!

HECnetNT in action!

So I have my little project working well enough to let it out into the world.  I call it HECnetNT, and it’s available out on sourceforge.

It’s a port of  Johnny Billquist‘s bridge program to Windows.  This isn’t a MinGW or Cygwin build, but rather, a native build, compiled in Visual Studio 2003.  I’ve been able to run this build on NT 4.0, 2000 and Windows 7.

I also made some additions to the bridge program, by allowing it to bridge IPX/SPX Ethernet_II frames, so you can now build legacy networks that let you logon to NetWare servers, or even play those old IPX/SPX games.

Back when I first got DOOM v1.1 working on IPX/SPX I noticed that it sent an incredible amount of packets that were mostly empty.  To work around this, I incorporated LZSS to compress data between HECnetNT bridges.  Even better, I don’t see any significant CPU utilization, even with DOOM blasting packets like crazy!

The best part is that you can mix compressed & uncompressed bridges.  So you can have an uncompressed connection to one host, and a compressed connection to another.

I’ve been able to bridge CTERM with SIMH to hosts using compressed, and uncompressed links, and this also includes a LINUX box with the original bridge software!

To take it one more step, I also setup a Windows NT box with an ethernet adapter, and the MS LOOPBack adapter, setup TCP/IP on both interfaces (a dummy address on the loopback is enough, but there needs to be something there), and then installed DEC Pathworks 7, on NT, bound it to the loopback adapter, ran the HECnetNT software, and I’ve been able to connect my NT instance.  Logically I could go one more step, and install PPTP support, so I the NT server could then use PPTP to VPN to a HECnet bridge, and then join it.

So the larger question is, the DECnet enthusiasts have their hecnet, is anyone interested in making a Novell like equivalent?  With older Linux that supports IPX/SPX or even NT we could even do routers, and build a large-ish sized network.

Setting up DECNet on VMS 4.7

Years ago, I was given an image of VMS 4.7.  I only tested it for idle capabilities, and that is as far as I got with it.  I never used it for anything else.

But today I needed to verify my Win32 Hecnet project works, so I needed to generate some legit DECNet traffic.  Luckily I still have the VMS image, and in the prevailing years I managed to get a copy of PathWorks for Windows NT (And one for MS-DOS as well!).

So googling around, I found blinkenbone who mentions the command needed to setup some DECNet love.  Now the one thing that is strange about DECNet is that the MAC address needs to be changed to the DECNet area & node id.  Thankfully there is an online calculator, powerdog.  Since I’m just testing, I’ll put my VAX in area 1, node 1, that means the VAX MAC needs to be set to:

AA-00-04-00-01-04

So in SIMH, I just use the line:

set xq mac=AA-00-04-00-01-04

Cool.  Now I use ansicon, in the hopes it’ll make the console better, and fire up VMS.

VMS 4.7 booted

VMS 4.7 booted

And then login as system/manager

Now I can setup decnet very simply like this:

Username: SYSTEM
Password:
Welcome to VAX/VMS version V4.7
Last interactive login on Saturday, 20-SEP-2008 17:32
$ @sys$manager:netconfig

DECnet-VAX network configuration procedure

This procedure will help you define the parameters needed to get DECnet
running on this machine. You will be shown the changes before they are
executed, in case you wish to perform them manually.

What do you want your DECnet node name to be? : rabbit
What do you want your DECnet address to be? : 1.1
Do you want to operate as a router? [NO (nonrouting)]:
Do you want a default DECnet account? [YES]:

Here are the commands necessary to setup your system.

————————————————————————–
$ RUN SYS$SYSTEM:NCP
PURGE KNOWN OBJECTS ALL
PURGE MODULE CONFIGURATOR KNOWN CIRCUITS ALL
$ DEFINE/USER SYS$OUTPUT NL:
$ DEFINE/USER SYS$ERROR NL:
$ RUN SYS$SYSTEM:NCP ! Remove existing entry, if any
PURGE NODE 1.1 ALL
PURGE NODE RABBIT ALL
$ RUN SYS$SYSTEM:NCP
DEFINE EXECUTOR ADDRESS 1.1 STATE ON
DEFINE EXECUTOR NAME RABBIT
DEFINE EXECUTOR MAXIMUM ADDRESS 1023
DEFINE EXECUTOR TYPE NONROUTING IV
DEFINE EXECUTOR NONPRIVILEGED USER DECNET
DEFINE EXECUTOR NONPRIVILEGED PASSWORD DECNET
$ DEFINE/USER_MODE SYSUAF SYS$SYSTEM:SYSUAF.DAT
$ RUN SYS$SYSTEM:AUTHORIZE
ADD DECNET /OWNER=”DECNET DEFAULT” –
/PASSWORD=DECNET –
/UIC=[376,376] /ACCOUNT=DECNET –
/DEVICE=SYS$SPECIFIC: /DIRECTORY=[DECNET] –
/PRIVILEGE=(TMPMBX,NETMBX) –
/DEFPRIVILEGE=(TMPMBX,NETMBX) –
Press RETURN to continue

/FLAGS=(CAPTIVE) /LGICMD=NL: –
/NOBATCH /NOINTERACTIVE
$ CREATE/DIRECTORY SYS$SPECIFIC:[DECNET] /OWNER=[376,376]
$ RUN SYS$SYSTEM:NCP
DEFINE LINE QNA-0 STATE ON
DEFINE CIRCUIT QNA-0 STATE ON COST 4
DEFINE LOGGING MONITOR STATE ON
DEFINE LOGGING MONITOR EVENTS 0.0-9
DEFINE LOGGING MONITOR EVENTS 2.0-1
DEFINE LOGGING MONITOR EVENTS 4.2-13,15-16,18-19
DEFINE LOGGING MONITOR EVENTS 5.0-18
DEFINE LOGGING MONITOR EVENTS 128.0-4
————————————————————————–

Do you want to go ahead and do it? [YES]:
%UAF-I-ADDMSG, user record successfully added
%UAF-I-RDBADDMSGU, identifier DECNET value: [000376,000376] added to RIGHTSLIST.
DAT
%UAF-I-DONEMSG, system authorization file modified
%UAF-I-RDBDONEMSG, rights database modified
%NCP-I-NMLRSP, listener response – Success
Logging sink type = monitor
%NML-I-RECADDED, Database entry added

The changes have been made.

If you have not already installed the DECnet-VAX license, then do so now.

After the license has been installed, you should invoke the procedure
SYS$MANAGER:STARTNET.COM to startup DECnet-VAX with these changes.

(If the license is already installed) Do you want DECnet started? [YES]:
%%%%%%%%%%% OPCOM 28-OCT-1987 15:42:37.64 %%%%%%%%%%%
Message from user DECNET
DECnet starting

%RUN-S-PROC_ID, identification of created process is 00000109
%RUN-S-PROC_ID, identification of created process is 0000010B
$
%%%%%%%%%%% OPCOM 28-OCT-1987 15:42:42.67 %%%%%%%%%%%
Message from user DECNET
DECnet event 4.10, circuit up
From node 1.1 (RABBIT), 28-OCT-1987 15:42:37.69
Circuit QNA-0

It basically set itself up.

And on the Windows NT side, I simply set itself up as node 2 in area 1.

Windows NT + Pathworks

Windows NT + Pathworks

And now I can use CTERM to connect to the VAX.

CTERM

CTERM

Nice!.  And it even works through my port of HECNet.

On reboots you have to manually start the network.  I don’t have EDT, or I don’t know where to find it (remember the gold key? ugh).

Manually starting the network

Manually starting the network

But it’s a simple command:

@SYS$MANAGER:startnet.com

And you are good to go!

Likewise shutting down is accomplished with this:

@SYS$SYSTEM:SHUTDOWN.COM

And that’s about all I know about VMS.  But it’s good to see that configuring this was pain free!

Stacker compression for Cisco routers

Looking at my Netware configuration, and the MTU issues I was having, I was right to think that it used to work with serial links with an MTU of 1500 along with stacker compression.  No doubt with the world moving away from traditional HDLC links, and Novell Netware, the code is in 12.4, but it doesn’t work.

Luckily someone sent me 11.3 for the 2600.

Cisco Internetwork Operating System Software
IOS ™ C2600 Software (C2600-D-M), Version 11.3(6)T, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1998 by cisco Systems, Inc.
Compiled Tue 06-Oct-98 18:07 by ccai

It’s still strange to think of 1998 being old.  Or legacy.  But back then I had an IOS 9 device running as a terminal server, and whole lot of 2500’s & 4000’s running 10.3, and some 7000’s with 11.0.  Good times for sure!

Since I setup a simple IPX network the router config’s are pretty simple.  I didn’t even bother with TCP/IP.

R12

ipx routing c809.1dfc.0000
!
interface Ethernet0/0
no ip address
ipx encapsulation SAP
ipx network CAB2
!
interface Serial0/0
no ip address
bandwidth 1966080
ipx network BEEF
clockrate 2000000
compress stac

R13

ipx routing c808.1dfc.0000
!
interface Ethernet0/0
no ip address
ipx encapsulation SAP
ipx network CAB3
!
interface Serial0/0
no ip address
bandwidth 1966080
ipx network BEEF
clockrate 2000000
compress stac

As you can see the configuration is pretty bare bones.  But the only thing I’m interested in is compressing that serial link.  I didn’t have to do any MTU sizing games, instead logging into the server ‘just worked’.  Then I turned on the compression, and copied the server’s system folder to the local disk.

Stacker Compression!

Stacker Compression!

And you can see I’m getting about 1.5:1 .  Not bad for a simple setting change.

Serial0/0
Software compression enabled
uncompressed bytes xmt/rcv 8733770/81026
1 min avg ratio xmt/rcv 1.577/1.121
5 min avg ratio xmt/rcv 1.578/1.070
10 min avg ratio xmt/rcv 1.606/1.083
no bufs xmt 0 no bufs rcv 0
resyncs 0
Additional Stacker Stats:
Transmit bytes: Uncompressed = 279855 Compressed = 5124744
Received bytes: Compressed = 72387 Uncompressed = 0

But naturally dynamips is slow for doing what it does.  And to know that I’m not totally crazy, as this stuff did work before.  This should also serve as a warning to people new at the fun world of cisco, just because you have a ‘newer’ version of IOS doesn’t mean that feature XYZ is going to work correctly.  Oh sure the statements may work, but when it comes down to it, it may not work at all, or poorly.  In case you ever wondered why people hoarde IOS versions this would be why.

 

GNS3 + VMWare +Netware 3.12

So continuing from where I left off, I thought I’d setup a small Netware network onto my GNS3 testbed.

Netware was once the big dog in the networking world, but now it’s just a footnote in obscurity.  Long gone are the days of syscon, rconsole, and all the frametypes that Netwaer supported in equally incompatible ways.  So maybe it’s a good thing.

But I digress, years ago I paid good money for a 50 user version of Netware 3.12.  I don’t know why either, but I occasionally like to get it running so I don’t feel like I completely wasted the thing.

With the right lan drivers, installation is a snap.  Or if you don’t have the right lan drivers, create a MS-DOS VM, so it’ll have an IDE hard disk.  You can install netware without lan drivers just fine.  I just installed netware by itself, then added in some patches for the network card & the idle program so it wouldn’t eat 100% of my CPU.  For the network though the command line was a little weird but I worked it out

file server name vmware
ipx internal net 538787d
mount all
load c:\server.312\nw4-idle.nlm
load c:\server.312\pcntnw slot=10001 FRAME=Ethernet_802.2
BIND IPX to pcntnw NET=cab2
load remote password
load rspx

Which gets me networking, and rconsole support.  With the server running, I just then had to enable IPX routing on my cisco routers.
R1

ipx routing ca00.1b00.0008
interface FastEthernet0/1
ipx encapsulation SAP
ipx network CAB1
interface Serial1/0
mtu 2000
ipx network CAB0

R2

ipx routing ca08.140c.0008
interface FastEthernet0/1
ipx encapsulation SAP
ipx network CAB2
interface Serial1/0
mtu 2000
ipx network CAB0

 Now with this all in place I can see the IPX routes from R1, including the one that goes directly into the server:

R1#show ipx route
Codes: C – Connected primary network, c – Connected secondary network
S – Static, F – Floating static, L – Local (internal), W – IPXWAN
R – RIP, E – EIGRP, X – External, A – Aggregate
s – seconds, u – uses, U – Per-user static/Unknown, H – Hold-down

4 Total IPX routes. Up to 1 parallel paths and 16 hops allowed.

No default route known.

C CAB0 (HDLC), Se1/0
C CAB1 (SAP), Fa0/1
R CAB2 [07/01] via CAB0.ca08.140c.0008, 56s, Se1/0
R 5383787D [08/02] via CAB0.ca08.140c.0008, 56s, Se1/0

And of course I can see the server!

R1#show ipx servers
Codes: S – Static, P – Periodic, E – EIGRP, H – Holddown, + = detail
U – Per-user static
2 Total IPX Servers

Table ordering is based on routing and server info

Type Name Net Address Port Route Hops Itf
P 4 VMWARE 5383787D.0000.0000.0001:0451 8/02 2 Se1/0
P 107 VMWARE 5383787D.0000.0000.0001:8104 8/02 3 Se1/0

Now if you remember from the bad old days of Netware, each service running on a server is advertised.  So in this case, type 4 is a file/print server, and 107 is a server running the ‘remote’ facility so you can rconsole into it.

Another thing to take note, is that because I configured IPX on serial interfaces is that their encapsulation is always HDLC.  Also because IPX cannot fragment like TCP/IP the MTU on the serial interface *MUST* be larger than ethernet’s 1500.  I like 2000 as I avoid all frame overhead this way.

Now I’m using the old netware client with the drivers I found here, and it works fine, as long as I had the MTU bumped up on the serial interface.  Now I could have used ethernet, and it’d achieve the same thing, except I’m not in some weird MTU war.

IPX network

IPX network

SA-COMP/1

SA-COMP/1

At the same time, it is very slow.  If you want to do anything reasonably fast, you really need to move your client to the same VNet as the server.  But if you want to feel like the old days when connections were slow, well you’ll enjoy a max 400k connection.  I tried enabling stacker compression on the interface, but it resulted in packet corruption.  I think it’s an IOS thing though, so if you play with this, you may have better luck.  Back before MPLS was everyone’s latest wan joy, I ran stacker compression, and the speed boost was really noticeable, with a 1.5:1 or 2:1 compression not being uncommon.  Although on lower routers it could be a killer (the 2500…) or a 7000 with multiple interfaces doing compression it could also bring a router to it’s knees.  Also looking at the support table for the  SA-COMP/1  SA-COMP/4 I doubt 12.4 would support stacker compression properly.

[table id=2 /]

Otherwise, yeah it works fine.  I also loaded up a Windows NT client, and it works too!

Not that I hang out on IRC anymore

But a ‘fixed’ version for Xenix was requested.

Apparently lots of IRC servers have slightly changed their syntax, which prevents ircII-4.4 from working.

It’s a simple fix.

In server.c, the the last line of the procedure login_to_server should be:

send_to_server(“USER %s 8 * : %s”, username,realname);

That’s it!

ircII-4.4 on Xenix 2.3.4

ircII-4.4 on Xenix 2.3.4

For Xenix users, you can download the binary tar here.

As for how you’ll get it working, well…

OS/2 2.0 on VMware Player

Well this has been driving me crazy for the longest time.  The ‘latest’ drivers for the AMD Pcnet card I can find for VMware is 4.08.  They load up on VMware like everything is normal but it doesn’t work.  But now I have my super awesome GNS3 test bed, so I can take a deeper look.

NDIS2 Driver for OS2 MSLANMAN
December 2000
NDIS2 driver for OS2 – Readme
Version 4.08

Changes made in this version 4.08:
The receive buffer size has been increased from 1518 to 1536.
Changes made in this version 4.07:
Slow network performance when using Interrupt Sharing has been fixed.
After heavy stress for a few hours, a drastic reduction in data transmission was observed. This problem has now been fixed.
The maximum number of Transmit Buffers that the driver can support has now been increased from 16 to 32.

I’m using OS/2 2.0 with the XR06100 fix, along with TCP/IP 2.0 with UN64092 fix and MPLS WR06000 (I never did find a fixpack for this).

I installed AMD’s MSLANMAN OS2 driver, as MPLS picks this up, and lets me use the nice UI to add in the network card.  But it never seemed to matter, as the blasted thing didn’t work.

MPLS

MPLS all configured

Which is a pretty simple configuration.  It’s just a simple lan adapter with TCP/IP.  I’m not even going to try to do anything fancy, like trying to get the wildly incompatible NetWare client working

ARP

ARP

Now much to my surprise the machine does send gratuitous arp on the wire, to assert it’s ip address.  Well that is interesting.

Pinging the gateway

Pinging the gateway

And as you can see, there is no ARP reply. Very strange.

Broken Arp

Broken Arp

So messing around with every possible option, I tried changing “PermaNet Server feature” in the network card settings.

fix

Set PermaNet Server feature to TRUE

And much to my surprise, it worked!

 

h

Yay!

So yeah, this is pretty awesome!  Now I just have to decide what to do with my BBS, maybe bring it home, and run it on ESXi.

Talking to the SIMH Vax through GNS3

Talking to the SIMH Vax through GNS3

As a strange update, I upgraded from OS/2 2.0 to 2.11 and then applied XR_B108 update to OS/2 2.11, and amazingly the value psfeature in protocol.ini had to be set to false.  Obviously this later kernel in the XR06200 fixpack better supports PCI hooks.

I updated OS/2 because things like Qbasic were able to hang the system.  I even tried the MS-DOS version of Qbasic thinking that somehow it was trying some weird hook to the BIOS for ROMBASIC, but that wasn’t the case, as both Qbasic from MS-DOS 5.0 and 6.22 hung the system by hitting alt+f.  So with the upgrade in place it seems to be working fine now.