Posted on

Ancient Web: Rowan Crowe’s MoonRock BASIC Compiler Was Proudly Half Finished

Rowan Crowe released version 0.50 of his MoonRock BASIC compiler with a wonderfully honest explanation for the number: the project was probably nearing its final major release, and 0.50 was a joke because the compiler was about half finished.

Visit Rowan Crowe’s original site address

MoonRock was a hobby compiler for DOS developed through the 1990s. It accepted a BASIC-like language and generated assembly that could be turned into compact DOS executables using assemblers such as MASM, TASM, A86, or the included ArrowSoft assembler. Contemporary compiler archives describe it as an alternative to QuickBASIC and preserve version 0.50 as a roughly 1994–1998 project.

The surviving README is better than any polished product history could be.

Crowe explains that the six BASIC source files making up MoonRock had grown to roughly 280 KB and 10,000 lines. Its assembly-language library was around 100 KB and 7,200 lines even after comments and other material were stripped. He calls the compiler a monster full of kludges and exceptions and admits that returning to a hobby project after a month could mean figuring out how his own code worked again.

That is not failure. That is software development with the marketing department safely removed.

By the final release period, Crowe was running his own Internet service provider and moving much of his programming attention from DOS toward Unix. His main workstation still ran DOS, but he says it was increasingly being used to telnet into Unix servers. The paragraph captures a specific moment in computing history better than a timeline does: DOS was still the machine under his hands while the work had already moved through the network.

The compiler survives as an entire little ecosystem

Copies of MoonRock still include far more than MRC.EXE. There are .MOO example programs, configuration files, an interactive help utility, linker tools, reference documentation, bug and error lists, headers, source directories, and assembler support.

The changelog shows a surprisingly ambitious language growing in public: arrays, pointers, structures, software interrupts, file operations, FOSSIL serial functions, 386 code generation, DPMI protected-mode support, conditional compilation, inline assembly, memory management, and switches for optimizing either size or speed.

The filenames are part of the charm. HELLO.MOO, LIFE.MOO, STARS.MOO, CALC.MOO, and the compiler’s other samples make this feel less like an abstract programming-language project and more like a disk somebody genuinely used.

Crowe’s original personal site is no longer as dependable as the surviving software copies, but the address remains embedded in the documentation along with his FidoNet address and email. That is why preserving old software with its README matters. The file carries the author, the context, the limitations, the jokes, and the reason development slowed down.

MoonRock did not need to become the next C compiler to be worth remembering. Somebody wrote a 10,000-line compiler for DOS, used it, distributed it, documented it, and then openly admitted where the monster had gotten away from him.

Try the original Rowan Crowe site address

Posted on

Ancient Web: Kitana Rebuilt Battle Isle 2 in 23,000 Lines of BASIC

There are easier ways to preserve a 1994 strategy game than spending hundreds of hours rewriting it in BASIC. Kitana chose the educationally irresponsible option.

Visit Kitana’s Castle

Battle Isle 2020 is a from-scratch Windows reimplementation of Blue Byte’s Battle Isle 2 and Battle Isle 3. It is not a port of the original DOS source code. Instead, Daniel Bekowies reconstructed the behavior while still requiring the original game data for graphics, sounds, music, videos, and missions.

The project page says the program grew beyond 23,000 lines of PowerBasic code spread across more than 400 functions, with some assembly language mixed in.

Preservation by reverse engineering the assumptions

The interesting work was not merely drawing hex maps on a modern screen.

The original games encode terrain, units, missions, weather, movement, graphics, and other behavior in old formats that have to be understood before a replacement engine can use them. The project estimates roughly 60 hours went into decoding file formats alone, on top of more than 800 hours of programming.

The resulting program adds things a modern machine can provide without abandoning the original structure: scalable display, mouse controls, speech output, improved AI, multiplayer over LAN and Internet, a map editor, new campaigns, and compatibility with original mission content.

The AI can simulate possible combat outcomes before choosing an attack. Multiplayer replaces the old practice of handing save files between players with a live server-based mode. The map editor can build new missions using original units and terrain.

This is preservation through reimplementation rather than freezing software in an emulator.

It also preserves knowledge that would otherwise stay buried inside undocumented binary files.

CacheRat’s 1,967 Ancient Web Domains research list includes sites like Kitana because the web is full of people who quietly reverse-engineered obsolete software simply because they wanted it to keep working.

Twenty-three thousand lines of BASIC is an absurd amount of affection for a hex-grid war game.

Which is why it belongs here.

Return to Kitana’s Castle