home *** CD-ROM | disk | FTP | other *** search
- /*
- * lib.c
- * Part of the !Virtual distribution
- * (c) bdb/nas/fo, 1992-3
- */
-
- #include "swis.h"
- #include "swiv.h"
-
- #include "lib.h"
-
- void strcpy(char *p,char *q)
- {
- while ((*p++=*q++)!=0)
- ;
- }
-
- void memcpy(char *p, char *q, int n)
- {
- while (n-->0)
- *p++=*q++;
- }
-
- int strlen( char *p )
- {
- int n=0;
- while (*p++)
- n++;
- return n;
- }
-
- int xtoi( char *p )
- {
- int v=0;
- if (swix(OS_ReadUnsigned,IN(R0|R1)|OUT(R2),16,p,&v))
- return 0;
- return v;
- }
-
- int sizetoi( char *p )
- {
- int v=0;
- if (swix(OS_ReadUnsigned,IN(R0|R1)|OUT(R1|R2),10,p,&p,&v))
- return 0;
- if (*p=='K' || *p=='k')
- v*=1024;
- if (*p=='M' || *p=='m')
- v*=1024*1024;
- return v;
- }
-
- void *alloc(int size)
- {
- void *addr;
- swi(OS_Module, IN(R0|R3)|OUT(R2), 6, size, &addr);
- return addr;
- }
-
- void free(void *addr)
- {
- if (addr)
- swi(OS_Module, IN(R0|R2), 7, addr);
- }
-
- #ifndef print_f
- #define print_f 0xBe00
- #endif
-
- void printf(char *format,...)
- {
- int *a=(int *)&format+1;
- swi(print_f,IN(R0|R1|R2|R3|R4|R5|R6|R7|R8),format,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);
- }
-
- void _printf(char *format,...)
- {
- int *a=(int *)&format+1;
- swi(print_f,IN(R0|R1|R2|R3|R4|R5|R6|R7|R8),format,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);
- }
-