1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
/*
* X00API.H - X00 FOSSIL driver HLLAPI
*
* Created by R.F. Pels.
* modified by Bob Stout
* Placed in the public domain by R.F. Pels.
*/
#ifndef __X00API_H /* Prevent double inclusion */
#define __X00API_H
/* FOSSIL specifics */
#define X00_VECTOR 0x14
#define X00_IDOFFSET 6
/* FOSSIL function request codes */
#define SET_BAUDRATE 0x0000
#define TX_CHAR 0x0100
#define RX_CHAR 0x0200
#define STATUS 0x0300
#define INITIALIZE 0x0400
#define DEINITIALIZE 0x0500
#define RAISE_DTR 0x0601
#define LOWER_DTR 0x0600
#define GET_SYS_INFO 0x0700
#define FLUSH_OUTPUT 0x0800
#define PURGE_OUTPUT 0x0900
#define PURGE_INPUT 0x0A00
#define TX_CHAR_NOWAIT 0x0B00
#define PEEK_AHEAD_INPUT 0x0C00
#define PEEK_AHEAD_KBD 0x0D00
#define READ_KBD 0x0E00
#define FLOW_CONTROL 0x0F00
#define CTLC_CTLK_CHECK 0x1000
#define SET_CUP 0x1100
#define GET_CUP 0x1200
#define WRITE_ANSI_CHAR 0x1300
#define ENABLE_WATCHDOG 0x1401
#define DISABLE_WATCHDOG 0x1400
#define WRITE_BIOS_CHAR 0x1500
#define INSERT_TICK_FUNC 0x1601
#define DELETE_TICK_FUNC 0x1600
#define BOOT_MACHINE 0x1700
#define READ_BLOCK 0x1800
#define WRITE_BLOCK 0x1900
#define START_BREAK_SIGNAL 0x1A01
#define STOP_BREAK_SIGNAL 0x1A00
#define GET_DRIVER_INFO 0x1B00
#define INSTALL_APPENDAGE 0x7e00
#define REMOVE_APPENDAGE 0x7f00
/* port numbers and variable type of portnumber in calls */
#define PORTCOM1 0
#define PORTCOM2 1
#define PORTCOM3 2
#define PORTCOM4 3
#define PORTCOM5 4
#define PORTCOM6 5
#define PORTCOM7 6
#define PORTCOM8 7
#define PORTSPECIAL 0x00ff
typedef unsigned int PORT;
/* defines components of baud settings call */
#define BAUD300 0x40
#define BAUD600 0x60
#define BAUD1200 0x80
#define BAUD2400 0xa0
#define BAUD4800 0xc0
#define BAUD9600 0xe0
#define BAUD19200 0x00
#define BAUD38400 0x20
#define PARITYNONE 0x00
#define PARITYODD 0x08
#define PARITYNONEALT 0x10
#define PARITYEVEN 0x18
#define STOP1BIT 0x00
#define STOP2BIT 0x04
#define WORD5BIT 0x00
#define WORD6BIT 0x01
#define WORD7BIT 0x02
#define WORD8BIT 0x03
#define FIDOSETTING PARITYNONE | STOP1BIT | WORD8BIT
#define OPUSSETTING PARITYNONE | STOP1BIT | WORD8BIT
#define SEADOGSETTING PARITYNONE | STOP1BIT | WORD8BIT
/* Error numbers */
#define X00_OK 0
#define X00_NOT_HERE 100
#define X00_CHAR_NOT_SENT 101
#define X00_NO_INPUT 0xffff
#define X00_NO_KEY 0xffff
#define X00_INS_TICK 104
#define X00_DEL_TICK 105
#define X00_INS_APP 106
#define X00_REM_APP 107
#define X00_DTR_HIGH 108
#define X00_DTR_LOW 109
/* FOSSIL initcall result type */
#define X00_PRESENT 0x1954
typedef struct {
unsigned int result;
unsigned char max_function;
unsigned char revision;
} FOSSILINIT;
/* FOSSIL status return type: all fields are 1 if condition exists */
typedef union {
struct STATUSBITS {
unsigned int : 3;
unsigned int alwayshigh : 1;
unsigned int : 3;
unsigned int carrier_detect : 1;
unsigned int chars_in_input : 1;
unsigned int input_overrun : 1;
unsigned int : 3;
unsigned int output_not_full : 1;
unsigned int output_empty : 1;
unsigned int : 1;
} statusbits;
unsigned int statusword;
} FOSSILSTATUS;
/* FOSSIL info type */
typedef struct {
unsigned int size;
unsigned char version;
unsigned char revision;
unsigned int ofs_fossil_id;
unsigned int seg_fossil_id;
unsigned int input_size;
unsigned int input_avail;
unsigned int output_size;
unsigned int output_avail;
unsigned char screen_width;
unsigned char screen_height;
unsigned char baud_rate_mask;
} FOSSILINFO;
/* FOSSIL system info type */
typedef struct {
unsigned char tick_number;
unsigned char ticks_per_second;
unsigned int approx_ms_per_tick;
} FOSSILSYSINFO;
/* FOSSIL flow control type */
typedef union {
struct FLOWBITS {
unsigned char xonxoff : 1;
unsigned char ctsrts : 1;
unsigned char remote_xonxoff : 1;
unsigned char : 5;
} flowbits;
unsigned char flowword;
} FOSSILFLOWCTRL;
/* FOSSIL checks control type */
#define X00_CTLCK 0x0001
#define X00_NO_CTLCK 0x0000
typedef union {
struct CHECKBITS {
unsigned char ctlc_ctlk : 1;
unsigned char stop_transmitter : 1;
unsigned char : 6;
} checkbits;
unsigned char checkword;
} FOSSILCTLCCTLK;
#define COLDBOOT 0
#define WARMBOOT 1
#if __cplusplus
extern "C" {
#endif
unsigned int x00_detect(void);
FOSSILSTATUS x00_set(unsigned char set, PORT port);
FOSSILSTATUS x00_tx_char(unsigned char c, PORT port);
unsigned char x00_rx_char(PORT port);
FOSSILSTATUS x00_status(PORT port);
FOSSILINIT x00_init(PORT port, unsigned char far *ctlc_flagbyte);
void x00_deinit(PORT port);
unsigned int x00_raise_dtr(PORT port);
unsigned int x00_lower_dtr(PORT port);
FOSSILSYSINFO x00_sysinfo(void);
void x00_flush_output(PORT port);
void x00_purge_output(PORT port);
void x00_purge_input(PORT port);
unsigned int x00_tx_char_nowait(unsigned char c, PORT port);
unsigned int x00_peek_ahead_input(PORT port);
unsigned int x00_peek_ahead_kbd(void);
unsigned int x00_read_kbd(void);
void x00_flow_control(FOSSILFLOWCTRL f, PORT port);
unsigned int x00_ctlc_ctlk_check(FOSSILCTLCCTLK c, PORT port);
void x00_set_cup(unsigned char row, unsigned char col);
void x00_get_cup(unsigned char *row, unsigned char *col);
void x00_write_ANSI_char(unsigned char c);
void x00_enable_watchdog(PORT port);
void x00_disable_watchdog(PORT port);
void x00_write_BIOS_char(unsigned char c);
unsigned int x00_insert_tick_func(void (_far *tickfunc)());
unsigned int x00_delete_tick_func(void (_far *tickfunc)());
void x00_boot_machine(unsigned int boottype);
unsigned int x00_read_block(unsigned int count, void far *buf, PORT port);
unsigned int x00_write_block(unsigned int count, void far *buf,
PORT port);
void x00_start_break_signal(PORT port);
void x00_stop_break_signal(PORT port);
unsigned int x00_get_driverinfo(void far *buf, PORT port);
unsigned int x00_install_appendage(unsigned char appcode,
void (_far *appfunc)());
unsigned int x00_remove_appendage(unsigned char appcode,
void (_far *appfunc)());
#if __cplusplus
}
#endif
#endif /* __X00API_H */
|