3 typedef unsigned char BYTE;
5 INPUT_TERMINATOR_RETURN = (1 << 0),
6 INPUT_TERMINATOR_SPACE = (1 << 1),
8 typedef input_terminator_t input_terminator_mask_t;
9 input_terminator_t get_input_terminated_by(input_terminator_mask_t terminators, char *out, BYTE outlen);
10 char *get_input(void);
11 char retry_or_quit(void);
12 char *format_euro(char * s, int maxlen, int cent);
13 void c128_perror(BYTE, char*);
15 #define POKE(addr,val) (*(unsigned char*) (addr) = (val))
16 #define POKEW(addr,val) (*(unsigned*) (addr) = (val))
17 #define PEEK(addr) (*(unsigned char*) (addr))
18 #define PEEKW(addr) (*(unsigned*) (addr))
20 /* C128 color codes, see PDF page 127 of
21 * http://www.pagetable.com/docs/Commodore%20128%20Programmer%27s%20Reference%20Guide.pdf */
32 /* This is the good red */
33 #define TC_LIGHT_RED 10
34 #define TC_DARK_GRAY 11
35 #define TC_MEDIUM_GRAY 12
36 /* This is the good green */
37 #define TC_LIGHT_GREEN 13
38 #define TC_LIGHT_BLUE 14
39 #define TC_LIGHT_GRAY 15
44 #define PETSCII_DEL 20
58 #define VIDEOMODE (((* (BYTE *)0xD7) == 0x80) ? 80 : 40)
60 /* because there is no macro expansion when stringifying, we need to use two
61 * levels of macros to stringify the value of a macro (for example
62 * MAX_ITEM_NAME_LENGTH) */
63 #define xstr(s) str(s)
66 #define max(a, b) ((a) > (b) ? (a) : (b))
67 #define min(a, b) ((a) > (b) ? (b) : (a))