5#elif __STDC_VERSION__ < 202311L
13static uint16_t *
const vram = (uint16_t *)0x8c000000;
14static constexpr unsigned int width = 320;
15static constexpr unsigned int height = 528;
17void line(
unsigned int x1,
unsigned int y1,
unsigned int x2,
unsigned int y2, uint16_t color);
18void vline(
unsigned int x,
unsigned int y1,
unsigned int y2, uint16_t color);
19void triangle(
unsigned int x0,
unsigned int y0,
unsigned int x1,
unsigned int y1,
unsigned int x2,
unsigned int y2, uint16_t colorFill, uint16_t colorLine);
20void fillScreen(uint16_t color);
25static inline __attribute__((pure)) uint16_t color(uint8_t R, uint8_t G, uint8_t B) {
26 return (((R<<8) & 0xF800) |
31static inline void setPixel(
unsigned int x,
unsigned int y, uint32_t color) {
32 if(x < width && y < height)
33 vram[width*y + x] = color;
39#pragma GCC diagnostic push
41#pragma GCC diagnostic ignored "-Wprio-ctor-dtor"
43__attribute__((constructor(99), used))
void calcInit(
void);
44__attribute__((destructor(99), used))
void calcExit(
void);
45#pragma GCC diagnostic pop
50__attribute__((access(write_only, 1), access(write_only, 2)))
52void getKey(uint32_t *key1, uint32_t *key2);
55 KEY_SHIFT = (int)0x80000000,
56 KEY_CLEAR = 0x00020000,
57 KEY_BACKSPACE = 0x00000080,
58 KEY_LEFT = 0x00004000,
59 KEY_RIGHT = 0x00008000,
61 KEY_POWER = 0x00000040,
62 KEY_DIVIDE = 0x40000000,
63 KEY_MULTIPLY = 0x20000000,
64 KEY_SUBTRACT = 0x10000000,
74 KEY_KEYBOARD = (int)0x80000000,
76 KEY_DOWN = 0x00400000,
77 KEY_EQUALS = 0x00000080,
80 KEY_LEFT_BRACKET = 0x00000020,
81 KEY_RIGHT_BRACKET = 0x00000010,
82 KEY_COMMA = 0x00000008,
83 KEY_NEGATIVE = 0x00000004,
99__attribute__((access(write_only, 1), access(write_only, 2)))
101void getKey(Keys1 *key1, Keys2 *key2) {
104 *key1 =
static_cast<Keys1
>(k1);
105 *key2 =
static_cast<Keys2
>(k2);
108static inline __attribute__((pure))
bool constexpr testKey(uint32_t key1, uint32_t, Keys1 key) {
112static inline __attribute__((pure))
bool constexpr testKey(uint32_t, uint32_t key2, Keys2 key) {