📄 key.asm.bak
字号:
;--------------------------------- Scan key and set the key flag
Chkkey:
LDA PA
EOR #64H ; #4CH
AND #64H ;#4CH
STA KeyValue1 ; new PA
LDA KeyValue2 ; old PA
STA KeyTemp
CMP KeyValue1
BEQ Check
LDA KeyValue1 ; if no equal, key act
STA KeyValue2
EOR KeyTemp
BEQ Check
STA KeyValue
LDA #10 ; KeyCNT=10, Debounce time = 10*2 = 20ms
STHN KeyCNT
SETB fKEYDeb
Check:
JNB fKEYDeb,CheckKeyEnd
DECHN KeyCNT
BNE CheckKeyEnd
CLRB fKEYDeb
LDA PA
EOR #64H
AND #64h ;4CH
AND KeyValue
CMP KeyValue
BNE NoKey
CheckKeyEnd1:
SETB B_HavKey
CAJE KeyValue,#04H,KEY_N1
CAJE KeyValue,#20H,KEY_N2
CAJE KeyValue,#40H,KEY_N3
CLRB B_HavKey
CheckKeyEnd:
NoKey
RTS
KEY_N1:
SETB B_KeyMoveLeft
RTS
KEY_N2:
SETB B_KeyMoveRight
RTS
KEY_N3:
SETB B_KeyFire
RTS
;----------------------------------
ChkSocRow3Lcd ;Gm2 CLear up wolf flag,1 up lvl,clr socro3
CLRB B_ChkSocRow3
JB B_Gm2Flag,CheckArrowRow3Lcd_ ;KeyFunEXIT
BBS1 R_Wolf1Pig2Move,KeyFun23
BBS0 R_Wolf1Pig2Move,KeyFun22
; JMP KeyFun21
KeyFun21
BBR0 SocRow3,KeyFunEND
DEC R_SocCnt
BNE KeyFun21C
SETB B_UpLevel
KeyFun21C
LDA SocRow3
AND #11111110B
KeyFunCom
STA SocRow3
SETB B_FlashSocDisp
SETB B_FlashDisp
RTS
CheckArrowRow3Lcd_
JMP CheckArrowRow3Lcd
KeyFun22
BBR1 SocRow3,KeyFunEND
DEC R_SocCnt
BNE KeyFun22C
SETB B_UpLevel
KeyFun22C
LDA SocRow3
AND #11111101B
JMP KeyFunCom
KeyFun23
BBR2 SocRow3,KeyFunEND
DEC R_SocCnt
BNE KeyFun23C
SETB B_UpLevel
KeyFun23C
LDA SocRow3
AND #11111011B
JMP KeyFunCom
KeyFunEND
RTS
;----------------------------------
KeyFunction:
JNB B_KeyMoveLeft,L_KeyMoveRight
CLRB B_KeyMoveLeft
LDA #00H
STA R_TmCnt1Min
STA R_TmCnt1Min+1
JB B_DemoFlag,DemoSltRout1_
LDA #01h
JSR PlaySound
CLRB B_HavKey
LDA R_Wolf1Pig2Move
BEQ ChkSocRow3Lcd ;Gm2 CLear up wolf flag,1 up lvl,clr socro3
DEC R_Wolf1Pig2Move
SETB B_FlashWolfDisp
SETB B_FlashDisp
JMP ChkSocRow3Lcd ;Gm2 CLear up wolf flag,1 up lvl,clr socro3
L_KeyMoveRight:
JNB B_KeyMoveRight,L_KeyFire
clrb B_KeyMoveRight
LDA #00H
STA R_TmCnt1Min
STA R_TmCnt1Min+1
JB B_DemoFlag,DemoSltRout2_
LDA #01h
JSR PlaySound
BBS1 R_Wolf1Pig2Move,ChkSocRow3Lcd ;Gm2 CLear up wolf flag,1 up lvl,clr socro3
INC R_Wolf1Pig2Move
SETB B_FlashWolfDisp
SETB B_FlashDisp
JMP ChkSocRow3Lcd ;Gm2 CLear up wolf flag,1 up lvl,clr socro3
DemoSltRout1_
JMP DemoSltRout1
DemoSltRout2_
JMP DemoSltRout2
L_KeyFire:
JNB B_KeyFire,KeyFunEND
CLRB B_KeyFire
LDA #00H
STA R_TmCnt1Min
STA R_TmCnt1Min+1
JB B_DemoFlag,ClrDemoFlag
JNB B_Gm2Flag,KeyFunEND
LDA #G2_KeyFire
JSR PlaySound
BBS1 R_Wolf1Pig2Move,Set_SocRow32
BBS0 R_Wolf1Pig2Move,Set_SocRow31
Set_SocRow30
SETB B_SocRow30
; LDA #0
; STA R_TMCnt_1500ms
SETB B_FlashSocDisp
SETB B_FlashDisp
CLRB B_HavKey
RTS
ClrDemoFlag
JNB B_Gm2Flag,L_GAME1_Init
LDA #G2_Start
JSR PlaySound
JMP ClrDemoFlagC
L_GAME1_Init
LDA #00H
JSR PlaySound
ClrDemoFlagC
CLRB B_DemoFlag
CLRB B_GmOvFlag
CLRB B_UpLevel
SETB B_MainInitF
RTS
Set_SocRow32
SETB B_SocRow32
; LDA #0
; STA R_TMCnt_1500ms
SETB B_FlashSocDisp
SETB B_FlashDisp
RTS
Set_SocRow31
SETB B_SocRow31
; LDA #0
; STA R_TMCnt_1500ms
SETB B_FlashSocDisp
SETB B_FlashDisp
RTS
Gm2DemoRt
BBS1 R_Wolf1Pig2Move,ChkGm2Fun3
BBS0 R_Wolf1Pig2Move,ChkGm2Fun2
JMP ChkGm2Fun1
ChkGm2Fun3
SETB B_ChkSocRow3
BBS2 SocRow1,WolfLeft1
BBS2 SocRow2,WolfLeft1
BBS2 SocRow3,WolfLeft1
; BBS2 R_Pig1Wolf2Move,Set_SocRow32
JMP Set_SocRow32
ChkGm2Fun2
SETB B_ChkSocRow3
BBS1 SocRow1,JudgeMov
BBS1 SocRow2,JudgeMov
BBS1 SocRow3,JudgeMov
; BBS1 R_Pig1Wolf2Move,Set_SocRow31
; BBS2 R_Pig1Wolf2Move,WolfRight1
JMP Set_SocRow31
ChkGm2Fun1
SETB B_ChkSocRow3
BBS0 SocRow1,WolfRight1
BBS0 SocRow2,WolfRight1
BBS0 SocRow3,WolfRight1
; BBS0 R_Pig1Wolf2Move,Set_SocRow30
JMP Set_SocRow30
JudgeMov:
BBS2 R_Pig1Wolf2Move,WolfRight1
BBS0 R_Pig1Wolf2Move,WolfLeft1
RTS
;============================================================================================
DemoSltRout1
JNB B_Gm2Flag,KeyFunEXIT
; LDA #01h
; JSR PlaySound
CLRB B_Gm2Flag
SETB B_DemoInitF
RTS
DemoSltRout2
JB B_Gm2Flag,KeyFunEXIT
; LDA #01h
; JSR PlaySound
SETB B_Gm2Flag
SETB B_DemoInitF
RTS
ChkDemoMode:
CLRB B_ChkDemoMode
JB B_Gm2Flag,Gm2DemoRt
BBS1 R_Wolf1Pig2Move,ChkFun3
BBS0 R_Wolf1Pig2Move,ChkFun2
JMP ChkFun1
ChkFun3
BBR2 SocRow3,WolfLeft1
; SETB B_ChkSocRow3
RTS
ChkFun2
BBs1 SocRow3,KeyFunEXIT
LDA R_Buffer
AND #00000111B
CMP #4
BCC WolfRight1
; CMP #3
; BEQ WolfLeft1
; CMP #6
; BEQ WolfRight1
; CMP #0
; BEQ WolfLeft1
BBS2 SocRow3,WolfRight1
BBS0 SocRow3,WolfLeft1
;; SETB B_ChkSocRow3
JMP WolfLeft1
; RTS
ChkFun1
BBR0 SocRow3,WolfRight1
; SETB B_ChkSocRow3
RTS
WolfRight1
BBS1 R_Wolf1Pig2Move,KeyFunEXIT
INC R_Wolf1Pig2Move
SETB B_FlashWolfDisp
SETB B_FlashDisp
KeyFunEXIT
RTS
WolfLeft1
LDA R_Wolf1Pig2Move
BEQ KeyFunEXIT
DEC R_Wolf1Pig2Move
SETB B_FlashWolfDisp
SETB B_FlashDisp
RTS
;============================================================================================
CheckArrowRow3Lcd ;CLear up wolf flag
BBR3 LCD_10+1,KeyGm2Fun22 ;Left UP
RMB3 LCD_10+1
RMB0 R_Pig1Wolf2Move
RMB3 LCD_00+1
DEC R_SocCnt
BNE KeyGm2Fun21C
SETB B_UpLevel
KeyGm2Fun21C
;KeyGm2FunCom
; JB B_DemoFlag,KeyFunEXIT
RTS
KeyGm2Fun22 ;Middle UP
BBR0 LCD_20+1,KeyGm2Fun23
RMB0 LCD_20+1
RMB1 R_Pig1Wolf2Move
RMB1 LCD_10+1
DEC R_SocCnt
BNE KeyGm2Fun22C
SETB B_UpLevel
KeyGm2Fun22C
RTS
; JMP KeyGm2FunCom
KeyGm2Fun23 ;Right UP
BBR6 LCD_20,KeyFunEXIT
RMB6 LCD_20
RMB2 R_Pig1Wolf2Move
RMB6 LCD_10
DEC R_SocCnt
BNE KeyGm2Fun23C
SETB B_UpLevel
KeyGm2Fun23C
RTS
; JMP KeyGm2FunCom
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -