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

📄 sysgame.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; ***************************************************************************
; *     Project : Electronic Dictionary                                     *
; *        Date : 2003.9                                                    *
; *   File Name : SYSGAME.ASM                                               *
; ***************************************************************************

        pw      128
        case    off
        externs on

        include st2202.def      ;; Include ST2100 I/O define.
        include Data.def
        include DataBank.def
        include KeyDef.def
        include Graph.def
        include Graphics.h
        include bios.h
        include Debug.h
        include SysGame.h

NetData         Equ     300H
DelayTime       equ     CData+1
Sys_PackLen     equ     CData+2
Sys_PackLenL    equ     CData+2
Sys_PackLenH    equ     CData+3
Sys_CheckSumL   equ     CData+4
Sys_CheckSumH   equ     CData+5
Sys_FileClass   equ     CData+6
Sys_FileLengthL equ     CData+7
Sys_FileLengthM equ     CData+8
Sys_FileLengthH equ     CData+9

Sys_Count_2k    equ     CData+21
JudgeSys_CheckSumL      equ     CData+22
JudgeSys_CheckSumH      equ     CData+23
Sys_TryTime             equ     CData+24
Sys_delaycountL equ     CData+25
Sys_delaycountM equ     CData+26
Sys_delaycountH equ     CData+27

DataComeFlag    Equ     CData+29
YYFlag          Equ     Cdata+30

LinkCommand     equ     80h
HeadAck_92H     equ     92h
ReadyAck_A5H    equ     a5h
ReSendAck_A5H   equ     a5h
ReadyAck_96H    equ     96H
DataFirstByt_99H        equ     99H

;//////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\        
;//////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\
;////////                              \\\\\\\\\\\
;//////           系统升级               \\\\\\\\\
;////////                              \\\\\\\\\\\
;//////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\        
;///////////       Begin        \\\\\\\\\\\\\\\\\\

SGWRITEFLASHBYTE:
        MACRO
        LDA     #0AAH
        STA     0D555H  ;;8000h & 5555h
        LDA     #055H
        STA     0AAAAH  ;;8000h & 2aaah
        LDA     #0A0H
        STA     0D555H  ;;8000h & 5555h
        TXA
        STA     (IND)
        
?Data_Polling#
        CMP     (IND)
        BNE     ?Data_Polling#

        INC     <INDL
        BNE     ?1#
        INC     <INDH
        BNE     ?1#
        SMB7    <INDH
        INC     <DRRL
?1#
        ENDM

SystemUpGrade_New:
        bra     _12345
index_string:
        db      '升级错,系统已被破坏,请确定电池电压及线路正常后,同时按住'
        db      '[<--]键和[输入]键,轻击'
        db      '一 下复位按钮,重新升级!',0

_12345:
        rmb5  <IREQL
        smb5  <IENAL

        nop
        nop
        nop

        ldx     #ReadyAck_96H           ;
        jsr     SendByte                ;
        nop
        nop
        nop

        ldx     #ReadyAck_96H           ;
        jsr     SendByte                ;                                       ;
        nop
        nop
        nop

        ldx     #ReadyAck_96H           ;
        jsr     SendByte

        lda     #03             ;;设置波特率
        sta     <BDIV           ;;
        lda     #56             ;;
        sta     <BRS            ;;
        lda     #00000011b      ;;使能波特率发生器及其他
        sta     <BCTR           ;;
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP

        stz     <DelayTime
        rmb4    <DataComeFlag           ;
Wait_LinkCommand:                       ;
        bbs4    <DataComeFlag,Judge_LinkCommand
        jsr     Delay10Second           ;
        bcc     Wait_LinkCommand        ;
        jmp     LinkError               ;

Judge_LinkCommand:                      ;
        rmb4    <DataComeFlag           ;
        lda     <UData                  ;
        cmp     #LinkCommand            ;
        beq     SysLinkToPCOk           ;
        bra     Wait_LinkCommand        ;

SysLinkToPCOk:                          ;
        lda     #12                     ;
        sta     <Sys_TryTime            ;Try 12 times
                                        ;
SendAck_WaitHead:                       ;
        ldx     #HeadAck_92H            ;Ready to receive data
        jsr     SendByte                ;
                                        ;
        lda     #9                      ;
        sta     <DelayTime
        ldy     #0                      ;

Wait_SysHead:                           ;接收Head
        bbs4    <DataComeFlag,Wait_SysHead_1

        jsr     Delay10Second           ;
        bcc     Wait_SysHead            ;

SendAck_WaitHead_1:                     ;因为 Sys_CheckSum is Error
        dec     <Sys_TryTime            ;
        bne     SendAck_WaitHead        ;
        jmp     LinkError               ;

Wait_SysHead_1:                         ;
        rmb4    <DataComeFlag           ;
        lda     <UData                  ;
        sta     Sys_PackLen,y           ;Head长度
        iny                             ;
        cpy     <Sys_PackLen            ;
        bcc     Wait_SysHead            ;

Check_SysHead:                          ;校验 Head Sys_CheckSum
        ldy     #4                      ;
        lda     <Sys_CheckSumL          ;
        sta     JudgeSys_CheckSumL      ;
        lda     <Sys_CheckSumH          ;
        sta     JudgeSys_CheckSumH      ; DataClass +
?_0:                                    ; DataLenL  +
        clc                             ; DataLenM  +
        lda     Sys_PackLen,y           ; DataLenH  +
        adc     JudgeSys_CheckSumL      ; =0
        sta     JudgeSys_CheckSumL      ;
        lda     JudgeSys_CheckSumH      ;
        adc     #0                      ;
        sta     JudgeSys_CheckSumH      ;
        iny                             ;
        cpy     <Sys_PackLen            ;
        bcc     ?_0                     ;

        lda     JudgeSys_CheckSumL      ;
        bne     ?_Err                   ;
        lda     JudgeSys_CheckSumH      ;
        beq     ?_Right                 ;
?_Err:                                  ;
        bra     SendAck_WaitHead_1      ;
        ;jmp    SendAck_WaitHead_1
?_Right:                                ;
        lda     <Sys_FileClass          ;
        cmp     #10                     ;
        beq     Linkreallyok            ;

        jmp     LinkError               ;

Linkreallyok:                           ;
        ;LSetScreen     1               ;
        ;LPrint  SysHintMsg             ;
        ;LUpDateScreen                  ;

        ;jsr    Clr_SysData             ;清系统程序区数据
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
        lda     #80h
        sta     <Drr
        sta     <INDH
        stz     <DrrH
        stz     <INDL
?_1:
        jsr     SectorErase

        clc
        lda     <INDH
        adc     #10H
        sta     <INDH
        bne     ?_1
        lda     #80H
        sta     <INDH

        inc     <Drr
        lda     <Drr
        cmp     #87h
        bne     ?_1
;;;;;;;;;;;;;;;;;
	lda	#87h
        sta     <Drr
        lda	#80H
        sta     <INDH
        stz     <DrrH
        stz     <INDL
        jsr     SectorErase

        lda	#90H
        sta     <INDH
        jsr     SectorErase

        lda	#0A0H
        sta     <INDH
        jsr     SectorErase

        lda	#0B0H
        sta     <INDH
        jsr     SectorErase

;;;;;;;;;;;;;;;;;;;;;        
;	LDA	#$AA;
;	STA	$983
;	STZ	<DRRH
;	LDA	#$86
;	STA	<DRRL
;	LDA	$8000
;	STA	$983+20

        
;;==============================================
        jsr     clear_flash_buffer
        stz     <indl

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -