97 lines
2.3 KiB
C
97 lines
2.3 KiB
C
|
/* ===========================================================================
|
||
|
* uz80as, an assembler for the Zilog Z80 and several other microprocessors.
|
||
|
*
|
||
|
* Target list.
|
||
|
* ===========================================================================
|
||
|
*/
|
||
|
|
||
|
#include "targets.h"
|
||
|
#include "uz80as.h"
|
||
|
|
||
|
#ifndef STRING_H
|
||
|
#include <string.h>
|
||
|
#endif
|
||
|
|
||
|
extern const struct target s_target_z80;
|
||
|
extern const struct target s_target_hd64180;
|
||
|
extern const struct target s_target_gbcpu;
|
||
|
extern const struct target s_target_dp2200;
|
||
|
extern const struct target s_target_dp2200ii;
|
||
|
extern const struct target s_target_i4004;
|
||
|
extern const struct target s_target_i4040;
|
||
|
extern const struct target s_target_i8008;
|
||
|
extern const struct target s_target_i8021;
|
||
|
extern const struct target s_target_i8022;
|
||
|
extern const struct target s_target_i8041;
|
||
|
extern const struct target s_target_i8048;
|
||
|
extern const struct target s_target_i8051;
|
||
|
extern const struct target s_target_i8080;
|
||
|
extern const struct target s_target_i8085;
|
||
|
extern const struct target s_target_mos6502;
|
||
|
extern const struct target s_target_r6501;
|
||
|
extern const struct target s_target_g65sc02;
|
||
|
extern const struct target s_target_r65c02;
|
||
|
extern const struct target s_target_r65c29;
|
||
|
extern const struct target s_target_w65c02s;
|
||
|
extern const struct target s_target_mc6800;
|
||
|
extern const struct target s_target_mc6801;
|
||
|
extern const struct target s_target_m68hc11;
|
||
|
|
||
|
static const struct target *s_targets[] = {
|
||
|
&s_target_z80,
|
||
|
&s_target_hd64180,
|
||
|
&s_target_gbcpu,
|
||
|
&s_target_dp2200,
|
||
|
&s_target_dp2200ii,
|
||
|
&s_target_i4004,
|
||
|
&s_target_i4040,
|
||
|
&s_target_i8008,
|
||
|
&s_target_i8021,
|
||
|
&s_target_i8022,
|
||
|
&s_target_i8041,
|
||
|
&s_target_i8048,
|
||
|
&s_target_i8051,
|
||
|
&s_target_i8080,
|
||
|
&s_target_i8085,
|
||
|
&s_target_mos6502,
|
||
|
&s_target_r6501,
|
||
|
&s_target_g65sc02,
|
||
|
&s_target_r65c02,
|
||
|
&s_target_r65c29,
|
||
|
&s_target_w65c02s,
|
||
|
&s_target_mc6800,
|
||
|
&s_target_mc6801,
|
||
|
&s_target_m68hc11,
|
||
|
NULL,
|
||
|
};
|
||
|
|
||
|
static int s_index;
|
||
|
|
||
|
const struct target *find_target(const char *id)
|
||
|
{
|
||
|
const struct target **p;
|
||
|
|
||
|
for (p = s_targets; *p != NULL; p++) {
|
||
|
if (strcmp(id, (*p)->id) == 0) {
|
||
|
return *p;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
const struct target *first_target(void)
|
||
|
{
|
||
|
s_index = 0;
|
||
|
return next_target();
|
||
|
}
|
||
|
|
||
|
const struct target *next_target(void)
|
||
|
{
|
||
|
if (s_targets[s_index] != NULL) {
|
||
|
return s_targets[s_index++];
|
||
|
} else {
|
||
|
return NULL;
|
||
|
}
|
||
|
}
|