--- np2/cbus/sasiio.c 2004/01/22 01:54:38 1.2 +++ np2/cbus/sasiio.c 2005/03/05 06:02:28 1.10 @@ -43,7 +43,7 @@ enum { _SASIIO sasiio; -static BOOL sasiseek(void) { +static BRESULT sasiseek(void) { SXSIDEV sxsi; @@ -59,7 +59,7 @@ static BOOL sasiseek(void) { return(SUCCESS); } -static BOOL sasiflash(void) { +static BRESULT sasiflash(void) { SXSIDEV sxsi; @@ -145,10 +145,10 @@ static void checkcmd(void) { sasiio.phase = SASIPHASE_SENSE; sasiio.senspos = 0; sasiio.sens[0] = sasiio.error; - sasiio.sens[1] = (BYTE)((sasiio.unit << 5) + + sasiio.sens[1] = (UINT8)((sasiio.unit << 5) + ((sasiio.sector >> 16) & 0x1f)); - sasiio.sens[2] = (BYTE)(sasiio.sector >> 8); - sasiio.sens[3] = (BYTE)sasiio.sector; + sasiio.sens[2] = (UINT8)(sasiio.sector >> 8); + sasiio.sens[3] = (UINT8)sasiio.sector; sasiio.error = 0x00; sasiio.stat = 0x00; break; @@ -311,7 +311,7 @@ static void IOOUTCALL sasiio_o80(UINT po case SASIPHASE_CMD: // TRACEOUT(("sasi cmd = %.2x", dat)); - sasiio.cmd[sasiio.cmdpos] = (BYTE)dat; + sasiio.cmd[sasiio.cmdpos] = (UINT8)dat; sasiio.cmdpos++; if (sasiio.cmdpos >= 6) { checkcmd(); @@ -329,6 +329,7 @@ static void IOOUTCALL sasiio_o80(UINT po sasi_datawrite(dat); break; } + (void)port; } static void IOOUTCALL sasiio_o82(UINT port, REG8 dat) { @@ -336,13 +337,14 @@ static void IOOUTCALL sasiio_o82(UINT po UINT8 oldocr; oldocr = sasiio.ocr; - sasiio.ocr = (BYTE)dat; + sasiio.ocr = (UINT8)dat; if ((oldocr & SASIOCR_RST) && (!(dat & SASIOCR_RST))) { sasiio.phase = SASIPHASE_FREE; TRACEOUT(("SASI reset")); } sasidmac(); + (void)port; } static REG8 IOINPCALL sasiio_i80(UINT port) { @@ -379,12 +381,14 @@ static REG8 IOINPCALL sasiio_i80(UINT po } break; } + (void)port; return(ret); } static REG8 IOINPCALL sasiio_i82(UINT port) { REG8 ret; + SXSIDEV sxsi; if (sasiio.ocr & SASIOCR_NRDSW) { ret = sasiio.isrint; @@ -411,11 +415,26 @@ static REG8 IOINPCALL sasiio_i82(UINT po break; } } - return(ret); } else { - return((6 << 3) + 6); // 256/256/40MB/40MB + ret = 0; + sxsi = sxsi_getptr(0x00); // SASI-1 + if (sxsi) { + ret |= (sxsi->mediatype & 7) << 3; + } + else { + ret |= (7 << 3); + } + sxsi = sxsi_getptr(0x01); // SASI-2 + if (sxsi) { + ret |= (sxsi->mediatype & 7); + } + else { + ret |= 7; + } } + (void)port; + return(ret); } @@ -430,7 +449,8 @@ void sasiio_reset(void) { if (pccore.hddif & PCHDD_SASI) { 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; if (fh != FILEH_INVALID) { r = file_read(fh, mem + 0xd0000, 0x1000); @@ -455,6 +475,5 @@ void sasiio_bind(void) { iocore_attachinp(0x0082, sasiio_i82); } } - #endif