Keyboard
INP 3 bit 0 and 1 indicate if a key is pressed. To use this for more than 2 key's also the CPU address lines bit 0 to 5 are used (6 bits). BASIC actually uses address @7CCA-@7FFF. For details on every key please see below:
BASIC address |
Bit 5-0 |
Bit 1 |
Bit 1 (SHIFT) |
Bit 0 |
Bit 0 (SHIFT) |
7CCA |
0A |
LINE FEED |
|
RETURN |
|
7CCB |
0B |
/ |
? |
ESC |
|
7CCC |
0C |
1 |
! |
0 |
|
7CCD |
0D |
3 |
# |
2 |
ì |
7CCE |
0E |
5 |
% |
4 |
$ |
7CCF |
0F |
7 |
ë |
6 |
& |
7CD0 |
10 |
9 |
) |
8 |
( |
7CD1 |
11 |
; |
+ |
: |
* |
7CD2 |
12 |
= |
- |
, |
< |
7CD3 |
13 |
/ |
? |
. |
> |
7CD4 |
14 |
A |
a |
space |
|
7CD5 |
15 |
C |
c |
B |
b |
7CD6 |
16 |
E |
e |
D |
d |
7CD7 |
17 |
G |
g |
F |
f |
7CD8 |
18 |
I |
i |
H |
h |
7CD9 |
19 |
K |
k |
J |
j |
7CDA |
1A |
M |
m |
L |
l |
7CDB |
1B |
O |
o |
N |
n |
7CDC |
1C |
Q |
q |
P |
p |
7CDD |
1D |
S |
s |
R |
r |
7CDE |
1E |
U |
u |
T |
t |
7CDF |
1F |
W |
w |
V |
v |
7CE0 |
20 |
Y |
y |
X |
x |
7CE1 |
21 |
DOWN |
|
Z |
z |
7CE2 |
22 |
RIGHT |
|
LEFT |
|
7CE3 |
23 |
DEL |
|
UP |
|
Original Keyboard Layout
! |
" |
# |
$ |
% |
& |
' |
( |
) |
0 |
BREAK |
|||||||||||||
DEL |
Q |
W |
E |
R |
T |
Y |
U |
I |
O |
P |
ESC |
||||||||||||
CAPS |
A |
S |
D |
F |
G |
H |
J |
K |
L |
RET |
|||||||||||||
CTRL |
< |
Z |
X |
C |
V |
B |
N |
M |
* |
? |
LINE |
||||||||||||
|
SHIFT |
> |
ö |
đ |
|
|
|
ć |
č |
+ |
- |
|
The emulator does NOT map the keys to a PC keyboard as shown above. Instead the key functions are mapped independently of key location, i.e. if a character is pressed on the PC keyboard it will be mapped to the equivalent Pecom character.
Note the following additional mapping:
Pecom 64 |
PC |
BREAK |
END |
DEL |
DEL |
ESC |
ESC |
CAPS |
CAPS |
RET |
RETURN |
CTRL |
CTRL |
LINE FEED |
HOME |
SHIFT |
SHIFT |
CTRL-H |
Backspace |