struct / union in initializer, RFE #901.
[sdcc.git] / sdcc / sdas / as8xcxxx / ds8.h
blob0cfb9d97a16060e81a1cfbfc296e726bfe33a748
1 /* ds8.h */
3 /*
4 * Copyright (C) 1998-2009 Alan R. Baldwin
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 3 of the License, or
9 * (at your option) any later version.
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.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 * Alan R. Baldwin
21 * 721 Berkeley St.
22 * Kent, Ohio 44240
24 * This Assember Ported by
25 * jhartman at compuserve dot com
26 * noice at noicedebugger dot com
28 * Modified from i51pst.c
29 * Bill McKinnon
30 * w_mckinnon at conknet dot com
34 /*)BUILD
35 $(PROGRAM) = AS8XCXXX
36 $(INCLUDE) = {
37 ASXXXX.H
38 DS8.H
40 $(FILES) = {
41 DS8MCH.C
42 DS8ADR.C
43 DS80PST.C
44 ASMAIN.C
45 ASDBG.C
46 ASLEX.C
47 ASSYM.C
48 ASSUBR.C
49 ASEXPR.C
50 ASDATA.C
51 ASLIST.C
52 ASOUT.C
54 $(STACK) = 3000
57 /* Addressing modes */
58 #define S_A 30 /* A */
59 /* #define S_B 31 */ /* B */
60 #define S_C 32 /* C (carry) */
61 #define S_RAB 33 /* AB */
62 #define S_DPTR 34 /* DPTR */
63 #define S_REG 35 /* Register R0-R7 */
64 #define S_IMMED 36 /* immediate */
65 #define S_DIR 37 /* direct */
66 #define S_EXT 38 /* extended */
67 #define S_PC 39 /* PC (for addressing mode) */
69 #define S_AT_R 40 /* @R0 or @R1 */
70 #define S_AT_DP 41 /* @DPTR */
71 #define S_AT_APC 42 /* @A+PC */
72 #define S_AT_ADP 43 /* @A+DPTR */
73 #define S_NOT_BIT 44 /* /BIT (/DIR) */
76 * Symbol types.
78 #define S_INH 50 /* One byte inherent */
79 #define S_JMP11 51 /* Jump and call 11 bit. */
80 #define S_JMP16 52 /* Jump and call 16 bit */
81 #define S_ACC 53 /* Accumulator */
82 #define S_TYP1 54 /* Type 1 (inc and dec) */
83 #define S_TYP2 55 /* Type 2 (arith ops) */
84 #define S_TYP3 56 /* Type 3 (logic ops) */
85 #define S_TYP4 57 /* Type 4 (XCH) */
86 #define S_MOV 58 /* MOV */
87 #define S_BITBR 59 /* bit branch */
88 #define S_BR 60 /* branch */
89 #define S_ACBIT 61 /* CLR, CPL */
90 #define S_CJNE 62 /* CJNE */
91 #define S_DJNZ 63 /* DJNZ */
92 #define S_JMP 64 /* JMP */
93 #define S_MOVC 65 /* MOVC */
94 #define S_MOVX 66 /* MOVX */
95 #define S_AB 67 /* AB (div and mul) */
96 #define S_CPL 68 /* CPL */
97 #define S_SETB 69 /* SETB */
98 #define S_DIRECT 70 /* DIRECT (pusha and pop) */
99 #define S_XCHD 71 /* XCHD */
101 #define S_AMODE 90 /* address mode directive */
103 #define S_CPU 91 /* Machines */
106 * Processor Types (S_CPU)
108 #define X_DS______ 0
109 #define X_DS8XCXXX 1
110 #define X_DS80C310 2
111 #define X_DS80C320 3
112 #define X_DS80C323 4
113 #define X_DS80C390 5
114 #define X_DS83C520 6
115 #define X_DS83C530 7
116 #define X_DS83C550 8
117 #define X_DS87C520 9
118 #define X_DS87C530 10
119 #define X_DS87C550 11
122 * Registers. Value == address in RAM, except for PC
124 #define R0 0
125 #define R1 1
126 #define R2 2
127 #define R3 3
128 #define R4 4
129 #define R5 5
130 #define R6 6
131 #define R7 7
132 #define A 0xE0
133 #define DPTR 0x82
134 #define PC 0xFF /* dummy number for register ID only */
135 #define AB 0xFE /* dummy number for register ID only */
136 #define C 0xFD /* dummy number for register ID only */
138 struct adsym
140 char a_str[5]; /* addressing string (length for DPTR+null)*/
141 int a_val; /* addressing mode value */
144 /* pre-defined symbol structure: name, value, processor type */
145 struct PreDef
147 char *id; /* ARB */
148 int value;
149 int ptype;
151 extern struct PreDef preDef[];
154 * Assembler Types
156 #define DS______ (0x00000000)
157 #define DS8XCXXX (0x00000001)
158 #define DS80C310 (0x00000002)
159 #define DS80C320 (0x00000004)
160 #define DS80C323 (0x00000008)
161 #define DS80C390 (0x00000010)
162 #define DS83C520 (0x00000100)
163 #define DS83C530 (0x00000200)
164 #define DS83C550 (0x00000400)
165 #define DS87C520 (0x00001000)
166 #define DS87C530 (0x00002000)
167 #define DS87C550 (0x00004000)
169 /* machine dependent functions */
171 #define DS_CPU "Dallas Semiconductor"
173 #ifdef OTHERSYSTEM
175 /* ds8adr.c */
176 extern struct adsym reg51[];
177 extern int addr(struct expr *esp);
178 extern int admode(struct adsym *sp);
179 extern int any(int c, char *str);
180 extern int srch(char *str);
181 extern int reg(void);
183 /* ds8mch.c */
184 extern VOID machine(struct mne *mp);
185 extern int mchpcr(struct expr *esp);
186 extern VOID minit(void);
188 #else
190 /* ds8adr.c */
191 extern struct adsym reg51[];
192 extern int addr();
193 extern int admode();
194 extern int any();
195 extern int srch();
196 extern int reg();
198 /* ds8mch.c */
199 extern VOID machine();
200 extern int mchpcr();
201 extern VOID minit();
203 #endif