Previous 199869 Revisions Next

r32994 Sunday 26th October, 2014 at 19:09:04 UTC by Sergey Svishchev
isa_hdc: implement WRITESBUFF command
[src/emu/bus/isa]hdc.c hdc.h

trunk/src/emu/bus/isa/hdc.c
r241505r241506
426426
427427
428428
429void isa8_hdc_device::pc_hdc_dack_ws(int data)
430{
431   *(hdcdma_dst++) = data;
432
433   if( --hdcdma_write == 0 )
434   {
435      hdcdma_write = 512;
436      hdcdma_size -= 512;
437      hdcdma_dst = hdcdma_data;
438   }
439
440   if (!no_dma())
441   {
442      m_isa->drq3_w(hdcdma_size ? 1 : 0);
443      if(!hdcdma_size) pc_hdc_result(1);
444   }
445}
446
447
448
429449void isa8_hdc_device::execute_read()
430450{
431451   hard_disk_file *disk = NULL;
r241505r241506
485505
486506
487507
508void isa8_hdc_device::execute_writesbuff()
509{
510   hdcdma_dst = hdcdma_data;
511   hdcdma_write = 512;
512   hdcdma_size = 512;
513
514   if (no_dma())
515   {
516      do
517      {
518         pc_hdc_dack_ws(buffer[data_cnt++]);
519      }
520      while (hdcdma_write || hdcdma_size);
521   }
522   else
523   {
524      m_isa->drq3_w(1);
525   }
526}
527
528
529
488530void isa8_hdc_device::get_drive()
489531{
490532   drv = (buffer[1] >> 5) & 1;
r241505r241506
595637            execute_write();
596638         break;
597639
640      case CMD_WRITESBUFF:
641         if (LOG_HDC_STATUS)
642         {
643            logerror("%s hdc write sector buffer\n", machine().describe_context());
644         }
645
646         execute_writesbuff();
647         break;
648
598649      case CMD_SETPARAM:
599650         get_chsn();
600651         cylinders[drv] = ((buffer[6]&3)<<8) | buffer[7];
r241505r241506
609660         break;
610661
611662      case CMD_READSBUFF:
612      case CMD_WRITESBUFF:
613663      case CMD_RAMDIAG:
614664      case CMD_INTERNDIAG:
615665         break;
r241505r241506
852902
853903void isa8_hdc_device::dack_w(int line,UINT8 data)
854904{
855   pc_hdc_dack_w(data);
905   if (buffer[0] == CMD_WRITESBUFF)
906      pc_hdc_dack_ws(data);
907   else
908      pc_hdc_dack_w(data);
856909}
trunk/src/emu/bus/isa/hdc.h
r241505r241506
8282      int get_lbasector();
8383      int pc_hdc_dack_r();
8484      void pc_hdc_dack_w(int data);
85      void pc_hdc_dack_ws(int data);
8586      void execute_read();
8687      void execute_write();
88      void execute_writesbuff();
8789      void get_drive();
8890      void get_chsn();
8991      int test_ready();


Previous 199869 Revisions Next


© 1997-2024 The MAME Team