diff --git a/src/dos/dos_files.cpp b/src/dos/dos_files.cpp index c4936d7b..33e6e663 100644 --- a/src/dos/dos_files.cpp +++ b/src/dos/dos_files.cpp @@ -488,12 +488,19 @@ bool DOS_FCBOpen(Bit16u seg,Bit16u offset) { constant=0x80; fcb.Set_record_size(constant); struct tm *time; - time=localtime(&stat_block.st_mtime); + if((time=localtime(&stat_block.st_mtime))!=0){ - constant=(time->tm_hour<<11)+(time->tm_min<<5)+(time->tm_sec/2); /* standard way. */ - fcb.Set_time(constant); - constant=((time->tm_year-80)<<9)+((time->tm_mon+1)<<5)+(time->tm_mday); - fcb.Set_date(constant); + constant=(time->tm_hour<<11)+(time->tm_min<<5)+(time->tm_sec/2); /* standard way. */ + fcb.Set_time(constant); + constant=((time->tm_year-80)<<9)+((time->tm_mon+1)<<5)+(time->tm_mday); + fcb.Set_date(constant); + } + else{ + constant=6; + fcb.Set_time(constant); + constant=4; + fcb.Set_date(constant); + } fcb.Set_drive(drive +1); return true; } diff --git a/src/dos/drive_local.cpp b/src/dos/drive_local.cpp index 87e22bfb..670a1651 100644 --- a/src/dos/drive_local.cpp +++ b/src/dos/drive_local.cpp @@ -148,10 +148,14 @@ bool localDrive::FindNext(DTA_FindBlock * dta) { dta->attr=tempattr; dta->size=(Bit32u) stat_block.st_size; struct tm *time; - time=localtime(&stat_block.st_mtime); - - dta->time=(time->tm_hour<<11)+(time->tm_min<<5)+(time->tm_sec/2); /* standard way. */ - dta->date=((time->tm_year-80)<<9)+((time->tm_mon+1)<<5)+(time->tm_mday); + if((time=localtime(&stat_block.st_mtime))!=0){ + + dta->time=(time->tm_hour<<11)+(time->tm_min<<5)+(time->tm_sec/2); /* standard way. */ + dta->date=((time->tm_year-80)<<9)+((time->tm_mon+1)<<5)+(time->tm_mday); + }else { + dta->time=6; + dta->date=4; + } return true; }