|
|
| 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); |