The Mouse programming language squirms back onto CP/M

What is Mouse?
It has been reported that Mouse was designed by Peter Grogono around 1975 as a tiny, interpreted, stack‑oriented language for microcomputers. Think Forth’s distant cousin — same minimalist spirit, but simpler and more variable‑centric. The CP/M build floating around on the old Walnut Creek software CD is allegedly just about 2K in size, a reminder of an era when squeezing power into a few kilobytes was an everyday miracle.
Mouse programs are terse. Most instructions are single characters and all numbers are integers. Yet Grogono argued — in Byte magazine no less — that Mouse still demonstrates arrays, functions, procedures, nested control structures, local variables, recursion and multiple parameter‑passing styles. Want a concrete taste? A typical example pushes a counter into variable c, enters a loop with ( ... ), uses ^ to break out when the counter falls below 1, prints "Hello, World!" (the language converts ! to newlines), decrements c via c. 1 - c:, and ends the program with $. Short and to the point.
Why anyone should care
Why dig up a 1970s microlanguage? Because Mouse is a neat lesson in constraint‑driven design. It shows how much of “high‑level” structure you can pack into a tiny interpreter — a lesson that matters again for microcontrollers, embedded scripting, and retrocomputing hobbyists. The language’s reliance on single‑character opcodes and stack manipulation reads like both archaeology and inspiration: minimal, opinionated, and oddly elegant.
The emotional core here is nostalgia, sure, but also delight. There’s a small thrill in spotting elegant hacks in tiny codebases, and in realizing that many modern trends — minimal runtimes, small VMs, domain‑specific tiny languages — aren’t new, they’re recycled good ideas. Interested? Dust off a CP/M image, load the Mouse interpreter, and try not to grin when ten terse characters print “Hello, World!” for the tenth time.
Sources: techtinkering.com, Hacker News
Comments