⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deldata.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 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 + -