make printf* work again
authorjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 13 Mar 2001 20:23:17 +0000 (20:23 +0000)
committerjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 13 Mar 2001 20:23:17 +0000 (20:23 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@681 4a8a32a2-be11-0410-ad9d-d568d2c75423

device/include/stdarg.h
device/include/stdio.h
device/lib/printf_large.c
device/lib/vprintf.c

index 85a7f5d9676d327cb2bdd788a1f22976ea5861ac..49e3a7221c0008edd8ad931df44465db9ab176d8 100644 (file)
@@ -1,20 +1,30 @@
-/*-------------------------------------------------------------------------*/
-/* stdarg.h - ANSI macros for variable parameter list                     */
-/*-------------------------------------------------------------------------*/
+/*-----------------------------------------------------------------------------------*/
+/* stdarg.h - ANSI macros for variable parameter list                               */
+/*-----------------------------------------------------------------------------------*/
 
-#ifndef _STDARG_H
-#define _STDARG_H 1
+#ifndef __SDC51_STDARG_H
+#define __SDC51_STDARG_H 1
+
+#if defined(__ds390)
+
+typedef        unsigned char * va_list ;
+#define va_arg(marker,type) *((type *)(marker -= sizeof(type)))
+#define        va_start(marker,first) { marker = &first; }
 
-#if defined(SDCC_MODEL_LARGE) || defined(SDCC_MODEL_FLAT24)
-typedef        unsigned char _xdata * va_list ;
 #elif defined(SDCC_USE_XSTACK)
+
 typedef        unsigned char _pdata * va_list ;
+#define va_arg(marker,type) *((type _data *)(marker -= sizeof(type)))
+#define        va_start(marker,first) { marker = (va_list)((char _pdata *)&first); }
+
 #else
-typedef        unsigned char _data *  va_list ;
+
+typedef        unsigned char _data * va_list ;
+#define va_arg(marker,type) *((type _data * )(marker -= sizeof(type)))
+#define        va_start(marker,first) { marker = (va_list) ((char _data * )&first); }
+
 #endif
 
-#define va_arg(valist,type)   (*((type *)(valist -= sizeof(type))))
-#define        va_start(valist,first)  (valist = (va_list)&(first))
-#define va_end(valist) (valist = (va_list) 0)
+#define va_end(marker) marker = (va_list) 0;
 
 #endif
index 95ff2f0968a77787a965ffb224be9505169d16f3..4f145a912c68a36ae13826312cac6067fd4f4fc1 100644 (file)
 
 #include <stdarg.h>
 
-#ifdef SDCC_MODEL_FLAT24
-#ifndef TINIBIOS_H
+#ifdef __ds390
 #include <tinibios.h>
-#endif TINIBIOS_H
-#endif
-
-#if defined(SDCC_MODEL_LARGE) || defined(SDCC_MODEL_FLAT24)
-#define XSPEC xdata
-#else
-#define XSPEC
 #endif
 
 extern printf_small (char *,...) reentrant;
-extern printf (XSPEC const char *,...) reentrant;
+extern printf (const char *,...) reentrant;
 extern int vprintf (const char *, va_list);
-extern int sprintf (const char *, XSPEC const char *, ...) reentrant;
+extern int sprintf (const char *, const char *, ...) reentrant;
 extern int vsprintf (const char *, const char *, va_list);
 extern int puts(const char *);
 extern char *gets(char *);
 extern char getchar(void);
 extern void putchar(char);
-#endif
+
+#endif __SDC51_STDIO_H
 
 
 
index 6697ca96e0cc6b51b8139fdf6de1be708af5b023..ce799a3397e8b9218dce2e9537777846c32cbf68 100644 (file)
 #include <stdarg.h>
 #include <stdio.h>
 
-#if defined(SDCC_MODEL_LARGE) || defined(SDCC_MODEL_FLAT24)
-#define XSPEC xdata
-#else
-#define XSPEC
-#endif
-
-int printf (XSPEC const char *format, ...) reentrant
+int printf (const char *format, ...) reentrant
 {
   va_list arg;
   int done;
@@ -43,7 +37,7 @@ int printf (XSPEC const char *format, ...) reentrant
   return done;
 }
 
-int sprintf (const char *buf, XSPEC const char *format, ...) reentrant
+int sprintf (const char *buf, const char *format, ...) reentrant
 {
   va_list arg;
   int done;
index 1409507ed9b9026561691c2f1089dca4652a2163..175c64bcf9aa37237ed04642af214d234b076337 100644 (file)
@@ -22,7 +22,9 @@
    You are forbidden to forbid anyone else to use, share and improve
    what you give them.   Help stamp out software-hoarding!  
 -------------------------------------------------------------------------*/
+#ifdef __ds390
 #define USE_FLOATS 1
+#endif
 
 #include <stdarg.h>
 #include <string.h>
@@ -157,12 +159,12 @@ static void output_float (float f, unsigned char reqWidth,
                          signed char reqDecimals,
                          bit left, bit zero, bit sign, bit space)
 {
-  XSPEC char negative=0;
-  XSPEC long integerPart;
-  XSPEC float decimalPart;
-  XSPEC char fpBuffer[128];
-  XSPEC char fpBI=0, fpBD;
-  XSPEC unsigned char minWidth, i;
+  char negative=0;
+  long integerPart;
+  float decimalPart;
+  char fpBuffer[128];
+  char fpBI=0, fpBD;
+  unsigned char minWidth, i;
 
   // save the sign
   if (f<0) {
@@ -259,10 +261,10 @@ int vsprintf (const char *buf, const char *format, va_list ap)
   bit            long_argument;
   bit            float_argument;
 
-  XSPEC unsigned char  width;
-  XSPEC signed char decimals;
-  XSPEC unsigned char  length;
-  XSPEC char           c;
+  unsigned char  width;
+  signed char decimals;
+  unsigned char  length;
+  char           c;
 
   // reset output chars
   charsOutputted=0;