📄 sysgame.asm
字号:
; ***************************************************************************
; * 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 + -