mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-28 16:33:26 +00:00
Kernel 0.93+
This commit is contained in:
parent
e6abb0017d
commit
8f4ff3ee4f
Binary file not shown.
@ -98,6 +98,8 @@ CSH.Run.1 cmp #'#'
|
|||||||
.6 jsr CSH.GetVar
|
.6 jsr CSH.GetVar
|
||||||
bcs .7
|
bcs .7
|
||||||
|
|
||||||
|
>STYA ZPVarID
|
||||||
|
|
||||||
jsr CSH.GetCharNB
|
jsr CSH.GetCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
cmp #'='
|
cmp #'='
|
||||||
@ -110,7 +112,7 @@ CSH.Run.1 cmp #'#'
|
|||||||
jsr CSH.ExpEval
|
jsr CSH.ExpEval
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
txa X = Exp Type
|
>LDYA ZPVarID X = Exp Type
|
||||||
jsr CSH.SetVarValue
|
jsr CSH.SetVarValue
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -128,9 +130,11 @@ CSH.Run.1 cmp #'#'
|
|||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
bne CSH.Run.1
|
beq .80
|
||||||
|
|
||||||
jmp CSH.GetNextChar Skip CR
|
jmp CSH.Run.1
|
||||||
|
|
||||||
|
.80 jmp CSH.GetNextChar Skip CR
|
||||||
|
|
||||||
.99 lda #CSH.E.SYNTAX
|
.99 lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
@ -312,18 +316,27 @@ CSH.TYPE stx ZPVarType
|
|||||||
jsr CSH.IsLetter
|
jsr CSH.IsLetter
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
txa VAR TYPE
|
jsr CSH.AddVar add with no value...
|
||||||
jsr CSH.AddVar add with undefined value...
|
|
||||||
bcs .99 OOM or DUP
|
bcs .99 OOM or DUP
|
||||||
|
|
||||||
>STYA ZPVarID
|
>STYA ZPVarID
|
||||||
|
|
||||||
jsr CSH.GetCharNB
|
jsr CSH.GetCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
cmp #';'
|
cmp #';'
|
||||||
beq .8 end of declaration, no value...
|
bne .2
|
||||||
|
|
||||||
|
ldx ZPVarType
|
||||||
|
jsr CSH.SIZEOF
|
||||||
|
|
||||||
cmp #'='
|
.1 dec pStack
|
||||||
|
dec
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
ldx ZPVarType
|
||||||
|
bra .7
|
||||||
|
|
||||||
|
.2 cmp #'='
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CSH.GetNextCharNB Skip =
|
jsr CSH.GetNextCharNB Skip =
|
||||||
@ -333,8 +346,8 @@ CSH.TYPE stx ZPVarType
|
|||||||
jsr CSH.ExpEval
|
jsr CSH.ExpEval
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
txa
|
.7 >LDYA ZPVarID
|
||||||
jsr CSH.SetVarValue Update value to this var
|
jsr CSH.AddVarValue X= Type, Add value to this var
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CSH.GetChar
|
jsr CSH.GetChar
|
||||||
@ -519,11 +532,11 @@ CSH.ExpEval ldx ZPPtr1
|
|||||||
.20 jsr CSH.IsLetter Fnc or Var ?
|
.20 jsr CSH.IsLetter Fnc or Var ?
|
||||||
bcs .2
|
bcs .2
|
||||||
|
|
||||||
jsr CSH.GetVar
|
jsr CSH.GetVar
|
||||||
bcs .1
|
bcs .1
|
||||||
|
|
||||||
ldx ZPPtr2 var type (could be 0=any)
|
ldx ZPPtr2 var type (could be 0=any)
|
||||||
jsr CSH.GetVarValue Get value on stack
|
jsr CSH.GetVarValue Y,A = VarID, Get value on stack
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
stx ZPPtr2 store real var type
|
stx ZPPtr2 store real var type
|
||||||
@ -563,8 +576,6 @@ CSH.ExpEval ldx ZPPtr1
|
|||||||
|
|
||||||
stx ZPPtr2+1
|
stx ZPPtr2+1
|
||||||
|
|
||||||
jsr CSH.PushValueOnStack
|
|
||||||
|
|
||||||
jsr CSH.GetCharNB
|
jsr CSH.GetCharNB
|
||||||
bcc .20 go check for an ARG
|
bcc .20 go check for an ARG
|
||||||
bra .90
|
bra .90
|
||||||
@ -587,7 +598,7 @@ CSH.ExpEval ldx ZPPtr1
|
|||||||
jmp .10
|
jmp .10
|
||||||
|
|
||||||
* Old OP has precedence, compute ACC=ARG <BOP> ACC
|
* Old OP has precedence, compute ACC=ARG <BOP> ACC
|
||||||
.6 lda ZPPtr2+1
|
.6 ldx ZPPtr2+1
|
||||||
jsr CSH.Compute
|
jsr CSH.Compute
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
@ -595,7 +606,7 @@ CSH.ExpEval ldx ZPPtr1
|
|||||||
bcs .90
|
bcs .90
|
||||||
jmp .10
|
jmp .10
|
||||||
|
|
||||||
.8 lda ZPPtr2+1
|
.8 ldx ZPPtr2+1
|
||||||
bmi .80
|
bmi .80
|
||||||
|
|
||||||
jsr CSH.Compute
|
jsr CSH.Compute
|
||||||
@ -609,14 +620,14 @@ CSH.ExpEval ldx ZPPtr1
|
|||||||
.80 clc
|
.80 clc
|
||||||
|
|
||||||
ldx ZPPtr2 X = Var Type
|
ldx ZPPtr2 X = Var Type
|
||||||
pla
|
ply
|
||||||
sta ZPPtr2+1
|
sty ZPPtr2+1
|
||||||
pla
|
ply
|
||||||
sta ZPPtr2
|
sty ZPPtr2
|
||||||
pla
|
ply
|
||||||
sta ZPPtr1+1
|
sty ZPPtr1+1
|
||||||
pla
|
ply
|
||||||
sta ZPPtr1
|
sty ZPPtr1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -801,14 +812,12 @@ CSH.GetNumOnStack
|
|||||||
* Input : ZPFileBufPtr, A = Var Type, Value on Stack
|
* Input : ZPFileBufPtr, A = Var Type, Value on Stack
|
||||||
* Output : Y,A = ZPVarID
|
* Output : Y,A = ZPVarID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.AddVar sta ZPVarType
|
CSH.AddVar >PUSHW ZPFileBufPtr
|
||||||
|
|
||||||
>PUSHW ZPFileBufPtr
|
|
||||||
>LDA.G CSH.hSymbols
|
>LDA.G CSH.hSymbols
|
||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPVarID
|
pha
|
||||||
txa
|
txa
|
||||||
* clc
|
* clc
|
||||||
adc ZPFileBufPtr
|
adc ZPFileBufPtr
|
||||||
@ -816,40 +825,62 @@ CSH.AddVar sta ZPVarType
|
|||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
inc ZPFileBufPtr+1
|
inc ZPFileBufPtr+1
|
||||||
|
clc
|
||||||
|
|
||||||
.1 ldy #2
|
.1 pla
|
||||||
|
|
||||||
lda ZPVarType
|
|
||||||
sta ZPVarData
|
|
||||||
|
|
||||||
and #CSH.Q.PPPOINTER
|
|
||||||
bne .2 Pointer, always 2 bytes
|
|
||||||
|
|
||||||
lda ZPVarType
|
|
||||||
and #$1f
|
|
||||||
tax
|
|
||||||
ldy CSH.TYPESIZE,x
|
|
||||||
|
|
||||||
.2 iny +1 for Type
|
|
||||||
lda #0
|
|
||||||
|
|
||||||
>PUSHYA DataLen
|
|
||||||
>PUSHWI ZPVarData
|
|
||||||
>PUSHW ZPVarID
|
|
||||||
>LDA.G CSH.hSymbols
|
|
||||||
>SYSCALL SListAddData
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>LDYA ZPVarID
|
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* Y,A = VarID, X=Type
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.AddVarValue sec
|
||||||
|
.HS 90 BCC
|
||||||
|
*--------------------------------------
|
||||||
|
* Y,A = VarID, X=Type
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.SetVarValue clc
|
||||||
|
php
|
||||||
|
|
||||||
|
pha
|
||||||
|
phy
|
||||||
|
stx ZPVarData X = type
|
||||||
|
|
||||||
|
jsr CSH.SIZEOF
|
||||||
|
pha Size....
|
||||||
|
tax
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
|
||||||
|
.1 >PULLA
|
||||||
|
sta ZPVarData,y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
>PUSHBI 0 Datalen HI
|
||||||
|
pla
|
||||||
|
inc
|
||||||
|
>PUSHA Datalen LO
|
||||||
|
>PUSHWI ZPVarData DataPtr
|
||||||
|
ply
|
||||||
|
pla
|
||||||
|
>PUSHYA Y,A = VarID
|
||||||
|
>LDA.G CSH.hSymbols
|
||||||
|
plp
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
>SYSCALL SListAddData
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 >SYSCALL SListSetData
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CSH.GetVar >PUSHW ZPFileBufPtr
|
CSH.GetVar >PUSHW ZPFileBufPtr
|
||||||
>LDA.G CSH.hSymbols
|
>LDA.G CSH.hSymbols
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPVarID
|
pha
|
||||||
|
|
||||||
txa
|
txa
|
||||||
* clc
|
* clc
|
||||||
@ -859,24 +890,26 @@ CSH.GetVar >PUSHW ZPFileBufPtr
|
|||||||
|
|
||||||
inc ZPFileBufPtr+1
|
inc ZPFileBufPtr+1
|
||||||
clc
|
clc
|
||||||
.1
|
|
||||||
.9
|
.1 pla Y,A = VarID
|
||||||
CSH.GetVar.RTS rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Input : ZPFileBufPtr, X = Var Type (or 0)
|
* Input : Y,A = VarID, X = Var Type (or 0)
|
||||||
* Output : Value on Stack, X = Var Type
|
* Output : Value on Stack, X = Var Type
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.GetVarValue stx ZPVarType
|
CSH.GetVarValue stx ZPVarType
|
||||||
|
|
||||||
.1 >PUSHWI 0
|
pha
|
||||||
>PUSHWI 6
|
>PUSHWI 0 From Start
|
||||||
|
>PUSHWI 6 6 bytes
|
||||||
>PUSHWI ZPVarData
|
>PUSHWI ZPVarData
|
||||||
>PUSHW ZPVarID
|
pla
|
||||||
|
>PUSHYA KeyID
|
||||||
|
|
||||||
>LDA.G CSH.hSymbols
|
>LDA.G CSH.hSymbols
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs CSH.GetVar.RTS
|
bcs .9
|
||||||
|
|
||||||
CSH.PushValueOnStack
|
|
||||||
ldx ZPVarType
|
ldx ZPVarType
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
@ -884,7 +917,10 @@ CSH.PushValueOnStack
|
|||||||
bne .99
|
bne .99
|
||||||
|
|
||||||
.1 ldx ZPVarData
|
.1 ldx ZPVarData
|
||||||
ldy CSH.TYPESIZE,x
|
beq *
|
||||||
|
|
||||||
|
jsr CSH.SIZEOF
|
||||||
|
tay
|
||||||
|
|
||||||
.2 lda ZPVarData,y
|
.2 lda ZPVarData,y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
@ -898,36 +934,6 @@ CSH.PushValueOnStack
|
|||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.SetVarValue cmp ZPVarType
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
sta ZPVarData
|
|
||||||
tax
|
|
||||||
ldy CSH.TYPESIZE,x Byte count to transfer
|
|
||||||
|
|
||||||
ldx #1
|
|
||||||
|
|
||||||
.1 >PULLA
|
|
||||||
sta ZPVarData,x
|
|
||||||
inx
|
|
||||||
dey
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
>PUSHBI 0
|
|
||||||
ldx ZPVarType
|
|
||||||
lda CSH.TYPESIZE,x
|
|
||||||
inc +1 including TYPE
|
|
||||||
>PUSHA
|
|
||||||
>PUSHWI ZPVarData
|
|
||||||
>PUSHW ZPVarID
|
|
||||||
>LDA.G CSH.hSymbols
|
|
||||||
>SYSCALL SListSetData
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #CSH.E.TMISMATCH
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* Input : Value on Stack, X = Var Type
|
* Input : Value on Stack, X = Var Type
|
||||||
* Output : CC = true, CS = false
|
* Output : CC = true, CS = false
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -960,46 +966,51 @@ CSH.IsValue0 cpx #CSH.T.FLOAT
|
|||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.Compute tax
|
CSH.Compute jmp (J.CSH.BOPS,x)
|
||||||
jmp (J.CSH.BOPS,x)
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.BOPS.ADD
|
CSH.BOPS.ADD lda ZPVarType
|
||||||
|
cmp #CSH.T.FLOAT
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.8 >FPU FADD
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
CSH.BOPS.SUB lda ZPVarType
|
CSH.BOPS.SUB lda ZPVarType
|
||||||
cmp #CSH.T.FLOAT
|
cmp #CSH.T.FLOAT
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 >FPU FSUB
|
.8 >FPU FSUB
|
||||||
bcs .9
|
rts
|
||||||
|
|
||||||
|
CSH.BOPS.MUL lda ZPVarType
|
||||||
|
cmp #CSH.T.FLOAT
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
CSH.BOPS.MUL
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.8 >FPU FMULT
|
||||||
|
rts
|
||||||
|
|
||||||
CSH.BOPS.DIV lda ZPVarType
|
CSH.BOPS.DIV lda ZPVarType
|
||||||
cmp #CSH.T.FLOAT
|
cmp #CSH.T.FLOAT
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8
|
.8 >FPU FDIV
|
||||||
>FPU FDIV
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
rts
|
||||||
CSH.BOPS.MOD
|
CSH.BOPS.MOD
|
||||||
CSH.BOPS.SHL
|
CSH.BOPS.SHL
|
||||||
@ -1176,14 +1187,18 @@ CSH.IsDigit10 cmp #'0'
|
|||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* in : X = type, out : X = type, A = size
|
||||||
|
*--------------------------------------
|
||||||
CSH.SIZEOF txa
|
CSH.SIZEOF txa
|
||||||
and #CSH.Q.PPPOINTER
|
and #CSH.Q.PPPOINTER
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
txa
|
txa
|
||||||
and #$f
|
and #$f
|
||||||
tay
|
phx
|
||||||
lda CSH.TYPESIZE,y
|
tax
|
||||||
|
lda CSH.TYPESIZE,x
|
||||||
|
plx
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 lda #2
|
.2 lda #2
|
||||||
@ -1205,7 +1220,7 @@ EXEC.cos >FPU COS
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EXEC.getchar >SYSCALL getchar
|
EXEC.getchar >SYSCALL getchar
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>DEBUG
|
>DEBUG
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
@ -27,8 +27,9 @@ ZPPtr2 .BS 2
|
|||||||
ZPPtr3 .BS 2
|
ZPPtr3 .BS 2
|
||||||
|
|
||||||
ZPVarID .BS 2
|
ZPVarID .BS 2
|
||||||
ZPVarType .BS 1
|
|
||||||
ZPVarData .BS 6
|
ZPVarData .BS 6
|
||||||
|
ZPVarType .BS 1
|
||||||
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -47,14 +48,15 @@ CS.START cld
|
|||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Relocation Table
|
* Relocation Table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.MSG.GREETINGS .DA MSG.GREETINGS
|
L.MSG.GREETINGS .DA MSG.GREETINGS
|
||||||
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
|
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
|
||||||
L.MSG.ERR .DA MSG.ERR
|
L.MSG.HEXWORD .DA MSG.HEXWORD
|
||||||
|
L.MSG.ERR .DA MSG.ERR
|
||||||
.INB USR/SRC/BIN/CSH.R
|
.INB USR/SRC/BIN/CSH.R
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -201,6 +203,13 @@ PrintErrMsg >LDYA ZPFileBuf
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PrintTraceMsg >STYA ZPPtr3
|
PrintTraceMsg >STYA ZPPtr3
|
||||||
|
|
||||||
|
>PUSHW pStack
|
||||||
|
>PUSHBI 2
|
||||||
|
>PUSHW L.MSG.HEXWORD
|
||||||
|
ldy #S.PS.hStdErr
|
||||||
|
lda (pPS),y
|
||||||
|
>SYSCALL fprintf
|
||||||
|
|
||||||
PrintTraceMsg.3 >PUSHBI '>'
|
PrintTraceMsg.3 >PUSHBI '>'
|
||||||
ldy #S.PS.hStdErr
|
ldy #S.PS.hStdErr
|
||||||
@ -239,7 +248,8 @@ CS.END
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.Greetings .AZ "\r\nCSH-Shell %d.%d\r\n\r\n"
|
MSG.Greetings .AZ "\r\nCSH-Shell %d.%d\r\n\r\n"
|
||||||
MSG.ECHOCRLF .AZ "\r\n"
|
MSG.ECHOCRLF .AZ "\r\n"
|
||||||
MSG.ERR .AZ "^\r\nLine #%D:"
|
MSG.HEXWORD .AZ "[%H]"
|
||||||
|
MSG.ERR .AZ " ^\r\nLine #%D:"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB USR/SRC/BIN/CSH.I
|
.INB USR/SRC/BIN/CSH.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user