Adapt sound test commands mostly

This commit is contained in:
Vincent Barrilliot 2023-01-31 22:00:36 +01:00
parent 8b9edccbc6
commit 14b3e963b7
4 changed files with 131 additions and 128 deletions

View file

@ -69,12 +69,6 @@ short psg_test(short channel, int argc, const char * argv[]) {
* Play a sound on the SID * Play a sound on the SID
*/ */
short sid_test(short channel, int argc, const char * argv[]) { short sid_test(short channel, int argc, const char * argv[]) {
short i;
unsigned char reg;
unsigned char data;
long target_time;
volatile unsigned char * opm_base = OPM_INT_BASE;
#if MODEL == MODEL_FOENIX_A2560K #if MODEL == MODEL_FOENIX_A2560K
if (argc >= 2) { if (argc >= 2) {
/* Allow the user to select the external OPM */ /* Allow the user to select the external OPM */
@ -91,7 +85,7 @@ short sid_test(short channel, int argc, const char * argv[]) {
return 0; return 0;
} }
#if MODEL == MODEL_FOENIX_A2560K
void Test_EXT_FM2151( void ) { void Test_EXT_FM2151( void ) {
unsigned char i; unsigned char i;
@ -202,6 +196,7 @@ short sid_test(short channel, int argc, const char * argv[]) {
* EXT_OPM_08_KEY_ON_OFF = 0x00; * EXT_OPM_08_KEY_ON_OFF = 0x00;
} }
#endif
void Test_EXT_FM2612( void ) { void Test_EXT_FM2612( void ) {
unsigned char i; unsigned char i;
@ -452,7 +447,7 @@ short sid_test(short channel, int argc, const char * argv[]) {
for (j=0 ; j<262144; j++); for (j=0 ; j<262144; j++);
} }
#if MODEL == MODEL_FOENIX_A2560K
/* /*
* Test tone for OPM: register, value * Test tone for OPM: register, value
*/ */
@ -654,6 +649,7 @@ short opn_test(short channel, int argc, const char * argv[]) {
return 0; return 0;
} }
#endif
const unsigned char opl3_tone_on[] = { const unsigned char opl3_tone_on[] = {
0x01,0x00, /* initialise */ 0x01,0x00, /* initialise */
@ -738,11 +734,11 @@ short opl3_test(short channel, int argc, const char * argv[]) {
return 0; return 0;
} }
#if MODEL == MODEL_FOENIX_A2560K
/* /*
* Perform a transmit test on the MIDI ports * Perform a transmit test on the MIDI ports
*/ */
short midi_tx_test(short channel, int argc, const char * argv[]) { short midi_tx_test(short channel, int argc, const char * argv[]) {
#if MODEL == MODEL_FOENIX_A2560K
const char note_on[] = { 0x90, 0x3c, 0x3f }; const char note_on[] = { 0x90, 0x3c, 0x3f };
const char note_off[] = { 0x80, 0x3c, 0x00 }; const char note_off[] = { 0x80, 0x3c, 0x00 };
char message[80]; char message[80];
@ -784,7 +780,7 @@ short midi_tx_test(short channel, int argc, const char * argv[]) {
print(channel, message); print(channel, message);
return 0; return 0;
} }
#endif
return 0; return 0;
} }
@ -792,7 +788,6 @@ short midi_tx_test(short channel, int argc, const char * argv[]) {
* Perform a receive test on the MIDI ports * Perform a receive test on the MIDI ports
*/ */
short midi_rx_test(short channel, int argc, const char * argv[]) { short midi_rx_test(short channel, int argc, const char * argv[]) {
#if MODEL == MODEL_FOENIX_A2560K
char message[80]; char message[80];
unsigned short scancode = 0; unsigned short scancode = 0;
int i; int i;
@ -834,7 +829,6 @@ short midi_rx_test(short channel, int argc, const char * argv[]) {
print(channel, message); print(channel, message);
return 0; return 0;
} }
#endif
return 0; return 0;
} }
@ -842,7 +836,6 @@ short midi_rx_test(short channel, int argc, const char * argv[]) {
* Perform a loopback test on the MIDI ports * Perform a loopback test on the MIDI ports
*/ */
short midi_loop_test(short channel, int argc, const char * argv[]) { short midi_loop_test(short channel, int argc, const char * argv[]) {
#if MODEL == MODEL_FOENIX_A2560K
char message[80]; char message[80];
unsigned short scancode = 0; unsigned short scancode = 0;
unsigned char output; unsigned char output;
@ -891,6 +884,6 @@ short midi_loop_test(short channel, int argc, const char * argv[]) {
print(channel, message); print(channel, message);
return 0; return 0;
} }
#endif
return 0; return 0;
} }
#endif // Testing of MIDI for A2560K

View file

@ -58,14 +58,14 @@ short kbd_break() {
* Test the PS/2 keyboard * Test the PS/2 keyboard
*/ */
short cli_test_ps2(short channel, int argc, const char * argv[]) { short cli_test_ps2(short channel, int argc, const char * argv[]) {
char message[80]; const char help[] = "Press keys on a PS/2 keyboard... CTRL-C to quit.\n";
unsigned short scancode = 0; unsigned short scancode = 0;
sprintf(message, "Press keys on a PS/2 keyboard... CTRL-C to quit.\n"); sys_chan_write(channel, help, strlen(help));
sys_chan_write(channel, message, strlen(message));
do { do {
if (scancode != 0) { if (scancode != 0) {
char message[80];
sprintf(message, "Scan code: %04x\n", scancode); sprintf(message, "Scan code: %04x\n", scancode);
sys_chan_write(channel, message, strlen(message)); sys_chan_write(channel, message, strlen(message));
} }
@ -863,16 +863,22 @@ const t_cli_test_feature cli_test_features[] = {
#if MODEL == MODEL_FOENIX_A2560K #if MODEL == MODEL_FOENIX_A2560K
{"FDC", "FDC DSKCHG | [<lba> [WRITE <data>]]: test reading/writing the MBR from the floppy drive", cli_test_fdc}, {"FDC", "FDC DSKCHG | [<lba> [WRITE <data>]]: test reading/writing the MBR from the floppy drive", cli_test_fdc},
{"GAMEPAD", "GAMEPAD [0 | 1]: test SNES gamepads", cli_test_gamepad}, {"GAMEPAD", "GAMEPAD [0 | 1]: test SNES gamepads", cli_test_gamepad},
{"JOY", "JOY: test the joystick", cli_test_joystick},
#endif #endif
{"JOY", "JOY: test the joystick", cli_test_joystick},
#if MODEL == MODEL_FOENIX_A2560K
{"LPT", "LPT: test the parallel port", cli_test_lpt}, {"LPT", "LPT: test the parallel port", cli_test_lpt},
#endif
{"MEM", "MEM [SYS|MERA]: test reading and writing of system or MERA memory", cli_mem_test}, {"MEM", "MEM [SYS|MERA]: test reading and writing of system or MERA memory", cli_mem_test},
#if MODEL == MODEL_FOENIX_A2560K
{"MIDILOOP", "MIDILOOP: perform a loopback test on the MIDI ports", midi_loop_test}, {"MIDILOOP", "MIDILOOP: perform a loopback test on the MIDI ports", midi_loop_test},
{"MIDIRX", "MIDIRX: perform a receive test on the MIDI ports", midi_rx_test}, {"MIDIRX", "MIDIRX: perform a receive test on the MIDI ports", midi_rx_test},
{"MIDITX", "MIDITX: send a note to a MIDI keyboard", midi_tx_test}, {"MIDITX", "MIDITX: send a note to a MIDI keyboard", midi_tx_test},
#endif
{"OPL3", "OPL3: test the OPL3 sound chip", opl3_test}, {"OPL3", "OPL3: test the OPL3 sound chip", opl3_test},
#if MODEL == MODEL_FOENIX_A2560K
{"OPN", "OPN [EXT|INT]: test the OPN sound chip", opn_test}, {"OPN", "OPN [EXT|INT]: test the OPN sound chip", opn_test},
{"OPM", "OPM [EXT|INT]: test the OPM sound chip", opm_test}, {"OPM", "OPM [EXT|INT]: test the OPM sound chip", opm_test},
#endif
{"PANIC", "PANIC: test the kernel panic mechanism", cli_test_panic}, {"PANIC", "PANIC: test the kernel panic mechanism", cli_test_panic},
{"PS2", "PS2: test the PS/2 keyboard", cli_test_ps2}, {"PS2", "PS2: test the PS/2 keyboard", cli_test_ps2},
{"PSG", "PSG [EXT|INTL|INTR|INTS]: test the PSG sound chip", psg_test}, {"PSG", "PSG [EXT|INTL|INTR|INTS]: test the PSG sound chip", psg_test},
@ -880,8 +886,8 @@ const t_cli_test_feature cli_test_features[] = {
#if MODEL == MODEL_FOENIX_A2560K #if MODEL == MODEL_FOENIX_A2560K
{"RECALIBRATE", "RECALIBRATE: recalibrate the floppy drive", cli_test_recalibrate}, {"RECALIBRATE", "RECALIBRATE: recalibrate the floppy drive", cli_test_recalibrate},
{"SEEK", "SEEK <track>: move the floppy drive head to a track", cli_test_seek}, {"SEEK", "SEEK <track>: move the floppy drive head to a track", cli_test_seek},
{"SID", "SID [EXT|INT]: test the SID sound chips", sid_test},
#endif #endif
{"SID", "SID [EXT|INT]: test the SID sound chips", sid_test},
{"UART","UART [1|2]: test the serial port",cli_test_uart}, {"UART","UART [1|2]: test the serial port",cli_test_uart},
{"TEXTSCROLL", "TEXTSCROLL [byte|word]: fills the text memory with A..Z then scroll one char to the left", cli_test_textscroll}, {"TEXTSCROLL", "TEXTSCROLL [byte|word]: fills the text memory with A..Z then scroll one char to the left", cli_test_textscroll},
{"END", "END", 0} {"END", "END", 0}

View file

@ -5,130 +5,129 @@
#ifndef __SOUND_A2560U_H #ifndef __SOUND_A2560U_H
#define __SOUND_A2560U_H #define __SOUND_A2560U_H
#define PSG_PORT ((volatile unsigned char *)0x00B20130) /* Control register for the SN76489 */ #include <stdint.h>
#define OPL3_PORT ((volatile unsigned char *)0x00B20200) /* Access port for the OPL3 */
#define OPM_INT_BASE ((volatile unsigned char *)0x00B20C00) /* Internal OPM base address */ #define PSG_PORT ((volatile uint8_t *)0x00B20130) /* Control register for the SN76489 */
#define OPN2_INT_BASE ((volatile unsigned char *)0x00B20A00) /* Internal OPN2 base address */ #define OPL3_PORT ((volatile uint8_t *)0x00B20200) /* Access port for the OPL3 */
#define CODEC ((volatile unsigned short *)0x00B20E00) /* Control register for the CODEC */ #define CODEC ((volatile uint16_t *)0x00B20E00) /* Control register for the CODEC */
#define N_SIDS 2 /* Number of SIDs supported by the system */
#define SID_INT_L ((volatile uint8_t *)0x00B21000) /* Left SID base */
#define SID_INT_R ((volatile uint8_t *)0x00B21200) /* Right SID base */
#define SID_INT_N ((volatile uint8_t *)0x00B21400) /* Both SIDs */
/* /*
* A2560U supports two external, physical SID chips. * A2560U supports two SIDs emulated in the FPGA.
* It also implements the Gideon FPGA based SID in either stereo or mono (neutral) form
*
* $00C21000..$00C211FF - Internal SID Left
* $00C21200..$00C213FF - Internal SID Right
* $00C21400..$00C215FF - Internal SID Neutral
*/ */
/* /*
* Internal SID Left Channel * Internal SID Left Channel
*/ */
#define SID_INT_L_V1_FREQ_LO ((unsigned char *)0x00B21000) #define SID_INT_L_V1_FREQ_LO ((uint8_t *)SID_INT_L)
#define SID_INT_L_V1_FREQ_HI ((unsigned char *)0x00B21001) #define SID_INT_L_V1_FREQ_HI ((uint8_t *)SID_INT_L+1)
#define SID_INT_L_V1_PW_LO ((unsigned char *)0x00B21002) #define SID_INT_L_V1_PW_LO ((uint8_t *)SID_INT_L+2)
#define SID_INT_L_V1_PW_HI ((unsigned char *)0x00B21003) #define SID_INT_L_V1_PW_HI ((uint8_t *)SID_INT_L+3)
#define SID_INT_L_V1_CTRL ((unsigned char *)0x00B21004) #define SID_INT_L_V1_CTRL ((uint8_t *)SID_INT_L+4)
#define SID_INT_L_V1_ATCK_DECY ((unsigned char *)0x00B21005) #define SID_INT_L_V1_ATCK_DECY ((uint8_t *)SID_INT_L+5)
#define SID_INT_L_V1_SSTN_RLSE ((unsigned char *)0x00B21006) #define SID_INT_L_V1_SSTN_RLSE ((uint8_t *)SID_INT_L+6)
#define SID_INT_L_V2_FREQ_LO ((unsigned char *)0x00B21007) #define SID_INT_L_V2_FREQ_LO ((uint8_t *)SID_INT_L+7)
#define SID_INT_L_V2_FREQ_HI ((unsigned char *)0x00B21008) #define SID_INT_L_V2_FREQ_HI ((uint8_t *)SID_INT_L+8)
#define SID_INT_L_V2_PW_LO ((unsigned char *)0x00B21009) #define SID_INT_L_V2_PW_LO ((uint8_t *)SID_INT_L+9)
#define SID_INT_L_V2_PW_HI ((unsigned char *)0x00B2100A) #define SID_INT_L_V2_PW_HI ((uint8_t *)SID_INT_L+10)
#define SID_INT_L_V2_CTRL ((unsigned char *)0x00B2100B) #define SID_INT_L_V2_CTRL ((uint8_t *)SID_INT_L+11)
#define SID_INT_L_V2_ATCK_DECY ((unsigned char *)0x00B2100C) #define SID_INT_L_V2_ATCK_DECY ((uint8_t *)SID_INT_L+12)
#define SID_INT_L_V2_SSTN_RLSE ((unsigned char *)0x00B2100D) #define SID_INT_L_V2_SSTN_RLSE ((uint8_t *)SID_INT_L+13)
#define SID_INT_L_V3_FREQ_LO ((unsigned char *)0x00B2100E) #define SID_INT_L_V3_FREQ_LO ((uint8_t *)SID_INT_L+14)
#define SID_INT_L_V3_FREQ_HI ((unsigned char *)0x00B2100F) #define SID_INT_L_V3_FREQ_HI ((uint8_t *)SID_INT_L+15)
#define SID_INT_L_V3_PW_LO ((unsigned char *)0x00B21010) #define SID_INT_L_V3_PW_LO ((uint8_t *)SID_INT_L+16)
#define SID_INT_L_V3_PW_HI ((unsigned char *)0x00B21011) #define SID_INT_L_V3_PW_HI ((uint8_t *)SID_INT_L+17)
#define SID_INT_L_V3_CTRL ((unsigned char *)0x00B21012) #define SID_INT_L_V3_CTRL ((uint8_t *)SID_INT_L+18)
#define SID_INT_L_V3_ATCK_DECY ((unsigned char *)0x00B21013) #define SID_INT_L_V3_ATCK_DECY ((uint8_t *)SID_INT_L+19)
#define SID_INT_L_V3_SSTN_RLSE ((unsigned char *)0x00B21014) #define SID_INT_L_V3_SSTN_RLSE ((uint8_t *)SID_INT_L+20)
#define SID_INT_L_FC_LO ((unsigned char *)0x00B21015) #define SID_INT_L_FC_LO ((uint8_t *)SID_INT_L+21)
#define SID_INT_L_FC_HI ((unsigned char *)0x00B21016) #define SID_INT_L_FC_HI ((uint8_t *)SID_INT_L+22)
#define SID_INT_L_RES_FILT ((unsigned char *)0x00B21017) #define SID_INT_L_RES_FILT ((uint8_t *)SID_INT_L+23)
#define SID_INT_L_MODE_VOL ((unsigned char *)0x00B21018) #define SID_INT_L_MODE_VOL ((uint8_t *)SID_INT_L+24)
#define SID_INT_L_POT_X ((unsigned char *)0x00B21019) #define SID_INT_L_POT_X ((uint8_t *)SID_INT_L+25)
#define SID_INT_L_POT_Y ((unsigned char *)0x00B2101A) #define SID_INT_L_POT_Y ((uint8_t *)SID_INT_L+26)
#define SID_INT_L_OSC3_RND ((unsigned char *)0x00B2101B) #define SID_INT_L_OSC3_RND ((uint8_t *)SID_INT_L+27)
#define SID_INT_L_ENV3 ((unsigned char *)0x00B2101C) #define SID_INT_L_ENV3 ((uint8_t *)SID_INT_L+28)
#define SID_INT_L_NOT_USED0 ((unsigned char *)0x00B2101D) #define SID_INT_L_NOT_USED0 ((uint8_t *)SID_INT_L+29)
#define SID_INT_L_NOT_USED1 ((unsigned char *)0x00B2101E) #define SID_INT_L_NOT_USED1 ((uint8_t *)SID_INT_L+30)
#define SID_INT_L_NOT_USED2 ((unsigned char *)0x00B2101F) #define SID_INT_L_NOT_USED2 ((uint8_t *)SID_INT_L+31)
/* /*
* Internal SID Right Channel * Internal SID Right Channel
*/ */
#define SID_INT_R_V1_FREQ_LO ((unsigned char *)0x00B21200) #define SID_INT_R_V1_FREQ_LO ((uint8_t *)SID_INT_R)
#define SID_INT_R_V1_FREQ_HI ((unsigned char *)0x00B21201) #define SID_INT_R_V1_FREQ_HI ((uint8_t *)SID_INT_R+1)
#define SID_INT_R_V1_PW_LO ((unsigned char *)0x00B21202) #define SID_INT_R_V1_PW_LO ((uint8_t *)SID_INT_R+2)
#define SID_INT_R_V1_PW_HI ((unsigned char *)0x00B21203) #define SID_INT_R_V1_PW_HI ((uint8_t *)SID_INT_R+3)
#define SID_INT_R_V1_CTRL ((unsigned char *)0x00B21204) #define SID_INT_R_V1_CTRL ((uint8_t *)SID_INT_R+4)
#define SID_INT_R_V1_ATCK_DECY ((unsigned char *)0x00B21205) #define SID_INT_R_V1_ATCK_DECY ((uint8_t *)SID_INT_R+5)
#define SID_INT_R_V1_SSTN_RLSE ((unsigned char *)0x00B21206) #define SID_INT_R_V1_SSTN_RLSE ((uint8_t *)SID_INT_R+6)
#define SID_INT_R_V2_FREQ_LO ((unsigned char *)0x00B21207) #define SID_INT_R_V2_FREQ_LO ((uint8_t *)SID_INT_R+7)
#define SID_INT_R_V2_FREQ_HI ((unsigned char *)0x00B21208) #define SID_INT_R_V2_FREQ_HI ((uint8_t *)SID_INT_R+8)
#define SID_INT_R_V2_PW_LO ((unsigned char *)0x00B21209) #define SID_INT_R_V2_PW_LO ((uint8_t *)SID_INT_R+9)
#define SID_INT_R_V2_PW_HI ((unsigned char *)0x00B2120A) #define SID_INT_R_V2_PW_HI ((uint8_t *)SID_INT_R+10)
#define SID_INT_R_V2_CTRL ((unsigned char *)0x00B2120B) #define SID_INT_R_V2_CTRL ((uint8_t *)SID_INT_R+11)
#define SID_INT_R_V2_ATCK_DECY ((unsigned char *)0x00B2120C) #define SID_INT_R_V2_ATCK_DECY ((uint8_t *)SID_INT_R+12)
#define SID_INT_R_V2_SSTN_RLSE ((unsigned char *)0x00B2120D) #define SID_INT_R_V2_SSTN_RLSE ((uint8_t *)SID_INT_R+13)
#define SID_INT_R_V3_FREQ_LO ((unsigned char *)0x00B2120E) #define SID_INT_R_V3_FREQ_LO ((uint8_t *)SID_INT_R+14)
#define SID_INT_R_V3_FREQ_HI ((unsigned char *)0x00B2120F) #define SID_INT_R_V3_FREQ_HI ((uint8_t *)SID_INT_R+15)
#define SID_INT_R_V3_PW_LO ((unsigned char *)0x00B21210) #define SID_INT_R_V3_PW_LO ((uint8_t *)SID_INT_R+16)
#define SID_INT_R_V3_PW_HI ((unsigned char *)0x00B21211) #define SID_INT_R_V3_PW_HI ((uint8_t *)SID_INT_R+17)
#define SID_INT_R_V3_CTRL ((unsigned char *)0x00B21212) #define SID_INT_R_V3_CTRL ((uint8_t *)SID_INT_R+18)
#define SID_INT_R_V3_ATCK_DECY ((unsigned char *)0x00B21213) #define SID_INT_R_V3_ATCK_DECY ((uint8_t *)SID_INT_R+19)
#define SID_INT_R_V3_SSTN_RLSE ((unsigned char *)0x00B21214) #define SID_INT_R_V3_SSTN_RLSE ((uint8_t *)SID_INT_R+20)
#define SID_INT_R_FC_LO ((unsigned char *)0x00B21215) #define SID_INT_R_FC_LO ((uint8_t *)SID_INT_R+21)
#define SID_INT_R_FC_HI ((unsigned char *)0x00B21216) #define SID_INT_R_FC_HI ((uint8_t *)SID_INT_R+22)
#define SID_INT_R_RES_FILT ((unsigned char *)0x00B21217) #define SID_INT_R_RES_FILT ((uint8_t *)SID_INT_R+23)
#define SID_INT_R_MODE_VOL ((unsigned char *)0x00B21218) #define SID_INT_R_MODE_VOL ((uint8_t *)SID_INT_R+24)
#define SID_INT_R_POT_X ((unsigned char *)0x00B21219) #define SID_INT_R_POT_X ((uint8_t *)SID_INT_R+25)
#define SID_INT_R_POT_Y ((unsigned char *)0x00B2121A) #define SID_INT_R_POT_Y ((uint8_t *)SID_INT_R+26)
#define SID_INT_R_OSC3_RND ((unsigned char *)0x00B2121B) #define SID_INT_R_OSC3_RND ((uint8_t *)SID_INT_R+27)
#define SID_INT_R_ENV3 ((unsigned char *)0x00B2121C) #define SID_INT_R_ENV3 ((uint8_t *)SID_INT_R+28)
#define SID_INT_R_NOT_USED0 ((unsigned char *)0x00B2121D) #define SID_INT_R_NOT_USED0 ((uint8_t *)SID_INT_R+29)
#define SID_INT_R_NOT_USED1 ((unsigned char *)0x00B2121E) #define SID_INT_R_NOT_USED1 ((uint8_t *)SID_INT_R+30)
#define SID_INT_R_NOT_USED2 ((unsigned char *)0x00B2121F) #define SID_INT_R_NOT_USED2 ((uint8_t *)SID_INT_R+31)
/* /*
* Internal SID Neutral Channel - When writting here, the value is written in R and L Channel at the same time * Internal SID Neutral Channel - When writting here, the value is written in R and L Channel at the same time
*/ */
#define SID_INT_N_V1_FREQ_LO ((unsigned char *)0x00B21400) #define SID_INT_N_V1_FREQ_LO ((uint8_t *)SID_INT_N)
#define SID_INT_N_V1_FREQ_HI ((unsigned char *)0x00B21401) #define SID_INT_N_V1_FREQ_HI ((uint8_t *)SID_INT_N+1)
#define SID_INT_N_V1_PW_LO ((unsigned char *)0x00B21402) #define SID_INT_N_V1_PW_LO ((uint8_t *)SID_INT_N+2)
#define SID_INT_N_V1_PW_HI ((unsigned char *)0x00B21403) #define SID_INT_N_V1_PW_HI ((uint8_t *)SID_INT_N+3)
#define SID_INT_N_V1_CTRL ((unsigned char *)0x00B21404) #define SID_INT_N_V1_CTRL ((uint8_t *)SID_INT_N+4)
#define SID_INT_N_V1_ATCK_DECY ((unsigned char *)0x00B21405) #define SID_INT_N_V1_ATCK_DECY ((uint8_t *)SID_INT_N+5)
#define SID_INT_N_V1_SSTN_RLSE ((unsigned char *)0x00B21406) #define SID_INT_N_V1_SSTN_RLSE ((uint8_t *)SID_INT_N+6)
#define SID_INT_N_V2_FREQ_LO ((unsigned char *)0x00B21407) #define SID_INT_N_V2_FREQ_LO ((uint8_t *)SID_INT_N+7)
#define SID_INT_N_V2_FREQ_HI ((unsigned char *)0x00B21408) #define SID_INT_N_V2_FREQ_HI ((uint8_t *)SID_INT_N+8)
#define SID_INT_N_V2_PW_LO ((unsigned char *)0x00B21409) #define SID_INT_N_V2_PW_LO ((uint8_t *)SID_INT_N+9)
#define SID_INT_N_V2_PW_HI ((unsigned char *)0x00B2140A) #define SID_INT_N_V2_PW_HI ((uint8_t *)SID_INT_N+10)
#define SID_INT_N_V2_CTRL ((unsigned char *)0x00B2140B) #define SID_INT_N_V2_CTRL ((uint8_t *)SID_INT_N+11)
#define SID_INT_N_V2_ATCK_DECY ((unsigned char *)0x00B2140C) #define SID_INT_N_V2_ATCK_DECY ((uint8_t *)SID_INT_N+12)
#define SID_INT_N_V2_SSTN_RLSE ((unsigned char *)0x00B2140D) #define SID_INT_N_V2_SSTN_RLSE ((uint8_t *)SID_INT_N+13)
#define SID_INT_N_V3_FREQ_LO ((unsigned char *)0x00B2140E) #define SID_INT_N_V3_FREQ_LO ((uint8_t *)SID_INT_N+14)
#define SID_INT_N_V3_FREQ_HI ((unsigned char *)0x00B2140F) #define SID_INT_N_V3_FREQ_HI ((uint8_t *)SID_INT_N+15)
#define SID_INT_N_V3_PW_LO ((unsigned char *)0x00B21410) #define SID_INT_N_V3_PW_LO ((uint8_t *)SID_INT_N+16)
#define SID_INT_N_V3_PW_HI ((unsigned char *)0x00B21411) #define SID_INT_N_V3_PW_HI ((uint8_t *)SID_INT_N+17)
#define SID_INT_N_V3_CTRL ((unsigned char *)0x00B21412) #define SID_INT_N_V3_CTRL ((uint8_t *)SID_INT_N+18)
#define SID_INT_N_V3_ATCK_DECY ((unsigned char *)0x00B21413) #define SID_INT_N_V3_ATCK_DECY ((uint8_t *)SID_INT_N+19)
#define SID_INT_N_V3_SSTN_RLSE ((unsigned char *)0x00B21414) #define SID_INT_N_V3_SSTN_RLSE ((uint8_t *)SID_INT_N+20)
#define SID_INT_N_FC_LO ((unsigned char *)0x00B21415) #define SID_INT_N_FC_LO ((uint8_t *)SID_INT_N+21)
#define SID_INT_N_FC_HI ((unsigned char *)0x00B21416) #define SID_INT_N_FC_HI ((uint8_t *)SID_INT_N+22)
#define SID_INT_N_RES_FILT ((unsigned char *)0x00B21417) #define SID_INT_N_RES_FILT ((uint8_t *)SID_INT_N+23)
#define SID_INT_N_MODE_VOL ((unsigned char *)0x00B21418) #define SID_INT_N_MODE_VOL ((uint8_t *)SID_INT_N+24)
#define SID_INT_N_POT_X ((unsigned char *)0x00B21419) #define SID_INT_N_POT_X ((uint8_t *)SID_INT_N+25)
#define SID_INT_N_POT_Y ((unsigned char *)0x00B2141A) #define SID_INT_N_POT_Y ((uint8_t *)SID_INT_N+26)
#define SID_INT_N_OSC3_RND ((unsigned char *)0x00B2141B) #define SID_INT_N_OSC3_RND ((uint8_t *)SID_INT_N+27)
#define SID_INT_N_ENV3 ((unsigned char *)0x00B2141C) #define SID_INT_N_ENV3 ((uint8_t *)SID_INT_N+28)
#define SID_INT_N_NOT_USED0 ((unsigned char *)0x00B2141D) #define SID_INT_N_NOT_USED0 ((uint8_t *)SID_INT_N+29)
#define SID_INT_N_NOT_USED1 ((unsigned char *)0x00B2141E) #define SID_INT_N_NOT_USED1 ((uint8_t *)SID_INT_N+30)
#define SID_INT_N_NOT_USED2 ((unsigned char *)0x00B2141F) #define SID_INT_N_NOT_USED2 ((uint8_t *)SID_INT_N+31)
#endif #endif

View file

@ -2,6 +2,11 @@
* Implementation of the SID code * Implementation of the SID code
*/ */
#include "log_level.h"
#ifndef DEFAULT_LOG_LEVEL
#define DEFAULT_LOG_LEVEL LOG_TRACE
#endif
#include "snd/sid.h" #include "snd/sid.h"
#include "sound_reg.h" #include "sound_reg.h"
#include "dev/rtc.h" #include "dev/rtc.h"
@ -44,7 +49,7 @@ void sid_init(short sid) {
volatile unsigned char *sid_base = sid_get_base(sid); volatile unsigned char *sid_base = sid_get_base(sid);
if (sid_base) { if (sid_base) {
int offset; int offset;
for (offset = 0; offset < 25; offset++) { for (offset = 0; offset < 32; offset++) { // 32 is the number of register of a SID
sid_base[offset] = 0; sid_base[offset] = 0;
} }
} }
@ -55,7 +60,7 @@ void sid_init(short sid) {
*/ */
void sid_init_all() { void sid_init_all() {
int sid; int sid;
for (sid = 0; sid < 5; sid++) { for (sid = 0; sid < N_SIDS; sid++) {
sid_init(sid); sid_init(sid);
} }
} }