# pragma l /* list off */
# pragma p /* non portable */

/**************************************************************************

                     H.STDLIB - Standard library functions
                     -------------------------------------

Author : David Allison
Date   : 10 July 1987
Issue  : 1.0

(C) 1987 Beebug Limited

**************************************************************************/

/* standard operating system functions */

# define RAND_MAX 32767

# redef size_t int

extern int rand (void) ;
extern void srand (unsigned seed) ;
extern double atof (char *str) ;
extern int atoi (char *str) ;
extern long atol (char *str) ;
extern double strtod (char *str, char **endptr) ;
extern long strtol (char *str, char **endptr, int base);
extern char *calloc (size_t num, size_t size) ;
extern void free (char *ptr) ;
extern char *malloc (size_t size) ;
extern char *realloc (char *ptr, size_t size) ;
extern void abort (void) ;
extern int atexit (int (*func)(void)) ;
extern void exit (int status) ;

# define system(s) oscli (s)
# define abs(j) (j) < 0 ? -(j) : (j)
# define labs(j) abs(j)

/* Acorn OS functions */

extern void vdu () ;          /* variable argument list */
extern long osbyte (short A,short X,short Y) ;
extern long osword (short A,char *para_block) ;
extern void oscli (char *str) ;
extern void mode (short num) ;
extern long time (void) ;
extern void settime (long t) ;
extern void sound (int,int,int,int) ;
extern void envelope (short,short,short,short,short,short,short,short,short,short,short,short,short,short) ;
extern void plot (short k,int x, int y) ;
extern int point (int x, int y) ;

/* BASIC-like macro definitions */

# define draw(x,y) plot (5,x,y)
# define move(x,y) plot (4,x,y)
# define gcol(a,b) vdu (18,a,b)
# define colour(x) vdu (17,x)
# define cls() vdu (12)
# define clg() vdu (16)
# define page() (osbyte (131,0,0) &0xffffU )
# define himem() (osbyte (132,0,0) &0xffffU )
# define inkey(k) (osbyte (129,k,(k)>>8) &0xffffU)
# define adval(c) (osbyte (128,c,0) &0xffffU)
# define tab(x,y) vdu(31,x,y)
