Failed Quakeworld port to OS/2 2.0

Yeah, I guess I just couldn’t salvage this thing… Sometimes when you stand on the shoulders of giants you fall off.

So what had started as a seemingly simple thing turned into a nightmare.. I took the source to my MS-DOS port of Quakeworld, and decided to build it under OS/2. And to be crazy about it, I thought it’d be awesome to get it to work under OS/2 2.0 .

Which means no sound, locked to 320×200 256 colours, full screen only, since the VGA driver won’t do anything but. Years ago on ebay I managed to score IBM TCP/IP for OS/2 2.0 & 2.1, with the LAN support!

IBM OS2 2.0 syslevel 1

IBM OS2 2.0 XR02000 (no fixpacks)

 

 

ibm os2 2.0 syslevel2

IBM TCP/IP for OS/2 with no fixpack

So as you can see from my syslevel’s I’m running a pretty bare machine, even the graphics subsystem is still 16bit!

Well the good news, is that with EMX and a HPFS disk, I was able to quickly get the null version running. With a minor amount of work, I had TCP/IP connectivity and things were going well. I had ripped apart a video demo, and got the display up, although it was ungodly slow.. Until I found out that when you are full screen you can request access to the physical video memory, under OS/2 so that sped things up a great deal!

Then all that really needed to be done was get the keyboard working.

And here is where I slipped up.

OS/2 is weird for interactive programs that want to know key states. It seems the best and most common way to do this was to setup a ‘monitor’ for the keyboard device, and try to read the stream as keys are pressed. Sadly idiots that slamm the keyboard, or gamers that hold down an arrow key for a minute lock the thing, and the key then is ‘jammed’ down until you hit it again for the release.

I’m pretty sure that I did it wrong, so I borrowed code from a more ‘advanced’ OS/2 port and it did the same thing. Maybe it’s OS/2 2.0? I don’t know, I did service pack it and update and still the same result.

I really didn’t want to spend that much time on it…..

QuakeWorld for OS/2

QuakeWorld for OS/2

I feel hesitant to release a binary as you will get killed, and I haven’t even tried the mouse yet, but I suspect it’ll still suck.

So for anyone that cares, here is the source… misspellings and all.

Duke Nukem 3D for the Macintosh (68020)

mini vmac II duke nukem

mini vmac II duke nukem

I had no idea this even existed… I guess it’s to be expected, all the popular games of the time (doom) were ported to pretty much everything and anything.

So after stubmling across this site, Emacualtion, I had to fire this thing up!

The first thing I needed to do was get the latest source to Mini vMac. What is different about this is that you get the source from within the emulator. Basically you pass a program what config you want and it’ll spit out source code. So for me to build on windows, a mac II with 256 colors, I gave it..

-t wx86 -m II -depth 3

Easy right?

There is some help on the mini vmac site, but it’s kind of in places.

With the emulator built, the next fun filled thing was to dump the ROM from my SE/30, which was.. an exciting adventure in floppy disks, but with it in hand I was ready!

The next part of the puzzle was System 7.5.3, which apple still thankfully provides, along with HFVExplorer, and Stuffit, and I was all set to go!

I created a target diskette of 100MB, then used hfvexplorer to copy 7.5.3 and it’s 19 segments into the disk. Then I booted the emulator with a minimal System 7 floppy. I then installed 7.5.3 into the 100mb disk, then shut down the emulator. Then using hfv explorer, copy over Duke and stuffit.

Boot back into MacOS, install stuffit, and expand Duke and away we GO!

Naturally with the speed limits dropped it’s quite FAST! vMac doesn’t have sound yet, so it’s a silent experience but it works quite well.

mini vmac II duke

mini vmac II duke

The sad thing is that Doom requires 32bit mode, which it seems that Mini vMac can’t do just yet.

Revisiting Netware 3.12

I know this is one of the really ‘hot issue’ things out there. Sadly the thing is that Qemu ran Netware 3.12 back in the 0.90 release, but not any release since then has been able to run it.

And after testing Netware 4.1 & 4.11 they too only run acceptably under Qemu 0.90

Otherwise on the newer versions, I get nothing but disk errors, even trying to used some 3rd party updated IDE drivers, it still does not work.

It’s very perplexing, and at the same point I know it’s not a burning priority for the Qemu team….

Proxmox/VE gets much further but ultimately I couldn’t get it all working…

Apparently it’ll run on VMWare, more information here.

One thing is for sure, Netware 3.12 and it’s “patching” system is a major nightmare.

Any Qemu higher then 0.9.0 gives this error….

“Abend: A directory buffer with no dirty bits set was encountered on the dirty list”

qemu 0.14.0 netware abend

qemu 0.14.0 netware abend

While there is the ‘scsi option’ for Qemu 0.12 and higher, you’ll need a BIOS… However for 3.12 it hinges on the DOS driver, which when loaded… crashes out Qemu.

iBCS2 & NetBSD

I know that there is some people out there that seem to be all into Xenix, and old binaries… So I thought I’d share this little gem I found before I head out for the day… I came across this post, talking about how ibcs2 has fallen apart in the latest version of NetBSD. But the gem in there is that version 4.0.1 works perfectly fine!

So I copied in the old gcc, filled in some bits and….

Qemu 0.14.0 NetBSD 4.0.1 running Xenix gcc

Qemu 0.14.0 NetBSD 4.0.1 running Xenix gcc

It works!

Robots is so perfect you’d never know!

Qemu 0.14.0 NetBSD 4.0.1 running robots

Qemu 0.14.0 NetBSD 4.0.1 running robots

And it runs Xenix Dungeon/Zork without missing a beat!

Qemu 0.14.0 NetBSD 4.0.1 running dungeon

Qemu 0.14.0 NetBSD 4.0.1 running dungeon

So this may be yet another avenue for some people… I’d suspect that you could even build the 32v userland under the Xenix tools…? Since all the default stuff is keyed to licensing, but you could roll your own Unix v7 32bit userland which basically is Xenix and go from there…. Maybe even some of the OpenSolaris SYSVR4 stuff as well but that sounds too ambitious!

Microsoft Giano and NetBSD 4.0.1

Well using the link at Microsoft, I managed to get NetBSD installed. Don’t forget you’ll need a new version of putty that supports serial ports, and connect it to \\.\pipe\USART0 when requested by the simulator. I always get a C++ exception, that I just ignore and let it keep on chugging.

So for the curious, here is a bootlog….

NetBSD/emips 4.0.1 Netboot Bootstrap, Revision 1.0
([email protected], Mon Aug 9 00:23:36 PDT 2010)

Default: 0/ace(0,0)/netbsd
boot:
Loading: 0/ace(0,0)/netbsd
2694960+177944 [152192+143455]=0x305cf4
Starting at 0x80020000

memory segment 0 start 00000000 size 10000000
memory segment 1 start 10000000 size 00100000
Too much memory in cluster 1, trimming memory to range 10000000..10000000
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007
The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.

NetBSD 4.0.1 (GENERIC) #137: Fri Dec 17 00:21:13 PST 2010
[email protected]:/usr/obj/sys/arch/emips/compile/GENERIC
Xilinx ML50x (eMIPS)
total memory = 256 MB
avail memory = 247 MB
timecounter: Timecounters tick every 62.500 msec
mainbus0 (root)
cpu0 at mainbus0: Microsoft eMIPS CPU (0x70401) Rev. 1 with software emulated floating point
cpu0: 64 TLB entries
ebus0 at mainbus0
eclock0 at ebus0 addr 0xfff80000: eMIPS clock
timecounter: Timecounter “eclock” frequency 10000000 Hz quality 2000
dz0 at ebus0 addr 0xfff90000: neilsart 1 line
ace0 at ebus0 addr 0xfff50000 : System ACE
ace1 at ebus0 addr 0xfff50100 : System ACE
enic0 at ebus0 addr 0xfff10000: eNIC [16 16], address 00:03:ff:e1:5e:ea
icap0 at ebus0 addr 0xffed0000: Internal Configuration Access Port
epio0 at ebus0 addr 0xfff60000: GPIO controller
gpio0 at epio0: 32 pins
flash0 at ebus0 addr 0xfffb0000 base f0000000: 8MB flash memory (2 x StrataFlash 28F320)
lcd at ebus0 addr 0xfff40000 not configured
evga at ebus0 addr 0xfff20000 not configured
ps2 at ebus0 addr 0xfff30000 not configured
ac97 at ebus0 addr 0xffef0000 not configured
timecounter: Timecounter “clockinterrupt” frequency 16 Hz quality 0
flash0: 8192 KB, 1 cyl, 1 head, 16384 sec, 512 bytes/sect x 16384 sectors
ace0: drive supports 255-sector PIO transfers
ace0: card is
ace0: 2048 MB, 128 cyl, 1 head, 32768 sec, 512 bytes/sect x 4194304 sectors
ace1: drive supports 255-sector PIO transfers
ace1: card is
ace1: 4460 KB, 0 cyl, 1 head, 32768 sec, 512 bytes/sect x 8920 sectors
boot device: ace0 part0
root on ace0a dumps on ace0b
root file system type: ffs
dzparam: c_ispeed 9600 ignored, keeping 38400
Sat Mar 19 21:10:50 GMT 2011
swapctl: adding /dev/ace0b as swap device at priority 0
Checking for botched superblock upgrades: done.
Starting file system checks:
/dev/race0a: file system is clean; not checking
/dev/race0d: file system is clean; not checking
/dev/race0e: file system is clean; not checking
/dev/race0f: file system is clean; not checking
Setting tty flags.
Setting sysctl variables:
Starting network.
/etc/rc: WARNING: $hostname not set.
IPv6 mode: host
Configuring network interfaces:.
Adding interface aliases:
Building databases…
Starting syslogd.
Checking for core dump…
savecore: no core dump
Mounting all filesystems…
Clearing /tmp.
Checking quotas: done.
Setting securelevel: kern.securelevel: 0 -> 1
Starting virecover.
Starting local daemons:.
Updating motd.
postfix: rebuilding /etc/mail/aliases (missing /etc/mail/aliases.db)
newaliases: warning: valid_hostname: empty hostname
newaliases: fatal: unable to use my own hostname
Mar 19 17:11:08 postfix/sendmail[402]: fatal: unable to use my own hostname
Starting inetd.
Starting cron.
Sat Mar 19 17:11:09 EDT 2011

NetBSD/emips (Amnesiac) (console)

login: root
Mar 19 17:11:14 login: ROOT LOGIN (root) ON console
Last login: Sat Mar 19 17:04:07 2011 on console
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007
The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.

NetBSD 4.0.1 (GENERIC) #137: Fri Dec 17 00:21:13 PST 2010

Welcome to NetBSD!

Terminal type is vt100.
We recommend creating a non-root account and using su(1) for root access.
#

It’s not very often you see any UNIX originating from Microsoft* (Yes I know .. Xenix) anyways it does boot, and to save anyone interested, I’ll spare you the 1.5 HOUR long install and give you my disk image.

Speaking of which, it’s SLOW. I mean S-L-O-W.

Also as a side note, here is how to mount a CD-ROM ISO image…

mount -t cd9660 /dev/ace1c /mnt

At any rate, the speed just isn’t there for any real usage.

Qemu and 64bit windows…

It’s been a while since I’ve tried to run some 64bit versions of windows so I downloaded some from MSDN, and tried to run some under the latest 0.14.0 build

First up is Windows XP x64 sp2 (en_win_xp_pro_x64_with_sp2_vl_x13-41611.iso)

I launched it like this:

qemu-system-x86_64.exe -m 1024 -hda six64.disk -L pc-bios -cdrom en_win_xp_pro_x64_with_sp2_vl_x13-41611.iso

And the bootloader loads up, but it hangs transitioning to the kernel. Nothing is logged to the serial port.

qemu 0.14.0 windows xp sp6 x64

Next up is Windows 2003 server, with no service pack.

I’m loading up Qemu like this:

qemu-system-x86_64.exe -m 1024 -hda six64.disk -L pc-bios -cdrom \install\en_ws_2003_std_x64_vl.iso

And again being met with a hung state booting the kernel.

qemu 0.14.0 windows 2003 x64

I guess this isn’t surprising as booth 2003 & XP x86_64 both use the same kernel.

Next up, I thought I’d try a longhorn beta…

qemu-system-x86_64.exe -m 1024 -hda six64.disk -L pc-bios -cdrom longhorn-some-random-beta-x86_64.iso

qemu 0.14.0 longhorn 3016

And I get a nice black screen, again transitioning to the kernel…

So let’s try Windows 2008r2 (It’s the same thing as Windows 7).

qemu 0.14.0 windows 2008 r2 x86_64 crash

So this is different, so googling around for the Stop: 0x0000005D (0x0000000078BFBF9,0x0000000000000000,0x0000000000000000,0x0000000000000000 code, led me to some config file for the x86_64 for additional CPU types. It appears that in the arch_init.c file I modified the following line:

const char arch_config_name[] = CONFIG_QEMU_CONFDIR “/target-” TARGET_ARCH “.conf”;

Into:

const char arch_config_name[] = “./target-” TARGET_ARCH “.conf”;

So that way I could pick up the ” -cpu Nehalem ” flag. Sadly it produced…

qemu 0.14.0 windows 2008 r2 x86_64 crash nehelam

Bummer.

Meanwhile, much like Novell Netware, it really only works on Qemu 0.9.0

qemu 0.9.0 widnows xp x64 sp2 boot

qemu 0.9.0 windows 2008 r2 x86_64

But not so hot for Windows 2008 r2 (AKA Windows 7).

Microsoft Giano

I stumbled across this the other day, Giano, a simulation framework.

Included is a bunch of stuff, like a basic x86 / cepc (with Windows CE 6.0 image), an Xbox 360 emulator, a SPOT emulator, some eval boards (AT91EB63?) with both MIPS and ARM cpus that even include a doom kernel like experience! A Macintosh G5 (I wonder if it’d boot with Apple ROMS..?) Oh and..

A VAX.

The VAX code is taken from SIMH but I guess to show how extensible the framework is, they mashed in enough microvax to get it going.

SIMH in a way you’ve never seen it…

At any rate, here is some other screen shots of Giano in action….

CEPC

xbox 360 alpha test

xbox360 console

And of course….

Giano MIPS doom

DOOM

Also buried in there is a new MIPS variant, the emips along with a donated NetBSD port!

Sadly I had no luck running NetBSD….

Default: 0/ace(0,0)/netbsd
boot: 0/ace(1,0)/netbsd
Loading: 0/ace(1,0)/netbsd
5085072+70448=0x4eae14
Starting at 0x80020000

memory segment 0 start 00000000 size 10000000
memory segment 1 start 10000000 size 00100000
Too much memory in cluster 0, trimming memory to range 00000000..08000000
Too much memory, ignoring memory range 10000000..10100000
pmap_steal_memory: seg 0: 0x50b 0x50b 0x7fff 0x7fff
pmap_steal_memory: seg 0: 0x54b 0x54b 0x7fff 0x7fff
pmap_steal_memory: seg 0: 0x54d 0x54d 0x7fff 0x7fff
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007, 2008, 2009, 2010, 2011
The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.

NetBSD 5.99.48 (RAMDISK) #0: Tue Mar 15 01:01:14 UTC 2011
[email protected]:/home/builds/ab/HEAD/emips/201103142200Z-obj/home/builds/ab/HEAD/src/sys/arch/emips/compile/RAMDISK
Xilinx ML50x (eMIPS)
total memory = 128 MB
avail memory = 120 MB
sysctl_createv: sysctl_create(no_sa_support) returned 22
mainbus0 (root)
cpu0 at mainbus0: Toshiba or Microsoft eMIPS CPU (0x70401) Rev. 1 with software emulated floating point
cpu0: 64 TLB entries
ebus0 at mainbus0
pid 0(system): trap: cpu0, TLB miss (load or instr. fetch) in kernel mode
status=0x2000000, cause=0x8, epc=0x8002d5c8, vaddr=0xd0000000
tf=0x8054cc78 ksp=0x8054cd18 ra=0x8002d5b8 ppl=0xd0000000
kernel: TLB miss (load or instr. fetch) trap
Stopped in pid 0.1 (system) at 0x8002d5c8: lw v0,0(s0)
db>

Maybe someone else will have better luck.

— edit, it seems Microsoft has a NetBSD 4.01 download, here. And it boots!

Who is the drizzle?

In case you’ve been hiding in a cave, you’ll know that Oracle has bought out just about all the real competition to their flagship product and basically driven the developers out.. Just as they have strangled SUN’s products in some vain attempt at a lawsuit against Google, they basically have killed mysql.

Well enter, drizzle.

I haven’t loaded it yet, but it’ll certainly be something worth investigating going forward since MySQL is effectively dead.

SPARC NetBSD on Qemu 0.14.0

I came across this link, in some kind of vain search to see if NetBSD Sparc could run on Qemu.  And the answer is a resounding yes!

I have to admit it was pretty simple to setup too. I did a network install, so all I needed in a minimal config was a GENERIC kernel, and the miniroot. I did it this way because booting with the inserted kernel lets me easily choose my root…

First I created a 2GB data disk, then start up Qemu like this…

qemu-system-sparc.exe -kernel netbsd-GENERIC -L pc-bios -hda sparc.disk -hdb miniroot.fs -net nic -net user

And it’ll boot up!

I specify the root to be sd1c, I’m not sure if it’d pick up on sd1, or sd1a but at any rate sd1c certainly works. The other gotcha I found was the keyboard, sun-type4 worked best. I also had to configure the network manually (maybe I missed something?) but the settings are simple for NAT.

address 10.0.2.15
mask 0xffffff00
gateway 10.0.2.2
dns 8.8.8.8

Any attempt to ping the gateway will fail. But it’s nothing to worry about, and the install can continue normally. I pulled the rest of NetBSD down via HTTP, and it booted up!

I should also add that the CD-ROM iso install works as well. And the NetBSD site has lots of ways of getting the install ISO for the sparc.

And of course, will it run Zork?

Yes it does!