case COMSPEC_CHIP:
{
int irq = 0;
- if ((wd->comspec.status & 0x40) && (wd->wc.auxstatus & ASR_INT))
+ if ((wd->comspec.status & 0x20) && (wd->wc.auxstatus & ASR_INT))
irq |= 2;
if ((wd->comspec.status & 0x08) && wd->wc.wd_data_avail)
irq |= 1;
if (irq) {
uae_u8 status = (wd->wdregs[0] & 0x08) ? 1 : 0;
set_status (wd, status, 50);
+ } else {
+ wd->wd_busy = false;
}
}
write_log (_T("%s WD_DATA WRITE %02x %d/%d\n"), WD33C93, d, wd->scsi->offset, wd->scsi->data_len);
#endif
if (!wd->wd_data_avail) {
- write_log (_T("%s WD_DATA WRITE without data request!?\n"), WD33C93);
+ write_log (_T("%s WD_DATA WRITE without data request!? %08x\n"), WD33C93, M68K_GETPC);
return;
}
if (wd->wd_dataoffset < sizeof wd->wd_data)
v = wd->wdregs[wd->sasr];
if (wd->sasr == WD_DATA) {
if (!wd->wd_data_avail) {
- write_log (_T("%s WD_DATA READ without data request!?\n"), WD33C93);
+ write_log (_T("%s WD_DATA READ without data request!? %08x\n"), WD33C93, M68K_GETPC);
return 0;
}
int status = scsi_receive_data(wd->scsi, &v, true);
static void comspec_ac(struct autoconfig_info *aci)
{
- ew(aci->autoconfig_raw, 0x00, 0xc0 | 0x01 | (aci->rc->autoboot_disabled ? 0x00: 0x10));
+ ew(aci->autoconfig_raw, 0x00, 0xc0 | 0x01 | (aci->rc->subtype == 0 ? 0x00: 0x10));
ew(aci->autoconfig_raw, 0x04, 0x11);
ew(aci->autoconfig_raw, 0x10, 0x03);
ew(aci->autoconfig_raw, 0x14, 0xee);
rtc->yearmode = true;
- if (!aci->rc->autoboot_disabled) {
+ if (!aci->rc->autoboot_disabled && aci->rc->subtype == 0) {
map_banks(&wd->bank, 0xf00000 >> 16, 1, 0);
wd->baseaddress2 = 0xf00000;
}
ABFLAG_IO, S_READ, S_WRITE
};
-static addrbank *expamem_map_catweasel (int devnum)
+static addrbank *expamem_map_catweasel(struct autoconfig_info *aci)
{
catweasel_start = expamem_board_pointer;
map_banks_z2(&catweasel_bank, catweasel_start >> 16, 1);
memcpy(aci->autoconfig_raw, expamem, sizeof aci->autoconfig_raw);
+ expamem_map = expamem_map_catweasel;
+
return true;
}
NULL
}
};
+static const struct expansionsubromtype comspec_sub[] = {
+ {
+ _T("Comspec SA-1000"), _T("comspec1000"), ROMTYPE_NONE | ROMTYPE_COMSPEC,
+ },
+ {
+ _T("Comspec SA-2000"), _T("comspec2000"), ROMTYPE_NONE | ROMTYPE_COMSPEC,
+ },
+ {
+ NULL
+ }
+};
static const struct expansionsubromtype mediator_sub[] = {
{
true, 0, a4091_settings
},
{
- _T("comspec1000"), _T("SA-1000"), _T("Comspec"),
+ _T("comspec"), _T("SA series"), _T("Comspec Communications"),
comspec_preinit, comspec_init, NULL, comspec_add_scsi_unit, ROMTYPE_COMSPEC, 0, 0, BOARD_AUTOCONFIG_Z2, true,
- NULL, 0,
+ comspec_sub, 0,
true, EXPANSIONTYPE_SCSI,
0, 0, 0, false, NULL,
false, 0, comspec_settings
0x4fe08a5d, 0x007e5c61, 0x4048f598, 0x6d14011d, 0x23a41435, 0x5e0a2259, NULL, NULL },
{ _T("M-Tec AT500 Megabody v1.33"), 1, 33, 1, 33, _T("MTECAT\0"), 32768, 199, 0, 0, ROMTYPE_MTEC, 0, 0, NULL,
0x19715a2f, 0x124f9d10, 0x19f1b285, 0x16f33f4e, 0x2bf03ca0, 0x2f9ad772, NULL, NULL },
- { _T("Comspec SA-1000 v34.805"), 34, 805, 34, 805, _T("COMSPEC\0"), 16384, 200, 0, 0, ROMTYPE_COMSPEC, 0, 0, NULL,
+ { _T("Comspec SA series v34.805"), 34, 805, 34, 805, _T("COMSPEC\0"), 16384, 200, 0, 0, ROMTYPE_COMSPEC, 0, 0, NULL,
0x44458e28, 0x048b8232, 0xfe54252b, 0xb81e0d06, 0x83c9e92d, 0x880f3cbf, NULL, NULL },
ALTROMPN(200, 1, 1, 8192, ROMTYPE_ODD | ROMTYPE_8BIT, NULL, 0xd5838a35, 0xb3d83657, 0x661a9fe1, 0xd54e6e69, 0xc8b13878, 0x0960a107)
ALTROMPN(200, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, NULL, 0x098c5529, 0x6f51827d, 0x40a79438, 0x69e2d0fb, 0x6e2e46e9, 0xb65c1244)