1
0
vt100-games/2048/uz80as/uz80as.h

64 lines
1.2 KiB
C
Raw Permalink Normal View History

/* ===========================================================================
* uz80as, an assembler for the Zilog Z80 and several other microprocessors.
*
* Assembler.
* ===========================================================================
*/
#ifndef UZ80AS_H
#define UZ80AS_H
int verbose;
/* matchtab.flags */
enum {
MATCH_F_UNDOC = 1,
MATCH_F_EXTEN = 2,
};
/* pat:
* a: expr
* b - z: used by target
*
* gen:
* .: output lastbyte
* b: (op << 3) | lastbyte
* c: op | lastbyte
* d: lastbyte = op as 8 bit value
* e: output op as word (no '.' should follow)
* f - z: used by target
*
* pr:
* 8: e8
* f: e16
* r: relative jump
*/
struct matchtab {
const char *pat;
const char *gen;
unsigned char mask;
unsigned char undoc;
const char *pr;
};
struct target {
const char *id;
const char *descr;
const struct matchtab *matcht;
int (*matchf)(char c, const char *p, const char **q);
int (*genf)(int *eb, char p, const int *vs, int i, int savepc);
void (*pat_char_rewind)(int c);
const char * (*pat_next_str)(void);
unsigned char mask;
};
extern const char *s_pline_ep;
void genb(int b, const char *ep);
int mreg(const char *p, const char *const list[], const char **r);
void uz80as(void);
#endif