Diff for /np2/cbus/ideio.c between versions 1.2 and 1.3

version 1.2, 2004/03/22 05:38:47 version 1.3, 2004/03/23 13:32:50
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
   
 // winでidentifyまでは取得に行くんだけどな…  // winでidentifyまでは取得に行くんだけどな…ってAnex86も同じか
   
 #if defined(SUPPORT_IDEIO)  #if defined(SUPPORT_IDEIO)
   
Line 106  static BOOL setidentify(IDEDRV drv) { Line 106  static BOOL setidentify(IDEDRV drv) {
                 p[1] = (BYTE)(tmp[i] >> 8);                  p[1] = (BYTE)(tmp[i] >> 8);
                 p += 2;                  p += 2;
         }          }
           drv->bufdir = IDEDIR_IN;
         drv->bufpos = 0;          drv->bufpos = 0;
         drv->bufsize = 512;          drv->bufsize = 512;
         return(SUCCESS);          return(SUCCESS);
Line 143  static void panic(const char *str, ...)  Line 144  static void panic(const char *str, ...) 
   
 static void incsec(IDEDRV drv) {  static void incsec(IDEDRV drv) {
   
         if (drv->dr & IDEDEV_LBA) {          if (!(drv->dr & IDEDEV_LBA)) {
                 TRACEOUT(("ideio: incsec() LBA mode?"));                  drv->sn++;
                 return;                  if (drv->sn <= drv->sectors) {
         }                          return;
         drv->sn++;                  }
         if (drv->sn <= drv->sectors) {                  drv->sn = 1;
                 return;                  drv->hd++;
                   if (drv->hd < drv->surfaces) {
                           return;
                   }
                   drv->hd = 0;
                   drv->cy++;
         }          }
         drv->sn = 1;          else {
         drv->hd++;                  TRACEOUT(("ideio: incsec() LBA mode?"));
         if (drv->hd < drv->surfaces) {                  drv->sn++;
                 return;                  if (drv->sn) {
                           return;
                   }
                   drv->cy++;
                   if (drv->cy) {
                           return;
                   }
                   drv->hd++;
         }          }
         drv->hd = 0;  
         drv->cy++;  
 }  }
   
 static long getcursec(const _IDEDRV *drv) {  static long getcursec(const _IDEDRV *drv) {
   
         long    ret;          long    ret;
   
         if (drv->dr & IDEDEV_LBA) {          if (!(drv->dr & IDEDEV_LBA)) {
                   ret = drv->cy;
                   ret *= drv->surfaces;
                   ret += drv->hd;
                   ret *= drv->sectors;
                   ret += (drv->sn - 1);
           }
           else {
                 TRACEOUT(("ideio: getcursec() LBA mode?"));                  TRACEOUT(("ideio: getcursec() LBA mode?"));
                 return(-1);                  ret = drv->sn;
                   ret |= (drv->cy << 8);
                   ret |= (drv->hd << 24);
         }          }
         ret = drv->cy;  
         ret *= drv->surfaces;  
         ret += drv->hd;  
         ret *= drv->sectors;  
         ret += (drv->sn - 1);  
         return(ret);          return(ret);
 }  }
   
Line 186  static void readsec(IDEDRV drv) { Line 201  static void readsec(IDEDRV drv) {
         sec = getcursec(drv);          sec = getcursec(drv);
         TRACEOUT(("readsec->drv %d sec %x", drv->sxsidrv, sec));          TRACEOUT(("readsec->drv %d sec %x", drv->sxsidrv, sec));
         if (sxsi_read(drv->sxsidrv, sec, drv->buf, 512)) {          if (sxsi_read(drv->sxsidrv, sec, drv->buf, 512)) {
                 TRACEOUT(("readerror!"));                  TRACEOUT(("read error!"));
                 goto read_err;                  goto read_err;
         }          }
         drv->bufdir = IDEDIR_IN;          drv->bufdir = IDEDIR_IN;
Line 379  static void IOOUTCALL ideio_o64e(UINT po Line 394  static void IOOUTCALL ideio_o64e(UINT po
                         }                          }
                         break;                          break;
   
                   case 0xa1:              // identify
                 case 0xec:              // identify                  case 0xec:              // identify
                         TRACEOUT(("ideio: identify"));                          TRACEOUT(("ideio: identify"));
                         if (setidentify(drv) == SUCCESS) {                          if (setidentify(drv) == SUCCESS) {

Removed from v.1.2  
changed lines
  Added in v.1.3


RetroPC.NET-CVS <cvs@retropc.net>