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

    • 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.

    • unix research-unix v6

      Setting Up UNIX—Sixth Edition: An OpenSIMH Laboratory for Reading Lions

      This note covers building a complete, restorable Sixth Edition UNIX laboratory in OpenSIMH for reading John Lions’ A Commentary on the UNIX Operating System. First, the reader is led through restoring the original V6 distribution from tape to RK05 disk images. Next, the kernel is reconfigured and rebuilt for the PDP-11/40 and the simulated devices used in the laboratory. The remaining source and documentation filesystems are then installed, the required special files are created, and the completed system is verified and archived as a restorable baseline.

      The note explains each step of the process in detail and connects Lions’ commentary and numbered source listing to the corresponding files and configured kernel in the running V6 system.

    • go tools github-pages

      Migrating from Jekyll to a custom static site generator

      Replaced the Jekyll-based blog with a custom static site generator written in Go.

    • tools go

      dex - directory comparison tool in Go

      Released dex, a Go port of my Python dircmp utility. Clean architecture, static binaries, no dependencies.

      Compares two directory trees and sorts files into five buckets:

      1. Exact match — same path, same content
      2. Modified — same path, different content
      3. Same content, different path
      4. Only in src
      5. Only in dst

      Also finds duplicates within a single directory.

      dex [options] <dir>           # find duplicates
      dex [options] <src> <dst>     # compare directories
      

      Options: -a hidden files, -r recurse, -f fast digest, -b brief, -l full digests.

      Prebuilt binaries for Linux and macOS in the releases.