#include	"compiler.h"
#include	"np2.h"
#include	"dosio.h"
#include	"sysmng.h"
#include	"cpucore.h"
#include	"pccore.h"
#include	"fddfile.h"
#include	"diskdrv.h"
	UINT	sys_updates;
static	char	strtitle[256];
static	char	strclock[64];
static struct {
	UINT32	tick;
	UINT32	clock;
	UINT32	draws;
	SINT32	fps;
	SINT32	khz;
} workclock;
void sysmng_workclockreset(void) {
	workclock.tick = GETTICK();
	workclock.clock = CPU_CLOCK;
	workclock.draws = drawcount;
}
BOOL sysmng_workclockrenewal(void) {
	SINT32	tick;
	tick = GETTICK() - workclock.tick;
	if (tick < 2000) {
		return(FALSE);
	}
	workclock.tick += tick;
	workclock.fps = ((drawcount - workclock.draws) * 10000) / tick;
	workclock.draws = drawcount;
	workclock.khz = (CPU_CLOCK - workclock.clock) / tick;
	workclock.clock = CPU_CLOCK;
	return(TRUE);
}
void sysmng_updatecaption(BYTE flag) {
    char	name1[255], name2[255];
	char	work[256];
#ifndef NP2GCC
	Str255	str;
#endif
	if (flag & 1) {
		strtitle[0] = '\0';
		if (fdd_diskready(0)) {
			milstr_ncat(strtitle, "  FDD1:", sizeof(strtitle));
            if (getLongFileName(name1, fdd_diskname(0))) {
                milstr_ncat(strtitle, name1, sizeof(strtitle));
            }
            else {
                milstr_ncat(strtitle, file_getname((char *)fdd_diskname(0)),
															sizeof(strtitle));
            }
		}
		if (fdd_diskready(1)) {
			milstr_ncat(strtitle, "  FDD2:", sizeof(strtitle));
            if (getLongFileName(name2, fdd_diskname(1))) {
                milstr_ncat(strtitle, name2, sizeof(strtitle));
            }
            else {
                milstr_ncat(strtitle, file_getname((char *)fdd_diskname(1)),
															sizeof(strtitle));
            }
		}
	}
	if (flag & 2) {
		strclock[0] = '\0';
		if (np2oscfg.DISPCLK & 2) {
			if (workclock.fps) {
				SPRINTF(strclock, " - %u.%1uFPS",
								workclock.fps / 10, workclock.fps % 10);
			}
			else {
				milstr_ncpy(strclock, " - 0FPS", sizeof(strclock));
			}
		}
		if (np2oscfg.DISPCLK & 1) {
			SPRINTF(work, " %2u.%03uMHz",
								workclock.khz / 1000, workclock.khz % 1000);
			if (strclock[0] == '\0') {
				milstr_ncpy(strclock, " -", sizeof(strclock));
			}
			milstr_ncat(strclock, work, sizeof(strclock));
		}
	}
#if defined(NP2GCC)
	milstr_ncpy(work, np2oscfg.titles, sizeof(work));
#else
#if !defined(SUPPORT_PC9821)
	milstr_ncpy(work, "Neko Project II", sizeof(work));
#else
	milstr_ncpy(work, "Neko Project 21", sizeof(work));
#endif
#endif
	milstr_ncat(work, strtitle, sizeof(work));
	milstr_ncat(work, strclock, sizeof(work));
#if defined(NP2GCC)
	CFStringRef cfstr;
	cfstr = CFStringCreateWithCString(NULL, work, CFStringGetSystemEncoding());
    SetWindowTitleWithCFString(hWndMain, cfstr);
	CFRelease(cfstr);
#else
	mkstr255(str, work);
	SetWTitle(hWndMain, str);
#endif
}
RetroPC.NET-CVS <cvs@retropc.net>