--- np2/generic/hostdrv.c 2004/01/22 01:10:04 1.9 +++ np2/generic/hostdrv.c 2005/05/13 06:19:48 1.17 @@ -66,9 +66,9 @@ static void fetch_if4dos(void) { REG16 seg; IF4DOS if4dos; - off = i286_memoryread_w(IF4DOSPTR_ADDR); - seg = i286_memoryread_w(IF4DOSPTR_ADDR + 2); - i286_memstr_read(seg, off, &if4dos, sizeof(if4dos)); + off = MEML_READ16(IF4DOSPTR_SEG, IF4DOSPTR_OFF + 0); + seg = MEML_READ16(IF4DOSPTR_SEG, IF4DOSPTR_OFF + 2); + MEML_READSTR(seg, off, &if4dos, sizeof(if4dos)); hostdrv.stat.drive_no = if4dos.drive_no; hostdrv.stat.dosver_major = if4dos.dosver_major; hostdrv.stat.dosver_minor = if4dos.dosver_minor; @@ -83,12 +83,12 @@ static void fetch_if4dos(void) { 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) { - i286_memstr_write(CPU_SS, CPU_BP, &is->r, sizeof(is->r)); + MEML_WRITESTR(CPU_SS, CPU_BP, &is->r, sizeof(is->r)); } @@ -98,18 +98,18 @@ static void fetch_sda_currcds(SDACDS sc) REG16 seg; 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)); off = LOADINTELWORD(sc->ver3.sda.cdsptr.off); 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 { - 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)); off = LOADINTELWORD(sc->ver4.sda.cdsptr.off); 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)); } } @@ -119,18 +119,18 @@ static void store_sda_currcds(SDACDS sc) REG16 seg; 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)); off = LOADINTELWORD(sc->ver3.sda.cdsptr.off); 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 { - 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)); off = LOADINTELWORD(sc->ver4.sda.cdsptr.off); 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)); } } @@ -142,7 +142,7 @@ static void fetch_sft(INTRST is, SFTREC off = LOADINTELWORD(is->r.w.di); 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) { @@ -152,7 +152,7 @@ static void store_sft(INTRST is, SFTREC off = LOADINTELWORD(is->r.w.di); seg = LOADINTELWORD(is->r.w.es); - i286_memstr_write(seg, off, sft, sizeof(_SFTREC)); + MEML_WRITESTR(seg, off, sft, sizeof(_SFTREC)); } @@ -242,7 +242,7 @@ static void init_sft(SFTREC sft) { else { sft->open_mode[0] &= 0x0f; } - sft->dev_info_word[0] = (BYTE)(0x40 | hostdrv.stat.drive_no); + sft->dev_info_word[0] = (UINT8)(0x40 | hostdrv.stat.drive_no); sft->dev_info_word[1] = 0x80; STOREINTELDWORD(sft->dev_drvr_ptr, 0); STOREINTELDWORD(sft->file_pos, 0); @@ -343,7 +343,7 @@ static BOOL read_data(UINT num, UINT32 p HDRVFILE hdf; FILEH fh; - BYTE work[1024]; + UINT8 work[1024]; UINT r; hdf = (HDRVFILE)listarray_getitem(hostdrv.fhdl, num); @@ -359,7 +359,7 @@ static BOOL read_data(UINT num, UINT32 p if (file_read(fh, work, r) != r) { return(FAILURE); } - i286_memstr_write(seg, off, work, r); + MEML_WRITESTR(seg, off, work, r); off += r; size -= r; } @@ -370,7 +370,7 @@ static BOOL write_data(UINT num, UINT32 HDRVFILE hdf; FILEH fh; - BYTE work[1024]; + UINT8 work[1024]; UINT r; hdf = (HDRVFILE)listarray_getitem(hostdrv.fhdl, num); @@ -387,7 +387,7 @@ static BOOL write_data(UINT num, UINT32 else { do { 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) { return(FAILURE); } @@ -697,7 +697,7 @@ static void set_fileattr(INTRST intrst) fail(intrst, ERR_ACCESSDENIED); return; } - attr = i286_memword_read(CPU_SS, CPU_BP + sizeof(IF4INTR)) & 0x37; + attr = MEML_READ16(CPU_SS, CPU_BP + sizeof(IF4INTR)) & 0x37; // 成功したことにする... succeed(intrst); @@ -970,7 +970,7 @@ static void do_redir(INTRST intrst) { if (pathishostdrv(intrst, &sc) != SUCCESS) { 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)); switch(mode) { case 0x5f02: @@ -979,16 +979,14 @@ static void do_redir(INTRST intrst) { fail(intrst, 0x12); return; } - i286_memword_write(CPU_DS, CPU_BX + 2, 4); - i286_memword_write(CPU_DS, CPU_BX + 4, 1); -// STOREINTELWORD(intrst->r.w.bx, 4); -// STOREINTELWORD(intrst->r.w.cx, 1); + MEML_WRITE16(CPU_DS, CPU_BX + 2, 4); + MEML_WRITE16(CPU_DS, CPU_BX + 4, 1); tmp[0] = (char)('A' + hostdrv.stat.drive_no); tmp[1] = ':'; 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); - i286_memstr_write(LOADINTELWORD(intrst->r.w.es), + MEML_WRITESTR(LOADINTELWORD(intrst->r.w.es), LOADINTELWORD(intrst->r.w.di), ROOTPATH, ROOTPATH_SIZE + 1); break; @@ -1262,6 +1260,7 @@ void hostdrv_mount(const void *arg1, lon if ((np2cfg.hdrvroot[0] == '\0') || (hostdrv.stat.is_mount)) { np2sysp_outstr("ng", 0); + return; } hostdrv.stat.is_mount = TRUE; fetch_if4dos(); @@ -1295,7 +1294,7 @@ void hostdrv_intr(const void *arg1, long TRACEOUT(("hostdrv: AL=%.2x", intrst.r.b.al)); - if ((intrst.r.b.al >= sizeof(intr_func) / sizeof(HDINTRFN)) || + if ((intrst.r.b.al >= NELEMENTS(intr_func)) || (intr_func[intrst.r.b.al] == NULL)) { return; } @@ -1320,15 +1319,15 @@ typedef struct { static BOOL fhdl_wr(void *vpItem, void *vpArg) { - char *p; + OEMCHAR *p; UINT len; p = ((HDRVFILE)vpItem)->path; - len = strlen(p); + len = OEMSTRLEN(p); statflag_write((STFLAGH)vpArg, &len, sizeof(len)); if (len) { - if (len < sizeof(MAX_PATH)) { - ZeroMemory(p + len, sizeof(MAX_PATH) - len); + if (len < MAX_PATH) { + ZeroMemory(p + len, (MAX_PATH - len) * sizeof(OEMCHAR)); } statflag_write((STFLAGH)vpArg, vpItem, sizeof(_HDRVFILE)); } @@ -1337,13 +1336,13 @@ static BOOL fhdl_wr(void *vpItem, void * static BOOL flist_wr(void *vpItem, void *vpArg) { - char *p; + OEMCHAR *p; int len; p = ((HDRVLST)vpItem)->realname; - len = strlen(p); - if (len < sizeof(MAX_PATH)) { - ZeroMemory(p + len, sizeof(MAX_PATH) - len); + len = OEMSTRLEN(p); + if (len < MAX_PATH) { + ZeroMemory(p + len, (MAX_PATH - len) * sizeof(OEMCHAR)); } statflag_write((STFLAGH)vpArg, vpItem, sizeof(_HDRVLST)); return(FALSE); @@ -1364,6 +1363,7 @@ int hostdrv_sfsave(STFLAGH sfh, const SF ret |= statflag_write(sfh, &hostdrv.stat, sizeof(hostdrv.stat)); listarray_enum(hostdrv.fhdl, fhdl_wr, sfh); listarray_enum(hostdrv.flist, flist_wr, sfh); + (void)tbl; return(ret); } @@ -1409,8 +1409,8 @@ int hostdrv_sfload(STFLAGH sfh, const SF } ret |= statflag_read(sfh, hdl, sizeof(_HDRVLST)); } + (void)tbl; return(ret); } - #endif