config / cpu - Add feature: Map the arrow keys to hex keypad, in addition to the larger Qwerty set
This commit is contained in:
parent
872489c18d
commit
29f25bda7a
7
cpu.js
7
cpu.js
|
|
@ -307,10 +307,9 @@ function startCPU(code) {
|
||||||
}
|
}
|
||||||
process.stdin.on('keypress', (str, key) => { // TODO: is it possible to turn this off again?
|
process.stdin.on('keypress', (str, key) => { // TODO: is it possible to turn this off again?
|
||||||
if (key.sequence === '\x03') process.exit();
|
if (key.sequence === '\x03') process.exit();
|
||||||
|
let name = key.name.toUpperCase();
|
||||||
str = str.toUpperCase();
|
if (name in KEY_MAP) {
|
||||||
if (str in KEY_MAP) {
|
CPU.memory[KEYPAD_ADDR] = KEY_MAP[name];
|
||||||
CPU.memory[KEYPAD_ADDR] = KEY_MAP[str];
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,16 @@ module.exports = {
|
||||||
'Q':'4', 'W':'5', 'E':'6', 'R':'D',
|
'Q':'4', 'W':'5', 'E':'6', 'R':'D',
|
||||||
'A':'7', 'S':'8', 'D':'9', 'F':'E',
|
'A':'7', 'S':'8', 'D':'9', 'F':'E',
|
||||||
'Z':'A', 'X':'0', 'C':'B', 'V':'F',
|
'Z':'A', 'X':'0', 'C':'B', 'V':'F',
|
||||||
|
|
||||||
|
// Include conventional arrow keys
|
||||||
|
'UP': '5',
|
||||||
|
'LEFT': '7',
|
||||||
|
'DOWN': '8',
|
||||||
|
'RIGHT': '9',
|
||||||
},
|
},
|
||||||
|
|
||||||
// max number of times to step the CPU,
|
// max number of times to step the CPU,
|
||||||
// to stop endless loops
|
// to stop endless loops
|
||||||
// 0 = infinite
|
// 0 = infinite
|
||||||
"CYCLE_LIMIT": 256,
|
"DEFAULT_CYCLE_LIMIT": 2048,
|
||||||
}
|
}
|
||||||
13
readme.md
13
readme.md
|
|
@ -125,7 +125,7 @@ Put differently: it starts executing instructions at the address contained in `$
|
||||||
|
|
||||||
The value of the latest keypress on a hex keypad is stored at `$1B`.
|
The value of the latest keypress on a hex keypad is stored at `$1B`.
|
||||||
|
|
||||||
The keypad uses the same layout as the COSMAC VIP (and CHIP-8). The CPU simulator maps those keys onto a Qwerty set.
|
The keypad uses the same layout as the COSMAC VIP (and CHIP-8). The CPU simulator maps those keys onto a Qwerty set:
|
||||||
|
|
||||||
```
|
```
|
||||||
1 2 3 C 1 2 3 4
|
1 2 3 C 1 2 3 4
|
||||||
|
|
@ -133,7 +133,16 @@ The keypad uses the same layout as the COSMAC VIP (and CHIP-8). The CPU simulato
|
||||||
7 8 9 E A S D F
|
7 8 9 E A S D F
|
||||||
A 0 B F Z X C V
|
A 0 B F Z X C V
|
||||||
|
|
||||||
VIP simulator
|
hex pad simulator
|
||||||
|
```
|
||||||
|
|
||||||
|
The arrow keys are also mapped onto the hex keypad:
|
||||||
|
|
||||||
|
```
|
||||||
|
5 ↑
|
||||||
|
7 8 9 ← ↓ →
|
||||||
|
|
||||||
|
hex pad simulator
|
||||||
```
|
```
|
||||||
|
|
||||||
## Assembly language
|
## Assembly language
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue