|
|
| version 1.1, 2004/01/22 01:10:03 | version 1.4, 2004/01/23 12:04:08 |
|---|---|
| Line 130 static REG8 sxsibios_format(UINT type, S | Line 130 static REG8 sxsibios_format(UINT type, S |
| static REG8 sxsibios_succeed(UINT type, SXSIDEV sxsi) { | static REG8 sxsibios_succeed(UINT type, SXSIDEV sxsi) { |
| (void)type; | |
| (void)sxsi; | (void)sxsi; |
| return(0x00); | return(0x00); |
| } | } |
| Line 200 static const SXSIFUNC sasifunc[16] = { | Line 201 static const SXSIFUNC sasifunc[16] = { |
| REG8 sasibios_operate(void) { | REG8 sasibios_operate(void) { |
| SXSIDEV sxsi; | |
| UINT type; | UINT type; |
| SXSIDEV sxsi; | |
| sxsi = sxsi_getptr(CPU_AL); | if (pccore.hddif & PCHDD_IDE) { |
| if (sxsi == NULL) { | type = SXSIBIOS_IDE; |
| return(0x60); | |
| } | } |
| type = SXSIBIOS_IDE; | |
| #if defined(SUPPORT_SASI) | #if defined(SUPPORT_SASI) |
| if (pccore.hddif & PCHDD_SASI) { | else if (pccore.hddif & PCHDD_SASI) { |
| type = SXSIBIOS_SASI; | type = SXSIBIOS_SASI; |
| } | } |
| #endif | #endif |
| else { | |
| return(0x60); | |
| } | |
| sxsi = sxsi_getptr(CPU_AL); | |
| if (sxsi == NULL) { | |
| return(0x60); | |
| } | |
| return((*sasifunc[CPU_AH & 0x0f])(type, sxsi)); | return((*sasifunc[CPU_AH & 0x0f])(type, sxsi)); |
| } | } |
| Line 224 static REG8 scsibios_init(UINT type, SXS | Line 230 static REG8 scsibios_init(UINT type, SXS |
| UINT8 i; | UINT8 i; |
| UINT8 bit; | UINT8 bit; |
| UINT16 w; | UINT32 dat; |
| mem[MEMB_DISK_EQUIPS] = 0; | mem[MEMB_DISK_EQUIPS] = 0; |
| ZeroMemory(&mem[0x00460], 0x20); | ZeroMemory(&mem[0x00460], 0x20); |
| Line 232 static REG8 scsibios_init(UINT type, SXS | Line 238 static REG8 scsibios_init(UINT type, SXS |
| sxsi = sxsi_getptr((REG8)(0x20 + i)); | sxsi = sxsi_getptr((REG8)(0x20 + i)); |
| if ((sxsi) && (sxsi->fname[0])) { | if ((sxsi) && (sxsi->fname[0])) { |
| mem[MEMB_DISK_EQUIPS] |= bit; | mem[MEMB_DISK_EQUIPS] |= bit; |
| mem[0x00460+i*4] = sxsi->sectors; | dat = sxsi->sectors; |
| mem[0x00461+i*4] = sxsi->surfaces; | dat |= (sxsi->surfaces << 8); |
| dat |= sxsi->cylinders & 0xf000; | |
| dat |= (sxsi->cylinders & 0xfff) << 16; | |
| switch(sxsi->size) { | switch(sxsi->size) { |
| case 256: | case 256: |
| w = 0 << 12; | // dat |= 0 << (12 + 16); |
| break; | break; |
| case 512: | case 512: |
| w = 1 << 12; | dat |= 1 << (12 + 16); |
| break; | break; |
| default: | default: |
| w = 2 << 12; | dat |= 2 << (12 + 16); |
| break; | break; |
| } | } |
| w |= 0xc000; | dat |= 0xc0000000; |
| w |= sxsi->cylinders; | SETBIOSMEM32(0x00460+i*4, dat); |
| SETBIOSMEM16(0x00462+i*4, w); | |
| } | } |
| } | } |
| (void)type; | (void)type; |
| Line 267 static REG8 scsibios_sense(UINT type, SX | Line 274 static REG8 scsibios_sense(UINT type, SX |
| CPU_DH = sxsi->surfaces; | CPU_DH = sxsi->surfaces; |
| CPU_DL = sxsi->sectors; | CPU_DL = sxsi->sectors; |
| } | } |
| (void)type; | |
| return(0x00); | return(0x00); |
| } | } |
| Line 309 REG8 scsibios_operate(void) { | Line 317 REG8 scsibios_operate(void) { |
| SXSIDEV sxsi; | SXSIDEV sxsi; |
| if (!(pccore.hddif & PCHDD_SCSI)) { | |
| return(0x60); | |
| } | |
| sxsi = sxsi_getptr(CPU_AL); | sxsi = sxsi_getptr(CPU_AL); |
| if (sxsi == NULL) { | if (sxsi == NULL) { |
| return(0x60); | return(0x60); |