📄 system.s
字号:
include h/mori.h public set_get_buf public wait_key public rpg_proc_key public delay public proc_sys_event extrn mspeed4 extrn speed7 ;------------------------------------------------------------------;无闪烁精确延时(但不省电);延时X*0.002秒,X=0时延时0.512秒;------------------------------------------------------------------delay: php sei jsr proc_sys_event ldy #0delay1: rept 12 nop endr iny bne delay1 dex bne delay1 plp rts;------------------------------------------------------------------;Input: Key;Output:Areg;------------------------------------------------------------------wait_key: lda put_key beq wait_key1 lm put_key,#0 lda key bmi wait_key2wait_key1: lm key,#0 jsr mspeed4wkey: jsr proc_sys_event lda key ;check if bpl wkeywkey0: jsr speed7 lda keywait_key2: and #7fh sta key rtsproc_sys_event: lm watch_dog_timer_flag,#0 sta idlesec rts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;在ram 切BANK 获得数据公用例程; Input: bank_no 数据所在的bank号(相对于game_bank); bank_data_ptr 数据表地址; Output: data_read_buf 数据; Destory: None;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; set_get_buf: ldy #0set_get_buf0: lda set_get_buf1,y sta ram_get256,y iny bne set_get_buf0 rtsset_get_buf1: jmp ram_program jmp set_get_2-set_get_buf1+ram_get256 push io_bank_switch lda game_bank clc adc bank_no sta io_bank_switch ldy #0set_get_buf2: lda (bank_data_ptr),y sta data_read_buf,y iny bne set_get_buf2 pull io_bank_switch rtsset_get_2: push io_bank_switch lda game_bank clc adc bank_no sta io_bank_switch ldy #0 lda (bank_data_ptr),y tax iny lda (bank_data_ptr),y tay pull io_bank_switch rts;-----------------------------------------------; as proc_key; input: Xreg Yreg a1; output: cy Yreg;-----------------------------------------------rpg_proc_key: tya pha txa deyProcKeyLoop: cmp (a1),y beq ProcLegalKey dbpl y,ProcKeyLoop pla txa clc rtsProcLegalKey: pla adda2 a1 txa pha ; backup key value tya asl a tay lda (a1),y tax iny lda (a1),y sta a1h stx a1 ;------- set index dey tya lsr a tay ;------- set index pla ; restore key value tax jsr JmpKeyProc sec rtsJmpKeyProc: jmp (a1) ;in: Areg Yreg(index) end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -