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