]> git.sur5r.net Git - c128-kasse/blob - include/general.h
768b01c77a65029d9da04ffa685dda9cc5dcc23b
[c128-kasse] / include / general.h
1 #ifndef GENERAL_H_
2 #define GENERAL_H_
3 typedef unsigned char BYTE;
4 typedef enum {
5         INPUT_TERMINATOR_RETURN       = (1 << 0),
6         INPUT_TERMINATOR_SPACE        = (1 << 1),
7 } input_terminator_t;
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*);
14 extern BYTE _oserror;
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))
19
20 /* C128 color codes, see PDF page 127 of
21  * http://www.pagetable.com/docs/Commodore%20128%20Programmer%27s%20Reference%20Guide.pdf */
22 #define TC_BLACK        0
23 #define TC_WHITE        1
24 #define TC_RED          2
25 #define TC_CYAN         3
26 #define TC_PURPLE       4
27 #define TC_GREEN        5
28 #define TC_BLUE         6
29 #define TC_YELLOW       7
30 #define TC_ORANGE       8
31 #define TC_BROWN        9
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
40
41 /* Carriage return */
42 #define PETSCII_CR  13
43 /* Delete */
44 #define PETSCII_DEL 20
45 /* Space */
46 #define PETSCII_SP  32
47 #define PETSCII_0   48
48 #define PETSCII_1   49
49 #define PETSCII_2   50
50 #define PETSCII_3   51
51 #define PETSCII_4   52
52 #define PETSCII_5   53
53 #define PETSCII_6   54
54 #define PETSCII_7   55
55 #define PETSCII_8   56
56 #define PETSCII_9   57
57
58 #define VIDEOMODE (((* (BYTE *)0xD7) == 0x80) ? 80 : 40)
59
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)
64 #define str(s) #s
65
66 #define max(a, b) ((a) > (b) ? (a) : (b))
67 #define min(a, b) ((a) > (b) ? (b) : (a))
68
69 #endif /*GENERAL_H_*/