Lot's date and time fixes. Made Gcc3.2 happier
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@673
This commit is contained in:
parent
8e69d82144
commit
850edecdf2
5 changed files with 20 additions and 7 deletions
|
@ -229,7 +229,7 @@ static Bitu DOS_21Handler(void) {
|
|||
break;
|
||||
case 0x22: /* Write random record to FCB */
|
||||
reg_al=DOS_FCBRandomWrite(SegValue(ds),reg_dx,1,true);
|
||||
LOG_DEBUG("DOS:0x28 FCB-Random write used, result:al=%d",reg_al);
|
||||
LOG_DEBUG("DOS:0x22 FCB-Random write used, result:al=%d",reg_al);
|
||||
break;
|
||||
case 0x23: /* Get file size for FCB */
|
||||
if (DOS_FCBGetFileSize(SegValue(ds),reg_dx,reg_cx)) reg_al = 0x00;
|
||||
|
|
|
@ -314,7 +314,8 @@ void DOS_FCB::SetSizeDateTime(Bit32u _size,Bit16u _date,Bit16u _time) {
|
|||
|
||||
void DOS_FCB::GetSizeDateTime(Bit32u & _size,Bit16u & _date,Bit16u & _time) {
|
||||
_size=sGet(sFCB,filesize);
|
||||
|
||||
_date=sGet(sFCB,date);
|
||||
_time=sGet(sFCB,time);
|
||||
}
|
||||
|
||||
void DOS_FCB::GetRecord(Bit16u & _cur_block,Bit8u & _cur_rec) {
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <ctype.h>
|
||||
|
||||
#include "dosbox.h"
|
||||
#include "bios.h"
|
||||
#include "mem.h"
|
||||
#include "cpu.h"
|
||||
#include "dos_inc.h"
|
||||
|
@ -726,7 +727,17 @@ Bit8u DOS_FCBWrite(Bit16u seg,Bit16u offset,Bit16u recno)
|
|||
Bit32u size;Bit16u date,time;
|
||||
fcb.GetSizeDateTime(size,date,time);
|
||||
if (pos+towrite>size) size=pos+towrite;
|
||||
//TODO Set time to current time?
|
||||
//time doesn't keep track of endofday
|
||||
date = DOS_PackDate(dos.date.year,dos.date.month,dos.date.day);
|
||||
Bit32u ticks = mem_readd(BIOS_TIMER);
|
||||
Bit32u seconds = (ticks*10)/182;
|
||||
Bit16u hour = (Bit16u)(seconds/3600);
|
||||
Bit16u min = (Bit16u)((seconds % 3600)/60);
|
||||
Bit16u sec = (Bit16u)(seconds % 60);
|
||||
time = DOS_PackTime(hour,min,sec);
|
||||
Bit8u temp=RealHandle(fhandle);
|
||||
Files[temp]->time=time;
|
||||
Files[temp]->date=date;
|
||||
fcb.SetSizeDateTime(size,date,time);
|
||||
if (++cur_rec>127) { cur_block++;cur_rec=0; }
|
||||
fcb.SetRecord(cur_block,cur_rec);
|
||||
|
|
|
@ -278,7 +278,7 @@ bool localDrive::FileStat(const char* name, FileStat_Block * const stat_block) {
|
|||
struct tm *time;
|
||||
if((time=localtime(&temp_stat.st_mtime))!=0) {
|
||||
stat_block->time=DOS_PackTime(time->tm_hour,time->tm_min,time->tm_sec);
|
||||
stat_block->date=DOS_PackDate(time->tm_year,time->tm_mon,time->tm_mday);
|
||||
stat_block->date=DOS_PackDate(time->tm_year+1900,time->tm_mon+1,time->tm_mday);
|
||||
} else {
|
||||
|
||||
}
|
||||
|
@ -364,9 +364,9 @@ localFile::localFile(const char* _name, FILE * handle,Bit16u devinfo) {
|
|||
struct tm * ltime;
|
||||
if((ltime=localtime(&temp_stat.st_mtime))!=0) {
|
||||
time=DOS_PackTime(ltime->tm_hour,ltime->tm_min,ltime->tm_sec);
|
||||
date=DOS_PackDate(ltime->tm_year,ltime->tm_mon,ltime->tm_mday);
|
||||
date=DOS_PackDate(ltime->tm_year+1900,ltime->tm_mon+1,ltime->tm_mday);
|
||||
} else {
|
||||
time=0;date=0;
|
||||
time=1;date=1;
|
||||
}
|
||||
size=(Bit32u)temp_stat.st_size;
|
||||
attr=DOS_ATTR_ARCHIVE;
|
||||
|
|
|
@ -211,4 +211,5 @@ struct Int10Data {
|
|||
VGAMODES * entry;
|
||||
};
|
||||
|
||||
extern Int10Data int10;
|
||||
extern Int10Data int10;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue