home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / programming / msdos / xa214f.lzh / xa214f / src / xah.h < prev    next >
C/C++ Source or Header  |  1997-12-30  |  6KB  |  200 lines

  1.  
  2. /*
  3.     XA65 - 6502 CROSS ASSEMBLER AND UTILITY SUITE
  4.     cOPYRIGHT (c) 1989-1997 aNDR{$e9} fACHAT (A.FACHAT@PHYSIK.TU-CHEMNITZ.DE)
  5.  
  6.     tHIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
  7.     IT UNDER THE TERMS OF THE gnu gENERAL pUBLIC lICENSE AS PUBLISHED BY
  8.     THE fREE sOFTWARE fOUNDATION; EITHER VERSION 2 OF THE lICENSE, OR
  9.     (AT YOUR OPTION) ANY LATER VERSION.
  10.  
  11.     tHIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
  12.     BUT without any warranty; WITHOUT EVEN THE IMPLIED WARRANTY OF
  13.     merchantability OR fitness for a particular purpose.  sEE THE
  14.     gnu gENERAL pUBLIC lICENSE FOR MORE DETAILS.
  15.  
  16.     yOU SHOULD HAVE RECEIVED A COPY OF THE gnu gENERAL pUBLIC lICENSE
  17.     ALONG WITH THIS PROGRAM; IF NOT, WRITE TO THE fREE sOFTWARE
  18.     fOUNDATION, iNC., 675 mASS aVE, cAMBRIDGE, ma 02139, usa.
  19. */
  20.  
  21.  
  22. #DEFINE   anzlab    5000       /* MAL 14 -> bYTE   */
  23. #DEFINE   labmem    40000l
  24. #DEFINE   maxlab    32
  25. #DEFINE   maxblk    16
  26. #DEFINE   maxfile   7
  27. #DEFINE   maxline   2048
  28. #DEFINE   maxpp     40000l
  29. #DEFINE   anzdef    2340      /* MAL 14 -> bYTE , anzdef*14<32768       */
  30. #DEFINE   tmpmem    200000l   /* zWISCHENSPEICHER VON pASS1 NACH pASS 2 */
  31.  
  32. TYPEDEF STRUCT {$7b}
  33.      INT BLK;
  34.      INT VAL;
  35.      INT LEN;
  36.      INT FL;   /* 0 = LABEL VALUE NOT VALID/KNOWN, 1 = LABEL VALUE KNOWN */
  37.      INT AFL;/* 0 = NO ADDRESS (NO RELOCATION), 1 = ADDRESS LABEL */
  38.      INT NEXTINDEX;
  39.      CHAR *N;
  40. {$7d} lABTAB;
  41.  
  42. TYPEDEF STRUCT {$7b}
  43.      CHAR *SEARCH;
  44.      INT  S_LEN;
  45.      CHAR *REPLACE;
  46.      INT  P_ANZ;
  47.      INT  NEXTINDEX;
  48. {$7d} lIST;
  49.  
  50.  
  51. #DEFINE   memlen    (4+tmpmem+maxpp+labmem+(LONG)(SIZEOF(lABTAB)*anzlab)+(LONG)(SIZEOF(lIST)*anzdef))
  52.  
  53. #DEFINE   dirchar    '/'
  54. #DEFINE  dircstring "/" 
  55. /* FOR aTARI:
  56. #DEFINE  dirchar    '\\'
  57. #DEFINE  dircstring "\\"
  58. */
  59.  
  60. #DEFINEbufsize4096/* fILE-pUFFEGROESSE (WG fESTPLATTE)*/
  61.  
  62. #DEFINE   e_ok      0         /* fEHLERNUMMERN                   */
  63. #DEFINE   e_syntax  -1        /* sYNTAX fEHLER                   */
  64. #DEFINE   e_labdef  -2        /* lABEL DEFINIERT                 */
  65. #DEFINE   e_nodef   -3        /* lABEL NICHT DEFINIERT           */
  66. #DEFINE   e_labfull -4        /* lABELTABELLE VOLL               */
  67. #DEFINE   e_labexp  -5        /* lABEL ERWARTET                  */
  68. #DEFINE   e_nomem   -6        /* KEIN sPEICHER MEHR              */
  69. #DEFINE   e_illcode -7        /* iLLEGALER oPCODE                */
  70. #DEFINE   e_adress  -8        /* iLLEGALE aDRESSIERUNG           */
  71. #DEFINE   e_range   -9        /* bRANCH OUT OF RANGE             */
  72. #DEFINE   e_overflow -10      /* uEBERLAUF                       */
  73. #DEFINE   e_div     -11       /* dIVISION DURCH nULL             */
  74. #DEFINE   e_psoexp  -12       /* pSEUDO-oPCODE ERWARTET          */
  75. #DEFINE   e_blkovr  -13       /* bLOCK-sTACK uEBERGELAUFEN       */
  76. #DEFINE   e_fnf     -14       /* fILE NOT FOUND (PP)             */
  77. #DEFINE   e_eof     -15       /* eND OF fILE                     */
  78. #DEFINE   e_block   -16       /* bLOCK INKONSISTENT              */
  79. #DEFINE   e_noblk   -17
  80. #DEFINE   e_nokey   -18
  81. #DEFINE   e_noline  -19
  82. #DEFINE   e_okdef   -20      /* OKDEF */
  83. #DEFINE   e_dsb     -21
  84. #DEFINE   e_newline -22
  85. #DEFINE   e_newfile -23
  86. #DEFINE   e_cmos    -24
  87. #DEFINE   e_anzpar  -25
  88. #DEFINE  e_illpointer -26    /* ILLEGAL POINTER ARITHMETIC! */
  89. #DEFINE  e_illsegment -27    /* ILLEGAL POINTER ARITHMETIC! */
  90. #DEFINE  e_optlen  -28       /* FILE HEADER OPTION TOO LONG */
  91. #DEFINE  e_romopt  -29       /* HEADER OPTION NOT DIRECTLY AFTER FILE START
  92.  IN ROMABLE MODE */
  93. #DEFINE  e_illalign -30      /* ILLEGAL ALIGN VALUE */
  94.  
  95. #DEFINE  w_adrreloc-31/* WORD RELOCATION IN BYTE VALUE */
  96. #DEFINE  w_bytreloc-32/* BYTE RELOCATION IN WORD VALUE */
  97. #DEFINE  e_wpointer -33     /* ILLEGAL POINTER ARITHMETIC!   */
  98. #DEFINE  w_addracc-34/* ADDR ACCESS TO LOW OR HIGH BYTE POINTER */
  99. #DEFINE  w_highacc-35/* HIGH BYTE ACCESS TO LOW BYTE POINTER */
  100. #DEFINE  w_lowacc-36/* LOW BYTE ACCESS TO HIGH BYTE POINTER */
  101.  
  102. #DEFINE   t_value   -1
  103. #DEFINE   t_label   -2 
  104. #DEFINE   t_op      -3
  105. #DEFINE   t_end     -4
  106. #DEFINE   t_line    -5
  107. #DEFINE   t_file    -6
  108. #DEFINE   t_pointer -7
  109.  
  110. #DEFINE   p_start   0         /* pRIORITAETEN FUER aRITHMETIK    */
  111. #DEFINE   p_lor     1         /* vON ZWEI oPERATIONEN WIRD IMMER */
  112. #DEFINE   p_land    2         /* DIE MIT DER HOEHEREN pRIORITAET */
  113. #DEFINE   p_or      3         /* ZUERST AUSGEFUEHRT              */
  114. #DEFINE   p_xor     4
  115. #DEFINE   p_and     5
  116. #DEFINE   p_equ     6
  117. #DEFINE   p_cmp     7
  118. #DEFINE   p_shift   8
  119. #DEFINE   p_add     9
  120. #DEFINE   p_mult    10
  121. #DEFINE   p_inv     11
  122.  
  123. #DEFINE  a_adr    0X8000/* ALL ARE OR'D WITH (AFL = SEGMENT TYPE)<<8 */
  124. #DEFINE   a_high    0X4000/* OR'D WITH THE LOW BYTE */
  125. #DEFINE   a_low     0X2000
  126. #DEFINE   a_mask    0XE000/* RELOC TYPE MASK */
  127. #DEFINE   a_fmask   0X0F00/* SEGMENT TYPE MASK */
  128.  
  129. #DEFINE  fm_obj    0X1000
  130. #DEFINE   fm_size   0X2000
  131. #DEFINE   fm_reloc  0X4000
  132. #DEFINE   fm_cpu    0X8000
  133.  
  134. #DEFINE seg_abs         0
  135. #DEFINE seg_undef       1
  136. #DEFINE seg_text        2
  137. #DEFINE seg_data        3
  138. #DEFINE seg_bss         4
  139. #DEFINE seg_zero        5
  140.  
  141. #DEFINE seg_max         6
  142.  
  143. TYPEDEF STRUCT fOPT {$7b}
  144.         SIGNED CHAR *TEXT;          /* TEXT AFTER PASS1 */
  145.         INT     LEN;
  146. {$7d} fOPT;
  147.  
  148. TYPEDEF STRUCT RELOCATEiNFO {$7b}
  149.                 INT             NEXT;
  150.                 INT             ADR;
  151.                 INT             AFL;
  152.                 INT             LAB;
  153. {$7d} RELOCATEiNFO;
  154.  
  155. TYPEDEF STRUCT {$7b}
  156. INTFMODE;
  157. INT SLEN;
  158. INTRELMODE;
  159. INTOLD_ABSPC;
  160. INTBASE[seg_max];
  161. INTLEN[seg_max];
  162. STRUCT {$7b}
  163. SIGNED CHAR *TMP;
  164. UNSIGNED LONGTMPZ;
  165. UNSIGNED LONGTMPE;
  166. {$7d} MN;
  167. STRUCT {$7b}
  168. INT*ULIST;
  169. INT UN;
  170. INT UM;
  171. {$7d} UD;
  172. STRUCT {$7b}
  173. RELOCATEiNFO *RLIST;
  174. INT MLIST;
  175. INTNLIST;
  176. INTFIRST;
  177. {$7d} RT;
  178. STRUCT {$7b}
  179. RELOCATEiNFO *RLIST;
  180. INT MLIST;
  181. INTNLIST;
  182. INTFIRST;
  183. {$7d} RD;
  184. STRUCT {$7b}
  185. fOPT*OLIST;
  186. INTMLIST;
  187. INTNLIST;
  188. {$7d} FO;
  189. STRUCT {$7b}
  190. INT HASHINDEX[256];
  191. lABTAB*LT;
  192. INTLTI;
  193. INTLTM;
  194. {$7d} LA;
  195. {$7d} fILE;
  196.  
  197. EXTERN fILE *AFILE;
  198.  
  199.  
  200.