|
|
| version 1.3, 2003/10/18 01:21:58 | 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 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); |