mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-28 10:52:33 +00:00
189 lines
3.1 KiB
Plaintext
189 lines
3.1 KiB
Plaintext
|
NEW
|
|||
|
AUTO 3,1
|
|||
|
*--------------------------------------
|
|||
|
STK.PopCtx jsr STK.Pull
|
|||
|
|
|||
|
STK.PopCtxA and #$3F
|
|||
|
cmp #C.IF
|
|||
|
beq .8 IF : Nothing
|
|||
|
|
|||
|
ldx #2
|
|||
|
cmp #C.WHILE WHILE : One Ptr = 2 bytes
|
|||
|
beq STK.PopX
|
|||
|
|
|||
|
cmp #C.SWITCH SWITCH : hValue
|
|||
|
beq .2
|
|||
|
|
|||
|
ldx #1
|
|||
|
cmp #C.CASE CASE : C.CASE + hValue
|
|||
|
beq .1
|
|||
|
|
|||
|
cmp #C.FOR
|
|||
|
beq .3
|
|||
|
|
|||
|
cmp #C.DEFAULT DEFAULT : C.DEFAULT + hValue
|
|||
|
bne .9
|
|||
|
|
|||
|
.1 jsr STK.PopX
|
|||
|
|
|||
|
.2 jsr STK.PullFree
|
|||
|
|
|||
|
.8 clc
|
|||
|
rts
|
|||
|
|
|||
|
.3 jsr STK.Pull Get FOR sub cmd
|
|||
|
beq .4 FOR List
|
|||
|
|
|||
|
jsr STK.PullFree hVARNAME
|
|||
|
|
|||
|
jsr STK.PullFClose hFILE/hPIPE
|
|||
|
|
|||
|
ldx #2 CmdPtr
|
|||
|
jmp STK.PopX
|
|||
|
|
|||
|
.4 jsr STK.PullFree hVARNAME
|
|||
|
|
|||
|
jsr STK.PullFClose hFILE/hPIPE
|
|||
|
|
|||
|
ldx #4 ListPtr,CmdPtr
|
|||
|
jmp STK.PopX
|
|||
|
|
|||
|
.9 lda #E.STACKERROR
|
|||
|
sec
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
STK.PopX lda (pData)
|
|||
|
.1 dec
|
|||
|
dex
|
|||
|
bne .1
|
|||
|
|
|||
|
sta (pData)
|
|||
|
|
|||
|
clc
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
STK.Check sec
|
|||
|
adc (pData) StackPtr
|
|||
|
cmp #CORE.STACK.MAX
|
|||
|
bcc .8
|
|||
|
|
|||
|
lda #E.STKOVERFLOW
|
|||
|
* sec
|
|||
|
.8 rts
|
|||
|
*--------------------------------------
|
|||
|
STK.PushYAX phx
|
|||
|
jsr STK.PushYA
|
|||
|
bcc STK.Push.1
|
|||
|
|
|||
|
plx
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
STK.PushInputBufPtr
|
|||
|
>LDYA ZPInputBufPtr
|
|||
|
*--------------------------------------
|
|||
|
STK.PushYA phy
|
|||
|
jsr STK.Push
|
|||
|
bcc STK.Push.1
|
|||
|
|
|||
|
plx
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
CORE.PushVarName
|
|||
|
>LDYA ZPVarNamePtr
|
|||
|
>SYSCALL StrDup
|
|||
|
bcs STK.Push.RTS
|
|||
|
|
|||
|
txa
|
|||
|
*--------------------------------------
|
|||
|
STK.Push pha
|
|||
|
|
|||
|
STK.Push.1 lda (pData) StackPtr
|
|||
|
inc
|
|||
|
cmp #CORE.STACK.MAX
|
|||
|
bcs .9
|
|||
|
|
|||
|
sta (pData) StackPtr
|
|||
|
tay
|
|||
|
pla
|
|||
|
sta (pData),y
|
|||
|
* clc
|
|||
|
rts
|
|||
|
|
|||
|
.9 pla
|
|||
|
lda #E.STKOVERFLOW
|
|||
|
* sec
|
|||
|
STK.Push.RTS
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
STK.GetCtx jsr STK.Get
|
|||
|
tax
|
|||
|
bcs .1 no context...
|
|||
|
|
|||
|
cmp #$C0+C.. in a call...
|
|||
|
beq .1 CS
|
|||
|
|
|||
|
cmp #$C0+C.CALL
|
|||
|
beq .1 CS
|
|||
|
|
|||
|
cmp #$C0+C.CLEXEC
|
|||
|
beq .1 CS
|
|||
|
|
|||
|
and #$80 get current..
|
|||
|
lsr becomes parent
|
|||
|
bra .8
|
|||
|
|
|||
|
.1 lda #$40 ...set Parent = true
|
|||
|
|
|||
|
.8 sta CORE.TestResult
|
|||
|
|
|||
|
txa
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
STK.PullInputBufPtr
|
|||
|
jsr STK.Pull
|
|||
|
bcs .9
|
|||
|
|
|||
|
sta ZPInputBufPtr
|
|||
|
jsr STK.Pull
|
|||
|
bcs .9
|
|||
|
|
|||
|
sta ZPInputBufPtr+1
|
|||
|
|
|||
|
.9 rts
|
|||
|
*--------------------------------------
|
|||
|
STK.PullFClose jsr STK.Pull
|
|||
|
>SYSCALL FClose
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
STK.PullFree jsr STK.Pull
|
|||
|
>SYSCALL FreeMem
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
STK.Pull jsr STK.Get
|
|||
|
bcs .9
|
|||
|
|
|||
|
dey
|
|||
|
pha
|
|||
|
tya
|
|||
|
sta (pData) StackPtr
|
|||
|
pla
|
|||
|
|
|||
|
.9 rts
|
|||
|
*--------------------------------------
|
|||
|
STK.Get lda (pData) StackPtr
|
|||
|
beq .9
|
|||
|
|
|||
|
tay
|
|||
|
lda (pData),y
|
|||
|
clc
|
|||
|
rts
|
|||
|
|
|||
|
.9 lda #E.STACKERROR
|
|||
|
sec
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
MAN
|
|||
|
SAVE usr/src/bin/sh.s.stk
|
|||
|
LOAD usr/src/bin/sh.s
|
|||
|
ASM
|