Slight fixes to Intel Flash, CD-ROM, and ZIP.

This commit is contained in:
OBattler
2018-10-30 15:17:48 +01:00
parent 3a8bd15b9d
commit 5e5e1ed70e
3 changed files with 16 additions and 9 deletions

View File

@@ -9,7 +9,7 @@
* Implementation of the Iomega ZIP drive with SCSI(-like) * Implementation of the Iomega ZIP drive with SCSI(-like)
* commands, for both ATAPI and SCSI usage. * commands, for both ATAPI and SCSI usage.
* *
* Version: @(#)zip.c 1.0.34 2018/10/28 * Version: @(#)zip.c 1.0.35 2018/10/30
* *
* Author: Miran Grca, <mgrca8@gmail.com> * Author: Miran Grca, <mgrca8@gmail.com>
* *
@@ -1871,11 +1871,13 @@ zip_command(scsi_common_t *sc, uint8_t *cdb)
dev->buffer[1] = 0x80; /*Removable*/ dev->buffer[1] = 0x80; /*Removable*/
dev->buffer[2] = (dev->drv->bus_type == ZIP_BUS_SCSI) ? 0x02 : 0x00; /*SCSI-2 compliant*/ dev->buffer[2] = (dev->drv->bus_type == ZIP_BUS_SCSI) ? 0x02 : 0x00; /*SCSI-2 compliant*/
dev->buffer[3] = (dev->drv->bus_type == ZIP_BUS_SCSI) ? 0x02 : 0x21; dev->buffer[3] = (dev->drv->bus_type == ZIP_BUS_SCSI) ? 0x02 : 0x21;
dev->buffer[4] = 31; // dev->buffer[4] = 31;
dev->buffer[4] = 0;
if (dev->drv->bus_type == ZIP_BUS_SCSI) { if (dev->drv->bus_type == ZIP_BUS_SCSI) {
dev->buffer[6] = 1; /* 16-bit transfers supported */ dev->buffer[6] = 1; /* 16-bit transfers supported */
dev->buffer[7] = 0x20; /* Wide bus supported */ dev->buffer[7] = 0x20; /* Wide bus supported */
} }
dev->buffer[7] |= 0x02;
ide_padstr8(dev->buffer + 8, 8, "IOMEGA "); /* Vendor */ ide_padstr8(dev->buffer + 8, 8, "IOMEGA "); /* Vendor */
if (dev->drv->is_250) { if (dev->drv->is_250) {

View File

@@ -8,7 +8,7 @@
* *
* Implementation of the Intel 1 Mbit 8-bit flash devices. * Implementation of the Intel 1 Mbit 8-bit flash devices.
* *
* Version: @(#)intel_flash.c 1.0.17 2018/10/02 * Version: @(#)intel_flash.c 1.0.18 2018/10/30
* *
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/> * Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com> * Miran Grca, <mgrca8@gmail.com>
@@ -55,6 +55,7 @@ typedef struct flash_t
uint8_t command, status; uint8_t command, status;
uint8_t flash_id; uint8_t flash_id;
int invert_high_pin; int invert_high_pin;
uint32_t program_addr;
mem_mapping_t mapping[8], mapping_h[8]; mem_mapping_t mapping[8], mapping_h[8];
uint32_t block_start[4], block_end[4], block_len[4]; uint32_t block_start[4], block_end[4], block_len[4];
uint8_t array[131072]; uint8_t array[131072];
@@ -127,7 +128,7 @@ static void flash_write(uint32_t addr, uint8_t val, void *p)
case CMD_PROGRAM_SETUP: case CMD_PROGRAM_SETUP:
case CMD_PROGRAM_SETUP_ALT: case CMD_PROGRAM_SETUP_ALT:
if ((addr & 0x1e000) != (flash->block_start[3] & 0x1e000)) if (((addr & 0x1e000) != (flash->block_start[3] & 0x1e000)) && (addr == flash->program_addr))
flash->array[addr] = val; flash->array[addr] = val;
flash->command = CMD_READ_STATUS; flash->command = CMD_READ_STATUS;
flash->status = 0x80; flash->status = 0x80;
@@ -139,6 +140,10 @@ static void flash_write(uint32_t addr, uint8_t val, void *p)
case CMD_CLEAR_STATUS: case CMD_CLEAR_STATUS:
flash->status = 0; flash->status = 0;
break; break;
case CMD_PROGRAM_SETUP:
case CMD_PROGRAM_SETUP_ALT:
flash->program_addr = addr;
break;
} }
} }
} }

View File

@@ -9,7 +9,7 @@
* Implementation of the CD-ROM drive with SCSI(-like) * Implementation of the CD-ROM drive with SCSI(-like)
* commands, for both ATAPI and SCSI usage. * commands, for both ATAPI and SCSI usage.
* *
* Version: @(#)scsi_cdrom.c 1.0.64 2018/10/28 * Version: @(#)scsi_cdrom.c 1.0.65 2018/10/30
* *
* Author: Miran Grca, <mgrca8@gmail.com> * Author: Miran Grca, <mgrca8@gmail.com>
* *
@@ -2275,7 +2275,7 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb)
dev->buffer[0] = 5; /*CD-ROM*/ dev->buffer[0] = 5; /*CD-ROM*/
dev->buffer[1] = 0x80; /*Removable*/ dev->buffer[1] = 0x80; /*Removable*/
dev->buffer[2] = (dev->drv->bus_type == CDROM_BUS_SCSI) ? 0x02 : 0x00; /*SCSI-2 compliant*/ dev->buffer[2] = (dev->drv->bus_type == CDROM_BUS_SCSI) ? 0x02 : 0x00; /*SCSI-2 compliant*/
dev->buffer[3] = (dev->drv->bus_type == CDROM_BUS_SCSI) ? 0x12 : 0x21; dev->buffer[3] = (dev->drv->bus_type == CDROM_BUS_SCSI) ? 0x02 : 0x21;
dev->buffer[4] = 31; dev->buffer[4] = 31;
if (dev->drv->bus_type == CDROM_BUS_SCSI) { if (dev->drv->bus_type == CDROM_BUS_SCSI) {
dev->buffer[6] = 1; /* 16-bit transfers supported */ dev->buffer[6] = 1; /* 16-bit transfers supported */