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

34 lines
3.3 KiB
Markdown
Raw Normal View History

2022-09-30 09:11:00 +02:00
---
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.