home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / BDSC / BDSC-4 / ACRL.LBR / ACRL.HZ / ACRL.H
Text File  |  2000-06-30  |  4KB  |  153 lines

  1. /*
  2.     ************************************************************
  3.                   ACRL Globals
  4.     ************************************************************
  5.  
  6.     W. Lemiszki                      9 Jan 1982
  7.  
  8.     Filename: acrl.h                 BDS C v1.50
  9. */
  10.  
  11.  
  12. #include <bdscio.h>        /* standard stuff            */
  13.  
  14. #define EOS '\0'        /* end of string             */
  15. #define byte char        /* pseudonym for clarity        */
  16. #define addr unsigned        /* ditto                */
  17.  
  18. byte verbose;            /* TRUE to list every byte        */
  19. byte printflg;            /* TRUE to generate listing        */
  20. int objflg;            /* TRUE to generate object file        */
  21.  
  22. byte xrel;            /* current expression reloc attr    */
  23. byte infunc;            /* TRUE within function            */
  24. byte endflag;            /* TRUE after 'end' stmt        */
  25. byte prepost;            /* prelude/normal/postlude switch    */
  26. #define PRE 1            /* prelude                */
  27. #define POST 2            /* postlude                */
  28.  
  29. int  pass;            /* pass counter                */
  30. addr lc;            /* location counter (in crl file)    */
  31. addr floc;            /* function location counter        */
  32. addr outloc;            /* output file location            */
  33. int  numfunc;            /* # of functions declared        */
  34. int  linecnt;            /* line # counter            */
  35.  
  36. char *lptr;            /* input line pointer            */
  37. byte class;            /* token class                */
  38. byte type;            /* type (within class)            */
  39. int  value;            /* token value                */
  40. byte reloc;            /* TRUE if relocatable            */
  41.  
  42. char errchar;            /* error character            */
  43. int  errcnt;            /* total no. of errors            */
  44. byte specflag;            /* TRUE for special list address field    */
  45. addr specval;            /* the value to print            */
  46.  
  47. int  codelen;            /* length of code buffer        */
  48. int  rellen;            /* length of relocation list        */
  49.  
  50. byte incflag;            /* TRUE when in include file        */
  51. int  linesav;            /* linecnt save during include        */
  52.  
  53.  
  54.  
  55. struct entry            /* symbol table entry            */
  56.     {
  57.     char *nam;
  58.     byte clas;
  59.     byte typ;
  60.     addr val;
  61.     struct entry *next;
  62.     };
  63.  
  64. struct entry *id;        /* points to most recently found ident    */
  65. struct entry *labid;        /* label entry pointer            */
  66. char *lnam;            /* label name pointer            */
  67. byte ltyp;            /* label type                */
  68.  
  69. #define ROOTSIZ 322        /* 256 reserved, 64 functions, +2    */
  70. struct entry *roots[ROOTSIZ];    /* symbol table lists            */
  71. #define RESVD    0        /* base of reserved words        */
  72. #define    GLOBAL    256        /* global symbols            */
  73. #define FUNCS    257        /* function list            */
  74. #define LOCAL    258        /* local symbols            */
  75.  
  76. int  faddr[64];            /* function address (lc) table        */
  77. int  flen[64];            /* function length table        */
  78.  
  79. char infile[BUFSIZ];        /* input file buffer            */
  80. char iname[20];            /* input filename            */
  81.  
  82. char outfile[BUFSIZ];        /* output file buffer            */
  83. char oname[20];            /* output filename            */
  84.  
  85. char incfile[BUFSIZ];        /* include file buffer            */
  86.  
  87. char line[MAXLINE];        /* input line buffer            */
  88. char tokbuf[MAXLINE];        /* scanner token buffer            */
  89.  
  90. char cctab[128];        /* character class table        */
  91.  
  92. byte codebuf[200];        /* the code buffer            */
  93. addr relbuf[500];        /* relocation list buffer        */
  94.                 /* (relbuf must follow codebuf.  During
  95.                    directory output, a 512 byte code
  96.                    buffer is needed.            */
  97.  
  98.  
  99. /* TOKEN CLASSES */
  100.  
  101. #define    EOL     0        /* end of line            */
  102. #define    MACHINE     1        /* machine instruction        */
  103. #define    PSEUDO     2        /* pseudo op            */
  104. #define    OPERATOR 3        /* expression operator        */
  105. #define    OPERAND     4        /* operand (or unary)        */
  106. #define    IDENT     5        /* identifier (symbol)        */
  107. #define STRING     6        /* quoted string        */
  108. #define MISC     7        /* misc tokens            */
  109.  
  110.  
  111. /* PSEUDO-OP Types */
  112.  
  113. #define    psEND    1
  114. #define    psDB    2
  115. #define    psDW    3
  116. #define    psEQU    4
  117. #define    psSET    5
  118. #define psDS    6
  119. #define psFUNC    7
  120. #define    psFEND    8
  121. #define psINCL    9
  122.  
  123.  
  124. /* OPERATOR Types */
  125.  
  126. #define    opOR    1
  127. #define    opAND    2
  128. #define    opXOR    3
  129. #define    opMOD    4
  130. #define    opSHL    5
  131. #define    opSHR    6
  132.  
  133.  
  134. /* OPERAND Types */
  135.  
  136. #define    opNOT    1
  137. #define    opHIGH    2
  138. #define    opLOW    3
  139. #define    NUMBER    4
  140.  
  141.  
  142. /* IDENTIFIER Types */
  143.  
  144. #define    idLAB    1        /* statement label        */
  145. #define    idEQU    2        /* equate            */
  146. #define    idSET    3        /* redefinable symbol        */
  147. #define    idMUL    4        /* multiply defined symbol    */
  148. #define    idUND    5        /* undefined symbol         */
  149. #define    idFUNC    6        /* function name         */
  150.  
  151. #define RELBIT 0x80        /* If this bit is set (in type byte)    */
  152.                    /* the identifier is relocatable    */
  153.