PC-G850VS / マシン語 5 / IOCS を使ってキー入力を判定する

IOCS:

  • 0BE62H は、アキュムレーターにロードされた文字 (または ASCII コードで指定された文字) を (E,D) 座標に表示する。
  • 0BE53H は、何かキーが押されたら、あらかじめ割り振ってあるキー番号 (ASCII コードではない) をアキュムレーターにロードする。
  • 0BE56H は、アキュムレーターにロードされたキー番号を ASCII コードに変換してアキュムレーターにロードする。
  • 0BFEEH は、アキュムレーターにロードされた文字 (または ASCII コードで指定された文字) を (E,D) 座標から B 個表示する。
  • IOCS をコールするとレジスタの内容が破壊されるおそれがあるので、IOCS をコールする前に PUSH で待避しておき、コールし終わったら POP で戻す。

 
 
数字キーで文字 A を上下左右に動かすプログラム:

1	ORG 100H
2	CALL CLS
3;指定した座標に文字 A を表示する。
4	LD E,0
5	LD D,0
6LOOP:	LD A,'A'
7	PUSH DE
8	CALL 0BE62H
9	POP DE
10;wait 処理
11	LD BC,10000
12L1:	DEC BC
13	LD A,B
14	OR C
15	JP NZ,L1
16;表示した文字を消す。
17	XOR A
18	PUSH DE
19	CALL 0BE62H
20	POP DE
21;押した数字キーに応じて (E,D) 座標を動かす。
22	PUSH DE
23	CALL 0BE53H
24	CP 51H ;[ON] (BREAK) キー (キー番号 51H) が押されたらプログラムを止める。
25	RET Z  ; 〃
26	CALL 0BE56H
27	POP DE
28	CP '4'
29	CALL Z,LEFT
30	CP '6'
31	CALL Z,RIGHT
32	CP '8'
33	CALL Z,UP
34	CP '2'
35	CALL Z,DOWN
36	JP LOOP
37;
38LEFT:	DEC E
39	LD A,E
40	CP -1 ;画面の左端から 1 つ左の座標番号。
41	RET NZ
42	INC E ;注目座標が画面の左端からはみ出したら内側に戻す。
43	RET
44;
45RIGHT:	INC E
46	LD A,E
47	CP 24 ;24 は横の文字数 (画面の右端から 1 つ右の座標番号)。
48	RET NZ
49	DEC E ;注目座標が画面の右端からはみ出したら内側に戻す。
50	RET
51;
52UP:	DEC D
53	LD A,D
54	CP -1 ;画面の上端から 1 つ上の座標番号。
55	RET NZ
56	INC D ;注目座標が画面の上端からはみだ出したら内側に戻す。
57	RET
58;
59DOWN:	INC D
60	LD A,D
61	CP 6 ;6 は縦の文字数 (画面の下端から 1 つ下の座標番号)。
62	RET NZ
63	DEC D ;注目座標が画面の下端からはみ出したら内側に戻す。
64	RET
65;
66CLS:	XOR A
67	LD B,24*6
68	LD E,0
69	LD D,0
70	CALL 0BFEEH
71	RET


参考: