|
|
| version 1.5, 2005/02/07 14:46:08 | version 1.8, 2005/05/20 13:59:46 |
|---|---|
| Line 75 REG8 scsicmd_select(REG8 id) { | Line 75 REG8 scsicmd_select(REG8 id) { |
| return(0x42); | return(0x42); |
| } | } |
| sxsi = sxsi_getptr((REG8)(0x20 + id)); | sxsi = sxsi_getptr((REG8)(0x20 + id)); |
| if ((sxsi) && (sxsi->type)) { | if ((sxsi) && (sxsi->flag & SXSIFLAG_READY)) { |
| scsiio.phase = SCSIPH_COMMAND; | scsiio.phase = SCSIPH_COMMAND; |
| return(0x8a); // Transfer CommandÍ×µá | return(0x8a); // Transfer CommandÍ×µá |
| } | } |
| Line 92 REG8 scsicmd_transfer(REG8 id, UINT8 *cd | Line 92 REG8 scsicmd_transfer(REG8 id, UINT8 *cd |
| } | } |
| sxsi = sxsi_getptr((REG8)(0x20 + id)); | sxsi = sxsi_getptr((REG8)(0x20 + id)); |
| if ((sxsi == NULL) || (sxsi->type == 0)) { | if ((sxsi == NULL) || (!(sxsi->flag & SXSIFLAG_READY))) { |
| return(0x42); | return(0x42); |
| } | } |
| Line 127 static REG8 scsicmd_cmd(REG8 id) { | Line 127 static REG8 scsicmd_cmd(REG8 id) { |
| return(0x42); | return(0x42); |
| } | } |
| sxsi = sxsi_getptr((REG8)(0x20 + id)); | sxsi = sxsi_getptr((REG8)(0x20 + id)); |
| if ((sxsi == NULL) || (sxsi->type == 0)) { | if ((sxsi == NULL) || (!(sxsi->flag & SXSIFLAG_READY))) { |
| return(0x42); | return(0x42); |
| } | } |
| switch(scsiio.cmd[0]) { | switch(scsiio.cmd[0]) { |
| Line 144 static REG8 scsicmd_cmd(REG8 id) { | Line 144 static REG8 scsicmd_cmd(REG8 id) { |
| return(0xff); | return(0xff); |
| } | } |
| BOOL scsicmd_send(void) { | BRESULT scsicmd_send(void) { |
| switch(scsiio.phase) { | switch(scsiio.phase) { |
| case SCSIPH_COMMAND: | case SCSIPH_COMMAND: |
| Line 168 static REG8 bios1bc_seltrans(REG8 id) { | Line 168 static REG8 bios1bc_seltrans(REG8 id) { |
| UINT8 cdb[16]; | UINT8 cdb[16]; |
| REG8 ret; | REG8 ret; |
| MEML_READSTR(CPU_DS, CPU_DX, cdb, 16); | MEMR_READS(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 |
| MEML_READSTR(CPU_ES, CPU_BX, scsiio.data, CPU_CX); | MEMR_READS(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 |
| MEML_WRITESTR(CPU_ES, CPU_BX, scsiio.data, CPU_CX); | MEMR_WRITES(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 = MEML_READ8(CPU_SS, CPU_SP+4) & 0xbe; | flag = MEMR_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 236 void scsicmd_bios(void) { | Line 236 void scsicmd_bios(void) { |
| else { | else { |
| switch(cmd) { | switch(cmd) { |
| case 0x19: // Data In | case 0x19: // Data In |
| MEML_WRITESTR(CPU_ES, CPU_BX, scsiio.data, CPU_CX); | MEMR_WRITES(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 |
| MEML_READSTR(CPU_ES, CPU_BX, scsiio.cmd, 12); | MEMR_READS(CPU_ES, CPU_BX, scsiio.cmd, 12); |
| stat = scsicmd_cmd(dstid); | stat = scsicmd_cmd(dstid); |
| break; | break; |
| Line 273 void scsicmd_bios(void) { | Line 273 void scsicmd_bios(void) { |
| ret &= 0x7f; | ret &= 0x7f; |
| } | } |
| CPU_AH = ret; | CPU_AH = ret; |
| MEML_WRITE8(CPU_SS, CPU_SP + 4, flag); | MEMR_WRITE8(CPU_SS, CPU_SP + 4, flag); |
| } | } |
| #endif | #endif |