--- np2/fdd/diskdrv.c 2003/10/16 17:58:27 1.1 +++ np2/fdd/diskdrv.c 2004/03/07 07:51:26 1.6 @@ -5,25 +5,43 @@ #include "sysmng.h" #include "pccore.h" #include "iocore.h" -#include "fddfile.h" #include "diskdrv.h" +#include "fddfile.h" #define DISK_DELAY 20 // (0.4sec) - int diskdrv_delay[4]; // ver0.26 - int diskdrv_ro[4]; // ver0.26 - char diskdrv_fname[4][MAX_PATH]; // ver0.26 + int diskdrv_delay[4]; + int diskdrv_ro[4]; + char diskdrv_fname[4][MAX_PATH]; -void diskdrv_sethdd(BYTE drv, const char *fname) { +void diskdrv_sethdd(REG8 drv, const char *fname) { + UINT num; char *p; + int leng; - if (drv < 2) { - p = np2cfg.hddfile[drv]; + num = drv & 0x0f; + p = NULL; + leng = 0; + if (!(drv & 0x20)) { // SASI or IDE + if (num < 2) { + p = np2cfg.sasihdd[num]; + leng = sizeof(np2cfg.sasihdd[0]); + } + } +#if defined(SUPPORT_SCSI) + else { // SCSI + if (num < 4) { + p = np2cfg.scsihdd[num]; + leng = sizeof(np2cfg.scsihdd[0]); + } + } +#endif + if (p) { if (fname) { - file_cpyname(p, fname, sizeof(np2cfg.hddfile[0])); + file_cpyname(p, fname, leng); } else { p[0] = '\0'; @@ -32,9 +50,9 @@ void diskdrv_sethdd(BYTE drv, const char } } -void diskdrv_setfdd(BYTE drv, const char *fname, int readonly) { +void diskdrv_setfdd(REG8 drv, const char *fname, int readonly) { - if (drv < 4) { + if ((drv < 4) && (fdc.equip & (1 << drv))) { fdd_eject(drv); diskdrv_delay[drv] = 0; diskdrv_fname[drv][0] = '\0'; @@ -52,7 +70,7 @@ void diskdrv_setfdd(BYTE drv, const char void diskdrv_callback(void) { - BYTE drv; + REG8 drv; for (drv=0; drv<4; drv++) { if (diskdrv_delay[drv]) {