* device/lib/z80/mul.s (__mulsuchar_rrx_s, __muluschar_rrx_s),
[fw/sdcc] / device / lib / printfl.c
index b863d7a5f5257a5ac0af6fc5da1310c8c21fd330..a5d2211176f6cd9a12256f22fd874ab66e8fa7a4 100644 (file)
 #include <8051.h>
 #endif
 
-static data char radix ;
-static bit  long_flag = 0;
-static bit  string_flag =0;
-static bit  char_flag = 0;
-static char * data str ;
-static data long val;
+static __data char radix ;
+static __bit  long_flag = 0;
+static __bit  string_flag =0;
+static __bit  char_flag = 0;
+static char * __data str ;
+static __data long val;
 
 /* This great loop fails with the ds390 port (2003-01-13).
 
@@ -67,8 +67,8 @@ static data long val;
 */
 
 #if NICE_LIFO_IMPLEMENTATION_BUT_NOT_PORTABLE
-static data volatile char ch;
-static bit sign;
+static __data volatile char ch;
+static __bit sign;
 
 static void pval(void)
 {
@@ -96,13 +96,13 @@ static void pval(void)
 #  if 1
                 if(radix != 16)  ch = (lval % radix) + '0';
                 else ch = "0123456789ABCDEF"[(unsigned char)lval & 0x0f];
-                _asm push _ch _endasm;
+                __asm push _ch __endasm;
                 lval /= radix;
 #  else
                // This only looks more efficient, but isn't. see the .map
                 ch = (lval % radix) + '0';
                 if (ch>'9') ch+=7;
-                _asm push _ch _endasm;
+                __asm push _ch __endasm;
                 lval /= radix;
 #  endif
         }
@@ -110,17 +110,17 @@ static void pval(void)
 
         if (sign) {
                 ch = '-';
-                _asm push _ch _endasm;
+                __asm push _ch __endasm;
         }
 
         while (sp != SP) {
-                _asm pop _ch _endasm;
+                __asm pop _ch __endasm;
                 putchar(ch);
         }
 }
 #endif
 
-void printf_small (char * fmt, ... ) reentrant
+void printf_small (char * fmt, ... ) __reentrant
 {
     va_list ap ;
 
@@ -177,12 +177,16 @@ void printf_small (char * fmt, ... ) reentrant
 #else
             if (radix)
             {
-              static char data buffer[12], c;
+              static char __idata buffer[12]; /* 37777777777(oct) */
+              char __idata * stri;
 
               _ltoa (val, buffer, radix);
-              str = buffer;
-              while ((c = *str++) != '\0')
-                putchar (c);
+              stri = buffer;
+              while (*stri)
+                {
+                  putchar (*stri);
+                  stri++;
+                }
             }
 #endif
             else