Diff for /np2/cbus/sasiio.c between versions 1.1 and 1.9

version 1.1, 2004/01/22 01:10:03 version 1.9, 2005/02/12 12:40:38
Line 6 Line 6
 #include        "cpucore.h"  #include        "cpucore.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
 #include        "sxsi.h"  
 #include        "sasiio.h"  #include        "sasiio.h"
   #include        "sxsi.h"
 #include        "sasibios.res"  #include        "sasibios.res"
   
   
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 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) {
   
         REG8    ret;          REG8    ret;
   
           ret = 0;
         switch(sasiio.phase) {          switch(sasiio.phase) {
                 case SASIPHASE_READ:                  case SASIPHASE_READ:
                         ret = sasi_dataread();                          ret = sasi_dataread();
Line 378  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 410  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 429  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;
                 if (fh != FILEH_INVALID) {                  if (fh != FILEH_INVALID) {
                         r = file_read(fh, mem + 0xd0000, 0x1000);                          r = file_read(fh, mem + 0xd0000, 0x1000);
                         file_close(fh);                          file_close(fh);
Line 453  void sasiio_bind(void) { Line 475  void sasiio_bind(void) {
                 iocore_attachinp(0x0082, sasiio_i82);                  iocore_attachinp(0x0082, sasiio_i82);
         }          }
 }  }
   
 #endif  #endif
   

Removed from v.1.1  
changed lines
  Added in v.1.9


RetroPC.NET-CVS <cvs@retropc.net>