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