About neozeed

I live in SE Asia, doing generic work, enjoying my life & family

A quick tour of the packaging of SQL 4.21

Someone sent me some questions about SQL Server 4.21. I guess since it’s a ‘rare’ item, and most people will never see one in the wild, I thought I’d show some of it off.

Vista with SQL 4.21


So there you go, that’s the PC I used, and the software as mentioned. As you can see from the SQL Server box, it’s the “Departmental System” version good for 64 users/128 connections.

I guess for the others interested I’ll show some box contents or something.

Contents of the package

Front of the box

High resolution of the back...

Check out the ‘requirements’ and it’s features… That’s why I love this old software! It’s not as bad as it’s reputation is… But on the x64 it’ll get it’s full 2GB of ram!

Fun with Microsoft SQL Server 4.21

First off I have this copy of SQL server 4.21 that I wanted to run on my new super fast Vista x64 box. Now it’s 32bit but completely unsupported…. And off the CD the setup doesn’t work..

But not to fear!

First from a Windows NT 4.0 CD I copy in the setupdll.dll file into the source path for SQL Server 4.21. Now the setup.exe will actually run.

So the first hint is to set the compatibility for the setup.exe to “run in 256 colors”. Now it’ll render stuff correctly, however it’ll barf because it wants to overwrite the file “dbnmpntw.dll” which won’t work. So simply editing the setup.inf file and commenting out the dbnmpntw.dll line.

Now the real pain is that it’ll run the setup, but it’ll crash when starting the sql server as a service… I still don’t know what’s crashing it.

Next grab service pack (#4) for Sql 4.21

You’ll need some kind of MS-DOS environment to extract the service pack… Either DOSBox or VirtualPC with MS-DOS will quickly do the job. I like DOSBox for this kind of thing as it can directly mount the native filesystem..

Anyways copy the DLL’s to c:\sql\dll & the exe to c:\sql\binn

Then add c:\sql\dll;c:\sql\binn to the system PATH environment….

From here you can run the sqlservr.exe in an administrator prompt, and it’ll run…

09/07/02 19:18:18.87 kernel SQL Server for Windows NT 4.21a.05 (Intel X86) Jun 28 1995 08:20:31
Copyright (c) 1988-1995 Microsoft Corporation; Copyright Sybase, Inc 1987-1995

09/07/02 19:18:18.88 kernel Copyright (C) 1988-1993 Microsoft Corporation.
09/07/02 19:18:18.88 kernel Copyright Sybase, Inc. 1987, 1993
09/07/02 19:18:18.88 kernel All rights reserved.
09/07/02 19:18:18.88 kernel Use, duplication, or disclosure by the United States Government is subject
09/07/02 19:18:18.88 kernel to restrictions set forth in FAR subparagraphs 52.227-19(a)-(d) for civilian
09/07/02 19:18:18.88 kernel agency contracts and DFARS 252.227-7013(c)(1)(ii)for Department of Defense
09/07/02 19:18:18.88 kernel contracts. Sybase reserves all unpublished rightsunder the copyright laws of
09/07/02 19:18:18.88 kernel the United States.
09/07/02 19:18:18.88 kernel Sybase, Inc. 6475 Christie Avenue, Emeryville, CA94608, USA.
09/07/02 19:18:18.88 kernel Logging SQL Server messages in file ‘C:\SQL\LOG\ERRORLOG’
09/07/02 19:18:18.90 kernel Maximum number of pages in batch io is limited to8
09/07/02 19:18:18.90 kernel initconfig: number of user connections limited to5
09/07/02 19:18:18.90 server SQL Server is starting at priority class ‘normal’with dataserver serialization
turned on.
09/07/02 19:18:18.90 kernel initializing virtual device 0, C:\SQL\DATA\MASTER.DAT
09/07/02 19:18:18.92 kernel Opening Master Database …
09/07/02 19:18:18.92 server Loading SQL Server’s default sort order and character set
09/07/02 19:18:18.92 server Recovering Database ‘master’
09/07/02 19:18:18.92 server Recovery dbid 1 ckpt (701,14)
09/07/02 19:18:18.94 server server is unnamed
09/07/02 19:18:18.99 server Recovering database ‘model’
09/07/02 19:18:18.99 server Recovery dbid 3 ckpt (132,26)
09/07/02 19:18:19.00 server Clearing temp db
09/07/02 19:18:19.28 kernel Using ‘SQLEVENT.DLL’ version ‘4.21.00’.
09/07/02 19:18:19.28 kernel Using ‘OPENDSNT.DLL’ version ‘’.
09/07/02 19:18:19.29 kernel Using ‘NTWDBLIB.DLL’ version ‘4.21.00’.
09/07/02 19:18:19.29 ods Using ‘SSNMPNTW.DLL’ version ‘’ to listenon ”.
09/07/02 19:18:21.28 server Recovery complete.
09/07/02 19:18:21.28 server SQL Server’s default sort order is:
09/07/02 19:18:21.29 server ‘bin_cp850’ (ID = 40)
09/07/02 19:18:21.29 server on top of default character set:
09/07/02 19:18:21.29 server ‘cp850’ (ID = 2)

Contrl+C will kill it… You can fire up the SQL Administrator (C:\Sql\Binn\Sqladmin.exe) but it’ll freak because the master database isn’t fully built. It’s very close to usable but so far the only way to get around the incomplete master is to copy one from an existing DB… Good thing you have that NT 4.0 CD & VirtualPC right? Just remember that SQL 4.21 will only install PRIOR to sp6. SO the install order is NT 4.0, SQL 4.21, SP6, VMadditions, SQL service pack, then copy the c:\sql directory to overrite the prior one. You may also want to export the registry keys from the Virtual NT 4.0 machine [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQLServer].

Ok now for the downside… For whatever reason it will *NOT* listen on TCP/IP. So it’ll only do named pipes… If you are only doing local stuff it’ll be just fine. The services don’t work, but the uptick is that it’s SMALL… A zip of the installed SQL is under 5 megabytes!

So in the end, it’s not terribly usefull, but I found it interesting that with a little hacking SQL Server 4.21a will run on Vista x64 sp2.

Microsoft SQL Server 4.21 on Vista x64

And here is a screenshot… I’ll have to do some quick benchmarks of 4.21 vs the 2008 Express stuff.

Why I love Windows NT 4.0!

Years ago I managed to score a bunch of copies of NT 4.0 server for $20 each (5 cals too!) and I have to say that the #1 thing I love about NT 4.0 is that it can run on small machines. In virtual machine space, this means small disks, little ram, and they don’t need that much in the way of CPU power.

And if you keep your eyes out, you can even score the best one of all, NT 4.0 Terminal server. Keep in mind that later versions of the terminal server client (the ones in XP sp2 & higher/vista/windows 7/2003 server/2008 server) will NOT connect to a NT 4.0 terminal server, but you can just grab the mstsc.exe/mstsc.dll from the NT 4.0 Terminal Server CD, or from a pre sp2 XP CD.

Anyways among the things you can setup and run on NT 4.0 right now I’m going to mention something mundane, but fun & and that’s a PPTP server. Since I’ve accidentally screwed up my Proxmox install, I installed Windows 2003 R2 x64, and the downside is that bridged OpenVPN in a VM doesn’t work. Virtual Server seems to be saving me from myself here… So I thought I’d try something a little more ‘normal’ in that space.

When it comes time to build the PPTP server, you just simply have to add the PPTP networking service into the NT 4.0 networking build. It’s easier to do this at install time so all the files will be in sync. If you try to do this to an existing NT 4.0 machine that has any service packs installed, YOU MUST RE-INSTALL THE SERVICE PACK BEFORE YOU REBOOT… Otherwise it’ll BSOD because the network drivers changed radically from sp1 to sp4+

I have an OpenBSD 4.5 firewall in a VM that has OpenVPN connections to various work sites, and connects those tunnels to ipip tunnels on my Cisco router. I then want to PPTP from my wifi into my ‘work’ network and have it automatically work. While digging around there is a minor thing to keep in mind when forwarding PPTP packets from an OpenBSD firewall to a Windows NT 4.0 PPTP server… Make sure you forward the GRE packets as well!

This is what I added to my /etc/pf.conf

rdr on $ext_if proto tcp from any to any port 1723 ->
rdr on $ext_if proto gre from any to any ->

As you can guess, is the address of my PPTP server.

Remember to check the log if you have any issues connecting, I wasted 20 min playing with the authentication protocols before I checked the security log to realize that my user on NT 4.0 didn’t have rights to RAS into the server…

Windows NT 4.0 also makes a great host for any version of SQL Server 7.0 & prior, and it runs Exchange server 5.5 exceedingly well. I like to install my old copy of Office 97 on the terminal server, and setup my own NT 4.0 domain with NT 4.0’s IIS, SQL, Exchange & fileserver. And the overhead on any ‘modern’ computer is negligible. 32mb of ram and a 1 gig disk are more then enough for a basic NT 4.0 server.

One other note, is that I found that Terminal Server would not install on 2003 r2 x64 / Virtual Server 2005 sp1. However I could install it on Virtual PC 2007 sp1 and then just copy the vhd over to the server and it worked fine. That is another plus of the VirtualPC / Virtual Server strategy is that they share each others disk formats without any issues.. Unlike some other products that won’t take an IDE image and let you connect it to a SCSI controller… Grrr.

Anyways I hope this will help someone setup a PPTP server, or at least the missing bits to front one with OpenBSD.

Neat VAX 11/780 picture

While checking out this page, I came across this:



Looks pretty neat eh?

And from the poster:

“Starlink” will provide the astronomical community in the United Kingdom with unsurpassed facilities for rapid and efficient analysis of the vast amount of data produced on telescopes throughout and above the world, thus providing essential support to research which probes the furthest reaches of the Universe.

Then googling about you can find some more here.

So as we can tell, the above picture should have been captioned:

“Starlink VAX11/780 in the Atlas Centre, August 1980. Anton Walter and Lorna Claringbold”

Anyways I wonder if they have the old programs from the starlink…..

Qemu 0.10.5 for windows

Well I screwed up the Proxmox VE thing and I needed to test some x64 stuff… Sadly the VM I used to build the x64 stuff was the proxmox… And I need it now!

So I found this site, which has the new qemu stuff built!

Just unzip it with 7zip.

And you should be good to go..

However for Windows 2003 x64 R2 it seems that those binaries crash on ‘starting windows’, apparently they were compiled with GCC 4 while the ancient qemu 0.90 built with GCC 3 works…

I’ve also found a source ‘fix’ for why 0.91 crashes on vista…:

patch hw/ide.c:

just replace all ‘free(buf)’ in guess_disk_lchs function to ‘qemu_free(buf)’.

Sounds easy enough. I’ll have to get a working toolchian.

I’ve been slacking

Ok, I’m still unpacking stuff in the new apt, so I don’t have anything that exciting.

I’m hoping that this blog will become more interesting as the guy fills out content… Ah yeah, remember the ‘good’ old days of 16 bit development? Ok they weren’t *THAT* good, but we all know the pain of legacy code.

I don’t know if it’s worth mentioning, but yet another version of Qemu has been released, 0.15..

And it would appear that proxmox has been updated to 1.3… I’m going to have to upgrade and give it a whirl… I just hope it doesn’t trash my raid.

And finally you can view Warren Toomey’s presentation about recovering an ancient version of UNIX…

Video of the presentation is here:

Paper: http://www.usenix.org/events/usenix09/tech/full_papers/toomey/toomey.pdf
Slides: http://www.usenix.org/events/usenix09/tech/slides/toomey.pdf

Have a fun weekend!

Fun links

Well today it’s raining, and I was trying to get my Verizon DSL working… To no avail, they just keep closing tickets saying it works fine, but my modem just blinks… No connection.

Apparently terminating an analog port is beyond them. I’ll have to cancel the thing on Monday as it’s become a complete waste of time.

Anyways I came across this link, of an incredible PDP-11 collection. This guys got quite a set, and even snuck an 11/750 in there. Sadly he’s running VMS on it… Anyways it’s a great source for some pictures!

And this one is not exactly safe for work, so here is the NSFW tag.. lol but anyways this guy seems to be having way too much fun with his PDP-11.

On that note, I got BOCHS to compile, now I just need to rip apart it’s ethernet code and see if I can inject some SLiRP into it…



Tropix booted to the login prompt

So I was browsing some stuff, and playing with a few other emulators getting something together when I found an article briefly mentioning TROPIX.

Now TROPIX is interesting as some people from Brazil tried to get a UNIX license in the 1970’s but they were denied. Not to take that as a loss, they bought ‘a’ UNIX system (some kind of v7 box) and built their own OS around the v7 ‘feel’. The result is a multiprocessor, real time UNIX clone written in Portuguese!

Now what is interesting is during the time of TROPIX (the mid 80’s) Brazil was still a dictatorship, and they would refuse to import western things, if there was a local equivalent.. So UNIX vendors never could get a foothold in Brazil because of TROPIX, well back then it was called Plurix. Conversely TROPIX/Plurix never got out because it’s all localalized in Portuguese. Which is too bad, as if it had the ability to spread on the internet I’m pretty sure it would have been popular..

More information can be found here:

However it’s all in Portuguese, so you’ll probably want to use a translator. http://www.google.com/translate is what I’m using.

The latest release was in December of 2008, and added support for USB 2.0 & SATA. So while it may feel dated, it’s being updated to support modern hardware. They even dedicate it to Newton Faller who’s a big name IT wise in Brazil, they even give out awards similar to the Turing award in his honor.

Now onwards to the install!

I am using Qemu as it can emulate the required hardware. Virtual PC will work, but the networking will NOT.

First download the ISO image from here . You’ll need a copy of gzip & tar for whatever your platform is to extract the ISO image. The install is actually somewhat straight forward once I translated the install document, which can be found here.

Basically the following input got me to a working system…


















login root
password tropix

mkfs /dev/rhda1
mount /dev/hda1 /aroot
cd /usr/etc/install

n (it’ll copy files)


I’m still trying to figure out the DHCP or the default gateway as neither appear to be working at the moment… Take note that the TCP/IP in TROPIX was written by them, it is *NOT* a 4.3 BSD derived thing. So there is no ifconfig / route / arp commands. Not to be disapointing but it also needs it’s first partition somewhere in the first 512mb as it seems to have some old BIOS booting issues.. Now it could be Qemu, but I’m not sure, a 10gig disk didn’t boot from the HD, although the CD could be make to use the HD for a root…

Right now the only ‘fun’ program to run is coremap & fortune.

But it’s very interesting to see a UNIX developed from another part of the world, and just how similar and different it is… Oh and it’s Si/Non, not YES/NO.

Ancient UNIX on the front page of slashdot

So today on slashdot I saw this:

“In this its 40th year of operating system life, some Unix stalwarts are trying to resurrect its past. That is, they are taking on the unenviable and difficult job of restoring to their former glory old Unix software artifacts such as early Unix kernels, compilers and other important historical source code pieces. In a paper to be presented at next week’s Usenix show, Warren Toomey of the Bond School of IT is expected to detail restoration work being done on four key Unix software artifacts all from the early 1970s — Nsys, 1st edition Unix kernel, 1st and 2nd edition binaries and early C compilers. In his paper, Toomey states that while the history of Unix has been well-documented, there was a time when the actual artifacts of early Unix development were in danger of being lost forever.”

It’s always cool when this stuff gets some attention. I just wish someone who would write this stuff, would show people HOW to run it… It’s not that hard is it???

I hate to say it, but 4.3 BSD RENO sucks.

Ok so I spent the day building stuff on RENO, I thought maybe I could bring it up to par package wise, like the UWisc 4.3 BSD… Oh boy what a PITA!

First the syscalls changed to RENO so hardly any of the packages built on Uwisc work on reno.. expect LOTS of unhandled syscalls. Wow, that’s lame.

I got bash 2.0 to build without much pokeing, but get this.. Control+C kills it!

myname# bash
bash-2.00# Bus error (core dumped)

Yeah. Nice.

gcc 2.5.8 can build binutils 2.8.1 & gcc so I thought that was cool to go onwards to gzip & lynx…

Well launching lynx on ANYTHING other then file:// gives me this:

Alert!: Unsupported URL scheme!

Alert!: Unsupported URL scheme!

lynx: Start file could not be found or is not text/html or text/plain

Oh yeah, and it built dammed near clean except for adding a va_list definition….

I was going to try to build more stuff, but it just feels so futile. Since adventure (zork) had been removed in RENO I was going to try to build GNU Fortran 77 & get a build of that going, but now it’s most likely it won’t work at all. I guess I’ll do some kind of update on RENO but why would anyone actually want to load it? Why is it so popular?

I wonder if there is an easy accessable 4.4 BSD release, all that is on TUSH is 4.4 Alpha… At this point I wonder if Net/2 would be better…

Anyways that’s been my day.