|  | @@ -1520,6 +1520,7 @@ byte onVerify(SCSI_DEVICE *dev, const byte *cdb)
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  byte onModeSense(SCSI_DEVICE *dev, const byte *cdb)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | +  const byte apple_magic[] = "APPLE COMPUTER, INC   ";
 | 
	
		
			
				|  |  |    int pageCode = cdb[2] & 0x3F;
 | 
	
		
			
				|  |  |    int pageControl = cdb[2] >> 6;
 | 
	
		
			
				|  |  |    byte dbd = cdb[1] & 0x8;
 | 
	
	
		
			
				|  | @@ -1633,18 +1634,12 @@ byte onModeSense(SCSI_DEVICE *dev, const byte *cdb)
 | 
	
		
			
				|  |  |        if(pageCode != SCSI_SENSE_MODE_ALL) break;
 | 
	
		
			
				|  |  |      case SCSI_SENSE_MODE_VENDOR_APPLE:
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  | -        const byte apple_magic[0x24] = {
 | 
	
		
			
				|  |  | -          0x23,
 | 
	
		
			
				|  |  | -          0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
	
		
			
				|  |  | -          0x00, 0x08, 0x00, 0x30, 0x16, 0x41, 0x50, 0x50,
 | 
	
		
			
				|  |  | -          0x4C, 0x45, 0x20, 0x43, 0x4F, 0x4D, 0x50, 0x55,
 | 
	
		
			
				|  |  | -          0x54, 0x45, 0x52, 0x2C, 0x20, 0x49, 0x4E, 0x43,
 | 
	
		
			
				|  |  | -          0x20, 0x20, 0x20
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  |          if(pageControl != 1) {
 | 
	
		
			
				|  |  | -          memcpy(&m_buf[0], apple_magic, sizeof(apple_magic));
 | 
	
		
			
				|  |  | +          m_buf[a + 0] = SCSI_SENSE_MODE_VENDOR_APPLE;
 | 
	
		
			
				|  |  | +          m_buf[a + 1] = sizeof(apple_magic); // Page length
 | 
	
		
			
				|  |  | +          memcpy(&m_buf[a + 2], apple_magic, sizeof(apple_magic));
 | 
	
		
			
				|  |  | +          a += sizeof(apple_magic) + 2;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        a = sizeof(apple_magic);
 | 
	
		
			
				|  |  |          if(pageCode != SCSI_SENSE_MODE_ALL) break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        break; // Don't want SCSI_SENSE_MODE_ALL falling through to error condition
 | 
	
	
		
			
				|  | @@ -1701,18 +1696,12 @@ byte onModeSense(SCSI_DEVICE *dev, const byte *cdb)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      case SCSI_SENSE_MODE_VENDOR_APPLE:
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  | -        const byte apple_magic[0x24] = {
 | 
	
		
			
				|  |  | -          0x23,
 | 
	
		
			
				|  |  | -          0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
	
		
			
				|  |  | -          0x00, 0x08, 0x00, 0x30, 0x16, 0x41, 0x50, 0x50,
 | 
	
		
			
				|  |  | -          0x4C, 0x45, 0x20, 0x43, 0x4F, 0x4D, 0x50, 0x55,
 | 
	
		
			
				|  |  | -          0x54, 0x45, 0x52, 0x2C, 0x20, 0x49, 0x4E, 0x43,
 | 
	
		
			
				|  |  | -          0x20, 0x20, 0x20
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  |          if(pageControl != 1) {
 | 
	
		
			
				|  |  | -          memcpy(&m_buf[0], apple_magic, sizeof(apple_magic));
 | 
	
		
			
				|  |  | +          m_buf[a + 0] = SCSI_SENSE_MODE_VENDOR_APPLE;
 | 
	
		
			
				|  |  | +          m_buf[a + 1] = sizeof(apple_magic); // Page length
 | 
	
		
			
				|  |  | +          memcpy(&m_buf[a + 2], apple_magic, sizeof(apple_magic));
 | 
	
		
			
				|  |  | +          a += sizeof(apple_magic) + 2;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        a = sizeof(apple_magic);
 | 
	
		
			
				|  |  |          if(pageCode != SCSI_SENSE_MODE_ALL) break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        break; // Don't want SCSI_SENSE_MODE_ALL falling through to error condition
 | 
	
	
		
			
				|  | @@ -1724,17 +1713,16 @@ byte onModeSense(SCSI_DEVICE *dev, const byte *cdb)
 | 
	
		
			
				|  |  |        break;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  if(pageCode != SCSI_SENSE_MODE_VENDOR_APPLE) {
 | 
	
		
			
				|  |  | -    if(cdb[0] == SCSI_MODE_SENSE10)
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      m_buf[1] = a - 2;
 | 
	
		
			
				|  |  | -      m_buf[7] = block_descriptor_length; // block descriptor length
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    else
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      m_buf[0] = a - 1;
 | 
	
		
			
				|  |  | -      m_buf[3] = block_descriptor_length; // block descriptor length
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if(cdb[0] == SCSI_MODE_SENSE10)
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    m_buf[1] = a - 2;
 | 
	
		
			
				|  |  | +    m_buf[7] = block_descriptor_length; // block descriptor length
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  else
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    m_buf[0] = a - 1;
 | 
	
		
			
				|  |  | +    m_buf[3] = block_descriptor_length; // block descriptor length
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    writeDataPhase(length < a ? length : a, m_buf);
 |