|
|
| version 1.9, 2004/01/27 03:24:19 | version 1.11, 2004/02/13 20:31:55 |
|---|---|
| Line 66 SXSIDEV sxsi_getptr(REG8 drv) { | Line 66 SXSIDEV sxsi_getptr(REG8 drv) { |
| UINT num; | UINT num; |
| num = drv & 0x0f; | num = drv & 0x0f; |
| if (!(drv & 0x20)) { // SASI or IDE | if (!(drv & 0x20)) { // SASI or IDE |
| if (num < 2) { | if (num < SASIHDD_MAX) { |
| return(sxsi_dev + num); | return(sxsi_dev + num); |
| } | } |
| } | } |
| #if defined(SUPPORT_SCSI) | |
| else { | else { |
| if (num < 4) { // SCSI | if (num < SCSIHDD_MAX) { // SCSI |
| return(sxsi_dev + SASIHDD_MAX + num); | return(sxsi_dev + SASIHDD_MAX + num); |
| } | } |
| } | } |
| #endif | |
| return(NULL); | return(NULL); |
| } | } |
| Line 128 const char *ext; | Line 130 const char *ext; |
| size = 256; | size = 256; |
| totals = cylinders * sectors * surfaces; | totals = cylinders * sectors * surfaces; |
| } | } |
| else if ((!file_cmpname(ext, str_hdi)) && (!(drv & 0x20))) { | |
| HDIHDR hdi; // ANEX86 HDD (SASI) thanx Mamiya | |
| if (file_read(fh, &hdi, sizeof(hdi)) != sizeof(hdi)) { | |
| goto sxsiope_err2; | |
| } | |
| headersize = LOADINTELDWORD(hdi.headersize); | |
| surfaces = LOADINTELDWORD(hdi.surfaces); | |
| cylinders = LOADINTELDWORD(hdi.cylinders); | |
| sectors = LOADINTELDWORD(hdi.sectors); | |
| size = LOADINTELDWORD(hdi.sectorsize); | |
| totals = cylinders * sectors * surfaces; | |
| } | |
| else if ((!file_cmpname(ext, str_nhd)) && (!(drv & 0x20))) { | else if ((!file_cmpname(ext, str_nhd)) && (!(drv & 0x20))) { |
| NHDHDR nhd; // T98Next HDD (IDE) | NHDHDR nhd; // T98Next HDD (IDE) |
| if ((file_read(fh, &nhd, sizeof(nhd)) != sizeof(nhd)) || | if ((file_read(fh, &nhd, sizeof(nhd)) != sizeof(nhd)) || |
| Line 153 const char *ext; | Line 143 const char *ext; |
| size = LOADINTELWORD(nhd.sectorsize); | size = LOADINTELWORD(nhd.sectorsize); |
| totals = cylinders * sectors * surfaces; | totals = cylinders * sectors * surfaces; |
| } | } |
| else if ((!file_cmpname(ext, str_hdi)) && (!(drv & 0x20))) { | |
| HDIHDR hdi; // ANEX86 HDD (SASI) thanx Mamiya | |
| if (file_read(fh, &hdi, sizeof(hdi)) != sizeof(hdi)) { | |
| goto sxsiope_err2; | |
| } | |
| headersize = LOADINTELDWORD(hdi.headersize); | |
| surfaces = LOADINTELDWORD(hdi.surfaces); | |
| cylinders = LOADINTELDWORD(hdi.cylinders); | |
| sectors = LOADINTELDWORD(hdi.sectors); | |
| size = LOADINTELDWORD(hdi.sectorsize); | |
| totals = cylinders * sectors * surfaces; | |
| } | |
| else if ((!file_cmpname(ext, str_hdd)) && (drv & 0x20)) { | else if ((!file_cmpname(ext, str_hdd)) && (drv & 0x20)) { |
| VHDHDR vhd; // Virtual98 HDD (SCSI) | VHDHDR vhd; // Virtual98 HDD (SCSI) |
| if ((file_read(fh, &vhd, sizeof(vhd)) != sizeof(vhd)) || | if ((file_read(fh, &vhd, sizeof(vhd)) != sizeof(vhd)) || |
| (memcmp(vhd.sig, sig_vhd, 5))) { | (memcmp(vhd.sig, sig_vhd, 5))) { |
| goto sxsiope_err2; | goto sxsiope_err2; |
| } | } |
| headersize = 220; | headersize = sizeof(vhd); |
| surfaces = vhd.surfaces; | surfaces = vhd.surfaces; |
| cylinders = LOADINTELWORD(vhd.cylinders); | cylinders = LOADINTELWORD(vhd.cylinders); |
| sectors = vhd.sectors; | sectors = vhd.sectors; |
| Line 219 void sxsi_open(void) { | Line 221 void sxsi_open(void) { |
| drv++; | drv++; |
| } | } |
| } | } |
| #if defined(SUPPORT_SCSI) | |
| drv = 0x20; | drv = 0x20; |
| for (i=0; i<4; i++) { | for (i=0; i<4; i++) { |
| if (sxsi_hddopen(drv, np2cfg.scsihdd[i]) == SUCCESS) { | if (sxsi_hddopen(drv, np2cfg.scsihdd[i]) == SUCCESS) { |
| drv++; | drv++; |
| } | } |
| } | } |
| #endif | |
| } | } |
| void sxsi_flash(void) { | void sxsi_flash(void) { |
| Line 262 void sxsi_trash(void) { | Line 266 void sxsi_trash(void) { |
| static SXSIDEV getdrive(REG8 drv) { | static SXSIDEV getdrive(REG8 drv) { |
| UINT num; | |
| SXSIDEV ret; | SXSIDEV ret; |
| num = drv & 0x0f; | ret = sxsi_getptr(drv); |
| if (num >= 2) { | if ((ret == NULL) || (ret->fname[0] == '\0')) { |
| return(NULL); | |
| } | |
| num += (drv & 0x20) >> 4; | |
| ret = sxsi_dev + num; | |
| if (ret->fname[0] == '\0') { | |
| return(NULL); | return(NULL); |
| } | } |
| if ((FILEH)ret->fh == FILEH_INVALID) { | if ((FILEH)ret->fh == FILEH_INVALID) { |