Separated main code from UI and PLATform support code, plus other generally small fixes here and there.

This commit is contained in:
waltje
2017-10-10 03:07:29 -04:00
parent e88899bb3c
commit bd89e66b7b
47 changed files with 924 additions and 872 deletions

View File

@@ -8,11 +8,12 @@
*
* Driver for the ESDI controller (WD1007-vse1) for PC/AT.
*
* Version: @(#)hdc_esdi_at.c 1.0.3 2017/10/05
* Version: @(#)hdc_esdi_at.c 1.0.4 2017/10/09
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
* Copyright 2017 Fred N. van Kempen.
@@ -32,7 +33,7 @@
#include "../pic.h"
#include "../rom.h"
#include "../timer.h"
#include "../win/win.h"
#include "../ui.h"
#include "hdc.h"
#include "hdd.h"
@@ -514,7 +515,7 @@ esdi_callback(void *priv)
esdi->pos = 0;
esdi->status = STAT_DRQ | STAT_READY | STAT_DSC;
irq_raise(esdi);
StatusBarUpdateIcon(SB_HDD | HDD_BUS_ESDI, 1);
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 1);
break;
case CMD_WRITE:
@@ -549,7 +550,7 @@ esdi_callback(void *priv)
} else {
esdi->status = STAT_READY | STAT_DSC;
}
StatusBarUpdateIcon(SB_HDD | HDD_BUS_ESDI, 1);
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 1);
break;
case CMD_VERIFY:
@@ -575,7 +576,7 @@ esdi_callback(void *priv)
break;
}
StatusBarUpdateIcon(SB_HDD | HDD_BUS_ESDI, 1);
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 1);
next_sector(esdi);
esdi->secount = (esdi->secount - 1) & 0xff;
if (esdi->secount)
@@ -609,7 +610,7 @@ esdi_callback(void *priv)
}
esdi->status = STAT_READY | STAT_DSC;
irq_raise(esdi);
StatusBarUpdateIcon(SB_HDD | HDD_BUS_ESDI, 1);
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 1);
break;
case CMD_DIAGNOSE:
@@ -737,7 +738,7 @@ esdi_callback(void *priv)
break;
}
StatusBarUpdateIcon(SB_HDD | HDD_BUS_ESDI, 0);
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
}

View File

@@ -52,10 +52,11 @@
* however, are auto-configured by the system software as
* shown above.
*
* Version: @(#)hdc_esdi_mca.c 1.0.5 2017/10/05
* Version: @(#)hdc_esdi_mca.c 1.0.6 2017/10/09
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2017 Fred N. van Kempen.
*/
@@ -73,7 +74,7 @@
#include "../pic.h"
#include "../rom.h"
#include "../timer.h"
#include "../win/win.h"
#include "../ui.h"
#include "hdc.h"
#include "hdd.h"
@@ -326,7 +327,7 @@ esdi_callback(void *priv)
if (dev->rba >= drive->sectors)
fatal("Read past end of drive\n");
hdd_image_read(drive->hdd_num, dev->rba, 1, (uint8_t *)dev->data);
StatusBarUpdateIcon(SB_HDD | HDD_BUS_ESDI, 1);
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 1);
}
while (dev->data_pos < 256) {
@@ -407,11 +408,11 @@ esdi_callback(void *priv)
hdd_image_write(drive->hdd_num, dev->rba, 1, (uint8_t *)dev->data);
dev->rba++;
dev->sector_pos++;
StatusBarUpdateIcon(SB_HDD | HDD_BUS_ESDI, 1);
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 1);
dev->data_pos = 0;
}
StatusBarUpdateIcon(SB_HDD | HDD_BUS_ESDI, 0);
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
dev->status = STATUS_CMD_IN_PROGRESS;
dev->cmd_state = 2;

View File

@@ -9,10 +9,11 @@
* Implementation of the IDE emulation for hard disks and ATAPI
* CD-ROM devices.
*
* Version: @(#)hdc_ide.c 1.0.10 2017/10/05
* Version: @(#)hdc_ide.c 1.0.11 2017/10/09
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
*/
@@ -30,7 +31,7 @@
#include "../device.h"
#include "../cdrom/cdrom.h"
#include "../scsi/scsi.h"
#include "../win/win.h"
#include "../ui.h"
#include "hdc.h"
#include "hdc_ide.h"
#include "hdd.h"
@@ -1297,7 +1298,7 @@ uint32_t ide_read_data(int ide_board, int length)
}
else
{
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 0);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 0);
}
}
}
@@ -1645,7 +1646,7 @@ void callbackide(int ide_board)
ide_irq_raise(ide);
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 1);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 1);
return;
case WIN_READ_DMA:
@@ -1692,12 +1693,12 @@ void callbackide(int ide_board)
ide_next_sector(ide);
ide->atastat = BUSY_STAT;
idecallback[ide_board]=6LL*IDE_TIME;
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 1);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 1);
}
else
{
ide_irq_raise(ide);
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 0);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 0);
}
}
}
@@ -1750,7 +1751,7 @@ void callbackide(int ide_board)
ide->blockcount = 0;
}
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 1);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 1);
return;
case WIN_WRITE:
@@ -1771,12 +1772,12 @@ void callbackide(int ide_board)
ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;
ide->pos=0;
ide_next_sector(ide);
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 1);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 1);
}
else
{
ide->atastat = READY_STAT | DSC_STAT;
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 0);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 0);
}
return;
@@ -1810,12 +1811,12 @@ void callbackide(int ide_board)
ide_next_sector(ide);
ide->atastat = BUSY_STAT;
idecallback[ide_board]=6LL*IDE_TIME;
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 1);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 1);
}
else
{
ide_irq_raise(ide);
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 0);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 0);
}
}
}
@@ -1844,12 +1845,12 @@ void callbackide(int ide_board)
ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;
ide->pos=0;
ide_next_sector(ide);
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 1);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 1);
}
else
{
ide->atastat = READY_STAT | DSC_STAT;
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 0);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 0);
}
return;
@@ -1866,7 +1867,7 @@ void callbackide(int ide_board)
ide->pos=0;
ide->atastat = READY_STAT | DSC_STAT;
ide_irq_raise(ide);
StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 1);
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 1);
return;
case WIN_FORMAT:
@@ -1883,7 +1884,7 @@ void callbackide(int ide_board)
ide->atastat = READY_STAT | DSC_STAT;
ide_irq_raise(ide);
/* StatusBarUpdateIcon(SB_HDD | hdd[ide->hdd_num].bus, 1); */
/* ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus, 1); */
return;
case WIN_DRIVE_DIAGNOSTICS:

View File

@@ -12,10 +12,11 @@
* based design. Most cards were WD1003-WA2 or -WAH, where the
* -WA2 cards had a floppy controller as well (to save space.)
*
* Version: @(#)hdd_mfm_at.c 1.0.5 2017/10/05
* Version: @(#)hdd_mfm_at.c 1.0.6 2017/10/09
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2017 Fred N. van Kempen.
*/
@@ -29,7 +30,7 @@
#include "../io.h"
#include "../pic.h"
#include "../timer.h"
#include "../win/win.h"
#include "../ui.h"
#include "hdc.h"
#include "hdd.h"
@@ -462,7 +463,7 @@ mfm_readw(uint16_t port, void *priv)
mfm->callback = 6LL*MFM_TIME;
timer_update_outstanding();
} else {
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 0);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 0);
}
}
}
@@ -562,7 +563,7 @@ do_callback(void *priv)
mfm->reset = 0;
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 0);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 0);
return;
}
@@ -596,7 +597,7 @@ do_callback(void *priv)
mfm->pos = 0;
mfm->status = STAT_DRQ|STAT_READY|STAT_DSC;
irq_raise(mfm);
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 1);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 1);
break;
case CMD_WRITE:
@@ -621,9 +622,9 @@ do_callback(void *priv)
mfm->status |= STAT_DRQ;
mfm->pos = 0;
next_sector(mfm);
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 1);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 1);
} else {
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 0);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 0);
}
irq_raise(mfm);
break;
@@ -637,7 +638,7 @@ do_callback(void *priv)
mfm->pos = 0;
mfm->status = STAT_READY|STAT_DSC;
irq_raise(mfm);
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 1);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 1);
break;
case CMD_FORMAT:
@@ -657,7 +658,7 @@ do_callback(void *priv)
mfm->status = STAT_READY|STAT_DSC;
irq_raise(mfm);
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 1);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 1);
break;
case CMD_DIAGNOSE:
@@ -734,7 +735,7 @@ mfm_init(device_t *info)
timer_add(do_callback, &mfm->callback, &mfm->callback, mfm);
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 0);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 0);
return(mfm);
}
@@ -754,13 +755,14 @@ mfm_close(void *priv)
free(mfm);
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 0);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 0);
}
device_t mfm_at_wd1003_device = {
"WD1003 AT MFM/RLL Controller",
DEVICE_ISA | DEVICE_AT, 0,
DEVICE_ISA | DEVICE_AT,
0,
mfm_init, mfm_close, NULL,
NULL, NULL, NULL, NULL, NULL
};

View File

@@ -41,10 +41,11 @@
* Since all controllers (including the ones made by DTC) use
* (mostly) the same API, we keep them all in this module.
*
* Version: @(#)hdd_mfm_xt.c 1.0.7 2017/10/05
* Version: @(#)hdd_mfm_xt.c 1.0.8 2017/10/09
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2017 Fred N. van Kempen.
*/
@@ -61,7 +62,7 @@
#include "../pic.h"
#include "../rom.h"
#include "../timer.h"
#include "../win/win.h"
#include "../ui.h"
#include "hdc.h"
#include "hdd.h"
@@ -403,7 +404,7 @@ mfm_callback(void *priv)
mfm_complete(mfm);
StatusBarUpdateIcon(SB_HDD | HDD_BUS_MFM, 1);
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 1);
break;
default:
@@ -448,7 +449,7 @@ mfm_callback(void *priv)
hdd_image_read(drive->hdd_num, addr, 1,
(uint8_t *) mfm->sector_buf);
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 1);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 1);
if (mfm->irq_dma_mask & DMA_ENA)
mfm->callback = MFM_TIME;
@@ -493,7 +494,7 @@ mfm_callback(void *priv)
hdd_image_read(drive->hdd_num, addr, 1,
(uint8_t *) mfm->sector_buf);
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 1);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 1);
mfm->state = STATE_SEND_DATA;
@@ -505,7 +506,7 @@ mfm_callback(void *priv)
}
} else {
mfm_complete(mfm);
StatusBarUpdateIcon(SB_HDD | HDD_BUS_MFM, 0);
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
}
break;
@@ -566,7 +567,7 @@ mfm_callback(void *priv)
hdd_image_write(drive->hdd_num, addr, 1,
(uint8_t *) mfm->sector_buf);
StatusBarUpdateIcon(SB_HDD|HDD_BUS_MFM, 1);
ui_sb_update_icon(SB_HDD|HDD_BUS_MFM, 1);
next_sector(mfm);
mfm->data_pos = 0;
@@ -857,7 +858,8 @@ xebec_available(void)
device_t mfm_xt_xebec_device = {
"IBM PC Fixed Disk Adapter",
0, 0,
DEVICE_ISA,
0,
xebec_init, mfm_close, NULL,
xebec_available, NULL, NULL, NULL,
NULL
@@ -908,7 +910,8 @@ dtc5150x_available(void)
device_t mfm_xt_dtc5150x_device = {
"DTC 5150X",
DEVICE_ISA, 0,
DEVICE_ISA,
0,
dtc5150x_init, mfm_close, NULL,
dtc5150x_available, NULL, NULL, NULL,
NULL

View File

@@ -21,11 +21,12 @@
* already on their way out, the newer IDE standard based on the
* PC/AT controller and 16b design became the IDE we now know.
*
* Version: @(#)hdc_xtide.c 1.0.7 2017/10/04
* Version: @(#)hdc_xtide.c 1.0.8 2017/10/09
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
* Copyright 2017 Fred N. van Kempen.

View File

@@ -8,7 +8,7 @@
*
* Common code to handle all sorts of hard disk images.
*
* Version: @(#)hdd.c 1.0.3 2017/10/07
* Version: @(#)hdd.c 1.0.4 2017/10/09
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
@@ -21,10 +21,7 @@
#include <string.h>
#include <wchar.h>
#include "../ibm.h"
#include "../cpu/cpu.h"
#include "../device.h"
#include "../machine/machine.h"
#include "../win/win.h"
#include "../ui.h"
#include "hdd.h"
@@ -50,7 +47,7 @@ hdd_string_to_bus(char *str, int cdrom)
if (! strcmp(str, "mfm")) {
if (cdrom) {
no_cdrom:
msgbox_error(hwndMain, IDS_4114);
ui_msgbox(MBX_ERROR, (wchar_t *)IDS_4114);
return(0);
}
@@ -113,7 +110,7 @@ no_cdrom:
}
if (! strcmp(str, "usb"))
msgbox_error(hwndMain, IDS_4110);
ui_msgbox(MBX_ERROR, (wchar_t *)IDS_4110);
return(0);
}