--- np2/fdd/fdd_d88.c 2003/10/18 01:21:58 1.3 +++ np2/fdd/fdd_d88.c 2004/01/29 09:41:50 1.5 @@ -59,6 +59,7 @@ static BOOL d88trk_flushdata(D88TRK trk) goto dtfd_err2; } file_close(fh); + trk->write = FALSE; dtfd_exit: return(SUCCESS); @@ -72,7 +73,7 @@ dtfd_err1: static BOOL d88trk_read(D88TRK trk, FDDFILE fdd, UINT track, BYTE type) { - BYTE rpm; + UINT8 rpm; FILEH fh; UINT32 fptr; UINT32 size; @@ -82,7 +83,7 @@ static BOOL d88trk_read(D88TRK trk, FDDF goto dtrd_err1; } - rpm = fdc.rpm; + rpm = fdc.rpm[fdc.us]; switch(fdd->inf.d88.fdtype_major) { case DISKTYPE_2D: if ((rpm) || (type != DISKTYPE_2DD) || (track & 2)) { @@ -147,9 +148,9 @@ dtrd_err1: static BOOL rpmcheck(D88SEC sec) { FDDFILE fdd = fddfile + fdc.us; - BYTE rpm; + UINT8 rpm; - rpm = fdc.rpm; + rpm = fdc.rpm[fdc.us]; switch(fdd->inf.d88.fdtype_major) { case DISKTYPE_2D: case DISKTYPE_2DD: @@ -230,6 +231,7 @@ static void drvflush(FDDFILE fdd) { trk = &d88trk; if (trk->fdd == fdd) { d88trk_flushdata(trk); + trk->fdd = NULL; } } @@ -353,9 +355,9 @@ BOOL fddd88_eject(FDDFILE fdd) { BOOL fdd_diskaccess_d88(void) { // ver0.31 FDDFILE fdd = fddfile + fdc.us; - BYTE rpm; + UINT8 rpm; - rpm = fdc.rpm; + rpm = fdc.rpm[fdc.us]; switch(fdd->inf.d88.fdtype_major) { case DISKTYPE_2D: case DISKTYPE_2DD: @@ -629,6 +631,7 @@ static void endoftrack(UINT fmtsize, BYT FDDFILE fdd = fddfile + fdc.us; + D88SEC d88sec; FILEH hdl; int i; UINT trk; @@ -643,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); } @@ -652,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--) { // 新規トラック @@ -683,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)); } @@ -696,7 +701,7 @@ BOOL fdd_formatinit_d88(void) { formatsec = 0; formatpos = 0; formatwrt = 0; - drvflush(NULL); + drvflush(fddfile + fdc.us); return(SUCCESS); } return(FAILURE); @@ -729,7 +734,7 @@ BOOL fdd_formating_d88(const BYTE *ID) { STOREINTELWORD(d88sec->size, size); if ((fdd->inf.d88.fdtype_major == DISKTYPE_2HD) && (fdd->inf.d88.fdtype_minor != 0)) { - d88sec->rpm_flg = fdc.rpm; + d88sec->rpm_flg = fdc.rpm[fdc.us]; } FillMemory(d88sec + 1, size, fdc.d); formatpos += sizeof(_D88SEC);