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

@@ -12,10 +12,11 @@
*
* NOTE: THIS IS CURRENTLY A MESS, but will be cleaned up as I go.
*
* Version: @(#)scsi_aha154x.c 1.0.23 2017/10/08
* Version: @(#)scsi_aha154x.c 1.0.24 2017/10/09
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Original Buslogic version by SA1988 and Miran Grca.
*
* Copyright 2017 Fred N. van Kempen.
*/
#include <stdio.h>
@@ -552,7 +553,7 @@ aha154x_eeprom(aha_t *dev, uint8_t cmd,uint8_t arg,uint8_t len,uint8_t off,uint8
}
/* Mess with the AHA-154xCF's Shadow RAM. */
/* Map either the main or utility (Select) ROM into the memory space. */
static uint8_t
aha154x_mmap(aha_t *dev, uint8_t cmd)
{
@@ -575,7 +576,7 @@ aha154x_mmap(aha_t *dev, uint8_t cmd)
static void
RaiseIntr(aha_t *dev, int suppress, uint8_t Interrupt)
raise_irq(aha_t *dev, int suppress, uint8_t Interrupt)
{
if (Interrupt & (INTR_MBIF | INTR_MBOA)) {
if (! (dev->Interrupt & INTR_HACC)) {
@@ -601,7 +602,7 @@ RaiseIntr(aha_t *dev, int suppress, uint8_t Interrupt)
static void
ClearIntr(aha_t *dev)
clear_irq(aha_t *dev)
{
dev->Interrupt = 0;
aha_log("%s: lowering IRQ %i (stat 0x%02x)\n",
@@ -611,7 +612,7 @@ ClearIntr(aha_t *dev)
aha_log("%s: Raising Interrupt 0x%02X (Pending)\n",
dev->name, dev->Interrupt);
if (dev->MailboxOutInterrupts || !(dev->Interrupt & INTR_MBOA)) {
RaiseIntr(dev, 0, dev->PendingInterrupt);
raise_irq(dev, 0, dev->PendingInterrupt);
}
dev->PendingInterrupt = 0;
}
@@ -646,7 +647,7 @@ aha_reset(aha_t *dev)
dev->shram_mode = 0;
dev->last_mb = 0;
ClearIntr(dev);
clear_irq(dev);
}
@@ -691,7 +692,7 @@ aha_cmd_done(aha_t *dev, int suppress)
if ((dev->Command != CMD_START_SCSI) && (dev->Command != CMD_BIOS_SCSI)) {
dev->Status &= ~STAT_DFULL;
aha_log("%s: Raising IRQ %i\n", dev->name, dev->Irq);
RaiseIntr(dev, suppress, INTR_HACC);
raise_irq(dev, suppress, INTR_HACC);
}
dev->Command = 0xff;
@@ -1292,7 +1293,7 @@ aha_do_mail(aha_t *dev)
aha_log("aha_do_mail(): Writing %i bytes at %08X\n", sizeof(CmdStatus), Outgoing + CodeOffset);
DMAPageWrite(Outgoing + CodeOffset, (char *)&CmdStatus, sizeof(CmdStatus));
RaiseIntr(dev, 0, dev->ToRaise);
raise_irq(dev, 0, dev->ToRaise);
while (dev->Interrupt) {
}
@@ -1397,7 +1398,7 @@ aha_write(uint16_t port, uint8_t val, void *priv)
}
if (val & CTRL_IRST) {
ClearIntr(dev);
clear_irq(dev);
}
break;
@@ -2277,13 +2278,8 @@ device_t aha1540b_device = {
"Adaptec AHA-1540B",
DEVICE_ISA | DEVICE_AT,
AHA_154xB,
aha_init,
aha_close,
NULL,
NULL,
NULL,
NULL,
NULL,
aha_init, aha_close, NULL,
NULL, NULL, NULL, NULL,
aha_154x_config
};
@@ -2291,13 +2287,8 @@ device_t aha1542c_device = {
"Adaptec AHA-1542C",
DEVICE_ISA | DEVICE_AT,
AHA_154xC,
aha_init,
aha_close,
NULL,
NULL,
NULL,
NULL,
NULL,
aha_init, aha_close, NULL,
NULL, NULL, NULL, NULL,
aha_154x_config
};
@@ -2305,13 +2296,8 @@ device_t aha1542cf_device = {
"Adaptec AHA-1542CF",
DEVICE_ISA | DEVICE_AT,
AHA_154xCF,
aha_init,
aha_close,
NULL,
NULL,
NULL,
NULL,
NULL,
aha_init, aha_close, NULL,
NULL, NULL, NULL, NULL,
aha_154x_config
};
@@ -2319,11 +2305,7 @@ device_t aha1640_device = {
"Adaptec AHA-1640",
DEVICE_MCA,
AHA_1640,
aha_init,
aha_close,
NULL,
NULL,
NULL,
NULL,
aha_init, aha_close, NULL,
NULL, NULL, NULL, NULL,
NULL
};

View File

@@ -10,11 +10,12 @@
* 0 - BT-545C ISA;
* 1 - BT-958D PCI (but BT-545C ISA on non-PCI machines)
*
* Version: @(#)scsi_buslogic.c 1.0.18 2017/10/08
* Version: @(#)scsi_buslogic.c 1.0.19 2017/10/09
*
* Authors: TheCollector1995, <mariogplayer@gmail.com>
* Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2016,2017 Miran Grca.
* Copyright 2017 Fred N. van Kempen.
*/
@@ -3154,13 +3155,8 @@ device_t buslogic_device = {
"Buslogic BT-545C ISA",
DEVICE_ISA | DEVICE_AT,
CHIP_BUSLOGIC_ISA,
Buslogic_Init,
BuslogicClose,
NULL,
NULL,
NULL,
NULL,
NULL,
Buslogic_Init, BuslogicClose, NULL,
NULL, NULL, NULL, NULL,
BT545C_Config
};
@@ -3168,12 +3164,7 @@ device_t buslogic_pci_device = {
"Buslogic BT-958D PCI",
DEVICE_PCI,
CHIP_BUSLOGIC_PCI,
Buslogic_Init,
BuslogicClose,
NULL,
NULL,
NULL,
NULL,
NULL,
Buslogic_Init, BuslogicClose, NULL,
NULL, NULL, NULL, NULL,
BT958D_Config
};

View File

@@ -6,7 +6,7 @@
*
* Emulation of SCSI fixed and removable disks.
*
* Version: @(#)scsi_disk.c 1.0.11 2017/10/07
* Version: @(#)scsi_disk.c 1.0.12 2017/10/09
*
* Author: Miran Grca, <mgrca8@gmail.com>
* Copyright 2017 Miran Grca.
@@ -27,8 +27,8 @@
#include "../disk/hdd.h"
#include "../disk/hdc.h"
#include "../disk/hdc_ide.h"
#include "../win/win.h"
#include "../win/plat_iodev.h"
#include "../plat.h"
#include "../ui.h"
#include "scsi.h"
#include "scsi_disk.h"
@@ -1566,11 +1566,11 @@ void scsi_hd_command(uint8_t id, uint8_t *cdb)
shdc[id].all_blocks_total = shdc[id].block_total;
if (shdc[id].packet_status != CDROM_PHASE_COMPLETE)
{
StatusBarUpdateIcon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 1);
ui_sb_update_icon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 1);
}
else
{
StatusBarUpdateIcon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 0);
ui_sb_update_icon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 0);
}
return;
@@ -1736,7 +1736,7 @@ void scsi_hd_command(uint8_t id, uint8_t *cdb)
scsi_hd_data_command_finish(id, alloc_length, alloc_length, alloc_length, 1);
}
shdc[id].all_blocks_total = shdc[id].block_total;
StatusBarUpdateIcon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 1);
ui_sb_update_icon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 1);
return;
case GPCMD_START_STOP_UNIT:
@@ -2014,7 +2014,7 @@ void scsi_hd_phase_data_out(uint8_t id)
SCSIPhase = SCSI_PHASE_STATUS;
StatusBarUpdateIcon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 0);
ui_sb_update_icon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 0);
break;
default:
fatal("SCSI HDD %i: Bad Command for phase 2 (%02X)\n", shdc[id].current_cdb[0]);
@@ -2038,7 +2038,7 @@ void scsi_hd_callback(uint8_t id)
shdc[id].status = READY_STAT;
shdc[id].phase = 3;
shdc[id].packet_status = 0xFF;
StatusBarUpdateIcon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 0);
ui_sb_update_icon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 0);
return;
case CDROM_PHASE_DATA_OUT:
scsi_hd_log("SCSI HD %i: PHASE_DATA_OUT\n", id);
@@ -2051,7 +2051,7 @@ void scsi_hd_callback(uint8_t id)
shdc[id].packet_status = CDROM_PHASE_COMPLETE;
shdc[id].status = READY_STAT;
shdc[id].phase = 3;
StatusBarUpdateIcon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 0);
ui_sb_update_icon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 0);
return;
case CDROM_PHASE_DATA_IN:
scsi_hd_log("SCSI HD %i: PHASE_DATA_IN\n", id);
@@ -2063,7 +2063,7 @@ void scsi_hd_callback(uint8_t id)
shdc[id].packet_status = CDROM_PHASE_COMPLETE;
shdc[id].status = READY_STAT;
shdc[id].phase = 3;
StatusBarUpdateIcon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 0);
ui_sb_update_icon((hdd[id].bus == HDD_BUS_SCSI_REMOVABLE) ? (SB_RDISK | id) : (SB_HDD | HDD_BUS_SCSI), 0);
return;
case CDROM_PHASE_ERROR:
scsi_hd_log("SCSI HD %i: PHASE_ERROR\n", id);