A2osX/SYS/KERNEL.S.SHARED.txt
2019-12-02 08:09:58 +01:00

246 lines
4.9 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
AUTO 3,1
*--------------------------------------
SHARED.GetKeyCharY
sta CLRREADAUX
lda (ZPSListDataPtr),y
sta SETREADAUX
beq SHARED.IsDigit.9
SHARED.IsIDValid
cmp #'.'
beq SHARED.IsDigit.8
cmp #'_'
beq SHARED.IsDigit.8
SHARED.IsDigitOrL
cmp #'z'+1
bcs SHARED.IsDigit.RTS
cmp #'a'
bcs SHARED.IsDigit.8
SHARED.IsDigitOrUC
cmp #'Z'+1
bcs SHARED.IsDigit.RTS
cmp #'A'
bcs SHARED.IsDigit.8
jmp ZP.IsDigit
SHARED.IsDigit.9
sec
rts
SHARED.IsDigit.8
clc
SHARED.IsDigit.RTS
rts
*--------------------------------------
SHARED.IsHexDigit
jsr ZP.IsDigit
bcc .8
cmp #'A'
bcc SHARED.IsDigit.9
cmp #'F'+1
bcc .1
cmp #'a'
bcc SHARED.IsDigit.9
cmp #'f'+1
bcs SHARED.IsDigit.RTS
eor #$20
.1
* clc
sbc #'A'-11 cc so A->10 (11-CC)
clc
.8 and #$0F
rts
*--------------------------------------
SHARED.SetKeyCharY
sta CLRWRITEAUX
sta (ZPSListDataPtr),y
sta SETWRITEAUX
rts
*--------------------------------------
SHARED.GetDataByte
sta CLRREADAUX
lda (ZPSListDataPtr)
sta SETREADAUX
bra SHARED.SetDataByte.1
*--------------------------------------
SHARED.SetDataByte
sta CLRWRITEAUX
sta (ZPSListDataPtr)
sta SETWRITEAUX
SHARED.SetDataByte.1
inc ZPSListDataPtr
bne .8
inc ZPSListDataPtr+1
.8 rts
*--------------------------------------
SHARED.TXTPTR.GetY
sta CLRREADAUX
lda (TXTPTR),y
sta SETREADAUX
rts
*--------------------------------------
SHARED.TXTPTR.GetNext
sta CLRREADAUX
lda (TXTPTR)
sta SETREADAUX
beq .9
inc TXTPTR
bne .9
inc TXTPTR+1
.9 rts
*--------------------------------------
SHARED.SPtr1PPtr2
>STYA ZPPtr1
>PULLW ZPPtr2
rts
*--------------------------------------
SHARED.SPtr2PPtr1
>STYA ZPPtr2
>PULLW ZPPtr1
rts
*--------------------------------------
SHARED.GetCharPtr1
lda (ZPPtr1)
bne SHARED.NextCharPtr1
rts
SHARED.PutCharPtr1
sta (ZPPtr1)
SHARED.NextCharPtr1
inc ZPPtr1
bne .8
inc ZPPtr1+1 never Z
.8 rts
*--------------------------------------
SHARED.AddYp1ToPtr1
sec
.HS 90 BCC
SHARED.AddYToPtr1
clc
tya
adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
.8 rts
*--------------------------------------
SHARED.AddYp1ToPtr2
sec
.HS 90 BCC
SHARED.AddYToPtr2
clc
tya
adc ZPPtr2
sta ZPPtr2
bcc .8
clc keep CC as some JMP exit here
inc ZPPtr2+1
.8 rts
*--------------------------------------
SHARED.GetCharPtr2
lda (ZPPtr2)
bne SHARED.NextCharPtr2
rts
SHARED.PutCharPtr2
sta (ZPPtr2)
SHARED.NextCharPtr2
inc ZPPtr2
bne .8
inc ZPPtr2+1
.8 rts
*--------------------------------------
SHARED.PullYA sta CLRREADAUX
>PULLYA
sta SETREADAUX
SHARED.PullYA.RTS
rts
*--------------------------------------
SHARED.Stat jsr PFT.CheckPathYA
bcs SHARED.PullYA.RTS
SHARED.Stat.I jsr SHARED.ClrStat
>MLICALL MLIGETFILEINFO
bcs SHARED.PullYA.RTS
lda K.MLI.PARAMS+S.FI.A
jsr SHARED.Stat.Access2Mode
ldx #SHARED.Stat.DST-SHARED.Stat.SRC
.3 ldy SHARED.Stat.SRC-1,x
lda K.MLI.PARAMS,y
ldy SHARED.Stat.DST-1,x
sta K.S.STAT,y
dex
bne .3
* >PUSHWI K.S.STAT+S.STAT.CTIME
* >LDYAI K.MLI.PARAMS+S.FI.CDATE
* >SYSCALL2 PTime2Time BANK2
* >PUSHWI K.S.STAT+S.STAT.MTIME
* >LDYAI K.MLI.PARAMS+S.FI.MDATE
* >SYSCALL2 PTime2Time BANK2
clc
rts
*--------------------------------------
SHARED.DirEnt2Stat
clc
rts
*--------------------------------------
SHARED.ClrStat ldx #S.STAT-1
.1 stz K.S.STAT,x
dex
bpl .1
rts
*--------------------------------------
SHARED.Stat.Access2Mode
and #S.FI.A.FULL
cmp #S.FI.A.FULL
beq .7
tay
ldx #S.STAT.MODE.RO+S.STAT.MODE.RG+S.STAT.MODE.RU+S.STAT.MODE.XO+S.STAT.MODE.XG+S.STAT.MODE.XU
bit #S.FI.A.W
beq .1
txa
ora #S.STAT.MODE.WO
tax
tya
.1 asl D in C
bpl .2 RN in N
txa
ora #S.STAT.MODE.WG
tax
.2 txa
bcc .8
ora #S.STAT.MODE.WU
.HS 2C BIT ABS
.7 lda #S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU rwxrwxrwx
.8 sta K.S.STAT+S.STAT.MODE
lda /S.STAT.MODE.RU ??????R??
ora K.S.STAT+S.STAT.MODE+1 preserve DIR
sta K.S.STAT+S.STAT.MODE+1
rts
*--------------------------------------
SHARED.Stat.SRC .DA #S.FI.T
.DA #S.FI.AUXTYPE,#S.FI.AUXTYPE+1
.DA #S.FI.UBLKS,#S.FI.UBLKS+1
SHARED.Stat.DST .DA #S.STAT.P.TYPE
.DA #S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1
.DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.SHARED
LOAD USR/SRC/SYS/KERNEL.S
ASM