以前、パソピアのキーの信号に関する書き込みで紹介したキーマトリックス
どのキーが押されたか判断する場合、
スキャンする行(nKS 0~B)から、スキャンデータ(KSL)とキーブロック(KB)を決めてKSL 0 | KSL 1 | KSL 2 | KSL 3 | |
---|---|---|---|---|
KB_A | nKS 0 | nKS 1 | nKS 2 | nKS 3 |
KB_B | nKS 4 | nKS 5 | nKS 6 | nKS 7 |
KB_C | nKS 8 | nKS 9 | nKS A | nKS B |
KBインターフェイススキャンデータ(Port 30h)で出力
続いてKBインターフェイスリターンデータ(Port 31h)を読み込む
キーが押された場合、その列のbitが0になる。押されていない場合は1。全て押されてない場合は、FFhが返ってくる
ジョイスティックの押されたキーを取得する場合は、ジョイスティックアダプタ入力ポート ( ポートA 19h, ポートB 1Ah)の値を読み込む
ボタンが押された場合、その列のbitが0になる。押されていない場合は1全て押されてない場合は、FFhが返ってくる
スピタル産業のジョイスティックには、SELECTとRUNボタンが付いており、
・SELECTボタン:↑+↓
・RUNボタン:←+→
が割り当てられている
-----
UOOTOYのキー操作について
基本はMZ-2000と同じキーを使うが、いくつかキーを追加しジョイスティックをサポート。
BASICに戻るキーも追加。
パスワード入力画面
MZ-2000 | Pasopia7 Keyboard | Pasopia7 Joystick | 動作 |
---|---|---|---|
A~Z | A~Z | - | パスワード入力 |
SPACE | SPACE, INS/DEL | - | 一文字戻る |
CR | RETURN | SELECT, Aボタン, Bボタン | パスワード確定 |
カナ | カナ, HOME/CLS, PF8 | - | ROOM選択画面に進む |
ROOM選択画面
MZ-2000 | Pasopia7 Keyboard | Pasopia7 Joystick | 動作 |
---|---|---|---|
← | ←, 4(テンキー) | ←(十字キー) | ROOM数デクリメント |
→ | →, 6(テンキー) | →(十字キー) | ROOM数インクリメント |
CR | RETURN | SELECT, Aボタン, Bボタン | ゲームスタート |
F2~7同時押し | PF2~7同時押し | - | 隠しメッセージ |
- | (STOP) | RUNボタン | BASICに戻る |
ゲーム中画面
MZ-2000 | Pasopia7 Keyboard | Pasopia7 Joystick | 動作 |
---|---|---|---|
4(テンキー) | ←, 4(テンキー) | ←(十字キー) | 左に移動 |
6(テンキー) | →, 6(テンキー) | →(十字キー) | 右に移動 |
5, 8(テンキー) | ↓/↑キー, 5, 8(テンキー) | ↑(十字キー) | ジャンプ |
1(!) | 1(!), Z | Bボタン | ブロックを積む |
2(") | 2("), X | Aボタン | ブロックを消す |
Break | (STOP) | RUNボタン | 一時停止/解除 |
N | N | SELECTボタン | 次の面に進む (クリア済みの面まで) |
MZ版は、PiO 1986年6月号 42ページにあるパッチを当てると、ブロックを積む(カナ→1キー)、消す(1→2キー)に変更される。MZ-2500もそうだがパソピア7もカナキーが右側にあるので、1キーと2キーの方が操作しやすい。ただ上の列は間違って別のキーを押しそうなので、ZキーとXキーも割り当てておく。
パスワード入力のA~Zのキー入力はBIOSからの取得も考えたが、カナモードの制御ができず、アルファベットを入力しているつもりがカナが返ってくる可能性もあったので、I/Oポートで直接キーを読み込むロジックを作った。
あと、ゲーム中にキー入力のポチポチ音が気になったので、キーの割り込み処理を無効化
; キーボードリターン用の割り込みベクタを何もしないアドレスに変更LD HL, (0FEF8h)LD (0FEFAh), HL
元のアドレスは事前に保存しておき、BASICに戻る際に戻す。
0 件のコメント:
コメントを投稿