diff -up ./include/dos_inc.h.orig ./include/dos_inc.h --- ./include/dos_inc.h.orig 2015-12-27 12:43:12.000000000 -0800 +++ ./include/dos_inc.h 2015-12-27 11:53:19.000000000 -0800 @@ -170,7 +170,7 @@ void DOS_BuildUMBChain(bool umb_active,b bool DOS_LinkUMBsToMemChain(Bit16u linkstate); /* FCB stuff */ -bool DOS_FCBOpen(Bit16u seg,Bit16u offset); +Bit16u DOS_FCBOpen(Bit16u seg,Bit16u offset); bool DOS_FCBCreate(Bit16u seg,Bit16u offset); bool DOS_FCBClose(Bit16u seg,Bit16u offset); bool DOS_FCBFindFirst(Bit16u seg,Bit16u offset); diff -up ./src/dos/dos_classes.cpp.orig ./src/dos/dos_classes.cpp diff -up ./src/dos/dos_files.cpp.orig ./src/dos/dos_files.cpp --- ./src/dos/dos_files.cpp.orig 2015-12-27 10:08:26.000000000 -0800 +++ ./src/dos/dos_files.cpp 2015-12-27 12:22:17.000000000 -0800 @@ -964,7 +964,7 @@ bool DOS_FCBCreate(Bit16u seg,Bit16u off return true; } -bool DOS_FCBOpen(Bit16u seg,Bit16u offset) { +Bit16u DOS_FCBOpen(Bit16u seg,Bit16u offset) { DOS_FCB fcb(seg,offset); char shortname[DOS_FCBNAME];Bit16u handle; fcb.GetName(shortname); @@ -972,7 +972,7 @@ bool DOS_FCBOpen(Bit16u seg,Bit16u offse /* First check if the name is correct */ Bit8u drive; char fullname[DOS_PATHLENGTH]; - if (!DOS_MakeName(shortname,fullname,&drive)) return false; + if (!DOS_MakeName(shortname,fullname,&drive)) return (Bit16u)false; /* Check, if file is already opened */ for (Bit8u i=0;iSeek(&size,DOS_SEEK_END); - DOS_CloseFile(entry);fcb.GetSeqData(handle,rec_size); + fcb.GetSeqData(handle,rec_size); + DOS_CloseFile(entry); Bit32u random=(size/rec_size); if (size % rec_size) random++; fcb.SetRandom(random);