static char RCSId[] = "$Id$"; static char Copyright[] = "Copyright Robert J. Amstadt, 1993"; #include #include #include #include "prototypes.h" #include "regfunc.h" static void GetTimeDate(int time_flag) { struct tm *now; time_t ltime; ltime = time(NULL); now = localtime(<ime); if (time_flag) { _CX = (now->tm_hour << 8) | now->tm_min; _DX = now->tm_sec << 8; } else { _CX = now->tm_year + 1900; _DX = ((now->tm_mon + 1) << 8) | now->tm_mday; _AX &= 0xff00; _AX |= now->tm_wday; } #ifdef DEBUG_DOS printf("GetTimeDate: AX = %04x, CX = %04x, DX = %04x\n", _AX, _CX, _DX); #endif ReturnFromRegisterFunc(); /* Function does not return */ } /********************************************************************** * KERNEL_DOS3Call */ int KERNEL_DOS3Call() { switch ((_AX >> 8) & 0xff) { case 0x30: _AX = 0x0303; ReturnFromRegisterFunc(); /* Function does not return */ case 0x25: case 0x35: return 0; case 0x2a: GetTimeDate(0); /* Function does not return */ case 0x2c: GetTimeDate(1); /* Function does not return */ case 0x4c: exit(_AX & 0xff); default: fprintf(stderr, "DOS: AX %04x, BX %04x, CX %04x, DX %04x\n", _AX, _BX, _CX, _DX); fprintf(stderr, " SP %04x, BP %04x, SI %04x, DI %04x\n", _SP, _BP, _SI, _DI); fprintf(stderr, " DS %04x, ES %04x\n", _DS, _ES); } return 0; }