| version 1.10, 2004/01/22 04:59:48 | version 1.14, 2004/03/07 23:04:50 | 
| Line 68  static void fetch_if4dos(void) { | Line 68  static void fetch_if4dos(void) { | 
 |  |  | 
 | off = i286_memoryread_w(IF4DOSPTR_ADDR); | off = i286_memoryread_w(IF4DOSPTR_ADDR); | 
 | seg = i286_memoryread_w(IF4DOSPTR_ADDR + 2); | seg = i286_memoryread_w(IF4DOSPTR_ADDR + 2); | 
| i286_memstr_read(seg, off, &if4dos, sizeof(if4dos)); | MEML_READSTR(seg, off, &if4dos, sizeof(if4dos)); | 
 | hostdrv.stat.drive_no = if4dos.drive_no; | hostdrv.stat.drive_no = if4dos.drive_no; | 
 | hostdrv.stat.dosver_major = if4dos.dosver_major; | hostdrv.stat.dosver_major = if4dos.dosver_major; | 
 | hostdrv.stat.dosver_minor = if4dos.dosver_minor; | hostdrv.stat.dosver_minor = if4dos.dosver_minor; | 
| Line 83  static void fetch_if4dos(void) { | Line 83  static void fetch_if4dos(void) { | 
 |  |  | 
 | static void fetch_intr_regs(INTRST is) { | static void fetch_intr_regs(INTRST is) { | 
 |  |  | 
| i286_memstr_read(CPU_SS, CPU_BP, &is->r, sizeof(is->r)); | MEML_READSTR(CPU_SS, CPU_BP, &is->r, sizeof(is->r)); | 
 | } | } | 
 |  |  | 
 | static void store_intr_regs(INTRST is) { | static void store_intr_regs(INTRST is) { | 
 |  |  | 
| i286_memstr_write(CPU_SS, CPU_BP, &is->r, sizeof(is->r)); | MEML_WRITESTR(CPU_SS, CPU_BP, &is->r, sizeof(is->r)); | 
 | } | } | 
 |  |  | 
 |  |  | 
| Line 98  static void fetch_sda_currcds(SDACDS sc) | Line 98  static void fetch_sda_currcds(SDACDS sc) | 
 | REG16   seg; | REG16   seg; | 
 |  |  | 
 | if (hostdrv.stat.dosver_major == 3) { | if (hostdrv.stat.dosver_major == 3) { | 
| i286_memstr_read(hostdrv.stat.sda_seg, hostdrv.stat.sda_off, | MEML_READSTR(hostdrv.stat.sda_seg, hostdrv.stat.sda_off, | 
 | &sc->ver3.sda, sizeof(sc->ver3.sda)); | &sc->ver3.sda, sizeof(sc->ver3.sda)); | 
 | off = LOADINTELWORD(sc->ver3.sda.cdsptr.off); | off = LOADINTELWORD(sc->ver3.sda.cdsptr.off); | 
 | seg = LOADINTELWORD(sc->ver3.sda.cdsptr.seg); | seg = LOADINTELWORD(sc->ver3.sda.cdsptr.seg); | 
| i286_memstr_read(seg, off, &sc->ver3.cds, sizeof(sc->ver3.cds)); | MEML_READSTR(seg, off, &sc->ver3.cds, sizeof(sc->ver3.cds)); | 
 | } | } | 
 | else { | else { | 
| i286_memstr_read(hostdrv.stat.sda_seg, hostdrv.stat.sda_off, | MEML_READSTR(hostdrv.stat.sda_seg, hostdrv.stat.sda_off, | 
 | &sc->ver4.sda, sizeof(sc->ver4.sda)); | &sc->ver4.sda, sizeof(sc->ver4.sda)); | 
 | off = LOADINTELWORD(sc->ver4.sda.cdsptr.off); | off = LOADINTELWORD(sc->ver4.sda.cdsptr.off); | 
 | seg = LOADINTELWORD(sc->ver4.sda.cdsptr.seg); | seg = LOADINTELWORD(sc->ver4.sda.cdsptr.seg); | 
| i286_memstr_read(seg, off, &sc->ver4.cds, sizeof(sc->ver4.cds)); | MEML_READSTR(seg, off, &sc->ver4.cds, sizeof(sc->ver4.cds)); | 
 | } | } | 
 | } | } | 
 |  |  | 
| Line 119  static void store_sda_currcds(SDACDS sc) | Line 119  static void store_sda_currcds(SDACDS sc) | 
 | REG16   seg; | REG16   seg; | 
 |  |  | 
 | if (hostdrv.stat.dosver_major == 3) { | if (hostdrv.stat.dosver_major == 3) { | 
| i286_memstr_write(hostdrv.stat.sda_seg, hostdrv.stat.sda_off, | MEML_WRITESTR(hostdrv.stat.sda_seg, hostdrv.stat.sda_off, | 
 | &sc->ver3.sda, sizeof(sc->ver3.sda)); | &sc->ver3.sda, sizeof(sc->ver3.sda)); | 
 | off = LOADINTELWORD(sc->ver3.sda.cdsptr.off); | off = LOADINTELWORD(sc->ver3.sda.cdsptr.off); | 
 | seg = LOADINTELWORD(sc->ver3.sda.cdsptr.seg); | seg = LOADINTELWORD(sc->ver3.sda.cdsptr.seg); | 
| i286_memstr_write(seg, off, &sc->ver3.cds, sizeof(sc->ver3.cds)); | MEML_WRITESTR(seg, off, &sc->ver3.cds, sizeof(sc->ver3.cds)); | 
 | } | } | 
 | else { | else { | 
| i286_memstr_write(hostdrv.stat.sda_seg, hostdrv.stat.sda_off, | MEML_WRITESTR(hostdrv.stat.sda_seg, hostdrv.stat.sda_off, | 
 | &sc->ver4.sda, sizeof(sc->ver4.sda)); | &sc->ver4.sda, sizeof(sc->ver4.sda)); | 
 | off = LOADINTELWORD(sc->ver4.sda.cdsptr.off); | off = LOADINTELWORD(sc->ver4.sda.cdsptr.off); | 
 | seg = LOADINTELWORD(sc->ver4.sda.cdsptr.seg); | seg = LOADINTELWORD(sc->ver4.sda.cdsptr.seg); | 
| i286_memstr_write(seg, off, &sc->ver4.cds, sizeof(sc->ver4.cds)); | MEML_WRITESTR(seg, off, &sc->ver4.cds, sizeof(sc->ver4.cds)); | 
 | } | } | 
 | } | } | 
 |  |  | 
| Line 142  static void fetch_sft(INTRST is, SFTREC | Line 142  static void fetch_sft(INTRST is, SFTREC | 
 |  |  | 
 | off = LOADINTELWORD(is->r.w.di); | off = LOADINTELWORD(is->r.w.di); | 
 | seg = LOADINTELWORD(is->r.w.es); | seg = LOADINTELWORD(is->r.w.es); | 
| i286_memstr_read(seg, off, sft, sizeof(_SFTREC)); | MEML_READSTR(seg, off, sft, sizeof(_SFTREC)); | 
 | } | } | 
 |  |  | 
 | static void store_sft(INTRST is, SFTREC sft) { | static void store_sft(INTRST is, SFTREC sft) { | 
| Line 152  static void store_sft(INTRST is, SFTREC | Line 152  static void store_sft(INTRST is, SFTREC | 
 |  |  | 
 | off = LOADINTELWORD(is->r.w.di); | off = LOADINTELWORD(is->r.w.di); | 
 | seg = LOADINTELWORD(is->r.w.es); | seg = LOADINTELWORD(is->r.w.es); | 
| i286_memstr_write(seg, off, sft, sizeof(_SFTREC)); | MEML_WRITESTR(seg, off, sft, sizeof(_SFTREC)); | 
 | } | } | 
 |  |  | 
 |  |  | 
| Line 359  static BOOL read_data(UINT num, UINT32 p | Line 359  static BOOL read_data(UINT num, UINT32 p | 
 | if (file_read(fh, work, r) != r) { | if (file_read(fh, work, r) != r) { | 
 | return(FAILURE); | return(FAILURE); | 
 | } | } | 
| i286_memstr_write(seg, off, work, r); | MEML_WRITESTR(seg, off, work, r); | 
 | off += r; | off += r; | 
 | size -= r; | size -= r; | 
 | } | } | 
| Line 387  static BOOL write_data(UINT num, UINT32 | Line 387  static BOOL write_data(UINT num, UINT32 | 
 | else { | else { | 
 | do { | do { | 
 | r = min(size, sizeof(work)); | r = min(size, sizeof(work)); | 
| i286_memstr_read(seg, off, work, r); | MEML_READSTR(seg, off, work, r); | 
 | if (file_write(fh, work, r) != r) { | if (file_write(fh, work, r) != r) { | 
 | return(FAILURE); | return(FAILURE); | 
 | } | } | 
| Line 697  static void set_fileattr(INTRST intrst) | Line 697  static void set_fileattr(INTRST intrst) | 
 | fail(intrst, ERR_ACCESSDENIED); | fail(intrst, ERR_ACCESSDENIED); | 
 | return; | return; | 
 | } | } | 
| attr = i286_memword_read(CPU_SS, CPU_BP + sizeof(IF4INTR)) & 0x37; | attr = MEML_READ16(CPU_SS, CPU_BP + sizeof(IF4INTR)) & 0x37; | 
 |  |  | 
 | // 成功したことにする... | // 成功したことにする... | 
 | succeed(intrst); | succeed(intrst); | 
| Line 970  static void do_redir(INTRST intrst) { | Line 970  static void do_redir(INTRST intrst) { | 
 | if (pathishostdrv(intrst, &sc) != SUCCESS) { | if (pathishostdrv(intrst, &sc) != SUCCESS) { | 
 | return; | return; | 
 | } | } | 
| mode = i286_memword_read(CPU_SS, CPU_BP + sizeof(IF4INTR)); | mode = MEML_READ16(CPU_SS, CPU_BP + sizeof(IF4INTR)); | 
 | TRACEOUT(("do_redir: %.4x", mode)); | TRACEOUT(("do_redir: %.4x", mode)); | 
 | switch(mode) { | switch(mode) { | 
 | case 0x5f02: | case 0x5f02: | 
| Line 979  static void do_redir(INTRST intrst) { | Line 979  static void do_redir(INTRST intrst) { | 
 | fail(intrst, 0x12); | fail(intrst, 0x12); | 
 | return; | return; | 
 | } | } | 
| i286_memword_write(CPU_DS, CPU_BX + 2, 4); | MEML_WRITE16(CPU_DS, CPU_BX + 2, 4); | 
| i286_memword_write(CPU_DS, CPU_BX + 4, 1); | MEML_WRITE16(CPU_DS, CPU_BX + 4, 1); | 
| //                      STOREINTELWORD(intrst->r.w.bx, 4); |  | 
| //                      STOREINTELWORD(intrst->r.w.cx, 1); |  | 
 | tmp[0] = (char)('A' + hostdrv.stat.drive_no); | tmp[0] = (char)('A' + hostdrv.stat.drive_no); | 
 | tmp[1] = ':'; | tmp[1] = ':'; | 
 | tmp[2] = '\0'; | tmp[2] = '\0'; | 
| i286_memstr_write(LOADINTELWORD(intrst->r.w.ds), | MEML_WRITESTR(LOADINTELWORD(intrst->r.w.ds), | 
 | LOADINTELWORD(intrst->r.w.si), tmp, 3); | LOADINTELWORD(intrst->r.w.si), tmp, 3); | 
| i286_memstr_write(LOADINTELWORD(intrst->r.w.es), | MEML_WRITESTR(LOADINTELWORD(intrst->r.w.es), | 
 | LOADINTELWORD(intrst->r.w.di), | LOADINTELWORD(intrst->r.w.di), | 
 | ROOTPATH, ROOTPATH_SIZE + 1); | ROOTPATH, ROOTPATH_SIZE + 1); | 
 | break; | break; | 
| Line 1262  void hostdrv_mount(const void *arg1, lon | Line 1260  void hostdrv_mount(const void *arg1, lon | 
 |  |  | 
 | if ((np2cfg.hdrvroot[0] == '\0') || (hostdrv.stat.is_mount)) { | if ((np2cfg.hdrvroot[0] == '\0') || (hostdrv.stat.is_mount)) { | 
 | np2sysp_outstr("ng", 0); | np2sysp_outstr("ng", 0); | 
 |  | return; | 
 | } | } | 
 | hostdrv.stat.is_mount = TRUE; | hostdrv.stat.is_mount = TRUE; | 
 | fetch_if4dos(); | fetch_if4dos(); | 
| Line 1327  static BOOL fhdl_wr(void *vpItem, void * | Line 1326  static BOOL fhdl_wr(void *vpItem, void * | 
 | len = strlen(p); | len = strlen(p); | 
 | statflag_write((STFLAGH)vpArg, &len, sizeof(len)); | statflag_write((STFLAGH)vpArg, &len, sizeof(len)); | 
 | if (len) { | if (len) { | 
| if (len < sizeof(MAX_PATH)) { | if (len < MAX_PATH) { | 
| ZeroMemory(p + len, sizeof(MAX_PATH) - len); | ZeroMemory(p + len, MAX_PATH - len); | 
 | } | } | 
 | statflag_write((STFLAGH)vpArg, vpItem, sizeof(_HDRVFILE)); | statflag_write((STFLAGH)vpArg, vpItem, sizeof(_HDRVFILE)); | 
 | } | } | 
| Line 1342  static BOOL flist_wr(void *vpItem, void | Line 1341  static BOOL flist_wr(void *vpItem, void | 
 |  |  | 
 | p = ((HDRVLST)vpItem)->realname; | p = ((HDRVLST)vpItem)->realname; | 
 | len = strlen(p); | len = strlen(p); | 
| if (len < sizeof(MAX_PATH)) { | if (len < MAX_PATH) { | 
| ZeroMemory(p + len, sizeof(MAX_PATH) - len); | ZeroMemory(p + len, MAX_PATH - len); | 
 | } | } | 
 | statflag_write((STFLAGH)vpArg, vpItem, sizeof(_HDRVLST)); | statflag_write((STFLAGH)vpArg, vpItem, sizeof(_HDRVLST)); | 
 | return(FALSE); | return(FALSE); |