Added emulation of BusLogic BT-958 PCI SCSI controller;
SCSI controller configuration moved to the Settings dialog, suggestion by RichardG.
This commit is contained in:
209
src/win.c
209
src/win.c
@@ -722,36 +722,6 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
|
||||
|
||||
CheckMenuItem(menu, IDM_IDE_QUA_IRQ9 - 9 + ide_irq[3], MF_CHECKED);
|
||||
|
||||
if (buslogic_enabled)
|
||||
CheckMenuItem(menu, IDM_SCSI_ENABLED, MF_CHECKED);
|
||||
|
||||
if (!find_in_array(valid_models, scsi_model, 2, IDM_SCSI_MODEL0))
|
||||
{
|
||||
fatal("SCSI controller: Invalid model\n");
|
||||
}
|
||||
|
||||
CheckMenuItem(menu, IDM_SCSI_MODEL0 + scsi_model, MF_CHECKED);
|
||||
|
||||
if (!find_in_array(valid_bases, scsi_base, 6, IDM_SCSI_BASE130 - 0x130))
|
||||
{
|
||||
fatal("SCSI controller: Invalid base address\n");
|
||||
}
|
||||
|
||||
CheckMenuItem(menu, IDM_SCSI_BASE130 - 0x130 + scsi_base, MF_CHECKED);
|
||||
|
||||
if (!find_in_array(valid_irqs, scsi_irq, 6, IDM_SCSI_IRQ9 - 9))
|
||||
{
|
||||
fatal("SCSI controller: Invalid IRQ\n");
|
||||
}
|
||||
CheckMenuItem(menu, IDM_SCSI_IRQ9 - 9 + scsi_irq, MF_CHECKED);
|
||||
|
||||
if (!find_in_array(valid_dma_channels, scsi_dma, 3, IDM_SCSI_DMA5 - 5))
|
||||
{
|
||||
fatal("SCSI controller: Invalid DMA channel\n");
|
||||
}
|
||||
|
||||
CheckMenuItem(menu, IDM_SCSI_DMA5 - 5 + scsi_dma, MF_CHECKED);
|
||||
|
||||
#ifdef ENABLE_LOG_TOGGLES
|
||||
#ifdef ENABLE_BUSLOGIC_LOG
|
||||
CheckMenuItem(menu, IDM_LOG_BUSLOGIC, buslogic_do_log ? MF_CHECKED : MF_UNCHECKED);
|
||||
@@ -1157,103 +1127,6 @@ int ide_qua_set_irq(HMENU hmenu, int irq, int id)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int scsi_set_model(HMENU hmenu, int model, int id)
|
||||
{
|
||||
if (scsi_model == model)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
pause = 1;
|
||||
Sleep(100);
|
||||
scsi_model = model;
|
||||
CheckMenuItem(hmenu, IDM_SCSI_MODEL0, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, IDM_SCSI_MODEL1, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, id, MF_CHECKED);
|
||||
saveconfig();
|
||||
resetpchard();
|
||||
pause = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int scsi_set_base(HMENU hmenu, int base, int id)
|
||||
{
|
||||
if (scsi_base == base)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
pause = 1;
|
||||
Sleep(100);
|
||||
scsi_base = base;
|
||||
CheckMenuItem(hmenu, IDM_SCSI_BASE130, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, IDM_SCSI_BASE134, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, IDM_SCSI_BASE230, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, IDM_SCSI_BASE234, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, IDM_SCSI_BASE330, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, IDM_SCSI_BASE334, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, id, MF_CHECKED);
|
||||
saveconfig();
|
||||
resetpchard();
|
||||
pause = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int scsi_set_irq(HMENU hmenu, int irq, int id)
|
||||
{
|
||||
if (scsi_irq == irq)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
pause = 1;
|
||||
Sleep(100);
|
||||
scsi_irq = irq;
|
||||
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_UNCHECKED);
|
||||
CheckMenuItem(hmenu, IDM_SCSI_IRQ14, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, IDM_SCSI_IRQ15, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, id, MF_CHECKED);
|
||||
saveconfig();
|
||||
resetpchard();
|
||||
pause = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int scsi_set_dma(HMENU hmenu, int dma, int id)
|
||||
{
|
||||
if (scsi_dma == dma)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
pause = 1;
|
||||
Sleep(100);
|
||||
scsi_dma = dma;
|
||||
CheckMenuItem(hmenu, IDM_SCSI_DMA5, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, IDM_SCSI_DMA6, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, IDM_SCSI_DMA7, MF_UNCHECKED);
|
||||
CheckMenuItem(hmenu, id, MF_CHECKED);
|
||||
saveconfig();
|
||||
resetpchard();
|
||||
pause = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void video_toggle_option(HMENU hmenu, int *val, int id)
|
||||
{
|
||||
*val ^= 1;
|
||||
@@ -1814,88 +1687,6 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
||||
ide_qua_set_irq(hmenu, 15, IDM_IDE_QUA_IRQ15);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_ENABLED:
|
||||
if (MessageBox(NULL,"This will reset 86Box!\nOkay to continue?","86Box",MB_OKCANCEL) != IDOK)
|
||||
{
|
||||
break;
|
||||
}
|
||||
pause = 1;
|
||||
Sleep(100);
|
||||
buslogic_enabled ^= 1;
|
||||
CheckMenuItem(hmenu, IDM_SCSI_ENABLED, buslogic_enabled ? MF_CHECKED : MF_UNCHECKED);
|
||||
saveconfig();
|
||||
resetpchard();
|
||||
pause = 0;
|
||||
break;
|
||||
|
||||
case IDM_SCSI_MODEL0:
|
||||
scsi_set_model(hmenu, 0, IDM_SCSI_MODEL0);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_MODEL1:
|
||||
scsi_set_model(hmenu, 1, IDM_SCSI_MODEL1);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_BASE130:
|
||||
scsi_set_base(hmenu, 0x130, IDM_SCSI_BASE130);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_BASE134:
|
||||
scsi_set_base(hmenu, 0x134, IDM_SCSI_BASE134);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_BASE230:
|
||||
scsi_set_base(hmenu, 0x230, IDM_SCSI_BASE230);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_BASE234:
|
||||
scsi_set_base(hmenu, 0x234, IDM_SCSI_BASE234);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_BASE330:
|
||||
scsi_set_base(hmenu, 0x330, IDM_SCSI_BASE330);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_BASE334:
|
||||
scsi_set_base(hmenu, 0x334, IDM_SCSI_BASE334);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_IRQ9:
|
||||
scsi_set_irq(hmenu, 9, IDM_SCSI_IRQ9);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_IRQ10:
|
||||
scsi_set_irq(hmenu, 10, IDM_SCSI_IRQ10);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_IRQ11:
|
||||
scsi_set_irq(hmenu, 11, IDM_SCSI_IRQ11);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_IRQ12:
|
||||
scsi_set_irq(hmenu, 12, IDM_SCSI_IRQ12);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_IRQ14:
|
||||
scsi_set_irq(hmenu, 14, IDM_SCSI_IRQ14);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_IRQ15:
|
||||
scsi_set_irq(hmenu, 15, IDM_SCSI_IRQ15);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_DMA5:
|
||||
scsi_set_dma(hmenu, 5, IDM_SCSI_DMA5);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_DMA6:
|
||||
scsi_set_dma(hmenu, 6, IDM_SCSI_DMA6);
|
||||
break;
|
||||
|
||||
case IDM_SCSI_DMA7:
|
||||
scsi_set_dma(hmenu, 7, IDM_SCSI_DMA7);
|
||||
break;
|
||||
|
||||
case IDM_CDROM_1_EMPTY:
|
||||
case IDM_CDROM_2_EMPTY:
|
||||
case IDM_CDROM_3_EMPTY:
|
||||
|
||||
Reference in New Issue
Block a user