A bit of code history and archaeology, a bit of personal story, with samples ported to run in the browser.
If you just want to see the samples running, the top navigation will take you through each page.
For 30 years I've had a file called Turbo.zip sitting around and I finally got around to doing something with it. The file contained a variety of Pascal/Assembly program source code, some mine, some not, all mid-1990's graphics demo experiments.
All the original code is included here. Most of it is also ported to JavaScript and runnable here as well. The code itself is not terribly impressive - I was a high school kid trying to learn with limited resources - but maybe the walk down memory lane will amuse or inspire you.
Back in 1994 I was a high school senior taking AP Computer Science. Our language was Borland Turbo Pascal, and our assignments were things like 8 Queens or Towers of Hanoi. This was nice and educational, but I wanted to do more. At the time, MS-DOS was my available OS, and while the World Wide Web technically existed, I had no way to reach it yet.
My main connection to the outside world was through Bulletin Board Systems (BBS), where you could tie up your family's phone line and get a text-based connection to someone else who might be hosting some interesting files. Lists of BBS phone numbers were circulated by students, and eventually, with enough wandering I stumbled upon the demo scene.
While out in the real world demo parties like Assembly and The Gathering had crews pushing the boundaries of our 386-era machines (e.g. Future Crew's Second Reality from 1993, which I didn't see until years later), all I was aware of were the few files that trickled out to our local BBSs (long distance calls were forbidden by mom).
Much of the demo scene code of the time was in Assembly or C/C++, and I only knew Pascal and Basic so far, so I'd hunt around on the BBSs for any sample code in Pascal I could get my hands on.
The story continues in the examples below.
The earliest files in the archive are from 1990 and 1991 and then nothing for three years. My own work starts in 1995 and stops in September 1996. There is a spike in July 1995 right after I graduated, and another in September 1995 when I started college and first had internet.
33 of the 56 source files (59%) were saved between midnight and 8 AM. The peak is 3 AM. I've always been a bit nocturnal, and in high school I'd have to wait until everyone was asleep to sneak down to the shared computer in the dining room.
For each entry, you'll get a brief intro, then a demo picker for pages with multiple examples, then the running demo, demo-specific controls for those that have them, longer-form technical commentary, and finally the original source in collapsible panels.
Each page links to the next so start anywhere. I'd suggest 01.
I know not everyone is a fan of AI, and I'm somewhere in the middle. The reality is that if I were to do this project by hand, it would have taken many months, so I would not have done it. When I pointed Claude (Opus 4.8/5) at my old files and it was able to immediately start porting it to working JavaScript, digging through timestamps to recreate the history, and more, it made the project happen.
Perhaps you also have some old files around, and perhaps AI will help you breathe life back into them, or perhaps inspire you to do it without AI help, which would be cool, too.
Much of this archive is other people's work, adapted: ZSoft, Matt Pritchard, Scott Wyatt, Michael Abrash, Fred Nietzche, Frank Jan Sørensen, Brian Baynes. One file (BOX) I haven't been able to nail down attribution for, and its entry says so rather than guessing. This content is presented as historical and not an attempt to redistribute anything without license. If any of it is yours and you object to its inclusion, let me know.
Bugs are generally reproduced, not fixed. Where a program had a fault you can see, the port has it too, usually behind a toggle so you can turn it off and compare. In some cases where the bug completely ruins the demo, it starts in a better state, with documentation and toggles to get back to the original code.
The graphics modes used had a variety of resolutions (e.g. 360×480 3:4) which would then be stretched to display on the 4:3 hardware. I default to applying the stretch to get it more period-accurate, but also provide a button below each demo to toggle to 1:1 square pixels if you prefer.