vt01

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