by Darius Kazemi, June 26 2019
Another crack at a graphics interface
RFC-177 is titled “A Device Independent Graphical Display Description”. It's authored by John McConnell of NASA Ames Research Center, and dated June 15th, 1971.
The technical content
This is an update of RFC-86, which is a proposal for a network graphics language that is similar in a lot of ways to modern 2D HTML canvas API. This update takes into account some of McConnell's critique of RFC-86 as laid out by him in RFC-125.
The author specifies a text-rendering mode that respects carriage return, line feed, backspace, and other position-control type characters, as he suggested in RFC-125. There is robust support for, essentially, grouping drawing commands as lists and executing them in groups. The idea being maybe you want to draw a vector house and label it “house” and then repeat that multiple times on the screen. Lists can be scaled and rotated as well as translated.
The system operates in two modes: vector mode (for drawing lines) and character mode (for rendering text). The data primitive for both modes is two 8-bit bytes. The first byte is the same in both modes and contains a true/false “blink” bit, 4 bits for a brightness level, and 3 bits for color (”
One bit for each primary”.) For the vector mode, the second byte contains 2 bits to specify one of four “textures” (solid, dashed, dotted, dot-dash) for the lines, and for character mode the second byte contains 2 bits for text orientation (which of four 90° angles to render text along) and 3 bits for text size.
The RFC concludes with some ideas for how the system might work in an interactive (rather than static display) scenario, interacting with a light pen or that kind of thing. In particular, the author describes synchronous and asynchronous devices, with the latter proving more difficult to account for. Unfortunately I find his description of what these are lacking so I can't really comment on them.
How to follow this blog
I'm Darius Kazemi. I'm an independent technologist and artist. I do a lot of work on the decentralized web with ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.