2つ同時に押されているキーを簡単に判定する方法 (永江@九工大[msx:00106],[msx:00107]) > キーボードで、「○○を押しながら、××を押す」という判定を
> するには、どういうふうにしてやったら よいのでしょうか?
> (Mキーを押しながら、SPACEキーを押す、とか?)

 まず、MSX のキーボードは表 1 のように配線されています。 この線を直接調べても良いのですが、今回は別の方法を取ります。  実はシステムもこの線を 1/60 秒ごとに調べて、メモリに保存しています。 そのアドレスが、表の左端に書かれています。 +------+------+------+------+------+------+------+------+ FBE5 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | +------+------+------+------+------+------+------+------+ FBE6 | ; | [ | @ | ¥ | ^ | − | 9 | 8 | +------+------+------+------+------+------+------+------+ FBE7 | B | A | _ | / | . | , | ] | : | +------+------+------+------+------+------+------+------+ FBE8 | J | I | H | G | F | E | D | C | +------+------+------+------+------+------+------+------+ FBE9 | R | Q | P | O | N | M | L | K | +------+------+------+------+------+------+------+------+ FBEA | Z | Y | X | W | V | U | T | S | +------+------+------+------+------+------+------+------+ FBEB | F3 | F2 | F1 | かな | CAPS |GRAPH | CTRL |SHIFT | +------+------+------+------+------+------+------+------+ FBEC |RETURN|SELECT| BS | STOP | TAB |ESC| F5 | F4 | +------+------+------+------+------+------+------+------+ FBED | → | ↓ | ↑ | ← |DEL|INS| HOME |SPACE | +------+------+------+------+------+------+------+------+ [TEN KEY] +------+------+------+------+------+------+------+------+ FBEE | 4 | 3 | 2 | 1 | 0 |OPTION|OPTION|OPTION| +------+------+------+------+------+------+------+------+ FBEF | . | , | − | 9 | 8 | 7 | 6 | 5 | +------+------+------+------+------+------+------+------+ 表 1 キーマトリクス (MSX2 テクニカルハンドブック P.284 より)  押されているキーは 0 、押されていないキーは 1 として、 2 進数表現で入っ ています。  つまり、スペースキー(だけ)を押すと、 FBED の内容が&B11111110 になります。 DEL とスペースを同時に押すと、&B11110110 ですね。  これを使うと、「 M とスペースを同時に押したか調べる」サンプルプログ ラムは、次のようになります。 10 CLS 20 LOCATE 0,0 30 IF (PEEK(&HFBE9) AND &B00000100) OR (PEEK(&HFBED) AND &B00000001) THEN PRINT 0; ELSE PRINT 1; 40 GOTO 20  M キーとスペースキーを同時に押した時だけ 1 が表示され、それ以外では 0 になるはずです。(本当は 2 進数は 16 進数になおした方がいいのだけれ ど…)  PRINT 0 と PRINT 1 を逆にしないように注意! 理由は、ド・モルガンの 法則です。(といって逃げる(^^;)