
/*
          Edinburgh IMP77 Compiler - Version 8.4
 */
          const char *snl;
          extern int  rem(          int p,           int q);
          extern void readsymbol(           *p);
          extern real  float(          int n);
          extern char * tostring(          int p);
          extern char * substring(          char *s,           int f,           int t);
          extern int  freespace();
          extern void svc(          int n,           struct (null) r *);
          extern int  addr(           *p);
          extern int  *integer(          int n);
          extern short int  *shortinteger(          int n);
          extern char int  *byteinteger(          int n);
          extern char * *string(          int n);
          extern struct (null) record ;
(/*should not get here any more*/          int n;
/*or here*/)
          extern real  *real(          int n);
          extern long real  *longreal(          int n);
          extern char int  *length(          char *s);
          extern char int  *charno(          char *s,           int n);
          extern int  int(          real x);
          extern int  intpt(          real x);
          extern void iocp(          int n);
          extern int  typeof(           *n);
          extern int  sizeof(           *n);
          extern real  fracpt(          real x);
          extern void prompt(          char *s);
          extern int  nextsymbol();
          extern void skipsymbol();
          extern void printsymbol(          int sym);
          extern void printstring(          char *s);
          extern void write(          int v,           int p);
          extern void selectinput(          int n);
          extern void selectoutput(          int n);
          extern void openinput(          int n,           char *fd);
          extern void openoutput(          int n,           char *fd);
          extern void closeinput();
          extern void closeoutput();
          extern void resetinput();
          extern void resetoutput();
          extern char * time();
          extern char * date();
          extern int  cputime();
          extern int  *comreg(          int n);
          extern void read(           *x);
          extern void print(          real val,           int before,           int after);
          extern void printfl(          real val,           int places);
          extern void space();
          extern void spaces(          int n);
          extern void newline();
          extern void newlines(          int n);
          typedef struct FILEFM filefm(          int unit,           int owner,           int n1,           int n2);
          typedef struct PARMFM parmfm(          short int dsno,           short int dact,           short int ssno,           short int sact, , ,           char *text, , , , ,           struct FILEFM file, , ,           int p1,           int p2,           int p3,           int p4, , ,           int p5,           int p6, , );
          typedef struct EVENTFM eventfm(          int event,           int sub,           int extra,           char *message,           int pc,           int x);
          extern struct EVENTFM event;
#line 2
//     1  %BEGIN

//     2  %ROUTINESPEC READ SYM(%INTEGERNAME I)

int main(int argc, char **argv) {
#line 3
//     3  %ROUTINESPEC READ PS

          void readsym(          int  *i);
#line 4
//     4  %ROUTINESPEC READ LINE

          void readps();
#line 5
//     5  %INTEGERFNSPEC COMPARE(%INTEGER PSP)

          void readline();
#line 6
//     6  %ROUTINESPEC SS

          int  compare(          int psp);
#line 7
//     7  %ROUTINESPEC FAULT(%INTEGER A,B,C,D)

          void ss();
#line 8
//     8  %ROUTINESPEC OUT(%INTEGER I)

          void fault(          int a,           int b,           int c,           int d);
#line 9
//     9  %INTEGERFNSPEC CHNEXT

          void out(          int i);
#line 10
//    10  %INTEGERFNSPEC NEWCELL

          int  chnext();
#line 11
//    11  %INTEGERFNSPEC RETURN CELL(%INTEGER I)

          int  newcell();
#line 12
//    12  %ROUTINESP