Re: A86: _exec_basic


[Prev][Next][Index][Thread]

Re: A86: _exec_basic




Well the Stop command is what we've had trouble with, so I didn't test any
other cases. Saving the stack seemed reasonable. That's what I did
originally with $4c47. However, I haven't run into any problems yet doing
it the other way... Also, I'm not sure, but I think that the stop command
changes the values of the OP & FP stack, and if you change the base value,
the actual _FP value may be lower than _FPBASE.

  Kirk

On Thu, 2 Mar 2000 rabidcow@juno.com wrote:

> 
> _PARSEINP restores the proper rom page unless the stop instruction is
> executed. (i think)
> it copies three values off the stack onto the op stack (__bank_ret, rom
> page, & page $d ret addr)
> if it doesn't recieve a stop instruction, it will copy these values back
> and return when it reaches the end of the command stream (should be
> either on $6f (newline) or $00 (_P_CURPC > _P_ENDPC))
> if it does recieve a stop instruction, the op stack is trashed and these
> values are lost, then it returns to the next location on the stack which
> in this case is your program.
> 
> the only basic program the rom executes with this normally is the #
> program.
> 
> you should probly still save the ops and fps pointers before calling
> this, otherwise you'll run into problems if your asm prog is run from
> within something else:  (maybe something from like #...)
>   ld hl,(_OPBASE)  ; remember to restore the old _OPBASE and _FPBASE!
>   push hl
>   ld hl,(_FPBASE)
>   push hl
>   ld hl,(_OPS)
>   ld (_OPBASE),hl
>   ld hl,(_FPS)
>   ld (_FPBASE),hl
> ;; do your thing
>   pop hl
>   ld (_FPBASE),hl
>   pop hl
>   ld (_OPBASE),hl
> 
> -josh
> 
> On Thu, 2 Mar 2000 08:14:27 -0700 (MST) Kirk Meyer <kmeyer@Mines.EDU>
> writes:
> > 
> > It seems it should work, but it doesn't. _parseinp seems to mess 
> > with the
> > stack so that it bypasses the usual return. The syntax error is 
> > caused by
> > the PC for entry being changed by calling the _parseinp function. 
> > Clem's
> > post to the list may work to fix this (haven't tried it yet), but 
> > _jforce
> > isn't a bad aidea, for shells at least...
> > 
> >   Kirk
> > 
> > On Wed, 1 Mar 2000 rabidcow@juno.com wrote:
> > 
> > > 
> > > _PARSEINP uses __bank_call, which should return the proper rom 
> > page,
> > > right?
> > > _PARSEOFF does the same thing as _PARSEINP, except it doesn't 
> > reset some
> > > flags first.  does this one work?
> > > what causes the syntax error?
> > > 
> > > -josh
> > > 
> 
> 
> ________________________________________________________________
> YOU'RE PAYING TOO MUCH FOR THE INTERNET!
> Juno now offers FREE Internet Access!
> Try it today - there's no risk!  For your FREE software, visit:
> http://dl.www.juno.com/get/tagj.
> 
> 



References: