|
|
| version 1.11, 2004/03/04 15:20:13 | version 1.16, 2005/02/07 14:46:07 |
|---|---|
| Line 49 static REG8 sxsibios_write(UINT type, SX | Line 49 static REG8 sxsibios_write(UINT type, SX |
| REG8 ret; | REG8 ret; |
| UINT size; | UINT size; |
| long pos; | long pos; |
| UINT bp; | UINT32 addr; |
| UINT r; | UINT r; |
| BYTE work[1024]; | UINT8 work[1024]; |
| size = CPU_BX; | size = CPU_BX; |
| if (!size) { | if (!size) { |
| Line 59 static REG8 sxsibios_write(UINT type, SX | Line 59 static REG8 sxsibios_write(UINT type, SX |
| } | } |
| ret = sxsi_pos(type, sxsi, &pos); | ret = sxsi_pos(type, sxsi, &pos); |
| if (!ret) { | if (!ret) { |
| bp = CPU_BP; | addr = (CPU_ES << 4) + CPU_BP; |
| while(size) { | while(size) { |
| r = min(size, sxsi->size); | r = min(size, sxsi->size); |
| i286_memstr_read(CPU_ES, bp, work, r); | MEML_READ(addr, work, r); |
| ret = sxsi_write(CPU_AL, pos, work, r); | ret = sxsi_write(CPU_AL, pos, work, r); |
| if (ret >= 0x20) { | if (ret >= 0x20) { |
| break; | break; |
| } | } |
| addr += r; | |
| size -= r; | size -= r; |
| bp += r; | |
| pos++; | pos++; |
| } | } |
| } | } |
| Line 80 static REG8 sxsibios_read(UINT type, SXS | Line 80 static REG8 sxsibios_read(UINT type, SXS |
| REG8 ret; | REG8 ret; |
| UINT size; | UINT size; |
| long pos; | long pos; |
| UINT bp; | UINT32 addr; |
| UINT r; | UINT r; |
| BYTE work[1024]; | UINT8 work[1024]; |
| size = CPU_BX; | size = CPU_BX; |
| if (!size) { | if (!size) { |
| Line 90 static REG8 sxsibios_read(UINT type, SXS | Line 90 static REG8 sxsibios_read(UINT type, SXS |
| } | } |
| ret = sxsi_pos(type, sxsi, &pos); | ret = sxsi_pos(type, sxsi, &pos); |
| if (!ret) { | if (!ret) { |
| bp = CPU_BP; | addr = (CPU_ES << 4) + CPU_BP; |
| while(size) { | while(size) { |
| r = min(size, sxsi->size); | r = min(size, sxsi->size); |
| ret = sxsi_read(CPU_AL, pos, work, r); | ret = sxsi_read(CPU_AL, pos, work, r); |
| if (ret >= 0x20) { | if (ret >= 0x20) { |
| break; | break; |
| } | } |
| i286_memstr_write(CPU_ES, bp, work, r); | MEML_WRITE(addr, work, r); |
| addr += r; | |
| size -= r; | size -= r; |
| bp += r; | |
| pos++; | pos++; |
| } | } |
| } | } |
| Line 249 REG8 sasibios_operate(void) { | Line 249 REG8 sasibios_operate(void) { |
| static void scsibios_set(REG8 drv, REG8 sectors, REG8 surfaces, | static void scsibios_set(REG8 drv, REG8 sectors, REG8 surfaces, |
| REG16 cylinders, REG16 size, BOOL hwsec) { | REG16 cylinders, REG16 size, BOOL hwsec) { |
| BYTE *scsiinf; | UINT8 *scsiinf; |
| UINT16 inf; | UINT16 inf; |
| scsiinf = mem + 0x00460 + ((drv & 7) * 4); | scsiinf = mem + 0x00460 + ((drv & 7) * 4); |
| Line 295 static REG8 scsibios_init(UINT type, SXS | Line 295 static REG8 scsibios_init(UINT type, SXS |
| static REG8 scsibios_sense(UINT type, SXSIDEV sxsi) { | static REG8 scsibios_sense(UINT type, SXSIDEV sxsi) { |
| BYTE *scsiinf; | UINT8 *scsiinf; |
| scsiinf = mem + 0x00460 + ((CPU_AL & 7) * 4); | scsiinf = mem + 0x00460 + ((CPU_AL & 7) * 4); |
| if (CPU_AH == 0x24) { | if (CPU_AH == 0x24) { |
| Line 374 REG8 scsibios_operate(void) { | Line 374 REG8 scsibios_operate(void) { |
| // ---- np2sysp | // ---- np2sysp |
| #if defined(SUPPORT_SASI) || defined(SUPPORT_SCSI) | #if defined(SUPPORT_IDEIO) || defined(SUPPORT_SASI) || defined(SUPPORT_SCSI) |
| typedef struct { | typedef struct { |
| UINT16 ax; | UINT16 ax; |
| UINT16 cx; | UINT16 cx; |
| Line 417 static void reg_pop(const REGBAK *r) { | Line 417 static void reg_pop(const REGBAK *r) { |
| } | } |
| typedef struct { | typedef struct { |
| BYTE r_ax[2]; | UINT8 r_ax[2]; |
| BYTE r_bx[2]; | UINT8 r_bx[2]; |
| BYTE r_cx[2]; | UINT8 r_cx[2]; |
| BYTE r_dx[2]; | UINT8 r_dx[2]; |
| BYTE r_bp[2]; | UINT8 r_bp[2]; |
| BYTE r_es[2]; | UINT8 r_es[2]; |
| BYTE r_di[2]; | UINT8 r_di[2]; |
| BYTE r_si[2]; | UINT8 r_si[2]; |
| BYTE r_ds[2]; | UINT8 r_ds[2]; |
| } B1BREG; | } B1BREG; |
| static void reg_load(UINT seg, UINT off) { | static void reg_load(UINT seg, UINT off) { |
| B1BREG r; | B1BREG r; |
| i286_memstr_read(seg, off, &r, sizeof(r)); | MEML_READSTR(seg, off, &r, sizeof(r)); |
| CPU_FLAGL = i286_membyte_read(seg, off + 0x16); | CPU_FLAGL = MEML_READ8(seg, off + 0x16); |
| CPU_AX = LOADINTELWORD(r.r_ax); | CPU_AX = LOADINTELWORD(r.r_ax); |
| CPU_BX = LOADINTELWORD(r.r_bx); | CPU_BX = LOADINTELWORD(r.r_bx); |
| CPU_CX = LOADINTELWORD(r.r_cx); | CPU_CX = LOADINTELWORD(r.r_cx); |
| Line 458 static void reg_store(UINT seg, UINT off | Line 458 static void reg_store(UINT seg, UINT off |
| STOREINTELWORD(r.r_di, CPU_DI); | STOREINTELWORD(r.r_di, CPU_DI); |
| STOREINTELWORD(r.r_si, CPU_SI); | STOREINTELWORD(r.r_si, CPU_SI); |
| STOREINTELWORD(r.r_ds, CPU_DS); | STOREINTELWORD(r.r_ds, CPU_DS); |
| i286_memstr_write(seg, off, &r, sizeof(r)); | MEML_WRITESTR(seg, off, &r, sizeof(r)); |
| i286_membyte_write(seg, off + 0x16, CPU_FLAGL); | MEML_WRITE8(seg, off + 0x16, CPU_FLAGL); |
| } | } |
| #endif | #endif |
| #if defined(SUPPORT_SASI) | #if defined(SUPPORT_IDEIO) || defined(SUPPORT_SASI) |
| void np2sysp_sasi(const void *arg1, long arg2) { | void np2sysp_sasi(const void *arg1, long arg2) { |
| UINT seg; | UINT seg; |