PC-8001のキーボードのIOマップ
port \ value | 254 | 253 | 251 | 247 | 239 | 223 | 191 | 127 |
---|---|---|---|---|---|---|---|---|
0 | 0T | 1T | 2T | 3T | 4T | 5T | 6T | 7T |
1 | 8T | 9T | *T | +T | =T | ,T | .T | RET |
2 | @ | A | B | C | D | E | F | G |
3 | H | I | J | K | L | M | N | O |
4 | P | Q | R | S | T | U | V | W |
5 | X | Y | Z | [ | ¥ | ] | ^ | - |
6 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
7 | 8 | 9 | * | + | < | > | ? | _ |
8 | HOME | ↑ | → | INS | GRPH | カナ | SHIFT | CTRL |
9 | STOP | f1 | f2 | f3 | f4 | f5 | SPACE | ESC |
BIT | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Tの添え字は、テンキーのものを表す。
BASICで使う時
IF INP(_port_) = _value_ THEN ...
例えば、Xキーが押されているかを判断する場合は
IF INP(5) = 254 THEN ...
何も押されていない時は、INP関数は255を返します。
マシン語で使う時
IN A, ( _port_ )
BIT _BIT_, A
JR Z, _rel_addr_
例えば、Xキーが押されているを判断する場合は
IN A, ( 5 )
BIT 0, A
JR Z, _rel_addr_
ここで、ビット演算子BIT
は、第二引数で与えられたレジスタにおいて、第一引数で指定したビットの値を反転して、Zフラグに代入します。
条件付き相対ジャンプ命令JR Z,
は、Zフラグが立っていたら(1なら)、引数で指定されたアドレス分相対ジャンプします。