5915e992606850cbd1efb02037941b73ddab2f73
[fw/sdcc] / as / z80 / z80pst.c
1 /* z80pst.c */
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 #include <stdio.h>
17 #include <setjmp.h>
18 #include "asm.h"
19 #include "z80.h"
20
21 struct  mne     mne[] = {
22
23         /* machine */
24
25         /* system */
26
27     { NULL,     "CON",          S_ATYP,         0,      A_CON },
28     { NULL,     "OVR",          S_ATYP,         0,      A_OVR },
29     { NULL,     "REL",          S_ATYP,         0,      A_REL },
30     { NULL,     "ABS",          S_ATYP,         0,      A_ABS },
31     { NULL,     "NOPAG",        S_ATYP,         0,      A_NOPAG },
32     { NULL,     "PAG",          S_ATYP,         0,      A_PAG },
33
34     { NULL,     ".byte",        S_BYTE,         0,      0 },
35     { NULL,     ".db",          S_BYTE,         0,      0 },
36     { NULL,     ".word",        S_WORD,         0,      0 },
37     { NULL,     ".dw",          S_WORD,         0,      0 },
38     { NULL,     ".df",          S_FLOAT,        0,      0 },
39     { NULL,     ".ascii",       S_ASCII,        0,      0 },
40     { NULL,     ".asciz",       S_ASCIZ,        0,      0 },
41     { NULL,     ".blkb",        S_BLK,          0,      1 },
42     { NULL,     ".ds",          S_BLK,          0,      1 },
43     { NULL,     ".blkw",        S_BLK,          0,      2 },
44     { NULL,     ".page",        S_PAGE,         0,      0 },
45     { NULL,     ".title",       S_TITLE,        0,      0 },
46     { NULL,     ".sbttl",       S_SBTL,         0,      0 },
47     { NULL,     ".globl",       S_GLOBL,        0,      0 },
48     { NULL,     ".area",        S_DAREA,        0,      0 },
49     { NULL,     ".even",        S_EVEN,         0,      0 },
50     { NULL,     ".odd",         S_ODD,          0,      0 },
51     { NULL,     ".if",          S_IF,           0,      0 },
52     { NULL,     ".else",        S_ELSE,         0,      0 },
53     { NULL,     ".endif",       S_ENDIF,        0,      0 },
54     { NULL,     ".include",     S_INCL,         0,      0 },
55     { NULL,     ".radix",       S_RADIX,        0,      0 },
56     { NULL,     ".org",         S_ORG,          0,      0 },
57     { NULL,     ".module",      S_MODUL,        0,      0 },
58     { NULL,     ".ascis",       S_ASCIS,        0,      0 },
59     { NULL,     ".optsdcc",     S_OPTSDCC,      0,      0 },
60
61         /* z80 / hd64180 */
62
63     { NULL,     "ld",           S_LD,           0,      0x40 },
64
65     { NULL,     "call",         S_CALL,         0,      0xC4 },
66     { NULL,     "jp",           S_JP,           0,      0xC2 },
67     { NULL,     "jr",           S_JR,           0,      0x18 },
68 #ifndef GAMEBOY
69     { NULL,     "djnz",         S_DJNZ,         0,      0x10 },
70 #endif /* GAMEBOY */
71     { NULL,     "ret",          S_RET,          0,      0xC0 },
72
73     { NULL,     "bit",          S_BIT,          0,      0x40 },
74     { NULL,     "res",          S_BIT,          0,      0x80 },
75     { NULL,     "set",          S_BIT,          0,      0xC0 },
76
77     { NULL,     "inc",          S_INC,          0,      0x04 },
78     { NULL,     "dec",          S_DEC,          0,      0x05 },
79
80     { NULL,     "add",          S_ADD,          0,      0x80 },
81     { NULL,     "adc",          S_ADC,          0,      0x88 },
82     { NULL,     "sub",          S_SUB,          0,      0x90 },
83     { NULL,     "sbc",          S_SBC,          0,      0x98 },
84
85     { NULL,     "and",          S_AND,          0,      0xA0 },
86     { NULL,     "cp",           S_AND,          0,      0xB8 },
87     { NULL,     "or",           S_AND,          0,      0xB0 },
88     { NULL,     "xor",          S_AND,          0,      0xA8 },
89
90 #ifndef GAMEBOY
91     { NULL,     "ex",           S_EX,           0,      0xE3 },
92 #endif /* GAMEBOY */
93
94     { NULL,     "push",         S_PUSH,         0,      0xC5 },
95     { NULL,     "pop",          S_PUSH,         0,      0xC1 },
96
97 #ifndef GAMEBOY
98     { NULL,     "in",           S_IN,           0,      0xDB },
99     { NULL,     "out",          S_OUT,          0,      0xD3 },
100 #endif /* GAMEBOY */
101
102     { NULL,     "rl",           S_RL,           0,      0x10 },
103     { NULL,     "rlc",          S_RL,           0,      0x00 },
104     { NULL,     "rr",           S_RL,           0,      0x18 },
105     { NULL,     "rrc",          S_RL,           0,      0x08 },
106     { NULL,     "sla",          S_RL,           0,      0x20 },
107     { NULL,     "sra",          S_RL,           0,      0x28 },
108     { NULL,     "srl",          S_RL,           0,      0x38 },
109
110     { NULL,     "rst",          S_RST,          0,      0xC7 },
111
112 #ifndef GAMEBOY
113     { NULL,     "im",           S_IM,           0,      0xED },
114 #endif /* GAMEBOY */
115
116     { NULL,     "ccf",          S_INH1,         0,      0x3F },
117     { NULL,     "cpl",          S_INH1,         0,      0x2F },
118     { NULL,     "daa",          S_INH1,         0,      0x27 },
119     { NULL,     "di",           S_INH1,         0,      0xF3 },
120     { NULL,     "ei",           S_INH1,         0,      0xFB },
121 #ifndef GAMEBOY
122     { NULL,     "exx",          S_INH1,         0,      0xD9 },
123 #endif /* GAMEBOY */
124     { NULL,     "nop",          S_INH1,         0,      0x00 },
125     { NULL,     "halt",         S_INH1,         0,      0x76 },
126     { NULL,     "rla",          S_INH1,         0,      0x17 },
127     { NULL,     "rlca",         S_INH1,         0,      0x07 },
128     { NULL,     "rra",          S_INH1,         0,      0x1F },
129     { NULL,     "rrca",         S_INH1,         0,      0x0F },
130     { NULL,     "scf",          S_INH1,         0,      0x37 },
131
132 #ifndef GAMEBOY
133     { NULL,     "cpd",          S_INH2,         0,      0xA9 },
134     { NULL,     "cpdr",         S_INH2,         0,      0xB9 },
135     { NULL,     "cpi",          S_INH2,         0,      0xA1 },
136     { NULL,     "cpir",         S_INH2,         0,      0xB1 },
137     { NULL,     "ind",          S_INH2,         0,      0xAA },
138     { NULL,     "indr",         S_INH2,         0,      0xBA },
139     { NULL,     "ini",          S_INH2,         0,      0xA2 },
140     { NULL,     "inir",         S_INH2,         0,      0xB2 },
141     { NULL,     "ldd",          S_INH2,         0,      0xA8 },
142     { NULL,     "lddr",         S_INH2,         0,      0xB8 },
143     { NULL,     "ldi",          S_INH2,         0,      0xA0 },
144     { NULL,     "ldir",         S_INH2,         0,      0xB0 },
145     { NULL,     "neg",          S_INH2,         0,      0x44 },
146     { NULL,     "otdr",         S_INH2,         0,      0xBB },
147     { NULL,     "otir",         S_INH2,         0,      0xB3 },
148     { NULL,     "outd",         S_INH2,         0,      0xAB },
149     { NULL,     "outi",         S_INH2,         0,      0xA3 },
150     { NULL,     "reti",         S_INH2,         0,      0x4D },
151     { NULL,     "retn",         S_INH2,         0,      0x45 },
152     { NULL,     "rld",          S_INH2,         0,      0x6F },
153     { NULL,     "rrd",          S_INH2,         0,      0x67 },
154
155         /* 64180 */
156
157     { NULL,     ".hd64",        X_HD64,         0,      0 },
158
159     { NULL,     "otdm",         X_INH2,         0,      0x8B },
160     { NULL,     "otdmr",        X_INH2,         0,      0x9B },
161     { NULL,     "otim",         X_INH2,         0,      0x83 },
162     { NULL,     "otimr",        X_INH2,         0,      0x93 },
163     { NULL,     "slp",          X_INH2,         0,      0x76 },
164
165     { NULL,     "in0",          X_IN,           0,      0x00 },
166     { NULL,     "out0",         X_OUT,          0,      0x01 },
167
168     { NULL,     "mlt",          X_MLT,          0,      0x4C },
169
170     { NULL,     "tst",          X_TST,          0,      0x04 },
171     { NULL,     "tstio",        X_TSTIO,        S_END,  0x7 }
172 #else /* GAMEBOY */
173     { NULL,     "stop",         S_STOP,         0,      0x10 },
174     { NULL,     "swap",         S_RL,           0,      0x30 },
175     { NULL,     "reti",         S_INH1,         0,      0xD9 },
176     { NULL,     "ldh",          S_LDH,          0,      0xE0 },
177     { NULL,     "lda",          S_LDA,          0,      0xE8 },
178     { NULL,     "ldhl",         S_LDHL,         S_END,  0xF }
179 #endif /* GAMEBOY */
180 };