Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-04-02 16:28:50 +01:00
parent 4dbd36cb7b
commit 6961f830d7
5 changed files with 227 additions and 108 deletions

Binary file not shown.

View File

@ -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

View File

@ -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
*--------------------------------------

View File

@ -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

View File

@ -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