|
|
| version 1.4, 2004/08/09 04:47:53 | version 1.5, 2004/08/10 08:28:48 |
|---|---|
| Line 12 | Line 12 |
| _FDDFILE fddfile[MAX_FDDFILE]; | _FDDFILE fddfile[MAX_FDDFILE]; |
| static REG8 dummyseek(FDDFILE fdd, REG8 media, UINT track) { | |
| (void)fdd; | |
| (void)media; | |
| (void)track; | |
| return(FDDSTAT_SEEKERR); | |
| } | |
| static REG8 dummyread(FDDFILE fdd, REG8 media, UINT track, REG8 sc, | |
| UINT8 *ptr, UINT *size) { | |
| (void)fdd; | |
| (void)media; | |
| (void)track; | |
| (void)sc; | |
| (void)ptr; | |
| (void)size; | |
| return(FDDSTAT_RECNFND); | |
| } | |
| static REG8 dummywrite(FDDFILE fdd, REG8 media, UINT track, REG8 sc, | |
| const UINT8 *ptr, UINT size) { | |
| (void)fdd; | |
| (void)media; | |
| (void)track; | |
| (void)sc; | |
| (void)ptr; | |
| (void)size; | |
| return(FDDSTAT_RECNFND | FDDSTAT_WRITEFAULT); | |
| } | |
| static REG8 dummycrc(FDDFILE fdd, REG8 media, UINT track, UINT num, | |
| UINT8 *ptr) { | |
| (void)fdd; | |
| (void)media; | |
| (void)track; | |
| (void)num; | |
| (void)ptr; | |
| return(FDDSTAT_RECNFND); | |
| } | |
| static REG8 getfdtype(const OEMCHAR *fname) { | |
| const OEMCHAR *ext; | |
| ext = file_getext(fname); | |
| if (!milstr_cmp(ext, str_e2d)) { | |
| return(FTYPE_BETA); | |
| } | |
| if ((!milstr_cmp(ext, str_d88)) || (!milstr_cmp(ext, str_88d))) { | |
| return(FTYPE_D88); | |
| } | |
| return(FTYPE_NONE); | |
| } | |
| static void setempty(FDDFILE fdd) { | |
| ZeroMemory(fdd, sizeof(_FDDFILE)); | |
| fdd->seek = dummyseek; | |
| fdd->read = dummyread; | |
| fdd->write = dummywrite; | |
| fdd->crc = dummycrc; | |
| } | |
| // ---- | |
| void fddfile_initialize(void) { | void fddfile_initialize(void) { |
| UINT i; | |
| for (i=0; i<MAX_FDDFILE; i++) { | |
| setempty(fddfile + i); | |
| } | |
| } | } |
| const OEMCHAR *fdd_diskname(REG8 drv) { | const OEMCHAR *fddfile_diskname(REG8 drv) { |
| if (drv >= MAX_FDDFILE) { | if (drv >= MAX_FDDFILE) { |
| return(str_null); | return(str_null); |
| Line 23 const OEMCHAR *fdd_diskname(REG8 drv) { | Line 98 const OEMCHAR *fdd_diskname(REG8 drv) { |
| return(fddfile[drv].fname); | return(fddfile[drv].fname); |
| } | } |
| BRESULT fdd_diskready(REG8 drv) { | BRESULT fddfile_diskready(REG8 drv) { |
| if ((drv >= MAX_FDDFILE) || (fddfile[drv].fname[0] == '\0')) { | if ((drv >= MAX_FDDFILE) || (fddfile[drv].type == DISKTYPE_NOTREADY)) { |
| return(FALSE); | return(FALSE); |
| } | } |
| return(TRUE); | return(TRUE); |
| } | } |
| BRESULT fddfile_diskprotect(REG8 drv) { | |
| // ---- | if ((drv >= MAX_FDDFILE) || (!fddfile[drv].protect)) { |
| return(FALSE); | |
| static REG8 getfdtype(const OEMCHAR *fname) { | |
| const OEMCHAR *ext; | |
| ext = file_getext(fname); | |
| if (!milstr_cmp(ext, str_e2d)) { | |
| return(FTYPE_BETA); | |
| } | |
| if ((!milstr_cmp(ext, str_d88)) || (!milstr_cmp(ext, str_88d))) { | |
| return(FTYPE_D88); | |
| } | } |
| return(FTYPE_NONE); | return(TRUE); |
| } | } |
| BRESULT fdd_set(REG8 drv, const OEMCHAR *fname, UINT ftype, int ro) { | BRESULT fddfile_set(REG8 drv, const OEMCHAR *fname, UINT ftype, int ro) { |
| FDDFILE fdd; | FDDFILE fdd; |
| BRESULT r; | BRESULT r; |
| Line 56 BRESULT fdd_set(REG8 drv, const OEMCHAR | Line 122 BRESULT fdd_set(REG8 drv, const OEMCHAR |
| if (drv >= MAX_FDDFILE) { | if (drv >= MAX_FDDFILE) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| fdd_eject(drv); | fddfile_eject(drv); |
| fdd = fddfile + drv; | fdd = fddfile + drv; |
| if (ftype == FTYPE_NONE) { | if (ftype == FTYPE_NONE) { |
| ftype = getfdtype(fname); | ftype = getfdtype(fname); |
| } | } |
| switch(ftype) { | switch(ftype) { |
| case FTYPE_BETA: | case FTYPE_BETA: |
| r = fdd2d_set(fdd, drv, fname); | r = fdd2d_set(fdd, fname); |
| break; | break; |
| case FTYPE_D88: | case FTYPE_D88: |
| r = fddd88_set(fdd, drv, fname); | r = fddd88_set(fdd, fname); |
| break; | break; |
| default: | default: |
| Line 83 BRESULT fdd_set(REG8 drv, const OEMCHAR | Line 149 BRESULT fdd_set(REG8 drv, const OEMCHAR |
| return(r); | return(r); |
| } | } |
| BRESULT fdd_eject(REG8 drv) { | void fddfile_eject(REG8 drv) { |
| FDDFILE fdd; | FDDFILE fdd; |
| if (drv >= MAX_FDDFILE) { | if (drv >= MAX_FDDFILE) { |
| return(FAILURE); | return; |
| } | } |
| fdd = fddfile + drv; | fdd = fddfile + drv; |
| switch(fdd->type) { | switch(fdd->type) { |
| case DISKTYPE_BETA: | case DISKTYPE_BETA: |
| return(fdd2d_eject(fdd, drv)); | fdd2d_eject(fdd); |
| case DISKTYPE_D88: | case DISKTYPE_D88: |
| return(fddd88_eject(fdd, drv)); | fddd88_eject(fdd); |
| } | } |
| return(FAILURE); | setempty(fdd); |
| } | } |