PC-G850VS / マシン語 6 of 6
参考: ポケコンジャーナル、1994 年 4 月号、p.81
作者: 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