The scsi_cdrom[], zip[], and scsi_disk[] arrays are now gone.
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
* Implementation of the CD-ROM drive with SCSI(-like)
|
||||
* commands, for both ATAPI and SCSI usage.
|
||||
*
|
||||
* Version: @(#)scsi_cdrom.c 1.0.56 2018/10/26
|
||||
* Version: @(#)scsi_cdrom.c 1.0.57 2018/10/26
|
||||
*
|
||||
* Author: Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
@@ -54,9 +54,6 @@
|
||||
#define cdbufferb dev->buffer
|
||||
|
||||
|
||||
scsi_cdrom_t *scsi_cdrom[CDROM_NUM] = { NULL, NULL, NULL, NULL };
|
||||
|
||||
|
||||
#pragma pack(push,1)
|
||||
typedef struct
|
||||
{
|
||||
@@ -2989,13 +2986,9 @@ static void
|
||||
scsi_cdrom_close(void *p)
|
||||
{
|
||||
scsi_cdrom_t *dev = (scsi_cdrom_t *) p;
|
||||
uint8_t id;
|
||||
|
||||
if (dev) {
|
||||
id = dev->id;
|
||||
free(scsi_cdrom[id]);
|
||||
scsi_cdrom[id] = NULL;
|
||||
}
|
||||
if (dev)
|
||||
free(dev);
|
||||
}
|
||||
|
||||
|
||||
@@ -3100,6 +3093,7 @@ void
|
||||
scsi_cdrom_drive_reset(int c)
|
||||
{
|
||||
cdrom_t *drv = &cdrom[c];
|
||||
scsi_cdrom_t *dev;
|
||||
scsi_device_t *sd;
|
||||
ide_t *id;
|
||||
|
||||
@@ -3111,26 +3105,27 @@ scsi_cdrom_drive_reset(int c)
|
||||
if ((drv->bus_type == CDROM_BUS_ATAPI) && (drv->ide_channel > 7))
|
||||
return;
|
||||
|
||||
if (!scsi_cdrom[c]) {
|
||||
scsi_cdrom[c] = (scsi_cdrom_t *) malloc(sizeof(scsi_cdrom_t));
|
||||
memset(scsi_cdrom[c], 0, sizeof(scsi_cdrom_t));
|
||||
if (!drv->priv) {
|
||||
drv->priv = (scsi_cdrom_t *) malloc(sizeof(scsi_cdrom_t));
|
||||
memset(drv->priv, 0, sizeof(scsi_cdrom_t));
|
||||
}
|
||||
|
||||
scsi_cdrom[c]->id = c;
|
||||
scsi_cdrom[c]->drv = drv;
|
||||
drv->p = scsi_cdrom[c];
|
||||
dev = (scsi_cdrom_t *) drv->priv;
|
||||
|
||||
dev->id = c;
|
||||
dev->drv = drv;
|
||||
drv->insert = scsi_cdrom_insert;
|
||||
drv->get_volume = scsi_cdrom_get_volume;
|
||||
drv->get_channel = scsi_cdrom_get_channel;
|
||||
drv->close = scsi_cdrom_close;
|
||||
|
||||
scsi_cdrom_init(scsi_cdrom[c]);
|
||||
scsi_cdrom_init(dev);
|
||||
|
||||
if (drv->bus_type == CDROM_BUS_SCSI) {
|
||||
/* SCSI CD-ROM, attach to the SCSI bus. */
|
||||
sd = &scsi_devices[drv->scsi_device_id];
|
||||
|
||||
sd->p = scsi_cdrom[c];
|
||||
sd->p = dev;
|
||||
sd->command = scsi_cdrom_command;
|
||||
sd->callback = scsi_cdrom_callback;
|
||||
sd->err_stat_to_scsi = scsi_cdrom_err_stat_to_scsi;
|
||||
@@ -3147,7 +3142,7 @@ scsi_cdrom_drive_reset(int c)
|
||||
otherwise, we do nothing - it's going to be a drive
|
||||
that's not attached to anything. */
|
||||
if (id) {
|
||||
id->p = scsi_cdrom[c];
|
||||
id->p = dev;
|
||||
id->get_max = scsi_cdrom_get_max;
|
||||
id->get_timings = scsi_cdrom_get_timings;
|
||||
id->identify = scsi_cdrom_identify;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* Emulation of SCSI fixed disks.
|
||||
*
|
||||
* Version: @(#)scsi_disk.c 1.0.25 2018/10/18
|
||||
* Version: @(#)scsi_disk.c 1.0.26 2018/10/26
|
||||
*
|
||||
* Author: Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
@@ -53,10 +53,6 @@
|
||||
#define scsi_disk_ascq dev->sense[13]
|
||||
|
||||
|
||||
scsi_disk_t *scsi_disk[HDD_NUM] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
|
||||
|
||||
|
||||
/* Table of all SCSI commands and their flags, needed for the new disc change / not ready handler. */
|
||||
const uint8_t scsi_disk_command_flags[0x100] = {
|
||||
IMPLEMENTED | CHECK_READY | NONDATA, /* 0x00 */
|
||||
@@ -1238,19 +1234,11 @@ scsi_disk_callback(void *p)
|
||||
}
|
||||
|
||||
|
||||
/* Peform a master init on the entire module. */
|
||||
void
|
||||
scsi_disk_global_init(void)
|
||||
{
|
||||
/* Clear the global data. */
|
||||
memset(scsi_disk, 0x00, sizeof(scsi_disk));
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
scsi_disk_hard_reset(void)
|
||||
{
|
||||
int c;
|
||||
scsi_disk_t *dev;
|
||||
scsi_device_t *sd;
|
||||
|
||||
for (c = 0; c < HDD_NUM; c++) {
|
||||
@@ -1269,15 +1257,17 @@ scsi_disk_hard_reset(void)
|
||||
if (! hdd_image_load(c))
|
||||
continue;
|
||||
|
||||
if (!scsi_disk[c]) {
|
||||
scsi_disk[c] = (scsi_disk_t *) malloc(sizeof(scsi_disk_t));
|
||||
memset(scsi_disk[c], 0, sizeof(scsi_disk_t));
|
||||
if (!hdd[c].priv) {
|
||||
hdd[c].priv = (scsi_disk_t *) malloc(sizeof(scsi_disk_t));
|
||||
memset(hdd[c].priv, 0, sizeof(scsi_disk_t));
|
||||
}
|
||||
|
||||
dev = (scsi_disk_t *) hdd[c].priv;
|
||||
|
||||
/* SCSI disk, attach to the SCSI bus. */
|
||||
sd = &scsi_devices[hdd[c].scsi_id];
|
||||
|
||||
sd->p = scsi_disk[c];
|
||||
sd->p = dev;
|
||||
sd->command = scsi_disk_command;
|
||||
sd->callback = scsi_disk_callback;
|
||||
sd->err_stat_to_scsi = scsi_disk_err_stat_to_scsi;
|
||||
@@ -1286,10 +1276,10 @@ scsi_disk_hard_reset(void)
|
||||
sd->read_capacity = scsi_disk_read_capacity;
|
||||
sd->type = SCSI_FIXED_DISK;
|
||||
|
||||
scsi_disk[c]->id = c;
|
||||
scsi_disk[c]->drv = &hdd[c];
|
||||
dev->id = c;
|
||||
dev->drv = &hdd[c];
|
||||
|
||||
scsi_disk_mode_sense_load(scsi_disk[c]);
|
||||
scsi_disk_mode_sense_load(dev);
|
||||
|
||||
scsi_disk_log("SCSI disk %i attached to SCSI ID %i\n", c, hdd[c].scsi_id);
|
||||
}
|
||||
@@ -1304,13 +1294,13 @@ scsi_disk_close(void)
|
||||
int c;
|
||||
|
||||
for (c = 0; c < HDD_NUM; c++) {
|
||||
dev = scsi_disk[c];
|
||||
dev = hdd[c].priv;
|
||||
|
||||
if (dev) {
|
||||
hdd_image_close(c);
|
||||
|
||||
free(scsi_disk[c]);
|
||||
scsi_disk[c] = NULL;
|
||||
free(dev);
|
||||
hdd[c].priv = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* Emulation of SCSI fixed and removable disks.
|
||||
*
|
||||
* Version: @(#)scsi_disk.h 1.0.6 2018/10/10
|
||||
* Version: @(#)scsi_disk.h 1.0.7 2018/10/26
|
||||
*
|
||||
* Author: Miran Grca, <mgrca8@gmail.com>
|
||||
* Copyright 2017,2018 Miran Grca.
|
||||
@@ -45,6 +45,5 @@ typedef struct {
|
||||
extern scsi_disk_t *scsi_disk[HDD_NUM];
|
||||
|
||||
|
||||
extern void scsi_disk_global_init(void);
|
||||
extern void scsi_disk_hard_reset(void);
|
||||
extern void scsi_disk_close(void);
|
||||
|
||||
Reference in New Issue
Block a user