libww libww
WWitch compatibility library for the Wonderful toolchain
Loading...
Searching...
No Matches
system.h
Go to the documentation of this file.
1#include <sys/types.h>
2
3#ifndef __LIBWW_SYS_SYSTEM_H__
4#define __LIBWW_SYS_SYSTEM_H__
5
6/* Begin auto-generated section */
7
8/* Hardware interrupt vectors */
9/* Serial TX ready */
10#define SYS_INT_SENDREADY 0
11/* Key pressed */
12#define SYS_INT_KEY 1
13/* Cartridge IRQ */
14#define SYS_INT_CASETTE 2
15/* Serial RX ready */
16#define SYS_INT_RECEIVEREADY 3
17/* Display interrupt line match */
18#define SYS_INT_DISPLINE 4
19/* VBlank Timer */
20#define SYS_INT_TIMER_COUNTUP 5
21/* VBlank */
22#define SYS_INT_VBLANK 6
23/* HBlank Timer */
24#define SYS_INT_HBLANK_COUNTUP 7
25
26void sys_interrupt_set_hook(uint8_t id, intvector_t __far* new_vector, intvector_t __far* old_vector);
27
28void sys_interrupt_reset_hook(uint8_t id, intvector_t __far* old_vector);
29
30static inline void sys_wait(uint16_t ticks) {
31 uint16_t result;
32 __asm volatile (
33 "int $0x17"
34 : "=a" (result)
35 : "c" (ticks), "Rah" ((uint8_t) 0x02)
36 : "cc", "memory"
37 );
38}
39
40static inline uint16_t sys_get_tick_count(void) {
41 uint16_t result;
42 __asm volatile (
43 "int $0x17"
44 : "=a" (result)
45 : "Rah" ((uint8_t) 0x03)
46 : "cc", "memory"
47 );
48 return result;
49}
50
51static inline void sys_sleep(void) {
52 uint16_t result;
53 __asm volatile (
54 "int $0x17"
55 : "=a" (result)
56 : "Rah" ((uint8_t) 0x04)
57 : "cc", "memory"
58 );
59}
60
61static inline void sys_set_sleep_time(uint16_t value) {
62 uint16_t result;
63 __asm volatile (
64 "int $0x17"
65 : "=a" (result)
66 : "b" (value), "Rah" ((uint8_t) 0x05)
67 : "cc", "memory"
68 );
69}
70
71static inline uint16_t sys_get_sleep_time(void) {
72 uint16_t result;
73 __asm volatile (
74 "int $0x17"
75 : "=a" (result)
76 : "Rah" ((uint8_t) 0x06)
77 : "cc", "memory"
78 );
79 return result;
80}
81
82static inline void sys_set_awake_key(uint16_t value) {
83 uint16_t result;
84 __asm volatile (
85 "int $0x17"
86 : "=a" (result)
87 : "b" (value), "Rah" ((uint8_t) 0x07)
88 : "cc", "memory"
89 );
90}
91
92static inline uint16_t sys_get_awake_key(void) {
93 uint16_t result;
94 __asm volatile (
95 "int $0x17"
96 : "=a" (result)
97 : "Rah" ((uint8_t) 0x08)
98 : "cc", "memory"
99 );
100 return result;
101}
102
103static inline void sys_set_keepalive_int(uint16_t value) {
104 uint16_t result;
105 __asm volatile (
106 "int $0x17"
107 : "=a" (result)
108 : "b" (value), "Rah" ((uint8_t) 0x09)
109 : "cc", "memory"
110 );
111}
112
113void sys_get_ownerinfo(uint16_t size, void __far* data);
114
115static inline void sys_set_remote(uint8_t value) {
116 uint16_t result;
117 __asm volatile (
118 "int $0x17"
119 : "=a" (result)
120 : "a" ((uint16_t) (((0x0D) << 8) | (value & 0xFF)))
121 : "cc", "memory"
122 );
123}
124
125static inline uint8_t sys_get_remote(void) {
126 uint16_t result;
127 __asm volatile (
128 "int $0x17"
129 : "=a" (result)
130 : "Rah" ((uint8_t) 0x0E)
131 : "cc", "memory"
132 );
133 return result;
134}
135
136static inline void __wf_iram* sys_alloc_iram(void* ptr, uint16_t size) {
137 uint16_t result;
138 __asm volatile (
139 "int $0x17"
140 : "=a" (result)
141 : "b" (ptr), "c" (size), "Rah" ((uint8_t) 0x0F)
142 : "cc", "memory"
143 );
144 return result;
145}
146
147static inline void sys_free_iram(void __wf_iram* ptr) {
148 uint16_t result;
149 __asm volatile (
150 "int $0x17"
151 : "=a" (result)
152 : "b" (ptr), "Rah" ((uint8_t) 0x10)
153 : "cc", "memory"
154 );
155}
156
157static inline void __wf_iram* sys_get_my_iram(void) {
158 uint16_t result;
159 __asm volatile (
160 "int $0x17"
161 : "=a" (result)
162 : "Rah" ((uint8_t) 0x11)
163 : "cc", "memory"
164 );
165 return result;
166}
167
168static inline uint16_t sys_get_version(void) {
169 uint16_t result;
170 __asm volatile (
171 "int $0x17"
172 : "=a" (result)
173 : "Rah" ((uint8_t) 0x12)
174 : "cc", "memory"
175 );
176 return result;
177}
178
179static inline void sys_set_resume(uint16_t value) {
180 uint16_t result;
181 __asm volatile (
182 "int $0x17"
183 : "=a" (result)
184 : "b" (value), "Rah" ((uint8_t) 0x14)
185 : "cc", "memory"
186 );
187}
188
189static inline uint16_t sys_get_resume(void) {
190 uint16_t result;
191 __asm volatile (
192 "int $0x17"
193 : "=a" (result)
194 : "Rah" ((uint8_t) 0x15)
195 : "cc", "memory"
196 );
197 return result;
198}
199
200/* End auto-generated section */
201
202
203#endif /* __LIBWW_SYS_SYSTEM_H__ */
static uint16_t sys_get_resume(void)
Definition system.h:189
static uint16_t sys_get_version(void)
Definition system.h:168
static uint16_t sys_get_sleep_time(void)
Definition system.h:71
void sys_interrupt_set_hook(uint8_t id, intvector_t __far *new_vector, intvector_t __far *old_vector)
void sys_interrupt_reset_hook(uint8_t id, intvector_t __far *old_vector)
static void sys_set_sleep_time(uint16_t value)
Definition system.h:61
void sys_get_ownerinfo(uint16_t size, void __far *data)
static uint16_t sys_get_tick_count(void)
Definition system.h:40
static void __wf_iram * sys_alloc_iram(void *ptr, uint16_t size)
Definition system.h:136
static void sys_free_iram(void __wf_iram *ptr)
Definition system.h:147
static void sys_set_remote(uint8_t value)
Definition system.h:115
static void __wf_iram * sys_get_my_iram(void)
Definition system.h:157
static void sys_set_awake_key(uint16_t value)
Definition system.h:82
static void sys_set_resume(uint16_t value)
Definition system.h:179
static uint8_t sys_get_remote(void)
Definition system.h:125
static void sys_wait(uint16_t ticks)
Definition system.h:30
static void sys_sleep(void)
Definition system.h:51
static void sys_set_keepalive_int(uint16_t value)
Definition system.h:103
static uint16_t sys_get_awake_key(void)
Definition system.h:92