Added the Corel LS2000 53c400-based card.
This commit is contained in:
@@ -28,6 +28,7 @@ extern const device_t scsi_lcs6821n_device;
|
|||||||
extern const device_t scsi_rt1000b_device;
|
extern const device_t scsi_rt1000b_device;
|
||||||
extern const device_t scsi_t128_device;
|
extern const device_t scsi_t128_device;
|
||||||
extern const device_t scsi_t130b_device;
|
extern const device_t scsi_t130b_device;
|
||||||
|
extern const device_t scsi_ls2000_device;
|
||||||
#if defined(DEV_BRANCH) && defined(USE_SUMO)
|
#if defined(DEV_BRANCH) && defined(USE_SUMO)
|
||||||
extern const device_t scsi_scsiat_device;
|
extern const device_t scsi_scsiat_device;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ static SCSI_CARD scsi_cards[] = {
|
|||||||
{ &buslogic_542bh_device, },
|
{ &buslogic_542bh_device, },
|
||||||
{ &buslogic_545s_device, },
|
{ &buslogic_545s_device, },
|
||||||
{ &buslogic_545c_device, },
|
{ &buslogic_545c_device, },
|
||||||
|
{ &scsi_ls2000_device, },
|
||||||
{ &scsi_lcs6821n_device, },
|
{ &scsi_lcs6821n_device, },
|
||||||
{ &scsi_rt1000b_device, },
|
{ &scsi_rt1000b_device, },
|
||||||
{ &scsi_t128_device, },
|
{ &scsi_t128_device, },
|
||||||
|
|||||||
@@ -48,6 +48,7 @@
|
|||||||
#define RT1000B_820R_ROM "roms/scsi/ncr5380/RTBIOS82.ROM"
|
#define RT1000B_820R_ROM "roms/scsi/ncr5380/RTBIOS82.ROM"
|
||||||
#define T130B_ROM "roms/scsi/ncr5380/trantor_t130b_bios_v2.14.bin"
|
#define T130B_ROM "roms/scsi/ncr5380/trantor_t130b_bios_v2.14.bin"
|
||||||
#define T128_ROM "roms/scsi/ncr5380/trantor_t128_bios_v1.12.bin"
|
#define T128_ROM "roms/scsi/ncr5380/trantor_t128_bios_v1.12.bin"
|
||||||
|
#define COREL_LS2000_ROM "roms/scsi/ncr5380/Corel LS2000 - BIOS ROM - Ver 1.65.bin"
|
||||||
|
|
||||||
|
|
||||||
#define NCR_CURDATA 0 /* current SCSI data (read only) */
|
#define NCR_CURDATA 0 /* current SCSI data (read only) */
|
||||||
@@ -712,7 +713,7 @@ ncr_write(uint16_t port, uint8_t val, void *priv)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ncr->dma_mode == DMA_IDLE || ncr_dev->type == 0 || ncr_dev->type == 3) {
|
if (ncr->dma_mode == DMA_IDLE || ncr_dev->type == 0 || ncr_dev->type >= 3) {
|
||||||
bus_host = get_bus_host(ncr);
|
bus_host = get_bus_host(ncr);
|
||||||
ncr_bus_update(priv, bus_host);
|
ncr_bus_update(priv, bus_host);
|
||||||
}
|
}
|
||||||
@@ -1079,9 +1080,9 @@ ncr_dma_send(ncr5380_t *ncr_dev, ncr_t *ncr, scsi_device_t *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Data ready. */
|
/* Data ready. */
|
||||||
if (ncr_dev->type == 3) {
|
if (ncr_dev->type == 3)
|
||||||
data = ncr_dev->t128.buffer[ncr_dev->t128.pos];
|
data = ncr_dev->t128.buffer[ncr_dev->t128.pos];
|
||||||
} else
|
else
|
||||||
data = ncr_dev->buffer[ncr_dev->buffer_pos];
|
data = ncr_dev->buffer[ncr_dev->buffer_pos];
|
||||||
bus = get_bus_host(ncr) & ~BUS_DATAMASK;
|
bus = get_bus_host(ncr) & ~BUS_DATAMASK;
|
||||||
bus |= BUS_SETDATA(data);
|
bus |= BUS_SETDATA(data);
|
||||||
@@ -1506,6 +1507,18 @@ ncr_init(const device_t *info)
|
|||||||
t128_write, NULL, NULL,
|
t128_write, NULL, NULL,
|
||||||
ncr_dev->bios_rom.rom, MEM_MAPPING_EXTERNAL, ncr_dev);
|
ncr_dev->bios_rom.rom, MEM_MAPPING_EXTERNAL, ncr_dev);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 4: /* Corel LS2000 */
|
||||||
|
ncr_dev->rom_addr = device_get_config_hex20("bios_addr");
|
||||||
|
ncr_dev->irq = device_get_config_int("irq");
|
||||||
|
rom_init(&ncr_dev->bios_rom, COREL_LS2000_ROM,
|
||||||
|
ncr_dev->rom_addr, 0x4000, 0x3fff, 0, MEM_MAPPING_EXTERNAL);
|
||||||
|
|
||||||
|
mem_mapping_add(&ncr_dev->mapping, ncr_dev->rom_addr, 0x4000,
|
||||||
|
memio_read, NULL, NULL,
|
||||||
|
memio_write, NULL, NULL,
|
||||||
|
ncr_dev->bios_rom.rom, MEM_MAPPING_EXTERNAL, ncr_dev);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(temp, "%s: BIOS=%05X", ncr_dev->name, ncr_dev->rom_addr);
|
sprintf(temp, "%s: BIOS=%05X", ncr_dev->name, ncr_dev->rom_addr);
|
||||||
@@ -1516,7 +1529,7 @@ ncr_init(const device_t *info)
|
|||||||
ncr_log("%s\n", temp);
|
ncr_log("%s\n", temp);
|
||||||
|
|
||||||
ncr_reset(ncr_dev, &ncr_dev->ncr);
|
ncr_reset(ncr_dev, &ncr_dev->ncr);
|
||||||
if (ncr_dev->type < 3) {
|
if (ncr_dev->type < 3 || ncr_dev->type == 4) {
|
||||||
ncr_dev->status_ctrl = STATUS_BUFFER_NOT_READY;
|
ncr_dev->status_ctrl = STATUS_BUFFER_NOT_READY;
|
||||||
ncr_dev->buffer_host_pos = 128;
|
ncr_dev->buffer_host_pos = 128;
|
||||||
} else {
|
} else {
|
||||||
@@ -1572,6 +1585,12 @@ t128_available(void)
|
|||||||
return(rom_present(T128_ROM));
|
return(rom_present(T128_ROM));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
corel_ls2000_available(void)
|
||||||
|
{
|
||||||
|
return(rom_present(COREL_LS2000_ROM));
|
||||||
|
}
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const device_config_t ncr5380_mmio_config[] = {
|
static const device_config_t ncr5380_mmio_config[] = {
|
||||||
{
|
{
|
||||||
@@ -1735,3 +1754,15 @@ const device_t scsi_t128_device =
|
|||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
t128_config
|
t128_config
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const device_t scsi_ls2000_device =
|
||||||
|
{
|
||||||
|
"Corel LS2000",
|
||||||
|
"ls2000",
|
||||||
|
DEVICE_ISA,
|
||||||
|
4,
|
||||||
|
ncr_init, ncr_close, NULL,
|
||||||
|
{ corel_ls2000_available },
|
||||||
|
NULL, NULL,
|
||||||
|
ncr5380_mmio_config
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user