[A83] Re: How does _ckint works exactly?
[Prev][Next][Index][Thread]
[A83] Re: How does _ckint works exactly?
You might save yourself some time if you download the 83+ sdk pdf
documentation for romcalls. They almost always have the same names between
83 and 83+. BTW you might want to look into the romcall ckOdd, it might be
more efficient to check if it is an int and odd (two romcalls) than to do
the multiple romcalls you have below.
Brandon Sterner
www.detacheds.com
----- Original Message -----
From: "Jelle Fresen" <jellefresen_ti83@hotmail.com>
To: <assembly-83@lists.ticalc.org>
Sent: Saturday, February 23, 2002 8:52 AM
Subject: [A83] Re: How does _ckint works exactly?
>
> Hehe, I now know how it works: _ckint checks only the byte you say it has
to
> check, so when you do "ld hl,op1" it only checks the first byte of op1.
But
> _ckint must check the exponent, which is the second byte from op1 (so I
used
> "ld hl,op1exp" after editing my ti83asm.inc)
>
> W00t! next time I'll search a bit better before annoying you ;-)
>
>
> >From: "Jelle Fresen" <jellefresen_ti83@hotmail.com>
> >Reply-To: assembly-83@lists.ticalc.org
> >To: assembly-83@lists.ticalc.org
> >Subject: [A83] How does _ckint works exactly?
> >Date: Sat, 23 Feb 2002 14:33:53 +0100
> >
> >
> >How does _ckint works exactly, what is affected and which flags are set
> >how?
> >According to 83rom.txt the Zero-flag is set if the number is integer and
> >reset if the number is not integer. I wrote this:
> >
> >========================================================================
> >
> >.NOLIST
> >#define end .end
> >#define END .end
> >#define equ .equ
> >#define EQU .equ
> >#include "squish.inc"
> >#include "ti83asm.inc"
> >#include "tokens.inc"
> >.LIST
> >.org $9327
> >call _runindicoff ; blablabla....
> >call _clrlcdfull ;
> >ld de,$821C ; ================
> >ld hl,prompt ;
> >ld bc,16 ; Get users input
> >ldir ;
> >ld a,1 ; and store in op1
> >ld (asm_ind_call),a ;
> >call pgmio_exec ; ================
> >call _clrlcdfull ;
> >call _homeup ;
> >ld hl,op1 ; (so _ckint knows which number to check)
> >call _trunc ; round the input
> >call _op2set2 ;
> >call _fpdiv ; divide op1 by 2
> >call _ckint ; check if op1 is integer (then the original
input
> >is even)
> >jp z,even ; jump to even when op1 is integer (83rom.txt:
> >Zero-flag = 0 if not integer ; 1 if integer)
> >odd: ; =============
> >call _clrlcdfull ;
> >call _homeup ; when original
> >ld hl,numberodd ; input is odd
> >call _puts ;
> >jp endprog ; =============
> >
> >even: ; =============
> >call _clrlcdfull ;
> >call _homeup ; when original
> >ld hl,numbereven ; input is even
> >call _puts ;
> >jp endprog ; =============
> >
> >endprog: ; =============
> >call _newline ; end program
> >call _clrtxtshd ;
> >ret ; =============
> >
> >prompt:
> >.db "Number: ",0
> >numbereven:
> >.db "It is even",0
> >numberodd:
> >.db "It is odd",0
> >
> >.end
> >end
> >
> >========================================================================
> >
> >But it never jumps to "even", whatever number I fill in.
> >Is it because of a wrong use of the Zero-flag? (with the condition "z"
you
> >check the zero-flag, huh?)
> >
> >I hope someone can help me and that I provided enough info.
> >
> >------------
> >Jelle Fresen
> >------------
> >
> >_________________________________________________________________
> >Meld je aan bij de grootste e-mailservice wereldwijd met MSN Hotmail:
> >http://www.hotmail.com/nl
> >
> >
>
>
>
>
> _________________________________________________________________
> Chat on line met vrienden en probeer MSN Messenger uit:
> http://messenger.msn.nl
>
>
>
References: