PC-G850VS / マシン語 6 of 6

参考: ポケコンジャーナル、1994 年 4 月号、p.81

f:id:ti-nspire:20170124082853j:plain:h315

作者: Ryu

1;--------------------
2	ORG	100H
3	CALL	0BFEBH
4	CALL	0BFEBH
5	CALL	0BFEBH
6	CALL	0BFEBH
7	LD	E,0
8	LD	D,3
9	LD	(MYDAT),DE
10	LD	L,0
11	LD	H,0
12	LD	(CODAT),HL
13	LD	A,0
14	LD	(MIFLG),A
15LOOP:
16;--------------------
17;自分を表示
18;--------------------
19	LD	DE,(MYDAT)
20	LD	A,'A'
21	CALL	0BE62H
22;--------------------
23;敵を表示
24;--------------------
25	LD	DE,(CODAT)
26	LD	A,'o'
27	CALL	0BE62H
28;--------------------
29;ミサイルを表示
30;--------------------
31	LD	A,(MIFLG)
32	CP	1
33	JP	NZ,MISKPS
34	LD	DE,(MIDAT)
35	LD	A,'l'
36	CALL	0BE62H
37MISKPS:
38	CALL	WAIT
39;--------------------
40;自分を消す
41;--------------------
42	LD	DE,(MYDAT)
43	LD	A,' '
44	CALL	0BE62H
45;--------------------
46;敵を消す
47;--------------------
48	LD	DE,(CODAT)
49	LD	A,' '
50	CALL	0BE62H
51;--------------------
52;ミサイルを消す
53;--------------------
54	LD	A,(MIFLG)
55	CP	1
56	JP	NZ,MISKPE
57	LD	DE,(MIDAT)
58	LD	A,' '
59	CALL	0BE62H
60MISKPE:
61;--------------------
62;ミサイルが当たった?
63;--------------------
64	LD	A,(MIFLG)
65	CP	1
66	JP	NZ,MISCSK
67	LD	HL,(MIDAT)
68	LD	A,H
69	LD	DE,(CODAT)
70	CP	D
71	JP	NZ,MISCSK
72	LD	A,L
73	CP	E
74	JP	NZ,MISCSK
75	LD	E,00
76	LD	D,00
77	LD	(CODAT),DE
78	LD	A,0
79	LD	(MIFLG),A
80	JP	LOOP
81MISCSK:
82;--------------------
83;キー入力
84;--------------------
85	CALL	0BE53H
86	CP	51H
87	RET	Z
88	CALL	0BE56H
89;--------------------
90;キー入力判定、移動処理
91;--------------------
92	LD	DE,(MYDAT)
93	CP	'4'
94	CALL	Z,LEFT
95	CP	'6'
96	CALL	Z,RIGHT
97	CP	' '
98	CALL	Z,SPACE
99	LD	(MYDAT),DE
100;--------------------
101;敵の移動
102;--------------------
103	CALL	RND
104	CP	85
105	JP	NC,COMVS
106	LD	HL,(CODAT)
107	INC	L
108	LD	A,L
109	CP	24
110	LD	(CODAT),HL
111	JR	NZ,COMVS
112	LD	L,0
113	LD	(CODAT),HL
114COMVS:
115;--------------------
116;ミサイルの移動
117;--------------------
118	LD	A,(MIFLG)
119	CP	1
120	JP	NZ,LOOP
121	LD	HL,(MIDAT)
122	DEC	H
123	LD	(MIDAT),HL
124	INC	H
125	JP	NZ,LOOP
126	LD	A,0
127	LD	(MIFLG),A
128	JP	LOOP
129;--------------------
130;wait処理
131;--------------------
132WAIT:
133	LD	BC,10000
134L1:
135	DEC	BC
136	LD	A,B
137	OR	C
138	JP	NZ,L1
139	RET
140;--------------------
141;左移動
142;--------------------
143LEFT:
144	DEC	E
145	LD	A,E
146	CP	-1
147	RET	NZ
148	INC	E
149	RET
150;--------------------
151;右移動
152;--------------------
153RIGHT:
154	INC	E
155	LD	A,E
156	CP	24
157	RET	NZ
158	DEC	E
159	RET
160;--------------------
161;ミサイル発射
162;--------------------
163SPACE:
164	LD	A,(MIFLG)
165	CP	1
166	RET	Z
167	LD	HL,(MYDAT)
168	LD	(MIDAT),HL
169	LD	A,1
170	LD	(MIFLG),A
171	RET
172;--------------------
173;乱数
174;--------------------
175;
176;A=RANDOM(0~255)
177RND:
178	PUSH	BC
179	PUSH	DE
180	PUSH	HL
181RNDDT:
182	LD	BC,02DBH
183	LD	DE,0383H
184	LD	HL,0000H
185	LD	A,10H
186RNDLP:
187	ADD	HL,HL
188	SLA	C
189	RL	B
190	JR	C,RNDSK
191	ADD	HL,DE
192RNDSK:
193	DEC	A
194	JR	NZ,RNDLP
195	EX	DE,HL
196	LD	HL,RNDDT+1
197	LD	(HL),E
198	INC	HL
199	LD	(HL),D
200	LD	A,D
201	POP	HL
202	POP	DE
203	POP	BC
204	RET
205;--------------------
206MYDAT:	DS	2
207CODAT:	DS	2
208MIDAT:	DS	2
209MIFLG:	DS	1