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