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

version 1.2, 2003/10/17 03:52:24 version 1.5, 2004/01/29 09:41:50
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 230  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 325  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 353  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 629  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 643  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 652  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 683  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 696  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 729  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.2  
changed lines
  Added in v.1.5


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