mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-02 13:41:30 +00:00
Kernel version 0.9 : MemMgr, added a quicker GetMemYA API Call
This commit is contained in:
parent
fd11558386
commit
ece6e1f056
|
@ -492,6 +492,18 @@ And return, if found, the full path to it.
|
||||||
+ CS :
|
+ CS :
|
||||||
+ A = EC
|
+ A = EC
|
||||||
|
|
||||||
|
# GetMemYA
|
||||||
|
|
||||||
|
## In:
|
||||||
|
+ Y,A = Size Requested
|
||||||
|
|
||||||
|
## Out:
|
||||||
|
+ CC : success
|
||||||
|
+ YA = PTR to Mem (Uninitialised)
|
||||||
|
* X = hMem
|
||||||
|
+ CS :
|
||||||
|
+ A = EC
|
||||||
|
|
||||||
# FreeMemA
|
# FreeMemA
|
||||||
|
|
||||||
## In:
|
## In:
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -98,10 +98,10 @@ CS.INIT >SYSCALL GetArgC
|
||||||
bne .99
|
bne .99
|
||||||
.FIN
|
.FIN
|
||||||
|
|
||||||
jsr CS.INIT.Check.Wildcard
|
* jsr CS.INIT.Check.Wildcard
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
jsr InitSrcDirYA
|
jsr InitSrcDirPatYA
|
||||||
bcc .1 success, scan for any other args
|
bcc .1 success, scan for any other args
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
|
@ -132,18 +132,16 @@ CS.INIT >SYSCALL GetArgC
|
||||||
bcs .99
|
bcs .99
|
||||||
.FIN
|
.FIN
|
||||||
|
|
||||||
.8 >PUSHWI 256
|
.8 >LDYAI 256
|
||||||
>PUSHBI 0
|
>SYSCALL GetMemYA
|
||||||
>SYSCALL GetMem
|
|
||||||
bcs .9
|
bcs .9
|
||||||
txa
|
txa
|
||||||
ldy #hSrcFullPath
|
ldy #hSrcFullPath
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
.DO X.COPY.TO.DEST=1
|
.DO X.COPY.TO.DEST=1
|
||||||
>PUSHWI 256
|
>LDYAI 256
|
||||||
>PUSHBI 0
|
>SYSCALL GetMemYA
|
||||||
>SYSCALL GetMem
|
|
||||||
bcs .9
|
bcs .9
|
||||||
txa
|
txa
|
||||||
ldy #hDstFullPath
|
ldy #hDstFullPath
|
||||||
|
@ -199,14 +197,33 @@ CS.RUN >SYSCALL GetC
|
||||||
.11 ldy #bPause
|
.11 ldy #bPause
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
bpl .1
|
bpl .1
|
||||||
clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 .DO X.COPY.TO.DEST=1
|
.1 .DO X.COPY.TO.DEST=1
|
||||||
ldy #bCopy
|
ldy #bCopy
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
bpl .2
|
bne .2
|
||||||
jmp CS.RUN.Copy
|
|
||||||
|
jsr CS.RUN.Copy
|
||||||
|
|
||||||
|
ldy #bCopy Copy completed ?
|
||||||
|
lda (pData),y
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
ldy #bCopy
|
||||||
|
lda (pData),y
|
||||||
|
beq .2 non copy error
|
||||||
|
|
||||||
|
sec
|
||||||
|
jsr CS.RUN.CheckErr we have an error....
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.DO X.DELETE.SOURCE=1
|
||||||
|
ldy #hToDelete
|
||||||
|
lda #0
|
||||||
|
sta (pData),y Cancel delete if any
|
||||||
|
.FIN
|
||||||
.FIN
|
.FIN
|
||||||
|
|
||||||
.2 .DO X.DELETE.SOURCE=1
|
.2 .DO X.DELETE.SOURCE=1
|
||||||
|
@ -214,20 +231,15 @@ CS.RUN >SYSCALL GetC
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
>SYSCALL GetMemPtrA
|
|
||||||
>SYSCALL RemoveYA
|
|
||||||
php
|
|
||||||
pha
|
|
||||||
ldy #hToDelete
|
|
||||||
lda (pData),y
|
|
||||||
pha
|
pha
|
||||||
lda #0
|
lda #0
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
pla
|
pla
|
||||||
>SYSCALL FreeMemA
|
|
||||||
pla
|
>SYSCALL GetMemPtrA
|
||||||
plp
|
>SYSCALL RemoveYA
|
||||||
jsr CS.RUN.CheckErr
|
|
||||||
|
.20 jsr CS.RUN.CheckErr
|
||||||
bcs .9
|
bcs .9
|
||||||
jmp CS.RUN.NEXT
|
jmp CS.RUN.NEXT
|
||||||
.FIN
|
.FIN
|
||||||
|
@ -291,6 +303,8 @@ CS.RUN.LEAVE jsr LeaveSubDir exit this sub dir....
|
||||||
jsr GetEntry
|
jsr GetEntry
|
||||||
bcs *
|
bcs *
|
||||||
|
|
||||||
|
jsr CS.RUN.BuildFilePath
|
||||||
|
|
||||||
ldy #hSrcFullPath
|
ldy #hSrcFullPath
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
>SYSCALL GetMemPtrA
|
>SYSCALL GetMemPtrA
|
||||||
|
@ -490,11 +504,6 @@ CS.RUN.FILE ldy #bQuiet
|
||||||
|
|
||||||
ldy #hSrcFullPath
|
ldy #hSrcFullPath
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
>SYSCALL GetMemPtrA
|
|
||||||
|
|
||||||
>SYSCALL NewPStrYA
|
|
||||||
bcs .9
|
|
||||||
txa
|
|
||||||
ldy #hToDelete
|
ldy #hToDelete
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
.FIN
|
.FIN
|
||||||
|
@ -560,39 +569,19 @@ CS.RUN.Rename ldy #hDstFullPath
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DO X.COPY.TO.DEST=1
|
.DO X.COPY.TO.DEST=1
|
||||||
CS.RUN.CopyStart
|
CS.RUN.CopyStart
|
||||||
ldy #S.STAT.P.AUXTYPE+1
|
|
||||||
>PUSHB (ZPFileStat),y
|
|
||||||
dey
|
|
||||||
>PUSHB (ZPFileStat),y
|
|
||||||
ldy #S.STAT.P.TYPE
|
|
||||||
>PUSHB (ZPFileStat),y
|
|
||||||
>PUSHBI SYS.FOpen.R
|
|
||||||
|
|
||||||
ldy #hSrcFullPath
|
ldy #hSrcFullPath
|
||||||
lda (pData),y
|
lda #SYS.FOpen.R
|
||||||
>SYSCALL GetMemPtrA
|
|
||||||
|
jsr CS.RUN.Open
|
||||||
>PUSHYA
|
|
||||||
>SYSCALL FOpen
|
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
ldy #hSrcFile
|
ldy #hSrcFile
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
ldy #S.STAT.P.AUXTYPE+1
|
|
||||||
>PUSHB (ZPFileStat),y
|
|
||||||
dey
|
|
||||||
>PUSHB (ZPFileStat),y
|
|
||||||
ldy #S.STAT.P.TYPE
|
|
||||||
>PUSHB (ZPFileStat),y
|
|
||||||
>PUSHBI SYS.FOpen.W+SYS.FOpen.X
|
|
||||||
|
|
||||||
ldy #hDstFullPath
|
ldy #hDstFullPath
|
||||||
lda (pData),y
|
lda #SYS.FOpen.W+SYS.FOpen.X
|
||||||
>SYSCALL GetMemPtrA
|
|
||||||
|
jsr CS.RUN.Open
|
||||||
>PUSHYA
|
|
||||||
>SYSCALL FOpen
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #hDstFile
|
ldy #hDstFile
|
||||||
|
@ -601,6 +590,9 @@ CS.RUN.CopyStart
|
||||||
ldy #bCopy
|
ldy #bCopy
|
||||||
lda #$ff
|
lda #$ff
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
inc
|
||||||
|
ldy #CopyRC Reset RC
|
||||||
|
sta (pData),y
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -609,13 +601,37 @@ CS.RUN.CopyStart
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
>SYSCALL FCloseA
|
>SYSCALL FCloseA
|
||||||
pla
|
pla
|
||||||
|
|
||||||
|
ldy #CopyRC
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CS.RUN.Open phy Save Filename
|
||||||
|
pha Save open mode
|
||||||
|
|
||||||
|
ldy #S.STAT.P.AUXTYPE+1
|
||||||
|
>PUSHB (ZPFileStat),y
|
||||||
|
dey
|
||||||
|
>PUSHB (ZPFileStat),y
|
||||||
|
ldy #S.STAT.P.TYPE
|
||||||
|
>PUSHB (ZPFileStat),y
|
||||||
|
|
||||||
|
pla
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
ply
|
||||||
|
lda (pData),y
|
||||||
|
>SYSCALL GetMemPtrA
|
||||||
|
|
||||||
|
>PUSHYA
|
||||||
|
>SYSCALL FOpen
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CS.RUN.Copy stz .90+1
|
CS.RUN.Copy stz .90+1
|
||||||
>PUSHWI X.COPY.BUF.SIZE
|
>LDYAI X.COPY.BUF.SIZE
|
||||||
>PUSHBI 0
|
>SYSCALL GetMemYA
|
||||||
>SYSCALL GetMem
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
@ -665,45 +681,21 @@ CS.RUN.Copy stz .90+1
|
||||||
CS.RUN.CopyEnd ldy #hSrcFile
|
CS.RUN.CopyEnd ldy #hSrcFile
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
>SYSCALL FCloseA
|
>SYSCALL FCloseA
|
||||||
bcc .1
|
|
||||||
|
ldy #hDstFile
|
||||||
jsr CS.RUN.CheckErr
|
|
||||||
|
|
||||||
.1 ldy #hDstFile
|
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
>SYSCALL FCloseA
|
>SYSCALL FCloseA
|
||||||
bcc .2
|
|
||||||
|
|
||||||
jsr CS.RUN.CheckErr
|
|
||||||
|
|
||||||
.2 ldy #bCopy
|
ldy #bCopy
|
||||||
lda #$0
|
lda #$0
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
ldy #CopyRC
|
rts
|
||||||
lda (pData),y
|
|
||||||
beq .3
|
|
||||||
sec
|
|
||||||
.3 jsr CS.RUN.CheckErr
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jmp CS.RUN.NEXT
|
|
||||||
.9 rts
|
|
||||||
.FIN
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CheckErr bcs .1
|
CS.RUN.CheckErr bcs .1
|
||||||
ldy #Count
|
|
||||||
lda (pData),y
|
|
||||||
inc
|
|
||||||
sta (pData),y
|
|
||||||
bne .10
|
|
||||||
iny
|
|
||||||
lda (pData),y
|
|
||||||
inc
|
|
||||||
sta (pData),y
|
|
||||||
|
|
||||||
.10 ldy #bQuiet
|
ldy #bQuiet
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
bmi .8
|
bmi .8
|
||||||
|
|
||||||
|
@ -785,6 +777,17 @@ CS.RUN.BuildFilePath
|
||||||
.FIN
|
.FIN
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CS.RUN.IncCount ldy #Count
|
||||||
|
lda (pData),y
|
||||||
|
inc
|
||||||
|
sta (pData),y
|
||||||
|
bne .9
|
||||||
|
iny
|
||||||
|
lda (pData),y
|
||||||
|
inc
|
||||||
|
sta (pData),y
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
CS.DOEVENT sec
|
CS.DOEVENT sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -811,12 +814,6 @@ CS.QUIT jsr LeaveSubDir
|
||||||
|
|
||||||
.FIN
|
.FIN
|
||||||
|
|
||||||
ldy #hToDelete
|
|
||||||
jsr CS.QUIT.FREE
|
|
||||||
|
|
||||||
ldy #hFilter
|
|
||||||
jsr CS.QUIT.FREE
|
|
||||||
|
|
||||||
ldy #hSrcFullPath
|
ldy #hSrcFullPath
|
||||||
jsr CS.QUIT.FREE
|
jsr CS.QUIT.FREE
|
||||||
|
|
||||||
|
|
|
@ -76,9 +76,8 @@ InitSrcDirYA ldx #0
|
||||||
ldy #hFilter
|
ldy #hFilter
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
.5 >PUSHWI 256
|
.5 >LDYAI 256
|
||||||
>PUSHBI 0
|
>SYSCALL GetMemYA Get a 256 buffer to store BasePath
|
||||||
>SYSCALL GetMem Get a 256 buffer to store BasePath
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
|
@ -183,9 +182,8 @@ InitDstDirYA >SYSCALL GetFullPathYA
|
||||||
ldy #hDstFileName
|
ldy #hDstFileName
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
.5 >PUSHWI 256
|
.5 >LDYAI 256
|
||||||
>PUSHBI 0
|
>SYSCALL GetMemYA Get a 256 buffer to store DstBasePath
|
||||||
>SYSCALL GetMem Get a 256 buffer to store DstBasePath
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
|
|
|
@ -252,7 +252,7 @@ SYS.GetMem .EQ $90
|
||||||
SYS.FreeMemA .EQ $92
|
SYS.FreeMemA .EQ $92
|
||||||
SYS.GetMemPtrA .EQ $94
|
SYS.GetMemPtrA .EQ $94
|
||||||
SYS.GetMemByIDA .EQ $96
|
SYS.GetMemByIDA .EQ $96
|
||||||
* .EQ $98
|
SYS.GetMemYA .EQ $98
|
||||||
SYS.LoadStkObjYA .EQ $9A
|
SYS.LoadStkObjYA .EQ $9A
|
||||||
SYS.GetStkObjA .EQ $9C
|
SYS.GetStkObjA .EQ $9C
|
||||||
SYS.FreeStkObjA .EQ $9E
|
SYS.FreeStkObjA .EQ $9E
|
||||||
|
|
|
@ -99,7 +99,7 @@ KERNEL.SYSCALL
|
||||||
.DA K.FreeMemA
|
.DA K.FreeMemA
|
||||||
.DA K.GetMemPtrA
|
.DA K.GetMemPtrA
|
||||||
.DA K.GetMemByIDA
|
.DA K.GetMemByIDA
|
||||||
.DA 0
|
.DA K.GetMemYA
|
||||||
.DA K.LoadStkObjYA
|
.DA K.LoadStkObjYA
|
||||||
.DA K.GetStkObjA
|
.DA K.GetStkObjA
|
||||||
.DA K.FreeStkObjA
|
.DA K.FreeStkObjA
|
||||||
|
|
|
@ -37,24 +37,57 @@ MemMgr.ReqFlags .EQ ZPMEMMGR+10 store requested Flags
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetMem >PULLB MemMgr.ReqFlags store requested flags
|
K.GetMem >PULLB MemMgr.ReqFlags store requested flags
|
||||||
and #S.MEM.F.AUX
|
and #S.MEM.F.AUX
|
||||||
beq .11
|
beq .1
|
||||||
|
|
||||||
sta SETREADAUX Aux Mem requested,switch to AUX
|
sta SETREADAUX Aux Mem requested,switch to AUX
|
||||||
sta SETWRITEAUX
|
sta SETWRITEAUX
|
||||||
|
|
||||||
.11 >PULLAX get requested size
|
.1 >PULLAX get requested size
|
||||||
bit #$0F 16 bytes aligned ?
|
bit #$0F 16 bytes aligned ?
|
||||||
beq .10 yes, request it
|
beq .2 yes, request it
|
||||||
|
|
||||||
and #$F0 align on 16 bytes
|
and #$F0 align on 16 bytes
|
||||||
clc
|
clc
|
||||||
adc #$10
|
adc #$10
|
||||||
bcc .10
|
bcc .2
|
||||||
inx
|
inx
|
||||||
|
|
||||||
.10 >STAX MemMgr.ReqSize
|
.2 >STAX MemMgr.ReqSize
|
||||||
|
jsr K.GetMem.I
|
||||||
>LDYAI MemMgr.Table
|
|
||||||
|
bit MemMgr.ReqFlags S.MEM.F.AUX ?
|
||||||
|
bpl .9
|
||||||
|
|
||||||
|
sta CLRREADAUX
|
||||||
|
sta CLRWRITEAUX
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*/--------------------------------------
|
||||||
|
* # GetMemYA
|
||||||
|
* ## In:
|
||||||
|
* Y,A = Size Requested
|
||||||
|
* ## Out:
|
||||||
|
* CC : success
|
||||||
|
* YA = PTR to Mem (Uninitialised)
|
||||||
|
* X = hMem
|
||||||
|
* CS :
|
||||||
|
* A = EC
|
||||||
|
*\--------------------------------------
|
||||||
|
K.GetMemYA stz MemMgr.ReqFlags
|
||||||
|
sta MemMgr.ReqSize+1
|
||||||
|
tya
|
||||||
|
bit #$0F 16 bytes aligned ?
|
||||||
|
beq .1 yes, request it
|
||||||
|
|
||||||
|
and #$F0 align on 16 bytes
|
||||||
|
clc
|
||||||
|
adc #$10
|
||||||
|
bcc .1
|
||||||
|
inc MemMgr.ReqSize+1
|
||||||
|
|
||||||
|
.1 sta MemMgr.ReqSize
|
||||||
|
|
||||||
|
K.GetMem.I >LDYAI MemMgr.Table
|
||||||
>STYA ZPMemMgrSPtr
|
>STYA ZPMemMgrSPtr
|
||||||
|
|
||||||
ldx #0 Current slot=0
|
ldx #0 Current slot=0
|
||||||
|
@ -137,13 +170,7 @@ K.GetMem >PULLB MemMgr.ReqFlags store requested flags
|
||||||
ply Y = LO PTR
|
ply Y = LO PTR
|
||||||
clc X = Current hMem
|
clc X = Current hMem
|
||||||
|
|
||||||
.9 bit MemMgr.ReqFlags
|
.9 rts
|
||||||
bpl .99
|
|
||||||
|
|
||||||
sta CLRREADAUX
|
|
||||||
sta CLRWRITEAUX
|
|
||||||
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* MemMgr.AddSlot
|
* MemMgr.AddSlot
|
||||||
* In:
|
* In:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user