Re: Fw: A86:op1, reg -> fp


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

Re: Fw: A86:op1, reg -> fp




Thanx. That helps a lot


> Here is the original info from Pat at TI in response to a question by Steven
> Hicks
> 
> -----Original Message-----
> From: Pat Milheron <pmilheron@ti.com>
> To: assembly-86@lists.ticalc.org <assembly-86@lists.ticalc.org>
> Date: Thursday, October 30, 1997 4:06 PM
> Subject: Re: A86:op1, reg -> fp
> 
> 
> Steve - Here are a few system routines that might help :
> 
> ;-----------------------------------------------------------------------
> ;   SetXXOP1: Convert two digit hex number to floating point in OP1 |
> ;             The value must be 0 - 100 decimal, else an error is given
> ;                                                                      |
> ; INPUT:        |
> ; A - hex number, 0-63h or 0-100 decimal
> ;               (HL) - Address to start writing number        |
> ;        OUTPUT:        |
> ;               (HL) to (HL+9) - floating point positive number        |
> ;   USED:        |
> ;        |
> ;-----------------------------------------------------------------------
> _SetXXOP1   equ   4613h
> 
>    ex :    ld a,35d
>            call _setxxop1   ; op1 = floating point 35
> 
> 
> ;-----------------------------------------------------------------------
> ;   SetXXXXOP2: Convert 4 digit hex number to floating point        |
> ;                  |
> ;         INPUT:        |
> ;               HL - 4 digit hex number (0-FFFF)        |
> ;         OUTPUT:        |
> ;               OP2 - floating pt #, max=65535        |
> ;        |
> ;-----------------------------------------------------------------------
> _SetXXXXOP2   equ  461Bh
> 
>     ex :    ld    hl,1256d
>             call  _setxxxxop2       ; op2 = floating point 1,256
> 
> 
> ;-----------------------------------------------------------------------
> ;   SetXXOP2: Convert two digit hex number to floating point in OP2
> ;             The value must be 0 - 100 decimal, else an error is given
> ;
> |
> ; INPUT:        |
> ;            A - hex number, 0-63h                                  |
> ;            (HL) - Address to start writing number        |
> ;        OUTPUT:        |
> ;            (HL) to (HL+9) - floating point positive number        |
> ;   USED:        |
> ;        |
> ;-----------------------------------------------------------------------
> _SetXXOP2     equ  4617h
> 
>    ex:      ld    a,25h        ; 25h = 37 decimal
>             call  _setxxop2    ; op2 = floating point 37
> 
> 
> 
> Later,
> Pat
> 
> ------------------
> Original text
> 
> From: Steve86Asm@aol.com, on 10/30/97 2:28 PM:
> In a message dated 97-10-30 11:01:54 EST, you write:
> 
> >
> >  > however the caps goes.  Converting a register to an OP is much more
> >  > difficult, and can be accomplished with a djnz loop, where you take the
> #
> > in
> >  > b and increment OP1 that many times.
> >
> >  there HAS to be an easier way than that!
> >
> >
> 
> I haven't found an easier way.  If anyone knows a call (or can think of a
> good way of converting to BCD) that converts register->OP, please post it...
> 
> I suppose you could do something with unpackhl, like maybe load the first
> digit into the 5th digit (woul require some bit shifting...), and so on, or
> something, like this:
> 
> f.edcbaE+05
> 
> into OP1, and maybe it would accept that and convert it to
> 
> fedcba
> 
> where a,b,c,d,e,f are the A's from unpack hl, in the order you get them in.
> 
> That probably makes NO sense!
> 
> ~Steve
> 
> 
> 
> 


References: