From fbc882c0368fa1029dab8a81fff39d5b23be998d Mon Sep 17 00:00:00 2001 From: Ulf Wohlers Date: Mon, 19 Aug 2002 15:26:35 +0000 Subject: [PATCH] added simple extended fcb support Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@191 --- src/dos/dos_classes.cpp | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/dos/dos_classes.cpp b/src/dos/dos_classes.cpp index 6d99cef5..05096322 100644 --- a/src/dos/dos_classes.cpp +++ b/src/dos/dos_classes.cpp @@ -182,54 +182,55 @@ Bit8u DOS_PSP::GetFileHandle(Bitu index) { return mem_readb(files+index); }; +#define FCB_EXTENDED (mem_readb(off)==0xFF ? 7:0) void DOS_FCB::Set_drive(Bit8u a){ - mem_writeb(off+offsetof(sFCB,drive),a); + mem_writeb(off+offsetof(sFCB,drive)+FCB_EXTENDED,a); } void DOS_FCB::Set_filename(char * a){ - MEM_BlockWrite(off+offsetof(sFCB,filename),a,8); + MEM_BlockWrite(off+offsetof(sFCB,filename)+FCB_EXTENDED,a,8); } void DOS_FCB::Set_ext(char * a) { - MEM_BlockWrite(off+offsetof(sFCB,ext),a,3); + MEM_BlockWrite(off+offsetof(sFCB,ext)+FCB_EXTENDED,a,3); } void DOS_FCB::Set_current_block(Bit16u a){ - mem_writew(off+offsetof(sFCB,current_block),a); + mem_writew(off+offsetof(sFCB,current_block)+FCB_EXTENDED,a); } void DOS_FCB::Set_record_size(Bit16u a){ - mem_writew(off+offsetof(sFCB,record_size),a); + mem_writew(off+offsetof(sFCB,record_size)+FCB_EXTENDED,a); } void DOS_FCB::Set_filesize(Bit32u a){ - mem_writed(off+offsetof(sFCB,filesize),a); + mem_writed(off+offsetof(sFCB,filesize)+FCB_EXTENDED,a); } void DOS_FCB::Set_date(Bit16u a){ - mem_writew(off+offsetof(sFCB,date),a); + mem_writew(off+offsetof(sFCB,date)+FCB_EXTENDED,a); } void DOS_FCB::Set_time(Bit16u a){ - mem_writew(off+offsetof(sFCB,time),a); + mem_writew(off+offsetof(sFCB,time)+FCB_EXTENDED,a); } Bit8u DOS_FCB::Get_drive(void){ - return mem_readb(off+offsetof(sFCB,drive)); + return mem_readb(off+offsetof(sFCB,drive)+FCB_EXTENDED); } void DOS_FCB::Get_filename(char * a){ MEM_BlockRead(off+offsetof(sFCB,filename),a,8); } void DOS_FCB::Get_ext(char * a){ - MEM_BlockRead(off+offsetof(sFCB,ext),a,3); + MEM_BlockRead(off+offsetof(sFCB,ext)+FCB_EXTENDED,a,3); } Bit16u DOS_FCB::Get_current_block(void){ - return mem_readw(off+offsetof(sFCB,current_block)); + return mem_readw(off+offsetof(sFCB,current_block)+FCB_EXTENDED); } Bit16u DOS_FCB::Get_record_size(void){ - return mem_readw(off+offsetof(sFCB,record_size)); + return mem_readw(off+offsetof(sFCB,record_size)+FCB_EXTENDED); } Bit32u DOS_FCB::Get_filesize(void){ - return mem_readd(off+offsetof(sFCB,filesize)); + return mem_readd(off+offsetof(sFCB,filesize)+FCB_EXTENDED); } Bit16u DOS_FCB::Get_date(void){ - return mem_readw(off+offsetof(sFCB,date)); + return mem_readw(off+offsetof(sFCB,date)+FCB_EXTENDED); } Bit16u DOS_FCB::Get_time(void){ - return mem_readw(off+offsetof(sFCB,time)); + return mem_readw(off+offsetof(sFCB,time)+FCB_EXTENDED); }