--- np2/cbus/sasiio.c 2004/01/22 04:59:48 1.3 +++ np2/cbus/sasiio.c 2004/03/23 04:45:03 1.6 @@ -388,6 +388,7 @@ static REG8 IOINPCALL sasiio_i80(UINT po static REG8 IOINPCALL sasiio_i82(UINT port) { REG8 ret; + SXSIDEV sxsi; if (sasiio.ocr & SASIOCR_NRDSW) { ret = sasiio.isrint; @@ -414,12 +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) && ((sxsi->type & SXSITYPE_IFMASK) == SXSITYPE_SASI)) { + ret |= (sxsi->type >> (8 - 3)) & 0x38; + } + else { + ret |= 0x38; + } + sxsi = sxsi_getptr(0x01); // SASI-2 + if ((sxsi) && ((sxsi->type & SXSITYPE_IFMASK) == SXSITYPE_SASI)) { + ret |= (sxsi->type >> 8) & 7; + } + else { + ret |= 7; + } } (void)port; + return(ret); } @@ -434,6 +449,7 @@ void sasiio_reset(void) { if (pccore.hddif & PCHDD_SASI) { dmac_attach(DMADEV_SASI, SASI_DMACH); + CPU_RAM_D000 &= ~(1 << 0); fh = file_open_rb_c("sasi.rom"); r = 0; if (fh != FILEH_INVALID) { @@ -459,6 +475,5 @@ void sasiio_bind(void) { iocore_attachinp(0x0082, sasiio_i82); } } - #endif