--- title: Vintage Program Launchers date: 2022-09-30T08:42:00+02:00 categories: - retro tags: - 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 ```bat cd C:\GAMES\MONKEY~1\ cd MONKEY2 MONKEY.EXE r ``` anymore? I know I do! In 1989, Tony Minichillo released [3DMenu Plus 1.0](https://archive.org/details/3DMENUPLUSDOS) 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](https://www.strifestreams.com/) was keen on developing his own launching software. It's called [GameMinder](https://www.vogons.org/viewtopic.php?f=24&t=89718&p=1098443#) 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](https://en.wikipedia.org/wiki/FILE_ID.DIZ)-like text file. The look and feel of the program is a tribute to the classic file manager software [PathMinder](https://en.wikipedia.org/wiki/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](https://github.com/MaverickUK/GameMinder) 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](https://www.pcorner.com/list/PASCAL/EXECSW13.ZIP/INFO/) 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](https://nullprogram.com/blog/2014/12/09/) 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.