|
|
| version 1.5, 2004/02/13 14:52:21 | version 1.8, 2005/02/07 14:46:09 |
|---|---|
| Line 13 static const _XDFINFO supportxdf[] = { | Line 13 static const _XDFINFO supportxdf[] = { |
| // 512 | // 512 |
| {0, 154, 15, 2, DISKTYPE_2HD, 0}, | {0, 154, 15, 2, DISKTYPE_2HD, 0}, |
| #endif | #endif |
| #if 1 | |
| // 512 | |
| {0, 160, 15, 2, DISKTYPE_2HD, 0}, | |
| #endif | |
| // 1024 | // 1024 |
| {0, 154, 8, 3, DISKTYPE_2HD, 0}, | {0, 154, 8, 3, DISKTYPE_2HD, 0}, |
| // 1.44MB | // 1.44MB |
| Line 20 static const _XDFINFO supportxdf[] = { | Line 24 static const _XDFINFO supportxdf[] = { |
| }; | }; |
| typedef struct { | typedef struct { |
| BYTE dummy[4]; | UINT8 dummy[4]; |
| BYTE fddtype[4]; | UINT8 fddtype[4]; |
| BYTE headersize[4]; | UINT8 headersize[4]; |
| BYTE fddsize[4]; | UINT8 fddsize[4]; |
| BYTE sectorsize[4]; | UINT8 sectorsize[4]; |
| BYTE sectors[4]; | UINT8 sectors[4]; |
| BYTE surfaces[4]; | UINT8 surfaces[4]; |
| BYTE cylinders[4]; | UINT8 cylinders[4]; |
| } FDIHDR; | } FDIHDR; |
| Line 51 const _XDFINFO *xdf; | Line 55 const _XDFINFO *xdf; |
| file_close(fh); | file_close(fh); |
| xdf = supportxdf; | xdf = supportxdf; |
| while(xdf < (supportxdf + (sizeof(supportxdf)/sizeof(_XDFINFO)))) { | while(xdf < (supportxdf + NELEMENTS(supportxdf))) { |
| size = xdf->tracks; | size = xdf->tracks; |
| size *= xdf->sectors; | size *= xdf->sectors; |
| size <<= (7 + xdf->n); | size <<= (7 + xdf->n); |
| Line 212 BOOL fddxdf_read(FDDFILE fdd) { | Line 216 BOOL fddxdf_read(FDDFILE fdd) { |
| long seekp; | long seekp; |
| UINT secsize; | UINT secsize; |
| fddlasterror = 0x00; // ver0.28 | fddlasterror = 0x00; |
| if (fddxdf_seeksector(fdd)) { | if (fddxdf_seeksector(fdd)) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| if (fdc.N != fdd->inf.xdf.n) { | if (fdc.N != fdd->inf.xdf.n) { |
| fddlasterror = 0xc0; // ver0.28 | fddlasterror = 0xc0; |
| return(FAILURE); | return(FAILURE); |
| } | } |
| Line 230 BOOL fddxdf_read(FDDFILE fdd) { | Line 234 BOOL fddxdf_read(FDDFILE fdd) { |
| hdl = file_open_rb(fdd->fname); | hdl = file_open_rb(fdd->fname); |
| if (hdl == FILEH_INVALID) { | if (hdl == FILEH_INVALID) { |
| fddlasterror = 0xe0; // ver0.28 | fddlasterror = 0xe0; |
| return(FAILURE); | return(FAILURE); |
| } | } |
| if ((file_seek(hdl, seekp, FSEEK_SET) != seekp) || | if ((file_seek(hdl, seekp, FSEEK_SET) != seekp) || |
| (file_read(hdl, fdc.buf, secsize) != secsize)) { | (file_read(hdl, fdc.buf, secsize) != secsize)) { |
| file_close(hdl); | file_close(hdl); |
| fddlasterror = 0xe0; // ver0.28 | fddlasterror = 0xe0; |
| return(FAILURE); | return(FAILURE); |
| } | } |
| file_close(hdl); | file_close(hdl); |
| fdc.bufcnt = secsize; | fdc.bufcnt = secsize; |
| fddlasterror = 0x00; // ver0.28 | fddlasterror = 0x00; |
| return(SUCCESS); | return(SUCCESS); |
| } | } |
| Line 251 BOOL fddxdf_write(FDDFILE fdd) { | Line 255 BOOL fddxdf_write(FDDFILE fdd) { |
| long seekp; | long seekp; |
| UINT secsize; | UINT secsize; |
| fddlasterror = 0x00; // ver0.28 | fddlasterror = 0x00; |
| if (fddxdf_seeksector(fdd)) { | if (fddxdf_seeksector(fdd)) { |
| fddlasterror = 0xe0; // ver0.28 | fddlasterror = 0xe0; |
| return(FAILURE); | return(FAILURE); |
| } | } |
| if (fdd->protect) { | if (fdd->protect) { |
| fddlasterror = 0x70; // ver0.28 | fddlasterror = 0x70; |
| return(FAILURE); | return(FAILURE); |
| } | } |
| if (fdc.N != fdd->inf.xdf.n) { | if (fdc.N != fdd->inf.xdf.n) { |
| fddlasterror = 0xc0; // ver0.28 | fddlasterror = 0xc0; |
| return(FAILURE); | return(FAILURE); |
| } | } |
| Line 274 BOOL fddxdf_write(FDDFILE fdd) { | Line 278 BOOL fddxdf_write(FDDFILE fdd) { |
| hdl = file_open(fdd->fname); | hdl = file_open(fdd->fname); |
| if (hdl == FILEH_INVALID) { | if (hdl == FILEH_INVALID) { |
| fddlasterror = 0xc0; // ver0.28 | fddlasterror = 0xc0; |
| return(FAILURE); | return(FAILURE); |
| } | } |
| if ((file_seek(hdl, seekp, FSEEK_SET) != seekp) || | if ((file_seek(hdl, seekp, FSEEK_SET) != seekp) || |
| (file_write(hdl, fdc.buf, secsize) != secsize)) { | (file_write(hdl, fdc.buf, secsize) != secsize)) { |
| file_close(hdl); | file_close(hdl); |
| fddlasterror = 0xc0; // ver0.28 | fddlasterror = 0xc0; |
| return(FAILURE); | return(FAILURE); |
| } | } |
| file_close(hdl); | file_close(hdl); |
| fdc.bufcnt = secsize; | fdc.bufcnt = secsize; |
| fddlasterror = 0x00; // ver0.28 | fddlasterror = 0x00; |
| return(SUCCESS); | return(SUCCESS); |
| } | } |