Kernel 0.92+

This commit is contained in:
Rémy GIBERT 2019-03-08 16:36:21 +00:00
parent c64f702460
commit ca86b1e9ba
4 changed files with 170 additions and 40 deletions

Binary file not shown.

View File

@ -532,51 +532,161 @@ CMD.RD lda (ZPArgVBufPtr)
.9 jmp CMD.Exec.CSYN
*--------------------------------------
CMD.BREAK
CMD.FUNC
.9 jmp CMD.Exec.CSYN
*--------------------------------------
CMD.CONTINUE
CMD.CONTINUE.CSYN
jmp CMD.Exec.CSYN
CMD.RETURN
.9 jmp CMD.Exec.CSYN
*--------------------------------------
CMD.FOR jsr CORE.StkGet
bcs .1 no context...
* stack-1 hVALUE
* stack SWITCH TOKEN
*--------------------------------------
CMD.SWITCH jsr CORE.StkGetCtx
and #$80 get current..
lsr becomes parent
bra .2
jsr EXP.GET
bcs .9
>SYSCALL strdup
bcs .9
txa
jsr CORE.StkPush Push EXP hVALUE
bcs .9
>LDA.G CORE.Test
beq .1
.1 lda #$40 ...set Parent = true
ora #$80
.1 ora #C.SWITCH
jmp CORE.StkPush
.9 rts
*--------------------------------------
CMD.CASE jsr CORE.StkGetCtx Get context in CORE.Test
.2 >STA.G CORE.Test
bcs .9
and #$3F
cmp #C.SWITCH
beq .1
cmp #C.CASE
bne .9
jsr CORE.StkPull remove C.SWITCH
jsr CORE.StkPull get hVALUE
>SYSCALL freemem
bra CMD.CASE
.1 jsr EXP.GET
bcs .9
>PUSHYA
lda (pDATA)
tay
dey get hVALUE
lda (pDATA),y
>SYSCALL GetMemPtr
>SYSCALL strcmp
ror CS if !=
and #$80
eor #$80
>ORA.G CORE.Test
ora #C.CASE
jmp CORE.StkPush
.9 jmp CMD.Exec.CSYN
*--------------------------------------
CMD.DEFAULT jsr CORE.StkGetCtx Get context in CORE.Test
bcs .9
and #$3F
cmp #C.SWITCH
beq .1
cmp #C.CASE
bne .9
jsr CORE.StkPull remove C.CASE
.1 lda #$80
>ORA.G CORE.Test
ora #C.DEFAULT
jmp CORE.StkPush
.9 jmp CMD.Exec.CSYN
*--------------------------------------
CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.Test
bcs .9
and #$3F
cmp #C.CASE
bne .9
>LDA.G CORE.Test
beq .8
jsr CORE.StkPull remove C.CASE
jsr CORE.StkGet
and #$7F
sta (pDATA),y
.8 clc
rts
.9 jmp CMD.Exec.CSYN
*--------------------------------------
CMD.END jsr CORE.StkGetCtx Get context in CORE.Test
bcs CMD.END.CSYN
and #$3F
cmp #C.SWITCH
beq .2
cmp #C.CASE
beq .1
cmp #C.DEFAULT
bne CMD.END.CSYN
.1 jsr CORE.StkPull remove C.CASE,C.DEFAULT
.2 jsr CORE.StkPull remove C.SWITCH
jsr CORE.StkPull get hVALUE
>SYSCALL freemem
rts
CMD.END.CSYN jmp CMD.Exec.CSYN
*--------------------------------------
CMD.FOR jsr CORE.StkGetCtx
lda (ZPArgVBufPtr)
beq CMD.CONTINUE.CSYN
beq CMD.END.CSYN
>LDYA ZPArgVBufPtr
>STYA ZPVarNamePtr
jsr CORE.ArgV.Next
beq CMD.CONTINUE.CSYN
beq CMD.END.CSYN
jsr ToUpperCase
cmp #'I'
bne CMD.CONTINUE.CSYN
bne CMD.END.CSYN
ldy #1
lda (ZPArgVBufPtr),y
beq CMD.CONTINUE.CSYN
beq CMD.END.CSYN
jsr ToUpperCase
cmp #'N'
bne CMD.CONTINUE.CSYN
bne CMD.END.CSYN
iny
lda (ZPArgVBufPtr),y
bne CMD.CONTINUE.CSYN
bne CMD.END.CSYN
jsr CORE.ArgV.Next
beq CMD.CONTINUE.CSYN
beq CMD.END.CSYN
cmp #'('
beq FOR.FILE
@ -765,7 +875,7 @@ CMD.NEXT jsr CORE.StkGet Y = StkPtr
* stack-4 ListPtr
* stack-3 hLIST
* stack-2 hVARNAME
* stack-1 FOR SUB TOKEN
* stack-1 FOR SUB TOKEN
* stack FOR TOKEN
*--------------------------------------
CMD.NEXT.LIST lda (pData),y Y = StkPtr
@ -1063,16 +1173,7 @@ CMD.NEXT.EXEC.1 lda (pData)
.9 rts
*--------------------------------------
CMD.WHILE
CMD.IF jsr CORE.StkGet
bcs .1 no context...
and #$80 get current..
lsr becomes parent
bra .2
.1 lda #$40 ...set Parent = true
.2 >STA.G CORE.Test
CMD.IF jsr CORE.StkGetCtx
bit #$40 Parent is true ?
beq .3

View File

@ -579,6 +579,20 @@ CORE.StkPush pha
* sec
rts
*--------------------------------------
CORE.StkGetCtx jsr CORE.StkGet
tax
bcs .1 no context...
and #$80 get current..
lsr becomes parent
bra .2
.1 lda #$40 ...set Parent = true
.2 >STA.G CORE.Test
txa
rts
*--------------------------------------
CORE.StkPull jsr CORE.StkGet
bcs .9

View File

@ -28,19 +28,24 @@ C.SHIFT .EQ 28
C.TIME .EQ 30
C.PUSHD .EQ 32
C.POPD .EQ 34
C.BREAK .EQ 36
C.CONTINUE .EQ 38
C.FUNC .EQ 36
C.RETURN .EQ 38
C.SWITCH .EQ 40
C.CASE .EQ 42
C.DEFAULT .EQ 44
C.BREAK .EQ 46
C.END .EQ 48
*--------------------------------------
C.FOR .EQ 40
C.FOR .EQ 50
C.FOR.LIST .EQ 0
C.FOR.FILE .EQ 2
C.FOR.EXEC .EQ 4
C.WHILE .EQ 42
C.IF .EQ 44
C.NEXT .EQ 46
C.LOOP .EQ 48
C.ELSE .EQ 50
C.FI .EQ 52
C.WHILE .EQ 52
C.IF .EQ 54
C.NEXT .EQ 56
C.LOOP .EQ 58
C.ELSE .EQ 60
C.FI .EQ 62
*--------------------------------------
E.CSYN .EQ $C0
E.ESYN .EQ $C1
@ -134,8 +139,13 @@ J.CMD .DA CMD.NOHUP
.DA CMD.TIME
.DA CMD.PUSHD
.DA CMD.POPD
.DA CMD.FUNC
.DA CMD.RETURN
.DA CMD.SWITCH
.DA CMD.CASE
.DA CMD.DEFAULT
.DA CMD.BREAK
.DA CMD.CONTINUE
.DA CMD.END
.DA CMD.FOR
.DA CMD.WHILE
.DA CMD.IF
@ -590,8 +600,13 @@ CMD .AZ "NOHUP"
.AZ "TIME"
.AZ "PUSHD"
.AZ "POPD"
.AZ "FUNC"
.AZ "RETURN"
.AZ "SWITCH"
.AZ "CASE"
.AZ "DEFAULT"
.AZ "BREAK"
.AZ "CONTINUE"
.AZ "END"
.AZ "FOR"
.AZ "WHILE"
.AZ "IF"