[A86] Re: _getky flaw and weird 6-line-bug


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

[A86] Re: _getky flaw and weird 6-line-bug




K_ENTER -- _getcsc/_getky/_get_key -- gets the keycode and continues

kEnter -- _getkey -- waits in this routine until a key is pressed


The on (break) error is because when on is pressed it sets the
on pressed flag in the interuppts (TI's IM1). You can get around
this if you reset the flag like so:

 res 4,(iy+9) ;reset on press


The line problem sounds like it might be from some open
'hidden' menus that are still 'there' but not showing.

Just do a:

 call _flushallmenus

at the start of the prog somewhere.

(Or you could press exit twice after exiting the program).


Ricky Cobb
http://tip.ti-programmers.com/
arcadesdude@intercom.net
[IM]
icq 41440378
msn arcadesdude
y!  arcadesdude
aim arcadesdude

-----------------------------------------------------------------------------
6/4/02 11:15:26 AM, Burkart Lingner <Burkart.Lingner@Student.Uni-Magdeburg.DE> 
wrote:

>
>Hey, everyone!
>
>I recently purchased a TI-86 and started programming it (I did some 82 
assembly 
>programming before). I want to port some 82 programs and there's this routine 
>call GET_KEY, which returns immediately with either a scancode or 0 (in case 
no 
>key was pressed) in a. call _get_key on the 86 however as all tutorials say 
>waits until a key is pressed (like call CR_KHAND on the 82 again). I don't 
want 
>my program to wait so I tried to find a GET_KEY synonym, which I thought I 
>found in call _getky. Sadly the tutorials I read either use _get_key only or 
>tell few more than just about _getky's existence. Well, so I just wrote this 
>little test program, whose code you may find at the end of this mail. It's 
>pretty simple and in a way works, but I discovered two really weird bugs 
(which 
>most likely are results of me doing something wrong instead of being real 
bugs, 
>anyway :-).
>
>If I transfer the program to my TI-86 and then run it via "Asm(test", it works 
>fine, except that it uses only the upper 6 lines - and even worse, after I 
quit 
>it, TIOS as well doesn't use the last 2 lines. If I then turn off my calc and 
>just on again, both TIOS and my program use all 8 lines again. I tried it a 
lot 
>of times, it's reproduceable. Also if I delete the program, then send and run 
>it again, it works with all 8 lines without me having to do the off-on-
>procedure again.
>
>The second thing that bothers me is, that if I run the program and press "ON" 
>nothing happens. Actually that's correct but if I then press "ENTER" to exit 
>the program, it says, that some error (06: BREAK) occured. This doesn't seem 
to 
>do any harm though, but I think it's quite a flaw and I wouldn't want to put 
>out a program which gives an error message for no specific reason, when you 
>exit it. Oh, and the error message doesn't show up, if "ON" doesn't get 
pressed 
>but in case it does, it shows up after the program has been terminated 
>by "ENTER", not immediately after "ON" has been pressed.
>
>Does anyone know how to get around that 6-line-only-bug and/or know how not to 
>get this error message due to "ON" pressed? Perhaps I'm just using a bad 
keypad 
>handler, then which one is good (and still doesn't wait in case no key has 
been 
>pressed)?
>
>And as this might be important, my ROM version is 1.6.
>
>Here goes the code (I know, some unnecessary stuff in it but you never 
know...):
>
>#include "ti86asm.inc"
>.org _asm_exec_ram
>        nop
>        jp ProgStart
>        .dw 0
>        .dw ShellTitle
>ShellTitle:
>        .db "New Assembly Program",0
>ProgStart:
>        call    _clrLCD
>        call    _homeup
>        ld      b, 0
>loop:
>        inc     b
>        ld      a, b
>        call    _putc
>        call    _getky
>        cp      K_ENTER
>        jr      nz, loop
>        ret
>.end
>
>Bye, Burkart
>
>






Follow-Ups: References: