Diff for /np2/fdd/fdd_d88.c between versions 1.1 and 1.4

version 1.1, 2003/10/16 17:58:29 version 1.4, 2003/11/12 00:55:38
Line 28  static UINT32 nexttrackptr(FDDFILE fdd,  Line 28  static UINT32 nexttrackptr(FDDFILE fdd, 
 // ----  // ----
   
 typedef struct {  typedef struct {
         FDDFILE         fdd;          FDDFILE fdd;
         UINT            track;          UINT    track;
         BYTE            type;          BYTE    type;
         long            fptr;          long    fptr;
         UINT            size;          UINT    size;
         BOOL            write;          BOOL    write;
         BYTE            buf[D88BUFSIZE];          BYTE    buf[D88BUFSIZE];
 } _D88TRK, *D88TRK;  } _D88TRK, *D88TRK;
   
 static  _D88TRK         d88trk;  static  _D88TRK         d88trk;
Line 59  static BOOL d88trk_flushdata(D88TRK trk) Line 59  static BOOL d88trk_flushdata(D88TRK trk)
                 goto dtfd_err2;                  goto dtfd_err2;
         }          }
         file_close(fh);          file_close(fh);
           trk->write = FALSE;
   
 dtfd_exit:  dtfd_exit:
         return(SUCCESS);          return(SUCCESS);
Line 177  static BOOL rpmcheck(D88SEC sec) { Line 178  static BOOL rpmcheck(D88SEC sec) {
         return(SUCCESS);          return(SUCCESS);
 }  }
   
   #if 0
 static D88SEC d88trk_seasector(BOOL check) {  static D88SEC d88trk_seasector(BOOL check) {
   
         D88TRK  trk;          D88TRK  trk;
Line 218  static D88SEC d88trk_seasector(BOOL chec Line 219  static D88SEC d88trk_seasector(BOOL chec
         }          }
         return(NULL);          return(NULL);
 }  }
   #endif
   
   
 // ----  // ----
Line 229  static void drvflush(FDDFILE fdd) { Line 231  static void drvflush(FDDFILE fdd) {
         trk = &d88trk;          trk = &d88trk;
         if (trk->fdd == fdd) {          if (trk->fdd == fdd) {
                 d88trk_flushdata(trk);                  d88trk_flushdata(trk);
                   trk->fdd = NULL;
         }          }
 }  }
   
Line 324  BOOL fddd88_set(FDDFILE fdd, const char  Line 327  BOOL fddd88_set(FDDFILE fdd, const char 
                 goto fdst_err;                  goto fdst_err;
         }          }
         fdd->type = DISKTYPE_D88;          fdd->type = DISKTYPE_D88;
         milstr_ncpy(fdd->fname, fname, sizeof(fdd->fname));          file_cpyname(fdd->fname, fname, sizeof(fdd->fname));
         fdd->protect = ((attr & 1) || (fdd->inf.d88.head.protect & 0x10) ||          fdd->protect = ((attr & 1) || (fdd->inf.d88.head.protect & 0x10) ||
                                                                                                                         (ro))?TRUE:FALSE;                                                                                                                          (ro))?TRUE:FALSE;
         fdd->inf.d88.fdtype_major = fdd->inf.d88.head.fd_type >> 4;          fdd->inf.d88.fdtype_major = fdd->inf.d88.head.fd_type >> 4;
Line 599  static int fileappend(FILEH hdl, FDDFILE Line 602  static int fileappend(FILEH hdl, FDDFILE
                 return(0);                  return(0);
         }          }
         while(length) {          while(length) {
                 if (length >= sizeof(tmp)) {                  if (length >= (long)(sizeof(tmp))) {
                         size = sizeof(tmp);                          size = sizeof(tmp);
                 }                  }
                 else {                  else {
Line 628  static void endoftrack(UINT fmtsize, BYT Line 631  static void endoftrack(UINT fmtsize, BYT
   
         FDDFILE fdd = fddfile + fdc.us;          FDDFILE fdd = fddfile + fdc.us;
   
           D88SEC          d88sec;
         FILEH           hdl;          FILEH           hdl;
         int                     i;          int                     i;
         UINT            trk;          UINT            trk;
Line 642  static void endoftrack(UINT fmtsize, BYT Line 646  static void endoftrack(UINT fmtsize, BYT
   
         ptr = 0;          ptr = 0;
         for (i=0; i<(int)sectors; i++) {          for (i=0; i<(int)sectors; i++) {
                 STOREINTELWORD(((D88SEC)(&d88trk.buf[ptr]))->sectors, sectors);                  d88sec = (D88SEC)(d88trk.buf + ptr);
                 ptr += LOADINTELWORD(((D88SEC)(&d88trk.buf[ptr]))->size);                  STOREINTELWORD(d88sec->sectors, sectors);
                   ptr += LOADINTELWORD(d88sec->size);
                 ptr += sizeof(_D88SEC);                  ptr += sizeof(_D88SEC);
         }          }
   
Line 651  static void endoftrack(UINT fmtsize, BYT Line 656  static void endoftrack(UINT fmtsize, BYT
         if (hdl == FILEH_INVALID) {          if (hdl == FILEH_INVALID) {
                 return;                  return;
         }          }
         lastpointer = file_seek(hdl, 0, 2);          lastpointer = file_seek(hdl, 0, FSEEK_END);
         fpointer = fdd->inf.d88.ptr[trk];          fpointer = fdd->inf.d88.ptr[trk];
         if (fpointer == 0) {          if (fpointer == 0) {
                 for (i=trk; i>=0; i--) {                                        // 新規トラック                  for (i=trk; i>=0; i--) {                                        // 新規トラック
Line 682  static void endoftrack(UINT fmtsize, BYT Line 687  static void endoftrack(UINT fmtsize, BYT
         STOREINTELDWORD(fdd->inf.d88.head.trackp[trk], fpointer);          STOREINTELDWORD(fdd->inf.d88.head.trackp[trk], fpointer);
         file_seek(hdl, fpointer, 0);          file_seek(hdl, fpointer, 0);
         file_write(hdl, d88trk.buf, fmtsize);          file_write(hdl, d88trk.buf, fmtsize);
         file_seek(hdl, 0, 0);          file_seek(hdl, 0, FSEEK_SET);
         file_write(hdl, &fdd->inf.d88.head, sizeof(fdd->inf.d88.head));          file_write(hdl, &fdd->inf.d88.head, sizeof(fdd->inf.d88.head));
         file_close(hdl);          file_close(hdl);
   //      TRACEOUT(("fmt %d %d", fpointer, fmtsize));
 }  }
   
   
Line 695  BOOL fdd_formatinit_d88(void) { Line 701  BOOL fdd_formatinit_d88(void) {
                 formatsec = 0;                  formatsec = 0;
                 formatpos = 0;                  formatpos = 0;
                 formatwrt = 0;                  formatwrt = 0;
                 drvflush(NULL);                  drvflush(fddfile + fdc.us);
                 return(SUCCESS);                  return(SUCCESS);
         }          }
         return(FAILURE);          return(FAILURE);

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


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