|
|
| version 1.5, 2004/02/13 14:52:21 | version 1.11, 2005/03/22 04:03:15 |
|---|---|
| Line 10 | Line 10 |
| _FDDFILE fddfile[MAX_FDDFILE]; | _FDDFILE fddfile[MAX_FDDFILE]; |
| BYTE fddlasterror; | UINT8 fddlasterror; |
| static const char str_88d[] = "88d"; | |
| static const char str_98d[] = "98d"; | |
| // ---- | // ---- |
| void fddfile_init(void) { | void fddfile_initialize(void) { |
| ZeroMemory(fddfile, sizeof(fddfile)); | ZeroMemory(fddfile, sizeof(fddfile)); |
| } | } |
| Line 34 void fddfile_reset2dmode(void) { // v | Line 30 void fddfile_reset2dmode(void) { // v |
| #endif | #endif |
| } | } |
| const char *fdd_diskname(REG8 drv) { | OEMCHAR *fdd_diskname(REG8 drv) { |
| if (drv >= MAX_FDDFILE) { | if (drv >= MAX_FDDFILE) { |
| return(str_null); | return((OEMCHAR *)str_null); |
| } | } |
| return(fddfile[drv].fname); | return(fddfile[drv].fname); |
| } | } |
| OEMCHAR *fdd_getfileex(REG8 drv, UINT *ftype, int *ro) { | |
| FDDFILE fdd; | |
| if (drv >= MAX_FDDFILE) { | |
| return((OEMCHAR *)str_null); | |
| } | |
| fdd = fddfile + drv; | |
| if (ftype) { | |
| *ftype = fdd->ftype; | |
| } | |
| if (ro) { | |
| *ro = fdd->ro; | |
| } | |
| return(fdd->fname); | |
| } | |
| BOOL fdd_diskready(REG8 drv) { | BOOL fdd_diskready(REG8 drv) { |
| if ((drv >= MAX_FDDFILE) || (!fddfile[drv].fname[0])) { | if ((drv >= MAX_FDDFILE) || (!fddfile[drv].fname[0])) { |
| Line 61 BOOL fdd_diskprotect(REG8 drv) { | Line 74 BOOL fdd_diskprotect(REG8 drv) { |
| // -------------------------------------------------------------------------- | // -------------------------------------------------------------------------- |
| BOOL fdd_set(REG8 drv, const char *fname, UINT ftype, int ro) { | BRESULT fdd_set(REG8 drv, const OEMCHAR *fname, UINT ftype, int ro) { |
| FDDFILE fdd; | FDDFILE fdd; |
| const char *p; | UINT fddtype; |
| const OEMCHAR *p; | |
| BRESULT r; | |
| if (drv >= MAX_FDDFILE) { | if (drv >= MAX_FDDFILE) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| if (ftype == FTYPE_NONE) { | fddtype = ftype; |
| p = file_getext((char *)fname); | if (fddtype == FTYPE_NONE) { |
| p = file_getext(fname); | |
| if ((!milstr_cmp(p, str_d88)) || (!milstr_cmp(p, str_88d)) || | if ((!milstr_cmp(p, str_d88)) || (!milstr_cmp(p, str_88d)) || |
| (!milstr_cmp(p, str_d98)) || (!milstr_cmp(p, str_98d))) { | (!milstr_cmp(p, str_d98)) || (!milstr_cmp(p, str_98d))) { |
| ftype = FTYPE_D88; | fddtype = FTYPE_D88; |
| } | } |
| else if (!milstr_cmp(p, str_fdi)) { | else if (!milstr_cmp(p, str_fdi)) { |
| ftype = FTYPE_FDI; | fddtype = FTYPE_FDI; |
| } | } |
| else { | else { |
| ftype = FTYPE_BETA; | fddtype = FTYPE_BETA; |
| } | } |
| } | } |
| fdd = fddfile + drv; | fdd = fddfile + drv; |
| switch(ftype) { | switch(fddtype) { |
| case FTYPE_FDI: | case FTYPE_FDI: |
| if (fddxdf_setfdi(fdd, fname, ro) == SUCCESS) { | r = fddxdf_setfdi(fdd, fname, ro); |
| return(SUCCESS); | if (r == SUCCESS) { |
| break; | |
| } | } |
| /* FALLTHROUGH */ | |
| case FTYPE_BETA: | case FTYPE_BETA: |
| return(fddxdf_set(fdd, fname, ro)); | r = fddxdf_set(fdd, fname, ro); |
| break; | |
| case FTYPE_D88: | case FTYPE_D88: |
| return(fddd88_set(fdd, fname, ro)); | r = fddd88_set(fdd, fname, ro); |
| break; | |
| default: | |
| r = FAILURE; | |
| } | |
| if (r == SUCCESS) { | |
| file_cpyname(fdd->fname, fname, NELEMENTS(fdd->fname)); | |
| fdd->ftype = ftype; | |
| fdd->ro = ro; | |
| } | } |
| return(FAILURE); | return(FAILURE); |
| } | } |
| BOOL fdd_eject(REG8 drv) { | BRESULT fdd_eject(REG8 drv) { |
| FDDFILE fdd; | FDDFILE fdd; |
| Line 119 BOOL fdd_eject(REG8 drv) { | Line 147 BOOL fdd_eject(REG8 drv) { |
| // ---- | // ---- |
| BOOL fdd_diskaccess(void) { | BRESULT fdd_diskaccess(void) { |
| FDDFILE fdd; | FDDFILE fdd; |
| Line 134 BOOL fdd_diskaccess(void) { | Line 162 BOOL fdd_diskaccess(void) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| BOOL fdd_seek(void) { | BRESULT fdd_seek(void) { |
| BRESULT ret; | |
| FDDFILE fdd; | FDDFILE fdd; |
| BOOL ret = FAILURE; | |
| ret = FAILURE; | |
| fdd = fddfile + fdc.us; | fdd = fddfile + fdc.us; |
| switch(fdd->type) { | switch(fdd->type) { |
| case DISKTYPE_BETA: | case DISKTYPE_BETA: |
| Line 153 BOOL fdd_seek(void) { | Line 182 BOOL fdd_seek(void) { |
| return(ret); | return(ret); |
| } | } |
| BOOL fdd_seeksector(void) { | BRESULT fdd_seeksector(void) { |
| FDDFILE fdd; | FDDFILE fdd; |
| Line 169 BOOL fdd_seeksector(void) { | Line 198 BOOL fdd_seeksector(void) { |
| } | } |
| BOOL fdd_read(void) { | BRESULT fdd_read(void) { |
| FDDFILE fdd; | FDDFILE fdd; |
| Line 185 BOOL fdd_read(void) { | Line 214 BOOL fdd_read(void) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| BOOL fdd_write(void) { | BRESULT fdd_write(void) { |
| FDDFILE fdd; | FDDFILE fdd; |
| Line 201 BOOL fdd_write(void) { | Line 230 BOOL fdd_write(void) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| BOOL fdd_readid(void) { | BRESULT fdd_readid(void) { |
| FDDFILE fdd; | FDDFILE fdd; |
| Line 217 BOOL fdd_readid(void) { | Line 246 BOOL fdd_readid(void) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| BOOL fdd_formatinit(void) { | BRESULT fdd_formatinit(void) { |
| if (fddfile[fdc.us].type == DISKTYPE_D88) { | if (fddfile[fdc.us].type == DISKTYPE_D88) { |
| return(fdd_formatinit_d88()); | return(fdd_formatinit_d88()); |
| Line 225 BOOL fdd_formatinit(void) { | Line 254 BOOL fdd_formatinit(void) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| BOOL fdd_formating(const BYTE *ID) { | BRESULT fdd_formating(const UINT8 *ID) { |
| sysmng_fddaccess(fdc.us); | sysmng_fddaccess(fdc.us); |
| if (fddfile[fdc.us].type == DISKTYPE_D88) { | if (fddfile[fdc.us].type == DISKTYPE_D88) { |