MIXのWebエミュレータにキーボードを接続しました。

「kbd-test MIX with NO-BIOS」 src on GitHub
キーボードを押すと、テスト用のキーマトリクスが反応します。これでMIXでキー入力を扱うことができるようになりました。

「Keyboard.js」
仮想キーボードのソースコードと、その核となるマップです。
export class Keyboard {
constructor(comp) {
this.keymap = new Uint8Array(16);
for (let i = 0; i < this.keymap.length; i++) {
this.keymap[i] = 0xff;
}
comp.addEventListener("keydown", (e) => {
const n = key2n(e);
if (n >= 0) {
this.keymap[n >> 3] &= ~(1 << (n & 7));
}
});
comp.addEventListener("keyup", (e) => {
const n = key2n(e);
if (n >= 0) {
this.keymap[n >> 3] |= 1 << (n & 7);
}
});
}
io_write(port, value) {
if (port == 0xAA) {
this.selrow = value & 0xf;
}
}
io_read(port) {
if (port != 0xA9) return undefined;
return this.keymap[this.selrow];
}
}
io_writeとio_readを使って、MIXと仮想ハードウェアをつないでいます。
links
- 削ぎ落としたZ80マシン「MIX」用ファームウェア「NO-BIOS」