|
|
| version 1.4, 2004/01/27 03:24:19 | version 1.11, 2007/11/03 00:00:19 |
|---|---|
| Line 43 enum { | Line 43 enum { |
| _SASIIO sasiio; | _SASIIO sasiio; |
| static BOOL sasiseek(void) { | static BRESULT sasiseek(void) { |
| SXSIDEV sxsi; | SXSIDEV sxsi; |
| Line 59 static BOOL sasiseek(void) { | Line 59 static BOOL sasiseek(void) { |
| return(SUCCESS); | return(SUCCESS); |
| } | } |
| static BOOL sasiflash(void) { | static BRESULT sasiflash(void) { |
| SXSIDEV sxsi; | SXSIDEV sxsi; |
| Line 145 static void checkcmd(void) { | Line 145 static void checkcmd(void) { |
| sasiio.phase = SASIPHASE_SENSE; | sasiio.phase = SASIPHASE_SENSE; |
| sasiio.senspos = 0; | sasiio.senspos = 0; |
| sasiio.sens[0] = sasiio.error; | sasiio.sens[0] = sasiio.error; |
| sasiio.sens[1] = (BYTE)((sasiio.unit << 5) + | sasiio.sens[1] = (UINT8)((sasiio.unit << 5) + |
| ((sasiio.sector >> 16) & 0x1f)); | ((sasiio.sector >> 16) & 0x1f)); |
| sasiio.sens[2] = (BYTE)(sasiio.sector >> 8); | sasiio.sens[2] = (UINT8)(sasiio.sector >> 8); |
| sasiio.sens[3] = (BYTE)sasiio.sector; | sasiio.sens[3] = (UINT8)sasiio.sector; |
| sasiio.error = 0x00; | sasiio.error = 0x00; |
| sasiio.stat = 0x00; | sasiio.stat = 0x00; |
| break; | break; |
| Line 311 static void IOOUTCALL sasiio_o80(UINT po | Line 311 static void IOOUTCALL sasiio_o80(UINT po |
| case SASIPHASE_CMD: | case SASIPHASE_CMD: |
| // TRACEOUT(("sasi cmd = %.2x", dat)); | // TRACEOUT(("sasi cmd = %.2x", dat)); |
| sasiio.cmd[sasiio.cmdpos] = (BYTE)dat; | sasiio.cmd[sasiio.cmdpos] = (UINT8)dat; |
| sasiio.cmdpos++; | sasiio.cmdpos++; |
| if (sasiio.cmdpos >= 6) { | if (sasiio.cmdpos >= 6) { |
| checkcmd(); | checkcmd(); |
| Line 337 static void IOOUTCALL sasiio_o82(UINT po | Line 337 static void IOOUTCALL sasiio_o82(UINT po |
| UINT8 oldocr; | UINT8 oldocr; |
| oldocr = sasiio.ocr; | oldocr = sasiio.ocr; |
| sasiio.ocr = (BYTE)dat; | sasiio.ocr = (UINT8)dat; |
| if ((oldocr & SASIOCR_RST) && (!(dat & SASIOCR_RST))) { | if ((oldocr & SASIOCR_RST) && (!(dat & SASIOCR_RST))) { |
| sasiio.phase = SASIPHASE_FREE; | sasiio.phase = SASIPHASE_FREE; |
| Line 419 static REG8 IOINPCALL sasiio_i82(UINT po | Line 419 static REG8 IOINPCALL sasiio_i82(UINT po |
| else { | else { |
| ret = 0; | ret = 0; |
| sxsi = sxsi_getptr(0x00); // SASI-1 | sxsi = sxsi_getptr(0x00); // SASI-1 |
| if ((sxsi) && ((sxsi->type & SXSITYPE_IFMASK) == SXSITYPE_SASI)) { | if (sxsi) { |
| ret |= (sxsi->type >> (8 - 3)) & 0x38; | ret |= (sxsi->mediatype & 7) << 3; |
| } | } |
| else { | else { |
| ret |= 0x38; | ret |= (7 << 3); |
| } | } |
| sxsi = sxsi_getptr(0x01); // SASI-2 | sxsi = sxsi_getptr(0x01); // SASI-2 |
| if ((sxsi) && ((sxsi->type & SXSITYPE_IFMASK) == SXSITYPE_SASI)) { | if (sxsi) { |
| ret |= (sxsi->type >> 8) & 7; | ret |= (sxsi->mediatype & 7); |
| } | } |
| else { | else { |
| ret |= 7; | ret |= 7; |
| } | } |
| TRACEOUT(("sasi type = %.2x", ret)); | |
| } | } |
| (void)port; | (void)port; |
| return(ret); | return(ret); |
| Line 441 static REG8 IOINPCALL sasiio_i82(UINT po | Line 440 static REG8 IOINPCALL sasiio_i82(UINT po |
| // ---- | // ---- |
| void sasiio_reset(void) { | void sasiio_reset(const NP2CFG *pConfig) { |
| FILEH fh; | FILEH fh; |
| UINT r; | UINT r; |
| Line 450 void sasiio_reset(void) { | Line 449 void sasiio_reset(void) { |
| if (pccore.hddif & PCHDD_SASI) { | if (pccore.hddif & PCHDD_SASI) { |
| dmac_attach(DMADEV_SASI, SASI_DMACH); | dmac_attach(DMADEV_SASI, SASI_DMACH); |
| fh = file_open_rb_c("sasi.rom"); | CPU_RAM_D000 &= ~(1 << 0); |
| fh = file_open_rb_c(OEMTEXT("sasi.rom")); | |
| r = 0; | r = 0; |
| if (fh != FILEH_INVALID) { | if (fh != FILEH_INVALID) { |
| r = file_read(fh, mem + 0xd0000, 0x1000); | r = file_read(fh, mem + 0xd0000, 0x1000); |
| Line 464 void sasiio_reset(void) { | Line 464 void sasiio_reset(void) { |
| TRACEOUT(("use simulate sasi.rom")); | TRACEOUT(("use simulate sasi.rom")); |
| } | } |
| } | } |
| (void)pConfig; | |
| } | } |
| void sasiio_bind(void) { | void sasiio_bind(void) { |