home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / emulator / unix / z80pack / z80asm / z80a.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-09  |  5.9 KB  |  147 lines

  1. /*
  2.  *      Z80 - Assembler
  3.  *      Copyright (C) 1987-1992 by Udo Munk
  4.  *
  5.  *    History:
  6.  *    17-SEP-1987 Development under Digital Research CP/M 2.2
  7.  *      28-JUN-1988 Switched to Unix System V.3
  8.  */
  9.  
  10. /*
  11.  *      Rechner und Betriebssystem abhaengige Definitionen
  12.  */
  13. #define LENFN           128     /* max. Laenge von Filenamen */
  14. #define READA           "r"     /* file open mode read ascii */
  15. #define WRITEA          "w"     /* file open mode write ascii */
  16. #define WRITEB          "w"     /* file open mode write binary */
  17.  
  18. /*
  19.  *    Diverse Konstanten
  20.  */
  21. #define REL             "1.1"
  22. #define COPYR           "Copyright (C) 1988, 89, 90 by Udo Munk"
  23. #define SRCEXT          ".asm"  /* Filenamen-Extension der Quelle */
  24. #define OBJEXT          ".bin"  /* Filenamen-Extension des Object Code */
  25. #define LSTEXT        ".lis"    /* Filenamen-Extension des Listings */
  26. #define OUTBIN          1       /* Format der Objektdatei: binaer */
  27. #define OUTMOS          2       /*                         Mostek binaer */
  28. #define OUTHEX          3       /*                         Intel hex */
  29. #define OUTDEF          OUTMOS  /* Default-Format der Objektdatei */
  30. #define COMMENT        ';'    /* Kommentar-Zeichen */
  31. #define LINCOM          '*'     /* wenn in Spalte 1, Kommentarzeile */
  32. #define LABSEP        ':'    /* Label-Seperator */
  33. #define STRSEP          '\''    /* String-Separator */
  34. #define ENDFILE         "END"   /* Ende der Quelle */
  35. #define MAXFN           512     /* max. Anzahl Quellen */
  36. #define MAXLINE         128     /* max. Laenge einer Zeile Quelle */
  37. #define PLENGTH         65      /* Default Anzahl Zeilen/Seite im Listing */
  38. #define SYMSIZE         8       /* max. Laenge Symbole */
  39. #define INCNEST         5       /* INCLUDE Verschachtelungstiefe */
  40. #define IFNEST          5       /* IF..    Verschachtelungstiefe */
  41. #define HASHSIZE        500     /* Anzahl Eintraege in Symbol-Hash-Array */
  42. #define OPCARRAY        256     /* Groesse des Arrays fuer generierte Ops */
  43. #define SYMINC          100     /* Anfangsgroesse des sortierten Symbol-Array */
  44.  
  45. /*
  46.  *    Struktur der OP-Code Tabelle
  47.  */
  48. struct opc {
  49.     char *op_name;        /* Op-Code Name */
  50.     int (*op_fun) ();    /* Pointer auf Funktion zur Codeerzeugung */
  51.     int  op_c1;             /* erster Basis-OP-Code */
  52.     int  op_c2;             /* zweiter Basis-OP-Code */
  53. };
  54.  
  55. /*
  56.  *      Struktur der Operanden Tabelle
  57.  */
  58. struct ope {
  59.     char *ope_name;         /* Operand Name */
  60.     int ope_sym;            /* Symbolischer Wert des Operanden */
  61. };
  62.  
  63. /*
  64.  *      Struktur der Symbol-Tabelleneintraege
  65.  */
  66. struct sym {
  67.     char *sym_name;        /* Symbol Name */
  68.     int  sym_wert;          /* Symbol Wert */
  69.     struct sym *sym_next;    /* naechster Eintrag */
  70. };
  71.  
  72. /*
  73.  *      Struktur fuer verschachtelte INCLUDE's
  74.  */
  75. struct inc {
  76.     unsigned inc_line;      /* Zeilenzaehler fuers Listing */
  77.     char *inc_fn;           /* Filename der Datei mit INCLUDE */
  78.     FILE *inc_fp;           /* Filepointer der Datei mit INCLUDE */
  79. };
  80.  
  81. /*
  82.  *      Definition der Symbole fuer die Operanden.
  83.  *      Die Definitionen fuer Register A, B, C, D, H, L
  84.  *      und (HL) entsprechen den Bits in den Opcodes
  85.  *      und duerfen auf keinen Fall geaendert werden!
  86.  */
  87. #define REGB            0       /* Register B */
  88. #define REGC            1       /* Register C */
  89. #define REGD            2       /* Register D */
  90. #define REGE            3       /* Register E */
  91. #define REGH            4       /* Register H */
  92. #define REGL            5       /* Register L */
  93. #define REGIHL          6       /* Register indirekt HL */
  94. #define REGA            7       /* Register A */
  95. #define REGI            8       /* Register I */
  96. #define REGR            9       /* Register R */
  97. #define REGAF           10      /* Registerpaar AF */
  98. #define REGBC           11      /* Registerpaar BC */
  99. #define REGDE           12      /* Registerpaar DE */
  100. #define REGHL           13      /* Registerpaar HL */
  101. #define REGIX           14      /* Register IX */
  102. #define REGIY           15      /* Register IY */
  103. #define REGSP           16      /* Register SP */
  104. #define REGIBC          17      /* Register indirekt BC */
  105. #define REGIDE          18      /* Register indirekt DE */
  106. #define REGIIX          19      /* Register indirekt IX */
  107. #define REGIIY          20      /* Register indirekt IY */
  108. #define REGISP          21      /* Register indirekt SP */
  109. #define FLGNC           30      /* Flag no carry */
  110. #define FLGNZ           31      /* Flag not zerro */
  111. #define FLGZ            32      /* Flag zerro */
  112. #define FLGM            33      /* Flag minus */
  113. #define FLGP            34      /* Flag plus */
  114. #define FLGPE           35      /* Flag parrity even */
  115. #define FLGPO           36      /* Flag parrity odd */
  116. #define NOOPERA         98      /* kein Operand vorhanden */
  117. #define NOREG           99      /* Operand ist kein Register */
  118.  
  119. /*
  120.  *      Definition der Assembler-Fehler-Nummern, die
  121.  *      zu Fehlermeldungen im Listfile fuehren
  122.  *      (siehe asmerr)
  123.  */
  124. #define E_ILLOPC        0       /* illegaler Opcode */
  125. #define E_ILLOPE        1       /* illegaler Operand */
  126. #define E_MISOPE        2       /* fehlender Operand */
  127. #define E_MULSYM        3       /* mehrfach definiertes Symbol */
  128. #define E_UNDSYM        4       /* undefiniertes Symbol */
  129. #define E_VALOUT        5       /* Wert ausserhalb Bereich */
  130. #define E_MISPAR        6       /* Klammer fehlt */
  131. #define E_MISHYP        7       /* String Separator fehlt */
  132. #define E_MEMOVR        8       /* memory override (ORG) */
  133. #define E_MISIFF        9       /* fehlendes IF bei ELSE oder ENDIF */
  134. #define E_IFNEST        10      /* IF zu tief verschachtelt */
  135. #define E_MISEIF        11      /* fehlendes ENDIF */
  136. #define E_INCNEST       12      /* INCLUDE zu tief verschachtelt */
  137.  
  138. /*
  139.  *      Definition der Fehlernummern, die zum sofortigen
  140.  *      Abbruch des Programms fuehren (siehe fatal)
  141.  */
  142. #define F_OUTMEM        0       /* out of memory */
  143. #define F_USAGE         1       /* usage: .... */
  144. #define F_HALT          2       /* Assembly halted */
  145. #define F_FOPEN         3       /* can't open file */
  146. #define F_INTERN        4       /* internal error */
  147.