LoginSignup
4
3

More than 5 years have passed since last update.

PC-8001のINP関数でキー押下を取得

Last updated at Posted at 2016-02-05

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なら)、引数で指定されたアドレス分相対ジャンプします。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3