The Commodore 64 Programmer’s Reference Guide contains a memory map with a complete description of the zeropage and system variables used by KERNAL and BASIC, but now that we have the original source, we know there are three typos in this table.
The first one is the symbol at address $94. Here is the full page from the Programmer’s Reference Guide:
If you look closely, the symbol at $94 is
C3PO, with a capital Oh.
But it should end in a zero. Here is the original source:
On the kind of printer Commodore was using, there is no way to tell a
0 from an
O. Here is the whole page for context:
The Commodore Serial Bus library uses
C3P0 to buffer a byte that is supposed to be sent to the bus – similar to the zero page location
R2D2 located at address $A3. Here is some code that uses the two:
So yes, the two symbol names are references to the Star Wars characters C-3PO and R2-D2. It is unknown why the former is spelled with a zero in the source, but the typo in the Programmer’s Reference Guide is very forgivable.
R2D2 symbol is not mentioned in the Programmer’s Reference Guide – $A3 is just part of a “Temp Data Area”:
The next typo is the symbol at address $A6, the tape buffer pointer:
The Reference Guide calls it
BUFPNT, but it is in fact called
And the final typo is the symbol at $C9:
The correct spelling is
In fact, in the source, the two bytes have individual labels,
LSXP is the cursor line, and
LSTP the cursor column in the context of inputting text, shadowing the zero page addresses
TBLX (line) and
PNTR (column). The following table summarizes this:
It is confusing that the symbols for the Y coordinates each contain an
X. It is unclear what these symbol names are supposed to mean in the first place – if you have any idea, please share them in the comments!