* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
-long _abl(i) long i;
+long _abl(long i)
{
return( i>=0?i:-i);
}
-double _abr(f) double f;
+double _abr(double f)
{
return( f>=0.0?f: -f);
}
/* $Id$ */
-int _asc(str)
-String *str;
+int _asc(String* str)
{
if(str==0 || str->strval==0)
error(3);
-/* $Id$ */
+#include <stdio.h>
+#include <stdlib.h>
-asrt(b)
+void asrt(int b)
{
if(!b){
printf("ASSERTION ERROR\n");
/* $Id$ */
-String *_chr(i)
-int i;
+String *_chr(int i)
{
String *s;
char buf[2];
/* $Id$ */
-int _cint(f) double f;
+int _cint(double f)
{
int r;
if( f<-32768 || f>32767) error(4);
return(r);
}
-double _trunc(f)
-double f;
+double _trunc(double f)
{
long d;
d=f;
return( f );
}
-double _fcint(f) double f;
+double _fcint(double f)
{
long r;
if(f<0){
f=r;
return(f);
}
-int _fix(f)
-double f;
+int _fix(double f)
{
int r;
0
};
-error(index)
-int index;
+void error(int index)
{
_setline();
if( index<0 || index >40 )
FILE *_chanrd = stdin;
FILE *_chanwr = stdout;
-_setchan(index)
-int index;
+void _setchan(int index)
{
#ifdef DEBUG
printf("setchannel %d\n",index);
_chanrd= _chanwr= _fdtable[index].fd;
}
-_asschn()
+void _asschn(void)
{
#ifdef DEBUG
printf("_asschn %d\n",_chann);
error(2);
}
-_clochn(nr)
-int nr;
+void _clochn(int nr)
{
if( nr<1 || nr >15 || _fdtable[nr].fd==0) error(3);
fclose(_fdtable[nr].fd);
_fdtable[nr].fd=0; _fdtable[nr].fname=0;
}
-_opnchn(reclen,fname,mode)
-String *mode,*fname;
-int reclen;
+void _opnchn(int reclen, String* fname, String* mode)
{
/* channel has been set */
FILE *f;
#endif
}
-_ioeof(channel)
-int channel;
+int _ioeof(int channel)
{
FILE *fd;
char c;
return(0);
}
-_close()
+void _close(void)
{
/* close all open files */
int i;
#include <stdlib.h>
-_hlt(nr)
-int nr;
+void _hlt(int nr)
{
exit(nr);
}
-_goto_err()
+void _goto_err(void)
{
error(3);
}
int _width = 75, _pos=0, _zonewidth=15;
-_out(str)
-char *str;
+void _out(char* str)
{
int pos;
else _fdtable[_chann].pos= pos;
}
-_outnl()
+void _outnl(void)
{
fputc('\n',_chanwr);
if( _chann == -1)
else
_fdtable[_chann].pos=0;
}
-_zone()
+void _zone(void)
{
/* go to next zone */
int pos;
if( _chann== -1) _pos=pos;
else _fdtable[_chann].pos= pos;
}
-_in(buf)
-char *buf;
+void _in(char* buf)
{
register int holder ;
char *c;
_pos=pos;
} else _fdtable[_chann].pos= pos;
}
-_tab(x)
-int x;
+void _tab(int x)
{
if( x> _width) error(3);
if( x< _pos) _outnl();
_spc(x-_pos);
}
-_spc(x)
-int x;
+void _spc(int x)
{
while(x-->0) _out(" ");
}
/* $Id$ */
-String *_mki(i)
-long i;
+String *_mki(long i)
{
char *buffer =" ";
String *s;
* ( (long *)s->strval ) = i ;
return(s);
}
-String *_mkd(d)
-double d;
+String *_mkd(double d)
{
char *buffer =" ";
String *s;
* ( (double *)s->strval ) = d ;
return(s);
}
-long _cvi(s)
-String *s;
+long _cvi(String* s)
{
return *( (long *) s->strval) ;
}
-double _cvd(s)
-String *s;
+double _cvd(String* s)
{
return *( (double *) s->strval) ;
}
/* $Id$ */
-String *_oct(i)
-int i;
+String *_oct(int i)
{
char buffer[30];
sprintf(buffer,"%o",i);
return( (String *)_newstr(buffer));
}
-String *_hex(i)
-int i;
+String *_hex(int i)
{
char buffer[30];
return( (String *)_newstr(buffer));
}
-String *_nstr(f)
- double f;
+String *_nstr(double f)
{
char buffer[80];
/* $Id$ */
-int peek(addr)
-int addr;
+int peek(int addr)
{
/* this can not work properly for machines in which the
POINTERSIZE differs from the integer size
return(i);
}
-_poke(i,j)
-int i,j;
+void _poke(int i, int j)
{
char *p;
p= (char *) i;
/* Here all routine to generate terminal oriented output is located */
-_qstmark()
+void _qstmark(void)
{
/* prompt for terminal input */
putchar('?');
}
-_nl()
+void _nl(void)
{
_asschn();
_outnl();
}
-_prinum(i)
-int i;
+void _prinum(int i)
{
char buffer[40];
else sprintf(buffer,"-%d ",-i);
_out(buffer);
}
-_str(f,buffer)
-double f;
-char *buffer;
+void _str(double f, char* buffer)
{
register char *c = buffer;
int eformat = 0;
if( *c=='.') *c=0;
}
}
-_prfnum(f)
-double f;
+void _prfnum(double f)
{
/* BASIC strings trailing zeroes */
char buffer[100];
strcat(buffer," ");
_out(buffer);
}
-_prstr(str)
-String *str;
+void _prstr(String* str)
{
_asschn();
if( str==0) _out("<null>");
#define EM_WSIZE _EM_WSIZE
#endif
-_randomi()
+void _randomi(void)
{
int i;
_setchan(-1);
_setrand(i);
}
-_setrand(i)
- int i;
+void _setrand(int i)
{
srand(i);
}
-double _rnd(d) double d;
+double _rnd(double d)
{
double f; f= (int) rand();
return(f/
/* $Id$ */
-_readln()
+void _readln(void)
{
register int c;
while( (c=fgetc(_chanrd)) != EOF && c!= '\n')
;
}
-readskip()
+void readskip(void)
{
register int c;
#ifdef DEBUG
while( (c=fgetc(_chanrd)) != EOF && c!= ',' && c!= '\n')
;
}
-_readint(addr)
-int *addr;
+void _readint(int* addr)
{
int i;
char buf[1024];
error(40);
}else { readskip(); *addr=i;}
}
-_readflt(addr)
-double *addr;
+void _readflt(double* addr)
{
double f;
char buf[1024];
error(40);
}else { readskip(); *addr=f;}
}
-_readstr(s)
-String **s;
+void _readstr(String** s)
{
char buffer[1024];
register int kar ;
extern int _seektab[];
-_restore(line)
-int line;
+void _restore(int line)
{
int nr;
char buffer[1024];
while(nr-- >0 ) fgets(buffer,1024,_chanrd);
}
}
-_rdline(s)
-String **s;
+void _rdline(String** s)
{
char buffer[1024];
if( fgets(buffer,1024,_chanrd) == 0)
int _gotable[MAXNESTING];
int topstk=0;
-_gosub(x)
-int x;
+void _gosub(int x)
{
/* administer gosub */
#ifdef DEBUG
_gotable[topstk]= x;
topstk++;
}
-_retstmt()
+int _retstmt(void)
{
/* make sure that a return label index is on top
of the stack */
#include <stdlib.h>
-char * salloc(length)
-unsigned length;
+char * salloc(unsigned length)
{
char *c, *s;
c= malloc(length);
return(c);
}
-sfree(c)
-char *c;
+void sfree(char* c)
{
if( !c ) return;
free(c);
/* $Id$ */
-_sgn(v)
-double v;
+int _sgn(double v)
{
if( v>0) return(1);
if( v<0) return(-1);
return(0);
}
-_forsgn(v)
-double v;
+int _forsgn(double v)
{
if (v >= 0) return 1;
return -1;
extern char *salloc() ;
-_length(str)
-String *str;
+int _length(String* str)
{
okr(str);
return(str->strlength);
}
-String *_newstr(str)
-char *str;
+String *_newstr(char* str)
{
String *s;
okr(str);
strcpy(s->strval,str);
return(s);
}
-_incstr(src)
-String *src;
+void _incstr(String* src)
{
/* one more variable uses the string */
ok(src);
src->strcount++;
}
-_decstr(str)
-String *str;
+void _decstr(String* str)
{
ok(str);
/* Strings in ROM are initialized with this count */
str->strcount--;
if(str->strcount<=0) _delstr(str);
}
-_strcpy(dst,src)
-String *src,*dst;
+void _strcpy(String* dst, String* src)
{
ok(src);
ok(dst);
*dst = *src;
_incstr(src);
}
-_delstr(src)
-String *src;
+void _delstr(String* src)
{
ok(src);
sfree(src->strval);
sfree((char *)src);
}
-String *_concat(s1,s2)
-String *s1,*s2;
+String *_concat(String* s1,String* s2)
{
String *s;
int length;
strcat(s->strval,s1->strval);
return(s);
}
-_strcomp(s1,s2)
-String *s1,*s2;
+int _strcomp(String* s1,String* s2)
{
okr(s1);okr(s2);
return(strcmp(s2->strval,s1->strval));
}
-String *_left(size,s)
-String *s;
-int size;
+String *_left(int size, String* s)
{
String *ns;
int i;
return(ns);
}
-String *_space(d)
-int d;
+String *_space(int d)
{
String *s;
int i,len;
return(s);
}
-String *_strascii()
+String *_strascii(void)
{
}
-String *_string(f, d)
-double d,f;
+String *_string(double f, double d)
{
int i,j;
String *s;
s->strval[i]= j;
return(s);
}
-_midstmt(s2,i1,i2,s)
-int i1,i2;
-String *s, *s2;
+void _midstmt(String* s2, int i1, int i2, String* s)
{
int l;
if( i1>l ) i1=l;
strncpy(s->strval+i2-1,s2->strval,i1);
}
-String *_mid(i1,i2,s)
-int i1,i2;
-String *s;
+String *_mid(int i1, int i2, String* s)
{
int l;
String *s2;
return(s2);
}
-String *_right(length,str)
-String *str;
-int length;
+String *_right(int length, String* str)
{
String *s;
int i;
/* $Id$ */
-_intswap(i1,i2)
-int *i1,*i2;
+void _intswap(int* i1, int* i2)
{
int i3;
i3= *i1;
*i2=i3;
}
-_fltswap(i1,i2)
-double *i1,*i2;
+void _fltswap(double* i1, double* i2)
{
double i3;
i3= *i1;
*i2=i3;
}
-_strswap(s1,s2)
-String **s1,**s2;
+void _strswap(String** s1, String** s2)
{
String *s;
s= *s1;
/* $Id$ */
-_trace(i)
-int i;
+void _trace(int i)
{
printf("[%d]",i);
}
int _trpline; /* BASIC return label */
jmp_buf trpbuf;
-_trpset(nr)
-int nr;
+void _trpset(int nr)
{
/*debug printf("trap set to %d\n",nr);*/
_trpline=nr;
}
-void
-_trpfatal(i)
-int i;
+void _trpfatal(int i)
{
extern int _errsym,_erlsym;
_trap();
}
-_ini_trp()
+void _ini_trp(void)
{
/* initialize trap routines */
int i;
}
-_settrap(nr)
-int nr;
+void _settrap(int nr)
{
_trpline=nr;
}
-_trap()
+void _trap(void)
{
int line;
/* assume that the channel has been set */
-_wrnl()
+void _wrnl(void)
{
if( fputc('\n',_chanwr) == EOF) error(29);
}
-_wrcomma()
+void _wrcomma(void)
{
if( fputc(',',_chanwr) == EOF) error(29);
}
-_wrint(i)
-int i;
+void _wrint(int i)
{
if(i>0)
if( fputc(' ',_chanwr)==EOF) error(29);
fprintf(_chanwr,"%d",i);
if( ferror(_chanwr) ) error(29);
}
-_wrflt(f)
-double f;
+void _wrflt(double f)
{
fprintf(_chanwr,"%f",f);
if( ferror(_chanwr) ) error(29);
}
-_wrstr(s)
-String *s;
+void _wrstr(String* s)
{
fprintf(_chanwr,"\"%s\"",s->strval);
if( ferror(_chanwr) ) error(29);