📄 net.asm
字号:
LPrint ReceiveDataSuc
jmp jmp_LMAIN
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
;\\********* ************\\;
;\\******** 下载数据完毕 ************\\;
;\\********* ************\\;
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
FindSpaceForGame:
clc
lda DataNameL
adc #0a0h
lda DataNameH
adc #0
lsr
lsr
lsr
lsr
inc
tax ;x=FileLen/4096 + 1
sta GameLen_Count4k
lda #88H
sta <DrrL
stz <DrrH
lda #80h
sta <INSH
lda #8H ;0CH
sta <INSL
FindNextPrr:
Clc
lda <INSL
adc #4
sta <INSL
lda <INSL
cmp #10H
bcc ?_Continue
jmp GameFlashIsFull
?_Continue:
ldy #0
lda GameLen_Count4k
cpx #1 ;4k
beq GameIs4k
jmp GameIsNot4K
GameIs4k:
lda (<INS),y
cmp #0ffh
beq ?_1
iny
cpy #4
bcc GameIs4k
jmp FindNextPrr
?_1:
tya
sta <TempY
sta GameSectorNo
jmp GameSpaceFindOK
GameIsNot4K:
cpx #2 ;8k
beq GameIs8K
jmp GameIsNot8K
GameIs8K:
ldy #0
lda (<INS),y ;y=0
iny
and (<INS),y ;y=1
cmp #0ffh
bne ?_1
stz <TempY
stz GameSectorNO
jmp GameSpaceFindOK
?_1:
lda (<INS),y ;y=1
iny
and (<INS),y ;y=2
cmp #0ffh
bne ?_2
lda #1
sta <TempY
sta GameSectorNO
jmp GameSpaceFindOK
?_2:
lda (<INS),y ;y=2
iny
and (<INS),y ;y=3
cmp #0ffh
bne ?_3
lda #2
sta <TempY
sta GameSectorNO
jmp GameSpaceFindOK
?_3:
jmp FindNextPrr
GameIsNot8K:
cpx #3 ;12k
beq GameIs12k
jmp GameIsNot12K
GameIs12k:
ldy #1
lda (<INS),y y=1
iny
and (<INS),y y=2
cmp #0ffh
beq ?_Xy
jmp FindNextPrr
?_Xy:
ldy #0
lda (<INS),y
cmp #0ffh
bne ?_1
stz <TempY
stz GameSectorNO
jmp GameSpaceFindOK
?_1:
ldy #3
lda (<INS),y
cmp #0ffh
bne ?_2
lda #1
sta <TempY
sta GameSectorNO
jmp GameSpaceFindOK
?_2:
jmp FindNextPrr
GameIsNot12K:
cpx #4 ;16k
beq GameIs16K
jmp FindNextPrr
GameIs16K:
ldy #0
lda (<INS),y ;y=0
iny
and (<INS),y ;y=1
iny
and (<INS),y ;y=2
iny
and (<INS),y ;y=3
cmp #0ffh
beq ?_888
jmp FindNextPrr
?_888:
stz <TempY
stz GameSectorNO
jmp GameSpaceFindOK
FlashProBank:
;dw 10fh,10fh,10fh,10fh
dw 10eh,10eh,10eh,10eh
;dw 8fh,8fh,8fh,8fh
;dw 8eh,8eh,8eh,8eh
ProAbsPosInFlash: ;dw 08070h,09000h,0a000h,0b000h
dw 0c071h,0d000h,0e000h,0f000h
;dw 080a0h,09000h,0a000h,0b000h
;dw 0c0a0h,0d000h,0e000h,0f000h
ProLogPosInFlash: dw 4071h,5000h,6000h,7000h
;dw 4070h,5000h,6000h,7000h
;dw 40a0h,5000h,6000h,7000h
;dw 40a0h,5000h,6000h,7000h
GameSpaceFindOK:
clc
lda GameSectorNO
adc <INSL
sec
sbc #0cH
sta GameSectorNO
sta <TempY
rts
SaveDownloadData:
lda #>FlashBank
sta <DrrH
lda #<FlashBank
sta <DrrL
jsr LJSR
dw RemarkBank
dw SearchSpareDir-1
bbr1 <SysF,?2
jmp FlashFullMsg
?2:
jsr LJSR
dw RemarkBank
dw SearchSpareData-1 ;output SectorNo SectorOff
bbr1 <SysF,?1
jmp FlashFullMsg
?1:
jsr LJSR
dw RemarkBank
dw PutFatFlag-1
lda DataNameL
sta <NameBuffL
lda DataNameH
sta <NameBuffH
lda DataClass
sta <FileClase
jsr LJSR
dw RemarkBank
dw SearchSpareDir-1
lda <INDL
sta BINDL
lda <INDH
sta BINDH
jsr LJSR
dw RemarkBank
dw FillDirName-1
jsr LJSR
dw RemarkBank
dw CalStartAddr-1
rts
FlashFullMsg:
GameFlashIsFull:
ldx #FullAck ;Flash is over
jsr LJSR
dw biosbank
dw SendByte-1
jsr LJSR
dw biosbank
dw StopSIO-1
lda #>DS0Bank
sta <DrrH
lda #<DS0Bank
sta <DrrL
LCls
LPrint FlashOver
jmp jmp_LMAIN
;*********************************************
LinkError:
lda DataClass
cmp #1
bne ?_1
lda ReceiveGameRightFlag
cmp #1
bne ?_1
lda #87H
sta <DrrL
stz <DrrH
?_2:
lda <TempY
asl
tay
lda ProAbsPosInFlash,y
sta <INDL
lda ProAbsPosInFlash+1,y ;Program address Hight
sta <INDH
jsr LJSR
dw biosbank
dw SectorErase-1
jsr InitGameData
dec GameLen_Count4k
beq ?_1
inc <TempY
bra ?_2
?_1:
lda SendErr_EraseFlag
cmp #1
bne ?_3
lda #<FlashBank
sta <DrrL
lda #>FlashBank
sta <DrrH
lda BINDL
sta <INDL
lda BINDH
sta <INDH
lda (<IND)
and #11111101B
tax
WriteByte_X
?_3:
LinkError_2:
jsr ljsr
dw biosbank
dw StopSIO-1
LCls
lda #<DS0Bank
sta <DrrL
lda #>DS0Bank
sta <DrrH
LPrint LinkErrorMsg
jmp jmp_LMAIN
ViewLibKeyTbl:
db UpKey
db DownKey
db EscKey
db EnterKey
db DelKey
db NullKey
ViewLibKeyPrc:
dw ViewLibUp-1
dw ViewLibDown-1
dw ViewLibEse-1
dw ViewLibEnter-1
dw ViewLibDelet-1
RunCardFun_ToPC:
RunNoteFun_ToPC:
RunAccountFun_ToPC:
RunAlarmFun_ToPC:
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
bbr1 <NetFlag,RunGameFun ;功能:单条上传OK,并按Enter
rmb1 <NetFlag ;键后更新屏幕
lda #>BCardTLoad_1-1 ;
pha ;
lda #<BCardTLoad_1-1 ;
pha ;
lda #>RemarkBank ;
pha ;
lda #<RemarkBank ;
jmp LongGo ;
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
RunGameFun:
RunLibFun:
ldy #0ffh
RunLibFun_0:
iny
lda ViewLibKeyTbl,y
bpl RunLibFun_1
jmp ErrorKeyDown
RunLibFun_1:
cmp <KeyNo
bne RunLibFun_0
tya
asl
tay
lda ViewLibKeyPrc+1,y
pha
lda ViewLibKeyPrc,y
pha
rts
ErrorKeyDown:
jmp jmp_LMAINU
ViewLibUp:
lda #>ViewNameUp-1
pha
lda #<ViewNameUp-1
pha
lda #>RemarkBank
pha
lda #<RemarkBank
jmp Longgo
ViewLibDown:
lda #>ViewNameDown-1
pha
lda #<ViewNameDown-1
pha
lda #>RemarkBank
pha
lda #<RemarkBank
jmp Longgo
ViewLibEse:
jmp TLoad_0
ToExecuteProg:
jsr LJSR
dw RemarkBank
dw CopyDataToInputBuff-1
ldy #0
CopyProEvent:
lda InputBuff+15,y
sta NData,y
iny
cpy #20 ;19
bne CopyProEvent
lda #90h
sta <Mode
lda #80h
sta <EFlag
jmp jmp_LMAINU
;;;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;;;
;;; 是游戏则去执行游戏
;;; 是资料则去显示资料内容
;;; 其他则上传数据
;;;
;;;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
ViewLibEnter:
lda <FileClase
cmp #1
beq ToExecuteProg ;是游戏则去执行
lda <FileClase
cmp #2 ;资料否
bne ViewNameEnter
jsr LJSR ;显示资料内容
dw RemarkBank
dw ToFindDir-1
jsr LJSR
dw RemarkBank
dw ToFindDataINS-1
lda #LibViewState ;=10置显示资料内容标志
sta <GameState
stz <TextScreenNo
ForKeChenBiao:
stz <TextcountNo
stz <Selectfindflag
lda <INSL
sta <LibTextPL
sta <TextHeadaddrL
lda INSH
sta <LibTextPH
sta <TextHeadaddrH
lda <DrrL
sta <DRRCurrentText
lda <DrrH
sta <DRRCurrentTextH
ViewLibEnter_0:
jsr LJSR
dw LibBank
dw ShowTextt-1
jsr LJSR
dw LibBank
dw SetTextIconP-1
jmp jmp_LMAIN
ViewNameEnter: ;上传数据
smb1 <NetFlag ;置单条上传标志
lda #<Ds0Bank
sta <DrrL
lda #>Ds0Bank
sta <DrrH
LCls
LPrint ConnectPCMsg ;正在寻找通信对象
jsr CALL_LUpdateScreen
jsr LJSR
dw biosbank
dw StartSIO-1
jsr LJSR
dw RemarkBank
dw ToFindDir-1
lda (<INS)
and #00011100B
lsr
lsr
sta Relation
lda <FileClase ;file class
sta DataClass
lda <FileLengthL ;file length
sta DataLenL
lda <FileLengthH
sta DataLenH
ldy #2 ;file name
lda (<INS),y
sta DataNameL
ldy #3
lda (<INS),y
sta DataNameH
lda #6
sta Try
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -