Previous 199869 Revisions Next

r26164 Thursday 14th November, 2013 at 22:38:33 UTC by Curt Coder
(MESS) s1410: Return drive not ready error when trying to recalibrate the unsupported drive 1. This fixes the phantom partitions in ABC 850/852. [Curt Coder]
[src/mess/machine]s1410.c s1410.h

trunk/src/mess/machine/s1410.c
r26163r26164
212212#define S1410_CMD_DRIVE_DIAGS ( 0xe3 )
213213#define S1410_CMD_CONTROLER_DIAGS ( 0xe4 )
214214
215#define S1410_STATUS_NOT_READY ( 0x04 )
216
215217#define TRANSFERLENGTH_INIT_DRIVE_PARAMS ( 0x08 )
216218#define TRANSFERLENGTH_FORMAT_ALT_TRACK ( 0x03 )
217219#define TRANSFERLENGTH_SECTOR_BUFFER ( 0x0200 )
r26163r26164
220222{
221223   switch( command[ 0 ] )
222224   {
225   case SCSI_CMD_RECALIBRATE:
226      if (command[1] >> 5)
227      {
228         m_phase = SCSI_PHASE_STATUS;
229         m_status_code = SCSI_STATUS_CODE_CHECK_CONDITION;
230         m_sense_asc = S1410_STATUS_NOT_READY;
231         m_transfer_length = 0;
232      }
233      else
234      {
235         scsihd_device::ExecCommand();
236      }
237      break;
238
239   case SCSI_CMD_REQUEST_SENSE:
240      m_phase = SCSI_PHASE_DATAIN;
241      m_status_code = SCSI_STATUS_CODE_GOOD;
242      m_transfer_length = 4;
243      break;
244
223245   case S1410_CMD_FORMAT_TRACK:
224246      {
225247      lba = (command[1]&0x1f)<<16 | command[2]<<8 | command[3];
r26163r26164
345367      break;
346368   }
347369}
370
371void s1410_device::ReadData( UINT8 *data, int dataLength )
372{
373   switch( command[ 0 ] )
374   {
375   case SCSI_CMD_REQUEST_SENSE:
376      data[0] = m_sense_asc & 0x7f;
377      data[1] = (m_sense_information >> 16) & 0x1f;
378      data[2] = (m_sense_information >> 8) & 0xff;
379      data[3] = (m_sense_information >> 0) & 0xff;
380      break;
381
382   default:
383      scsihd_device::ReadData( data, dataLength );
384      break;
385   }
386}
trunk/src/mess/machine/s1410.h
r26163r26164
2929
3030   virtual void ExecCommand();
3131   virtual void WriteData( UINT8 *data, int dataLength );
32   virtual void ReadData( UINT8 *data, int dataLength );
3233};
3334
3435

Previous 199869 Revisions Next


© 1997-2024 The MAME Team