libexsid  2.1
exSID.h
Go to the documentation of this file.
1 //
2 // exSID.h
3 // A simple I/O library for exSID USB - interface header file
4 //
5 // (C) 2015-2017,2021 Thibaut VARENE
6 // License: GPLv2 - http://www.gnu.org/licenses/gpl-2.0.html
7 //
8 
14 #ifndef exSID_h
15 #define exSID_h
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #include <stdint.h>
21 
22 #define EXSID_MAJOR_VERSION 2
23 #define EXSID_MINOR_VERSION 1
24 #define EXSID_REVISION 0
25 
26 #define EXSID_VERSION _xxstr(EXSID_MAJOR_VERSION) "." _xxstr(EXSID_MINOR_VERSION) "." _xxstr(EXSID_REVISION)
27 #define EXSID_VERSION_CHECK(maj, min) ((maj==EXSID_MAJOR_VERSION) && (min<=EXSID_MINOR_VERSION))
28 
29 #define _xstr(x) #x
30 #define _xxstr(x) _xstr(x)
31 
33 enum {
37 };
38 
40 enum {
47 };
48 
50 enum {
54 };
55 
57 enum {
60 };
61 
62 // public interface
63 void * exSID_new(void);
64 void exSID_free(void * exsid);
65 
66 int exSID_init(void * const exsid);
67 int exSID_exit(void * const exsid);
68 
69 int exSID_reset(void * const exsid);
70 int exSID_hwmodel(void * const exsid);
71 uint16_t exSID_hwversion(void * const exsid);
72 int exSID_clockselect(void * const exsid, int clock);
73 int exSID_audio_op(void * const exsid, int operation);
74 int exSID_chipselect(void * const exsid, int chip);
75 int exSID_delay(void * const exsid, uint_fast32_t cycles);
76 int exSID_clkdwrite(void * const exsid, uint_fast32_t cycles, uint_least8_t addr, uint8_t data);
77 const char * exSID_error_str(void * const exsid);
78 
79 /* NB: read interface is only provided as proof of concept */
80 int exSID_clkdread(void * const exsid, uint_fast32_t cycles, uint_least8_t addr, uint8_t * data);
81 
82 #ifdef __cplusplus
83 }
84 #endif
85 #endif /* exSID_h */
int exSID_clockselect(void *const exsid, int clock)
exSID+ clock selection routine.
Definition: exSID.c:576
exSID USB
Definition: exSID.h:58
int exSID_chipselect(void *const exsid, int chip)
SID chipselect routine.
Definition: exSID.c:663
select NTSC clock
Definition: exSID.h:52
6581
Definition: exSID.h:34
int exSID_clkdread(void *const exsid, uint_fast32_t cycles, uint_least8_t addr, uint8_t *data)
BLOCKING Timed read routine, attempts cycle-accurate reads.
Definition: exSID.c:909
mix: 8580 L / 6581 R
Definition: exSID.h:42
void * exSID_new(void)
Allocate an exSID handle.
Definition: exSID.c:342
int exSID_delay(void *const exsid, uint_fast32_t cycles)
Cycle accurate delay routine.
Definition: exSID.c:769
int exSID_reset(void *const exsid)
SID reset routine.
Definition: exSID.c:549
int exSID_exit(void *const exsid)
Device exit routine.
Definition: exSID.c:489
int exSID_clkdwrite(void *const exsid, uint_fast32_t cycles, uint_least8_t addr, uint8_t data)
Timed write routine, attempts cycle-accurate writes.
Definition: exSID.c:816
int exSID_audio_op(void *const exsid, int operation)
exSID+ audio operations routine.
Definition: exSID.c:617
mix: 8580 L and R
Definition: exSID.h:43
select PAL clock
Definition: exSID.h:51
mute output
Definition: exSID.h:45
uint16_t exSID_hwversion(void *const exsid)
Hardware and firmware version of the device.
Definition: exSID.c:731
void exSID_free(void *exsid)
Deallocate an exSID handle.
Definition: exSID.c:354
select 1MHz clock
Definition: exSID.h:53
int exSID_init(void *const exsid)
Device init routine.
Definition: exSID.c:384
mix: 6581 L / 8580 R
Definition: exSID.h:41
exSID+ USB
Definition: exSID.h:59
Both chips.
Definition: exSID.h:36
8580
Definition: exSID.h:35
unmute output
Definition: exSID.h:46
const char * exSID_error_str(void *const exsid)
Returns a string describing the last recorded error.
Definition: exSID.c:177
int exSID_hwmodel(void *const exsid)
Device hardware model.
Definition: exSID.c:697
mix: 6581 L and R
Definition: exSID.h:44