acme/src/_riscos.h

77 lines
2.5 KiB
C

// ACME - a crossassembler for producing 6502/65c02/65816/65ce02 code.
// Copyright (C) 1998-2020 Marco Baye
// Have a look at "acme.c" for further info
//
// Platform specific stuff (in this case, for RISC OS)
#ifndef platform_H
#define platform_H
#include "config.h"
// symbolic constants and macros
// called once on program startup (could register exit handler, if needed)
#define PLATFORM_INIT RISCOS_entry()
// convert UNIX-style pathname to RISC OS-style pathname
#define PLATFORM_CONVERTPATH(path) RISCOS_convert_path(path)
// directory separator for include paths
#define DIRECTORY_SEPARATOR '\0' // actually '.', but paths ending on ':' are ok, so auto-adding '.' is bad)
// string containing the prefix for accessing files from the library tree
#define PLATFORM_LIBPREFIX "ACME_Lib:"
#define NO_NEED_FOR_ENV_VAR
// setting file types of created files
#define PLATFORM_SETFILETYPE_APPLE(a) RISCOS_set_filetype(a, 0xffd) // FIXME - wrong value!
#define PLATFORM_SETFILETYPE_CBM(a) RISCOS_set_filetype(a, 0x064)
#define PLATFORM_SETFILETYPE_PLAIN(a) RISCOS_set_filetype(a, 0xffd)
#define PLATFORM_SETFILETYPE_TEXT(a) RISCOS_set_filetype(a, 0xfff)
// platform specific message output
#define PLATFORM_WARNING(a) RISCOS_throwback(a, 0)
#define PLATFORM_ERROR(a) RISCOS_throwback(a, 1)
#define PLATFORM_SERIOUS(a) RISCOS_throwback(a, 2)
// integer-to-character conversion
#define PLATFORM_UINT2CHAR(x) \
do { \
x ^= x >> 16; \
x ^= x >> 8; \
x &= 255; \
} while (0)
// output of platform-specific command line switches
#define PLATFORM_OPTION_HELP \
" -t, --throwback use the DDEUtils module's \"throwback\" protocol\n"
// processing of platform-specific command line switches
#define PLATFORM_SHORTOPTION_CODE \
case 't': \
RISCOS_flags |= RISCOSFLAG_THROWBACK; \
break;
#define PLATFORM_LONGOPTION_CODE \
else if (strcmp(string, "throwback") == 0) \
RISCOS_flags |= RISCOSFLAG_THROWBACK;
// variables
extern bits RISCOS_flags; // Holds platform-specific flags
#define RISCOSFLAG_THROWBACK (1u << 0) // use throwback protocol
#define RISCOSFLAG_THROWN (1u << 1) // throwback is active
// used as PLATFORM_INIT: registers exit handler
extern void RISCOS_entry(void);
// convert UNIX-style pathname to RISC OS-style pathname
extern void RISCOS_convert_path(char *path);
// setting the created files' types
extern void RISCOS_set_filetype(const char *filename, int type);
// use DDEUtils module's "Throwback" protocol
extern void RISCOS_throwback(const char *msg, int type);
#endif