📄 tool.asm
字号:
sta <INSH
stz <INSL
DTDF_17:
lda (<INS)
tax
WriteByte_X
inc <INSL
bne DTDF_07
inc <INSH
DTDF_07:
lda <INSH
cmp #0c0h
bcc DTDF_17
;-----Write FlashBuff to Flash Finish-----
;-----------------------------------------
DTDF_27:
jsr LJSR
dw RemarkBank
dw EraseFlashBuffor-1
DTDF_7:
inc <TempII
lda <TempII
cmp #12 ;6
bcs DTDF_8
ldy <TempII
lda StartINSH,y
sta <INSH
stz <INSL
jsr LJSR
dw RemarkBank
dw Read1kDataToRam-1
lda #>FData
sta <INSH
stz <INSL
jmp DTDF_3
DTDF_8:
rts
;;********************************************************
;StartINSH: db 80h,88h,90h,98h,a0h,a8h
;FlashBufADD: db b0h,b8h,b0h,b8h,b0h,b8h
StartINSH: db 80h,84h,88h,8ch,90h,94h,98h,9ch,a0h,a4h,a8h,ach
FlashBufADD: db b0h,b4h,b8h,bch,b0h,b4h,b8h,bch,b0h,b4h,b8h,bch
;;********************************************************
ImportantJob:
stz <DRRH ;切记切记:当DRRH有可能不为零时。要改动整个文件DRR
smb2 <SysF ;空间整理不能睡觉
ImportantJob0:
jsr ToFindDelFile
bcc JobEnd
jsr SearchMinOffset
jsr RefreshTheRightSector
jsr DoTheDeletedFile
;lda #<-Minu3
;sta PowerT
;lda #>-Minu3 ;空间整理不能睡觉
;sta PowerT+1
bra ImportantJob0
JobEnd:
rmb2 <SysF
rts
;;********************************************************
;;
;;Input: y = SectorNo
;;[s]-------------------------------------[s]
;; 清除4K文件
;;Input:Y(已删除文件的当前扇区号)
;;Output:
;;[s]-------------------------------------[s]
EraseThisSec:
lda <DRR
pha
tya
;;lda <FileSec ;;
lsr ;;
lsr ;;
lsr ;;
clc ;;
adc #FlashBank ;;
sta <DRR ;;<DRR=SectorNo/8 + FlashBank
tya ;;lda <FileSec ;;
and #00000111b ;;a=a%8
asl
asl
asl
asl
ora #80h
sta <INDH
;; lda #10h
stz <INDL
jsr LJSR
dw biosbank
dw SectorErase-1
pla
sta <DRR
rts
;;********************************************************
;;SaveKeChB:
;; LCls
;; LPrint SaveHintMsg
;; LUpDateScreen
;; jsr LJSR
;; dw RemarkBank
;; dw EraseFlashBuffor-1
;; lda #FlashBank
;; sta <DRR
;; lda #0b0h
;; sta <INDH
;; stz <INDL
;; lda #0c0h
;; sta <INSH
;; stz <INSL
;;SaveStudyData:
;; lda (<INS)
;; tax
;; jsr LJSR
;; dw biosbank
;; dw WriteFlashByte-1
;; jsr INCINSX
;; lda <INSH
;; cmp #0c8h
;; bcc SaveStudyData
;; stz <TempCount
;; lda #>FData
;; sta <INSH
;; lda #<FData
;; sta <INSL
;;CopyFDataToInputBuff1:
;; ldy #0
;;CopyFDataToInputBuff0:
;; lda (<INS)
;; tax
;; jsr LJSR
;; dw biosbank
;; dw WriteFlashByte-1
;; jsr INCINS
;; iny
;; cpy #8
;; bcc CopyFDataToInputBuff0
;; inc <TempCount
;; lda <TempCount
;; cmp #56
;; bcc CopyFDataToInputBuff1
;; lda <INDL
;; sta <INSL
;; lda <INDH
;; clc
;; adc #10h
;; sta <INSH
;;SaveOtherRecords:
;; lda (<INS)
;; tax
;; jsr LJSR
;; dw biosbank
;; dw WriteFlashByte-1
;; jsr INCINSX
;; lda <INSH
;; cmp #0d0h
;; bcc SaveOtherRecords
;; lda #0c0h
;; sta <INDH
;; lda #10h
;; sta <INDL
;; jsr LJSR
;; dw biosbank
;; dw SectorErase-1
;; lda #0b0h
;; sta <INSH
;; stz <INSL
;; stz <INDL
;;CopyC0Data:
;; lda (<INS)
;; tax
;; jsr LJSR
;; dw biosbank
;; dw WriteFlashByte-1
;; jsr INCINSX
;;
;; lda <INSH
;; cmp #0c0h
;; bcc CopyC0Data
;; rts
INCINSX:
inc <INSL
bne INCINSX0
inc <INSH
INCINSX0:
rts
INCINDX:
inc <INDL
bne INCINDX0
inc <INDH
INCINDX0:
rts
DetermineINDPos3:
tax
lda #<FData
sta <INSL
lda #>FData
sta <INSH
DetermineINDPos0:
lda (<INS)
jsr INCINSX
cmp #0dh
bne DetermineINDPos0
dex
bpl DetermineINDPos0
rts
;;***********************************************************
FillFData_200:
ldy #0
ldx #0
lda #<FData+200h ;因为100H已经装不下(名片长度已增长)
sta <INDL
lda #>FData+200h
sta <INDH
rmb0 <TempCount
stz <TempCount1
FillFData_100_0:
lda InputBuff,y
beq FillFData_100_4
cmp #0dh
beq FillFData_100_4
rmb0 <TempCount
bra FillFData_100_5
FillFData_100_4:
smb0 <TempCount
FillFData_100_5:
phy
ldy <TempCount1
FillFData_100_3:
lda CardName,y
cmp #0
beq FillFData_100_2
cmp #0dh
beq FillFData_100_2
bbs0 <TempCount,notfilltofdata_100
sta (<IND)
jsr INCINDX
notfilltofdata_100:
inc <TempCount1
iny
bra FillFData_100_3
FillFData_100_2:
inc <TempCount1
ply
bbs0 <TempCount,FillFData_100_1
FillFData_100_6:
lda InputBuff,y
sta (<IND)
bne ?1
lda #0dh
sta (<IND)
?1:
jsr INCINDX
;; cmp #0
;; beq FillFData_100_1
cmp #0dh
beq FillFData_100_1
iny
bra FillFData_100_6
FillFData_100_1:
inx
iny
cpx #EditItemNum+1 ;;10
bcc FillFData_100_0
;; jsr INCINDX
lda #0
sta (<ind)
rts
;;***********************************************************
FillFillInputBuff: ;;only for Card.asm
lda #>DS0Bank
sta <DRRH
lda #<DS0Bank
sta <DRRL
jsr FillFData_200
lda #<FData
sta <INDL
lda #>FData
sta <INDH
lda #<InputBuff
sta <INSL
lda #>InputBuff
sta <INSH
lda #<CardName
sta <TempCount
lda #>CardName
sta <TempCount1
ldx #0
FillFillInputBuff3X:
FillFillInputBuff3:
lda (<TempCount)
beq FillFillInputBuff31
cmp #0dh
beq FillFillInputBuff31
sta (<IND)
jsr INCINDX
inc <TempCount
bne FillFillInputBuff3
inc <TempCount1
bra FillFillInputBuff3
FillFillInputBuff31:
inc <TempCount
bne FillFillInputBuff32
inc <TempCount1
FillFillInputBuff32:
FillFillInputBuff4:
lda (<INS)
sta (<IND)
jsr INCINSX
jsr INCINDX
cmp #0
beq change_od_0
cmp #0dh
bne FillFillInputBuff4
change_od_0:
inx
cpx #EditItemNum+1 ;;10
bcc FillFillInputBuff3X
; ldy <INDL
; sty <EndPointL
;FillFillInputBuff5:
; lda FData,y
; sta InputBuff,y
; dey
; cpy #0ffh
; bne FillFillInputBuff5
lda #<FData
sta <InsL
lda #>FData
sta <InsH
lda #<InputBuff
sta <INdL
lda #>InputBuff
sta <INdH
?Loop: lda (<InsL)
sta (<IndL)
beq ?End
jsr INCINSX
jsr INCINDX
bra ?Loop
?End:
rts
;;***********************************************************
;;***********************************************************
;;[s]-----------------------------[s]
;; 名片存储前处理Inputbuff(去掉头)
;;[s]-----------------------------[s]
DealInputBuffToSave:
lda #<InputBuff
sta <INSL
lda #>InputBuff
sta <INSH
ldy #6
ldx #0
DealInputBuffToSave0:
lda (<INS),y
sta (<INS)
jsr INCINSX
cmp #0dh
beq change_0d
cmp #0
bne DealInputBuffToSave0
change_0d:
inx
cpx #EditItemNum+1 ;;13+1 ;;10
bcs EndDealInputBuffToSave
tya
clc
adc #6
tay
cpx #E_MailItem ;;7 ;;6 e-mail
bne DealInputBuffToSave0
clc
adc #2
tay
bra DealInputBuffToSave0
EndDealInputBuffToSave:
lda <EndPointL
sec
sbc #TotalHeadLen ;;86 ;;62
sta <EndPointL
lda <EndPointH
sbc #0
sta <EndPointH
rts
;;[s]-----------------------------------[s]
;; 把FLASH里的密码读进RAM的FDATA里
;;DataSecretCode EQU FDATA ;;B00H
;;GameSecretCode EQU FDATA ;;B00H+8
;;[s]-----------------------------------[s]
ReadSecretCodeToBuff:
lda <DRRl ;;zl.Data ROM bank pointer Register
pha
lda <DRRh ;;zl.Data ROM bank pointer Register.define in the st2202.def
pha
lda <insh ;;zl.Index Source define in data.def
pha
lda <insl ;;
pha
phy ;;
;; lda #>flashbank
;; sta <drrh
stz <drrh ;;zl.set drrh zero
lda #<flashbank ;;zl. define in data.def
sta <drrl
lda #>secret_area_addr;;zl.store secret_area_addr in the ins(Index Source)
sta <INSH
lda #<secret_area_addr
sta <INSL
ldy #16-1
?1:
lda (<INS),y ;;
sta DataSecretCode,y
dey
bpl ?1
ply
pla
sta <insl
pla
sta <insh
pla
sta <DRRh
pla
sta <drrl
smb4 <ScanFState
lda DataSecretCode
cmp #0ffh
bne ?2
lda DataSecretCode+8
cmp #0ffh
bne ?2
rmb4 <ScanFState
?2:
rts
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -