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

📄 upgrade.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        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              ;
        Lcdata_decide_updatescreen      ;
        
RealRecieveSysGame:
        lda     #6h                     ;初始化系统存放地址
        sta     <INDH                   ;
        lda     #80H
        sta     <INDL                   ;

                                        
        lda     <Sys_FileLengthH        ;计算 256  的个数
        sta     <Sys_Count_2k           ;       
        
        lda     <Sys_Count_2k
        beq     ?_1
        lda     #0ffH
        sta     <PackageDataLen
        bra     ?_3
?_1:
        lda     <Sys_FileLengthL
        bne     ?_2
        jmp     ReceiveGameOK   
?_2:
        lda     <Sys_FileLengthL
        dec
        sta     <PackageDataLen
?_3:

        
        lda     #12                     ;
        sta     <Sys_TryTime            ;

Wait_SysData_0:                         ;       
        stz     <Sys_CheckSumL          ;
        stz     <Sys_CheckSumH          ;

        lda     #<(NetData-5)           ;
        sta     <INSL                   ;
        lda     #>(NetData-5)           ;
        sta     <INSH                   ;

        stz     <Sys_delaycountL        ;Delay 2 second
        stz     <Sys_delaycountM        ;

        ldx     #ReadyAck_A5H           ;
        jsr     SendByte                ;zjw_Power

        stz     <IREQL
        stz     <IENAL

Wait_SysData:                           ;接收 2k SysData
        lda     <DataComeFlag           ;
        and     #00010000b              ;
        bne     Receive_SysData         ;
        jsr     Delay2Second            ;zjw_Power
        bcc     Wait_SysData            ;
Wait_SysData_1:                         ;
        
        dec     <Sys_TryTime            ;
        bne     Wait_SysData_0          ;
        jmp     LinkError               ;

Receive_SysData:                        ;
        rmb4    <DataComeFlag           ;
        stz     <Sys_delaycountL        ;Delay 2 Second
        stz     <Sys_delaycountM        ;
        
        lda     <UData
        sta     (<INS)

        lda     <INSH
        cmp     #(>NetData)
        bne     ?_3
        lda     <INSL
        cmp     <PackageDataLen
        beq     Check_SysData256
?_3:
        inc     <INSL
        lda     <INSL   
        beq     ?_4
        jmp     Wait_SysData
?_4:
        lda     <INSH
        cmp     #(>NetData)
        bne     ?_5
        jmp     Wait_SysData_1
?_5:
        inc     <INSH
        jmp     Wait_SysData

Check_SysData256:                       ;校验 2K SysData 的 Sys_CheckSum        
        lda     #<NetData               ;
        sta     <INSL                   ;
        lda     #>NetData               ;
        sta     <INSH                   ;
        
        lda     NetData-2               ;
        sta     <Sys_CheckSumL          ;
        lda     NetData-1               ;
        sta     <Sys_CheckSumH
?_1:
        clc
        lda     (<INS)
        adc     <Sys_CheckSumL
        sta     <Sys_CheckSumL
        lda     <Sys_CheckSumH
        adc     #0
        sta     <Sys_CheckSumH

        lda     <INSL
        cmp     <PackageDataLen ;范围 00H-FFH  ----->>  1-256Byte
        beq     ?_2

        inc     <INSL

        bra     ?_1
?_2:

        lda     <Sys_CheckSumL          ;
        bne     ?_Err                   ;
        lda     <Sys_CheckSumH          ;
        beq     CheckSum_Right          ;
        
?_Err:                                  ;
        ;jmp    Wait_SysData_1          ;Sys_CheckSum ERROR
        bra     Wait_SysData_1
For_Bra_1to_Wait_SysData:
        bra     Wait_SysData
CheckSum_Right:                         ;
        lda     #<NetData                       ;
        sta     <INSL                   ;
        lda     #>NetData                       ;
        sta     <INSH                   ;

        stz     <Sys_delaycountL        ;Delay 2 second
        stz     <Sys_delaycountM        ;

Save_SysData256:                        ;保存 2K 数据到 Flash

        lda     (<INS)
        sta     (<IND)

        inc     <INDL
        bne     nxinde
        inc     <INDH
        bne     nxinde
        jmp     LinkError
nxinde: 
        lda     <INSL
        cmp     <PackageDataLen
        beq     ?_0
        inc     <INSL
        bra     Save_SysData256
?_0:
;///////////////
        lda     <Sys_Count_2k
        beq     ?_6
        
        dec     <Sys_Count_2k
        lda     <Sys_Count_2k
        beq     ?_7

        lda     #0ffH
        sta     <PackageDataLen
        bra     ?_1
?_7:
        lda     <Sys_FileLengthL
        beq     ?_6
        lda     <Sys_FileLengthL
        dec
        sta     <PackageDataLen
        bra     ?_1

?_6:
        jmp     ReceiveGameOK
?_1:                                    ;
        ldx     #ReadyAck_96H           ;
        jsr     SendByte                ;zjw_Power
?_2:                                    ;
        lda     <DataComeFlag           ;
        and     #00010000b              ;
        bne     ?_3                     ;
        jsr     Delay2Second            ;zjw_Power      
        bcc     ?_2                     ;
?_4:                                    ;
        dec     <Sys_TryTime            ;
        bne     ?_1                     ;
        jmp     LinkError               ;
?_3:                                    ;
        lda     <UData                  ;
        cmp     #DataFirstByt_99H       ;
        bne     ?_4
        lda     #10                     ;
        sta     <Sys_TryTime            ;

        rmb4    <DataComeFlag
        stz     <Sys_CheckSumL          ;
        stz     <Sys_CheckSumH          ;
        lda     #<(NetData-4)           ;
        sta     <INSL                   ;
        lda     #>(NetData-4)           ;
        sta     <INSH                   ;
        stz     <Sys_delaycountL        ;Delay 2 second
        stz     <Sys_delaycountM        ;
        jmp     Wait_SysData            ;Receive Next 2K SysData
        ;bra    For_Bra_1to_Wait_SysData
ReceiveGameOK:
;;      nop
;;      nop
;;      nop
;;
;;      ldx     #ReadyAck_96H           ;
;;      jsr     SendByte                ;
;;      nop
;;      nop
;;      nop
;;
;;      ldx     #ReadyAck_96H           ;
;;      jsr     SendByte                ;                                       ;
;;      nop
;;      nop
;;      nop
;;
;;      ldx     #ReadyAck_96H           ;
;;      jsr     SendByte
        jmp     680H
copy_end_x:

init_bank_address:
        stz     <indl
        stz     <insl
        lda     #80h
        sta     <indl
        sta     <insl
        rts

WriteFlashByte_big:
        lda     #0aah
        sta     08aaah  ;;8000h & 5555h
        lda     #55h
        sta     08555h  ;;8000h & 2aaah
        lda     #0a0h
        sta     08aaah  ;;8000h & 5555h
        txa
        sta     (IND)

?Data_Polling:
        bbr0    <eflag,?3
        rmb0    <eflag
?1:
        bbr0    <eflag,?2
        smb3    <sf1   ;;Flash 出错!!!
        rts
?2:
        cmp     (IND)
        bne     ?1
        bra     ?4
?3:
        cmp     (IND)
        bne     ?Data_Polling

?4:
;;=====================================================
;;       IND += 1.
;;=====================================================
        inc     <INDL
        bne     ?1
        inc     <INDH
        bne     ?1
        lda     #80h
        sta     <INDH
        inc     <DRRl
        bne     ?5
        inc     <drrh
?5:
        sec
        rts

;;破坏:x,y
ChipErase_big:
        lda     #80h
        sta     <DRRl
        stz     <DRRh

        lda     #0aah                   ;;    

⌨️ 快捷键说明

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