Re: A86: Re: sqrtKEY
[Prev][Next][Index][Thread]
Re: A86: Re: sqrtKEY
It is definitely called repeatedly. That is my primary problem. I
can't do much testing on it becuase I can't inject any keycodes to see
where it's getting trashed, because most of the time it is receiving
null keypresses.
Chris Phelps wrote:
>
> David Phillips wrote:
>
> > It is called by _get_key, so, yes, it is always called. I believe that A
> > contains the key pressed, so if it is zero, you want to immediately return.
> >
>
> Im not so sure that this is so. Im pretty sure that it is only called if a key
> is pressed. Maybe I'll do some disassembly tonight...
>
> >
> > > I'd wanted to add memory lock abilities to Lockdown, a password protect
> > > program. After I looked at the source to Dux's Yugi2 I got the general
> > > idea of how to do it (I modified it a bit). But once installed and
> > > active, the sqrtKEY program messes up my text input routine for password
> > > entry. The calculator recieves keycodes, because EXIT and ENTER work.
> > > If I press the (2ND) key and then a key, it registers as having been
> > > pressed. But not otherwise. SqrtKEY is messing up my _getkeys!
> >
> > I can think of two things offhand that would cause that. First, is that
> > you're probably trashing something important in your [sqrt]KEY program that
> > you shouldn't trash. Second, it is re-entrant when it shouldn't be (i.e.
> > you're calling _get_key inside, and it's calling itself, etc.). I had that
> > problem at first when playing with [sqrt]PARSE (think that is it...whatever
> > one lets you make 1 + 1 = 3 :)
>
> I believe that your problem is that all [sqrt]Key programs are copied into
> _asm_exec_ram and _exec_asm'd.
> This means that your program will be copied back to _asm_exec_ram when the
> [sqrt]Key is finished, and the pc will be restored, but any data that you may
> have been saving in your program may be destroyed. I dont know where exactly
> your code is going wrong, but make sure that you writeback any data that needs
> to be used after a key is pressed, or put it out in the middle of _asm_exec_ram
> so that it wont get overwritten when your program is loaded back into
> _asm_exec_ram.
>
> Later,
> Chicane
References: