mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-26 13:49:18 +00:00
Kernel 0.93+
This commit is contained in:
parent
f3a26b40a4
commit
a28d9c361f
Binary file not shown.
@ -50,9 +50,23 @@ CSH.Quit.RTS rts
|
||||
CSH.Run jsr CSH.GetCharNB
|
||||
bcs CSH.Quit.RTS
|
||||
|
||||
CSH.Run.1 cmp #'}' End of block ?
|
||||
CSH.Run.1 cmp #'#'
|
||||
bne .3 comments ...
|
||||
|
||||
.1 jsr CSH.GetNextChar
|
||||
bcs .2
|
||||
|
||||
cmp #C.CR
|
||||
bne .1
|
||||
|
||||
.2 jmp CSH.GetNextChar Skip CR and exit
|
||||
|
||||
.3 cmp #C.CR
|
||||
beq .2
|
||||
|
||||
cmp #'}' End of block ?
|
||||
bne .4
|
||||
|
||||
jsr CSH.CheckStack must be something on stack....
|
||||
bcs .9
|
||||
|
||||
@ -60,26 +74,21 @@ CSH.Run.1 cmp #'}' End of block ?
|
||||
tax
|
||||
jmp (J.CSH.KW.END,x)
|
||||
|
||||
.1 cmp #C.CR
|
||||
bne .2
|
||||
|
||||
jmp CSH.GetNextChar Skip CR and exit
|
||||
|
||||
.2 pha
|
||||
.4 pha
|
||||
jsr CSH.SavePtr Save Ptr, in case of while,for....
|
||||
pla
|
||||
jsr CSH.IsLetter
|
||||
bcc .3
|
||||
bcc .5
|
||||
|
||||
cmp #'#'
|
||||
beq .80 comments ...
|
||||
|
||||
bra .9 error, todo : PREOPS ++ --.....
|
||||
|
||||
.3 >LDYA L.CSH.KW
|
||||
|
||||
bra .99 error, todo : PREOPS ++ --.....
|
||||
|
||||
.5 >LDYA L.CSH.KW
|
||||
jsr CSH.LookupID
|
||||
|
||||
bcs .4 not an internal CSH keyword....
|
||||
bcs .6 not an internal CSH keyword....
|
||||
|
||||
txa
|
||||
>STA.G CSH.CmdSave
|
||||
@ -87,10 +96,10 @@ CSH.Run.1 cmp #'}' End of block ?
|
||||
jsr CSH.KW.JMP
|
||||
bcs .9
|
||||
|
||||
bra .7
|
||||
bra .8
|
||||
|
||||
.4 jsr CSH.GetVar
|
||||
bcs .5
|
||||
.6 jsr CSH.GetVar
|
||||
bcs .7
|
||||
|
||||
jsr CSH.GetCharNB
|
||||
bcs .9
|
||||
@ -110,13 +119,13 @@ CSH.Run.1 cmp #'}' End of block ?
|
||||
cmp #';'
|
||||
bne .99
|
||||
|
||||
bra .7
|
||||
bra .8
|
||||
|
||||
.5 lda #0 no return value type check required
|
||||
.7 lda #0 no return value type check required
|
||||
jsr CSH.FnEval X = function index
|
||||
bcs .9
|
||||
|
||||
.7 jsr CSH.GetNextCharNB Skip ;
|
||||
.8 jsr CSH.GetNextCharNB Skip ;
|
||||
bcs .9
|
||||
|
||||
cmp #C.CR
|
||||
@ -127,15 +136,6 @@ CSH.Run.1 cmp #'}' End of block ?
|
||||
.99 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.9 rts
|
||||
|
||||
|
||||
|
||||
.80 jsr CSH.GetNextChar
|
||||
bcs .9
|
||||
cmp #C.CR
|
||||
bne .80
|
||||
|
||||
jmp CSH.GetNextChar Skip CR
|
||||
*--------------------------------------
|
||||
* Built in Keywords
|
||||
*--------------------------------------
|
||||
@ -329,10 +329,11 @@ CSH.TYPE stx ZPVarType
|
||||
|
||||
lda ZPVarType
|
||||
jsr CSH.ExpEval
|
||||
|
||||
bcs .99
|
||||
|
||||
lda ZPVarType
|
||||
jsr CSH.SetVarValue Update value to this var
|
||||
bcs .99
|
||||
|
||||
jsr CSH.GetChar
|
||||
bcs .9
|
||||
@ -404,6 +405,7 @@ CSH.FnEval ldx ZPPtr1
|
||||
inc ZPPtr1+1
|
||||
|
||||
.4 jsr CSH.ExpEval
|
||||
|
||||
bcs .9
|
||||
|
||||
lda (ZPPtr1) no more arg in fn definition
|
||||
@ -413,21 +415,31 @@ CSH.FnEval ldx ZPPtr1
|
||||
bcs .9
|
||||
|
||||
cmp #','
|
||||
bne .90
|
||||
bne .6
|
||||
|
||||
jsr CSH.GetNextCharNB Skip ,
|
||||
|
||||
lda (ZPPtr1)
|
||||
bne .3 Another ARG....
|
||||
|
||||
bra .9
|
||||
bra .9 extra args....error
|
||||
|
||||
.6 cmp #')'
|
||||
bne .90
|
||||
|
||||
lda (ZPPtr1)
|
||||
eor #CSH.T.VARIADIC
|
||||
beq .8
|
||||
|
||||
bra .90 missing arg
|
||||
|
||||
.7 jsr CSH.GetCharNB
|
||||
bcs .90
|
||||
|
||||
cmp #')'
|
||||
bne .90
|
||||
|
||||
jsr CSH.GetNextChar Skip )
|
||||
.8 jsr CSH.GetNextCharNB Skip )
|
||||
|
||||
plx restore X = function index
|
||||
|
||||
@ -446,13 +458,15 @@ CSH.FnEval ldx ZPPtr1
|
||||
.91 lda #CSH.E.TMISMATCH
|
||||
sec
|
||||
|
||||
.9 plx
|
||||
.9 plx Discard function index
|
||||
|
||||
plx
|
||||
stx ZPPtr2
|
||||
plx
|
||||
stx ZPPtr1+1
|
||||
plx
|
||||
stx ZPPtr1
|
||||
plx
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
* Input:
|
||||
@ -465,12 +479,12 @@ CSH.ExpEval ldx ZPPtr1
|
||||
phx
|
||||
ldx ZPPtr1+1
|
||||
phx
|
||||
ldx ZPPtr2
|
||||
ldx ZPPtr2 local : VarType
|
||||
phx
|
||||
ldx ZPPtr2+1 One local : BOP1
|
||||
ldx ZPPtr2+1 local : BOP1
|
||||
phx
|
||||
|
||||
sta ZPPtr2 save Type
|
||||
sta ZPPtr2
|
||||
|
||||
.10 lda #$ff
|
||||
sta ZPPtr2+1 Reset BOP1
|
||||
@ -481,14 +495,16 @@ CSH.ExpEval ldx ZPPtr1
|
||||
.20 jsr CSH.IsLetter Fnc or Var ?
|
||||
bcs .2
|
||||
|
||||
lda ZPPtr2 var type
|
||||
jsr CSH.GetVar
|
||||
bcs .1
|
||||
|
||||
ldx ZPPtr2 var type
|
||||
jsr CSH.GetVarValue Get value on stack
|
||||
bcs .99
|
||||
bra .11
|
||||
|
||||
.1 jsr CSH.FnEval X = function index
|
||||
.1 lda ZPPtr2 var type
|
||||
jsr CSH.FnEval X = function index
|
||||
bcs .99
|
||||
bra .11
|
||||
|
||||
@ -747,7 +763,7 @@ CSH.AddVar sta ZPVarType
|
||||
.1 ldy #2
|
||||
|
||||
lda ZPVarType
|
||||
>PUSHA Push Var Type On stack...
|
||||
sta ZPVarData
|
||||
|
||||
and #CSH.Q.PPPOINTER
|
||||
bne .2 Pointer, always 2 bytes
|
||||
@ -761,19 +777,17 @@ CSH.AddVar sta ZPVarType
|
||||
lda #0
|
||||
|
||||
>PUSHYA DataLen
|
||||
>PUSHW pStack
|
||||
>PUSHW ZPVarData
|
||||
>PUSHW ZPVarID
|
||||
>LDA.G CSH.hSymbols
|
||||
>SYSCALL SListAddData
|
||||
bcs .9
|
||||
|
||||
>LDYA ZPVarType
|
||||
>LDYA ZPVarID
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CSH.GetVar sta ZPVarType
|
||||
>DEBUG
|
||||
>PUSHW ZPFileBufPtr
|
||||
CSH.GetVar >PUSHW ZPFileBufPtr
|
||||
>LDA.G CSH.hSymbols
|
||||
>SYSCALL SListLookup
|
||||
bcs .9
|
||||
@ -787,37 +801,32 @@ CSH.GetVar sta ZPVarType
|
||||
bcc .1
|
||||
|
||||
inc ZPFileBufPtr+1
|
||||
|
||||
.1 ldx ZPVarType
|
||||
cpx ZPVarData
|
||||
bne .99
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.99 lda #CSH.E.TMISMATCH
|
||||
sec
|
||||
.1
|
||||
.9
|
||||
CSH.GetVar.RTS rts
|
||||
*--------------------------------------
|
||||
* Input : ZPFileBufPtr, A = Var Type
|
||||
* Output : Value on Stack
|
||||
* Input : ZPFileBufPtr, X = Var Type (or 0)
|
||||
* Output : Value on Stack, X = Var Type
|
||||
*--------------------------------------
|
||||
CSH.GetVarValue sta ZPVarType
|
||||
CSH.GetVarValue stx ZPVarType
|
||||
|
||||
.1 >PUSHWI 0
|
||||
>PUSHWI 6
|
||||
>PUSHWI ZPVarData
|
||||
>PUSHWI ZPVarID
|
||||
>PUSHW ZPVarID
|
||||
>LDA.G CSH.hSymbols
|
||||
>SYSCALL SListGetData
|
||||
bcs CSH.GetVar.RTS
|
||||
|
||||
CSH.PushValueOnStack
|
||||
ldx ZPVarType
|
||||
beq .1
|
||||
|
||||
cpx ZPVarData
|
||||
bne .99
|
||||
|
||||
.1 ldx ZPVarData
|
||||
ldy CSH.TSIZE,x
|
||||
|
||||
.2 lda ZPVarData,y
|
||||
@ -828,7 +837,6 @@ CSH.PushValueOnStack
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.99 lda #CSH.E.TMISMATCH
|
||||
sec
|
||||
.9 rts
|
||||
@ -836,6 +844,8 @@ CSH.PushValueOnStack
|
||||
CSH.SetVarValue cmp ZPVarType
|
||||
bne .9
|
||||
|
||||
sta ZPVarData
|
||||
|
||||
tax
|
||||
ldy CSH.TSIZE,x Byte count to transfer
|
||||
|
||||
@ -847,7 +857,15 @@ CSH.SetVarValue cmp ZPVarType
|
||||
dey
|
||||
bne .1
|
||||
|
||||
clc
|
||||
>PUSHBI 0
|
||||
ldx ZPVarType
|
||||
lda CSH.TSIZE,x
|
||||
inc +1 including TYPE
|
||||
>PUSHA
|
||||
>PUSHWI ZPVarData
|
||||
>PUSHW ZPVarID
|
||||
>LDA.G CSH.hSymbols
|
||||
>SYSCALL SListSetData
|
||||
rts
|
||||
|
||||
.9 lda #CSH.E.TMISMATCH
|
||||
|
Loading…
Reference in New Issue
Block a user