1 // and now for something completely different...
2 // UrAsm built-in Forth Engine!
12 UFO_ZX_LABEL_UNDEFINED
= -1,
13 UFO_ZX_LABEL_UNKNOWN
= 0, // referenced, but not defined yet
14 UFO_ZX_LABEL_VAR
= 1, // a = value
15 UFO_ZX_LABEL_EQU
= 2, // a equ value
16 UFO_ZX_LABEL_CODE
= 3,
17 UFO_ZX_LABEL_DATA
= 4,
18 UFO_ZX_LABEL_STOFS
= 5, // structure offset
22 // should abort; defined by the main app
23 extern void ufoFatalError (void) __attribute__((noreturn
));
25 extern void ufoZXPostInit (void);
27 // return pointer to line text or NULL
28 extern const char *ufoGetSrcLine (const char **fname
, int *lnum
);
30 // returns malloced string
31 extern char *ufoCreateIncludeName (const char *fname
, int assystem
, const char *lastIncPath
);
33 // this also creates labels
34 extern void ufoZXSetLabelValue (const char *name
, int type
, int value
);
35 extern int ufoZXGetLabelValue (const char *name
);
36 // returns `UFO_ZX_LABEL_xxx`
37 extern int ufoZXGetLabelType (const char *name
);
39 // return !0 to stop; returns cb result
40 extern uint32_t ufoZXForeachLabel (uint32_t (*cb
) (const char *name
, int type
, int value
, void *udata
), void *udata
);
42 extern uint32_t ufoZXGetU8 (uint32_t addr
);
43 extern void ufoZXPutU8 (uint32_t addr
, uint32_t v
);
44 extern uint32_t ufoZXGetU16 (uint32_t addr
);
45 extern void ufoZXPutU16 (uint32_t addr
, uint32_t v
);
46 extern void ufoZXEmitU8 (uint32_t v
);
47 extern void ufoZXEmitU16 (uint32_t v
);
49 extern int ufoZXGetReserved (uint32_t addr
);
50 extern void ufoZXSetReserved (uint32_t addr
, int resvflag
);
52 extern int ufoZXGetPass (void);
53 extern uint32_t ufoZXGetOrg (void);
54 extern void ufoZXSetOrg (uint32_t addr
);
55 extern uint32_t ufoZXGetDisp (void);
56 extern void ufoZXSetDisp (uint32_t addr
);
57 extern uint32_t ufoZXGetEnt (void);
58 extern void ufoZXSetEnt (uint32_t addr
);
60 // can be called by the main app
61 void ufoFatal (const char *fmt
, ...) __attribute__((noreturn
)) __attribute__((format(printf
, 1, 2)));
63 void ufoInlineRun (void);
64 uint32_t ufoIsMacro (const char *wname
);
65 void ufoMacroRun (uint32_t cfaidx
, const char *line
, const char *fname
, int lnum
);
66 void ufoDeinit (void);