1
0
Fork 0

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:
Peter Veenstra 2003-02-21 17:00:31 +00:00
parent 8e69d82144
commit 850edecdf2
5 changed files with 20 additions and 7 deletions

View file

@ -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;

View file

@ -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) {

View file

@ -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);

View file

@ -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;

View file

@ -211,4 +211,5 @@ struct Int10Data {
VGAMODES * entry;
};
extern Int10Data int10;
extern Int10Data int10;