libww libww
WWitch compatibility library for the Wonderful toolchain
Loading...
Searching...
No Matches
comm.h
Go to the documentation of this file.
1#include <sys/types.h>
2
3#ifndef __LIBWW_SYS_COMM_H__
4#define __LIBWW_SYS_COMM_H__
5
6/* Begin auto-generated section */
7
8/* Serial port configuration flags */
9/* 9600 bauds per second (960 bytes per second) */
10#define COMM_SPEED_9600 0
11/* 38400 bauds per second (3840 bytes per second) */
12#define COMM_SPEED_38400 1
13
14/* Error return codes */
15/* Success */
16#define ERR_SIO_OK 0
17#define ERR_SIO_BUSY 0x8100
18/* Serial operation timed out */
19#define ERR_SIO_TIMEOUT 0x8101
20/* Serial RX buffer overrun */
21#define ERR_SIO_OVERRUN 0x8102
22/* Serial operation cancelled by user */
23#define ERR_SIO_CANCEL 0x8103
24#define ERR_XM_STATECODE 0x8104
25#define ERR_XM_CANCELED 0x8105
26#define ERR_XM_BLOCK_LOST 0x8106
27#define ERR_XM_TOO_LARGE 0x8107
28
29static inline void comm_open(void) {
30 uint16_t result;
31 __asm volatile (
32 "int $0x14"
33 : "=a" (result)
34 : "Rah" ((uint8_t) 0x00)
35 : "cc", "memory"
36 );
37}
38
39static inline void comm_close(void) {
40 uint16_t result;
41 __asm volatile (
42 "int $0x14"
43 : "=a" (result)
44 : "Rah" ((uint8_t) 0x01)
45 : "cc", "memory"
46 );
47}
48
53static inline int16_t comm_send_char(uint8_t ch) {
54 uint16_t result;
55 __asm volatile (
56 "int $0x14"
57 : "=a" (result)
58 : "b" (ch), "Rah" ((uint8_t) 0x02)
59 : "cc", "memory"
60 );
61 return result;
62}
63
68static inline int16_t comm_receive_char(void) {
69 uint16_t result;
70 __asm volatile (
71 "int $0x14"
72 : "=a" (result)
73 : "Rah" ((uint8_t) 0x03)
74 : "cc", "memory"
75 );
76 return result;
77}
78
84static inline int16_t comm_receive_with_timeout(uint16_t timeout) {
85 uint16_t result;
86 __asm volatile (
87 "int $0x14"
88 : "=a" (result)
89 : "c" (timeout), "Rah" ((uint8_t) 0x04)
90 : "cc", "memory"
91 );
92 return result;
93}
94
99int16_t comm_send_string(const char __far* str);
100
106int16_t comm_send_block(const void __far* data, uint16_t length);
107
114int16_t comm_receive_block(void __far* data, uint16_t length, int16_t __far* out_length);
115
120static inline void comm_set_timeout(uint16_t recv_timeout, uint16_t send_timeout) {
121 uint16_t result;
122 __asm volatile (
123 "int $0x14"
124 : "=a" (result)
125 : "b" (send_timeout), "Rah" ((uint8_t) 0x08)
126 : "cc", "memory"
127 );
128}
129
133static inline void comm_set_baudrate(uint16_t value) {
134 uint16_t result;
135 __asm volatile (
136 "int $0x14"
137 : "=a" (result)
138 : "b" (value), "Rah" ((uint8_t) 0x09)
139 : "cc", "memory"
140 );
141}
142
146static inline uint16_t comm_get_baudrate(void) {
147 uint16_t result;
148 __asm volatile (
149 "int $0x14"
150 : "=a" (result)
151 : "Rah" ((uint8_t) 0x0A)
152 : "cc", "memory"
153 );
154 return result;
155}
156
160static inline void comm_set_cancel_key(uint16_t value) {
161 uint16_t result;
162 __asm volatile (
163 "int $0x14"
164 : "=a" (result)
165 : "b" (value), "Rah" ((uint8_t) 0x0B)
166 : "cc", "memory"
167 );
168}
169
173static inline uint16_t comm_get_cancel_key(void) {
174 uint16_t result;
175 __asm volatile (
176 "int $0x14"
177 : "=a" (result)
178 : "Rah" ((uint8_t) 0x0C)
179 : "cc", "memory"
180 );
181 return result;
182}
183
184/* End auto-generated section */
185
186
187#endif /* __LIBWW_SYS_COMM_H__ */
static void comm_open(void)
Definition comm.h:29
static void comm_set_baudrate(uint16_t value)
Definition comm.h:133
static uint16_t comm_get_cancel_key(void)
Definition comm.h:173
static int16_t comm_receive_with_timeout(uint16_t timeout)
Definition comm.h:84
static int16_t comm_receive_char(void)
Definition comm.h:68
static void comm_set_cancel_key(uint16_t value)
Definition comm.h:160
static void comm_close(void)
Definition comm.h:39
static uint16_t comm_get_baudrate(void)
Definition comm.h:146
static void comm_set_timeout(uint16_t recv_timeout, uint16_t send_timeout)
Definition comm.h:120
static int16_t comm_send_char(uint8_t ch)
Definition comm.h:53
int16_t comm_send_string(const char __far *str)
int16_t comm_receive_block(void __far *data, uint16_t length, int16_t __far *out_length)
int16_t comm_send_block(const void __far *data, uint16_t length)