1/*****************************************************************************/
2/* */
3/* target.h */
4/* */
5/* Target specification */
6/* */
7/* */
8/* */
9/* (C) 2000-2011, Ullrich von Bassewitz */
10/* Roemerstrasse 52 */
11/* D-70794 Filderstadt */
12/* EMail: uz@cc65.org */
13/* */
14/* */
15/* This software is provided 'as-is', without any expressed or implied */
16/* warranty. In no event will the authors be held liable for any damages */
17/* arising from the use of this software. */
18/* */
19/* Permission is granted to anyone to use this software for any purpose, */
20/* including commercial applications, and to alter it and redistribute it */
21/* freely, subject to the following restrictions: */
22/* */
23/* 1. The origin of this software must not be misrepresented; you must not */
24/* claim that you wrote the original software. If you use this software */
25/* in a product, an acknowledgment in the product documentation would be */
26/* appreciated but is not required. */
27/* 2. Altered source versions must be plainly marked as such, and must not */
28/* be misrepresented as being the original software. */
29/* 3. This notice may not be removed or altered from any source */
30/* distribution. */
31/* */
32/*****************************************************************************/
33
34
35
36#ifndef TARGET_H
37#define TARGET_H
38
39
40
41/* common */
42#include "cpu.h"
43
44
45
46/*****************************************************************************/
47/* Data */
48/*****************************************************************************/
49
50
51
52/* Supported target systems */
53typedef enum {
54 TGT_UNKNOWN = -1, /* Not specified or invalid target */
55 TGT_NONE,
56 TGT_MODULE,
57 TGT_ATARI,
58 TGT_ATARI2600,
59 TGT_ATARI5200,
60 TGT_ATARIXL,
61 TGT_VIC20,
62 TGT_C16,
63 TGT_C64,
64 TGT_C128,
65 TGT_PLUS4,
66 TGT_CBM510,
67 TGT_CBM610,
68 TGT_OSIC1P,
69 TGT_PET,
70 TGT_BBC,
71 TGT_APPLE2,
72 TGT_APPLE2ENH,
73 TGT_GEOS_CBM,
74 TGT_CREATIVISION,
75 TGT_GEOS_APPLE,
76 TGT_LUNIX,
77 TGT_ATMOS,
78 TGT_TELESTRAT,
79 TGT_NES,
80 TGT_SUPERVISION,
81 TGT_LYNX,
82 TGT_SIM6502,
83 TGT_SIM65C02,
84 TGT_PCENGINE,
85 TGT_GAMATE,
86 TGT_C65,
87 TGT_COUNT /* Number of target systems */
88} target_t;
89
90/* Collection of target properties */
91typedef struct TargetProperties TargetProperties;
92struct TargetProperties {
93 const char Name[13]; /* Name of the target */
94 cpu_t DefaultCPU; /* Default CPU for this target */
95 unsigned char BinFmt; /* Default binary format for this target */
96 const unsigned char* CharMap; /* Character translation table */
97};
98
99/* Target system */
100extern target_t Target;
101
102/* Types of available output formats */
103#define BINFMT_DEFAULT 0 /* Default (binary) */
104#define BINFMT_BINARY 1 /* Straight binary format */
105#define BINFMT_O65 2 /* Andre Fachats o65 format */
106#define BINFMT_ATARIEXE 3 /* Standard Atari binary load */
107
108
109
110/*****************************************************************************/
111/* Code */
112/*****************************************************************************/
113
114
115
116target_t FindTarget (const char* Name);
117/* Find a target by name and return the target id. TGT_UNKNOWN is returned if
118** the given name is no valid target.
119*/
120
121const TargetProperties* GetTargetProperties (target_t Target);
122/* Return the properties for a target */
123
124const char* GetTargetName (target_t Target);
125/* Return the name of a target */
126
127
128
129/* End of target.h */
130
131#endif
132