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 / ENTERPRS / CPM / UTILS / S / SMC21SRC.LZH / CC.DEF next >
Text File  |  2000-06-30  |  3KB  |  157 lines

  1.  
  2. /*
  3. ** Small-C Compiler Version 2.1
  4. **
  5. ** Copyright 1982, 1983 by J. E. Hendrix
  6. **
  7. ** This version upgraded from 2.03 by Earl Boebert, following the text
  8. ** in the Small-C Handbook by J. E. Hendrix. (ISBN 0-8359-7012-4)
  9. ** 
  10. ** For log of changes from 2.0, see the Small-C Handbook,
  11. ** pp 148-149.
  12. **
  13. ** Macro Definitions
  14. */
  15.  
  16. #define DATE  "(18 Jan 85)"       /* date this version was created */
  17. #define VERSION  "2.1"         /* current version of compiler */
  18.  
  19. /*
  20. ** compile options
  21. */
  22. #define NOCCARGC /* no calls to CCARGC */
  23. #define SEPARATE /* compile separately */
  24. #define OPTIMIZE /* compile output optimizer */
  25. #define DYNAMIC  /* allocate memory dynamically */
  26. #define COL      /* terminate labels with a colon */
  27. #define UPPER    /* force symbols to upper case */
  28. #define LINK     /* will use with linking loader */
  29.  
  30. /*
  31. ** machine dependent parameters
  32. */
  33. #define BPW     2   /* bytes per word */
  34. #define LBPW    1   /* log2(BPW) */
  35. #define SBPC    1   /* stack bytes per character */
  36. #define ERRCODE 7   /* op sys return code */
  37.  
  38. /*
  39. ** symbol table format
  40. */
  41. #define IDENT    0
  42. #define TYPE     1
  43. #define CLASS    2
  44. #define OFFSET   3
  45. #define NAME     5
  46. #define OFFSIZE (NAME-OFFSET)
  47. #define SYMAVG  10
  48. #define SYMMAX  14
  49.  
  50. /*
  51. ** symbol table parameters
  52. */
  53. #define NUMLOCS   25
  54. #define STARTLOC  symtab
  55. #define ENDLOC   (symtab+(NUMLOCS*SYMAVG))
  56. #define NUMGLBS   200
  57. #define STARTGLB  ENDLOC
  58. #define ENDGLB   (ENDLOC+((NUMGLBS-1)*SYMMAX))
  59. #define SYMTBSZ   3050  /* NUMLOCS*SYMAVG + NUMGLBS*SYMMAX */
  60.  
  61. /*
  62. ** System wide name size (for symbols)
  63. */
  64. #define NAMESIZE 9
  65. #define NAMEMAX  8
  66.  
  67. /*
  68. ** possible entries for "IDENT"
  69. */
  70. #define LABEL    0
  71. #define VARIABLE 1
  72. #define ARRAY    2
  73. #define POINTER  3
  74. #define FUNCTION 4
  75.  
  76. /*
  77. ** possible entries for "TYPE"
  78. **    low order 2 bits make type unique within length
  79. **    high order bits give length of object
  80. */
  81. /*      LABEL   0 */
  82. #define CCHAR   (1<<2)
  83. #define CINT    (BPW<<2)
  84.  
  85. /*
  86. ** possible entries for "CLASS"
  87. */
  88. /*      LABEL     0 */
  89. #define STATIC    1
  90. #define AUTOMATIC 2
  91. #define EXTERNAL  3
  92. #define AUTOEXT   4 /*37*/
  93.  
  94. /*
  95. ** "switch" table
  96. */
  97. #define SWSIZ   (2*BPW)
  98. #define SWTABSZ (25*SWSIZ)
  99.  
  100. /*
  101. ** "while" statement queue
  102. */
  103. #define WQTABSZ  30
  104. #define WQSIZ     3
  105. #define WQMAX   (wq+WQTABSZ-WQSIZ)
  106.  
  107. /*
  108. ** entry offsets in while queue
  109. */
  110. #define WQSP    0
  111. #define WQLOOP  1
  112. #define WQEXIT  2
  113.  
  114. /*
  115. ** literal pool
  116. */
  117. #define LITABSZ 800
  118. #define LITMAX  (LITABSZ-1)
  119.  
  120. /*
  121. ** input line
  122. */
  123. #define LINEMAX  127
  124. #define LINESIZE 128
  125.  
  126. /*
  127. ** output staging buffer size
  128. */
  129. #define STAGESIZE   800
  130. #define STAGELIMIT  (STAGESIZE-1)
  131.  
  132. /*
  133. ** macro (define) pool
  134. */
  135. #define MACNBR 100
  136. #define MACNSIZE (MACNBR*(NAMESIZE+2))
  137. #define MACNEND (macn+MACNSIZE)
  138. #define MACQSIZE (MACNBR*5)
  139. #define MACMAX (MACQSIZE-1)
  140.  
  141. /*
  142. ** statement types
  143. */
  144. #define STIF      1
  145. #define STWHILE   2
  146. #define STRETURN  3
  147. #define STBREAK   4
  148. #define STCONT    5
  149. #define STASM     6
  150. #define STEXPR    7
  151. #define STDO      8 /* compile "do" logic */
  152. #define STFOR     9 /* compile "for" logic */
  153. #define STSWITCH 10 /* compile "switch/case/default" logic */
  154. #define STCASE   11
  155. #define STDEF    12
  156. #define STGOTO   13 /* compile "goto" logic */
  157.