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