brainbaking/content/post/2022/09/vintage-program-launchers.md

3.3 KiB

title date categories tags
Vintage Program Launchers 2022-09-30T08:42:00+02:00
retro
DOS
Pascal

Do you remember trying to locate the backslash \ on your keyboard in the late eighties after realizing it's key (ha!) to navigating and launching programs in DOS? Do you remember writing simple .BAT files, perhaps on the root of your disk or the location where the OS happened to boot up in, as a means not to have to type

cd C:\GAMES\MONKEY~1\
cd MONKEY2
MONKEY.EXE r

anymore? I know I do! In 1989, Tony Minichillo released 3DMenu Plus 1.0 my dad always used on his 386 and later 486 to easily navigate and launch DOS programs (and WIN.EXE of course). Add it to AUTOEXEC.BAT and you're good to go! 3DMenu allowed you to create menus and submenus in which "launchers" are just bat files: you point the program to a folder it needs to navigate to, and tell it which program to execute. After that's done, it re-launches itself.

Also frustrated with navigating using DOS commands and up for a challenge, my friend Peter Bridger was keen on developing his own launching software. It's called GameMinder and works a bit different compared to 3DMenu: it also displays meta information about a program, such as which video mode it uses (CGA/EGA/VGA) and which sound hardware it supports (PC Speaker/Adlib/Sound Blaster). This info is fetched from a FILE_ID.DIZ-like text file.

The look and feel of the program is a tribute to the classic file manager software PathMinder, and yes, even though Peter used modern tools like VSCode and DOSBox to code it in, of course it also works on vintage hardware:

{{< youtube Pf-mYUyjb7U >}}

The coolest thing about GimeMinder is that it also records playtime! Modern stats on old games, how about that? The source code will be soon up on GitHub so if anyone feels the need to implement achievements, here's your chance. Peter told me that development in Turbo Pascal 7 is quite a challenge. So many things we just take for granted with higher level languages today, which just aren't possible when stepping into the past---something as simple as array indexes and memory management, for example.

The DOS memory model is quite complicated and while launching a game, you don't want to take up much-needed kilobytes. If you're interested in an Expanded Memory Specification deep dive, GameMinder leverages the Pascal tool EXECSW under the hood.

I dabbled in compiling simple programs on my vintage PC using a port of the modern GCC tool chain. On a 486DX66, It takes more than one minute to compile a three-line program with a single printf() statement---yay! I should have used a proper time period correct heavily optimized tool chain, I know. Chris Wellons has some interesting thoughts on building DOS COM files with GCC on his blog at nullprogram.com. These articles always lure me in, but also always scare me away: it gets very technical, low-level, and arcane very fast.

We contemporary developers truly are lazy.