📄 mouse_main.asl
字号:
00B7 00 196 nop
00B8 00 197 nop
00B9 02 00 99 198 br gameover_stop
+ 199 ;-----------------------------------------------------------------------
+ 200 ;calculator point subroutie program,
+ 201 ;-----------------------------------------------------------------------
00BC 202 cal_point::
00BC F1 00 203 lda cnt_point_free
00BE A7 78 204 cmpe #c_point_dec_intvl ;>400ms
00C0 04 00 C4 205 brc cal_point_0 ;yes,jump
00C3 24 206 ret
00C4 207 cal_point_0:
00C4 F3 00 208 lda #0
00C6 FD 00 209 sta cnt_point_free
00C8 F1 04 210 lda cnt_play_v_intvl ;play voice interval (c_point_dec_intvl*/300)*cnt_play_v_intvl
00CA 1F 211 inca
00CB FD 04 212 sta cnt_play_v_intvl ;the register is also used to fail loop times
00CD 20 01 78 213 call lcd_display
00D0 F1 01 214 lda cnt_point
00D2 AB 01 215 suba #1
00D4 FD 01 216 sta cnt_point
+ 217
00D6 F1 02 218 lda cnt_point+1
00D8 BB 00 219 subc #0
00DA FD 02 220 sta cnt_point+1 ;(cnt_point+1)cnt_point decrease 1,if the result>=0,c=1(Note)
00DC 06 00 E5 221 brz play_voice_select
00DF 05 01 0B 222 brnc mouse_fail ;cy=0,cnt_point<0
00E2 02 00 F3 223 br play_normal_voice ;>255 ,play normal voice
+ 224
00E5 225 play_voice_select:
00E5 F1 01 226 lda cnt_point ;cnt_point+1=0
00E7 DB 00 227 ora #0 ;judge z flag bit
00E9 06 01 0B 228 brz mouse_fail ;=0,seek food fail,
00EC F1 01 229 lda cnt_point
00EE A7 32 230 cmpe #c_fast_voice
00F0 04 00 FB 231 brc play_fast_voice ;50< cnt_point<255
+ 232 ;play normal voice
00F3 233 play_normal_voice:
00F3 F1 04 234 lda cnt_play_v_intvl
00F5 A7 14 235 cmpe #c_play_v_normal_intvl
00F7 04 01 03 236 brc play_sound1
00FA 24 237 ret
00FB 238 play_fast_voice:
00FB F1 04 239 lda cnt_play_v_intvl
00FD A7 0A 240 cmpe #c_play_v_fast_intvl
00FF 04 01 03 241 brc play_sound1
0102 24 242 ret
0103 243 play_sound1:
0103 20 00 00 244 call select_sound_normal
0106 F3 00 245 lda #0
0108 FD 04 246 sta cnt_play_v_intvl
010A 24 247 ret
010B 248 mouse_fail::
010B F3 FF 249 lda #0ffh
010D FC 32 250 sta r_prtd ;stop motors
010F FC 31 251 sta r_prtc ;stop transmit ir
0111 F3 00 252 lda #0
0113 FD 00 253 sta status_ir_transmit ;stop transmit
0115 FD 00 254 sta cnt_point_free ;timer 255/300 s
0117 20 00 00 255 call select_sound_fail
011A F3 06 256 lda #c_fail_loop
011C FD 03 257 sta cnt_fail_loop
011E 258 Play_fail_delay:
011E 29 259 clrwdt
011F 20 01 78 260 call lcd_display
0122 F1 00 261 lda cnt_point_free
0124 A7 FF 262 cmpe #255 ;delay 255/300s
0126 07 01 1E 263 brnz play_fail_delay
0129 FD 00 264 sta cnt_point_free
012B 265 play_fail_loop:
012B 29 266 clrwdt
012C F3 00 267 lda #0
012E FC 38 268 sta r_lcdc ;disable lcd display
0130 F1 00 269 lda cnt_point_free
0132 A7 FF 270 cmpe #255
0134 07 01 2B 271 brnz play_fail_loop
0137 F3 00 272 lda #0
0139 FD 00 273 sta cnt_point_free ;timer 255/300 s
013B 20 00 00 274 call select_sound_fail
013E F1 03 275 lda cnt_fail_loop
0140 3F 276 deca
0141 FD 03 277 sta cnt_fail_loop
0143 04 01 1E 278 brc play_fail_delay ;if>0,c=1
0146 02 00 99 279 br gameover_stop
+ 280 ;----------------------------------------------------------------;
+ 281 ;Initial Registor Subroutine
+ 282 ;----------------------------------------------------------------;
0149 283 initial_reg::
+ 284
0149 F3 00 285 lda #00h
014B FC 54 286 sta r_tpp
014D FC 02 287 sta r_tph
014F FC 01 288 sta r_tpl
0151 FC 28 289 sta r_pp
0153 FC 48 290 sta r_voc
0155 FC 34 291 sta r_pwmc
0157 F3 00 292 lda #00000000b ;set normal mode,close int,t1,t2,tb
0159 FC 22 293 sta r_op1
015B FC 24 294 sta r_op2
015D F3 00 295 lda #00000b ;disable all interrupt
015F FC 04 296 sta r_ier
0161 F3 01 297 lda #01h
0163 FC 38 298 sta r_lcdc ;点亮LCD
0165 28 299 clrint
0166 24 300 ret
+ 301
+ 302 ;----------------------------------------------------------------;
+ 303 ;Set Timer1 Frequency Subroutine
+ 304 ;----------------------------------------------------------------;
0167 305 normal_clock::
0167 F3 00 306 lda #c_t1h ;set timer1
0169 FC 11 307 sta r_t1h
016B F3 03 308 lda #c_t1l
016D FC 08 309 sta r_t1l
016F F3 22 310 lda #c_t2h ;set timer2
0171 FC 14 311 sta r_t2h
0173 F3 B8 312 lda #c_t2l
0175 FC 12 313 sta r_t2l
0177 24 314 ret
0178 315 lcd_display::
+ 316
0178 24 317 ret
+
+Symbol Table
+
+ INT2_isr **** GX
+ M_stopbit **** GX
+ 2 Play_fail_delay 011E R
+ c_fail_loop = 0006
+ c_fast_voice = 0032
+ c_ier = 0007
+ c_ier_en_int2 = 0001
+ c_ier_en_t1 = 0004
+ c_ier_en_t2 = 0002
+ c_init_point_h = 0003
+ c_init_point_l = 00E7
+ c_op1 = 001C
+ c_play_v_fast_intvl = 000A
+ c_play_v_normal_intvl = 0014
+ c_point_dec_intvl = 0078
+ c_ram = 00FF
+ c_sp = 00EF
+ c_t1h = 0000
+ c_t1l = 0003
+ c_t2h = 0022
+ c_t2l = 00B8
+ 2 cal_point 00BC GR
+ 2 cal_point_0 00C4 R
+ 2 call_random 0072 R
+ 2 clear_memory 0022 R
+ 2 clr_end 0034 R
+ 2 clr_m 0026 R
+ 1 cnt_fail_loop 0003 GR
+ 1 cnt_play_v_intvl 0004 GR
+ 1 cnt_point 0001 GR
+ cnt_point_free **** GX
+ 1 flg_new_random 0000 GR
+ flg_rcv_touched **** GX
+ 2 gameover 0083 R
+ 2 gameover_song 0086 R
+ 2 gameover_song1 0091 R
+ 2 gameover_stop 0099 R
+ 2 if_gameover 007B GR
+ 2 initial_reg 0149 GR
+ 2 int1_isr 0015 R
+ ir_judge **** GX
+ 2 lcd_display 0178 GR
+ 2 main 0055 R
+ 2 mouse_fail 010B GR
+ 2 normal_clock 0167 GR
+ 2 play_fail_loop 012B R
+ 2 play_fast_voice 00FB R
+ 2 play_normal_voice 00F3 R
+ 2 play_sound1 0103 R
+ 2 play_voice_select 00E5 R
+ read_random **** GX
+ run **** GX
+ scan_key **** GX
+ scan_key_start **** GX
+ select_sound_fail **** GX
+ select_sound_gameover **** GX
+ select_sound_normal **** GX
+ set_rules **** GX
+ 2 start_initial 0016 R
+ status_ir_rcv **** GX
+ status_ir_transmit **** GX
+ t1_isr **** GX
+ t2_isr **** GX
+ 2 tb_isr 0015 R
+
+
+Area Table
+
+ 0 . size 0 flags 0
+ 1 main_var size 5 flags 2
+ 2 main_code size 179 flags D
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -