Quake 1.01 / Shareware

Quake Shareware CD

I saw this pop up while cruising archive.org, and I thought it’d be fun to play with.  The shareware version of Quake on this CD image is version 1.01, which corresponds with the crack dot com leak of the Quake source code.  Searching around revels that the leak was aptly named “Quake101leakedsource.zip”, which wasn’t so hard to track down.

The source code is, naturally, in the process of being ported to Linux, and the makefiles reflect this.  I used my MinGW to DJGPP cross compiler toolchain that is close to era specific.

I had a single issue with the code, d_copy.s the following line was giving me trouble:

movl	$2,%al

changing it to the following however, let my version of GAS happily assemble it.

movb $2,%al

After a while of messing with the Makefile, and adding in the DOS components, it was easy enough to get an executable.  And even better it’ll run with the data/music from the demo disc!

I used Daemon tools to mount the MDS/MDF image, and just pointed DOSBox to the CD drive letter with a simple:

mount d: f:\ -t cdrom

And now when I fired up Quake, it’ll play the music tracks from the CD.

Quake 101 on DOSBox

One thing that caught my interest was that when you exit the game, I get the “couldn’t load endscreen.” message.

Well it turns out that someone was naughty and had modified common.c on January 20th 1997,  and made the following addition:

if (h == -1)
{
Con_Printf ("Playing shareware version.\n");
// if (com_modified)
// Sys_Error ("You must have the registered version to use modified games");
// /*return;*/
}

So yeah, since they had double commented out that return statement, it’ll fall out the logic, and set the game to registered, which is why the endscreen message is missing.  Uncommenting them all will restore the default execution behavior.  Speaking of registered, on the CD there is a file QUAKE.MJ3, which is 25MB, which looks like an encrypted version of the registered game.  I guess it’d be ‘neat’ to have version 1.01, although the Steam version I have is 1.06 and I don’t know how much difference it’d really make.   Although I guess 22 years later it doesn’t matter much.

On the one hand I’m really impressed that it works.  For anyone who is slightly interested I guess, you can find my re-build of the source here:

Quake101-djgpp2.zip

So my old machine’s 16GB memory limit is becoming a problem

MacPro guts

And like a sucker I saw this 2010 MacPro for sale, $300.  It was running OS X 10.13 aka High Sierra, and I though oh cool it’s obviously able to run the latest OS, and even better with 32GB of RAM, and apparently the single processor model can go up to 48 or 64GB of ram giving me that breathing space I need.

So I happily get the machine, put in some new SSDs, and spinning disks, and decide that I’m going to split it up half for OS X, and half for Windows 10.  Sounds easy right?  And for the hell of it, I wanted to install a copy of 10.6.8 (Snow Leopard), since it’s the last version with Rosetta, and I’d love to compare GrandPa’s G5 to this 2010 space Odyssey.  Snow Leopard installs just fine, but the real fun comes from High Sierra and it’s APFS.  I installed & licensed a copy of Windows 10 Pro onto the Mac without issue, installed the bootcamp drivers, and.. well it installs Okay but drivers are a whole different story.

Apparently there is an ongoing war between Apple and ATI regarding bootcamp drivers, so the Apple UEFI cards won’t work with the stock drivers under Windows.  You can go and look for patched ATI drivers over at bootcampdrivers.com, although I had no luck with the Radeon HD 5700 that was in this machine, as it’s GPU never showed up in the Windows 10 device manager.

I still wanted to get accelerated graphics, and I decided to keep the old ATI card in the machine so I wouldn’t’ lose boot graphics from the UEFI ROM, but a card that needs additional drivers is fine, which opens the door to Nvidia.  I wasn’t ready to spend a fortune on a card, and I wanted one that didn’t draw that much power, so the 1030 was a perfect fit being cheap and not requiring additional power hookups.

GeFroce 1030

I just went with the cheapest one I could find retail.

Naturally the NVidia cards work fine in Windows, but of course Apple won’t use any stock plain PC cards.  But thankfully NVidia has ‘internet’ drivers that cover quite a few of their cards, including the 1030-1080’s. I had further issues with the built in audio drivers, which Windows always prefers to load some generic “High Definition Audio Device” driver, but it never makes any noise.  So I bought a cheap external USB Sound Blaster Play! 3 dongal, which works fine.

Old Xeon in MacPro

And then there is the fun with VMWare, I upgraded both VMWare Player to version 14, and Fusion to version 10.  And yeah, the Xeon W3565 is far too old.

No new VMWare for you!

Although my version 10 key of Fusion works on version 8, just as VMWare Player 12 works fine on Windows 10.

And if that wasn’t crazy enough, in the bootcamp boot driver selection, the High Sierra volume cannot be selected.  Even if you install onto a HFS+ volume, upgrade a 10.6.3 volume or whatever you do, High Sierra converts the filesystem into something that bootcamp doesn’t understand, so the only way to boot between the OS’s is to hold down the option key, and select the OS from the ROM, which thankfully after an update understands and boots APFS.

You think it’d be easy to just push an update to the bootcamp boot tool, but apparently it isn’t.

I don’t know why, but for all the money Apple is sitting on, they really don’t feel that together or with it.  I know in the whole ’99-05 time period they were not only fighting for their lives, but the whole OS 9 to OS X transition phase, just felt so much better done.  Ever since 10.4 it feels like things are just subtracted, nothing really useful added.  First Classic support, then PowerPC, then Rosetta.  Going from 10.7 to 10.13 really hasn’t been all that exciting.  Which has been the general state of things, with everyone for the most part just running VMS or Unix.

Using UnixWare 2 to Set Up a Web Server: A Case Study

I stumbled across this ancient page, and thought it was so dated that I had to share it.

https://support.novell.com/techcenter/articles/ana19950903.html

Bravo on MicroFocus for keeping it up.

Original UnixWare website over at Novell

It’s kind of cute they ran it all on a couple of  Zenith Z-Server LT P60E computers, which have 128MB of RAM and 5GB of hard disk space, and 2 T1’s.

Even more shocking to me is that their LAN was just 10Mbit, which for a Unix/Networking OEM you’d think they would be on the edge with new tech like 100Mbit Ethernet, or more complicated/fast technology like ATM or FDDI.  Heck even 16MB Token Ring.

Novell home page circa 1995

It’s amazing the tiny screens we had back then.  I can still remember the 800×600 debate, as people even in the later 90’s were pushing for megabyte pages, and ludicrously big real-estate.

As always it’s funny how dismissive they were of Linux:

Linux didn’t have good support and we were concerned about its ability to perform under heavy loads

And of course how they dismissed Windows NT:

Windows NT, on the other hand, handled the chores okay, but it lacks a wide developer base. As a result, few tools are available for working with Windows NT. 

Naturally the tell is that they didn’t load HTTPD directly on NetWare as it was dead with the arrival of Windows NT.  And UnixWare and commercial Unix was also dead with the utter stagnation of SYSVR4.

UnixWare home page

And the product page for UnixWare was that awkward 50’s stock images, with too much red/pink that was all to common for Novell back then.  It’s almost laughable that they considered being able to run on the i386 as being ‘portable’ but for whatever reason they never could port UnixWare to any other platforms.  When they sold off UnixWare to Caldera they failed to do anything with it, and famously turned to lawsuits to attempt to recoup their money from the botched port to the Itanium that was done with IBM’s ‘help’.

UnixWare was going to lead the charge in the post SYSV world, but it’s constantly being sold, and pushed to do different things and fit an increasingly smaller role just cemented the demise of SYSV.

And of course marginalized and almost forgotten, NeXTSTEP would go on to be the #1 commercial UNIX in the market place.

Adding an Xserve RAID

Xserve Raid

So yeah, I wanted to get a ‘real’ SAN for a while, but they always cost too much.  So I just decided to look for something older, like a MSA-1000, which are surprisingly still expensive.  Failing that I thought about how I could get that MacPro 2010 for ~$300 so I said what the heck and picked up a super cheap 7TB fully loaded out Xserve RAID.

I got a PCI-133 LSI Logic “LSI7202XP” Fiber Channel card for my G5, as I figured that this stuff was of the same era, may as well configure it with a PowerPC.

Configure the LSI

After setting the LSI to 2GB and in point to point mode, the system needed a reboot, and it would report a link on the FC adapter. Great.

To actually configure the array, you need the Xserve RAID admin tool, along with a working copy of Java on your machine.  I downloaded version 1.5.1 which is thankfully still on Apple’s site. It runs fine from OS X 10.5, although the readme does make mention of 10.2, so perhaps it’d run there, although I didn’t feel like booting into 10.2 to find out.  By default the password for read only access is ‘public’ and for admin control it’s ‘private’. Yes just like SNMP community strings.

Finding the array

You need to connect the Xserve RAID to an Ethernet network.  I’ve only used the MSA’s and they let you configure them over the FC, but no so with Apple, it’s a Bonjour enabled service, so you don’t have to setup the Ethernet, just plug it in, and that’ll be good enough.

Creating the array is straight forward, however the SAN with it’s two controllers aren’t redundant, rather it’s really 2 SAN’s in one chassis with a left & right hand side.

A new disk appears!

So the solution is to use 2 connectors to the dual card, I have 2 DAC cables so I’m set.

But for now it’s just more so messing with the unit.  I’ll probably just set it in JBOD mode, and pass it up to something like Solaris 10 with ZFS exports.

Where the heck is rc.local in Debian 9?

Thanks to a quick search here is how to re-create it:

cat </etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0
EOF
chmod +x /etc/rc.local
systemctl daemon-reload
systemctl start rc-local
systemctl status rc-local

Nice.

Excellent archive of Watcom C/C++ CD-ROMs on Archive.org

Watcom C/C++ CD-ROM collection!

I found this collection recently by accident, but it’s certainly worth sharing.  I was a SUPER big fan of Watcom C/C++ 10.0 back in the day as it includes not only so many targets, but also host setups making it a really great compiler for the day to target 16-bit MS-DOS, 32bit extended DOS,  OS/2 16bit & 32bit, Win16, Win32, a custom 32bit Windows extender, 32bit Novel NLM’s, Autocad extensions, and no doubt many more I’m forgetting.

Head on over, and just search for Watcom:

https://archive.org/search.php?query=Watcom

Or for the heck of it:

This is great for things like trying to build Duke Nuke’m 3D, and other vintage era stuff.

Unsurprisingly my adventure in containers failed. again.

I can’t catch a break.

2018-05-28 07:31:48 > [Sun May 27 23:31:46.625718 2018] [core:crit] [pid 17] (13)Permission denied: [client A.B.C.D:34944] AH00529: /var/www/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/var/www/' is executable
2018-05-28 07:31:48 > A.B.C.D - - [27/May/2018:23:31:46 +0000] "GET /wordpress/category/japanese-software/ HTTP/1.1" 403 570 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50"
2018-05-28 07:31:48 > [Sun May 27 23:31:46.742137 2018] [core:crit] [pid 18] (13)Permission denied: [client A.B.C.D:34950] AH00529: /var/www/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/var/www/' is executable
2018-05-28 07:31:48 > A.B.C.D - - [27/May/2018:23:31:46 +0000] "GET /feed/ HTTP/1.1" 403 538 "-" "Tiny Tiny RSS/17.12 (4fa64e8) (http://tt-rss.org/)"
2018-05-28 07:31:48 > [Sun May 27 23:31:48.249140 2018] [core:crit] [pid 19] (13)Permission denied: [client A.B.C.D:35034] AH00529: /var/www/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/var/www/' is executable
2018-05-28 07:31:48 > A.B.C.D - - [27/May/2018:23:31:48 +0000] "GET /2014/05/ HTTP/1.1" 403 541 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50"

Or even later on, trying to restart the container

2018-05-28 20:20:34 > Starting task neozeed-blog_webserver_web1.828b8c42-6271-11e8-bbc7-c22eda63b1bd
2018-05-28 20:20:37 > docker: Error response from daemon: VolumeDriver.Mount: {"Error":"open /dev/scinia: invalid argument"}.
2018-05-28 20:20:37 > See 'docker run --help'.
2018-05-28 20:20:46 > Starting task neozeed-blog_webserver_web1.8ae12f33-6271-11e8-bbc7-c22eda63b1bd

I swear this is such a crappy year for hosting…. I guess we’ll see how long this one lasts, lol

IOCCC 2018 Best of show, aka PDP-7 emulation in under 4kb!

The most incredible thing about this PDP-7 emulator is that it not only can run Unix v0 as recovered by TUHS, but for kicks there is also a PDP-11 emulator coded in PDP-7 assembly that is capable of running both Unix v6 & 2.9BSD!

So if I have a PDP-7 emulator, how do I run operating systems that expect a PDP-11? Simple… I emulate a PDP-11/40 on the PDP-7. I have written PDP-7 assembler code to emulate a PDP-11/40 with the following equipment:

PDP-11/40 (KD11-A)
EIS instruction set (KE11-E)
Memory management unit (KJ11-A)
Line time clock (KT11-D)
124 Kwords of memory (244 Kbytes)
RK05 fixed disk drive (RK11)
Console TTY (DL11)

And as you can see, here is the PDP-7 running 2.9BSD via the emulated PDP-11!

You read that right.  And yes, here it is running 2.9BSD.  This is nothing short of amazing!

Read about Christopher Mills’s entry here:

http://ioccc.org/2018/mills/hint.html

And yes, the source has been stylized like a paper tape…

It really works best on a ‘real’ Unix like system.  I’ve run it on Debian 9 & OS X 10.13.14 … It does consume 100% of a CPU core.  But it’ll run a PDP-7 with v0 Unix, PDP-11 with Unix v6, and the aforementioned 2.9BSD. The Linux subsystem for Windows 10 didn’t handle the terminal control so well.

So, yeah kill your CPU and bask in the 4k glory!

BattleTech musings

Now that I have awesome animated GIF technology I can show off one of the greatest things to do in the 1988 BattleTech game, escaping the initial Kurita invasion with a battle mech.  While you can try to beat the 3-4 Jenners, and maybe win, it’s far far far easier to just make a dash for it.

So basically all you have to do is run south, then head west, don’t engage, just jump over rough terrain, and run!  Once outside the wall, you can flee.
Meanwhile back in 2018, people are crying that the new BattleTech is some how stacked, and the AI just cheats.  But the mechanics are pretty darned close to the real table top game, except that if you have been pushed down, you can not only get up on your next turn, but run around and fire.  Grrr…  The story in 2018 is just as laughably bad as it was in 1988, but honestly I didn’t come here for Shakespear, I wanted to see giant robots fight!  I know for many the idea of the table top game is … well outside of what people know, and the idea that you are standing in front of something with a 98% chance to hit, and you not only miss, but manage to explode while doing so is just a slice of life that is the hell that is table top gaming.

And for those who think the new game is rather ‘un-fair’, Just after I stole the Chameleon, guess what happened?

That’s right, a Locust of all things got off a lucky shot to my weak back, and destroyed my mech, and the next shot with a machine gun, killed me as I tried to flee.  How is that for fair?

BattleTech has always been like this.

So yeah, Kids need to GTFO my lawn.