| version 1.9, 2004/08/11 16:09:04 | version 1.11, 2004/08/12 11:03:09 | 
| Line 20  void nvitem_fdcbusy(UINT id) { | Line 20  void nvitem_fdcbusy(UINT id) { | 
 | TRACEOUT(("dma ready!")); | TRACEOUT(("dma ready!")); | 
 | dmac_sendready(TRUE); | dmac_sendready(TRUE); | 
 | } | } | 
 |  | (void)id; | 
 | } | } | 
 |  |  | 
 | static void setbusy(UINT clock) { | static void setbusy(UINT clock) { | 
| Line 130  static REG8 type2cmd(REG8 sc) { | Line 131  static REG8 type2cmd(REG8 sc) { | 
 | fdc.s.bufmark = fdc.s.cmd & 1; | fdc.s.bufmark = fdc.s.cmd & 1; | 
 | fdc.s.bufpos = 0; | fdc.s.bufpos = 0; | 
 | fdc.s.bufsize = size; | fdc.s.bufsize = size; | 
 |  | fdc.s.curtime = 0; | 
 | return(stat); | return(stat); | 
 | } | } | 
 |  |  | 
| Line 169  static REG8 crccmd(void) { | Line 171  static REG8 crccmd(void) { | 
 | fdc.s.bufsize = 0; | fdc.s.bufsize = 0; | 
 | } | } | 
 | fdc.s.bufwrite = FALSE; | fdc.s.bufwrite = FALSE; | 
 |  | fdc.s.curtime = 0; | 
 | return(stat); | return(stat); | 
 | } | } | 
 |  |  | 
| Line 181  static void bufposinc(void) { | Line 184  static void bufposinc(void) { | 
 | return; | return; | 
 | } | } | 
 | fdc.s.bufpos++; | fdc.s.bufpos++; | 
 |  | fdc.s.curtime = 0; | 
 | if (fdc.s.bufpos >= fdc.s.bufsize) { | if (fdc.s.bufpos >= fdc.s.bufsize) { | 
 | r = FALSE; | r = FALSE; | 
 | if (fdc.s.type == 2) { | if (fdc.s.type == 2) { | 
| Line 221  void IOOUTCALL fdc_o(UINT port, REG8 val | Line 225  void IOOUTCALL fdc_o(UINT port, REG8 val | 
 | if ((port & (~7)) != 0x0ff8) { | if ((port & (~7)) != 0x0ff8) { | 
 | return; | return; | 
 | } | } | 
| TRACEOUT(("fdc %.4x,%.2x [%.4x]", port, value, Z80_PC)); | //      TRACEOUT(("fdc %.4x,%.2x [%.4x]", port, value, Z80_PC)); | 
 | switch(port & 7) { | switch(port & 7) { | 
 | case 0:                                                                 // コマンド | case 0:                                                                 // コマンド | 
 | fdc.s.cmd = value; | fdc.s.cmd = value; | 
| Line 232  void IOOUTCALL fdc_o(UINT port, REG8 val | Line 236  void IOOUTCALL fdc_o(UINT port, REG8 val | 
 | fdc.s.stat = type2flash(); | fdc.s.stat = type2flash(); | 
 | } | } | 
 | fdc.s.bufdir = FDCDIR_NONE; | fdc.s.bufdir = FDCDIR_NONE; | 
 |  | // リストアコマンドにおいて | 
 |  | //  マリオは コマンド発行後にbusyを見張る | 
 |  | //  逆にソーサリアンとかは busyだとエラーになる… | 
 |  | // 条件は何? | 
 | setbusy(20); | setbusy(20); | 
 | switch(cmd) { | switch(cmd) { | 
 | case 0x00:                                                              // リストア | case 0x00:                                                              // リストア | 
| if (value & 8) {                                        // LAYDOCK | //      if (value & 8) {                                        // LAYDOCK | 
| setbusy(0); | //              setbusy(0); | 
| } | //      } | 
 | fdc.s.motor = 0x80;                                     // モーターOn? | fdc.s.motor = 0x80;                                     // モーターOn? | 
 | fdc.s.c = 0; | fdc.s.c = 0; | 
 | fdc.s.step = 1; | fdc.s.step = 1; | 
| Line 377  REG8 IOINPCALL fdc_i(UINT port) { | Line 385  REG8 IOINPCALL fdc_i(UINT port) { | 
 | if (ret) { | if (ret) { | 
 | return(ret); | return(ret); | 
 | } | } | 
| #if 0 | #if 1 | 
| if (fdc.s.type == 2) { | if (fdc.s.bufdir) {                                     // YsII | 
| if (last_r == _fdc.r && last_off == fdc.off && | fdc.s.curtime++; | 
| !(--timeoutwait)) { | if (fdc.s.curtime >= 8) { | 
| inc_off(); | fdc.s.stat |= 0x04; | 
| timeoutwait = 4; | bufposinc(); | 
 | } | } | 
| last_r = _fdc.r; | } | 
| last_off = fdc.off; |  | 
| }                                                       // Read Write時のみの変化でいい筈 |  | 
 | #endif | #endif | 
 | ret = getstat(); | ret = getstat(); | 
 | if (!(ret & 0x02)) { | if (!(ret & 0x02)) { |