📄 net.asm
字号:
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
DownLoadData:
Lsetscreen_to_ds0 1
LPrint ConnectPCMsg ;正在寻找通信对象
jsr CALL_LUpdateScreen
jsr LJSR
dw biosbank
dw StartSIO-1
stz <DelayTime
rmb4 <DataComeFlag
WaitLinkCommand:
bbs4 <DataComeFlag,JudgeLinkCommand
jsr Delay10Second
bcc WaitLinkCommand
jmp LinkError_2
JudgeLinkCommand:
rmb4 <DataComeFlag
lda <UData
cmp #LinkCommand
beq LinkToPCOk
bra WaitLinkCommand
LinkToPCOk:
lda #6
sta Try
SendAck_WaitHead:
rmb4 <DataComeFlag
ldx #HeadAck_92H ;Ready to receive data
jsr LJSR
dw biosbank
dw SendByte-1
lda #8
sta <DelayTime
ldy #0
WaitReceiveHead:
bbs4 <DataComeFlag,JudgeReceiveHead
jsr Delay10Second
bcc WaitReceiveHead
SendAck_WaitHead_1:
dec Try
bne ?_1
jmp LinkError_2
?_1:
bra SendAck_WaitHead ;ResendAck_WaitHead
JudgeReceiveHead:
rmb4 <DataComeFlag
lda <UData
sta SaveReadyAck,y
iny
cpy #FileHeadLen ;FileHeadLen=9
bcc WaitReceiveHead
clc
ldy #3 ;from 3 to FileHeadLen
?_1:
lda SaveReadyAck,y ;校验 Head 数据
adc CheckSumL
sta CheckSumL
lda CheckSumH
adc #0
sta CheckSumH
iny
cpy #FileHeadLen
bcc ?_1
lda CheckSumL
bne HeadCheckSum_Err ;Head Data Error
lda CheckSumH
beq HeadCheckSum_Right ;Head Data Right
HeadCheckSum_Err:
jmp SendAck_WaitHead_1
HeadCheckSum_Right:
lda #>Ds0Bank
sta <DrrH
lda #<Ds0Bank
sta <DrrL
LCls
LPrint ReceivingMsg ;数据传输中...
jsr CALL_LUpdateScreen
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lda DataClass ;\\\\\\\\\\\\\
cmp #1 ;下载游戏专用
bne ?_1 ;/////////////
jsr FindSpaceForGame ;
clc ;
lda DataLenL ;
adc #4 ;
sta <EndPointL ;
clc ;
lda DataLenH ;
adc #>InputBuff ;
sta <EndPointH ;
bra ?_2 ;
?_1: ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lda DataClass
cmp #11
bne ?_3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\\\\\\\\\\\\
lda #>MenuLibDataBank
sta <DrrH
lda #<MenuLibDataBank
sta <DrrL
lda NetMenuSub1+2
cmp #2
beq ?1
LSetscreen_to_ds0 1
LPrint YYZDExist
jmp jmp_LMAIN
?1:
jsr ShowYYMenuSub
jsr ForYYZDInit
bra ?_4 ;英英词典专用
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;////////////
?_3:
lda DataLenL
sta <EndPointL
clc
lda DataLenH
adc #>InputBuff
sta <EndPointH
lda Relation ;名片关系
sta <RelatItem
?_2:
stz SendErr_EraseFlag
jsr SaveDownloadData ;找空间并填写 FAT 表
lda #1
sta SendErr_EraseFlag
stz ReceiveGameRightFlag
?_4:
Init_PackageDataLen_OK:
lda DataLenH
beq ?_1
lda #0ffH
sta <PackageDataLen
bra ?_3
?_1:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\\\\\\\\\\\\
lda DataClass ;英英词典专用
cmp #11 ;////////////
bne ?_4 ;
lda DataNameH ;
beq ?_4 ;
lda #0ffH ;
sta <PackageDataLen ;
bra ?_3 ;
?_4: ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lda DataLenL
bne ?_2
jmp LinkError_2
?_2:
lda DataLenL
dec
sta <PackageDataLen
?_3:
lda #9
sta Try
WaitReceiveNext256:
lda #9
sta <DelayTime
rmb4 <DataComeFlag
lda #<(ZjwData-5)
sta <INSL
lda #>(ZjwData-5)
sta <INSH
ldx #ReadyAck_A5H
jsr LJSR
dw biosbank
dw SendByte-1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lda DataClass ;\\\\\\\\\\\\\
cmp #1 ;下载游戏专用
bne ?_1 ;/////////////
lda ReceiveGameRightFlag ;
bne ?_1 ;
lda <tempy ;
asl ;
tay ;
ldx ProLogPosInFlash,y ;Program address low
jsr LJSR ;
dw biosbank ;
dw SendByte-1 ;
;
lda <tempy ;
asl ;
tay ;
ldx ProLogPosInFlash+1,y ;Program address hight
jsr LJSR ;
dw biosbank ;
dw SendByte-1 ;
?_1: ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WaitToReceiveData:
bbs4 <DataComeFlag,WaitToReceiveData_0
jsr Delay10Second
bcc WaitToReceiveData
WaitReceiveNext256_1:
dec Try
bne WaitReceiveNext256
jmp LinkError
WaitToReceiveData_0:
rmb4 <DataComeFlag
lda #9
sta <DelayTime
lda <UData
sta (<INS)
lda <INSH
cmp #(>ZjwData)
bne ?_3
lda <INSL
cmp <PackageDataLen
beq JudgeReceiveData
?_3:
inc <INSL
lda <INSL
bne WaitToReceiveData
inc <INSH
bra WaitToReceiveData
JudgeReceiveData:
lda #<ZjwData
sta <INSL
lda #>ZjwData
sta <INSH
lda ZjwData-2
sta CheckSumL
lda ZjwData-1
sta CheckSumH
?_1:
clc
lda (<INS)
adc CheckSumL
sta CheckSumL
lda CheckSumH
adc #0
sta CheckSumH
lda <INSL
cmp <PackageDataLen ;范围 00H-FFH --->> 1-256Byte
beq ?_2
inc <INSL
bra ?_1
?_2:
lda CheckSumL
bne DataCheckSum_Err
lda CheckSumH
beq DataCheckSum_Right
DataCheckSum_Err:
jmp WaitReceiveNext256_1
DataCheckSum_Right:
lda #<ZjwData
sta <INSL
lda #>ZjwData
sta <INSH
SaveDataToFlash:
lda (<INS)
tax
WriteByte_X
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////////////
lda <INSL ;游戏专用_Begin
cmp #14 ;\\\\\\\\\\\\\
bne ?_0 ;
lda DataClass ;
cmp #1 ;
bne ?_0 ;
lda ReceiveGameRightFlag ;
bne ?_0 ;
lda <tempy ;
asl ;
tay ;
ldx FlashProBank,y ;program bank is ok
WriteByte_X
ldx FlashProBank+1,y ;program bank is ok
WriteByte_X
?_0: ;\\\\\\\\\\\\\
WritePrrOK: ;游戏专用_End
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////////////
lda <INSL
cmp <PackageDataLen
beq ?_0
inc <INSL
bra SaveDataToFlash
?_0:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////////////
lda DataClass ;游戏专用_Begin
cmp #1 ;\\\\\\\\\\\\\
bne Is_NotGame ;
lda ReceiveGameRightFlag ;
bne Is_NotGame ;
ldx GameSectorNo ;
WriteByte_X
ldx GameLen_Count4k ;
WriteByte_X
lda DataNameL ;
sta DataLenL ;
lda DataNameH ;
sta DataLenH ;游戏专用
lda TempY ;
asl ;
tay ;
lda ProAbsPosInFlash,y ;
sta <INDL ;
lda TempY ;
asl ;
tay ;
lda ProAbsPosInFlash+1,y ;Program address Hight
sta <INDH ;
lda #87H ;
sta <DrrL ;
stz <DrrH ;
lda #1 ;游戏专用
sta ReceiveGameRightFlag ;
lda DataLenH ;
beq ?_1 ;
lda #0ffH ;
sta <PackageDataLen ;
bra ?_3 ;
?_1:
lda DataLenL ;
bne ?_2 ;
jmp LinkError ;
?_2:
lda DataLenL ;
dec ;
sta <PackageDataLen ;
?_3:
bra Init_PackageDataLen_Again_OK
Is_NotGame: ;游戏专用_End
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\\\\\\\\\\\\
lda DataLenH
beq ?_1
dec DataLenH
lda DataLenH
beq ?_7
lda #0ffH
sta <PackageDataLen
bra ?_8 ;?_1
?_7:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lda DataClass ;英英用
cmp #11 ;
bne ?_9 ;
lda DataNameH ;
beq ?_9 ;
dec DataNameH ;
lda #ffH ;
sta DataLenH ;
sta <PackageDataLen ;
bra ?_8 ;
?_9 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lda DataLenL
beq ?_8 ;?_1
lda DataLenL
dec
sta <PackageDataLen
bra ?_8 ;add
?_1:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lda DataClass ;英英用
cmp #11 ;
bne ?_8 ;
lda DataNameH ;
beq ?_8 ;
dec DataNameH ;
lda #ffH ;
sta DataLenH ;
sta <PackageDataLen ;
?_8 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Init_PackageDataLen_Again_OK:
?_1:
ldx #ReadyAck_96H
jsr ljsr
dw BiosBank
dw SendByte-1
lda #8
sta <DelayTime
?_2:
lda <DataComeFlag
and #00010000b
bne ?_3
jsr Delay10Second
bcc ?_2
?_4:
dec Try
bne ?_1
jmp LinkError
?_3:
rmb4 <DataComeFlag
lda <UData
cmp #DataFirstByt_99H
bne ?_5
lda #11
sta Try
lda #8
sta <DelayTime
stz CheckSumL
stz CheckSumH
lda #<(ZjwData-4)
sta <INSL
lda #>(ZjwData-4)
sta <INSH
jmp WaitToReceiveData
?_5:
lda <UData
cmp #OverFlag
beq ReceiveDataOK
lda <UData
cmp #LinkCommand
bne ?_4
jmp LinkToPCOk
ReceiveDataOK:
lda DataClass
cmp #1
bne ?_1
lda #<FlashBank
sta <DrrL
lda #>FlashBank
sta <DrrH
lda #80h
sta <INSH
lda #0cH
sta <INSL
clc
lda GameSectorNO
adc <INSL
sta <INDL
lda <INSH
sta <INDH
?_2:
ldx #0feh
WriteByte_X
dec GameLen_Count4k
bne ?_2
?_1:
ldx #ReadyAck_96H
jsr ljsr
dw BiosBank
dw SendByte-1
nop
ldx #ReadyAck_96H
jsr ljsr
dw BiosBank
dw SendByte-1
jsr ljsr
dw BiosBank
dw StopSIO-1
lda #>Ds0Bank
sta <DrrH
lda #<Ds0Bank
sta <DrrL
LCls
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -