Diff for /xmil/fdd/fdd_d88.c between versions 1.7 and 1.8

version 1.7, 2004/08/09 02:47:01 version 1.8, 2004/08/09 04:47:53
Line 84  static UINT32 nexttrackptr(FDDFILE fdd,  Line 84  static UINT32 nexttrackptr(FDDFILE fdd, 
 }  }
   
   
 int curdataflush(void) {  static int curdataflush(void) {
   
         FDDFILE fdd;          FDDFILE fdd;
         FILEH   fh;          FILEH   fh;
Line 113  int curdataflush(void) { Line 113  int curdataflush(void) {
 }  }
   
   
 static DWORD read_d88track(REG8 drv, UINT track, BYTE type) {  static DWORD read_d88track(REG8 drv, UINT track, REG8 media) {
   
         FDDFILE fdd;          FDDFILE fdd;
         FILEH   hdr;          FILEH   hdr;
Line 121  static DWORD read_d88track(REG8 drv, UIN Line 121  static DWORD read_d88track(REG8 drv, UIN
         curdataflush();          curdataflush();
         curdrv = drv;          curdrv = drv;
         curtrk = track;          curtrk = track;
         curtype = type;          curtype = media;
         cursct = (UINT)-1;          cursct = (UINT)-1;
         curwrite = 0;          curwrite = 0;
         curtrkerr = 0;          curtrkerr = 0;
Line 130  static DWORD read_d88track(REG8 drv, UIN Line 130  static DWORD read_d88track(REG8 drv, UIN
   
         fdd = fddfile + drv;          fdd = fddfile + drv;
         if ((drv < 0) || (drv > 3) || (track > 163) ||          if ((drv < 0) || (drv > 3) || (track > 163) ||
                 ((type == 0) && (fdd->inf.d88.head.fd_type == 0x20)) ||                  (media != (fdd->inf.d88.head.fd_type >> 4)) ||
                 ((type == 1) && (fdd->inf.d88.head.fd_type != 0x20)) ||  
                 ((curfp = fdd->inf.d88.ptr[track]) == 0) ||                  ((curfp = fdd->inf.d88.ptr[track]) == 0) ||
                 ((cursize = nexttrackptr(fdd, curfp,                  ((cursize = nexttrackptr(fdd, curfp,
                                                                 fdd->inf.d88.fd_size) - curfp) > 0x4000)) {                                                                  fdd->inf.d88.fd_size) - curfp) > 0x4000)) {
Line 173  const _D88SEC *p; Line 172  const _D88SEC *p;
         UINT            sectors;          UINT            sectors;
         UINT            secsize;          UINT            secsize;
   
         if ((curdrv != drv) || (curtrk != track) || (curtype != fdc.media)) {          if ((curdrv != drv) || (curtrk != track) || (curtype != fdc.s.media)) {
                 read_d88track(drv, track, fdc.media);                  read_d88track(drv, track, fdc.s.media);
         }          }
         if (curtrkerr) {          if (curtrkerr) {
                 cursct = r;                  cursct = r;
Line 226  static void drvflush(REG8 drv) { Line 225  static void drvflush(REG8 drv) {
   
 //**********************************************************************  //**********************************************************************
   
 short fdd_crc_d88(void) {  BRESULT fddd88_crc(FDDFILE fdd) {
   
         UINT            track;          UINT            track;
 const _D88SEC   *p;  const _D88SEC   *p;
Line 234  const _D88SEC *p; Line 233  const _D88SEC *p;
         UINT            sectors;          UINT            sectors;
         UINT            secsize;          UINT            secsize;
   
         ZeroMemory(fdc.crc_dat, 6);  
         track = (fdc.c << 1) + fdc.h;          track = (fdc.c << 1) + fdc.h;
         if (track >= 164) {          if (track >= 164) {
                 goto crcerror_d88;                  goto crcerror_d88;
Line 253  const _D88SEC *p; Line 251  const _D88SEC *p;
                 }                  }
                 p = (D88SEC)(((UINT8 *)(p + 1)) + secsize);                  p = (D88SEC)(((UINT8 *)(p + 1)) + secsize);
         }          }
           fdc.s.buffer[0] = p->c;
           fdc.s.buffer[1] = p->h;
           fdc.s.buffer[2] = p->r;
           fdc.s.buffer[3] = p->n;
           fdc.s.buffer[4] = 0;
           fdc.s.buffer[5] = 0;
           fdc.s.bufsize = 6;
         fdc.rreg = p->c;                                                                // メルヘンヴェール          fdc.rreg = p->c;                                                                // メルヘンヴェール
         fdc.crc_dat[0] = p->c;  
         fdc.crc_dat[1] = p->h;  
         fdc.crc_dat[2] = p->r;  
         fdc.crc_dat[3] = p->n;  
         crcnum++;          crcnum++;
         if (p->stat) {          if (p->stat) {
                 crcerror = TRUE;                  crcerror = TRUE;
Line 265  const _D88SEC *p; Line 266  const _D88SEC *p;
         else {          else {
                 crcerror = FALSE;                  crcerror = FALSE;
         }          }
         return(0);          return(SUCCESS);
   
 crcerror_d88:  crcerror_d88:
         crcerror = TRUE;          crcerror = TRUE;
         return(1);          (void)fdd;
           return(FAILURE);
 }  }
   
   
Line 342  BYTE fdd_stat_d88(void) { Line 344  BYTE fdd_stat_d88(void) {
                                 ans |= 0x03;                                    // DATA REQUEST / BUSY                                  ans |= 0x03;                                    // DATA REQUEST / BUSY
                         }                          }
                 }                  }
                 else if ((cmd == 0x0e) && (readdiag < 0x1a00)) {                  else if ((cmd == 0x0c) && (fdc.s.bufpos < 6)) {
                         ans |= 0x03;                          ans |= 0x03;
                 }                  }
                 else if ((cmd == 0x0c) && (fdc.crc_off < 6)) {          // ver0.25                  else if ((cmd == 0x0e) && (readdiag < 0x1a00)) {
                         ans |= 0x03;                          ans |= 0x03;
                 }                  }
                 else if (cmd == 0x0f) {                  else if (cmd == 0x0f) {
Line 412  void init_tao_d88(void) { Line 414  void init_tao_d88(void) {
         FDDFILE         fdd;          FDDFILE         fdd;
   
         fdd = fddfile + fdc.drv;          fdd = fddfile + fdc.drv;
         if ((fdc.media == 0) && (fdd->inf.d88.head.fd_type != 0x20)) {          if (fdc.s.media != (fdd->inf.d88.head.fd_type >> 4)) {
                   tao = WID_ERR;
           }
           if (fdc.s.media == DISKTYPE_2D) {
                 tao = WID_2D;                  tao = WID_2D;
         }          }
         else if ((fdc.media == 1) && (fdd->inf.d88.head.fd_type == 0x20)) {          else if (fdc.s.media == DISKTYPE_2HD) {
                 tao = WID_2HD;                  tao = WID_2HD;
         }          }
         else {          else {
Line 459  static int fileappend(FILEH hdl, FDDFILE Line 464  static int fileappend(FILEH hdl, FDDFILE
         return(0);          return(0);
 }  }
   
 void endoftrack(void) {  static void endoftrack(void) {
   
         FDDFILE fdd;          FDDFILE fdd;
         FILEH   hdr;          FILEH   hdr;
Line 695  BRESULT fddd88_set(FDDFILE fdd, REG8 drv Line 700  BRESULT fddd88_set(FDDFILE fdd, REG8 drv
         }          }
         fdd->type = DISKTYPE_D88;          fdd->type = DISKTYPE_D88;
         fdd->protect = (UINT8)(attr & 1);          fdd->protect = (UINT8)(attr & 1);
         milstr_ncpy(fdd->fname, fname, NELEMENTS(fdd->fname));          (void)drv;
         return(SUCCESS);          return(SUCCESS);
   
 fdst_err:  fdst_err:

Removed from v.1.7  
changed lines
  Added in v.1.8


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