long _abl(long i)
{
- return( i>=0?i:-i);
+ return (i >= 0 ? i : -i);
}
double _abr(double f)
-{
- return( f>=0.0?f: -f);
+{
+ return (f >= 0.0 ? f : -f);
}
int _asc(String* str)
{
- if(str==0 || str->strval==0)
+ if (str == 0 || str->strval == 0)
error(3);
- return( *str->strval);
+ return (*str->strval);
}
void asrt(int b)
{
- if(!b){
+ if (!b)
+ {
printf("ASSERTION ERROR\n");
abort();
}
#include <math.h>
double _atn(double x) { return atan(x); }
-
/* $Id$ */
-String *_chr(int i)
+String* _chr(int i)
{
- String *s;
- char buf[2];
+ String* s;
+ char buf[2];
- if( i<0 || i>127)
+ if (i < 0 || i > 127)
error(3);
- buf[0]=i;
- buf[1]=0;
- s= _newstr(buf);
- return(s);
+ buf[0] = i;
+ buf[1] = 0;
+ s = _newstr(buf);
+ return (s);
}
int _cint(double f)
{
int r;
- if( f<-32768 || f>32767) error(4);
- if(f<0)
- r= f-0.5;
- else r= f+0.5;
- return(r);
+ if (f < -32768 || f > 32767)
+ error(4);
+ if (f < 0)
+ r = f - 0.5;
+ else
+ r = f + 0.5;
+ return (r);
}
double _trunc(double f)
{
long d;
- d=f;
- f=d;
- return( f );
+ d = f;
+ f = d;
+ return (f);
}
double _fcint(double f)
{
long r;
- if(f<0){
- r= -f;
- r= -r -1;
- }else r= f;
- f=r;
- return(f);
+ if (f < 0)
+ {
+ r = -f;
+ r = -r - 1;
+ }
+ else
+ r = f;
+ f = r;
+ return (f);
}
int _fix(double f)
{
int r;
- if( f<-32768.0 || f>32767.0) error(4);
- r= _sgn(f) * _fcint((f>0.0? f : -f));
- return(r);
+ if (f < -32768.0 || f > 32767.0)
+ error(4);
+ r = _sgn(f) * _fcint((f > 0.0 ? f : -f));
+ return (r);
}
/* error takes an error value in the range of 0-255 */
/* and generates a trap */
-char *errortable[255]={
-/* 0 */ "",
-/* 1 */ "RETURN without GOSUB",
-/* 2 */ "Out of data",
-/* 3 */ "Illegal function call",
-/* 4 */ "Overflow",
-/* 5 */ "Out of memory",
-/* 6 */ "Undefined line ",
-/* 7 */ "Subscript out of range",
-/* 8 */ "Redimensioned array",
-/* 9 */ "Division by zero",
-/* 10 */ "Illegal indirect",
-/* 11 */ "Type mismatch",
-/* 12 */ "Out of string space",
-/* 13 */ "String too long",
-/* 14 */ "String formula too complex",
-/* 15 */ "Can't continue",
-/* 16 */ "Undefined user function",
-/* 17 */ "No resume",
-/* 18 */ "Resume without error",
-/* 19 */ "Unprintable error",
-/* 20 */ "Missing operand",
-/* 21 */ "Line buffer overflow",
-/* 22 */ "FOR without NEXT",
-/* 23 */ "WHILE without WEND",
-/* 24 */ "WEND without WHILE",
-/* 25 */ "Field overflow",
-/* 26 */ "Internal error",
-/* 27 */ "Bad file number",
-/* 28 */ "File not found",
-/* 29 */ "Bad file mode",
-/* 30 */ "File already open",
-/* 31 */ "Disk IO error",
-/* 32 */ "File already exists",
-/* 33 */ "Disk full",
-/* 34 */ "Input past end",
-/* 35 */ "Bad record number",
-/* 36 */ "Bad file name",
-/* 37 */ "Direct statement in file",
-/* 38 */ "Too many files",
-/* 39 */ "File not open",
-/* 40 */ "Syntax error in data",
-0
+char* errortable[255] = {
+ /* 0 */ "",
+ /* 1 */ "RETURN without GOSUB",
+ /* 2 */ "Out of data",
+ /* 3 */ "Illegal function call",
+ /* 4 */ "Overflow",
+ /* 5 */ "Out of memory",
+ /* 6 */ "Undefined line ",
+ /* 7 */ "Subscript out of range",
+ /* 8 */ "Redimensioned array",
+ /* 9 */ "Division by zero",
+ /* 10 */ "Illegal indirect",
+ /* 11 */ "Type mismatch",
+ /* 12 */ "Out of string space",
+ /* 13 */ "String too long",
+ /* 14 */ "String formula too complex",
+ /* 15 */ "Can't continue",
+ /* 16 */ "Undefined user function",
+ /* 17 */ "No resume",
+ /* 18 */ "Resume without error",
+ /* 19 */ "Unprintable error",
+ /* 20 */ "Missing operand",
+ /* 21 */ "Line buffer overflow",
+ /* 22 */ "FOR without NEXT",
+ /* 23 */ "WHILE without WEND",
+ /* 24 */ "WEND without WHILE",
+ /* 25 */ "Field overflow",
+ /* 26 */ "Internal error",
+ /* 27 */ "Bad file number",
+ /* 28 */ "File not found",
+ /* 29 */ "Bad file mode",
+ /* 30 */ "File already open",
+ /* 31 */ "Disk IO error",
+ /* 32 */ "File already exists",
+ /* 33 */ "Disk full",
+ /* 34 */ "Input past end",
+ /* 35 */ "Bad record number",
+ /* 36 */ "Bad file name",
+ /* 37 */ "Direct statement in file",
+ /* 38 */ "Too many files",
+ /* 39 */ "File not open",
+ /* 40 */ "Syntax error in data",
+ 0
};
void error(int index)
{
_setline();
- if( index<0 || index >40 )
- printf("LINE %d:ERROR %d: Unprintable error\n",_erlsym,index);
- else printf("LINE %d:ERROR %d: %s\n",_erlsym,index,errortable[index]);
- _errsym= index;
+ if (index < 0 || index > 40)
+ printf("LINE %d:ERROR %d: Unprintable error\n", _erlsym, index);
+ else
+ printf("LINE %d:ERROR %d: %s\n", _erlsym, index, errortable[index]);
+ _errsym = index;
_trap();
}
/* $Id$ */
-Filedesc _fdtable[16];
+Filedesc _fdtable[16];
/* BASIC file descriptor table */
/* Channel assignment:
-1 terminal IO
1-15 user files
*/
-
-
-int _chann = -1;
-FILE *_chanrd = stdin;
-FILE *_chanwr = stdout;
+int _chann = -1;
+FILE* _chanrd = stdin;
+FILE* _chanwr = stdout;
void _setchan(int index)
{
#ifdef DEBUG
- printf("setchannel %d\n",index);
+ printf("setchannel %d\n", index);
#endif
fflush(_chanwr);
- if( index == -1)
+ if (index == -1)
{
- _chann= -1;
- _chanrd= stdin;
- _chanwr= stdout;
+ _chann = -1;
+ _chanrd = stdin;
+ _chanwr = stdout;
return;
}
- if( index<0 || index>15)
+ if (index < 0 || index > 15)
error(27);
- _chann=index;
- _chanrd= _chanwr= _fdtable[index].fd;
+ _chann = index;
+ _chanrd = _chanwr = _fdtable[index].fd;
}
void _asschn(void)
{
#ifdef DEBUG
- printf("_asschn %d\n",_chann);
+ printf("_asschn %d\n", _chann);
#endif
- if( _chann == -1) return;
+ if (_chann == -1)
+ return;
#ifdef DEBUG
printf(" file %d\n", _fdtable[_chann].fd);
#endif
- if( _chann<0 || _chann>15)
+ if (_chann < 0 || _chann > 15)
error(27);
- if( _fdtable[_chann].fd== 0)
+ if (_fdtable[_chann].fd == 0)
error(39);
- if( feof( _fdtable[_chann].fd))
+ if (feof(_fdtable[_chann].fd))
error(2);
}
void _clochn(int nr)
{
- if( nr<1 || nr >15 || _fdtable[nr].fd==0) error(3);
+ if (nr < 1 || nr > 15 || _fdtable[nr].fd == 0)
+ error(3);
fclose(_fdtable[nr].fd);
- _fdtable[nr].fd=0; _fdtable[nr].fname=0;
+ _fdtable[nr].fd = 0;
+ _fdtable[nr].fname = 0;
}
void _opnchn(int reclen, String* fname, String* mode)
{
/* channel has been set */
- FILE *f;
+ FILE* f;
int m;
#ifdef DEBUG
- printf("open %d %s %s \n",reclen,mode->strval,fname->strval);
+ printf("open %d %s %s \n", reclen, mode->strval, fname->strval);
#endif
/* check for opened/closed file */
- if(_fdtable[_chann].fd)
+ if (_fdtable[_chann].fd)
error(30);
- switch(*mode->strval)
+ switch (*mode->strval)
{
case 'O':
case 'o':
- if( (f=fopen(fname->strval,"w")) == NULL)
+ if ((f = fopen(fname->strval, "w")) == NULL)
error(28);
- m= OMODE;
+ m = OMODE;
break;
case 'I':
case 'i':
- if( (f=fopen(fname->strval,"r")) == NULL)
+ if ((f = fopen(fname->strval, "r")) == NULL)
error(28);
- m= IMODE;
+ m = IMODE;
break;
case 'r':
case 'R':
- if( (f=fopen(fname->strval,"a")) == NULL)
+ if ((f = fopen(fname->strval, "a")) == NULL)
error(28);
- m= RMODE;
+ m = RMODE;
break;
default:
- printf("file mode %s\n",mode->strval);
+ printf("file mode %s\n", mode->strval);
error(29);
}
- _chanwr= _chanrd= _fdtable[_chann].fd= f;
- _fdtable[_chann].fname= fname->strval;
- _fdtable[_chann].reclength= reclen;
- _fdtable[_chann].mode= m;
+ _chanwr = _chanrd = _fdtable[_chann].fd = f;
+ _fdtable[_chann].fname = fname->strval;
+ _fdtable[_chann].reclength = reclen;
+ _fdtable[_chann].mode = m;
#ifdef DEBUG
- printf("file descr %d\n",f);
+ printf("file descr %d\n", f);
#endif
}
int _ioeof(int channel)
{
- FILE *fd;
+ FILE* fd;
char c;
- if( channel<0 || channel >15) error(3);
- fd= _fdtable[channel].fd;
- if( fd==0)
+ if (channel < 0 || channel > 15)
+ error(3);
+ fd = _fdtable[channel].fd;
+ if (fd == 0)
error(3);
- c=fgetc(fd);
- if( feof(_fdtable[channel].fd) ) return(-1);
- ungetc(c,fd);
- return(0);
+ c = fgetc(fd);
+ if (feof(_fdtable[channel].fd))
+ return (-1);
+ ungetc(c, fd);
+ return (0);
}
void _close(void)
{
/* close all open files */
int i;
- for(i=1;i<16;i++)
- if( _fdtable[i].fd)
- _clochn(i);
+ for (i = 1; i < 16; i++)
+ if (_fdtable[i].fd)
+ _clochn(i);
}
#define MAXWIDTH 255
-int _width = 75, _pos=0, _zonewidth=15;
+int _width = 75, _pos = 0, _zonewidth = 15;
void _out(char* str)
{
int pos;
- if( _chann== -1) pos= _pos;
- else pos= _fdtable[_chann].pos;
- while( *str)
+ if (_chann == -1)
+ pos = _pos;
+ else
+ pos = _fdtable[_chann].pos;
+ while (*str)
{
- if( pos>= _width){ _outnl(); pos=0;}
+ if (pos >= _width)
+ {
+ _outnl();
+ pos = 0;
+ }
fputc(*str++, _chanwr);
pos++;
}
- if( _chann== -1) _pos=pos;
- else _fdtable[_chann].pos= pos;
+ if (_chann == -1)
+ _pos = pos;
+ else
+ _fdtable[_chann].pos = pos;
}
void _outnl(void)
{
- fputc('\n',_chanwr);
- if( _chann == -1)
- _pos=0;
+ fputc('\n', _chanwr);
+ if (_chann == -1)
+ _pos = 0;
else
- _fdtable[_chann].pos=0;
+ _fdtable[_chann].pos = 0;
}
void _zone(void)
{
/* go to next zone */
int pos;
- if( _chann == -1)
- pos= _pos;
- else pos= _fdtable[_chann].pos;
- do{
- fputc(' ',_chanwr);
+ if (_chann == -1)
+ pos = _pos;
+ else
+ pos = _fdtable[_chann].pos;
+ do
+ {
+ fputc(' ', _chanwr);
pos++;
- if( pos==_width)
+ if (pos == _width)
{
_outnl();
- pos=0;
+ pos = 0;
break;
}
- } while( pos % _zonewidth != 0);
- if( _chann== -1) _pos=pos;
- else _fdtable[_chann].pos= pos;
+ } while (pos % _zonewidth != 0);
+ if (_chann == -1)
+ _pos = pos;
+ else
+ _fdtable[_chann].pos = pos;
}
void _in(char* buf)
{
- register int holder ;
- char *c;
+ register int holder;
+ char* c;
int pos;
- if( _chann == -1)
+ if (_chann == -1)
{
- pos= _pos;
- }else pos= _fdtable[_chann].pos;
- c= buf;
- while( (holder = fgetc(_chanrd)) != EOF && holder != '\n'){
- *c= holder ;
- if( _chann == -1) putchar(holder);
- c++; pos++;
+ pos = _pos;
}
- *c= 0;
- if( _chann== -1)
+ else
+ pos = _fdtable[_chann].pos;
+ c = buf;
+ while ((holder = fgetc(_chanrd)) != EOF && holder != '\n')
{
- _pos=pos;
- } else _fdtable[_chann].pos= pos;
+ *c = holder;
+ if (_chann == -1)
+ putchar(holder);
+ c++;
+ pos++;
+ }
+ *c = 0;
+ if (_chann == -1)
+ {
+ _pos = pos;
+ }
+ else
+ _fdtable[_chann].pos = pos;
}
void _tab(int x)
{
- if( x> _width) error(3);
- if( x< _pos) _outnl();
- _spc(x-_pos);
+ if (x > _width)
+ error(3);
+ if (x < _pos)
+ _outnl();
+ _spc(x - _pos);
}
void _spc(int x)
{
- while(x-->0) _out(" ");
+ while (x-- > 0)
+ _out(" ");
}
/* $Id$ */
-String *_mki(long i)
+String* _mki(long i)
{
- char *buffer =" ";
- String *s;
+ char* buffer = " ";
+ String* s;
- s= _newstr(buffer);
- * ( (long *)s->strval ) = i ;
- return(s);
+ s = _newstr(buffer);
+ *((long*)s->strval) = i;
+ return (s);
}
-String *_mkd(double d)
+String* _mkd(double d)
{
- char *buffer =" ";
- String *s;
+ char* buffer = " ";
+ String* s;
- s= _newstr(buffer);
- * ( (double *)s->strval ) = d ;
- return(s);
+ s = _newstr(buffer);
+ *((double*)s->strval) = d;
+ return (s);
}
long _cvi(String* s)
{
- return *( (long *) s->strval) ;
+ return *((long*)s->strval);
}
double _cvd(String* s)
{
- return *( (double *) s->strval) ;
+ return *((double*)s->strval);
}
/* $Id$ */
-String *_oct(int i)
+String* _oct(int i)
{
char buffer[30];
- sprintf(buffer,"%o",i);
- return( (String *)_newstr(buffer));
+ sprintf(buffer, "%o", i);
+ return ((String*)_newstr(buffer));
}
-String *_hex(int i)
+String* _hex(int i)
{
char buffer[30];
- sprintf(buffer,"%x",i);
- return( (String *)_newstr(buffer));
+ sprintf(buffer, "%x", i);
+ return ((String*)_newstr(buffer));
}
-String *_nstr(double f)
+String* _nstr(double f)
{
char buffer[80];
_str(f, buffer);
- return (String *) _newstr(buffer);
+ return (String*)_newstr(buffer);
}
/* this can not work properly for machines in which the
POINTERSIZE differs from the integer size
*/
- char *p;
+ char* p;
int i;
- p= (char *)addr;
- i= *p;
+ p = (char*)addr;
+ i = *p;
#ifdef DEBUG
- printf("peek %d = %d\n",addr,i);
+ printf("peek %d = %d\n", addr, i);
#endif
- return(i);
+ return (i);
}
void _poke(int i, int j)
{
- char *p;
- p= (char *) i;
- *p=j;
+ char* p;
+ p = (char*)i;
+ *p = j;
}
#include <math.h>
double _power(double x, double y) { return pow(x, y); }
-
}
void _prinum(int i)
{
- char buffer[40];
+ char buffer[40];
_asschn();
- if(i>=0)
- sprintf(buffer," %d ",i);
- else sprintf(buffer,"-%d ",-i);
+ if (i >= 0)
+ sprintf(buffer, " %d ", i);
+ else
+ sprintf(buffer, "-%d ", -i);
_out(buffer);
}
void _str(double f, char* buffer)
{
- register char *c = buffer;
+ register char* c = buffer;
int eformat = 0;
- if( f>=0){
- if( f> 1.0e8) {
+ if (f >= 0)
+ {
+ if (f > 1.0e8)
+ {
eformat = 1;
- sprintf(buffer," %e",f);
+ sprintf(buffer, " %e", f);
}
- else sprintf(buffer," %f",f);
+ else
+ sprintf(buffer, " %f", f);
c++;
- }else {
- if(-f> 1.0e8) {
+ }
+ else
+ {
+ if (-f > 1.0e8)
+ {
eformat = 1;
- sprintf(buffer,"-%e",-f);
+ sprintf(buffer, "-%e", -f);
}
- else sprintf(buffer,"-%f",-f);
+ else
+ sprintf(buffer, "-%f", -f);
}
- if (! eformat) {
- for( ; *c && *c!= ' ';c++) ;
+ if (!eformat)
+ {
+ for (; *c && *c != ' '; c++)
+ ;
c--;
- while( c>buffer && *c== '0')
+ while (c > buffer && *c == '0')
{
- *c= 0;c--;
+ *c = 0;
+ c--;
}
- if( *c=='.') *c=0;
+ if (*c == '.')
+ *c = 0;
}
}
void _prfnum(double f)
{
/* BASIC strings trailing zeroes */
- char buffer[100];
- char *c;
+ char buffer[100];
+ char* c;
_asschn();
- c= buffer;
- _str(f,c);
- strcat(buffer," ");
+ c = buffer;
+ _str(f, c);
+ strcat(buffer, " ");
_out(buffer);
}
void _prstr(String* str)
{
_asschn();
- if( str==0) _out("<null>");
- else _out(str->strval);
+ if (str == 0)
+ _out("<null>");
+ else
+ _out(str->strval);
}
}
double _rnd(double d)
{
- double f; f= (int) rand();
- return(f/
+ double f;
+ f = (int)rand();
+ return (f /
#if EM_WSIZE == 4
- 2147483647.0
+ 2147483647.0
#else
- 32767.0
+ 32767.0
#endif
- );
+ );
}
void _readln(void)
{
register int c;
- while( (c=fgetc(_chanrd)) != EOF && c!= '\n')
+ while ((c = fgetc(_chanrd)) != EOF && c != '\n')
;
}
#ifdef DEBUG
printf("readskip\n");
#endif
- while( (c=fgetc(_chanrd)) != EOF && c!= ',' && c!= '\n')
+ while ((c = fgetc(_chanrd)) != EOF && c != ',' && c != '\n')
;
}
void _readint(int* addr)
{
int i;
- char buf[1024];
+ char buf[1024];
#ifdef DEBUG
- printf("read int from %d\n",_chann);
+ printf("read int from %d\n", _chann);
#endif
_asschn();
- if( fscanf(_chanrd,"%d",&i) != 1)
+ if (fscanf(_chanrd, "%d", &i) != 1)
{
- if( ferror(_chanrd)) error(29);
- if( feof(_chanrd)) error(2);
- if( _chann == -1)
+ if (ferror(_chanrd))
+ error(29);
+ if (feof(_chanrd))
+ error(2);
+ if (_chann == -1)
{
- _asschn(); /* may be closed by now */
- fgets(buf,1024,_chanrd);
+ _asschn(); /* may be closed by now */
+ fgets(buf, 1024, _chanrd);
printf("?Redo ");
_readint(addr);
return;
}
error(40);
- }else { readskip(); *addr=i;}
+ }
+ else
+ {
+ readskip();
+ *addr = i;
+ }
}
void _readflt(double* addr)
{
char buf[1024];
#ifdef DEBUG
- printf("read flt from %d\n",_chann);
+ printf("read flt from %d\n", _chann);
#endif
_asschn();
- if( fscanf(_chanrd,"%lf",&f) != 1)
+ if (fscanf(_chanrd, "%lf", &f) != 1)
{
- if( ferror(_chanrd)) error(29);
- if( feof(_chanrd)) error(2);
- if( _chann == -1)
+ if (ferror(_chanrd))
+ error(29);
+ if (feof(_chanrd))
+ error(2);
+ if (_chann == -1)
{
- fgets(buf,1024,_chanrd);
+ fgets(buf, 1024, _chanrd);
printf("?Redo ");
_readflt(addr);
return;
}
error(40);
- }else { readskip(); *addr=f;}
+ }
+ else
+ {
+ readskip();
+ *addr = f;
+ }
}
void _readstr(String** s)
{
char buffer[1024];
- register int kar ;
- char *c;
+ register int kar;
+ char* c;
#ifdef DEBUG
- printf("read str from %d\n",_chann);
+ printf("read str from %d\n", _chann);
#endif
_asschn();
- c= buffer;
- kar= fgetc(_chanrd);
- while(isspace(kar) && kar!= EOF)
- kar= fgetc(_chanrd);
- *c=kar ;
- if( kar== '"')
+ c = buffer;
+ kar = fgetc(_chanrd);
+ while (isspace(kar) && kar != EOF)
+ kar = fgetc(_chanrd);
+ *c = kar;
+ if (kar == '"')
{
- /* read quoted string */
+/* read quoted string */
#ifdef DEBUG
printf("qouted string\n");
#endif
- while ( (kar= fgetc(_chanrd)) != EOF && kar!='"' ) *c++ = kar ;
- ungetc(kar,_chanrd);
- *c=0;
- }else
- if( isalpha(*c))
+ while ((kar = fgetc(_chanrd)) != EOF && kar != '"')
+ *c++ = kar;
+ ungetc(kar, _chanrd);
+ *c = 0;
+ }
+ else if (isalpha(*c))
{
/* read normal string */
c++;
#ifdef DEBUG
printf("non-qouted string\n");
#endif
- while( (kar= fgetc(_chanrd)) != ',' && kar!= EOF &&
- !isspace(kar) && kar!='\n')
- *c++= kar ;
- ungetc(kar,_chanrd);
- *c=0;
- }else{
- if( ferror(_chanrd)) error(29);
- if( feof(_chanrd)) error(2);
- if( _chann == -1)
+ while ((kar = fgetc(_chanrd)) != ',' && kar != EOF && !isspace(kar) && kar != '\n')
+ *c++ = kar;
+ ungetc(kar, _chanrd);
+ *c = 0;
+ }
+ else
+ {
+ if (ferror(_chanrd))
+ error(29);
+ if (feof(_chanrd))
+ error(2);
+ if (_chann == -1)
{
- fgets(buffer,1024,_chanrd);
+ fgets(buffer, 1024, _chanrd);
printf("?Redo ");
_rdline(s);
return;
error(40);
}
#ifdef DEBUG
- printf("string read: %s\n",buffer);
+ printf("string read: %s\n", buffer);
#endif
readskip();
/* save value read */
_decstr(*s);
- *s= (String *) _newstr(buffer);
+ *s = (String*)_newstr(buffer);
}
extern int _seektab[];
char buffer[1024];
#ifdef DEBUG
- printf("seek to %d",line);
+ printf("seek to %d", line);
#endif
- fseek(_chanrd,0l,0);
- if( line)
+ fseek(_chanrd, 0l, 0);
+ if (line)
{
/* search number of lines to skip */
- for(nr=0; _seektab[nr] && _seektab[nr]< line; nr+=2)
+ for (nr = 0; _seektab[nr] && _seektab[nr] < line; nr += 2)
#ifdef DEBUG
- printf("test %d %d\n",_seektab[nr], _seektab[nr+1]);
+ printf("test %d %d\n", _seektab[nr], _seektab[nr + 1]);
#endif
;
nr /= 2;
#ifdef DEBUG
- printf(" %d lines to skip\n",nr);
+ printf(" %d lines to skip\n", nr);
#endif
- while(nr-- >0 ) fgets(buffer,1024,_chanrd);
+ while (nr-- > 0)
+ fgets(buffer, 1024, _chanrd);
}
}
void _rdline(String** s)
{
char buffer[1024];
- if( fgets(buffer,1024,_chanrd) == 0)
+ if (fgets(buffer, 1024, _chanrd) == 0)
{
- if( _chann == -1)
+ if (_chann == -1)
{
printf("?Redo ");
_rdline(s);
error(40);
}
_decstr(*s);
- *s= (String *) _newstr(buffer);
+ *s = (String*)_newstr(buffer);
}
/* $Id$ */
-#define MAXNESTING 1000
+#define MAXNESTING 1000
int _gotable[MAXNESTING];
-int topstk=0;
+int topstk = 0;
void _gosub(int x)
{
- /* administer gosub */
+/* administer gosub */
#ifdef DEBUG
- printf("store %d in %d\n",x,topstk);
+ printf("store %d in %d\n", x, topstk);
#endif
- if( topstk== MAXNESTING) error(26);
- _gotable[topstk]= x;
+ if (topstk == MAXNESTING)
+ error(26);
+ _gotable[topstk] = x;
topstk++;
}
int _retstmt(void)
{
- /* make sure that a return label index is on top
+/* make sure that a return label index is on top
of the stack */
#ifdef DEBUG
- printf("return to %d %d\n",_gotable[topstk-1],topstk-1);
+ printf("return to %d %d\n", _gotable[topstk - 1], topstk - 1);
#endif
- if( topstk==0 || topstk==MAXNESTING)
+ if (topstk == 0 || topstk == MAXNESTING)
error(1);
- return( _gotable[--topstk]);
+ return (_gotable[--topstk]);
}
#include <stdlib.h>
-char * salloc(unsigned length)
+char* salloc(unsigned length)
{
- char *c, *s;
- c= malloc(length);
- if( !c ) error(5);
- for(s=c;s<c+length;s++) *s = 0;
- return(c);
+ char* c, *s;
+ c = malloc(length);
+ if (!c)
+ error(5);
+ for (s = c; s < c + length; s++)
+ *s = 0;
+ return (c);
}
void sfree(char* c)
{
- if( !c ) return;
+ if (!c)
+ return;
free(c);
}
int _sgn(double v)
{
- if( v>0) return(1);
- if( v<0) return(-1);
- return(0);
+ if (v > 0)
+ return (1);
+ if (v < 0)
+ return (-1);
+ return (0);
}
int _forsgn(double v)
{
- if (v >= 0) return 1;
+ if (v >= 0)
+ return 1;
return -1;
}
double _sin(double x) { return sin(x); }
double _cos(double x) { return cos(x); }
double _tan(double x) { return tan(x); }
-
#include <math.h>
double _sqt(double x) { return sqrt(x); }
-
/* $Id$ */
-#define ok(X) if( X ==0) return;
-#define okr(X) if( X ==0) return(0);
+#define ok(X) \
+ if (X == 0) \
+ return;
+#define okr(X) \
+ if (X == 0) \
+ return (0);
-extern char *salloc() ;
+extern char* salloc();
int _length(String* str)
{
okr(str);
- return(str->strlength);
+ return (str->strlength);
}
-String *_newstr(char* str)
+String* _newstr(char* str)
{
- String *s;
+ String* s;
okr(str);
- s= (String *) salloc(sizeof(String));
- s->strcount=1;
- s->strlength= strlen(str);
- s->strval= salloc(s->strlength+1);
- strcpy(s->strval,str);
- return(s);
+ s = (String*)salloc(sizeof(String));
+ s->strcount = 1;
+ s->strlength = strlen(str);
+ s->strval = salloc(s->strlength + 1);
+ strcpy(s->strval, str);
+ return (s);
}
void _incstr(String* src)
{
{
ok(str);
/* Strings in ROM are initialized with this count */
- if ( str->strcount==9999 ) return ;
+ if (str->strcount == 9999)
+ return;
str->strcount--;
- if(str->strcount<=0) _delstr(str);
+ if (str->strcount <= 0)
+ _delstr(str);
}
void _strcpy(String* dst, String* src)
{
{
ok(src);
sfree(src->strval);
- sfree((char *)src);
+ sfree((char*)src);
}
-String *_concat(String* s1,String* s2)
+String* _concat(String* s1, String* s2)
{
- String *s;
+ String* s;
int length;
- okr(s1); okr(s2);
- s= (String *) salloc(sizeof(String));
- s->strlength= _length(s1)+_length(s2);
- s->strval= salloc(s->strlength+1);
+ okr(s1);
+ okr(s2);
+ s = (String*)salloc(sizeof(String));
+ s->strlength = _length(s1) + _length(s2);
+ s->strval = salloc(s->strlength + 1);
s->strcount = 1;
- strcpy(s->strval,s2->strval);
- strcat(s->strval,s1->strval);
- return(s);
+ strcpy(s->strval, s2->strval);
+ strcat(s->strval, s1->strval);
+ return (s);
}
-int _strcomp(String* s1,String* s2)
+int _strcomp(String* s1, String* s2)
{
- okr(s1);okr(s2);
- return(strcmp(s2->strval,s1->strval));
+ okr(s1);
+ okr(s2);
+ return (strcmp(s2->strval, s1->strval));
}
-String *_left(int size, String* s)
+String* _left(int size, String* s)
{
- String *ns;
+ String* ns;
int i;
okr(s);
- if( size <0 || size >s->strlength) error(3);
- ns= (String *) salloc(sizeof(String));
- ns->strval= salloc(size+1);
- ns->strcount=1;
- for(i=0; i<size && s->strval[i];i++)
- ns->strval[i]= s->strval[i];
- ns->strval[i]=0;
- ns->strlength= i;
- return(ns);
+ if (size < 0 || size > s->strlength)
+ error(3);
+ ns = (String*)salloc(sizeof(String));
+ ns->strval = salloc(size + 1);
+ ns->strcount = 1;
+ for (i = 0; i < size && s->strval[i]; i++)
+ ns->strval[i] = s->strval[i];
+ ns->strval[i] = 0;
+ ns->strlength = i;
+ return (ns);
}
-String *_space(int d)
+String* _space(int d)
{
- String *s;
- int i,len;
+ String* s;
+ int i, len;
- len= d;
- s= (String *) salloc(sizeof(String));
- s->strlength= len;
- s->strcount=1;
- s->strval= salloc(len+1);
- for(i=0;i<len;i++)
- s->strval[i]= ' ';
- s->strval[i]=0;
- return(s);
+ len = d;
+ s = (String*)salloc(sizeof(String));
+ s->strlength = len;
+ s->strcount = 1;
+ s->strval = salloc(len + 1);
+ for (i = 0; i < len; i++)
+ s->strval[i] = ' ';
+ s->strval[i] = 0;
+ return (s);
}
-String *_strascii(void)
+String* _strascii(void)
{
}
-String *_string(double f, double d)
+String* _string(double f, double d)
{
- int i,j;
- String *s;
+ int i, j;
+ String* s;
- i=d;j=f;
- if( i<0 || i>MAXSTRING) error(3);
- s= (String *) salloc(sizeof(String));
- s->strlength= i;
- s->strcount=1;
- s->strval= salloc(i+1);
- s->strval[i--]=0;
- for(; i>=0;i--)
- s->strval[i]= j;
- return(s);
+ i = d;
+ j = f;
+ if (i < 0 || i > MAXSTRING)
+ error(3);
+ s = (String*)salloc(sizeof(String));
+ s->strlength = i;
+ s->strcount = 1;
+ s->strval = salloc(i + 1);
+ s->strval[i--] = 0;
+ for (; i >= 0; i--)
+ s->strval[i] = j;
+ return (s);
}
void _midstmt(String* s2, int i1, int i2, String* s)
{
int l;
/*printf("mid called %d %d %s %s\n",i1,i2,s->strval, s2->strval);*/
- if (i2 < 0 || i1 < -1) error(3);
- if( s->strlength<i2 || s2->strlength < i1) error(3); /* source string too short */
- if( i1== -1) i1= s2->strlength;
- l= s->strlength - i2+1;
- if( i1>l ) i1=l;
- strncpy(s->strval+i2-1,s2->strval,i1);
+ if (i2 < 0 || i1 < -1)
+ error(3);
+ if (s->strlength < i2 || s2->strlength < i1)
+ error(3); /* source string too short */
+ if (i1 == -1)
+ i1 = s2->strlength;
+ l = s->strlength - i2 + 1;
+ if (i1 > l)
+ i1 = l;
+ strncpy(s->strval + i2 - 1, s2->strval, i1);
}
-String *_mid(int i1, int i2, String* s)
+String* _mid(int i1, int i2, String* s)
{
int l;
- String *s2;
+ String* s2;
-/* printf("mid fcn called %d %d %s\n",i1,i2,s->strval);*/
- if (i2 < 0 || i1 < -1) return(s2); /* or error? */
- if( i1 == -1) i1= s->strlength;
- s2= _newstr(s->strval);
- s2->strval[0]=0;
- if( s->strlength<i2) return(s2); /* source string too short */
- l= s->strlength - i2+1;
- if( i1>l ) i1=l;
- strncpy(s2->strval,s->strval+i2-1,i1);
- s2->strval[i1]=0;
- return(s2);
+ /* printf("mid fcn called %d %d %s\n",i1,i2,s->strval);*/
+ if (i2 < 0 || i1 < -1)
+ return (s2); /* or error? */
+ if (i1 == -1)
+ i1 = s->strlength;
+ s2 = _newstr(s->strval);
+ s2->strval[0] = 0;
+ if (s->strlength < i2)
+ return (s2); /* source string too short */
+ l = s->strlength - i2 + 1;
+ if (i1 > l)
+ i1 = l;
+ strncpy(s2->strval, s->strval + i2 - 1, i1);
+ s2->strval[i1] = 0;
+ return (s2);
}
-String *_right(int length, String* str)
+String* _right(int length, String* str)
{
- String *s;
+ String* s;
int i;
- i= _length(str)-length;
- if(i<0) i=0;
- s= _newstr(str->strval+i);
- return(s);
+ i = _length(str) - length;
+ if (i < 0)
+ i = 0;
+ s = _newstr(str->strval + i);
+ return (s);
}
void _intswap(int* i1, int* i2)
{
int i3;
- i3= *i1;
- *i1= *i2;
- *i2=i3;
+ i3 = *i1;
+ *i1 = *i2;
+ *i2 = i3;
}
void _fltswap(double* i1, double* i2)
{
double i3;
- i3= *i1;
- *i1= *i2;
- *i2=i3;
+ i3 = *i1;
+ *i1 = *i2;
+ *i2 = i3;
}
void _strswap(String** s1, String** s2)
{
- String *s;
- s= *s1;
- *s1= *s2;
+ String* s;
+ s = *s1;
+ *s1 = *s2;
*s2 = s;
}
/* $Id$ */
void _trace(int i)
-{
-printf("[%d]",i);
+{
+ printf("[%d]", i);
}
/* $Id$ */
/* Trap handling */
-int _trpline; /* BASIC return label */
-jmp_buf trpbuf;
+int _trpline; /* BASIC return label */
+jmp_buf trpbuf;
void _trpset(int nr)
{
/*debug printf("trap set to %d\n",nr);*/
- _trpline=nr;
+ _trpline = nr;
}
void _trpfatal(int i)
{
- extern int _errsym,_erlsym;
+ extern int _errsym, _erlsym;
- _errsym= i;
+ _errsym = i;
_setline();
- if( _trpline == 0)
- printf("LINE %d: FATAL ERROR: trap %d\n",_erlsym,i);
+ if (_trpline == 0)
+ printf("LINE %d: FATAL ERROR: trap %d\n", _erlsym, i);
#ifdef DEBUG
- printf("trap occurred %d return %d\n",i,_trpline);
+ printf("trap occurred %d return %d\n", i, _trpline);
#endif
_trap();
}
/* initialize trap routines */
int i;
- for(i=0;i<NSIG;i++)
- signal(i,_trpfatal);
+ for (i = 0; i < NSIG; i++)
+ signal(i, _trpfatal);
}
-
void _settrap(int nr)
{
- _trpline=nr;
+ _trpline = nr;
}
void _trap(void)
{
int line;
- if( _trpline==0) exit(-1);
- line=_trpline;
- _trpline=0; /* should be reset by user */
+ if (_trpline == 0)
+ exit(-1);
+ line = _trpline;
+ _trpline = 0; /* should be reset by user */
_ini_trp();
- longjmp(trpbuf,line);
+ longjmp(trpbuf, line);
}
void _wrnl(void)
{
- if( fputc('\n',_chanwr) == EOF) error(29);
+ if (fputc('\n', _chanwr) == EOF)
+ error(29);
}
void _wrcomma(void)
{
- if( fputc(',',_chanwr) == EOF) error(29);
+ if (fputc(',', _chanwr) == EOF)
+ error(29);
}
void _wrint(int i)
{
- if(i>0)
- if( fputc(' ',_chanwr)==EOF) error(29);
- fprintf(_chanwr,"%d",i);
- if( ferror(_chanwr) ) error(29);
+ if (i > 0)
+ if (fputc(' ', _chanwr) == EOF)
+ error(29);
+ fprintf(_chanwr, "%d", i);
+ if (ferror(_chanwr))
+ error(29);
}
void _wrflt(double f)
{
- fprintf(_chanwr,"%f",f);
- if( ferror(_chanwr) ) error(29);
+ fprintf(_chanwr, "%f", f);
+ if (ferror(_chanwr))
+ error(29);
}
void _wrstr(String* s)
{
- fprintf(_chanwr,"\"%s\"",s->strval);
- if( ferror(_chanwr) ) error(29);
+ fprintf(_chanwr, "\"%s\"", s->strval);
+ if (ferror(_chanwr))
+ error(29);
}