Diff for /np2/cbus/scsicmd.c between versions 1.2 and 1.5

version 1.2, 2004/01/22 04:59:48 version 1.5, 2005/02/07 14:46:08
Line 21  extern void iptrace_out(void); Line 21  extern void iptrace_out(void);
 #endif  #endif
   
   
 static const BYTE hdd_inquiry[0x20] = {  static const UINT8 hdd_inquiry[0x20] = {
                         0x00,0x00,0x02,0x02,0x1c,0x00,0x00,0x18,                          0x00,0x00,0x02,0x02,0x1c,0x00,0x00,0x18,
                         'N', 'E', 'C', 0x20,0x20,0x20,0x20,0x20,                          'N', 'E', 'C', 0x20,0x20,0x20,0x20,0x20,
                         'N', 'P', '2', '-', 'H', 'D', 'D', 0x20,                          'N', 'P', '2', '-', 'H', 'D', 'D', 0x20,
                         0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};                          0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
   
   
 static UINT scsicmd_datain(SXSIDEV sxsi, BYTE *cdb) {  static UINT scsicmd_datain(SXSIDEV sxsi, UINT8 *cdb) {
   
         UINT    length;          UINT    length;
   
Line 82  REG8 scsicmd_select(REG8 id) { Line 82  REG8 scsicmd_select(REG8 id) {
         return(0x42);                           // Timeout          return(0x42);                           // Timeout
 }  }
   
 REG8 scsicmd_transfer(REG8 id, BYTE *cdb) {  REG8 scsicmd_transfer(REG8 id, UINT8 *cdb) {
   
         SXSIDEV sxsi;          SXSIDEV sxsi;
         UINT    leng;          UINT    leng;
Line 165  static const UINT8 stat2ret[16] = { Line 165  static const UINT8 stat2ret[16] = {
   
 static REG8 bios1bc_seltrans(REG8 id) {  static REG8 bios1bc_seltrans(REG8 id) {
   
         BYTE    cdb[16];          UINT8   cdb[16];
         REG8    ret;          REG8    ret;
   
         i286_memstr_read(CPU_DS, CPU_DX, cdb, 16);          MEML_READSTR(CPU_DS, CPU_DX, cdb, 16);
         scsiio.reg[SCSICTR_TARGETLUN] = cdb[0];          scsiio.reg[SCSICTR_TARGETLUN] = cdb[0];
         if ((cdb[1] & 0x0c) == 0x08) {                  // OUT          if ((cdb[1] & 0x0c) == 0x08) {                  // OUT
                 i286_memstr_read(CPU_ES, CPU_BX, scsiio.data, CPU_CX);                  MEML_READSTR(CPU_ES, CPU_BX, scsiio.data, CPU_CX);
         }          }
         ret = scsicmd_transfer(id, cdb + 4);          ret = scsicmd_transfer(id, cdb + 4);
         if ((cdb[1] & 0x0c) == 0x04) {                  // IN          if ((cdb[1] & 0x0c) == 0x04) {                  // IN
                 i286_memstr_write(CPU_ES, CPU_BX, scsiio.data, CPU_CX);                  MEML_WRITESTR(CPU_ES, CPU_BX, scsiio.data, CPU_CX);
         }          }
         return(ret);          return(ret);
 }  }
Line 194  void scsicmd_bios(void) { Line 194  void scsicmd_bios(void) {
                 return;                  return;
         }          }
   
         flag = i286_membyte_read(CPU_SS, CPU_SP+4) & 0xbe;          flag = MEML_READ8(CPU_SS, CPU_SP+4) & 0xbe;
         ret = mem[0x0483];          ret = mem[0x0483];
         cmd = CPU_AH & 0x1f;          cmd = CPU_AH & 0x1f;
         dstid = CPU_AL & 7;          dstid = CPU_AL & 7;
Line 222  void scsicmd_bios(void) { Line 222  void scsicmd_bios(void) {
                         default:                          default:
                                 TRACEOUT(("cmd = %.2x", CPU_AH));                                  TRACEOUT(("cmd = %.2x", CPU_AH));
                                 SCSICMD_ERR                                  SCSICMD_ERR
                                   stat = 0x42;
                                 break;                                  break;
                 }                  }
                 ret = stat2ret[stat >> 4] + (stat & 0x0f);                  ret = stat2ret[stat >> 4] + (stat & 0x0f);
Line 235  void scsicmd_bios(void) { Line 236  void scsicmd_bios(void) {
                 else {                  else {
                         switch(cmd) {                          switch(cmd) {
                                 case 0x19:              // Data In                                  case 0x19:              // Data In
                                         i286_memstr_write(CPU_ES, CPU_BX, scsiio.data, CPU_CX);                                          MEML_WRITESTR(CPU_ES, CPU_BX, scsiio.data, CPU_CX);
                                         scsiio.phase = SCSIPH_STATUS;                                          scsiio.phase = SCSIPH_STATUS;
                                         stat = 0x8b;                                          stat = 0x8b;
                                         break;                                          break;
   
                                 case 0x1a:              // Transfer command                                  case 0x1a:              // Transfer command
                                         i286_memstr_read(CPU_ES, CPU_BX, scsiio.cmd, 12);                                          MEML_READSTR(CPU_ES, CPU_BX, scsiio.cmd, 12);
                                         stat = scsicmd_cmd(dstid);                                          stat = scsicmd_cmd(dstid);
                                         break;                                          break;
   
Line 258  void scsicmd_bios(void) { Line 259  void scsicmd_bios(void) {
                                 default:                                  default:
                                         TRACEOUT(("cmd = %.2x", CPU_AH));                                          TRACEOUT(("cmd = %.2x", CPU_AH));
                                         SCSICMD_ERR                                          SCSICMD_ERR
                                           stat = 0x42;
                                         break;                                          break;
                         }                          }
                         ret = stat2ret[stat >> 4] + (stat & 0x0f);                          ret = stat2ret[stat >> 4] + (stat & 0x0f);
Line 271  void scsicmd_bios(void) { Line 273  void scsicmd_bios(void) {
                 ret &= 0x7f;                  ret &= 0x7f;
         }          }
         CPU_AH = ret;          CPU_AH = ret;
         i286_membyte_write(CPU_SS, CPU_SP + 4, flag);          MEML_WRITE8(CPU_SS, CPU_SP + 4, flag);
 }  }
 #endif  #endif
   

Removed from v.1.2  
changed lines
  Added in v.1.5


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