Welcome to decuser's blog

Topics on this blog include computing, retro-computing, operating systems, math, and whatever other technical subjects I happen to be exploring that I find interesting enough to take and share notes about.

Posts

    • nezha aiki programming-languages interpreters language-design blockly wails

      Nezha: Aiki's Smaller, Tougher Sibling.

      Nezha: smaller, tougher, and less patient with baggage.

      Nezha is Aiki's smaller, tougher sibling. The name comes from the youthful warrior of Chinese mythology: formidable despite his size, independent-minded, and not especially interested in accepting the way things have always been done.

      Aiki gave Nezha its starting point. Nezha is an effort to pare the language down and tackle a harder question: can the essential acts of program evaluation be described by a small, finite declarative vocabulary, rather than buried inside a handwritten evaluator?

    • git pascal lazarus freepascal fuse software-tools

      Git Time Machine: Browsing a Repository Through Time.

      Git Time Machine: a filesystem with a past.

      I have been working on a tool called Git Time Machine (GTM). The idea is simple: instead of thinking of a Git repository as a sequence of commits, treat it as a filesystem that can be visited at different points in time.

      Pick a repository, a branch, and a moment. GTM finds the corresponding historical snapshot. From there you can browse files, inspect their histories, compare versions, and extract an older file without disturbing your working tree.

    • unix v6 research-unix basic pdp-11 opensimh votrax

      V6 Speaks! in OpenSIMH: Reconstructing the Votrax Speech Synthesizer Endpoint.

      Research UNIX V6 speaks again.

      After getting the old VT01 graphics path working under OpenSIMH, I went back to another piece of Bell Labs hardware support still present in the sources: the Votrax speech interface.

      The path now works end to end:

      Research UNIX V6 speak

      • historical pronunciation rules
      • /dev/vs
      • original V6 Votrax driver behavior
      • reconstructed Votrax/SC-01A synthesis
      • modern audio output

      The UNIX side remains historical: speak emits its native Votrax byte stream, including the original phoneme numbering and inflection bits, while the simulator handles the hardware realization.

      This is what speaks:

      echo 'all your base are belong to us. Research Unix V6 is speaking aloud
      in 2026' | /bin/speak
      

      Listen:

      Code, historical sources, reconstruction notes, and tested procedures:

      https://github.com/decuser/v6vtvs

      It is gloriously mechanical, a little difficult to understand, and very recognizably Votrax.

      post added 2026-09-16 14:51:00 -0500

    • unix v6 research-unix basic pdp-11 opensimh vt01

      V6 BASIC with Graphics! in OpenSIMH: Reconstructing the VT01 Display Path

      Today's post is a dive into getting this:

      V6 BASIC draw, erase, and display

      to work on a basic v6 instance running bas, the v6 version of BASIC:

      V6 BASIC graphics under OpenSIMH

      Background

      Lately, my interests have revolved around language design. I wrote Aiki, pulled its heart out into Nezha, and in the process realized that I needed a deeper understanding of compilers and compiler design, and of how they came to be.

      That led me to ALGOL 60 and the early compilers—or translators, as they were often called. I dug out my copies of the three Dragon Books and settled on the Green one for a deep dive into early techniques. In the process of reading and thinking about language translation, I realized that I should have a language in mind to compile.

      Aiki has its appeal, but it is not a good first target. Nezha is small and constrained enough, but no, I thought, I want something more conventional. K&R C? Perhaps. V6 assembly? That has its appeal, that's for sure. I heart V6.

      So I logged in to see what other candidates it might offer up and found SNOBOL, and then bas—V6 BASIC.

      But BASIC, really? Surely this was just a sad little implementation of BASIC for V6 that didn't even do graphics.

      I pulled up the source with little hope, and then saw: wait a minute. It does do graphics?

      Nothing in V6 does graphics.

      But there it was.

      The V6 BASIC source contains draw, erase, and display, and writes its graphics output to /dev/vt0. The corresponding kernel driver is still present in /usr/sys/dmr/vt.c and identifies itself as:

      VT01 driver via DR11C to 11/20
      

      At that point the compiler investigation became a hardware reconstruction problem.

    • aiki programming-languages systems

      Aiki Alpha 3 Released

      Aiki Alpha 3 is out.

      Tagged v0.4.0-alpha-36 and available from the GitHub release.

      Alpha 1 made the language real. Alpha 2 made the architecture explicit. Alpha 3 makes the implementation substantially more exact, efficient, constrained, and observable without enlarging the core language.

    • aiki programming-languages systems

      Aiki Alpha 2 Released

      Aiki Alpha 2 is out.

      Tagged v0.4.0-alpha-35 and available from the GitHub release.

      Alpha 1 made the language real. Alpha 2 made the architecture explicit.

    • aiki programming-languages ai self-hosting

      Aiki: Alpha Milestone 26 Update

      I have been busy with Aiki lately, and the last couple of days have been especially active. I return to my day job next week. I am a Computer Information Systems professor at Tarleton State University. So, I have been using the remaining summer window to close several related pieces of work.

      The current state is tagged v0.4.0-alpha-26. I do not plan to create a GitHub Release for every such point. master moves as development continues; tags mark states worth stopping on.

      The first public alpha already included most of the language proper: exact rational arithmetic, left-to-right evaluation, first-class functions, recursion and iteration, pipelines, shaped data, modules, recoverable errors, isolated concurrency, graphics, a standard library, semantic profiling, executable documentation, behavioral golds, grammar coverage, and a substantial invariant framework. Most of the work since then has not enlarged that surface very much. It has made the relationships underneath it considerably stricter.

    • aiki programming-languages ai education

      Aiki: First Public Alpha

      I've put the first public alpha of Aiki on GitHub.

      Aiki is a small experimental programming language I've been working on for the past several months. I describe it as both a programming language and a learning field: an environment designed to make computational relationships visible enough to inspect, experiment with, and reason about.

      The current release is v0.4.0-alpha. It includes the interpreter, standard library, documentation, examples, tests, validation machinery, and the project's engineering record. Intel/amd64 release archives are available for Linux, Windows, and macOS.

    • unix unix-v6 lions pdp-11 opensimh

      Lions Laboratory: A Sixth Edition UNIX Laboratory for OpenSIMH

      As a follow-up to my note on setting up a Sixth Edition UNIX laboratory in OpenSIMH, I have now put the complete laboratory repository on GitHub:

      decuser/lions-laboratory

      The repository contains the V6 distribution materials, OpenSIMH configurations, PDP-11/40 and peripheral documentation, known-good system checkpoints, and the working notes I have accumulated while reading Lions and experimenting with the system.

    • unix research-unix v6 dec

      Getting DOS-11 V004A Running on a PDP-11/40

      Getting DOS-11 V004A Running on a PDP-11/40

      I did not set out to install DOS-11.

      I have been working with Sixth Edition UNIX on a simulated PDP-11/40, partly to understand the system itself and partly to get closer to the environment described by Lions. That inevitably led downward. Reading the V6 source means reading PDP-11 assembly, and reading PDP-11 assembly means spending some time with the tools and conventions that existed around the machine before and alongside UNIX.

      That led me to PAL-11R, DEC's relocatable assembler for the PDP-11, and from there to DOS-11.