{
_T("omtiadapter"), _T("OMTI-Adapter"), _T("C't"),
- NULL, omtiadapter_init, NULL, omtiadapter_scsi_unit, ROMTYPE_OMTIADAPTER | ROMTYPE_NOT, 0, 0, BOARD_NONAUTOCONFIG_BEFORE, true,
+ NULL, omtiadapter_init, NULL, omtiadapter_add_scsi_unit, ROMTYPE_OMTIADAPTER | ROMTYPE_NOT, 0, 0, BOARD_NONAUTOCONFIG_BEFORE, true,
+ NULL, 0,
+ false, EXPANSIONTYPE_CUSTOM | EXPANSIONTYPE_SCSI
+ },
+ {
+ _T("hd20a"), _T("HD 20 A/HD 40 A"), _T("Combitec"),
+ NULL, hd20_init, NULL, hd20_add_scsi_unit, ROMTYPE_HD20A, 0, 0, BOARD_NONAUTOCONFIG_BEFORE, true,
NULL, 0,
false, EXPANSIONTYPE_CUSTOM | EXPANSIONTYPE_SCSI
},
#define ROMTYPE_VOODOO3 0x00100088
#define ROMTYPE_S3VIRGE 0x00100089
#define ROMTYPE_VOODOO5 0x0010008a
+#define ROMTYPE_HD20A 0x0010008b
#define ROMTYPE_NOT 0x00800000
#define ROMTYPE_QUAD 0x01000000
void system2000_add_scsi_unit(int ch, struct uaedev_config_info *ci, struct romconfig *rc);
bool omtiadapter_init(struct autoconfig_info *aci);
-void omtiadapter_scsi_unit(int ch, struct uaedev_config_info *ci, struct romconfig *rc);
+void omtiadapter_add_scsi_unit(int ch, struct uaedev_config_info *ci, struct romconfig *rc);
+
+bool hd20_init(struct autoconfig_info *aci);
+void hd20_add_scsi_unit(int ch, struct uaedev_config_info *ci, struct romconfig *rc);
bool phoenixboard_init(struct autoconfig_info *aci);
void phoenixboard_add_scsi_unit(int ch, struct uaedev_config_info *ci, struct romconfig *rc);
return NULL;
}
-#define NEXT_ROM_ID 267
+#define NEXT_ROM_ID 268
#define ALTROM(id,grp,num,size,flags,crc32,a,b,c,d,e) \
{ _T("X"), 0, 0, 0, 0, 0, size, id, 0, 0, flags, (grp << 16) | num, 0, NULL, crc32, a, b, c, d, e },
0xb475ff5f, 0x63609553,0x98b06812,0x23ade9ac,0x6ee31364,0x5375fce3, NULL, NULL },
{ _T("Hardital Synthesis"), 0, 0, 0, 0, _T("SYNTHESIS\0"), 32768, 266, 0, 0, ROMTYPE_SYNTHESIS, 0, 0, NULL,
0x667c7616, 0x0eb1cb38,0x3133f070,0x7cb57944,0xc516f236,0xbad4d4f6, NULL, NULL },
+ { _T("Combitec HD20A/HD40A"), 0, 0, 0, 0, _T("HD20A\0"), 32768, 267, 0, 0, ROMTYPE_HD20A, 0, 0, NULL,
+ 0x0e7391b4, 0x7c365adb,0x3496c479,0x5e94a166,0xd834254a,0x6112d91c, NULL, NULL },
{ _T("CyberStorm MK I 68040"), 0, 0, 0, 0, _T("CSMKI\0"), 32768, 95, 0, 0, ROMTYPE_CB_CSMK1, 0, 0, NULL,
0, 0, 0, 0, 0, 0, NULL, _T("cyberstormmk1_040.rom") },
#define OMTI_ALF2 44
#define NCR5380_SYNTHESIS 45 // clone of ICD AdSCSI
#define NCR5380_FIREBALL 46
-#define NCR_LAST 47
+#define OMTI_HD20 47
+#define NCR_LAST 48
extern int log_scsiemu;
if (reg >= 0)
v = omti_bget(ncr, reg);
- } else if (ncr->type == OMTI_ALF2) {
+ } else if (ncr->type == OMTI_ALF2 || ncr->type == OMTI_HD20) {
reg = alf2_reg(ncr, origaddr, false);
if (reg >= 0) {
if (reg >= 0)
omti_bput(ncr, reg, val);
- } else if (ncr->type == OMTI_ALF2) {
+ } else if (ncr->type == OMTI_ALF2 || ncr->type == OMTI_HD20) {
reg = alf2_reg(ncr, origaddr, true);
if (reg >= 0)
generic_soft_scsi_add(ch, ci, rc, OMTI_ALF2, 65536, 32768, ROMTYPE_ALF2);
}
+bool hd20_init(struct autoconfig_info *aci)
+{
+ aci->start = 0xf00000;
+ aci->size = 0x10000;
+ scsi_add_reset();
+ if (!aci->doinit)
+ return true;
+
+ struct soft_scsi *scsi = getscsi(aci->rc);
+ if (!scsi)
+ return false;
+
+ load_rom_rc(aci->rc, ROMTYPE_HD20A, 32768, 0, scsi->rom, 32768, 0);
+
+ scsi->baseaddress = 0xf00000;
+ scsi->baseaddress2 = 0x810000;
+ scsi->board_mask = 65535;
+
+ map_banks(scsi->bank, scsi->baseaddress >> 16, 1, 0);
+ map_banks(scsi->bank, scsi->baseaddress2 >> 16, 1, 0);
+
+ scsi->configured = 1;
+ aci->addrbank = scsi->bank;
+ return true;
+}
+
+void hd20_add_scsi_unit(int ch, struct uaedev_config_info *ci, struct romconfig *rc)
+{
+ generic_soft_scsi_add(ch, ci, rc, OMTI_HD20, 65536, 32768, ROMTYPE_HD20A);
+}
+
bool promigos_init(struct autoconfig_info *aci)
{
aci->start = 0xf40000;
return true;
}
-void omtiadapter_scsi_unit(int ch, struct uaedev_config_info *ci, struct romconfig *rc)
+void omtiadapter_add_scsi_unit(int ch, struct uaedev_config_info *ci, struct romconfig *rc)
{
generic_soft_scsi_add(ch, ci, rc, OMTI_ADAPTER, 65536, 0, ROMTYPE_OMTIADAPTER);
}