A quick lookback at Virtual PC for Windows

AKA Yes, of course you can run DooM!

DooM v1.1 at 16 colours

While it’s been … quite some time, I used to use an early beta of VMware 1.0 back in the day early 00’s I believe for Linux, where I could run Lotus notes and some other apps that just of course were not available for Linux. And it was neat but a bit pricey. And as I’d tout the benefits of having desktop virtual computers, getting rid of the need of having a stack of random junk PCs from your desk.

The retail box of Virtual PC for Windows

Connectix was trying new things, and yeah, the Mac was a dying platform, and bringing their tech to the PC was a winning move that would have lasting ramifications for the industry for decades. Well that and getting bought out by Microsoft.

Virtual PC for the PC, was another great, but short-lived solution for those few of us that got the ‘pc virtualization’ bug early on, before the tidal wave of bare metal hypervisors, and the serious business it’d create.

For me, it was the ability to use server class hardware with multiple PSU’s lots of RAM, redundant disks as firewalls that I could easily setup with multiple network cards, and instances allowing full isolation, and hide the mess of wires with something that looked pretty elegant.

Booting PC-DOS 7.01

I’d recently come across a copy of Virtual PC 4.0 for Windows, the system requirements are pretty log, Windows ME (98 is reported to work), NT 4.0 & Windows 2000. As a bonus it includes PC DOS 7.01. Just like the Mac minimal versions.

Running VPC on NT under Qemu is dooable, even under OS X, although you’ll want sound, of course which is a bit tricky now.


qemu-system-i386 -m 256 -cpu pentium -hda nt4wks.vmdk -net nic,model=pcnet -net user -cdrom nt4allinone.iso -device sb16,audiodev=snd,iobase=0x220,irq=7,dma=1 -device adlib,audiodev=snd -audiodev coreaudio,id=snd -parallel none -serial none -drive file=fat:rw:/tmp/vbemp

Although this is a bit involved, I have issues with the later QEMU’s sound blaster emulation and found it best to specify IRQ 7, which means removing the parallel port (who prints anyways?!). I also used the vbempj driver for that full colour experence.

Return to Zork

Although games like Links386, Return to Zork, DooM should have had retail Windows versions IMHO, but I know that getting 32bit games up and running on Windows 3.1 had so many dependancies and hardware requirements that made it quite the ordeal (as mentioned when running DooM on Windows 3.1)

For a long while your options for playing ‘old’ circa mid 90’s MS-DOS games was going all in on NT4/2000/XP with a fast machine and VirtualPC (there was a time when DOSBox wasn’t a thing) or the NTVDM emulated sound blaster driver. At least XP 32bit had one built in (and hidden sadly). But as machines pulled away from ISA and got faster, dual booting to MS-DOS for games with sound became a thing of the past, very quickly.

As shown above, of course I had to run DooM. even on the glorious 16 colour display, but yeah. And yeah it’s great!

I should add, that also for a long while this was my preferred way to play DOS games like DooM, or a multitude of things, also like running OS/2, this was my go-to way to get things done. You can check in the history that I was also a super big fan of Virtual PC 2004 on XP. It’s kind of crazy that Virtual PC for Windows is some 24 years ago now!

I had to limit the CPU to pentium level for the installation, then Virtual PC requires a Pentium II or higher. But luckily that’s a simple switch for Qemu.

So, while on this path, I thought it’d be fun to try the next evolution, Virtual Server 2005 on Windows Server 2003. Because I love old stuff, I ran Qemu 0.15.1 because yeah it’s so ancient. bonus!

qemu.exe -L pc-bios -m 512 -cpu pentium3 -net nic,model=pcnet -net user -hda 2003.vmdk -redir tcp:1024::1024

The good news is that Windows Server installed okay, and so did Virtual Server. However running was a different story:

Changing the CPU flag to any combination got the same result that a Pentium II or greater is required. Bummer.

I have a copy of VMWare Workstation handy, and thought I could just mount the VMDK, and good to go. No. Nooooo. Or at least I failed. Use the install template for 2003, and just deal with it. I know. dissapoint.

However, the best part is that it runs fine on VMware. Although it is SLOW. so slow. I updated the VM to 4 core, single processor, 512Mb of ram, and installed Service Pack 1 for the 2003 server. It helped a bit too!

The big fun of Virtual Server is of course being able to manage it remotely, although the remote console is an ActiveX control, so you need to enable IE mode on Edge. It’s under settings and ‘compatibility’ , turn on the 11 mode, and add the admin site and blamo good to go!

And yeah!

You can kinda use the server remotely from a modern machine. Many menu options don’t render correctly, and I had to copy/paste some of the URL’s directly. I think I had this issue with FireFox 20 years ago, although I don’t feel like digging that far deep. It may have been chrome too, but does it matter? I need that ActiveX hook.

With the control loaded, and DooM set to low resolution and drop the render window and..

Well yeah, it’s almost okay.

I’ll have to dig out a P4 and try it native, as emulation in emulation is of course a finicky thing. But I’m all too happy to run this on my laptop without getting my hands dirty dealing with old hardware.

Kind of what got me into this in the first place, running it all, virtually.

‘Till next time!

Microsoft Word 6.0 for PowerPC NT

(This is a guest post by Antoni Sawicki aka Tenox)

It appears that up until just now we did not have archived copy of MS Word 6.0 for PPC. There were copies floating for Alpha and MIPS, for example https://archive.org/details/ms-word60-nt. However PPC version was nowhere to be found…

Until Term24 pointed me to this eBay auction:

Since it clearly said PowerPC on the box I got it… and here it is:

MS Word 6.0 on Windows NT 4.0 PowerPC / PPC

Now thanks to Rairii you can enjoy it on a PowerMac or WII!

Download ISO or RAR

Web Rendering Proxy 4.9 – Featuring Ultra Fast GIF Render

(This is a guest post from Antoni Sawicki aka Tenox)

For those not familiar, WRP is a “proxy” that allows vintage web browsers to surf modern web. Some details in old post and another one.

It works pretty well for casual use, however it always been a little slow, and not only on the old computer side. Screenshot capture and encoding to GIF image has always been little time challenged. As of version 4.6, Hill Ma added a fast gif encoder with optimized palette. This has been a game changer. However the image encoding was still single threaded bottleneck.

In v4.9 I have added a parallel, multithreaded GIF encoder that uses Hill’s fast palette optimization. The improvement is about 100x faster encoding on my 20 core Mac Studio. In addition the file size is also about 30-40% smaller than the original. It’s actually faster and smaller than PNG image! This encoder works both in ISMAP and Simple HTML mode. It finally allows for fast and snappy browsing experience!

In addition I have added support for Brave Browser, DuckDuckGo search, as Google had Captcha nightmare. Finally the default, automatic “headless” User Agent has been replaced with jnrsbsn allowing some rudimentary anti-headless browser detection.

Happy browsing!

quick note on re-purposing old Windows Hyper-V servers

imagine being so pressed for time, not having any OS CDs or a boot server as it’s all gone.

you find these old servers, pull them off the domain and join a new one, and much to your amazement they remember where they were.

endless problems .

but you don’t have the time to format, you need a cluster built of garbage and you need it quickly. Simply run this from PowerShell:

Clear-ClusterNode

running that zapped the cluster config.

which is odd, I thought it lived in AD.

also using TruNAS it doesn’t load for anything over the ilo console. Didn’t have the time again. Using Rufus, use the 2nd option, DD mode, and it installed like a snap.

Enjoying some Real Audio on a working Friday

I have some old stuff transcoded to Real Audio, because why not? It’s like a magical hidden file-format from years past.

Granted the streaming software is so old, it breaks with NAT, but there was an older playable RAM / playlist file that’d just pull down .ra’s from a web server, like a snap. Except I never could get it to work right, but I didn’t spend much energy on it, because who cares?

GET /DSOTM.ram

Well I went for it today, hooked up some tcpdump after getting the stupid ‘error 11’ and yeah, turns out that even the 3.0 client is HTTP 1.0. So that means it doesn’t use named servers, so you can’t really put it on a modern web server. It’s bad enough it doesn’t like modern cryptography, but this is just the worst. So I figured I’d just try to do something raw as I’m also kinda annoyed that I can’t have good old HTTP access to my vpsland archive, since google will penalize you for having HTTP sites/links. But a $1 VPS and a $1 domain, and I’m in business.

The first thing I went to do was to setup haproxy to front all this, as I like to use all kinds of weird backends, like UnixWare, or Windows NT 3.1

+
+frontend http8888
+        bind *:8888
+        mode http
+        http-request set-header Connection "keep-alive" if { req.ver "1.0" }
+        http-request set-header Host "dsotm.rabbitfoxtrot.uk" if { req.ver "1.0" }
+
+        acl dsotm hdr(host) -i dsotm.rabbitfoxtrot.uk:8888
+        acl is_ra path_end .ra .RA
+        acl is_ram path_end .ram .RAM
+        use_backend dsotm if dsotm || is_ra || is_ram
+
+backend dsotm
+        balance leastconn
+        option httpclose
+        option forwardfor
+        server local1 127.0.0.1:80 check inter 500 maxconn 20
a

This diff is for the /etc/haproxy/haproxy.conf which simply adds an 8888 front end. I set it to add a ‘keep-alive’ & ‘Host’ fields in the header to start to make it seem a bit right.

Next it will parse out the extension of what files are being retrieved. More magic would be needed to do multiple RealAudio’s in that different paths/trees for sure, but since this is the only one on that front end, just looking for the .ra/.ram is enough. I could also attach other sites to that front end, dancing around this, but that’s a bit more work.

that’ll attach a name, in this case dsotm.rabbitfoxtrot.uk, and then shove it to the local Apache server which I’ve moved to the loopback adapter.

Configuring Apache is a bit more involved with all the moving parts:

ports.conf

--- ports.conf.dist     2025-04-11 17:28:47.627256671 +0000
+++ ports.conf  2025-04-11 17:28:58.374176767 +0000
@@ -2,7 +2,7 @@
 # have to change the VirtualHost statement in
 # /etc/apache2/sites-enabled/000-default.conf

-Listen 80
+Listen 127.0.0.1:80

 <IfModule ssl_module>
        Listen 443

The whole point is to make Apache listen on the loopback interface, not the public address. This way haproxy gets the requests first so it can alter/direct them as needed.

The final part, which combines the MiME magic, is contained in the sites-availble directory which then of course is linked to the sites-enabled

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName dsotm.rabbitfoxtrot.uk

        ServerAdmin [email protected]
        DocumentRoot /srv/www/vpsland/low/DSOTM

        AddType audio/x-pn-realaudio            ram
        AddType audio/x-pn-realaudio-plugin     rpm
        AddType audio/x-realaudio               ra

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error/dsotm-error.log
        CustomLog ${APACHE_LOG_DIR}/dsotm-access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
    <Directory /srv/www/vpsland/low/DSOTM>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
    Require all granted
    </Directory>
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

So now I can still host a half dozen other websites on that Apache server but also have that special ‘front door’ access on port 8888 that’ll take notice of requests for .ra/.ram files and it’ll transform those into something more HTTP 1.1 which Apache will enjoy.

Playing!

And even better, it works.

At some point, like the boxed wine project we’ll hit the point where you can just 90’s internet 100% in the browser to other browser ‘server’ nodes. It’ll be awesome.

Build your own Apple DTK and save a fortune!

AI Slop

I am not a cool person.

I don’t get invited to all the cool people events.

I never get to bask in the glory of FOMO Apple glory.

It’ll be 20 years ago the rumors were insane that Apple was going to dump the beloved PowerPC for intel. Darwin (the open-source core to OS X) was publicly available on Intel processors, and the scene was set for one of the most exciting transitions of the time:

The WWDC 2005 announcement

At the 2005 WWDC the bomb was dropped.

The star of the show, of course is that the entire OS X 10.4 Tiger demo was on the intel machine, and for a low price of being invited, belonging to the club & $999 USD you too could be part of the next big FOMO.

So as the big reveal went, not only was OS X on intel now a thing, it “secretly” was always a thing, and had always been the escape hatch from being locked in. And it’s no surprise, it saved NeXT as the i386 “white box” was the cheapest and fastest NeXT ever, just as further transitions to 64 bit then ARM64 would necessitate.

So how does one reasonably acquire one of these mythical beasts, 20 years after the fact? Well basically unless you are a cool kid in the know, you don’t.

however as mentioned in a few places the ATK was quickly out together with standard parts. And if this sounds like the genesis of the IBM 5150 PC, you’d be right! The star of the show is the late SSE3 enabled Pentium 4 processors and the Intel 915 chipset with onboard GMA 900 video.

Thankfully intel sold these parts to whomever basically wanted them, so they were sold on a bunch of partner boards, OEM, and even Intel fabricated boards. It may be my fault as typical board/processor/ram setups can be had for ยฃ5 in the UK, the magical 915 chipset has jumped these well north of ยฃ100. However, from my searching there are a few OEM systems with the needed chips, and that is the Dell Dimension 3100.

She’s ugly, but she works!

Now I know I got lucky as I got mine for ยฃ0.99 + ยฃ9 shipping! A huge shout out to my patreons for financing stuff like this! The unit was shown in pictures absolutely filthy, missing an optical drive and “untested”. We all know that it’s code for it was tested, it didn’t work, and it wasn’t worth their time to clean up and fix.

Opening the system up, revealed an ancient mechanical SATA disk, a bunch of dust bunnies, and empty memory sockets where the ram should go. Since I had purchased 7 other boards over the last 2 years (yes! Really! 7!!!), I have ample spare ram, gave it 2x512MB sticks, a new cr2032 CMOS battery, and the hard disk failed to spin or detect, but the machine powered up, did the POST test with no issues! I’ve got to say I was super happy so far! I have a ยฃ6 SSD I picked up from CeX, so I placed that into the machine, and now for the OS install.

My first choice was to create a Linux bootable USB stick and just copy the deadmoo image to the SSD. Of course, this came with the caveat that the disk is in the VMDK format which needed to convert using Qemu’s qemu-img utility to a raw disk image, then to compress it with gzip, as the Ubuntu install image seems to only understand gzip. I guess the next pro move is to see about a static standalone iSCSI target, or maybe even rsync? I think there is even Qemu network disk protocols by now, so it may be a way to get around the lack of optical media…? Anyways!

The deadmoo image can be decompressed and copied to the hard disk easily! It’s about 2gb compressed and 6GB uncompressed. A reboot, and we’re quickly and semi glitched in as Curtis to their desktop!

there is a pre-installed driver causing issues which drops us back to the fallback SVGA buffer, and I’m happy to report that the artificing you see under emulation is also present on physical hardware. Delete the TPM driver AppleTPMACPI.kext (the root password is ‘bovinity’), and reboot again. This time there won’t be any further glitches in the video, but there is another change to make, the core graphics needs to be replaced with the SSE3 variant so that after yet another reboot again Rosetta is fully working, giving us access to PowerPC applications (that don’t require Altivec! That wouldn’t arrive until 10.4.4 just in time for the public release!). This lets the screen savers run, and important applications like iTunes and Internet Explorer 5 for Max OS X.

As Steve had demo’d it’s pretty amazing at how much just works. You can really get an appreciation at just how truly portable C is, and how LIBC is the real cross platform winner is. The company behind Rosetta transitive, had a bright future ahead of them as you can’t get a better public endorsement that Steve Jobs at a WWDC! SGi had licensed them for Itanium IRIX, and if the other Unix vendors didn’t partner there was also a Linux path. Honestly, I’m surprised SUN didn’t buy them and do the same thing as Apple and jettison the SPARC, as they can sell a LOT more 1u servers, desktops and laptops than giant E10ks, but IBM equally scared and trapped on their AIX / UnixWare Itanium merge Monterey that sold like 5 units, instead bought the company and quickly disappeared the technology.

What a shame for the industry, but x86_64 still is an unstoppable force. Well at least until someone seriously challenges them.

Getting back to OS X, this is meant for developers, and the deadmoo image has X code installed, although I prefer to use the cli tools. This is a weird time in history as many things may support OS X, but they make really bad platform assumptions, and force endian directions breaking the given stance of all OS X is big endian – even though Intel Darwin has been around the entire time.

Ive had good luck with stuff that is much later than vintage 2005, as I’m lazy and it’s 2025. The fun stuff id built were:

  • SDL 1.15
  • DOSBox SVN
  • Qemu 0.10
  • Classic Cube
  • ssystem-1.6

I had thought that the performance using GCC 3 would be better than GCC 4 for Qemu, but after a lot of work I’d benched it with DooM v1.1 that V4 is faster.

Ssystem-1.6

Compatibility with OpenGL games is atrocious, but I’m pretty sure by the time 10.4.4 went public compatibility was better, although I doubt contemporary machines did all that well as there is a reason there was a rush to get intel versions out.

Building your own:

Intel 915G/915GV/910GL PCI Accelerated SVGA BIOS

The primary ingredient here is a board with the Intel 910/915 Graphics chips, which limits us to the late Intel Pentium 4 boards, with that terrible integrated video. It’s not the best video chipset in the world, but the only one that 10.4.1 had 3d acceleration for.

Apple Development Platform ADP 2,1

I had found out that the Dell 3100 pre-built tower has the supported chipset & CPU, however it doesn’t have the correct onboard network card.

Intel Desktop Board D915PSY

The Intel LAN boards of the era with the 915 moniker & Pentium 4 should be fine enough.

I don’t know why they are so expensive either.

Although in the recent years these boards have gotten rather expensive. I can’t imagine why, as they absolutely suck for retro gaming as you’d 100% use a GPU, Other than 10.4.1 I can’t imagine why anyone would want a P4/915 combo.

While you could dd a deadmoo image onto 2 disks, then play partition games, it’s far easier to use the converted ISO with 10.4.1 to just boot up and install if that is an option.

If you don’t have a 910/915 based board, you can run this under emulation well enough. The weird graphical glitches you’ll experience are present on real hardware as well.

While not terribly useful, it is an interesting glimpse as at least x86 is available to the masses.

Hacking Windows NT 4.0 SMP for more than 2 CPUs

While trying to index a massive dataset, I found that the whole AltaVista process was kind of slow. And what better way to hope to speed it up, than to add some more processors. The catch is that the indexer only works on the Workstation SKU, and as such it’ll limit you to two processors. But what if one of those ‘one simple trick’ tricks actually can unlock all your cores?

From Rairii:

load the registry hive setupreg.hiv from i386 folder
in ControlSet001\Services\setupdd
default registry value
at offset 8, replace the value thats there (probably 00) with 20, ie decimal 32
then when reinstalling it should set up the registry to allow 32 cpus
ControlSet001-Services-setupdd

I didn’t want to bother trying to make a ‘correct’ NT 4 CD, so I just did the dos bootable disk image thing, and the old school “winnt /b” setup from within DOS on VMWare Workstation 17, and yeah behold!

NT 4.0 Workstation on VMware Workstation Pro 17

Although I should add that it’s not all sunshine and rainbows, it fails to boot about 50% of the time with a stop 0x00000078 PHASE0_EXCEPTION. I don’t know what is up with that, if it’s my AMD processor, something with VMware…

PHASE0_EXCEPTION

Sadly, for anyone wondering, it didn’t help my use case. The fundamental issue being that AltaVista tries to actually use filters to interpret the data, and Microsoft Word documents with the .txt extension, or anything with 90’s L337 ascii art just straight up trip up the indexer halting all progress.

ASCII ART BAD!!

Obviously, this is building up to something else, something I think is kind of exciting, but even as a ‘distraction’ adding more cores to NT 4.0 Workstation is always a good thing!

Expanding Windows drives

Granted this isn’t fun. But it’s virtual. We live in an era of exciting expandable disks!

first off start with a full disk. That’s great. In this case the host was proxmox. It doesn’t matter. You apparently have to shut down the VM to expand the disk. Other virtualizers don’t need that. But whatever.

now for the predictable fun. That recovery partition is in the way. Not sure why NTFS needs to be contiguous but here we are.

So now we are stuck. You Google how to expand NTFS drive, how to move recovery partition, how to make disk bigger!! All in vain as everyone is pushing these nifty partition mover programs that don’t run on server. Do you just nuke the partition and hope for the best?

No, we can back it up, delete it, expand our disk and recreate it!

Capture the partition

Dism /Capture-Image /ImageFile:C:\my-system-partition.wim /CaptureDir:S:\ /Name:"My system partition"
Microsoft DiskPart version 10.0.19041.3636

Copyright (C) Microsoft Corporation.
On computer: KOMPUTER

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          250 GB   200 GB

DISKPART> select disk 0

Disk 0 is now the selected disk.

DISKPART> list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Primary             50 MB  1024 KB
  Partition 2    Primary             49 GB    51 MB
  Partition 3    Recovery           522 MB    49 GB

DISKPART> select partition 3

Partition 3 is now the selected partition.

DISKPART> delete partition OVERRIDE

DiskPart successfully deleted the selected partition.

restore the partition

dism /Apply-Image /ImageFile:c:\my-system-partition.wim /Index:1 /ApplyDir:w:\

Then tag the partition back to being a Recovery partition.

DISKPART> list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Primary             50 MB  1024 KB
  Partition 2    Primary            249 GB    51 MB
  Partition 3    Primary            600 MB   249 GB

DISKPART> select partition 3

Partition 3 is now the selected partition.

DISKPART> set id=27

DiskPart successfully set the partition ID.

DISKPART> list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Primary             50 MB  1024 KB
  Partition 2    Primary            249 GB    51 MB
* Partition 3    Recovery           600 MB   249 GB

DISKPART>

depending on the version the command may fail setting type 27, so try:

set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"ย 

and there we go!

One big happy drive! ๐ŸŽ‰

Qemu / GCC / Tiger aka assumptions on GCC v3 performance

Well this took a shocking turn;

I’d always seen on Windows that Qemu built with GCC 3.4.5 was not only faster, but more stable than GCC 4.x when regarding version 0.10 (I’m not even going to entertain later versions, as this is about old software).

I’ll have to post more, but I’ve basically learned nothing from all my other Pentium 4 / i915 chipset disasters, and now have my 8th system up and running!

by default it has GCC 4.0.0 for i386, and a GCC 3.x for PowerPC building. Natrually, with assumption in hand, how do you build GCC 3 for Intel?

Thankfully, the question was asked on Mac OS X Hints a few decades ago:

https://web.archive.org/web/20070610073818/http://www.macosxhints.com/article.php?story=20060423105014540

And it was saved in the wayback machine, because, preserving the past is hard.

The steps are pretty simple:

$ tar -zxf gcc_os-1819.tar.gz

3. Fix a line that causes it to not compile: in the file gcc_os-1819/gcc/gcc.c, on line 5883, change the line to look like this:

(char ) v[q - vt] = 0;

4. Make a build directory and run configure. I installed my compiler in /opt/gcc3, and I only built the C compiler. This would not work for building C++ or Cocoa applications.
$ mkdir build
$ cd build
$ ../gcc_os-1819/configure --prefix=/opt/gcc3 --enable-languages=c

Which was great except where on earth am I going to find this old GCC?

In retrospect there are 2 places, naturally, archive.org kept a copy of the Apple pages, the other being github.

For the 2-3 people who will be interested in this kind of thing 20 years from now I went ahead and did the single patch, and built binaries and put them on github over at gcc_os-1819_Marklar.

For testing, I’m using a VMDK with MS-DOS 5.00 no config.sys and DooM v1.1 running the timedemo both with no sound. (gametics/realtics)*35=fps. and in this case, demo1 of DooM v1.1 is 1077 gameticks.

GCC 3.5     gcc version 3.5.0 20041003 (Apple Computer, Inc. build 3506)
GCC 4.0     gcc version 4.0.0 (Apple Computer, Inc. build 5026)

no draw (ticks)

GCC 3.5       6/7/7
GCC 4.0       6/7/6

draw-16bit screen depth (ticks)

GCC 3.5       1074/1074/1077
GCC 4.0       948/947/949

And now for the bad news, it turns out that GCC 4.0 is just slightly faster than GCC 3.3

I couldn’t believe it either.

For anyone that cares, DOSbox SVN builds more or less okay on Tiger with some small fix to the MIDI compatibility code (#ifdef stuff, the MIDI works fine!) and it’s timings are for no draw

DOSBox          566/560/565

and drawing on a 32bit screen (16bit is incompatible)

DOSBox          22/26/25

The takeaway is that the CPU is much faster on Qemu, but screen rendering is much faster with DOSBox. DOSBox uses SDL, so let’s go one further, and rebuild Qemu with SDL instead of it’s Cocoa support! So how we doing in the tick department?

GCC 3.5       1005/999/1000
GCC 4.0       885/886/882

The real killer would of course be trying a newer version of GCC. Which I tried several, but Apple had done something really strange to them, where they product self-modifying code by default. And the assembler in 10.4.1 can’t handle that.

unknown section attribute: self_modifying_code

No really, it’s a thing!

Obviously, I updated my cc-tools to 622.9, and guess what?

I tried :

  • gcc-5247
  • gcc-5250
  • gcc-5370

All give the following:

Illegal instruction

Is this some DTK Pentium 4 thing? Or a Tiger 10.4.1 thing?

verbose output for the curious:

Viglen:~/tmp2 jsteve$ gcc -v hi.c -o hi
Using built-in specs.
Target: i686-apple-darwin8.1.0
Configured with: ../gcc-5247/configure --prefix=/opt/gcc-5247 --enable-languages=c
Thread model: posix
gcc version 4.0.1 (Apple Computer, Inc. build 5247)
 /opt/gcc-5247/libexec/gcc/i686-apple-darwin8.1.0/4.0.1/cc1 -quiet -v -D__DYNAMIC__ hi.c -fPIC -quiet -dumpbase hi.c -auxbase hi -version -o /var/tmp//ccq5CJ5D.s
ignoring nonexistent directory "/opt/gcc-5247/lib/gcc/i686-apple-darwin8.1.0/4.0.1/../../../../i686-apple-darwin8.1.0/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /opt/gcc-5247/include
 /opt/gcc-5247/lib/gcc/i686-apple-darwin8.1.0/4.0.1/include
 /usr/include
 /System/Library/Frameworks
 /Library/Frameworks
End of search list.
GNU C version 4.0.1 (Apple Computer, Inc. build 5247) (i686-apple-darwin8.1.0)
        compiled by GNU C version 4.0.0 (Apple Computer, Inc. build 5026).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 8944321fb1b2a413196eb995bbfd7ab0
hi.c: In function 'main':
hi.c:3: warning: return type of 'main' is not 'int'
 as -arch i386 -force_cpusubtype_ALL -o /var/tmp//ccFyDIlr.o /var/tmp//ccq5CJ5D.s
 /opt/gcc-5247/libexec/gcc/i686-apple-darwin8.1.0/4.0.1/collect2 -dynamic -arch i386 -weak_reference_mismatches non-weak -o hi -lcrt1.o /opt/gcc-5247/lib/gcc/i686-apple-darwin8.1.0/4.0.1/crt2.o -L/opt/gcc-5247/lib/gcc/i686-apple-darwin8.1.0/4.0.1 -L/opt/gcc-5247/lib/gcc/i686-apple-darwin8.1.0/4.0.1/../../.. /var/tmp//ccFyDIlr.o -lgcc -lSystem
Viglen:~/tmp2 jsteve$ ./hi
Illegal instruction

I’m not entirely sure.

I need a Snow Leopard machine.

Also DosBox SVN wasn’t too hard to build, and runs great.