mirror of
https://github.com/A2osX/A2osX.git
synced 2024-07-06 12:29:02 +00:00
Kernel 0.93+
This commit is contained in:
parent
a4c15ff86a
commit
6f4c01182e
Binary file not shown.
@ -255,7 +255,7 @@ MSG3 .AZ "High Memory: $%H\r\n"
|
||||
MSG4 .AZ "Free ULimit: $%H\r\n"
|
||||
MSG5 .AZ "Low Memory: $%H\r\n"
|
||||
MSG.FREE .AZ "\r\nFree Memory: %D Bytes.\r\n"
|
||||
MSG.FLAGS .AS "UZNAfcds"
|
||||
MSG.FLAGS .AS "UZXAfcds"
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
|
102
BIN/SH.S.CMD.txt
102
BIN/SH.S.CMD.txt
@ -98,9 +98,8 @@ CMD.CD.YA >SYSCALL realpath
|
||||
txa
|
||||
jmp CMD.SetCWDA we have '/'
|
||||
|
||||
.12 >PUSHEA.G StatBuf
|
||||
>LDYA ZPPtr1
|
||||
>SYSCALL STAT
|
||||
.12 >LDYA ZPPtr1
|
||||
jsr IO.StatYA
|
||||
bcs .19
|
||||
|
||||
.10 >LDA.G StatBuf+S.STAT.P.TYPE
|
||||
@ -241,18 +240,23 @@ CMD.SET.1
|
||||
bne .99
|
||||
jsr CORE.ArgV.Next
|
||||
beq CMD.SET.UNSET
|
||||
|
||||
cmp #'`'
|
||||
beq CMD.SET.EXEC
|
||||
jsr EXP.GET
|
||||
bcs .9
|
||||
>PUSHYA
|
||||
>LDYA ZPVarNamePtr
|
||||
>SYSCALL SetEnv
|
||||
bcc CMD.SET.YA
|
||||
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
.99 jmp CMD.E.CSYN
|
||||
|
||||
CMD.SET.YA >PUSHYA
|
||||
>LDYA ZPVarNamePtr
|
||||
>SYSCALL SetEnv
|
||||
rts
|
||||
|
||||
CMD.SET.UNSET >LDYA ZPVarNamePtr
|
||||
>SYSCALL UnsetEnv
|
||||
rts
|
||||
@ -262,6 +266,7 @@ CMD.SET.GET >LDYA ZPVarNamePtr
|
||||
bcc .1
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 >PUSHYA push value
|
||||
>LDYA ZPVarNamePtr
|
||||
>PUSHYA push name
|
||||
@ -409,7 +414,7 @@ CMD.READ lda (ZPArgVBufPtr)
|
||||
CMD.READ.VAR jsr CL.Reset
|
||||
|
||||
.1 >SYSCALL GetChar
|
||||
bcs CMD.READ.VAR.9
|
||||
bcs CMD.SLEEP.RTS
|
||||
|
||||
jsr CL.CHARIN
|
||||
|
||||
@ -417,18 +422,12 @@ CMD.READ.VAR jsr CL.Reset
|
||||
bpl .1
|
||||
|
||||
lda (ZPCLBuf)
|
||||
bne CMD.READ.VAR.SET
|
||||
|
||||
CMD.READ.VAR.UNSET
|
||||
>LDYA ZPVarNamePtr
|
||||
>SYSCALL UnSetEnv
|
||||
rts
|
||||
CMD.READ.VAR.SET
|
||||
>PUSHW ZPCLBuf
|
||||
>LDYA ZPVarNamePtr
|
||||
>SYSCALL SetEnv
|
||||
|
||||
CMD.READ.VAR.9 rts
|
||||
bne .2
|
||||
|
||||
jmp CMD.SET.UNSET
|
||||
|
||||
.2 >LDYA ZPCLBuf
|
||||
jmp CMD.SET.YA
|
||||
*--------------------------------------
|
||||
CMD.SLEEP lda (ZPArgVBufPtr)
|
||||
beq CMD.REN.CSYN
|
||||
@ -439,7 +438,7 @@ CMD.SLEEP lda (ZPArgVBufPtr)
|
||||
|
||||
>PULLL.G Sleep
|
||||
clc
|
||||
rts
|
||||
CMD.SLEEP.RTS rts
|
||||
*--------------------------------------
|
||||
CMD.PAUSE lda #$FF
|
||||
>STA.G bPause
|
||||
@ -461,10 +460,11 @@ CMD.PWD ldy #S.PS.hCWD
|
||||
*--------------------------------------
|
||||
CMD.RD lda (ZPArgVBufPtr)
|
||||
beq CMD.REN.CSYN
|
||||
>PUSHEA.G StatBuf
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL STAT
|
||||
jsr IO.StatYA
|
||||
bcs .99
|
||||
|
||||
>LDA.G StatBuf+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR
|
||||
bne CMD.REN.CSYN
|
||||
@ -716,6 +716,7 @@ CMD.EXIT.POP and #$3F
|
||||
|
||||
cmp #C.SWITCH SWITCH : hValue
|
||||
beq .2
|
||||
|
||||
ldx #1
|
||||
cmp #C.CASE CASE : C.CASE + hValue
|
||||
beq .1
|
||||
@ -799,13 +800,15 @@ CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
rts keep existing context
|
||||
.10 jsr CORE.StkPull remove previous C.CASE
|
||||
bra CMD.CASE
|
||||
|
||||
.1 jsr EXP.GET
|
||||
bcs .9
|
||||
|
||||
>PUSHYA
|
||||
lda (pDATA)
|
||||
lda (pData)
|
||||
tay
|
||||
dey get hVALUE
|
||||
lda (pDATA),y
|
||||
lda (pData),y
|
||||
>SYSCALL GetMemPtr
|
||||
>SYSCALL strcmp
|
||||
ror CS if !=
|
||||
@ -823,10 +826,13 @@ CMD.DEFAULT jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
bcs CMD.E.CSYN
|
||||
|
||||
and #$3F
|
||||
|
||||
cmp #C.SWITCH
|
||||
beq .1
|
||||
|
||||
cmp #C.CASE
|
||||
bne CMD.E.CSYN
|
||||
|
||||
jsr CORE.StkPull remove C.CASE
|
||||
|
||||
.1 jsr CORE.StkGet
|
||||
@ -838,10 +844,13 @@ CMD.END jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
bcs CMD.E.CSYN
|
||||
|
||||
and #$3F
|
||||
|
||||
cmp #C.SWITCH
|
||||
beq .3
|
||||
|
||||
cmp #C.CASE
|
||||
beq .2
|
||||
|
||||
cmp #C.DEFAULT
|
||||
bne CMD.E.CSYN
|
||||
.2 jsr CORE.StkPull remove C.CASE or C.DEFAULT
|
||||
@ -970,9 +979,11 @@ CMD.NEXT jsr CORE.StkGet Y = StkPtr
|
||||
*--------------------------------------
|
||||
CMD.NEXT.LIST lda (pData),y Y = StkPtr
|
||||
bpl .1
|
||||
|
||||
jsr CMD.NEXT.LIST.TOKEN
|
||||
bcs .9
|
||||
bpl .1
|
||||
|
||||
lda (pData)
|
||||
sec
|
||||
sbc #6
|
||||
@ -985,11 +996,13 @@ CMD.NEXT.LIST lda (pData),y Y = StkPtr
|
||||
sta ZPInputBufPtr+1
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 lda (pData)
|
||||
tay
|
||||
sec
|
||||
sbc #8
|
||||
sta (pData)
|
||||
|
||||
dey
|
||||
dey
|
||||
lda (pData),y hVARNAME
|
||||
@ -1036,12 +1049,15 @@ CMD.NEXT.LIST.TOKEN
|
||||
sta (ZPCLBuf),y
|
||||
iny
|
||||
bra .1
|
||||
|
||||
.3 lda #0
|
||||
sta (ZPCLBuf),y
|
||||
|
||||
tya
|
||||
beq .8
|
||||
jsr CMD.READ.VAR.SET
|
||||
|
||||
>LDYA ZPCLBuf
|
||||
jsr CMD.SET.YA
|
||||
bcs .9
|
||||
|
||||
lda (pData)
|
||||
@ -1053,14 +1069,12 @@ CMD.NEXT.LIST.TOKEN
|
||||
dey
|
||||
lda ZPPtr1+1
|
||||
sta (pData),y
|
||||
|
||||
lda #$80
|
||||
clc
|
||||
rts
|
||||
.8 jsr CMD.READ.VAR.UNSET
|
||||
bcs .9
|
||||
lda #0
|
||||
* clc
|
||||
.9 rts
|
||||
|
||||
.8 jmp CMD.NEXT.END
|
||||
*--------------------------------------
|
||||
* stack-4 CmdPtr
|
||||
* stack-3 hFILE/hPIPE
|
||||
@ -1087,11 +1101,13 @@ CMD.NEXT.FILEEXEC
|
||||
sta ZPInputBufPtr+1
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 lda (pData)
|
||||
tay
|
||||
sec
|
||||
sbc #6
|
||||
sta (pData)
|
||||
|
||||
dey
|
||||
dey
|
||||
lda (pData),y hVARNAME
|
||||
@ -1120,17 +1136,20 @@ CMD.NEXT.LINE lda (pData)
|
||||
dey
|
||||
lda (pData),y hFILE/hPIPE
|
||||
>SYSCALL fgets
|
||||
bcs .8
|
||||
jsr CMD.READ.VAR.SET
|
||||
bcs .9
|
||||
bcs CMD.NEXT.END
|
||||
|
||||
>LDYA ZPCLBuf
|
||||
jsr CMD.SET.YA
|
||||
bcs CMD.NEXT.LINE.RTS
|
||||
|
||||
lda #$80
|
||||
* clc
|
||||
rts
|
||||
.8 jsr CMD.READ.VAR.UNSET
|
||||
|
||||
CMD.NEXT.END jsr CMD.SET.UNSET
|
||||
bcs .9
|
||||
lda #0
|
||||
* clc
|
||||
clc keep this CLC for CMD.NEXT.LIST.TOKEN
|
||||
.9
|
||||
CMD.NEXT.LINE.RTS
|
||||
rts
|
||||
@ -1165,15 +1184,12 @@ CMD.LOOP jsr CORE.StkPull
|
||||
bne .9
|
||||
txa
|
||||
bmi .8
|
||||
lda (pData)
|
||||
dec
|
||||
dec Discard loop Ptr
|
||||
sta (pData)
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
ldx #2 Discard loop Ptr
|
||||
jmp CMD.EXIT.POPX
|
||||
|
||||
.8 jmp CORE.StkPullInputBufPtr
|
||||
|
||||
.9 lda #E.NOWHILE
|
||||
sec
|
||||
rts
|
||||
|
@ -627,12 +627,14 @@ CORE.StkPush.1 lda (pData) StackPtr
|
||||
inc
|
||||
cmp #CORE.STACK.MAX
|
||||
bcs .9
|
||||
|
||||
sta (pData) StackPtr
|
||||
tay
|
||||
pla
|
||||
sta (pData),y
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 pla
|
||||
lda #E.STKOVERFLOW
|
||||
* sec
|
||||
|
@ -7,9 +7,11 @@ EXP.GET jsr CORE.ArgV.Next
|
||||
>LDYA ZPArgVBufPrev no op, return text value
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 >LDYA ZPArgVBufPrev
|
||||
>SYSCALL AToL To Int32 on stack
|
||||
bcs .9
|
||||
|
||||
.2 >LDYA L.EXP.OP.MATH + - .... ?
|
||||
jsr CORE.LookupArgVBuf
|
||||
bcs .94
|
||||
@ -31,10 +33,12 @@ EXP.GET jsr CORE.ArgV.Next
|
||||
bcs .9
|
||||
>LEA.G M32.BUF
|
||||
rts
|
||||
|
||||
.94 >POP 4
|
||||
.9 lda #E.ESYN
|
||||
sec
|
||||
rts
|
||||
|
||||
EXP.FPU.EXEC ldy CORE.Operator
|
||||
ldx EXP.OP.MATH.FPU,y
|
||||
|
||||
@ -155,9 +159,8 @@ EXP.OP.UNARY.F jsr EXP.OP.UNARY.STAT
|
||||
bra EXP.OP.UNARY.DEF.8
|
||||
|
||||
EXP.OP.UNARY.STAT
|
||||
>PUSHEA.G StatBuf
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL STAT
|
||||
jsr IO.StatYA
|
||||
php
|
||||
|
||||
jsr CORE.ArgV.Next
|
||||
@ -196,18 +199,23 @@ EXP.TEST.BINARY lda CORE.Operator
|
||||
>STYA ZPPtr1
|
||||
jsr CORE.ArgV.Next
|
||||
beq EXP.TEST.BINARY.ESYN
|
||||
|
||||
>PUSHW ZPPtr1
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL strcmp
|
||||
bcs .1 CS if !=
|
||||
|
||||
lda #%010 010 str1 = str2
|
||||
bra EXP.TEST.BINARY.END
|
||||
|
||||
.1 asl CS if <
|
||||
bcs .2
|
||||
|
||||
lda #%100 010 str1 < str2
|
||||
bra EXP.TEST.BINARY.END
|
||||
bra EXP.TEST.BINARY.END
|
||||
|
||||
.2 lda #%001 010 str1 > str2
|
||||
bra EXP.TEST.BINARY.END
|
||||
bra EXP.TEST.BINARY.END
|
||||
|
||||
EXP.TEST.BINARY.ESYN4
|
||||
>POP 4
|
||||
|
@ -147,6 +147,14 @@ IO.FOpenYAX pha
|
||||
>SYSCALL fopen
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.StatYA phy
|
||||
pha
|
||||
>PUSHEA.G StatBuf
|
||||
pla
|
||||
ply
|
||||
>SYSCALL STAT
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.PrintBatchErrMsg
|
||||
>LDYA ZPInputBuf
|
||||
>STYA ZPPtr1
|
||||
|
@ -326,7 +326,7 @@ SYS.SListFree .EQ $FE
|
||||
S.MEM.F .EQ 0
|
||||
S.MEM.F.INUSE .EQ %10000000 (Internal Flag)
|
||||
S.MEM.F.INIT0 .EQ %01000000 Fill with "0"
|
||||
S.MEM.F.NOMOVE .EQ %00100000
|
||||
S.MEM.F.NOCROSS .EQ %00100000
|
||||
S.MEM.F.ALIGN .EQ %00010000
|
||||
S.MEM.F.FD .EQ %00001000
|
||||
S.MEM.F.CODE .EQ %00000100
|
||||
|
@ -145,9 +145,8 @@ CS.RUN.AUTH >LDYA L.LIBCRYPT
|
||||
|
||||
jmp CS.RUN.EXEC
|
||||
|
||||
.8 >PUSHBI 0
|
||||
>LDYA L.MSG.BAD
|
||||
>SYSCALL printf
|
||||
.8 >LDYA L.MSG.BAD
|
||||
>SYSCALL puts
|
||||
bcs .9
|
||||
|
||||
dec ZPRetryCnt
|
||||
@ -477,7 +476,7 @@ MSG.NOAUTH .AS "\r\n\r\nA2osX-Login:No ETC/PASSWD file present, Logged as ROOT.
|
||||
MSG.CRLF .AZ "\r\n"
|
||||
MSG.LOGIN .AZ "\r\nlogin:"
|
||||
MSG.PASSWORD .AZ "\r\npassword:"
|
||||
MSG.BAD .AZ "Bad user or password\r\n"
|
||||
MSG.BAD .AZ "Bad user or password"
|
||||
MSG.BS .DA #C.BS,#C.SPACE,#C.BS,#0
|
||||
ETCISSUE .AZ "${ROOT}ETC/ISSUE"
|
||||
ETCMOTD .AZ "${ROOT}ETC/MOTD"
|
||||
|
@ -162,6 +162,7 @@ Kernel.Init3C >PUSHBI 0
|
||||
>PUSHBI 0 PS Flags
|
||||
>LDYAI CTRLR.SHELL
|
||||
bra .8
|
||||
|
||||
.7 >PUSHWI ETCINIT.CMDLINE
|
||||
>PUSHBI 2
|
||||
>LDYAI MSG.EtcInit
|
||||
@ -169,8 +170,10 @@ Kernel.Init3C >PUSHBI 0
|
||||
|
||||
>PUSHBI 0 PS Flags
|
||||
>LDYAI ETCINIT.CMDLINE
|
||||
|
||||
.8 >SYSCALL2 ExecL
|
||||
bcs Kernel.Init3.Err
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYAI MSG.Init3.OK
|
||||
>SYSCALL2 printf
|
||||
|
@ -189,7 +189,7 @@ IO.MLI.CREATE sta K.MLI.PARAMS+7 Storage Type
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.MLI.OPEN >LDYAI 1024 get a ProDOS IOBUF
|
||||
ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE
|
||||
ldx #S.MEM.F.ALIGN
|
||||
jsr MEM.GetMem.YAX
|
||||
bcs .9
|
||||
|
||||
|
@ -38,11 +38,14 @@ MEM.GetMem.YAX stx MEM.ReqFlags
|
||||
tya
|
||||
bit #K.MEM.ALIGN-1 aligned ?
|
||||
beq .10 yes, request it
|
||||
|
||||
and #K.MEM.nALIGNm1 align on boundary
|
||||
clc
|
||||
adc #K.MEM.ALIGN
|
||||
bcc .10
|
||||
|
||||
inc ZPMemMgrSize+1
|
||||
|
||||
.10 sta ZPMemMgrSize
|
||||
>LDYAI Mem.Table
|
||||
>STYA ZPMemMgrSPtr
|
||||
@ -51,18 +54,35 @@ MEM.GetMem.YAX stx MEM.ReqFlags
|
||||
stx MEM.BestScore
|
||||
stx MEM.BestScore+1
|
||||
ldx #0 Current slot=0
|
||||
|
||||
bra .4 skip slot 0, Check if some free slot to reuse first
|
||||
|
||||
.1 inx move to next slot
|
||||
jsr Mem.NextSlot
|
||||
lda (ZPMemMgrSPtr) Get Flags
|
||||
bmi .4 in use ?
|
||||
|
||||
.2 lda MEM.ReqFlags Found an empty slot
|
||||
and #S.MEM.F.ALIGN is request needs a page align ?
|
||||
beq .3
|
||||
bit #S.MEM.F.NOCROSS
|
||||
beq .21
|
||||
|
||||
ldy ZPMemMgrSize+1 > 255, not applicable
|
||||
bne .22 Align to page if $100
|
||||
|
||||
ldy #S.MEM.PTR
|
||||
lda (ZPMemMgrSPtr),y get LO of PTR
|
||||
clc
|
||||
adc ZPMemMgrSize
|
||||
bcs .4 cross page boundary....
|
||||
|
||||
lda MEM.ReqFlags get back flags to test if match
|
||||
|
||||
.21 bit #S.MEM.F.ALIGN is request needs a page align ?
|
||||
beq .3
|
||||
|
||||
.22 ldy #S.MEM.PTR
|
||||
lda (ZPMemMgrSPtr),y get LO of PTR
|
||||
bne .4 not page-aligned
|
||||
|
||||
.3 ldy #S.MEM.LEN
|
||||
sec
|
||||
lda (ZPMemMgrSPtr),y get LEN of this block
|
||||
@ -72,7 +92,6 @@ MEM.GetMem.YAX stx MEM.ReqFlags
|
||||
lda (ZPMemMgrSPtr),y
|
||||
sbc ZPMemMgrSize+1
|
||||
ply Y,A = SlotLen - ReqSize
|
||||
|
||||
bcc .4 req size > slot size
|
||||
|
||||
cpy MEM.BestScore
|
||||
@ -80,8 +99,8 @@ MEM.GetMem.YAX stx MEM.ReqFlags
|
||||
sbc MEM.BestScore+1
|
||||
pla
|
||||
bcs .4 Delta is >= BestScore
|
||||
|
||||
bne .4 Delta is > 255...
|
||||
|
||||
sty MEM.BestScore
|
||||
sta MEM.BestScore+1
|
||||
stx MEM.BestSlot
|
||||
@ -96,18 +115,41 @@ MEM.GetMem.YAX stx MEM.ReqFlags
|
||||
*-------------- Create a New SLOT
|
||||
|
||||
.5 lda MEM.ReqFlags
|
||||
and #S.MEM.F.ALIGN is request needs a page align ?
|
||||
beq .6
|
||||
lda Mem.Free target PTR will be page aligned ?
|
||||
sec
|
||||
sbc ZPMemMgrSize
|
||||
beq .6 yes, allocate
|
||||
bit #S.MEM.F.NOCROSS
|
||||
beq .51
|
||||
|
||||
lda ZPMemMgrSize+1 > 255, not applicable
|
||||
bne .52 Align to page if $100
|
||||
|
||||
lda Mem.Free target PTR will be in same page ?
|
||||
cmp ZPMemMgrSize
|
||||
bcs .6 yes, allocate
|
||||
|
||||
tay no, reserve a free slot to fill gap
|
||||
lda #0
|
||||
jsr Mem.AddSlot X = new slot
|
||||
bcs .9
|
||||
|
||||
lda #S.MEM.F.NOCROSS Make sure marked FREE
|
||||
sta (ZPMemMgrSPtr)
|
||||
bra .6
|
||||
|
||||
.51 bit #S.MEM.F.ALIGN is request needs a page align ?
|
||||
beq .6
|
||||
|
||||
.52 lda Mem.Free target PTR will be page aligned ?
|
||||
sec
|
||||
sbc ZPMemMgrSize
|
||||
beq .6 yes, allocate
|
||||
|
||||
tay no, reserve a free slot to fill gap
|
||||
lda #0
|
||||
jsr Mem.AddSlot X = new slot
|
||||
bcs .9
|
||||
|
||||
lda #S.MEM.F.ALIGN Make sure marked FREE
|
||||
sta (ZPMemMgrSPtr)
|
||||
|
||||
.6 >LDYA ZPMemMgrSize
|
||||
jsr Mem.AddSlot X = new slot
|
||||
bcs .9
|
||||
@ -119,30 +161,8 @@ MEM.GetMem.YAX stx MEM.ReqFlags
|
||||
and #S.MEM.F.INIT0
|
||||
beq .8
|
||||
|
||||
ldy #S.MEM.PTR
|
||||
lda (ZPMemMgrSPtr),y ZPMemMgrSPtr already set
|
||||
sta .12+1
|
||||
iny
|
||||
lda (ZPMemMgrSPtr),y
|
||||
sta .12+2
|
||||
lda ZPMemMgrSize
|
||||
eor #$ff
|
||||
tay y=not lo count
|
||||
lda ZPMemMgrSize+1
|
||||
eor #$ff a=not hi count
|
||||
phx
|
||||
ldx #0
|
||||
.11 iny
|
||||
bne .12
|
||||
inc
|
||||
beq .13
|
||||
.12 stz $ffff,x
|
||||
inx
|
||||
bne .11
|
||||
inc .12+2
|
||||
bra .11
|
||||
.13 plx
|
||||
|
||||
jsr MEM.Init0
|
||||
|
||||
.8 lda #0
|
||||
ldy #S.MEM.BIN
|
||||
sta (ZPMemMgrSPtr),y
|
||||
@ -167,6 +187,7 @@ Mem.AddSlot >STYA ZPMemMgrTmp1 save req size
|
||||
ldx Mem.LastSlot
|
||||
inx
|
||||
beq .99 > 255 ERR:OUT OF SLOT
|
||||
|
||||
lda Mem.Free Compute base PTR=FREE-REQ size
|
||||
sec
|
||||
sbc ZPMemMgrTmp1
|
||||
@ -199,6 +220,7 @@ Mem.AddSlot >STYA ZPMemMgrTmp1 save req size
|
||||
clc
|
||||
rts
|
||||
.98 pla discard new Mem.Free HI
|
||||
|
||||
.99 lda #E.OOM
|
||||
sec
|
||||
rts
|
||||
@ -209,7 +231,38 @@ MEM.NextSlot lda ZPMemMgrSPtr
|
||||
sta ZPMemMgrSPtr
|
||||
bcc .8
|
||||
inc ZPMemMgrSPtr+1
|
||||
.8 rts
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
MEM.Init0 phx
|
||||
ldy #S.MEM.PTR
|
||||
lda (ZPMemMgrSPtr),y ZPMemMgrSPtr already set
|
||||
sta .12+1
|
||||
iny
|
||||
lda (ZPMemMgrSPtr),y
|
||||
sta .12+2
|
||||
lda ZPMemMgrSize
|
||||
eor #$ff
|
||||
tay y=not lo count
|
||||
lda ZPMemMgrSize+1
|
||||
eor #$ff a=not hi count
|
||||
|
||||
ldx #0
|
||||
|
||||
.11 iny
|
||||
bne .12
|
||||
|
||||
inc
|
||||
beq .13
|
||||
|
||||
.12 stz $ffff,x
|
||||
inx
|
||||
bne .11
|
||||
|
||||
inc .12+2
|
||||
bra .11
|
||||
|
||||
.13 plx
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # FreeMem
|
||||
* A = hMem To Free
|
||||
|
@ -57,6 +57,7 @@ K.ExecL sty .1+1
|
||||
*\--------------------------------------
|
||||
K.ExecV >STYA PS.ArgV
|
||||
>PULLB PS.Flags
|
||||
|
||||
PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||
bcs .9
|
||||
sta .8+1
|
||||
@ -208,14 +209,18 @@ PS.Load ldy #$ff
|
||||
.1 iny
|
||||
lda (PS.ArgV),y
|
||||
beq .2 no / in path...try search in PATH
|
||||
|
||||
cmp #'/'
|
||||
bne .1
|
||||
|
||||
>PUSHWI K.S.STAT
|
||||
>LDYA PS.ArgV found /, some path specified, no search
|
||||
ldx #SYS.stat
|
||||
jsr K.SYSCALL2
|
||||
bcc .6 REAL path in K.Buf256
|
||||
|
||||
.99 rts
|
||||
|
||||
.2 >LDYA PS.ArgV
|
||||
jsr ENV.Search.PATH Get fullpath in K.Buf256
|
||||
bcc .6
|
||||
@ -226,9 +231,11 @@ PS.Load ldy #$ff
|
||||
>LDYA PS.ArgV
|
||||
jsr ENV.Search.YA
|
||||
bcs .99
|
||||
|
||||
.6 lda K.S.STAT+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.BIN
|
||||
beq PS.LoadBIN
|
||||
|
||||
.7 cmp #S.FI.T.TXT
|
||||
beq PS.Load.SCRIPT
|
||||
|
||||
@ -289,7 +296,7 @@ PS.Load.SCRIPT ldx #$ff
|
||||
PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SHELL\0", K.IOBuf=/.../SCRIPT
|
||||
bcs .9
|
||||
>STYA ZPPtr4 save PTR to Code Segment
|
||||
|
||||
|
||||
phy
|
||||
ldy #S.PS.ZP.CODE+1
|
||||
sta (PS.NewPSPtr),y save pCode HI...
|
||||
@ -327,23 +334,20 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SHELL\0", K.IOBuf=/.../SCRIPT
|
||||
|
||||
phy
|
||||
ldy #S.PS.ZP.DATA+1
|
||||
sta (PS.NewPSPtr),y save pData HI...
|
||||
sta (PS.NewPSPtr),y save pData HI...
|
||||
dey
|
||||
pla
|
||||
sta (PS.NewPSPtr),y save pData LO...
|
||||
sta (PS.NewPSPtr),y save pData LO...
|
||||
|
||||
txa
|
||||
ldy #S.PS.hDS
|
||||
sta (PS.NewPSPtr),y save DS hMem in S.PS
|
||||
sta (PS.NewPSPtr),y save DS hMem in S.PS
|
||||
|
||||
jsr Mem.SetOwner Set Ownership
|
||||
|
||||
.2 ldy #H.BIN.SS.SIZE
|
||||
lda (ZPPtr4),y Load SS.SIZE
|
||||
|
||||
ldy #S.PS.ZP.STACK
|
||||
sta (PS.NewPSPtr),y save pStack LO...
|
||||
|
||||
tay
|
||||
beq .3 SS.SIZE.LO=0, set as default $100
|
||||
|
||||
@ -351,19 +355,29 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SHELL\0", K.IOBuf=/.../SCRIPT
|
||||
|
||||
.3 inc
|
||||
|
||||
ldx #S.MEM.F.ALIGN+S.MEM.F.STACK
|
||||
ldx #S.MEM.F.NOCROSS+S.MEM.F.STACK
|
||||
jsr MEM.GetMem.YAX
|
||||
bcs .9
|
||||
|
||||
phy save pStack base LO
|
||||
ldy #S.PS.ZP.STACK+1
|
||||
sta (PS.NewPSPtr),y save pStack HI...(LO already set to Stack TOP)
|
||||
sta (PS.NewPSPtr),y save pStack HI...
|
||||
|
||||
ldy #S.PS.ZP.LOCAL+1
|
||||
sta (PS.NewPSPtr),y save pLocal HI...
|
||||
|
||||
pla make pStack = Base...
|
||||
ldy #H.BIN.SS.SIZE ...plus Stack size
|
||||
* clc
|
||||
adc (ZPPtr4),y
|
||||
|
||||
ldy #S.PS.ZP.STACK
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
txa
|
||||
ldy #S.PS.hSS
|
||||
sta (PS.NewPSPtr),y save SS hMem in S.PS
|
||||
|
||||
sta (PS.NewPSPtr),y save SS hMem in S.PS
|
||||
clc Potentially CS from ADC (ZPPtr4),y
|
||||
jmp Mem.SetOwner Set Ownership
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user