Added Iomega ZIP emulation.

This commit is contained in:
OBattler
2018-01-26 22:17:09 +01:00
parent 45e55a7163
commit 410ecb1f22
28 changed files with 5050 additions and 405 deletions

View File

@@ -8,14 +8,14 @@
*
* Handling of the SCSI controllers.
*
* Version: @(#)scsi.c 1.0.13 2017/12/16
* Version: @(#)scsi.c 1.0.14 2018/01/21
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
* TheCollector1995, <mariogplayer@gmail.com>
*
* Copyright 2016,2017 Miran Grca.
* Copyright 2017 Fred N. van Kempen.
* Copyright 2016-2018 Miran Grca.
* Copyright 2017,2018 Fred N. van Kempen.
*/
#include <stdio.h>
#include <stdint.h>
@@ -28,6 +28,7 @@
#include "../timer.h"
#include "../device.h"
#include "../cdrom/cdrom.h"
#include "../zip.h"
#include "../disk/hdc.h"
#include "../plat.h"
#include "scsi.h"
@@ -44,7 +45,6 @@
scsi_device_t SCSIDevices[SCSI_ID_MAX][SCSI_LUN_MAX];
// uint8_t SCSIPhase = 0xff;
// uint8_t SCSIStatus = SCSI_STATUS_OK;
uint8_t scsi_cdrom_id = 3; /*common setting*/
char scsi_fn[SCSI_NUM][512];
uint16_t scsi_hd_location[SCSI_NUM];
@@ -153,13 +153,17 @@ void scsi_card_init(void)
build_scsi_hd_map();
pclog("Building SCSI CD-ROM map...\n");
build_scsi_cdrom_map();
pclog("Building SCSI ZIP map...\n");
build_scsi_zip_map();
for (i=0; i<SCSI_ID_MAX; i++) {
for (j=0; j<SCSI_LUN_MAX; j++) {
if (scsi_hard_disks[i][j] != 0xff) {
SCSIDevices[i][j].LunType = SCSI_DISK;
} else if (scsi_cdrom_drives[i][j] != 0xff) {
SCSIDevices[i][j].LunType = SCSI_CDROM;
} else if (scsi_zip_drives[i][j] != 0xff) {
SCSIDevices[i][j].LunType = SCSI_ZIP;
} else {
SCSIDevices[i][j].LunType = SCSI_NONE;
}
@@ -193,15 +197,19 @@ void scsi_card_reset(void)
void SCSIReset(uint8_t id, uint8_t lun)
{
uint8_t cdrom_id = scsi_cdrom_drives[id][lun];
uint8_t zip_id = scsi_zip_drives[id][lun];
uint8_t hdc_id = scsi_hard_disks[id][lun];
if (hdc_id != 0xff) {
scsi_hd_reset(cdrom_id);
scsi_hd_reset(hdc_id);
SCSIDevices[id][lun].LunType = SCSI_DISK;
} else {
if (cdrom_id != 0xff) {
cdrom_reset(cdrom_id);
SCSIDevices[id][lun].LunType = SCSI_CDROM;
} else if (zip_id != 0xff) {
zip_reset(zip_id);
SCSIDevices[id][lun].LunType = SCSI_ZIP;
} else {
SCSIDevices[id][lun].LunType = SCSI_NONE;
}