I was just alerted to this playthrough of Quake 2 for MS-DOS by TheSlipGateUser which showcases the game play under DOSBox.
Honestly I’m terrible at Quake, QuakeWorld and Quake 2, but it’s great to see someone who knows that they are doing, and more so that under emulation the game is holding up.
I know the MS-DOS port isn’t exactly the most popular in the world, although I suspect if it had been a thing in 1997 there would have been an audience with people that didn’t want to have Windows in the background as a distraction.
That said, any new people will of course want to check out the excellent (if I do say so myself!) series “Porting Quake II to MS-DOS“.
I saw this mentioned over at Hacker News, Charles Youse’s NCC and had to check it out! It really is a ‘tiny’ K&R C compiler that is targeting a proprietary a.out file format.
This is NCC, the “new” C compiler. It is intended to be used as the system compiler for BSD/64 (my port of pre-Reno 4.3BSD to Intel/AMD 64-bit desktops).
The dialect of C accepted by the compiler is basically pre-ANSI (K&R 1978) with some common extensions and a few minor “fixes”. (See the DIALECT file for specifics.) This is both a function of the compiler’s purpose — to operate on a mid-80s codebase — and, admittedly, personal taste.
The binary tools work on a proprietary object file format and produce a.out- format executables. These are documented in obj.h and a.out.h respectively.
The compiler and its tools are fully functional and have been fairly well- tested, though they are works in progress. In particular, the optimizer is quite minimal: the framework for a more aggressive optimizer is there, but for the moment only rudimentary data-flow analysis is done to aid the register allocator and clean up the more egregious output from the code generator.
Included in the source is:
* ncc: compiler driver. * ncpp: an ANSI C89 compliant C preprocessor. * ncc1: the C compiler proper, produces assembly output * nas: accepts 16/32/64-bit Intel syntax assembly and produces .o object. * nld: the object linker – combines .o files into a.out executables. * nobj: object/executable inspector.
So I have this 2006 Mac Pro 1,1 that I’ve had laying around and I wanted to put my old Nvidia 1030 into it, along with Windows 10 for a newer (stronger?) home machine.
So I burnt the downloadable ISO from Microsoft onto a DVD, tried to boot it up and got this:
I got stuck at this “Select CD-ROM Boot Type : ” prompt, which you can’t type anything into. Apparently it’s a common and known issue with 64bit boot code, as the older Intel Apple Mac’s are of course 32bit only. So there is a fix, you have to use something called “oscdimg” to rebuild the ISO with a 32bit friendly loader.
So first I just used 7zip to extract the downloaded ISO, and then create the new 32bit ISO with the following:
Now what about those special ‘bootcamp’ drivers? Obviously under Windows 10 there is no nice way to get the ones you want. And what about which model/download package to get?
Then I found Brigadier!
It’ll probe your hardware type and grab the drivers for you!
So this is great for machines that included the seemingly useless ‘casette basic’ as you could maybe shove over something to config the machine, maybe ‘rom dos’ directly into ram to fdisk/format without using disks… Interesting stuff to say the least!
I kid you not. I had this older SSD that would just lock up after a few hours of usage, no matter what OS I’d be running. Resetting the machine would just hang as the SSD would just disappear from the computer!
Even a fresh install of Windows 10 would hang after the install, and while it was initializing itself with the “It’s taking a bit longer than expected, but we’ll get there as fast as we can” message!
Unacceptable!
Well it turns out that these things have their own processors, operating systems and well they are not just passive storage devices but machines in their own right.
And in my case it turns out that my SSD was running version 9. The latest version is version 70!
Needless to say, not only does the new version have a noticeable difference in performance, but more importantly it’ll run for hours now without crashing the SSD (which is what I imagine was happening before).
I can only imagine how long it’ll be, until there are user mode programs to load into storage, and when we cross the line with internet connectivity requirements, anti-virus and firewalls needed for storage.
While building the latest DOSBox SVN using Visual Studio 2003 I found something kind of annoying under Windows 10. The first thing is that if I search through the source code base, the application locks up, hard. It turns out that this has been an ongoing issue with Windows 8 (maybe Vista/7?) with Aero rendering of all things. The fix is to disable Desktop Compositing & Desktop Themes, but the application comparability tab is hidden on many applications for Windows 10.
See how the application preview doesn’t render anything at all? This is the hint that it’s broken. I think it may be worth sharing this ‘fix’ as I’m sure that other applications that behave strangely have the same issue.
Which, will run Visual Studio as Administrator allowing you to debug, and disable all the Aero assists for the application allowing things like search to work again.
I had gone further and enabled the Windows XP SP3 compatibility settings, however on doing a clean build I was presented with this error:
fatal error C1033: cannot open program database ''
Which I never could find any good source on what caused it, other than by guessing to remove the Windows XP flag, and now I’m able to build.
While debugging and re-building the debug database is held open on Windows 7 (maybe Vista?) and beyond on x64 based OS’s. You’ll get the annoying LNK1201 error.
In order to do a full build of DOSBox I had to re-build SDL, SDL-net, zLib, libPNG, and set them to a common C runtime linker setting to get a build where the final link didn’t complain. However when it came to existing project files I did have to find some older Visual C++ 6.0 stuff for many of the components, but using those I was able to ‘upgrade’ them to the 2003 environment and produce a working set.
I’ve got to say, that the AVI capture in the newer branches (I’m using build r4177) is really great!
This repository is the official place to hold all the source code around the PC/GEOS graphical user interface and its sophisticated applications. It is the source to build SDK and release version of PC/GEOS. It is the place to collaborate on further developments.
Watcom C/C++ v2 is being used to build this source tree.
This fun patch allows bigger hard disks, allowing you to run larger OS’s like QNX!
You don’t have to update the emulator, it’s just for the BIOS. Source is here: Over on github.
8086 Tiny on Windows with ansicon to render the textmode correctly.
Seeing the QNX logo sure has some flashbacks to the Burroughs/Unisys Icon from days of old. Although it has no relationship to the Waterloo Icon, some housing complex for students.
Every day there will be a ‘tiny’ OS to run on Qemu!
The QEMU Advent Calendar 2018 features a QEMU disk image each day of December until Christmas. Each day a new package becomes available for download.
Every download contains a little ‘run’ shell script that starts the QEMU emulator with the recommended parameters for the disk image. Disk images are either contained directly in the download or are downloaded by the ‘run’ script (you need to have installed ‘curl’ or ‘wget’ in that case).
The disk images contain interesting operating systems and software that run under the QEMU emulator. Some of them are well-known or not-so-well-known operating systems, old and new, others are custom demos and neat algorithms.
The ‘run’ scripts (and disk images if included in the download) were created by volunteers from the QEMU community to showcase cool software that QEMU can run.