|
|
| version 1.3, 2004/01/27 10:55:47 | version 1.6, 2004/02/19 03:04:01 |
|---|---|
| Line 36 BOOL fddxdf_set(FDDFILE fdd, const char | Line 36 BOOL fddxdf_set(FDDFILE fdd, const char |
| const _XDFINFO *xdf; | const _XDFINFO *xdf; |
| short attr; | short attr; |
| FILEH fh; | FILEH fh; |
| UINT fdsize; | UINT32 fdsize; |
| UINT size; | UINT size; |
| attr = file_attr(fname); | attr = file_attr(fname); |
| Line 47 const _XDFINFO *xdf; | Line 47 const _XDFINFO *xdf; |
| if (fh == FILEH_INVALID) { | if (fh == FILEH_INVALID) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| fdsize = file_seek(fh, 0, FSEEK_END); | fdsize = file_getsize(fh); |
| file_close(fh); | file_close(fh); |
| xdf = supportxdf; | xdf = supportxdf; |
| Line 72 BOOL fddxdf_setfdi(FDDFILE fdd, const ch | Line 72 BOOL fddxdf_setfdi(FDDFILE fdd, const ch |
| short attr; | short attr; |
| FILEH fh; | FILEH fh; |
| FDIHDR fdi; | UINT32 fdsize; |
| UINT r; | UINT r; |
| FDIHDR fdi; | |
| UINT32 fddtype; | UINT32 fddtype; |
| UINT32 headersize; | UINT32 headersize; |
| UINT32 size; | UINT32 size; |
| Line 88 BOOL fddxdf_setfdi(FDDFILE fdd, const ch | Line 89 BOOL fddxdf_setfdi(FDDFILE fdd, const ch |
| if (attr & 0x18) { | if (attr & 0x18) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| fdsize = 0; | |
| r = 0; | r = 0; |
| fh = file_open_rb(fname); | fh = file_open_rb(fname); |
| if (fh != FILEH_INVALID) { | if (fh != FILEH_INVALID) { |
| fdsize = file_getsize(fh); | |
| r = file_read(fh, &fdi, sizeof(fdi)); | r = file_read(fh, &fdi, sizeof(fdi)); |
| file_close(fh); | file_close(fh); |
| } | } |
| Line 109 BOOL fddxdf_setfdi(FDDFILE fdd, const ch | Line 112 BOOL fddxdf_setfdi(FDDFILE fdd, const ch |
| (cylinders == 0) || (cylinders >= 128)) { | (cylinders == 0) || (cylinders >= 128)) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| if (fdsize != (headersize + (size * sectors * surfaces * cylinders))) { | |
| return(FAILURE); | |
| } | |
| size >>= 8; | size >>= 8; |
| n = 0; | n = 0; |
| while(size) { | while(size) { |
| Line 166 BOOL fddxdf_diskaccess(FDDFILE fdd) { | Line 172 BOOL fddxdf_diskaccess(FDDFILE fdd) { |
| (CTRL_FDMEDIA != fdd->inf.xdf.disktype)) { | (CTRL_FDMEDIA != fdd->inf.xdf.disktype)) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| (void)fdd; | |
| return(SUCCESS); | return(SUCCESS); |
| } | } |
| Line 174 BOOL fddxdf_seek(FDDFILE fdd) { | Line 179 BOOL fddxdf_seek(FDDFILE fdd) { |
| if ((fdd->type != DISKTYPE_BETA) || | if ((fdd->type != DISKTYPE_BETA) || |
| (CTRL_FDMEDIA != fdd->inf.xdf.disktype) || | (CTRL_FDMEDIA != fdd->inf.xdf.disktype) || |
| (fdc.rpm != fdd->inf.xdf.rpm) || | (fdc.rpm[fdc.us] != fdd->inf.xdf.rpm) || |
| (fdc.ncn >= (fdd->inf.xdf.tracks >> 1))) { | (fdc.ncn >= (fdd->inf.xdf.tracks >> 1))) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| Line 185 BOOL fddxdf_seeksector(FDDFILE fdd) { | Line 190 BOOL fddxdf_seeksector(FDDFILE fdd) { |
| if ((fdd->type != DISKTYPE_BETA) || | if ((fdd->type != DISKTYPE_BETA) || |
| (CTRL_FDMEDIA != fdd->inf.xdf.disktype) || | (CTRL_FDMEDIA != fdd->inf.xdf.disktype) || |
| (fdc.rpm != fdd->inf.xdf.rpm) || | (fdc.rpm[fdc.us] != fdd->inf.xdf.rpm) || |
| (fdc.treg[fdc.us] >= (fdd->inf.xdf.tracks >> 1))) { | (fdc.treg[fdc.us] >= (fdd->inf.xdf.tracks >> 1))) { |
| fddlasterror = 0xe0; | fddlasterror = 0xe0; |
| return(FAILURE); | return(FAILURE); |
| Line 207 BOOL fddxdf_read(FDDFILE fdd) { | Line 212 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 225 BOOL fddxdf_read(FDDFILE fdd) { | Line 230 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 246 BOOL fddxdf_write(FDDFILE fdd) { | Line 251 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 269 BOOL fddxdf_write(FDDFILE fdd) { | Line 274 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); |
| } | } |
| BOOL fddxdf_readid(FDDFILE fdd) { | BOOL fddxdf_readid(FDDFILE fdd) { |
| fddlasterror = 0x00; | fddlasterror = 0x00; |
| if ((fdc.rpm != fdd->inf.xdf.rpm) || | if ((!fdc.mf) || |
| (fdc.rpm[fdc.us] != fdd->inf.xdf.rpm) || | |
| (fdc.crcn >= fdd->inf.xdf.sectors)) { | (fdc.crcn >= fdd->inf.xdf.sectors)) { |
| fddlasterror = 0xe0; | fddlasterror = 0xe0; |
| return(FAILURE); | return(FAILURE); |