|
![]() |
The Keyboard Layout
Reading the keyboard
We can read in a row of the keyboard by setting BC to the correct value and using IN A,(C)... the resulting byte will contain a 0 if the key is pressed, 1 if it is not.
C= &FE | |||||
B=... |
4 |
3 |
2 |
1 |
0 |
%11111110 | V | C | X | Z | SHIFT |
%11111101 | G | F | D | S | A |
%11111011 | T | R | E | W | Q |
%11110111 | 5 | 4 | 3 | 2 | 1 |
%11101111 | 6 | 7 | 8 | 9 | 0 |
%11011111 | Y | U | I | O | P |
%10111111 | H | J | K | L | ENTER |
%01111111 | B | N | M | DEL | SPC |
The Character Map
Below are the visible characters... Note that basic commands and other functions are also 'characters', the most important is &76 (118) which is NewLine - we need this for the 'Display File' (Screen Ram)
Ports
Port | Purpose | |
FB | W | Printer Write |
FB | R | Printer Read |
FD | W | Disable NMI (used for FAST mode) |
rrFE | R | Init Vertical Retrace / Casette out LOW / Read Keyboard row rr |
FE | W | Enable NMI (used for SLOW mode) |
FF | W | Terminate Vertical Retrace and Restart LineCTR / Cassette out HIGH |
Memory Map
From | To | Purpose |
0000 | 3FFF | ROM |
4000 | 4008 | System Vars |
4009 | 407C | P-File save area |
407D | 43FF | 1K RAM |
4400 | FFFF | 16K+ Ram upgrade |
VRAM is at the end of your basic program, it's address is stored at &400C