Slight fixes to Intel Flash, CD-ROM, and ZIP.
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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];
|
||||||
@@ -114,7 +115,7 @@ static void flash_write(uint32_t addr, uint8_t val, void *p)
|
|||||||
|
|
||||||
switch (flash->command) {
|
switch (flash->command) {
|
||||||
case CMD_ERASE_SETUP:
|
case CMD_ERASE_SETUP:
|
||||||
if (val == CMD_ERASE_CONFIRM) {
|
if (val == CMD_ERASE_CONFIRM) {
|
||||||
for (i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
if ((addr >= flash->block_start[i]) && (addr <= flash->block_end[i]))
|
if ((addr >= flash->block_start[i]) && (addr <= flash->block_end[i]))
|
||||||
memset(&(flash->array[flash->block_start[i]]), 0xff, flash->block_len[i]);
|
memset(&(flash->array[flash->block_start[i]]), 0xff, flash->block_len[i]);
|
||||||
@@ -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;
|
||||||
@@ -137,8 +138,12 @@ static void flash_write(uint32_t addr, uint8_t val, void *p)
|
|||||||
flash->command = val;
|
flash->command = val;
|
||||||
switch (val) {
|
switch (val) {
|
||||||
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 */
|
||||||
|
|||||||
Reference in New Issue
Block a user