* as/z80/z80mch.c: fixed bug #1704376: missing as-z80 errors
[fw/sdcc] / device / lib / _fs2schar.c
index e027d08d5046745a5da0acc5b829ed418c68cf0a..b9b6ac6d4f6820b70eca2f7ab09b96475cdf3ada 100644 (file)
 #ifdef FLOAT_ASM_MCS51
 
 // char __fs2schar (float x)
-static void dummy(void) _naked
+static void dummy(void) __naked
 {
-       _asm
+       __asm
        .globl  ___fs2schar
 ___fs2schar:
        lcall   ___fs2slong
-       push acc
-       jnz fs2schar_not_zero
-       mov a, dpl
-       jnz fs2schar_not_zero
-       mov a, dph
-       jnz fs2schar_not_zero
-       mov a, b
-       jnz fs2schar_not_zero
-       pop acc
+       jnz     fs2schar_not_zero
+       mov     a, dpl
+       orl     a, dph
+       orl     a, b
+       jnz     fs2schar_clr_a
        ret
+fs2schar_clr_a:
+       clr a
 fs2schar_not_zero:
-    pop acc
        jnb     sign_a, fs2schar_pos
 fs2schar_neg:
        cpl     a
@@ -71,22 +68,20 @@ fs2schar_pos:
 fs2schar_maxval_pos:
        mov     dpl, #0x7F
        ret
-       _endasm;
+       __endasm;
 }
 
-
 #else
 
-
 /* convert float to signed char */
-signed char __fs2schar (float f) {
+signed char __fs2schar (float f)
+{
   signed long sl=__fs2slong(f);
   if (sl>=CHAR_MAX)
     return CHAR_MAX;
-  if (sl<=CHAR_MIN) 
+  if (sl<=CHAR_MIN)
     return -CHAR_MIN;
   return sl;
 }
 
 #endif
-