mirror of https://github.com/A2osX/A2osX.git
Kernel 0.93+
This commit is contained in:
parent
9bc755d734
commit
f9eb786fd6
Binary file not shown.
100
BIN/SH.S.CMD.txt
100
BIN/SH.S.CMD.txt
|
@ -207,27 +207,38 @@ CMD.SET.1
|
|||
bcs .6
|
||||
cmp #'C'
|
||||
bne .2
|
||||
|
||||
ldy #bSET.C
|
||||
bra .5
|
||||
|
||||
.2 cmp #'X'
|
||||
bne .3
|
||||
|
||||
ldy #bSET.X
|
||||
bra .5
|
||||
|
||||
.3 cmp #'E'
|
||||
bne .4
|
||||
|
||||
ldy #bSET.E
|
||||
bra .5
|
||||
|
||||
.4 cmp #'F'
|
||||
bne .99
|
||||
|
||||
jsr CORE.FUNCRESET
|
||||
bra .50
|
||||
|
||||
.5 lda (pData),y
|
||||
eor #$ff
|
||||
sta (pData),y
|
||||
|
||||
.50 jsr CORE.ArgV.Next
|
||||
bne .1
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.6 >LDYA ZPArgVBufPtr
|
||||
>STYA ZPVarNamePtr
|
||||
|
||||
|
@ -235,9 +246,11 @@ CMD.SET.1
|
|||
beq CMD.SET.GET
|
||||
cmp #'='
|
||||
bne .99
|
||||
|
||||
ldy #1
|
||||
lda (ZPArgVBufPtr),y
|
||||
bne .99
|
||||
|
||||
jsr CORE.ArgV.Next
|
||||
beq CMD.SET.UNSET
|
||||
|
||||
|
@ -663,87 +676,55 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
|||
jsr EXP.GetInt8Exp
|
||||
bcs .9
|
||||
|
||||
.1 sta M32.ACC
|
||||
.1 ldy #S.PS.RC
|
||||
sta (pPs),y
|
||||
|
||||
.2 jsr CORE.StkPull Pull everything until CALL . CL...
|
||||
bcs .9
|
||||
|
||||
cmp #$C0+C.. in CALL . CL context ?
|
||||
cmp #$C0+C.. in CALL, "." or CL context ?
|
||||
beq CMD.EXIT.FILE
|
||||
|
||||
cmp #$C0+C.CALL
|
||||
beq CMD.EXIT.FILE
|
||||
|
||||
cmp #$C0+C.CLEXEC
|
||||
beq CMD.EXIT.SH
|
||||
jsr CMD.EXIT.POP
|
||||
beq .8
|
||||
|
||||
jsr CORE.StkPopCtxA
|
||||
bcc .2
|
||||
rts
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.EXIT.SH jsr CMD.EXIT.FILE
|
||||
|
||||
.8 jsr CMD.EXIT.FILE
|
||||
lda #$ff
|
||||
>STA.G bExitOnEOF
|
||||
clc
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.EXIT.FILE 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
|
||||
ldy #S.PS.ARGC
|
||||
sta (pPS),y
|
||||
|
||||
jsr CORE.StkPullInputBufPtr
|
||||
|
||||
jsr CORE.StkPull
|
||||
sta ZPInputBuf+1
|
||||
jsr CORE.StkPull
|
||||
sta ZPInputBuf
|
||||
|
||||
lda M32.ACC
|
||||
CMD.EXIT.CLCRTS clc
|
||||
CMD.EXIT.RTS rts
|
||||
*--------------------------------------
|
||||
CMD.EXIT.POP and #$3F
|
||||
cmp #C.IF
|
||||
beq CMD.EXIT.CLCRTS IF : Nothing
|
||||
|
||||
ldx #2
|
||||
cmp #C.WHILE WHILE : One Ptr = 2 bytes
|
||||
beq CMD.EXIT.POPX
|
||||
|
||||
cmp #C.SWITCH SWITCH : hValue
|
||||
beq .2
|
||||
|
||||
ldx #1
|
||||
cmp #C.CASE CASE : C.CASE + hValue
|
||||
beq .1
|
||||
|
||||
cmp #C.DEFAULT DEFAULT : C.DEFAULT + hValue
|
||||
bne .9
|
||||
|
||||
.1 jsr CMD.EXIT.POPX
|
||||
|
||||
.2 jsr CORE.StkPull
|
||||
>SYSCALL freemem
|
||||
rts
|
||||
.9 lda #E.STACKERROR
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.EXIT.POPX lda (pData)
|
||||
.1 dec
|
||||
dex
|
||||
bne .1
|
||||
|
||||
sta (pData)
|
||||
|
||||
clc
|
||||
rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
bcs .9
|
||||
|
@ -848,18 +829,15 @@ CMD.END jsr CORE.StkGetCtx Get context in CORE.TestResult
|
|||
and #$3F
|
||||
|
||||
cmp #C.SWITCH
|
||||
beq .3
|
||||
beq .8
|
||||
|
||||
cmp #C.CASE
|
||||
beq .2
|
||||
beq .8
|
||||
|
||||
cmp #C.DEFAULT
|
||||
bne CMD.E.CSYN
|
||||
.2 jsr CORE.StkPull remove C.CASE or C.DEFAULT
|
||||
.3 jsr CORE.StkPull remove C.SWITCH
|
||||
jsr CORE.StkPull get hVALUE
|
||||
>SYSCALL freemem
|
||||
rts
|
||||
|
||||
.8 jmp CORE.StkPopCtx
|
||||
*--------------------------------------
|
||||
CMD.FOR jsr CORE.StkGetCtx
|
||||
|
||||
|
@ -968,6 +946,7 @@ CMD.NEXT jsr CORE.StkGet Y = StkPtr
|
|||
tax
|
||||
beq CMD.NEXT.LIST
|
||||
jmp CMD.NEXT.FILEEXEC
|
||||
|
||||
.9 lda #E.NOFOR
|
||||
sec
|
||||
rts
|
||||
|
@ -1168,11 +1147,14 @@ CMD.IF jsr CORE.StkGetCtx
|
|||
.3 lda CORE.IntCmd
|
||||
cmp #C.WHILE
|
||||
bne .8
|
||||
|
||||
lda #3
|
||||
jsr CORE.StkCheck
|
||||
bcs CMD.NEXT.LINE.RTS
|
||||
|
||||
>LDYA ZPInputCmdPtr
|
||||
jsr CORE.StkPushYA Push BEFORE WHILE/IF
|
||||
|
||||
.8 lda CORE.TestResult
|
||||
ora CORE.IntCmd
|
||||
jmp CORE.StkPush
|
||||
|
@ -1185,10 +1167,9 @@ CMD.LOOP jsr CORE.StkPull
|
|||
cmp #C.WHILE
|
||||
bne .9
|
||||
txa
|
||||
bmi .8
|
||||
bmi .8 true, loop
|
||||
|
||||
ldx #2 Discard loop Ptr
|
||||
jmp CMD.EXIT.POPX
|
||||
jmp CORE.StkPopCtxA false, Discard loop Ptr
|
||||
|
||||
.8 jmp CORE.StkPullInputBufPtr
|
||||
|
||||
|
@ -1217,11 +1198,14 @@ CMD.ELSE jsr CORE.StkGet
|
|||
*--------------------------------------
|
||||
CMD.FI jsr CORE.StkPull
|
||||
bcs .9
|
||||
|
||||
and #$3F
|
||||
cmp #C.IF
|
||||
bne .9
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.NOIF
|
||||
sec
|
||||
rts
|
||||
|
|
|
@ -99,6 +99,7 @@ CORE.Run.EOF jsr CORE.StkPull
|
|||
lda #0
|
||||
sec
|
||||
rts Ending 0, CS,A=0
|
||||
|
||||
.9 lda #E.UNEXPEOF
|
||||
sec
|
||||
rts
|
||||
|
@ -151,15 +152,21 @@ CORE.Run.1 sec coming from PIPE OUT
|
|||
.4 >LDYA L.CMD internal command ?
|
||||
jsr CORE.LookupInputBuf
|
||||
bcc .41
|
||||
|
||||
.40 jsr CORE.ArgV.Add external cmd, go check context
|
||||
bra .42
|
||||
.41 jsr CORE.SkipCharsA
|
||||
stx CORE.IntCmd
|
||||
|
||||
.41 stx CORE.IntCmd
|
||||
asl CORE.IntCmd
|
||||
jsr CORE.SkipCharsA
|
||||
|
||||
.42 jsr CORE.StkGet
|
||||
bcs CORE.Run.7 no particular context, exec...
|
||||
|
||||
tax
|
||||
lda CORE.IntCmd
|
||||
bmi .45
|
||||
|
||||
and #$3F
|
||||
cmp #C.SWITCH SWITCH....FI ?
|
||||
bcs CORE.Run.7
|
||||
|
@ -178,6 +185,7 @@ CORE.Run.1 sec coming from PIPE OUT
|
|||
|
||||
jsr CORE.GetNextChar
|
||||
bra .43
|
||||
|
||||
.44 jsr CORE.GetNextCharNB Skip EoL char
|
||||
clc
|
||||
.99 rts
|
||||
|
@ -263,7 +271,7 @@ CORE.ExecCmd lda #0
|
|||
|
||||
lda CORE.IntCmd
|
||||
bmi CORE.ExecExtCmd
|
||||
asl
|
||||
|
||||
tax
|
||||
jmp (J.CMD,x)
|
||||
|
||||
|
@ -319,9 +327,12 @@ CORE.LookupArgVBuf
|
|||
CORE.Lookup >STYA ZPPtr2
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 ldy #$ff
|
||||
|
||||
.2 jsr .7 get next valid char in src text
|
||||
bcs .3
|
||||
|
||||
.20 jsr ToUpperCase
|
||||
eor (ZPPtr1),y match table char ?
|
||||
asl compare only 7 bits
|
||||
|
@ -340,12 +351,14 @@ CORE.Lookup >STYA ZPPtr2
|
|||
.3 dey
|
||||
lda (ZPPtr1),y was last char in this keyword ?
|
||||
bmi .8
|
||||
|
||||
iny
|
||||
.41 jsr IncPtr1 skip chars to next keyword
|
||||
|
||||
.4 lda (ZPPtr1)
|
||||
bpl .41
|
||||
jsr IncPtr1
|
||||
|
||||
.6 inx
|
||||
lda (ZPPtr1) Array Ending 0, lookup failed
|
||||
bne .1
|
||||
|
@ -594,12 +607,53 @@ CORE.SkipCharsA clc
|
|||
*--------------------------------------
|
||||
* Stack
|
||||
*--------------------------------------
|
||||
CORE.StkPopCtx jsr CORE.StkPull
|
||||
|
||||
CORE.StkPopCtxA and #$3F
|
||||
cmp #C.IF
|
||||
beq .8 IF : Nothing
|
||||
|
||||
ldx #2
|
||||
cmp #C.WHILE WHILE : One Ptr = 2 bytes
|
||||
beq CORE.StkPopX
|
||||
|
||||
cmp #C.SWITCH SWITCH : hValue
|
||||
beq .2
|
||||
|
||||
ldx #1
|
||||
cmp #C.CASE CASE : C.CASE + hValue
|
||||
beq .1
|
||||
|
||||
cmp #C.DEFAULT DEFAULT : C.DEFAULT + hValue
|
||||
bne .9
|
||||
|
||||
.1 jsr CORE.StkPopX
|
||||
|
||||
.2 jsr CORE.StkPull
|
||||
>SYSCALL freemem
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #E.STACKERROR
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.StkPopX lda (pData)
|
||||
.1 dec
|
||||
dex
|
||||
bne .1
|
||||
|
||||
sta (pData)
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.StkCheck sec
|
||||
adc (pData) StackPtr
|
||||
cmp #CORE.STACK.MAX
|
||||
bcc .8
|
||||
lda #E.STKOVERFLOW
|
||||
* clc
|
||||
* sec
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CORE.StkPushYAX phx
|
||||
|
|
|
@ -162,8 +162,10 @@ IO.PrintBatchErrMsg
|
|||
lda (pPs),y
|
||||
cmp #E.SYN
|
||||
beq .10
|
||||
|
||||
>LDYA ZPInputCmdPtr
|
||||
bra .11
|
||||
|
||||
.10 >LDYA ZPInputBufPtr
|
||||
|
||||
.11 >STYA ZPPtr2
|
||||
|
@ -235,13 +237,14 @@ IO.PrintBatchErrMsg
|
|||
>PUSHW L.MSG.BATCHERR
|
||||
.80 bra IO.PrintErr
|
||||
*--------------------------------------
|
||||
IO.PrintErrMsg pha Save EC for PrintF
|
||||
|
||||
ldx L.ERR.Codes
|
||||
IO.PrintErrMsg ldx L.ERR.Codes
|
||||
stx ZPPTR1
|
||||
ldx L.ERR.Codes+1
|
||||
stx ZPPTR1+1
|
||||
|
||||
ldy #S.PS.RC
|
||||
lda (pPs),y
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 cmp (ZPPTR1),y
|
||||
|
@ -260,8 +263,12 @@ IO.PrintErrMsg pha Save EC for PrintF
|
|||
lda (ZPPTR1)
|
||||
jsr AddAp1Ptr1
|
||||
bra .3
|
||||
|
||||
.8 >PUSHW ZPPTR1
|
||||
pla
|
||||
|
||||
ldy #S.PS.RC
|
||||
lda (pPs),y
|
||||
|
||||
>PUSHA
|
||||
>PUSHBI 3
|
||||
>PUSHW L.MSG.ERROR
|
||||
|
|
92
BIN/SH.S.txt
92
BIN/SH.S.txt
|
@ -10,40 +10,40 @@ CORE.STACK.MAX .EQ 128
|
|||
PUSHD.STACK.MAX .EQ 4
|
||||
*--------------------------------------
|
||||
C... .EQ 0
|
||||
C.. .EQ 1
|
||||
C.CD .EQ 2
|
||||
C.NOHUP .EQ 3
|
||||
C.DATE .EQ 4
|
||||
C.ECHO .EQ 5
|
||||
C.EXIT .EQ 6
|
||||
C.MD .EQ 7
|
||||
C.PAUSE .EQ 8
|
||||
C.PWD .EQ 9
|
||||
C.RD .EQ 10
|
||||
C.READ .EQ 11
|
||||
C.REN .EQ 12
|
||||
C.SET .EQ 13
|
||||
C.SLEEP .EQ 14
|
||||
C.SHIFT .EQ 15
|
||||
C.PUSHD .EQ 16
|
||||
C.POPD .EQ 17
|
||||
C.FUNCTION .EQ 18
|
||||
C.CALL .EQ 19
|
||||
C.BREAK .EQ 20
|
||||
C.SWITCH .EQ 21
|
||||
C.CASE .EQ 22
|
||||
C.DEFAULT .EQ 23
|
||||
C.. .EQ 2
|
||||
C.CD .EQ 4
|
||||
C.NOHUP .EQ 6
|
||||
C.DATE .EQ 8
|
||||
C.ECHO .EQ 10
|
||||
C.EXIT .EQ 12
|
||||
C.MD .EQ 14
|
||||
C.PAUSE .EQ 16
|
||||
C.PWD .EQ 18
|
||||
C.RD .EQ 20
|
||||
C.READ .EQ 22
|
||||
C.REN .EQ 24
|
||||
C.SET .EQ 26
|
||||
C.SLEEP .EQ 28
|
||||
C.SHIFT .EQ 30
|
||||
C.PUSHD .EQ 32
|
||||
C.POPD .EQ 34
|
||||
C.FUNCTION .EQ 36
|
||||
C.CALL .EQ 38
|
||||
C.BREAK .EQ 40
|
||||
C.SWITCH .EQ 42
|
||||
C.CASE .EQ 44
|
||||
C.DEFAULT .EQ 46
|
||||
*--------------------------------------
|
||||
C.FOR .EQ 24
|
||||
C.FOR .EQ 48
|
||||
C.FOR.LIST .EQ 0
|
||||
C.FOR.FILEEXEC .EQ 1
|
||||
C.WHILE .EQ 25
|
||||
C.IF .EQ 26
|
||||
C.NEXT .EQ 27
|
||||
C.LOOP .EQ 20
|
||||
C.ELSE .EQ 29
|
||||
C.FI .EQ 30
|
||||
C.END .EQ 31
|
||||
C.WHILE .EQ 50
|
||||
C.IF .EQ 52
|
||||
C.NEXT .EQ 54
|
||||
C.LOOP .EQ 56
|
||||
C.ELSE .EQ 58
|
||||
C.FI .EQ 60
|
||||
C.END .EQ 62
|
||||
*--------------------------------------
|
||||
C.CLEXEC .EQ 63
|
||||
*--------------------------------------
|
||||
|
@ -369,6 +369,7 @@ CS.RUN.BATCH >LDA.G bSET.X
|
|||
bcs CS.RUN.LOOP.RTS
|
||||
|
||||
.5 jsr CORE.Run
|
||||
|
||||
CS.RUN.LOOP.END ldy #S.PS.RC
|
||||
sta (pPs),y
|
||||
bcc CS.RUN.LOOP.80
|
||||
|
@ -378,22 +379,35 @@ CS.RUN.LOOP.END ldy #S.PS.RC
|
|||
>LDA.G bSET.E
|
||||
bmi CS.RUN.LOOP.80
|
||||
|
||||
jsr CORE.StkGet
|
||||
.1 jsr CORE.StkGet
|
||||
cmp #$C0+C.CLEXEC
|
||||
beq .1
|
||||
jsr IO.PrintBatchErrMsg
|
||||
beq .8
|
||||
|
||||
cmp #$C0+C.. in . ?
|
||||
beq .7
|
||||
|
||||
cmp #$C0+C.CALL in CALL ?
|
||||
beq .7
|
||||
|
||||
jsr CORE.StkPopCtx
|
||||
bcc .1
|
||||
|
||||
.7 jsr IO.PrintBatchErrMsg
|
||||
bcs CS.RUN.LOOP.RTS
|
||||
.1 ldy #S.PS.RC
|
||||
lda (pPs),y
|
||||
jsr IO.PrintErrMsg
|
||||
|
||||
jsr CORE.StkPull
|
||||
jsr CMD.EXIT.FILE
|
||||
|
||||
.8 jsr IO.PrintErrMsg
|
||||
bcs CS.RUN.LOOP.RTS
|
||||
|
||||
CS.RUN.LOOP.80 lda (pData) something on stack ?
|
||||
bne .8
|
||||
bne CS.RUN.LOOP.88
|
||||
|
||||
>LDA.G bExitOnEOF
|
||||
bmi CS.RUN.LOOP.EXIT
|
||||
|
||||
.8 jmp CS.RUN.LOOP
|
||||
CS.RUN.LOOP.88 jmp CS.RUN.LOOP
|
||||
CS.RUN.LOOP.EXIT
|
||||
ldy #S.PS.RC
|
||||
lda (pPs),y
|
||||
|
|
Loading…
Reference in New Issue