summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2008-03-31 03:04:34 +0000
committer R. Belmont <rb6502@users.noreply.github.com>2008-03-31 03:04:34 +0000
commit2a869f86731cbe19a86842f9a85943884037f1d4 (patch)
tree91b2fc0d44560207662a51847837fd9d7e8be7e4 /src
parentcb87356d5c68cb22a0d5162e5c0c85c1a7b46d03 (diff)
Various SCSI devices register state items by their disk ID, which are not unique across device types. This introduces a device-type offset for CD-ROMs so their registrations don't clash with harddisks.
Diffstat (limited to 'src')
-rw-r--r--src/emu/machine/scsicd.c6
-rw-r--r--src/emu/machine/scsicd.h5
2 files changed, 8 insertions, 3 deletions
diff --git a/src/emu/machine/scsicd.c b/src/emu/machine/scsicd.c
index 060be974fc0..d2e1e7bc1b5 100644
--- a/src/emu/machine/scsicd.c
+++ b/src/emu/machine/scsicd.c
@@ -735,14 +735,14 @@ static int scsicd_dispatch(int operation, void *file, INT64 intparm, void *ptrpa
case SCSIOP_READ_DATA:
scsicd_read_data( file, ptrparm, intparm );
return 0;
-
+
case SCSIOP_WRITE_DATA:
scsicd_write_data( file, ptrparm, intparm );
return 0;
case SCSIOP_ALLOC_INSTANCE:
- SCSIBase( &SCSIClassCDROM, operation, file, intparm, ptrparm );
- scsicd_alloc_instance( *((SCSIInstance **) ptrparm), intparm );
+ SCSIBase( &SCSIClassCDROM, operation, file, intparm + SCSI_DEVICE_CDROM_STATE_BASE, ptrparm );
+ scsicd_alloc_instance( *((SCSIInstance **) ptrparm), intparm + SCSI_DEVICE_CDROM_STATE_BASE );
return 0;
case SCSIOP_DELETE_INSTANCE:
diff --git a/src/emu/machine/scsicd.h b/src/emu/machine/scsicd.h
index 67998398631..dc1b682b184 100644
--- a/src/emu/machine/scsicd.h
+++ b/src/emu/machine/scsicd.h
@@ -13,5 +13,10 @@
extern const SCSIClass SCSIClassCDROM;
#define SCSI_DEVICE_CDROM &SCSIClassCDROM
+// we pass in the disk ID for each SCSI device, but that's not unique across device types.
+// to avoid collisions, each non-HDD SCSI device type should have it's own BASE to prevent
+// this problem.
+#define SCSI_DEVICE_CDROM_STATE_BASE (32)
+
#endif