vintage computer launchers

This commit is contained in:
Wouter Groeneveld 2022-09-30 09:11:00 +02:00
parent 8b991bb198
commit ff95d1c3b6
3 changed files with 180 additions and 7 deletions

View File

@ -0,0 +1,33 @@
---
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.

View File

@ -1,4 +1,60 @@
[
{
"author": {
"name": "Ton Zijlstra",
"picture": "/pictures/zylstra.org"
},
"name": "What happens to my digital identity when I die?",
"content": "In reply to What happens to my digital identity when I die? by Wouter Groeneveld\nHa, neat idea for a digital preservation strategy. Getting an ISBN number isnt very expensive, 106 EUro for 1 or 28 Euro if you buy ten. With one, curation is key. Wi...",
"published": "2022-09-18T17:04:13+02:00",
"url": "https://www.zylstra.org/blog/2022/09/22216/",
"type": "mention",
"source": "https://www.zylstra.org/blog/2022/09/22216/",
"target": "https://brainbaking.com/post/2022/09/what-happens-to-my-digital-identity-when-i-die/",
"relativeTarget": "/post/2022/09/what-happens-to-my-digital-identity-when-i-die/"
},
{
"author": {
"name": "Horst Gutmann",
"picture": "/pictures/zerokspot.com"
},
"name": "",
"content": "Wouter Groeneveld has posted a great look at the Nutri-Score system. I never took the time to look into the actual calculation of that score but I was kind of already assuming that it was be rather worthless due to experience with other/similar syste...",
"published": "2022-09-11T19:40:47+02:00",
"url": "https://zerokspot.com/notes/2022/09/11/nutri-score-critique/",
"type": "like",
"source": "https://zerokspot.com/notes/2022/09/11/nutri-score-critique/",
"target": "https://brainbaking.com/post/2022/09/a-nutriscore-critique/",
"relativeTarget": "/post/2022/09/a-nutriscore-critique/"
},
{
"author": {
"name": "Christian Engel",
"picture": "/pictures/chringel.dev"
},
"name": "",
"content": "💬 Comment on\n \n https://borghal.blog/blog/2022-09/implementing-webmentions/",
"published": "2022-09-09T08:30:20+00:00",
"url": "https://chringel.dev/2022/09/09/0926/",
"type": "mention",
"source": "https://chringel.dev/2022/09/09/0926/",
"target": "https://brainbaking.com/post/2021/05/beyond-webmention-io/",
"relativeTarget": "/post/2021/05/beyond-webmention-io/"
},
{
"author": {
"name": "Fundor 333",
"picture": "/pictures/fundor333.com"
},
"name": "",
"content": "In your opinion something like Gitea with a syndication like Mastodon will solve some of the problems and move more people on this “Gitea with Syndication”?",
"published": "2022-08-29T10:16:33+00:00",
"url": "https://fundor333.com/social/2022/08/03/1659516036/",
"type": "mention",
"source": "https://fundor333.com/social/2022/08/03/1659516036/",
"target": "https://brainbaking.com/post/2022/07/give-up-github/",
"relativeTarget": "/post/2022/07/give-up-github/"
},
{
"author": {
"name": "Fundor 333",
@ -6,7 +62,7 @@
},
"name": "",
"content": "",
"published": "2022-08-10T20:47:41+00:00",
"published": "2022-08-29T10:16:30+00:00",
"url": "https://fundor333.com/social/2022/08/05/1659686861/",
"type": "like",
"source": "https://fundor333.com/social/2022/08/05/1659686861/",
@ -19,13 +75,83 @@
"picture": "/pictures/fundor333.com"
},
"name": "",
"content": "In your opinion something like Gitea with a syndication like Mastodon will solve some of the problems and move more people on this “Gitea with Syndication”?",
"published": "2022-08-10T20:47:39+00:00",
"url": "https://fundor333.com/social/2022/08/03/1659516036/",
"content": "It doesnt do everything though, and uBlock Origin is still very much needed. Blocked domains by the Pi-Hole will also show up in the uBlock logs (e.g. googletagmanager), even though the request wont return anything. In general, uBlock is more a...",
"published": "2022-08-29T10:15:17+00:00",
"url": "https://fundor333.com/social/2022/08/29/six-months-with-a-pi-hole--brain-baking/",
"type": "bookmark",
"source": "https://fundor333.com/social/2022/08/29/six-months-with-a-pi-hole--brain-baking/",
"target": "https://brainbaking.com/post/2022/08/six-months-with-pi-hole/",
"relativeTarget": "/post/2022/08/six-months-with-pi-hole/"
},
{
"author": {
"name": "Wouter Groeneveld",
"picture": "/pictures/brainbaking.com"
},
"name": "",
"content": "Yes and yes. See https://brainbaking.com/post/2021/05/beyond-webmention-io/ and https://git.brainbaking.com/wgroeneveld/go-jamming",
"published": "2022-08-22T14:31:00+00:00",
"url": "https://brainbaking.com/notes/2022/08/22h14m31s21/",
"type": "mention",
"source": "https://fundor333.com/social/2022/08/03/1659516036/",
"target": "https://brainbaking.com/post/2022/07/give-up-github/",
"relativeTarget": "/post/2022/07/give-up-github/"
"source": "https://brainbaking.com/notes/2022/08/22h14m31s21/",
"target": "https://brainbaking.com/post/2021/05/beyond-webmention-io/",
"relativeTarget": "/post/2021/05/beyond-webmention-io/"
},
{
"author": {
"name": "Jamie Tanna",
"picture": "/pictures/jvt.me"
},
"name": "",
"content": "Liked\nSo... How Much Do You Earn?\nby Wouter Groeneveld \nPost detailsWe humans tend not to share everything. Among the best kept—and probably most lied on—secrets is our salary, yet we still have the irresistible urge to brag and to compare. I w...",
"published": "2022-08-22T09:03:00+01:00",
"url": "https://www.jvt.me/mf2/2022/08/abfdu/",
"type": "mention",
"source": "https://www.jvt.me/mf2/2022/08/abfdu/",
"target": "https://brainbaking.com/",
"relativeTarget": "/"
},
{
"author": {
"name": "Jamie Tanna",
"picture": "/pictures/jvt.me"
},
"name": "",
"content": "Liked\nSo... How Much Do You Earn?\nby Wouter Groeneveld \nPost detailsWe humans tend not to share everything. Among the best kept—and probably most lied on—secrets is our salary, yet we still have the irresistible urge to brag and to compare. I w...",
"published": "2022-08-22T09:03:00+01:00",
"url": "https://www.jvt.me/mf2/2022/08/abfdu/",
"type": "mention",
"source": "https://www.jvt.me/mf2/2022/08/abfdu/",
"target": "https://brainbaking.com/post/2022/08/how-much-do-you-earn/",
"relativeTarget": "/post/2022/08/how-much-do-you-earn/"
},
{
"author": {
"name": "Roy Tang",
"picture": "/pictures/roytang.net"
},
"name": "",
"content": "Commenter photo\n \n \n\n \n\n \n \n Roy Tang\n \n said...\n \n \n Yeap, having your images in the content works natively, but unless you package them as a Page Bundle (i.e. your...",
"published": "2022-08-17T17:38:05+00:00",
"url": "https://roytang.net/comments/d237d944-a6e9-480b-8736-153c451b65b9/",
"type": "mention",
"source": "https://roytang.net/comments/d237d944-a6e9-480b-8736-153c451b65b9/",
"target": "https://brainbaking.com/notes/2022/08/17h08m53s44/",
"relativeTarget": "/notes/2022/08/17h08m53s44/"
},
{
"author": {
"name": "Roy Tang",
"picture": "/pictures/roytang.net"
},
"name": "",
"content": "Commenter photo\n \n \n\n \n\n \n \n Roy Tang\n \n said...\n \n \n A path like content/post/2022/07/whatevah-title.md doesn't work if you want to bundle your resources together w...",
"published": "2022-08-17T06:29:01+00:00",
"url": "https://roytang.net/comments/8bebec65-9eb0-469e-9bb0-a475c0282532/",
"type": "mention",
"source": "https://roytang.net/comments/8bebec65-9eb0-469e-9bb0-a475c0282532/",
"target": "https://brainbaking.com/notes/2022/08/16h19m23s20/",
"relativeTarget": "/notes/2022/08/16h19m23s20/"
},
{
"author": {
@ -1609,6 +1735,20 @@
"target": "https://brainbaking.com",
"relativeTarget": ""
},
{
"author": {
"name": "Ton Zijlstra",
"picture": "/pictures/zylstra.org"
},
"name": "Nabeschouwing: de eerste Nederlandstalige Obsidian meet-up",
"content": "De allereerste Nederlandstalige meet-up van Obsidian.md gebruikers was interessant en leuk! We waren met zn vieren, Sebastiaan, Wouter, Frank en ik, en spraken bijna 2 uur met elkaar. Leuk om te vergelijken waarom en hoe we notities maken in Obsid...",
"published": "2021-04-25T11:24:48+02:00",
"url": "https://www.zylstra.org/blog/2021/04/nabeschouwing-de-eerste-nederlandstalige-obsidian-meet-up/",
"type": "mention",
"source": "https://www.zylstra.org/blog/2021/04/nabeschouwing-de-eerste-nederlandstalige-obsidian-meet-up/",
"target": "https://brainbaking.com/",
"relativeTarget": "/"
},
{
"author": {
"name": "Wouter Groeneveld",

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB