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
29void sys_interrupt_set_hook(uint8_t id, intvector_t __far* new_vector, intvector_t __far* old_vector);
30
34void sys_interrupt_reset_hook(uint8_t id, intvector_t __far* old_vector);
35
36static inline void sys_wait(uint16_t ticks) {
37 uint16_t result;
38 __asm volatile (
39 "int $0x17"
40 : "=a" (result)
41 : "c" (ticks), "Rah" ((uint8_t) 0x02)
42 : "cc", "memory"
43 );
44}
45
49static inline uint16_t sys_get_tick_count(void) {
50 uint16_t result;
51 __asm volatile (
52 "int $0x17"
53 : "=a" (result)
54 : "Rah" ((uint8_t) 0x03)
55 : "cc", "memory"
56 );
57 return (uint16_t) result;
58}
59
60static inline void sys_sleep(void) {
61 uint16_t result;
62 __asm volatile (
63 "int $0x17"
64 : "=a" (result)
65 : "Rah" ((uint8_t) 0x04)
66 : "cc", "memory"
67 );
68}
69
70static inline void sys_set_sleep_time(uint16_t value) {
71 uint16_t result;
72 __asm volatile (
73 "int $0x17"
74 : "=a" (result)
75 : "b" (value), "Rah" ((uint8_t) 0x05)
76 : "cc", "memory"
77 );
78}
79
80static inline uint16_t sys_get_sleep_time(void) {
81 uint16_t result;
82 __asm volatile (
83 "int $0x17"
84 : "=a" (result)
85 : "Rah" ((uint8_t) 0x06)
86 : "cc", "memory"
87 );
88 return (uint16_t) result;
89}
90
91static inline void sys_set_awake_key(uint16_t value) {
92 uint16_t result;
93 __asm volatile (
94 "int $0x17"
95 : "=a" (result)
96 : "b" (value), "Rah" ((uint8_t) 0x07)
97 : "cc", "memory"
98 );
99}
100
101static inline uint16_t sys_get_awake_key(void) {
102 uint16_t result;
103 __asm volatile (
104 "int $0x17"
105 : "=a" (result)
106 : "Rah" ((uint8_t) 0x08)
107 : "cc", "memory"
108 );
109 return (uint16_t) result;
110}
111
112static inline void sys_set_keepalive_int(uint16_t value) {
113 uint16_t result;
114 __asm volatile (
115 "int $0x17"
116 : "=a" (result)
117 : "b" (value), "Rah" ((uint8_t) 0x09)
118 : "cc", "memory"
119 );
120}
121
129uint16_t sys_get_ownerinfo(uint16_t size, void __far* data);
130
131static inline void sys_set_remote(uint8_t value) {
132 uint16_t result;
133 __asm volatile (
134 "int $0x17"
135 : "=a" (result)
136 : "a" ((uint16_t) (((0x0D) << 8) | (value & 0xFF)))
137 : "cc", "memory"
138 );
139}
140
141static inline uint8_t sys_get_remote(void) {
142 uint16_t result;
143 __asm volatile (
144 "int $0x17"
145 : "=a" (result)
146 : "Rah" ((uint8_t) 0x0E)
147 : "cc", "memory"
148 );
149 return (uint8_t) result;
150}
151
152static inline void __wf_iram* sys_alloc_iram(void* ptr, uint16_t size) {
153 uint16_t result;
154 __asm volatile (
155 "int $0x17"
156 : "=a" (result)
157 : "b" (ptr), "c" (size), "Rah" ((uint8_t) 0x0F)
158 : "cc", "memory"
159 );
160 return (void __wf_iram*) result;
161}
162
163static inline void sys_free_iram(void __wf_iram* ptr) {
164 uint16_t result;
165 __asm volatile (
166 "int $0x17"
167 : "=a" (result)
168 : "b" (ptr), "Rah" ((uint8_t) 0x10)
169 : "cc", "memory"
170 );
171}
172
173static inline void __wf_iram* sys_get_my_iram(void) {
174 uint16_t result;
175 __asm volatile (
176 "int $0x17"
177 : "=a" (result)
178 : "Rah" ((uint8_t) 0x11)
179 : "cc", "memory"
180 );
181 return (void __wf_iram*) result;
182}
183
187static inline uint16_t sys_get_version(void) {
188 uint16_t result;
189 __asm volatile (
190 "int $0x17"
191 : "=a" (result)
192 : "Rah" ((uint8_t) 0x12)
193 : "cc", "memory"
194 );
195 return (uint16_t) result;
196}
197
198static inline void sys_set_resume(uint16_t value) {
199 uint16_t result;
200 __asm volatile (
201 "int $0x17"
202 : "=a" (result)
203 : "b" (value), "Rah" ((uint8_t) 0x14)
204 : "cc", "memory"
205 );
206}
207
208static inline uint16_t sys_get_resume(void) {
209 uint16_t result;
210 __asm volatile (
211 "int $0x17"
212 : "=a" (result)
213 : "Rah" ((uint8_t) 0x15)
214 : "cc", "memory"
215 );
216 return (uint16_t) result;
217}
218
219/* End auto-generated section */
220
221
222#endif /* __LIBWW_SYS_SYSTEM_H__ */
static uint16_t sys_get_resume(void)
Definition system.h:208
uint16_t sys_get_ownerinfo(uint16_t size, void __far *data)
static uint16_t sys_get_version(void)
Definition system.h:187
static uint16_t sys_get_sleep_time(void)
Definition system.h:80
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:70
static uint16_t sys_get_tick_count(void)
Definition system.h:49
static void __wf_iram * sys_alloc_iram(void *ptr, uint16_t size)
Definition system.h:152
static void sys_free_iram(void __wf_iram *ptr)
Definition system.h:163
static void sys_set_remote(uint8_t value)
Definition system.h:131
static void __wf_iram * sys_get_my_iram(void)
Definition system.h:173
static void sys_set_awake_key(uint16_t value)
Definition system.h:91
static void sys_set_resume(uint16_t value)
Definition system.h:198
static uint8_t sys_get_remote(void)
Definition system.h:141
static void sys_wait(uint16_t ticks)
Definition system.h:36
static void sys_sleep(void)
Definition system.h:60
static void sys_set_keepalive_int(uint16_t value)
Definition system.h:112
static uint16_t sys_get_awake_key(void)
Definition system.h:101
struct intvector intvector_t
Definition types.h:35