| version 1.2, 2004/01/22 01:54:38 | version 1.7, 2005/02/07 14:46:08 | 
| 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 329  static void IOOUTCALL sasiio_o80(UINT po | Line 329  static void IOOUTCALL sasiio_o80(UINT po | 
 | sasi_datawrite(dat); | sasi_datawrite(dat); | 
 | break; | break; | 
 | } | } | 
 |  | (void)port; | 
 | } | } | 
 |  |  | 
 | static void IOOUTCALL sasiio_o82(UINT port, REG8 dat) { | static void IOOUTCALL sasiio_o82(UINT port, REG8 dat) { | 
| Line 336  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; | 
 | TRACEOUT(("SASI reset")); | TRACEOUT(("SASI reset")); | 
 | } | } | 
 | sasidmac(); | sasidmac(); | 
 |  | (void)port; | 
 | } | } | 
 |  |  | 
 | static REG8 IOINPCALL sasiio_i80(UINT port) { | static REG8 IOINPCALL sasiio_i80(UINT port) { | 
| Line 379  static REG8 IOINPCALL sasiio_i80(UINT po | Line 381  static REG8 IOINPCALL sasiio_i80(UINT po | 
 | } | } | 
 | break; | break; | 
 | } | } | 
 |  | (void)port; | 
 | return(ret); | return(ret); | 
 | } | } | 
 |  |  | 
 | static REG8 IOINPCALL sasiio_i82(UINT port) { | static REG8 IOINPCALL sasiio_i82(UINT port) { | 
 |  |  | 
 | REG8    ret; | REG8    ret; | 
 |  | SXSIDEV sxsi; | 
 |  |  | 
 | if (sasiio.ocr & SASIOCR_NRDSW) { | if (sasiio.ocr & SASIOCR_NRDSW) { | 
 | ret = sasiio.isrint; | ret = sasiio.isrint; | 
| Line 411  static REG8 IOINPCALL sasiio_i82(UINT po | Line 415  static REG8 IOINPCALL sasiio_i82(UINT po | 
 | break; | break; | 
 | } | } | 
 | } | } | 
 | return(ret); |  | 
 | } | } | 
 | else { | 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); | 
 | } | } | 
 |  |  | 
 |  |  | 
| Line 430  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); | 
 |  |  | 
 |  | CPU_RAM_D000 &= ~(1 << 0); | 
 | fh = file_open_rb_c("sasi.rom"); | fh = file_open_rb_c("sasi.rom"); | 
 | r = 0; | r = 0; | 
 | if (fh != FILEH_INVALID) { | if (fh != FILEH_INVALID) { | 
| Line 455  void sasiio_bind(void) { | Line 475  void sasiio_bind(void) { | 
 | iocore_attachinp(0x0082, sasiio_i82); | iocore_attachinp(0x0082, sasiio_i82); | 
 | } | } | 
 | } | } | 
 |  |  | 
 | #endif | #endif | 
 |  |  |