| Character buffers

The character buffers occupy bytes 0x60-0x7F in pages 0x98-0xAC.

Page | Address | Character |  | Page | Address | Character |  | Page | Address | Character
0x98 | 9860 | Little boy no. 1 |  | 0x9F | 9F60 | Little boy no. 8 |  | 0xA6 | A660 | MR CREAK
0x99 | 9960 | Little boy no. 2 |  | 0xA0 | A060 | Little boy no. 9 |  | 0xA7 | A760 | BOY WANDER
0x9A | 9A60 | Little boy no. 3 |  | 0xA1 | A160 | Little boy no. 10 |  | 0xA8 | A860 | ANGELFACE
0x9B | 9B60 | Little boy no. 4 |  | 0xA2 | A260 | Little boy no. 11 |  | 0xA9 | A960 | EINSTEIN
0x9C | 9C60 | Little boy no. 5 |  | 0xA3 | A360 | MR WACKER |  | 0xAA | AA60 | BOY WANDER's pellet
0x9D | 9D60 | Little boy no. 6 |  | 0xA4 | A460 | MR ROCKITT |  | 0xAB | AB60 | ERIC's pellet
0x9E | 9E60 | Little boy no. 7 |  | 0xA5 | A560 | MR WITHIT |  | 0xAC | AC60 | ERIC

The bytes in each character buffer are used as follows:

Byte(s) | Contents
--- | ---
0x60 | Animatory state
0x61,0x62 | Location (y,x)
0x63 | LSB of the primary command routine address (see 6226)
ERIC's post-midstride animatory state (see 6500, 653C)
0x64 | MSB of the primary command routine address (see 6226)
ERIC's post-midstride y-coordinate (see 6500, 653C)
0x65 | Destination y-coordinate (see 69D2)
Walkabout event identifier (see 62D7)
ERIC's post-midstride x-coordinate (see 6500, 653C)
0x66 | Destination x-coordinate (see 69D2)
ERIC's animatory state before he started firing the catapult, hitting, or jumping (see F46E)
0x67 | Number of mini-walkabouts remaining (see 6B3D)
0x68 | Message repetition delay counter (see F800)
0x69,0x6A | Interruptible subcommand routine address (see 6226)
0x6B | LSB of the address of the next character in the message being written on a blackboard or spoken (see 70D2)
Walkabout destination x-coordinate (see 6B32)
x-coordinate increment to use while chasing ERIC (see 7BFB, 7C18)
Number of movements remaining to ascend or descend the staircase (see 6390, 63BE)
Number of movements remaining to wipe the blackboard (see 71E8)
Intermediate destination x-coordinate (see 633C)
0x6C | MSB of the address of the next character in the message being written on a blackboard or spoken (see 70D2)
y-coordinate increment to use while chasing ERIC (see 7BFB, 7C18)
x-coordinate of the next column of the board to wipe (see 71E8)
Number of paces remaining until the interruptible subcommand is terminated (see 633C)
0x6D | LSB of the address of the next character in the submessage being written on a blackboard or spoken (see 70D2)
y-coordinate of the top row of the blackboard being wiped (see 71E8)
0x6E | MSB of the address of the next character in the submessage being written on a blackboard or spoken (see 70D2)
0x6F,0x70 | Uninterruptible subcommand routine address (see 6226)
0x71 | Counter determining how much longer the character will stay down after being punched (see 6F99), hit by a catapult pellet (see 6D1C), knocked out of a chair (see 6C55), or tripped up by a stampeding kid (see 69F6)
Distance remaining for the pellet to travel (see 6D1C)
ANGELFACE's pre-punch animatory state (see 6F1E, 6FE2)
BOY WANDER's pre-fire animatory state (see 702C, 7072)
0x72 | Pre-knockout animatory state (see 6A46)
0x73,0x74 | Unused
0x75,0x76 | Address reached in the command list
0x77,0x78 | Start address of the command list
0x79 | Unused (always 0x00, but checked by 6226)
0x7A | Various flags; initially populated by 6900 with 0x00 for kids, 0x10 (bit 4 set) for teachers, and 0x20 (bit 5 set) for catapult pellets:
Bit(s) | Meaning if set
--- | ---
0 | Restart the command list at the next opportunity if bit 1 is reset (see 6226)
1 | Always reset
2-3 | Unused
4 | Character is a teacher (checked by 6317)
5 | Character is walking fast continuously (set for pellets and stampeding boys; see 6A6E)
6 | Character is walking slowly continuously (always reset, but checked by 6317)
7 | Character is walking slowly (see 62B2)
0x7B | Walking speed change delay counter (see 62B2, 7DEA, 7DF2, FA10)
0x7C,0x7D | Continual subcommand routine address (see 6226); set to 629F initially by 6900
0x7E,0x7F | Unused