From dc4aabb403ec0b27f135a2221e7804aadeec04bc Mon Sep 17 00:00:00 2001 From: ripsaw8080 Date: Mon, 21 Dec 2015 17:14:42 +0000 Subject: [PATCH] Correct some offsets in the DTA for FCB-based search results. Fixes DIR listing in COMMAND.COM from MS-DOS and file info in XTree Gold. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3955 --- include/dos_inc.h | 2 +- src/dos/dos_classes.cpp | 7 +++++-- src/dos/dos_files.cpp | 3 +-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/include/dos_inc.h b/include/dos_inc.h index 070bb3b2..1919684a 100644 --- a/include/dos_inc.h +++ b/include/dos_inc.h @@ -507,7 +507,7 @@ public: bool Extended(void); void GetAttr(Bit8u & attr); void SetAttr(Bit8u attr); - void SetResultAttr(Bit8u attr); + void SetResult(Bit32u size,Bit16u date,Bit16u time,Bit8u attr); bool Valid(void); void ClearBlockRecsize(void); private: diff --git a/src/dos/dos_classes.cpp b/src/dos/dos_classes.cpp index 27658b42..ac2d622d 100644 --- a/src/dos/dos_classes.cpp +++ b/src/dos/dos_classes.cpp @@ -498,8 +498,11 @@ void DOS_FCB::SetAttr(Bit8u attr) { if(extended) mem_writeb(pt - 1,attr); } -void DOS_FCB::SetResultAttr(Bit8u attr) { - mem_writeb(pt + 12,attr); +void DOS_FCB::SetResult(Bit32u size,Bit16u date,Bit16u time,Bit8u attr) { + mem_writed(pt + 0x1d,size); + mem_writew(pt + 0x19,date); + mem_writew(pt + 0x17,time); + mem_writeb(pt + 0x0c,attr); } void DOS_SDA::Init() { diff --git a/src/dos/dos_files.cpp b/src/dos/dos_files.cpp index 3cdac4bf..614cdb90 100644 --- a/src/dos/dos_files.cpp +++ b/src/dos/dos_files.cpp @@ -949,8 +949,7 @@ static void SaveFindResult(DOS_FCB & find_fcb) { fcb.Create(find_fcb.Extended()); fcb.SetName(drive,file_name,ext); fcb.SetAttr(find_attr); /* Only adds attribute if fcb is extended */ - fcb.SetResultAttr(attr); - fcb.SetSizeDateTime(size,date,time); + fcb.SetResult(size,date,time,attr); } bool DOS_FCBCreate(Bit16u seg,Bit16u offset) {