For processing ESC 0 ($30) to ESC Z ($5A) there's a jump table at $140C.
So basically get the next char, put it into A.
If A is between $30 and $5A then jump to $13c2.
At $13c2, subtract $30 multiply by 2 and use that as the index into the jump table at $140c.
I made a crap bash script to generate the characters from $30 to $5a, directed it to a file and loaded it at $ff00 so I could open up another memory dump window and line it up all neatly for the screenshot.
Howabout that ubuntu high contrast screen theme. Pretty garish, but it makes for a little cleaner screenshot.
ok so let's look at the processing for ESC 0:
so for ESC 0 jump to $1743 which puts 27 into A and stores that in $982C. $982C holds the current line spacing in 1/216 in. 27/216 is 1/8th inch.
for ESC 1 jump to $1745 which puts 21 into A and stores that in $982C. 21/216 = 7/72 inch (why? for 7 bit systems)
for ESC 2 jump to $1747 which puts 36 into A and stores that in $982C. 36/216 = 1/6 inch
ESC 3 is kind of interesting where you set n/216 line spacing, jump to $174A, grab the next character and put that into $982C.
Fun fun fun!
No comments:
Post a Comment