Sound Blaster 16 and AWE32 MPU-401 base address and 16-bit DMA channel are now configurable;
AHA-154x SCSI controller base address, IRQ, and 16-bit DMA channel are now configurable.
This commit is contained in:
@@ -289,6 +289,10 @@ typedef struct Adaptec_t
|
|||||||
|
|
||||||
Adaptec_t AdaptecLUN;
|
Adaptec_t AdaptecLUN;
|
||||||
|
|
||||||
|
int scsi_base = 0x330;
|
||||||
|
int scsi_dma = 5;
|
||||||
|
int scsi_irq = 11;
|
||||||
|
|
||||||
static void AdaptecSCSIRequestSetup(Adaptec_t *Adaptec, uint32_t CCBPointer);
|
static void AdaptecSCSIRequestSetup(Adaptec_t *Adaptec, uint32_t CCBPointer);
|
||||||
static void AdaptecStartMailbox(Adaptec_t *Adaptec);
|
static void AdaptecStartMailbox(Adaptec_t *Adaptec);
|
||||||
|
|
||||||
@@ -309,11 +313,11 @@ void AdaptecLog(const char *format, ...)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AdaptecSetDMAChannel(int DmaPort1, int DmaData1, int DmaPort2, int DmaData2)
|
/* static void AdaptecSetDMAChannel(int DmaPort1, int DmaData1, int DmaPort2, int DmaData2)
|
||||||
{
|
{
|
||||||
dma_channel_write(DmaPort1, DmaData1);
|
dma_channel_write(DmaPort1, DmaData1);
|
||||||
dma_channel_write(DmaPort2, DmaData2);
|
dma_channel_write(DmaPort2, DmaData2);
|
||||||
}
|
} */
|
||||||
|
|
||||||
static void AdaptecClearInterrupt(Adaptec_t *Adaptec)
|
static void AdaptecClearInterrupt(Adaptec_t *Adaptec)
|
||||||
{
|
{
|
||||||
@@ -828,9 +832,9 @@ void AdaptecWrite(uint16_t Port, uint8_t Val, void *p)
|
|||||||
case 0x0B:
|
case 0x0B:
|
||||||
Adaptec->DataBuf[0] = (1 << Adaptec->DmaChannel);
|
Adaptec->DataBuf[0] = (1 << Adaptec->DmaChannel);
|
||||||
|
|
||||||
if (Adaptec->DmaChannel >= 0)
|
/* if (Adaptec->DmaChannel >= 0)
|
||||||
AdaptecSetDMAChannel(Adaptec->DmaPort1, Adaptec->DmaData1,
|
AdaptecSetDMAChannel(Adaptec->DmaPort1, Adaptec->DmaData1,
|
||||||
Adaptec->DmaPort2, Adaptec->DmaData2);
|
Adaptec->DmaPort2, Adaptec->DmaData2); */
|
||||||
|
|
||||||
Adaptec->DataBuf[1] = (1 << (Adaptec->Irq - 9));
|
Adaptec->DataBuf[1] = (1 << (Adaptec->Irq - 9));
|
||||||
Adaptec->DataBuf[2] = 7;
|
Adaptec->DataBuf[2] = 7;
|
||||||
@@ -1093,8 +1097,8 @@ void AdaptecCallback(void *p)
|
|||||||
|
|
||||||
void AdaptecInit(uint8_t Id)
|
void AdaptecInit(uint8_t Id)
|
||||||
{
|
{
|
||||||
AdaptecLUN.Irq = 11;
|
AdaptecLUN.Irq = scsi_irq;
|
||||||
AdaptecLUN.DmaChannel = 6;
|
AdaptecLUN.DmaChannel = scsi_dma;
|
||||||
|
|
||||||
AdaptecLUN.DmaPort1 = 0xD6;
|
AdaptecLUN.DmaPort1 = 0xD6;
|
||||||
AdaptecLUN.DmaData1 = 0xD4;
|
AdaptecLUN.DmaData1 = 0xD4;
|
||||||
@@ -1104,7 +1108,7 @@ void AdaptecInit(uint8_t Id)
|
|||||||
pfnIoRequestCopyFromBuffer = AdaptecIoRequestCopyFromBuffer;
|
pfnIoRequestCopyFromBuffer = AdaptecIoRequestCopyFromBuffer;
|
||||||
pfnIoRequestCopyToBuffer = AdaptecIoRequestCopyToBuffer;
|
pfnIoRequestCopyToBuffer = AdaptecIoRequestCopyToBuffer;
|
||||||
|
|
||||||
io_sethandler(0x0334, 0x0004, AdaptecRead, NULL, NULL, AdaptecWrite, NULL, NULL, NULL);
|
io_sethandler(scsi_base, 0x0004, AdaptecRead, NULL, NULL, AdaptecWrite, NULL, NULL, NULL);
|
||||||
timer_add(AdaptecCallback, &ScsiCallback[Id], &ScsiCallback[Id], NULL);
|
timer_add(AdaptecCallback, &ScsiCallback[Id], &ScsiCallback[Id], NULL);
|
||||||
|
|
||||||
AdaptecReset(&AdaptecLUN);
|
AdaptecReset(&AdaptecLUN);
|
||||||
|
@@ -639,3 +639,5 @@ char *nvr_concat(char *to_concat);
|
|||||||
int mem_a20_state;
|
int mem_a20_state;
|
||||||
|
|
||||||
void fatal(const char *format, ...);
|
void fatal(const char *format, ...);
|
||||||
|
|
||||||
|
extern int scsi_base, scsi_irq, scsi_dma;
|
||||||
|
8
src/pc.c
8
src/pc.c
@@ -629,6 +629,10 @@ void loadconfig(char *fn)
|
|||||||
voodoo_enabled = config_get_int(NULL, "voodoo", 0);
|
voodoo_enabled = config_get_int(NULL, "voodoo", 0);
|
||||||
aha154x_enabled = config_get_int(NULL, "aha154x", 0);
|
aha154x_enabled = config_get_int(NULL, "aha154x", 0);
|
||||||
|
|
||||||
|
scsi_base = config_get_int(NULL, "scsi_base", 0x330);
|
||||||
|
scsi_irq = config_get_int(NULL, "scsi_irq", 11);
|
||||||
|
scsi_dma = config_get_int(NULL, "scsi_dma", 5);
|
||||||
|
|
||||||
//network
|
//network
|
||||||
ethif = config_get_int(NULL, "netinterface", 1);
|
ethif = config_get_int(NULL, "netinterface", 1);
|
||||||
if (ethif >= inum)
|
if (ethif >= inum)
|
||||||
@@ -791,6 +795,10 @@ void saveconfig()
|
|||||||
config_set_int(NULL, "voodoo", voodoo_enabled);
|
config_set_int(NULL, "voodoo", voodoo_enabled);
|
||||||
config_set_int(NULL, "aha154x", aha154x_enabled);
|
config_set_int(NULL, "aha154x", aha154x_enabled);
|
||||||
|
|
||||||
|
config_set_int(NULL, "scsi_base", scsi_base);
|
||||||
|
config_set_int(NULL, "scsi_irq", scsi_irq);
|
||||||
|
config_set_int(NULL, "scsi_dma", scsi_dma);
|
||||||
|
|
||||||
config_set_int(NULL, "netinterface", ethif);
|
config_set_int(NULL, "netinterface", ethif);
|
||||||
config_set_int(NULL, "netcard", network_card_current);
|
config_set_int(NULL, "netcard", network_card_current);
|
||||||
|
|
||||||
|
23
src/pc.rc
23
src/pc.rc
@@ -35,7 +35,28 @@ BEGIN
|
|||||||
MENUITEM "&Empty",IDM_CDROM_EMPTY
|
MENUITEM "&Empty",IDM_CDROM_EMPTY
|
||||||
MENUITEM "&ISO...",IDM_CDROM_ISO
|
MENUITEM "&ISO...",IDM_CDROM_ISO
|
||||||
END
|
END
|
||||||
MENUITEM "&SCSI controller enabled",IDM_SCSI_ENABLED
|
POPUP "&SCSI controller"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Enabled",IDM_SCSI_ENABLED
|
||||||
|
POPUP "&Base address"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "33&0",IDM_SCSI_BASE330
|
||||||
|
MENUITEM "33&4",IDM_SCSI_BASE334
|
||||||
|
END
|
||||||
|
POPUP "&IRQ"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&9",IDM_SCSI_IRQ9
|
||||||
|
MENUITEM "1&0",IDM_SCSI_IRQ10
|
||||||
|
MENUITEM "1&1",IDM_SCSI_IRQ11
|
||||||
|
MENUITEM "1&2",IDM_SCSI_IRQ12
|
||||||
|
END
|
||||||
|
POPUP "&DMA channel"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&5",IDM_SCSI_DMA5
|
||||||
|
MENUITEM "&6",IDM_SCSI_DMA6
|
||||||
|
MENUITEM "&7",IDM_SCSI_DMA7
|
||||||
|
END
|
||||||
|
END
|
||||||
END
|
END
|
||||||
POPUP "&Settings"
|
POPUP "&Settings"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@@ -32,6 +32,15 @@
|
|||||||
#define IDM_CDROM_ENABLED 40300
|
#define IDM_CDROM_ENABLED 40300
|
||||||
#define IDM_CDROM_SCSI 40400
|
#define IDM_CDROM_SCSI 40400
|
||||||
#define IDM_SCSI_ENABLED 40500
|
#define IDM_SCSI_ENABLED 40500
|
||||||
|
#define IDM_SCSI_BASE330 40501
|
||||||
|
#define IDM_SCSI_BASE334 40502
|
||||||
|
#define IDM_SCSI_IRQ9 40503
|
||||||
|
#define IDM_SCSI_IRQ10 40504
|
||||||
|
#define IDM_SCSI_IRQ11 40505
|
||||||
|
#define IDM_SCSI_IRQ12 40506
|
||||||
|
#define IDM_SCSI_DMA5 40507
|
||||||
|
#define IDM_SCSI_DMA6 40508
|
||||||
|
#define IDM_SCSI_DMA7 40509
|
||||||
|
|
||||||
#define IDC_COMBO1 1000
|
#define IDC_COMBO1 1000
|
||||||
#define IDC_COMBOVID 1001
|
#define IDC_COMBOVID 1001
|
||||||
|
108
src/sound_sb.c
108
src/sound_sb.c
@@ -452,13 +452,14 @@ void *sb_16_init()
|
|||||||
sb_dsp_setaddr(&sb->dsp, addr);
|
sb_dsp_setaddr(&sb->dsp, addr);
|
||||||
sb_dsp_setirq(&sb->dsp, device_get_config_int("irq"));
|
sb_dsp_setirq(&sb->dsp, device_get_config_int("irq"));
|
||||||
sb_dsp_setdma8(&sb->dsp, device_get_config_int("dma"));
|
sb_dsp_setdma8(&sb->dsp, device_get_config_int("dma"));
|
||||||
|
sb_dsp_setdma16(&sb->dsp, device_get_config_int("dma16"));
|
||||||
sb_mixer_init(&sb->mixer);
|
sb_mixer_init(&sb->mixer);
|
||||||
io_sethandler(0x0220, 0x0004, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
io_sethandler(0x0220, 0x0004, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
||||||
io_sethandler(0x0228, 0x0002, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
io_sethandler(0x0228, 0x0002, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
||||||
io_sethandler(0x0388, 0x0002, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
io_sethandler(0x0388, 0x0002, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
||||||
io_sethandler(0x0224, 0x0002, sb_16_mixer_read, NULL, NULL, sb_16_mixer_write, NULL, NULL, sb);
|
io_sethandler(0x0224, 0x0002, sb_16_mixer_read, NULL, NULL, sb_16_mixer_write, NULL, NULL, sb);
|
||||||
sound_add_handler(sb_get_buffer_opl3, sb);
|
sound_add_handler(sb_get_buffer_opl3, sb);
|
||||||
mpu401_uart_init(&sb->mpu, 0x330);
|
mpu401_uart_init(&sb->mpu, device_get_config_int("addr401"));
|
||||||
|
|
||||||
sb->mixer.regs[0x30] = 31 << 3;
|
sb->mixer.regs[0x30] = 31 << 3;
|
||||||
sb->mixer.regs[0x31] = 31 << 3;
|
sb->mixer.regs[0x31] = 31 << 3;
|
||||||
@@ -494,13 +495,14 @@ void *sb_awe32_init()
|
|||||||
sb_dsp_setaddr(&sb->dsp, addr);
|
sb_dsp_setaddr(&sb->dsp, addr);
|
||||||
sb_dsp_setirq(&sb->dsp, device_get_config_int("irq"));
|
sb_dsp_setirq(&sb->dsp, device_get_config_int("irq"));
|
||||||
sb_dsp_setdma8(&sb->dsp, device_get_config_int("dma"));
|
sb_dsp_setdma8(&sb->dsp, device_get_config_int("dma"));
|
||||||
|
sb_dsp_setdma16(&sb->dsp, device_get_config_int("dma16"));
|
||||||
sb_mixer_init(&sb->mixer);
|
sb_mixer_init(&sb->mixer);
|
||||||
io_sethandler(0x0220, 0x0004, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
io_sethandler(0x0220, 0x0004, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
||||||
io_sethandler(0x0228, 0x0002, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
io_sethandler(0x0228, 0x0002, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
||||||
io_sethandler(0x0388, 0x0002, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
io_sethandler(0x0388, 0x0002, opl3_read, NULL, NULL, opl3_write, NULL, NULL, &sb->opl);
|
||||||
io_sethandler(0x0224, 0x0002, sb_16_mixer_read, NULL, NULL, sb_16_mixer_write, NULL, NULL, sb);
|
io_sethandler(0x0224, 0x0002, sb_16_mixer_read, NULL, NULL, sb_16_mixer_write, NULL, NULL, sb);
|
||||||
sound_add_handler(sb_get_buffer_emu8k, sb);
|
sound_add_handler(sb_get_buffer_emu8k, sb);
|
||||||
mpu401_uart_init(&sb->mpu, 0x330);
|
mpu401_uart_init(&sb->mpu, device_get_config_int("addr401"));
|
||||||
emu8k_init(&sb->emu8k, onboard_ram);
|
emu8k_init(&sb->emu8k, onboard_ram);
|
||||||
|
|
||||||
sb->mixer.regs[0x30] = 31 << 3;
|
sb->mixer.regs[0x30] = 31 << 3;
|
||||||
@@ -725,6 +727,27 @@ static device_config_t sb_16_config[] =
|
|||||||
},
|
},
|
||||||
.default_int = 0x220
|
.default_int = 0x220
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.name = "addr401",
|
||||||
|
.description = "MPU-401 Address",
|
||||||
|
.type = CONFIG_BINARY,
|
||||||
|
.type = CONFIG_SELECTION,
|
||||||
|
.selection =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.description = "0x300",
|
||||||
|
.value = 0x300
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "0x330",
|
||||||
|
.value = 0x330
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.default_int = 0x330
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.name = "irq",
|
.name = "irq",
|
||||||
.description = "IRQ",
|
.description = "IRQ",
|
||||||
@@ -755,10 +778,14 @@ static device_config_t sb_16_config[] =
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "dma",
|
.name = "dma",
|
||||||
.description = "DMA",
|
.description = "Low DMA channel",
|
||||||
.type = CONFIG_SELECTION,
|
.type = CONFIG_SELECTION,
|
||||||
.selection =
|
.selection =
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
.description = "DMA 0",
|
||||||
|
.value = 0
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.description = "DMA 1",
|
.description = "DMA 1",
|
||||||
.value = 1
|
.value = 1
|
||||||
@@ -773,6 +800,30 @@ static device_config_t sb_16_config[] =
|
|||||||
},
|
},
|
||||||
.default_int = 1
|
.default_int = 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.name = "dma16",
|
||||||
|
.description = "High DMA channel",
|
||||||
|
.type = CONFIG_SELECTION,
|
||||||
|
.selection =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.description = "DMA 5",
|
||||||
|
.value = 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "DMA 6",
|
||||||
|
.value = 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "DMA 7",
|
||||||
|
.value = 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.default_int = 1
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.name = "midi",
|
.name = "midi",
|
||||||
.description = "MIDI out device",
|
.description = "MIDI out device",
|
||||||
@@ -807,6 +858,27 @@ static device_config_t sb_awe32_config[] =
|
|||||||
},
|
},
|
||||||
.default_int = 0x220
|
.default_int = 0x220
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.name = "addr401",
|
||||||
|
.description = "MPU-401 Address",
|
||||||
|
.type = CONFIG_BINARY,
|
||||||
|
.type = CONFIG_SELECTION,
|
||||||
|
.selection =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.description = "0x300",
|
||||||
|
.value = 0x300
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "0x330",
|
||||||
|
.value = 0x330
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.default_int = 0x330
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.name = "irq",
|
.name = "irq",
|
||||||
.description = "IRQ",
|
.description = "IRQ",
|
||||||
@@ -837,10 +909,14 @@ static device_config_t sb_awe32_config[] =
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "dma",
|
.name = "dma",
|
||||||
.description = "DMA",
|
.description = "Low DMA channel",
|
||||||
.type = CONFIG_SELECTION,
|
.type = CONFIG_SELECTION,
|
||||||
.selection =
|
.selection =
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
.description = "DMA 0",
|
||||||
|
.value = 0
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.description = "DMA 1",
|
.description = "DMA 1",
|
||||||
.value = 1
|
.value = 1
|
||||||
@@ -855,6 +931,30 @@ static device_config_t sb_awe32_config[] =
|
|||||||
},
|
},
|
||||||
.default_int = 1
|
.default_int = 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.name = "dma16",
|
||||||
|
.description = "High DMA channel",
|
||||||
|
.type = CONFIG_SELECTION,
|
||||||
|
.selection =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.description = "DMA 5",
|
||||||
|
.value = 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "DMA 6",
|
||||||
|
.value = 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "DMA 7",
|
||||||
|
.value = 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.default_int = 1
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.name = "midi",
|
.name = "midi",
|
||||||
.description = "MIDI out device",
|
.description = "MIDI out device",
|
||||||
|
@@ -253,11 +253,11 @@ void sb_8_write_dma(sb_dsp_t *dsp, uint8_t val)
|
|||||||
}
|
}
|
||||||
uint16_t sb_16_read_dma(sb_dsp_t *dsp)
|
uint16_t sb_16_read_dma(sb_dsp_t *dsp)
|
||||||
{
|
{
|
||||||
return dma_channel_read(5);
|
return dma_channel_read(dsp->sb_16_dmanum);
|
||||||
}
|
}
|
||||||
void sb_16_write_dma(sb_dsp_t *dsp, uint16_t val)
|
void sb_16_write_dma(sb_dsp_t *dsp, uint16_t val)
|
||||||
{
|
{
|
||||||
dma_channel_write(5, val);
|
dma_channel_write(dsp->sb_16_dmanum, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sb_dsp_setirq(sb_dsp_t *dsp, int irq)
|
void sb_dsp_setirq(sb_dsp_t *dsp, int irq)
|
||||||
@@ -270,6 +270,11 @@ void sb_dsp_setdma8(sb_dsp_t *dsp, int dma)
|
|||||||
dsp->sb_8_dmanum = dma;
|
dsp->sb_8_dmanum = dma;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sb_dsp_setdma16(sb_dsp_t *dsp, int dma)
|
||||||
|
{
|
||||||
|
dsp->sb_16_dmanum = dma;
|
||||||
|
}
|
||||||
|
|
||||||
void sb_exec_command(sb_dsp_t *dsp)
|
void sb_exec_command(sb_dsp_t *dsp)
|
||||||
{
|
{
|
||||||
int temp,c;
|
int temp,c;
|
||||||
@@ -611,6 +616,7 @@ void sb_dsp_init(sb_dsp_t *dsp, int type)
|
|||||||
|
|
||||||
dsp->sb_irqnum = 5;
|
dsp->sb_irqnum = 5;
|
||||||
dsp->sb_8_dmanum = 1;
|
dsp->sb_8_dmanum = 1;
|
||||||
|
dsp->sb_16_dmanum = 5;
|
||||||
|
|
||||||
sb_doreset(dsp);
|
sb_doreset(dsp);
|
||||||
|
|
||||||
|
@@ -5,6 +5,7 @@ typedef struct sb_dsp_t
|
|||||||
int sb_8_length, sb_8_format, sb_8_autoinit, sb_8_pause, sb_8_enable, sb_8_autolen, sb_8_output;
|
int sb_8_length, sb_8_format, sb_8_autoinit, sb_8_pause, sb_8_enable, sb_8_autolen, sb_8_output;
|
||||||
int sb_8_dmanum;
|
int sb_8_dmanum;
|
||||||
int sb_16_length, sb_16_format, sb_16_autoinit, sb_16_pause, sb_16_enable, sb_16_autolen, sb_16_output;
|
int sb_16_length, sb_16_format, sb_16_autoinit, sb_16_pause, sb_16_enable, sb_16_autolen, sb_16_output;
|
||||||
|
int sb_16_dmanum;
|
||||||
int sb_pausetime;
|
int sb_pausetime;
|
||||||
|
|
||||||
uint8_t sb_read_data[256];
|
uint8_t sb_read_data[256];
|
||||||
@@ -65,6 +66,7 @@ void sb_dsp_init(sb_dsp_t *dsp, int type);
|
|||||||
|
|
||||||
void sb_dsp_setirq(sb_dsp_t *dsp, int irq);
|
void sb_dsp_setirq(sb_dsp_t *dsp, int irq);
|
||||||
void sb_dsp_setdma8(sb_dsp_t *dsp, int dma);
|
void sb_dsp_setdma8(sb_dsp_t *dsp, int dma);
|
||||||
|
void sb_dsp_setdma16(sb_dsp_t *dsp, int dma);
|
||||||
void sb_dsp_setaddr(sb_dsp_t *dsp, uint16_t addr);
|
void sb_dsp_setaddr(sb_dsp_t *dsp, uint16_t addr);
|
||||||
|
|
||||||
void sb_dsp_speed_changed(sb_dsp_t *dsp);
|
void sb_dsp_speed_changed(sb_dsp_t *dsp);
|
||||||
|
253
src/win.c
253
src/win.c
@@ -628,6 +628,77 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
|
|||||||
if (aha154x_enabled)
|
if (aha154x_enabled)
|
||||||
CheckMenuItem(menu, IDM_SCSI_ENABLED, MF_CHECKED);
|
CheckMenuItem(menu, IDM_SCSI_ENABLED, MF_CHECKED);
|
||||||
|
|
||||||
|
if (scsi_base == 0x330)
|
||||||
|
{
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_BASE330, MF_CHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_BASE334, MF_UNCHECKED);
|
||||||
|
}
|
||||||
|
else if (scsi_base == 0x334)
|
||||||
|
{
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_BASE330, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_BASE334, MF_CHECKED);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fatal("Unrecognized SCSI base address\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (scsi_irq == 9)
|
||||||
|
{
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ9, MF_CHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ10, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ11, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ12, MF_UNCHECKED);
|
||||||
|
}
|
||||||
|
else if (scsi_irq == 10)
|
||||||
|
{
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ9, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ10, MF_CHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ11, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ12, MF_UNCHECKED);
|
||||||
|
}
|
||||||
|
else if (scsi_irq == 11)
|
||||||
|
{
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ9, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ10, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ11, MF_CHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ12, MF_UNCHECKED);
|
||||||
|
}
|
||||||
|
else if (scsi_irq == 12)
|
||||||
|
{
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ9, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ10, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ11, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_IRQ12, MF_CHECKED);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fatal("Unrecognized SCSI IRQ\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (scsi_dma == 5)
|
||||||
|
{
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_DMA5, MF_CHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_DMA6, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_DMA7, MF_UNCHECKED);
|
||||||
|
}
|
||||||
|
else if (scsi_dma == 6)
|
||||||
|
{
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_DMA5, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_DMA6, MF_CHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_DMA7, MF_UNCHECKED);
|
||||||
|
}
|
||||||
|
else if (scsi_dma == 7)
|
||||||
|
{
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_DMA5, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_DMA6, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menu, IDM_SCSI_DMA7, MF_CHECKED);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fatal("Unrecognized SCSI DMA address\n");
|
||||||
|
}
|
||||||
|
|
||||||
if (cdrom_drive == 200)
|
if (cdrom_drive == 200)
|
||||||
CheckMenuItem(menu, IDM_CDROM_ISO, MF_CHECKED);
|
CheckMenuItem(menu, IDM_CDROM_ISO, MF_CHECKED);
|
||||||
else
|
else
|
||||||
@@ -1212,6 +1283,188 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
|||||||
pause = 0;
|
pause = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IDM_SCSI_BASE330:
|
||||||
|
if (scsi_base == 0x330)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pause = 1;
|
||||||
|
Sleep(100);
|
||||||
|
scsi_base = 0x330;
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_BASE330, MF_CHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_BASE334, MF_UNCHECKED);
|
||||||
|
saveconfig();
|
||||||
|
resetpchard();
|
||||||
|
pause = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_SCSI_BASE334:
|
||||||
|
if (scsi_base == 0x334)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pause = 1;
|
||||||
|
Sleep(100);
|
||||||
|
scsi_base = 0x334;
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_BASE330, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_BASE334, MF_CHECKED);
|
||||||
|
saveconfig();
|
||||||
|
resetpchard();
|
||||||
|
pause = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_SCSI_IRQ9:
|
||||||
|
if (scsi_irq == 9)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pause = 1;
|
||||||
|
Sleep(100);
|
||||||
|
scsi_irq = 9;
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ9, MF_CHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ10, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ11, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ12, MF_UNCHECKED);
|
||||||
|
saveconfig();
|
||||||
|
resetpchard();
|
||||||
|
pause = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_SCSI_IRQ10:
|
||||||
|
if (scsi_irq == 10)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pause = 1;
|
||||||
|
Sleep(100);
|
||||||
|
scsi_irq = 10;
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ9, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ10, MF_CHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ11, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ12, MF_UNCHECKED);
|
||||||
|
saveconfig();
|
||||||
|
resetpchard();
|
||||||
|
pause = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_SCSI_IRQ11:
|
||||||
|
if (scsi_irq == 11)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pause = 1;
|
||||||
|
Sleep(100);
|
||||||
|
scsi_irq = 11;
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ9, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ10, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ11, MF_CHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ12, MF_UNCHECKED);
|
||||||
|
saveconfig();
|
||||||
|
resetpchard();
|
||||||
|
pause = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_SCSI_IRQ12:
|
||||||
|
if (scsi_irq == 12)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pause = 1;
|
||||||
|
Sleep(100);
|
||||||
|
scsi_irq = 12;
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ9, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ10, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ11, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_IRQ12, MF_CHECKED);
|
||||||
|
saveconfig();
|
||||||
|
resetpchard();
|
||||||
|
pause = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_SCSI_DMA5:
|
||||||
|
if (scsi_dma == 5)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pause = 1;
|
||||||
|
Sleep(100);
|
||||||
|
scsi_dma = 5;
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_DMA5, MF_CHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_DMA6, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_DMA7, MF_UNCHECKED);
|
||||||
|
saveconfig();
|
||||||
|
resetpchard();
|
||||||
|
pause = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_SCSI_DMA6:
|
||||||
|
if (scsi_dma == 6)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pause = 1;
|
||||||
|
Sleep(100);
|
||||||
|
scsi_dma = 6;
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_DMA5, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_DMA6, MF_CHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_DMA7, MF_UNCHECKED);
|
||||||
|
saveconfig();
|
||||||
|
resetpchard();
|
||||||
|
pause = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_SCSI_DMA7:
|
||||||
|
if (scsi_dma == 7)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pause = 1;
|
||||||
|
Sleep(100);
|
||||||
|
scsi_dma = 7;
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_DMA5, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_DMA6, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_SCSI_DMA7, MF_CHECKED);
|
||||||
|
saveconfig();
|
||||||
|
resetpchard();
|
||||||
|
pause = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
case IDM_CDROM_EMPTY:
|
case IDM_CDROM_EMPTY:
|
||||||
/* if (!cdrom_enabled)
|
/* if (!cdrom_enabled)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user