mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-04 03:32:12 +00:00
Kernel 0.93
This commit is contained in:
parent
4dbd36cb7b
commit
6961f830d7
Binary file not shown.
@ -237,7 +237,13 @@ CMD.SET.1
|
||||
ldy #bSET.X
|
||||
bra .5
|
||||
|
||||
.3 cmp #'F'
|
||||
.3 cmp #'E'
|
||||
bne .4
|
||||
|
||||
ldy #bSET.E
|
||||
bra .5
|
||||
|
||||
.4 cmp #'F'
|
||||
bne .99
|
||||
|
||||
jsr CORE.FUNCRESET
|
||||
@ -576,7 +582,10 @@ CMD.FUNC lda (ZPArgVBufPtr)
|
||||
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.RETURN lda (ZPArgVBufPtr)
|
||||
CMD.RETURN jsr CORE.RETURN
|
||||
bcs .9
|
||||
|
||||
lda (ZPArgVBufPtr)
|
||||
beq .8 no arg, exit 0
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
@ -586,11 +595,7 @@ CMD.RETURN lda (ZPArgVBufPtr)
|
||||
>PULLL M32.ACC
|
||||
lda M32.ACC
|
||||
|
||||
.8 pha
|
||||
lda #$FF
|
||||
>STA.G bExit
|
||||
pla
|
||||
clc
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.CALL >LDA.G hFuncList
|
||||
@ -610,7 +615,9 @@ CMD.CALL >LDA.G hFuncList
|
||||
>LDA.G hFuncList
|
||||
>SYSCALL SListGetData
|
||||
bcs .99
|
||||
jmp CORE.CALL
|
||||
|
||||
>LDYA ZPArgVBufPtr FUNC PARAM1 PARAM2...
|
||||
jmp CORE.CALL X = Func Code
|
||||
|
||||
.9 lda #E.FUNDEF
|
||||
sec
|
||||
|
@ -347,6 +347,111 @@ CORE.SkipLine jsr CORE.GetNextCharNB
|
||||
jsr CORE.GetNextChar skip CR...
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CORE.FCALL.QUIT sec
|
||||
.HS 90 BCC
|
||||
CORE.FCALL.NOQUIT
|
||||
clc
|
||||
|
||||
>STYA ZPPtr1 ArgV
|
||||
|
||||
lda #0
|
||||
ror
|
||||
>STA.G bExitOnEOF
|
||||
|
||||
>PUSHWI 0 Aux type
|
||||
>PUSHBI S.FI.T.TXT
|
||||
>PUSHBI O.RDONLY
|
||||
|
||||
>LDYA ZPPtr1
|
||||
>SYSCALL LoadTxtFile
|
||||
bcs CORE.CALL.9
|
||||
|
||||
>LDYA ZPPtr1
|
||||
|
||||
CORE.CALL stx M32.ACC X=Code to Execute
|
||||
|
||||
jsr CORE.ArgV.Dup Y,A = ArgV
|
||||
bcs CORE.CALL.9
|
||||
|
||||
stx M32.ACC+1 X=ARGV
|
||||
|
||||
lda ZPInputBuf
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
lda ZPInputBuf+1
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
lda ZPInputBufPtr
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
lda ZPInputBufPtr+1
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
lda M32.ACC+1 new ARGV
|
||||
ldy #S.PS.hARGV
|
||||
sta (pPS),y
|
||||
|
||||
lda M32.ACC
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
lda M32.ACC
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPInputBuf
|
||||
>STYA ZPInputBufPtr
|
||||
|
||||
lda #$C0
|
||||
jmp CORE.StkPush
|
||||
|
||||
CORE.CALL.90 lda #E.STKOVERFLOW
|
||||
sec
|
||||
CORE.CALL.9 rts
|
||||
*--------------------------------------
|
||||
CORE.RETURN jsr CORE.StkPull
|
||||
bcs .90
|
||||
|
||||
cmp #$C0
|
||||
bne .90
|
||||
|
||||
jsr CORE.StkPull
|
||||
>SYSCALL freemem Code buffer
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
>SYSCALL freemem ArgV buffer
|
||||
|
||||
jsr CORE.StkPull
|
||||
ldy #S.PS.hARGV
|
||||
sta (pPS),y
|
||||
|
||||
jsr CORE.StkPull
|
||||
sta ZPInputBufPtr+1
|
||||
|
||||
jsr CORE.StkPull
|
||||
sta ZPInputBufPtr
|
||||
|
||||
jsr CORE.StkPull
|
||||
sta ZPInputBuf+1
|
||||
|
||||
jsr CORE.StkPull
|
||||
sta ZPInputBuf
|
||||
|
||||
* clc
|
||||
rts
|
||||
|
||||
.90 lda #E.STACKERROR
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* search ZPInputBufPtr/ZPArgVBufPtr in Y,A table
|
||||
*--------------------------------------
|
||||
@ -412,6 +517,77 @@ CORE.Lookup >STYA ZPPtr2
|
||||
*--------------------------------------
|
||||
* ArgV
|
||||
*--------------------------------------
|
||||
CORE.ArgV.Dup >STYA ZPPtr1
|
||||
phy
|
||||
pha
|
||||
|
||||
lda #1
|
||||
sta ZPPtr2
|
||||
stz ZPPtr2+1
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
beq .4
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr1),y
|
||||
bne .2
|
||||
|
||||
tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .3
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 tya
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .1
|
||||
inc ZPPtr2+1
|
||||
bra .1
|
||||
|
||||
.4 pla
|
||||
ply
|
||||
>STYA ZPPtr1
|
||||
|
||||
>LDYA ZPPtr2
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPPtr2
|
||||
|
||||
.5 lda (ZPPtr1)
|
||||
sta (ZPPtr2)
|
||||
beq .8
|
||||
|
||||
ldy #0
|
||||
|
||||
.6 iny
|
||||
lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
bne .6
|
||||
|
||||
tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .7
|
||||
inc ZPPtr1+1
|
||||
|
||||
.7 tya
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .5
|
||||
inc ZPPtr2+1
|
||||
bra .5
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CORE.ArgV.Add >LDYA ZPArgVBufPtr
|
||||
>STYA ZPArgVBufPrev Save String start of Expand
|
||||
|
||||
@ -565,85 +741,6 @@ CORE.IO.Open pha Open Mode
|
||||
lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.FCALL.QUIT sec
|
||||
.HS 90 BCC
|
||||
CORE.FCALL.NOQUIT
|
||||
clc
|
||||
|
||||
>STYA ZPPtr1 Filename
|
||||
|
||||
lda #0
|
||||
ror
|
||||
>STA.G bExitOnEOF
|
||||
|
||||
>PUSHWI 0 Aux type
|
||||
>PUSHBI S.FI.T.TXT
|
||||
>PUSHBI O.RDONLY
|
||||
|
||||
>LDYA ZPPtr1
|
||||
>SYSCALL LoadTxtFile
|
||||
bcs CORE.CALL.9
|
||||
|
||||
CORE.CALL lda ZPInputBuf X=hBuf
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
lda ZPInputBuf+1
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
lda ZPInputBufPtr
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
lda ZPInputBufPtr+1
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
txa
|
||||
jsr CORE.StkPush
|
||||
bcs CORE.CALL.9
|
||||
|
||||
txa
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPInputBuf
|
||||
>STYA ZPInputBufPtr
|
||||
|
||||
lda #$C0
|
||||
jmp CORE.StkPush
|
||||
|
||||
CORE.CALL.90 lda #E.STKOVERFLOW
|
||||
sec
|
||||
CORE.CALL.9 rts
|
||||
*--------------------------------------
|
||||
CORE.RETURN jsr CORE.StkPull
|
||||
bcs .90
|
||||
|
||||
cmp #$C0
|
||||
bne .90
|
||||
|
||||
jsr CORE.StkPull
|
||||
>SYSCALL freemem
|
||||
|
||||
jsr CORE.StkPull
|
||||
sta ZPInputBufPtr+1
|
||||
|
||||
jsr CORE.StkPull
|
||||
sta ZPInputBufPtr
|
||||
|
||||
jsr CORE.StkPull
|
||||
sta ZPInputBuf+1
|
||||
|
||||
jsr CORE.StkPull
|
||||
sta ZPInputBuf
|
||||
|
||||
* clc
|
||||
rts
|
||||
|
||||
.90 lda #E.STACKERROR
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Input Buffer
|
||||
*--------------------------------------
|
||||
|
@ -65,16 +65,15 @@ EXP.TEST lda (ZPArgVBufPtr)
|
||||
lda #$ff
|
||||
>STA.G CORE.TestArg True
|
||||
>STA.G CORE.TestOp no op
|
||||
|
||||
|
||||
.10 >LDYA L.EXP.BEGIN
|
||||
jsr CORE.LookupArgVBuf
|
||||
|
||||
bcs .9
|
||||
|
||||
cpx #4 [ or ![
|
||||
cpx #2 0=[ or 1=![
|
||||
bcs .9
|
||||
dex
|
||||
dex 1 or $ff
|
||||
dex $ff or 0
|
||||
|
||||
txa
|
||||
|
||||
@ -92,7 +91,7 @@ EXP.TEST lda (ZPArgVBufPtr)
|
||||
|
||||
txa
|
||||
>STA.G CORE.Operator
|
||||
|
||||
|
||||
jsr EXP.TEST.UNARY
|
||||
bcs .9
|
||||
|
||||
@ -164,6 +163,9 @@ EXP.TEST lda (ZPArgVBufPtr)
|
||||
EXP.TEST.UNARY jsr CORE.ArgV.Next
|
||||
beq EXP.OP.UNARY.ESYN we need one arg or ]
|
||||
|
||||
cmp #']'
|
||||
beq EXP.OP.UNARY.DEF.9
|
||||
|
||||
>LDA.G CORE.Operator
|
||||
asl
|
||||
tax
|
||||
@ -174,18 +176,18 @@ EXP.OP.UNARY.ESYN
|
||||
sec
|
||||
rts
|
||||
|
||||
EXP.OP.UNARY.D jsr EXP.OP.UNARY.DEF.7
|
||||
EXP.OP.UNARY.D jsr EXP.OP.UNARY.STAT
|
||||
bcs EXP.OP.UNARY.DEF.9
|
||||
>LDA.G StatBuf+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR
|
||||
bne EXP.OP.UNARY.DEF.9
|
||||
bra EXP.OP.UNARY.DEF.8
|
||||
|
||||
EXP.OP.UNARY.E jsr EXP.OP.UNARY.DEF.7
|
||||
EXP.OP.UNARY.E jsr EXP.OP.UNARY.STAT
|
||||
bcs EXP.OP.UNARY.DEF.9
|
||||
bra EXP.OP.UNARY.DEF.8 DIR or FILE exist
|
||||
|
||||
EXP.OP.UNARY.F jsr EXP.OP.UNARY.DEF.7
|
||||
EXP.OP.UNARY.F jsr EXP.OP.UNARY.STAT
|
||||
bcs EXP.OP.UNARY.DEF.9
|
||||
|
||||
>LDA.G StatBuf+S.STAT.P.TYPE
|
||||
@ -193,7 +195,7 @@ EXP.OP.UNARY.F jsr EXP.OP.UNARY.DEF.7
|
||||
beq EXP.OP.UNARY.DEF.9
|
||||
bra EXP.OP.UNARY.DEF.8
|
||||
|
||||
EXP.OP.UNARY.DEF.7
|
||||
EXP.OP.UNARY.STAT
|
||||
>PUSHEA.G StatBuf
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL STAT
|
||||
@ -231,7 +233,7 @@ EXP.OP.UNARY.Z lda (ZPArgVBufPtr) [ -Z ] ?
|
||||
bra EXP.OP.UNARY.DEF.9 FALSE
|
||||
*--------------------------------------
|
||||
EXP.TEST.BINARY >LDA.G CORE.Operator
|
||||
cmp #12 =, !=, <= <, >=, >
|
||||
cmp #6 =, !=, <= <, >=, >
|
||||
bcs EXP.TEST.BINARY.NUM
|
||||
|
||||
>LDYA ZPArgVBufPrev
|
||||
@ -284,7 +286,6 @@ EXP.TEST.BINARY.END
|
||||
pha
|
||||
|
||||
>LDA.G CORE.Operator
|
||||
lsr
|
||||
tax
|
||||
pla
|
||||
and EXP.OP.BINARY.BITS,x
|
||||
|
34
BIN/SH.S.txt
34
BIN/SH.S.txt
@ -76,13 +76,13 @@ ZPArgVBufPrev .BS 2
|
||||
ZPArgVBufPtr .BS 2
|
||||
ZPVarNamePtr .BS 2
|
||||
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
|
||||
M32.ACC .BS 4
|
||||
M32.ARG .BS 4
|
||||
M32.TMP .BS 4
|
||||
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
@ -204,15 +204,16 @@ CS.RUN jsr CL.Init
|
||||
lda (pPS),y
|
||||
beq .1 no arg, continue starting interactive
|
||||
|
||||
lda #1
|
||||
>SYSCALL ArgV
|
||||
lda #0
|
||||
jsr CMD.SHIFTA Remove $0=/bin/sh
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
>SYSCALL GetMemPtr
|
||||
|
||||
jsr CORE.FCALL.QUIT Exec file an exit
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
lda #0
|
||||
jsr CMD.SHIFTA Remove $0=/bin/sh
|
||||
|
||||
lda #$ff
|
||||
>STA.G bBatchMode
|
||||
|
||||
@ -332,7 +333,14 @@ CS.RUN.INTERACTIVE
|
||||
>SYSCALL strdup
|
||||
bcs .8
|
||||
|
||||
jsr CORE.CALL
|
||||
phx
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
>SYSCALL GetMemPtr Y,A =ARGV
|
||||
|
||||
plx
|
||||
jsr CORE.CALL X = Copy of CL
|
||||
|
||||
.6 jsr CORE.Run
|
||||
|
||||
@ -428,9 +436,11 @@ CS.RUN.BATCH
|
||||
pha
|
||||
jsr CORE.RETURN
|
||||
|
||||
lda (pData)
|
||||
bne .6
|
||||
>LDA.G bExitOnEOF
|
||||
>STA.G bExit
|
||||
pla
|
||||
.6 pla
|
||||
sec
|
||||
|
||||
CS.RUN.LOOP.END ldy #S.PS.RC
|
||||
@ -442,6 +452,8 @@ CS.RUN.LOOP.END ldy #S.PS.RC
|
||||
>LDA.G bBatchMode batch mode ?
|
||||
beq .1
|
||||
|
||||
>LDA.G bSET.E
|
||||
bmi CS.RUN.LOOP.8
|
||||
jsr IO.PrintBatchErrMsg
|
||||
bcs CS.RUN.LOOP.RTS
|
||||
|
||||
@ -571,6 +583,7 @@ ENV.PWD .AZ "PWD"
|
||||
ENV.PS1 .AZ "PS1"
|
||||
ENV.HOME .AZ "HOME"
|
||||
HOME.PROFILE .AZ "${HOME}PROFILE"
|
||||
.HS 00 To Make It ArgV
|
||||
*--------------------------------------
|
||||
CMD .AZ "NOHUP"
|
||||
.AZ "CD"
|
||||
@ -691,6 +704,7 @@ bPause .BS 1
|
||||
bExit .BS 1
|
||||
|
||||
bSET.C .BS 1
|
||||
bSET.E .BS 1
|
||||
bSET.X .BS 1
|
||||
|
||||
bREAD.S .BS 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user