
Three keyboards meet in this course: the Einstein's own, the modern one under MAME, and the editor's command keys. This appendix has all three in one place. Sections say "In MAME:" wherever the two machines differ; the tables here are the full set.
The Einstein's keyboard has no {, }, \, |, [, ], ^ or ~ keys. They are made with the arrow keys and the ½ key, and the screen draws them as fractions and arrows - which is right, and not an error (S3).
| Character | On the Einstein | In MAME | Drawn on screen as |
|---|---|---|---|
[ | LEFT arrow | Left arrow | ← |
{ | SHIFT and LEFT | Shift and Left | ¼ |
] | RIGHT arrow | Right arrow | → |
} | SHIFT and RIGHT | Shift and Right | ¾ |
^ | UP arrow | Up arrow | ↑ |
~ | SHIFT and UP | Shift and Up | ÷ |
| | ½ | \ | ‖ |
\ | SHIFT and ½ | Shift and \ | ½ |
_ | - key | - | _ |
` | SHIFT and - | Shift and - | ` |
? | SHIFT and / | Shift and / | ? |
Everything else is where its label says. The Einstein starts with CAPS LOCK on; press it once before typing a program, because C's names are case-sensitive and MAIN is not main (S4). The prompt does not mind either way.
| Einstein | In MAME | Does |
|---|---|---|
| ENTER | Return | Ends a command or a line |
| DELETE | Backspace | Rubs out the character to the left |
| GRPH | F8 | ED80's command key (below) |
| CONTROL | Control | Not used by ED80 on the course disc - it inserts ^E and the like (S5) |
| BREAK | Left Option | Nothing this course needs; it does not stop a C program (S7) |
| CAPS LOCK | Caps Lock | Toggles capitals; on at start |
MAME's own control keys - Esc to quit, F3 to reset - start switched off so that the Einstein gets every key; forward delete on a Mac, or Scroll Lock on Windows, switches them on and off again (S3).
GRPH and a letter, the letter pressed while GRPH is held. Where two keys are shown, the first is a prefix: press it, let go, and press the second.
| Keys | Does |
|---|---|
| GRPH-S, GRPH-D | Left a character, right a character |
| GRPH-A, GRPH-F | Left a word, right a word |
| GRPH-E, GRPH-X | Up a line, down a line |
| GRPH-C | Down a screenful; on a short file, to the end |
| GRPH-Q then D | To the end of the line |
| GRPH-Q then R | To the start of the file |
| GRPH-Q then C | To the end of the file |
| DEL | Delete the character to the left |
| GRPH-G | Delete the character under the cursor |
| CTRL-Y | Delete the whole line |
| GRPH-V | Switch between inserting and overwriting |
| GRPH-O then I | Auto-indent on and off (I/AUTO in the status line) |
| GRPH-J | The help screen; ENTER returns |
| GRPH-K then X | Save and exit: Filename:, ENTER accepts |
| GRPH-K then Q | Exit without saving: Abandon text: Sure?, Y |
The status line is wider than the screen and wraps over the first line of text (S5); the text is still there.
After an error the compiler waits: E opens ED80 on the faulty line, and any other key returns to the prompt (S7). DIR pauses when the screen is full and takes the next key as "continue" (S6).
The codes kbd() and rawin() return (S22):
| Key | Code | As a character |
|---|---|---|
| LEFT | 91 | [ |
| RIGHT | 93 | ] |
| UP | 94 | ^ |
| DOWN | 10 | line feed |
| SPACE | 32 | ' ' |
| ENTER | 13 | carriage return |
| A to Z | 65 to 90 | 'A' to 'Z', with CAPS LOCK on |
| 0 to 9 | 48 to 57 | '0' to '9' |
A key seen by kbd() is not taken, and waits for the prompt; a program that uses kbd() ends with gets (S22). No key stops a running C program (S7): a loop that must be stoppable watches the keyboard itself, and Q is the course's convention.