1 #ifndef tms5110_h
2 #define tms5110_h
3 
4 
5 /* TMS5110 commands */
6                                      /* CTL8  CTL4  CTL2  CTL1  |   PDC's  */
7                                      /* (MSB)             (LSB) | required */
8 #define TMS5110_CMD_RESET        (0) /*    0     0     0     x  |     1    */
9 #define TMS5110_CMD_LOAD_ADDRESS (2) /*    0     0     1     x  |     2    */
10 #define TMS5110_CMD_OUTPUT       (4) /*    0     1     0     x  |     3    */
11 #define TMS5110_CMD_READ_BIT     (8) /*    1     0     0     x  |     1    */
12 #define TMS5110_CMD_SPEAK       (10) /*    1     0     1     x  |     1    */
13 #define TMS5110_CMD_READ_BRANCH (12) /*    1     1     0     x  |     1    */
14 #define TMS5110_CMD_TEST_TALK   (14) /*    1     1     1     x  |     3    */
15 
16 void tms5110_init(UINT32 freq);
17 void tms5110_exit();
18 void tms5110_reset();
19 void tms5110_scan(INT32 nAction, INT32 *pnMin);
20 
21 void tms5110_set_buffered(INT32 (*pCPUCyclesCB)(), INT32 nCpuMhz);
22 void tms5110_volume(double vol);
23 
24 void tms5110_M0_callback(INT32 (*func)());
25 INT32 tms5110_status_read();
26 INT32 tms5110_ready_read();
27 void tms5110_CTL_set(UINT8 data);
28 void tms5110_PDC_set(UINT8 data);
29 
30 void tms5110_set_frequency(UINT32 freq);
31 void tms5110_update(INT16 *buffer, INT32 samples_len); // render samples
32 
33 #endif
34