|
|
| version 1.9, 2004/01/22 01:10:04 | version 1.15, 2005/02/07 14:46:10 |
|---|---|
| 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 242 static void init_sft(SFTREC sft) { | Line 242 static void init_sft(SFTREC sft) { |
| else { | else { |
| sft->open_mode[0] &= 0x0f; | 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; | sft->dev_info_word[1] = 0x80; |
| STOREINTELDWORD(sft->dev_drvr_ptr, 0); | STOREINTELDWORD(sft->dev_drvr_ptr, 0); |
| STOREINTELDWORD(sft->file_pos, 0); | STOREINTELDWORD(sft->file_pos, 0); |
| Line 343 static BOOL read_data(UINT num, UINT32 p | Line 343 static BOOL read_data(UINT num, UINT32 p |
| HDRVFILE hdf; | HDRVFILE hdf; |
| FILEH fh; | FILEH fh; |
| BYTE work[1024]; | UINT8 work[1024]; |
| UINT r; | UINT r; |
| hdf = (HDRVFILE)listarray_getitem(hostdrv.fhdl, num); | hdf = (HDRVFILE)listarray_getitem(hostdrv.fhdl, num); |
| 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 370 static BOOL write_data(UINT num, UINT32 | Line 370 static BOOL write_data(UINT num, UINT32 |
| HDRVFILE hdf; | HDRVFILE hdf; |
| FILEH fh; | FILEH fh; |
| BYTE work[1024]; | UINT8 work[1024]; |
| UINT r; | UINT r; |
| hdf = (HDRVFILE)listarray_getitem(hostdrv.fhdl, num); | hdf = (HDRVFILE)listarray_getitem(hostdrv.fhdl, num); |
| 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 1295 void hostdrv_intr(const void *arg1, long | Line 1294 void hostdrv_intr(const void *arg1, long |
| TRACEOUT(("hostdrv: AL=%.2x", intrst.r.b.al)); | 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)) { | (intr_func[intrst.r.b.al] == NULL)) { |
| return; | return; |
| } | } |
| 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); |
| Line 1364 int hostdrv_sfsave(STFLAGH sfh, const SF | Line 1363 int hostdrv_sfsave(STFLAGH sfh, const SF |
| ret |= statflag_write(sfh, &hostdrv.stat, sizeof(hostdrv.stat)); | ret |= statflag_write(sfh, &hostdrv.stat, sizeof(hostdrv.stat)); |
| listarray_enum(hostdrv.fhdl, fhdl_wr, sfh); | listarray_enum(hostdrv.fhdl, fhdl_wr, sfh); |
| listarray_enum(hostdrv.flist, flist_wr, sfh); | listarray_enum(hostdrv.flist, flist_wr, sfh); |
| (void)tbl; | |
| return(ret); | return(ret); |
| } | } |
| Line 1409 int hostdrv_sfload(STFLAGH sfh, const SF | Line 1409 int hostdrv_sfload(STFLAGH sfh, const SF |
| } | } |
| ret |= statflag_read(sfh, hdl, sizeof(_HDRVLST)); | ret |= statflag_read(sfh, hdl, sizeof(_HDRVLST)); |
| } | } |
| (void)tbl; | |
| return(ret); | return(ret); |
| } | } |
| #endif | #endif |