Diff for /np2/fdd/fdd_d88.c between versions 1.1.1.1 and 1.5

version 1.1.1.1, 2003/10/16 17:58:29 version 1.5, 2004/01/29 09:41:50
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 72  dtfd_err1: Line 73  dtfd_err1:
   
 static BOOL d88trk_read(D88TRK trk, FDDFILE fdd, UINT track, BYTE type) {  static BOOL d88trk_read(D88TRK trk, FDDFILE fdd, UINT track, BYTE type) {
   
         BYTE    rpm;          UINT8   rpm;
         FILEH   fh;          FILEH   fh;
         UINT32  fptr;          UINT32  fptr;
         UINT32  size;          UINT32  size;
Line 82  static BOOL d88trk_read(D88TRK trk, FDDF Line 83  static BOOL d88trk_read(D88TRK trk, FDDF
                 goto dtrd_err1;                  goto dtrd_err1;
         }          }
   
         rpm = fdc.rpm;          rpm = fdc.rpm[fdc.us];
         switch(fdd->inf.d88.fdtype_major) {          switch(fdd->inf.d88.fdtype_major) {
                 case DISKTYPE_2D:                  case DISKTYPE_2D:
                         if ((rpm) || (type != DISKTYPE_2DD) || (track & 2)) {                          if ((rpm) || (type != DISKTYPE_2DD) || (track & 2)) {
Line 147  dtrd_err1: Line 148  dtrd_err1:
 static BOOL rpmcheck(D88SEC sec) {  static BOOL rpmcheck(D88SEC sec) {
   
         FDDFILE fdd = fddfile + fdc.us;          FDDFILE fdd = fddfile + fdc.us;
         BYTE    rpm;          UINT8   rpm;
   
         rpm = fdc.rpm;          rpm = fdc.rpm[fdc.us];
         switch(fdd->inf.d88.fdtype_major) {          switch(fdd->inf.d88.fdtype_major) {
                 case DISKTYPE_2D:                  case DISKTYPE_2D:
                 case DISKTYPE_2DD:                  case DISKTYPE_2DD:
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 352  BOOL fddd88_eject(FDDFILE fdd) { Line 355  BOOL fddd88_eject(FDDFILE fdd) {
 BOOL fdd_diskaccess_d88(void) {                                                                         // ver0.31  BOOL fdd_diskaccess_d88(void) {                                                                         // ver0.31
   
         FDDFILE fdd = fddfile + fdc.us;          FDDFILE fdd = fddfile + fdc.us;
         BYTE    rpm;          UINT8   rpm;
   
         rpm = fdc.rpm;          rpm = fdc.rpm[fdc.us];
         switch(fdd->inf.d88.fdtype_major) {          switch(fdd->inf.d88.fdtype_major) {
                 case DISKTYPE_2D:                  case DISKTYPE_2D:
                 case DISKTYPE_2DD:                  case DISKTYPE_2DD:
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);
Line 728  BOOL fdd_formating_d88(const BYTE *ID) { Line 734  BOOL fdd_formating_d88(const BYTE *ID) {
                 STOREINTELWORD(d88sec->size, size);                  STOREINTELWORD(d88sec->size, size);
                 if ((fdd->inf.d88.fdtype_major == DISKTYPE_2HD) &&                  if ((fdd->inf.d88.fdtype_major == DISKTYPE_2HD) &&
                         (fdd->inf.d88.fdtype_minor != 0)) {                          (fdd->inf.d88.fdtype_minor != 0)) {
                         d88sec->rpm_flg = fdc.rpm;                          d88sec->rpm_flg = fdc.rpm[fdc.us];
                 }                  }
                 FillMemory(d88sec + 1, size, fdc.d);                  FillMemory(d88sec + 1, size, fdc.d);
                 formatpos += sizeof(_D88SEC);                  formatpos += sizeof(_D88SEC);

Removed from v.1.1.1.1  
changed lines
  Added in v.1.5


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