📄 deldata.asm
字号:
; ***************************************************************************
; * Project : Electronic Dictionary *
; * Date : 2003.9 *
; * File Name : DELDATA.ASM *
; ***************************************************************************
pw 128
case off
externs on
include st2202.def ;; Include st2202 I/O define.
include st2202.mac
include Data.def ;; Data RAM define.
include Bios.h
include Graphics.h
include Graph.def
include KeyDef.def
public RestartMode
public flashinitdata_net
public FormateFlash
public InitFlash
public deldata_Load
public display_RestartMsg
public InitProFormat_yh
QUADDR EQU CDATA
WEIADDR EQU CDATA+1
timer_count equ cdata+1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;; Physical Bank number definition ;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;=====================================================
K1Key equ BKey ;; '1'
K2Key equ NKey ;; '2'
K3Key equ MKey ;; '3'
DS0 .SECTION
DelDataEvent:
dw DelDataBank
dw deldata_hsec-1 ;; 半秒钟事件处理向量。
dw deldata_sec-1 ;; 一秒钟事件处理向量。
dw deldata_min-1 ;; 一分钟事件处理向量。
dw deldata_KeyDown-1 ;; Key Down 事件处理向量。
dw deldata_keyup-1 ;; Key Up 事件处理向量。
dw deldata_timer-1 ;; Timer 事件处理向量。
dw deldata_keypress-1 ;; Key press 事件处理程序向量。
dw deldata_Load-1 ;; 进入此 Mode 事件处理程序向量。
dw deldata_helprt-1 ;; Return from Help.
RestartMode: db ' RESET SELECTION',0dh
db '1. Reset all ram',0dh
db '2. Change nothing',0dh
db '3. Format all memory',0
RestartMsg:
db 0dh
db ' System restart... '
db ' Please wait...',0
public font_a2_fd
public font_n_8ah
public font_n_8Eh
font_n_8Eh:
db 00h,2ch,32h,22h,22h,22h,22h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
font_n_8ah:
db 00h,2ch,32h,22h,22h,22h,22h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
font_a2_fd:
db 00h,00h,00h,00h,00h,00h,1ch,70h
db 22h,88h,01h,04h,01h,04h,7fh,fch
db 41h,00h,41h,00h,22h,88h,1ch,70h
db 00h,00h,00h,00h,00h,00h,00h,00h
;;=====================================================
PS2 .SECTION
BankNo equ DelDataBank
public DelDataEvent
public jmp_deldata_2
public select_ic
public game_read_key_again
updatescreen_deldata:
lda #>UpdateScreen_bug-1
pha
lda #<UpdateScreen_bug-1
pha
lda #>updatesc_bank
pha
lda #<updatesc_bank
jmp longgo
game_read_key_again:
lda #>read_key_again-1
pha
lda #<read_key_again-1
pha
lda #>TestBank
pha
lda #<TestBank
jmp longgo
select_ic:
lda <sf1
and #0f0h
ora #flash_512k_yh
;; ora #flash_512k_5000
sta <sf1 ;;决定初始化的Flash及显示的类型!
ldx #0 ;; Reload auto power off time counter.
bbr4 <SysOpt,?paint8 ;; Branch if auto power timer is 3 minuts.
ldx #2 ;; Index to 5 minuts table.
?paint8:
lda ATPTabx,x
sta PowerT
lda ATPTabx+1,x
sta PowerT+1
smb7 <pd
stz power_flag
rts
Minu3 equ 60*3 ;; Auto. power off time .
Minu5 equ 60*5 ;; Auto. power off time .
ATPTabx:
dw -Minu3
dw -Minu5
;;=============================================================
jmp_deldata_2:
jsr select_ic
sei
LSoundOff
lda #00110000b ;; Interrupt enable flag.
sta <IENAB
sta <IENA ;; (5) Enable Base timer interrupt.
cli
;;========================================
jsr set_flashbank
ldx #default_contrast_new
stx <contrast
jsr ljsr
dw yiyiBank
dw ContrastWriteToFlash_0-1
;;========================================
jsr set_flashbank
lda 8000h
cmp #55h
beq ?fsdfasd
jmp InitFlash
?fsdfasd:
jmp ClrAllDat
;;=====================================================
deldata_hsec:
deldata_KeyDown:
deldata_keypress:
deldata_timer:
deldata_keyup:
deldata_sec:
deldata_helprt:
;;;;=====================================================
deldata_Load:
jsr select_ic
STZ <SYSF
JSR LJSR
DW CardBank
DW RESET_SP104-1
JSR LJSR
DW CardBank
DW SP140_Sleep-1
lReadOldContrast
lset_lcd_contrast
LSetScreen_to_ds0 1
lprint RestartMode
jsr CALL_LUpdateScreen
;;=============================================================
;;=============================================================
lda #15
sta <timer_count
jsr set_flashbank
lda 8000h
cmp #55h
bne InitFlash
bbr7 <sf1,ClrAllDat_0
;;;;=====================================================
;;;; "按键压下"事件处理程序.
;;;;=====================================================
DelTLoad3:
rmb3 <EFlag
TKeyDown:
WAI
NOP
bbr1 <eflag,?dsfdsk
rmb1 <EFlag
dec <timer_count
bpl ?dsfdsk
jmp DirEntClkMode
?dsfdsk:
bbr3 <EFlag,TKeyDown
lkeytone
lda <KeyNo
cmp #K1Key
beq ClrAllDat
cmp #K3Key
beq InitFlash
cmp #K2Key
bne DelTLoad3
jsr set_flashbank
lda 8000h
cmp #55h
bne _judge_flash_if_normal
jmp DirEntClkMode
InitFlash:
jsr display_RestartMsg
bra _judge_flash_if_normal
ClrAllDat:
jsr display_RestartMsg
jsr set_flashbank
lda 8000h
cmp #55h
beq ClrAllDat_0
_judge_flash_if_normal:
jsr FormateFlash
jsr InitWholeFlashX
ClrAllDat_0:
jsr ljsr
dw studybank
dw study_init-1
jsr ljsr
dw cal_bank
dw system_init_cal-1
bbs4 <soundflag,$
lReadOldContrast
lset_lcd_contrast
lda #>CoolStartUp-1
pha
lda #<CoolStartUp-1
pha
lda #>biosbank
pha
lda #<biosbank
jmp longgo
FlashInitData:
flashinitdata_net:
;; db 55h,0aah,default_contrast,0,1,0ffh,0,0,0ffh,0ffh,0ffh,0ffh
;; db 0ffh,0ffh,0ffh,0ffh
;; dw fefeh,fefeh,fefeh,fefeh
;; dw fefeh,fefeh,fefeh,fefeh,fefeh,fefeh,fefeh,fefeh
;; dw fefeh,fefeh,fefeh,fefeh,fefeh,fefeh,fefeh,fefeh
;; dw fefeh,fefeh,fefeh,fefeh,7cfeh,ffffh,ffffh,ffffh
db 55h,0aah,default_contrast_new,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh
db 0ffh,0ffh,0ffh,0ffh
dw fefeh,fefeh,fefeh,ff7ch,ffffh,ffffh,ffffh,ffffh
dw ffffh,ffffh,ffffh
db 0ffh
;;====================================================================
db 0ffh
dw ffffh,ffffh,ffffh,ffffh
dw ffffh,ffffh,ffffh,ffffh,fefeh,fefeh,fefeh,fefeh
dw fefeh,fefeh,fefeh,fefeh,fefeh,fefeh,fefeh,fefeh
FlashInitData_end:
InitWholeFlashX:
stz <timer_count
jsr set_flashbank
lda #80h
sta <INDH
stz <INDL
lda #<FlashInitData
sta <INSL
lda #>FlashInitData
sta <INSH
ldy #0
InitFATTbl:
lda (<INS),y
tax
;jsr LJSR
;dw BiosBank
;dw cdata_decide_write_flash-1 ;;;;
lcdata_decide_write_flash
iny
cpy #FlashInitData_end-FlashInitData
bne InitFATTbl
stz <drrh
lda #<flashbank-1
sta <drrl
jsr initProFormat_yh ;;游戏
rts
FormateFlash:
ldy #(272-92)/4
lda #>FlashBank_yh-1
sta <drrh
lda #<FlashBank_yh-1
sta <drrl
lda #c0h
sta <INDH
stz <INDL
jsr LJSR
dw BiosBank
dw erase_flash_4k_x_n_bytes-1
rts
deldata_min:
DirEntClkMode:
bbs4 <soundflag,$
lda #>ds0bank
sta <drrh
lda #<ds0bank
sta <drrl
LEntClkMode
display_RestartMsg:
lda #>ds0bank
sta <drrh
lda #ds0bank
sta <drrl
lcls
LPrint RestartMsg
jsr CALL_LUpdateScreen
rts
initProFormat_yh:
ldy #4
?1x:
lda AreaSector,y
sta <INDH
lda #10h
sta <INDL
Lcdata_decide_SectorErase
iny
cpy #8
bcc ?1x
lda #>ljbx_start
sta <INSH
stz <INSL
lda #0c0h
sta <INDH
stz <INDL
ldy #0
?1:
lda (<INS),y
tax
Lcdata_decide_write_flash
iny
cpy #(ljbx_end-ljbx_start)
bne ?1
rts
AreaSector: db 80h,90h,a0h,b0h,c0h,d0h,e0h,f0h
set_flashbank:
lda #>FlashBank
sta <DRRh
lda #<FlashBank
sta <DRRl
rts
CALL_LUPDATESCREEN:
LUPDATESCREEN
RTS
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -