Login

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

#ifndef included_i8tof24
#define included_i8tof24

i8tof24:
;Inputs:
;   A holds a 8-bit signed integer, (-128 to 127)
;Outputs:
;   Converts to an f24 float in AHL
;   returns z flag set if zero, nz otherwise :)

  or a
  jp p,+_
  neg
  ld b,$BF+8    ;Initial exponent and sign
  .db $11       ;start of instruction `ld de,**`
_:
#ifndef included_u8tof24
#define included_u8tof24
u8tof24:
#else
.echo "Tip: i8tof24 already has a subroutine for u8tof24. Save space by including i8tof24.z80 first"
#endif
  ld b,$3F+8    ;Initial exponent and sign

;Check if A is 0, if so return AHL == 0x00yyyy
  or a
  ret z


; shift A left until there is an overflow (the implicit bit)
; meanwhile, decrement B, the exponent each iteration
  dec b
  add a,a
  jr nc,$-2
  ld h,a
  ld l,0
  ld a,b
  ret
#endif