📄 main.asl
字号:
00A8 1F 183 inca
00A9 FD 05 184 sta cnt_over_sound_rum
00AB A7 64 185 cmpe #c_over_sound_rum
00AD 05 00 97 186 brnc gameover_song
00B0 187 gameover_stop:
00B0 F3 FF 188 lda #11111111b ;stop all motors and ir tx
00B2 FC 32 189 sta r_prtd ;set i/o prtd
00B4 FC 31 190 sta r_prtc ;set i/o prtc
00B6 F3 00 191 lda #00h
00B8 FC 48 192 sta r_voc
00BA FC 34 193 sta r_pwmc
00BC FD 00 194 sta status_ir_rcv ;restore the receive status
+ 195 ; lda #00h
00BE FC 38 196 sta r_lcdc ;disable lcd display
+ 197 ; lda #00000b ;disable all interrupt
00C0 FC 04 198 sta r_ier
00C2 F3 40 199 lda #01000000b ;set sleep mode,close int,t1,t2,tb
00C4 FC 22 200 sta r_op1
00C6 00 201 nop
00C7 00 202 nop
00C8 00 203 nop
00C9 00 204 nop
00CA 02 00 B0 205 br gameover_stop
+ 206 ;-----------------------------------------------------------------------
+ 207 ;calculator point subroutie program,
+ 208 ;-----------------------------------------------------------------------
00CD 209 cal_point::
00CD F1 00 210 lda cnt_point_free
00CF A7 78 211 cmpe #c_point_dec_intvl ;>400ms
00D1 04 00 D5 212 brc cal_point_0 ;yes,jump
00D4 24 213 ret
00D5 214 cal_point_0:
00D5 F3 00 215 lda #0
00D7 FD 00 216 sta cnt_point_free
00D9 F1 04 217 lda cnt_play_v_intvl ;play voice interval (c_point_dec_intvl*/300)*cnt_play_v_intvl
00DB 1F 218 inca
00DC FD 04 219 sta cnt_play_v_intvl ;the register is also used to fail loop times
00DE F1 01 220 lda cnt_point
00E0 AB 01 221 suba #1
00E2 FD 01 222 sta cnt_point
00E4 F1 02 223 lda cnt_point+1
00E6 BB 00 224 subc #0
00E8 FD 02 225 sta cnt_point+1 ;(cnt_point+1)cnt_point decrease 1,if the result>=0,c=1(Note)
00EA 06 00 F3 226 brz play_voice_select
00ED 05 01 26 227 brnc mouse_fail ;cy=0,cnt_point<0
00F0 02 01 04 228 br play_normal_voice ;>255 ,play normal voice
+ 229
00F3 230 play_voice_select:
00F3 20 00 00 231 call lcd_display
00F6 F1 01 232 lda cnt_point ;cnt_point+1=0
00F8 DB 00 233 ora #0 ;judge z flag bit
00FA 06 01 26 234 brz mouse_fail ;=0,seek food fail,
00FD F1 01 235 lda cnt_point
00FF A7 32 236 cmpe #c_fast_voice
0101 04 01 16 237 brc play_fast_voice ;50< cnt_point<255
+ 238 ;play normal voice
0104 239 play_normal_voice:
0104 F1 00 240 lda flg_rcv_broadcast
0106 A7 01 241 cmpe #1
0108 06 01 16 242 brz play_fast_voice ;receive the broadcast sign, fast voice
+ 243
010B 20 00 00 244 call lcd_display
010E F1 04 245 lda cnt_play_v_intvl
0110 A7 06 246 cmpe #c_play_v_normal_intvl
0112 04 01 1E 247 brc play_sound1
0115 24 248 ret
0116 249 play_fast_voice:
0116 F1 04 250 lda cnt_play_v_intvl
0118 A7 01 251 cmpe #c_play_v_fast_intvl
011A 04 01 1E 252 brc play_sound1
011D 24 253 ret
011E 254 play_sound1:
011E 20 00 00 255 call select_sound_normal
0121 F3 00 256 lda #0
0123 FD 04 257 sta cnt_play_v_intvl
0125 24 258 ret
0126 259 mouse_fail::
0126 20 00 00 260 call lcd_display
0129 F3 FF 261 lda #0ffh
012B FC 32 262 sta r_prtd ;stop motors
012D FC 31 263 sta r_prtc ;stop transmit ir
012F F3 00 264 lda #0
0131 FD 00 265 sta status_ir_transmit ;stop transmit
0133 FD 00 266 sta cnt_point_free ;timer 255/300 s
0135 20 00 00 267 call select_sound_fail
0138 F3 05 268 lda #c_fail_loop
013A FD 03 269 sta cnt_fail_loop
013C 270 Play_fail_delay:
013C 29 271 clrwdt
013D 20 00 00 272 call lcd_display
0140 F1 00 273 lda cnt_point_free
0142 A7 FF 274 cmpe #255 ;delay 255/300s
0144 07 01 3C 275 brnz play_fail_delay
0147 FD 00 276 sta cnt_point_free
0149 277 play_fail_loop:
0149 29 278 clrwdt
014A F3 00 279 lda #0
014C FC 38 280 sta r_lcdc ;disable lcd display
014E F1 00 281 lda cnt_point_free
0150 A7 FF 282 cmpe #255
0152 07 01 49 283 brnz play_fail_loop
0155 F3 00 284 lda #0
0157 FD 00 285 sta cnt_point_free ;timer 255/300 s
0159 20 00 00 286 call select_sound_fail
015C F1 03 287 lda cnt_fail_loop
015E 3F 288 deca
015F FD 03 289 sta cnt_fail_loop
0161 04 01 3C 290 brc play_fail_delay ;if>0,c=1
0164 02 00 B0 291 br gameover_stop
+ 292
+
+Symbol Table
+
+ INT2_isr **** GX
+ M_stopbit **** GX
+ 2 Play_fail_delay 013C R
+ Run **** GX
+ c_fail_loop = 0005
+ 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_over_sound_rum = 0064
+ c_play_v_fast_intvl = 0001
+ c_play_v_normal_intvl = 0006
+ 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 00CD GR
+ 2 cal_point_0 00D5 R
+ 2 clear_memory 0022 R
+ 2 clr_end 0034 R
+ 2 clr_m 0026 R
+ 1 cnt_fail_loop 0003 GR
+ 1 cnt_over_sound_rum 0005 GR
+ 1 cnt_play_v_intvl 0004 GR
+ 1 cnt_point 0001 GR
+ cnt_point_free **** GX
+ debounce **** GX
+ 1 flg_new_random 0000 GR
+ flg_rcv_broadcast **** GX
+ flg_rcv_touched **** GX
+ 2 gameover 0090 R
+ 2 gameover_song 0097 R
+ 2 gameover_song1 00A5 R
+ 2 gameover_stop 00B0 R
+ 2 if_gameover 0088 GR
+ 2 int1_isr 0015 R
+ lcd_display **** GX
+ 2 main 0078 R
+ 2 mouse_fail 0126 GR
+ 2 play_fail_loop 0149 R
+ 2 play_fast_voice 0116 R
+ 2 play_normal_voice 0104 R
+ 2 play_sound1 011E R
+ 2 play_voice_select 00F3 R
+ scan_key **** GX
+ scan_key_start **** GX
+ select_sound_fail **** GX
+ select_sound_gameover **** GX
+ select_sound_normal **** 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 6 flags 2
+ 2 main_code size 167 flags D
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -