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

version 1.3, 2004/03/23 13:32:50 version 1.4, 2004/08/04 15:04:51
Line 62  static BOOL setidentify(IDEDRV drv) { Line 62  static BOOL setidentify(IDEDRV drv) {
   
         ZeroMemory(tmp, sizeof(tmp));          ZeroMemory(tmp, sizeof(tmp));
         // とりあえず使ってる部分だけ          // とりあえず使ってる部分だけ
         tmp[0] = 0x045a;          tmp[0] = 0x0040;
         tmp[1] = sxsi->cylinders;          tmp[1] = sxsi->cylinders;
         tmp[3] = sxsi->surfaces;          tmp[3] = sxsi->surfaces;
         tmp[4] = sxsi->sectors * 512;          tmp[4] = sxsi->sectors * 512;
 //      tmp[5] = 0;                                     // ???  
         tmp[6] = sxsi->sectors;          tmp[6] = sxsi->sectors;
         for (i=0; i<10; i++) {          for (i=0; i<10; i++) {
                 tmp[10+i] = (serial[i*2] << 8) + serial[i*2+1];                  tmp[10+i] = (serial[i*2] << 8) + serial[i*2+1];
         }          }
         tmp[20] = 3;  
         tmp[21] = 16;  
         tmp[22] = 4;          tmp[22] = 4;
         for (i=0; i<4; i++) {          for (i=0; i<4; i++) {
                 tmp[23+i] = (firm[i*2] << 8) + firm[i*2+1];                  tmp[23+i] = (firm[i*2] << 8) + firm[i*2+1];
Line 80  static BOOL setidentify(IDEDRV drv) { Line 77  static BOOL setidentify(IDEDRV drv) {
         for (i=0; i<20; i++) {          for (i=0; i<20; i++) {
                 tmp[27+i] = (model[i*2] << 8) + model[i*2+1];                  tmp[27+i] = (model[i*2] << 8) + model[i*2+1];
         }          }
 //      tmp[47] = 0;                            // multiple          tmp[47] = 0x00;                         // multiple
         tmp[49] = 0x0f00;          tmp[49] = 0x0000;                       // LBA(1 << 9)
         tmp[50] = 0x4000;  
         tmp[51] = 0x0200;          tmp[51] = 0x0200;
         tmp[52] = 0x0200;          tmp[53] = 0x0001;
         tmp[53] = 0x0007;  
         tmp[54] = sxsi->cylinders;          tmp[54] = sxsi->cylinders;
         tmp[55] = sxsi->surfaces;          tmp[55] = sxsi->surfaces;
         tmp[56] = sxsi->sectors;          tmp[56] = sxsi->sectors;
Line 95  static BOOL setidentify(IDEDRV drv) { Line 90  static BOOL setidentify(IDEDRV drv) {
 //      tmp[59] = 0;  //      tmp[59] = 0;
         tmp[60] = (UINT16)size;          tmp[60] = (UINT16)size;
         tmp[61] = (UINT16)(size >> 16);          tmp[61] = (UINT16)(size >> 16);
         tmp[63] = 0x0407;          tmp[63] = 0;                            // multi word DMA
   
         tmp[80] = 0x001e;          tmp[80] = 0x0006;                       // support ATA-1/2
         tmp[81] = 0x0011;          tmp[81] = 0;
   
         p = drv->buf;          p = drv->buf;
         for (i=0; i<256; i++) {          for (i=0; i<256; i++) {
Line 114  static BOOL setidentify(IDEDRV drv) { Line 109  static BOOL setidentify(IDEDRV drv) {
   
 static void setintr(IDEDRV drv) {  static void setintr(IDEDRV drv) {
   
         ideio.bank[0] = ideio.bank[1] | 0x80;                   // ????          if (!(drv->ctrl & IDECTRL_NIEN)) {
         pic_setirq(IDE_IRQ);                  TRACEOUT(("ideio: setintr()"));
                   ideio.bank[0] = ideio.bank[1] | 0x80;                   // ????
                   pic_setirq(IDE_IRQ);
           }
 }  }
   
 static void cmdabort(IDEDRV drv) {  static void cmdabort(IDEDRV drv) {
   
         drv->status = IDESTAT_DRDY | IDESTAT_ERR;          drv->status = IDESTAT_DRDY | IDESTAT_ERR;
         drv->error = IDEERR_ABRT;          drv->error = IDEERR_ABRT;
         ideio.bank[0] = ideio.bank[1] | 0x80;                   // ????          setintr(drv);
         pic_setirq(IDE_IRQ);  
 }  }
   
 static void panic(const char *str, ...) {  static void panic(const char *str, ...) {
Line 443  static void IOOUTCALL ideio_o74c(UINT po Line 440  static void IOOUTCALL ideio_o74c(UINT po
                         }                          }
                 }                  }
         }          }
         TRACEOUT(("ideio %.4x,%.2x [%.4x:%.8x]", port, dat, CPU_CS, CPU_EIP));          TRACEOUT(("ideio interrupt %sable", (dat & IDECTRL_NIEN) ? "di" : "en"));
           TRACEOUT(("ideio devctrl %.4x,%.2x [%.4x:%.8x]", port, dat, CPU_CS, CPU_EIP));
 }  }
   
 static void IOOUTCALL ideio_o74e(UINT port, REG8 dat) {  static void IOOUTCALL ideio_o74e(UINT port, REG8 dat) {
Line 550  static REG8 IOINPCALL ideio_i64e(UINT po Line 548  static REG8 IOINPCALL ideio_i64e(UINT po
         if (drv) {          if (drv) {
                 TRACEOUT(("ideio status %.2x [%.4x:%.8x]",                  TRACEOUT(("ideio status %.2x [%.4x:%.8x]",
                                                                                         drv->status, CPU_CS, CPU_EIP));                                                                                          drv->status, CPU_CS, CPU_EIP));
                   if (!(drv->ctrl & IDECTRL_NIEN)) {
                           TRACEOUT(("ideio: resetirq"));
                           pic_resetirq(IDE_IRQ);
                   }
                 return(drv->status);                  return(drv->status);
         }          }
         else {          else {
Line 559  static REG8 IOINPCALL ideio_i64e(UINT po Line 561  static REG8 IOINPCALL ideio_i64e(UINT po
   
 static REG8 IOINPCALL ideio_i74c(UINT port) {  static REG8 IOINPCALL ideio_i74c(UINT port) {
   
         TRACEOUT(("ideio %.4x [%.4x:%.8x]", port, CPU_CS, CPU_EIP));          IDEDRV  drv;
         return(0xff);  
           drv = getidedrv();
           if (drv) {
                   TRACEOUT(("ideio alt status %.2x [%.4x:%.8x]",
                                                                                           drv->status, CPU_CS, CPU_EIP));
                   return(drv->status);
           }
           else {
                   return(0xff);
           }
 }  }
   
   
Line 591  void IOOUTCALL ideio_w16(UINT port, REG1 Line 602  void IOOUTCALL ideio_w16(UINT port, REG1
         }          }
 }  }
   
 REG16 IOOUTCALL ideio_r16(UINT port) {  REG16 IOINPCALL ideio_r16(UINT port) {
   
         IDEDRV  drv;          IDEDRV  drv;
         REG16   ret;          REG16   ret;

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


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