82cf3177ac8eb0f6ce81392e35cc72e00fa36373
[fw/sdcc] / as / z80 / z80.h
1 /* z80.h */
2
3 /*
4  * (C) Copyright 1989-1995
5  * All Rights Reserved
6  *
7  * Alan R. Baldwin
8  * 721 Berkeley St.
9  * Kent, Ohio  44240
10  */
11
12 /*
13  * Extensions: P. Felber
14  */
15
16 /*)BUILD
17         $(PROGRAM) =    ASZ80
18         $(INCLUDE) = {
19                 ASM.H
20                 Z80.H
21         }
22         $(FILES) = {
23                 Z80EXT.C
24                 Z80MCH.C
25                 Z80ADR.C
26                 Z80PST.C
27                 ASMAIN.C
28                 ASLEX.C
29                 ASSYM.C
30                 ASSUBR.C
31                 ASEXPR.C
32                 ASDATA.C
33                 ASLIST.C
34                 ASOUT.C
35         }
36         $(STACK) = 2000
37 */
38
39 /*
40  * Indirect Addressing delimeters
41  */
42 #define LFIND   '('
43 #define RTIND   ')'
44
45 /*
46  * Registers
47  */
48 #define B       0
49 #define C       1
50 #define D       2
51 #define E       3
52 #define H       4
53 #define L       5
54 #define A       7
55
56 #define I       0107
57 #define R       0117
58
59 #define BC      0
60 #define DE      1
61 #define HL      2
62 #define SP      3
63 #define AF      4
64 #ifndef GAMEBOY
65 #define IX      5
66 #define IY      6
67 #else /* GAMEBOY */
68 #define HLD     5
69 #define HLI     6
70 #endif /* GAMEBOY */
71
72 /*
73  * Conditional definitions
74  */
75 #define NZ      0
76 #define Z       1
77 #define NC      2
78 #define CS      3
79 #ifndef GAMEBOY
80 #define PO      4
81 #define PE      5
82 #define P       6
83 #define M       7
84 #endif /* GAMEBOY */
85
86 /*
87  * Symbol types
88  */
89 #define S_IMMED 30
90 #define S_R8    31
91 #define S_R8X   32
92 #define S_R16   33
93 #define S_R16X  34
94 #define S_CND   35
95 #define S_FLAG  36
96
97 /*
98  * Indexing modes
99  */
100 #define S_INDB  40
101 #define S_IDC   41
102 #define S_INDR  50
103 #define S_IDBC  50
104 #define S_IDDE  51
105 #define S_IDHL  52
106 #define S_IDSP  53
107 #ifndef GAMEBOY
108 #define S_IDIX  55
109 #define S_IDIY  56
110 #else /* GAMEBOY */
111 #define S_IDHLD 55
112 #define S_IDHLI 56
113 #endif /* GAMEBOY */
114 #define S_INDM  57
115
116 /*
117  * Instruction types
118  */
119 #define S_LD    60
120 #define S_CALL  61
121 #define S_JP    62
122 #define S_JR    63
123 #define S_RET   64
124 #define S_BIT   65
125 #define S_INC   66
126 #define S_DEC   67
127 #define S_ADD   68
128 #define S_ADC   69
129 #define S_AND   70
130 #ifndef GAMEBOY
131 #define S_EX    71
132 #endif /* GAMEBOY */
133 #define S_PUSH  72
134 #ifndef GAMEBOY
135 #define S_IN    73
136 #define S_OUT   74
137 #endif /* GAMEBOY */
138 #define S_RL    75
139 #define S_RST   76
140 #define S_IM    77
141 #define S_INH1  78
142 #ifndef GAMEBOY
143 #define S_INH2  79
144 #define S_DJNZ  80
145 #endif /* GAMEBOY */
146 #define S_SUB   81
147 #define S_SBC   82
148 #ifdef GAMEBOY
149 #define S_STOP  83
150 #define S_LDH   84
151 #define S_LDA   85
152 #define S_LDHL  86
153 #endif /* GAMEBOY */
154
155 /*
156  * HD64180 Instructions
157  */
158 #define X_HD64  90
159 #define X_INH2  91
160 #define X_IN    92
161 #define X_OUT   93
162 #define X_MLT   94
163 #define X_TST   95
164 #define X_TSTIO 96
165
166 struct adsym
167 {
168         char    a_str[4];       /* addressing string */
169         int     a_val;          /* addressing mode value */
170 };
171
172 extern  struct  adsym   R8[];
173 extern  struct  adsym   R8X[];
174 extern  struct  adsym   R16[];
175 extern  struct  adsym   R16X[];
176 extern  struct  adsym   CND[];
177
178         /* machine dependent functions */
179
180         /* z80adr.c */
181 extern  int             addr();
182 extern  int             admode();
183 extern  int             any();
184 extern  int             srch();
185
186         /* z80mch.c */
187 extern  int             comma();
188 extern  int             genop();
189 extern  int             gixiy();
190 extern  VOID            minit();
191 extern  VOID            machine(struct mne *mp) ;