Maybe useful: various historic subroutines for putting characters on the display, along with their character definitions:
The first character generator by Ben Gurley & Weldon Clark is interesting for various reasons:
First, Ben Gurley, the designer of the PDP-1, is one of the authors. (This feels different from the highly optimized routines, more relaxed, like the prevalent feeling was that the PDP-1 is really fast.)
Then, it's written in Ed Fredkin's FRAP. Maybe also interesting for a rather different approach to PDP-1 assembly than Macro.
(FRAP is the very first assembler for the PDP-1, based on Ed Fredkin's insight that most of assembler code is about checking and enforcing rules. Thus, in order to fit into the 1K memory block that originally came with the BBN prototype, he made his assembler with as few rules as possible. Hence, FRAP is for Free of Rules Assembler Program. As a bonus, after reading in the manual that the paper tape reader can run tape forwards and backwards, Fredkin made his assembler run the source tape forwards for the first pass and then backwards for the second pass with no need to rethread it again. This was also the downfall of FRAP, as this introduced some unreliability and reportedly annoying chatter of the reader for longer source tapes, which became a thing with the standard 4K core memory blocks.)
I've personally used the 1964 one in the past.
(See the individual pages with the listings for links to the original source documents.)
PS: If you have memory to spare, writing a JIT compiler may be worth it.
Much like the outline routine for the spaceships in Spacewar!, plenty of time is lost by dropping AC and IO and then reloading them, again, just to parse and interpret the character matrix code. If we split parsing and display code, we can go mostly with register swapping, additions and dpy instructions without dropping anything.
(Compare https://www.masswerk.at/rc2016/10/09.html for what the resulting JIT code could look like. In this instance, this was a viable approach, since it was about displaying numbers only. A full-fledged lower- and upper-case alphabet may be another story, though.)
Best,
Norbert