A quick Neko x64 update!

Oh no!
Oh no!

For anyone who’s been using neko x64 on Windows Vista or Windows 7 and seeing something like the above, it turns out the fix was really easy and really simple. As mentioned by mikesword221, all you have to do is make it ‘always on top’.

Just right click on the cat in the task bar (he may be hiding, check under the up arrow…)

And make your settings something like this:

Configure Neko
Configure Neko

Then hit ok and Neko will now look normal, with no more ghosting.

Later on I’ll have to make an installer, and fix it so that neko is always on top.

Glorious Neko returned!
Glorious Neko returned!

 

On using SQL 4.21

Ok, I know it’s been all retro SQL server but bear with me… MSDE/SqlExpress is just too small for some pet project, and I want to run my SQL natively… So it’s 4.21 for now.

Anyways, I thought I’d mention that to run SQL 4.21 on Windows 7, you’ll need the userenv.dll from a Vista computer, just copy it to where your i386 files are so you can run the setup, even if it complains about your x64 dll as ‘The image file c:\sql\i386\userenv.dll is valid but is for a machine type other then the current machine…’. Let it continue and it’ll still run. Also remember to set it to 256 colors in the compatibility tab or you’ll never get to use any radio boxes… It still barfs initializing the services, but it’ll let you run the server, and slap down a working master database from a blank installed machine (say from NT 4.0..) Naturally you’ll have to comment out the line in setup.inf about the client access DLL dbnmpntw.dll, and register c:\sql\binn;c:\sql\dll yourself in the system’s path environment variable…

Oh and since I’m using such an ancient engine, one thing that is kind of annoying is that .net 3.5 only wants to talk to SQL Server 7.0 and higher. However using ODBC you can force it to talk to the ancient 4.21a

Here is what I’m using in my c# to talk to the sql server:

string myConnString = “Driver={SQL Server};Server=.;Database=datamine;Uid=sa;Pwd=”;
OdbcConnection myConnection = new OdbcConnection(myConnString);
OdbcCommand myCommand = new OdbcCommand(query, myConnection);
myConnection.Open();
OdbcDataReader myReader = myCommand.ExecuteReader();
myReader.Close();
myConnection.Close();

So with a little tweak you can get it running on Windows 7, and have .net talking to the database.

Another note is be sure to run the sqladmin tool, and hit the ‘system’ button, then under the manage menu, select the system configuration. By default it won’t accept remote connections, and limits itself to 6MB of ram! You’ll want to bump up its system limits. I’d also say use tempdb in ram, as you probably have more ram in your computer then any server back from 1992… I have 8GB for example on my desktop.

Just don’t forget that something this ancient won’t grow your databases for you… I’m pretty sure you can add additional database devices, and expand the DB, but it will be a while until I fill my first DB… Also you’ll probably find that a lot of the fancy SQL features you’ve grown to like are gone, but surprisingly it still offers a good base. And it’s like 25Mb for the complete install… A pittance by modern standards…

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…

C:\SQL\sp>SQLSERVR.EXE
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 ‘4.21.09.02’.
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 ‘4.21.0.0’ 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.

SUA/SFU dropbear minor annoyances..

Well I just deployed a Windows server to run some ancient ASP stuff, and it just turned out that the new direction is going to be php & unix… Since the machine is now in a different nation changes will be… difficult.

So for now I thought I’d install the SFU package and just connect in thru that and set it up… Except SFU/SUA is all telnet remotely… Which is bad. However dropbear to the rescue has ‘fixed’ it, now I can ssh.

There is really one two tweaks, the first one requires you to change the utmp stuff to utmpx.. It’s really easy, just add the x to the structures!

The ‘challenge’ was to authenticate passwords. You cannot verify passwords the old way, but after a lot of digging around I found this page:

http://technet.microsoft.com/en-us/library/bb463206.aspx

“Porting applications in C” ..

And for anyone that cares, here is the part for svr-authpasswd.c

/* the first bytes of passwdcrypt are the salt */
// testcrypt = crypt((char*)password, passwdcrypt);
// m_burn(password, passwordlen);
// m_free(password);

//This changes
//if (strcmp(testcrypt, passwdcrypt) == 0)
if(setuser(ses.authstate.pw_name,password,SU_CHECK)==0)

Yep, that’s it, and now gen your keys, and away you go!

cintsys followup:

For Windows users you’ll actually need a different archive that includes Windows support. I’m using VisualC++ 2005 Express to build this out. You can find it @ http://msdn.microsoft.com/express . Don’t forget the servicepack 1 for Vista users.

Retrieve http://www.cl.cam.ac.uk/users/mr/BCPL/bcpl.zip

unzip the bcpl zip to somewhere eg (c:\proj\bcpl)

run the visual studio 2005 command promptcd to your project directory

edit the vc9env.bat file: search and replace distribution with where you put your zip file (proj)Next remove all the vcvar lines (since we invoked a vc capable shell we dont need to worry here)

vc9env.bat

nmake -f MakefileVC
It’ll compiler the interpeter, then it’ll compile all the bcpl bits, and dump you into a shell. From here you can type in ‘logout’ and cd into the bcplprogs directory and play around.
For example

cd ..\bcplprogs\maze

..\..\cintcode\cintsys.exe

then we’ll compile the maze program with:

bcpl maze.b to maze hdrs BCPLHDRS

finally we can run the maze program:

maze

C:\proj\BCPL\bcplprogs\maze>..\..\cintcode\cintsys
BCPL Cintcode System (25 Jan 2007)

0> bcpl maze.b to maze hdrs BCPLHDRS
BCPL (3 July 2007)

Code size = 1164 bytes

40> maze

… the program will print the maze, as it solves it…

screens will fly by.

4965>

From here you can play with the rest of the bcpl examples. You can exit the interpeter with either control C or logout. Currently there doesnt seem to be a cd command, so I just exit and move via the Vista command shell.

I hope this clears it up somewhat.

Standalone Virtual Server annoyances

Ok, Ive been out of the country for a while… lots of fun!

At anyrate, I’ve installed Virtual Server 2005 R2SP1 on my parents computer to give it a good shake down. The good part is that it support’s DVD iso images! Woohoo!

The bad part is that for the most part you’ll get access errors when trying to use it. The only way I’ve figured out how to setup the thing, is to first configure IIS to not allow anonymous users, use the ‘built in security’. Next you’ll have to tell IE that on ‘trusted’ or ‘local’ zones you should have it pass the security automatically. That’ll get you to the configuration page. The next hurdle is that it wont let you start a remote console..

You’ll have to go into the virtual server security setup, and explicity add your user in there with full rights. The administrators group isn’t enough.

With all that out of the way you should be good to go now!