Fixes to get dhrystone.c to compile and run

This commit is contained in:
drmortalwombat 2021-10-03 20:35:50 +02:00
parent 4a822facaa
commit 542cb66693
13 changed files with 356 additions and 33 deletions

9
include/stdbool.h Normal file
View File

@ -0,0 +1,9 @@
#ifndef STDBOOL_H
#define STDBOOL_H
#define bool bool
#define true true
#define false false
#endif

96
include/stdint.h Normal file
View File

@ -0,0 +1,96 @@
#ifndef STDINT_H
#define STDINT_H
typedef signed char int8_t;
typedef short int16_t;
typedef long int32_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
typedef signed char int_least8_t;
typedef short int_least16_t;
typedef long int_least32_t;
typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned long uint_least32_t;
typedef signed char int_fast8_t;
typedef short int_fast16_t;
typedef long int_fast32_t;
typedef unsigned char uint_fast8_t;
typedef unsigned short uint_fast16_t;
typedef unsigned long uint_fast32_t;
typedef int intptr_t;
typedef unsigned int uintptr_t;
typedef long intmax_t;
typedef unsigned long uintmax_t;
/* LIMIT MACROS */
#define INT8_MIN (-0x7f - 1)
#define INT16_MIN (-0x7fff - 1)
#define INT32_MIN (-0x7fffffffL - 1)
#define INT8_MAX 0x7f
#define INT16_MAX 0x7fff
#define INT32_MAX 0x7fffffffL
#define UINT8_MAX 0xff
#define UINT16_MAX 0xffff
#define UINT32_MAX 0xffffffffUL
#define INT_LEAST8_MIN (-0x7f - 1)
#define INT_LEAST16_MIN (-0x7fff - 1)
#define INT_LEAST32_MIN (-0x7fffffffL - 1)
#define INT_LEAST8_MAX 0x7f
#define INT_LEAST16_MAX 0x7fff
#define INT_LEAST32_MAX 0x7fffffffL
#define UINT_LEAST8_MAX 0xff
#define UINT_LEAST16_MAX 0xffff
#define UINT_LEAST32_MAX 0xffffffffUL
#define INT_FAST8_MIN (-0x7f - 1)
#define INT_FAST16_MIN (-0x7fff - 1)
#define INT_FAST32_MIN (-0x7fffffffL - 1)
#define INT_FAST8_MAX 0x7f
#define INT_FAST16_MAX 0x7fff
#define INT_FAST32_MAX 0x7fffffffL
#define UINT_FAST8_MAX 0xff
#define UINT_FAST16_MAX 0xffff
#define UINT_FAST32_MAX 0xffffffffUL
#define INTPTR_MIN (-0x7fff - 1)
#define INTPTR_MAX 0x7fff
#define UINTPTR_MAX 0xffff
#define INT8_C(x) (x)
#define INT16_C(x) (x)
#define INT32_C(x) ((x) + (INT32_MAX - INT32_MAX))
#define UINT8_C(x) (x)
#define UINT16_C(x) (x)
#define UINT32_C(x) ((x) + (UINT32_MAX - UINT32_MAX))
#define INTMAX_C(x) ((x) + (INT32_MAX - INT32_MAX))
#define UINTMAX_C(x) ((x) + (UINT32_MAX - UINT32_MAX))
#define PTRDIFF_MIN INT16_MIN
#define PTRDIFF_MAX INT16_MAX
#define SIZE_MAX UINT16_MAX
#define INTMAX_MIN (-0x7fffffffL - 1)
#define INTMAX_MAX 0x7fffffffL
#define UINTMAX_MAX 0xffffffffUL
#endif

16
include/time.c Normal file
View File

@ -0,0 +1,16 @@
#include "time.h"
clock_t clock(void)
{
__asm
{
lda $a2
sta accu + 0
lda $a1
sta accu + 1
lda $a0
sta accu + 2
lda #0
sta accu + 3
}
}

12
include/time.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef TIME_H
#define TIME_H
typedef long clock_t;
#define CLOCKS_PER_SEC 60L
clock_t clock(void);
#pragma compile("time.c")
#endif

View File

@ -581,7 +581,7 @@ void NativeCodeDisassembler::Disassemble(FILE* file, const uint8* memory, int st
else if (ident)
fprintf(file, "%s:\n", ident->mString);
char tbuffer[10];
char tbuffer[10], abuffer[10];
int ip = start;
while (ip < start + size)
@ -614,17 +614,17 @@ void NativeCodeDisassembler::Disassemble(FILE* file, const uint8* memory, int st
break;
case ASMIM_ABSOLUTE:
addr = memory[ip] + 256 * memory[ip + 1];
fprintf(file, "%04x : %02x %02x %02x %s $%04x\n", iip, memory[iip], memory[iip + 1], memory[iip + 2], AsmInstructionNames[d.mType], addr);
fprintf(file, "%04x : %02x %02x %02x %s %s\n", iip, memory[iip], memory[iip + 1], memory[iip + 2], AsmInstructionNames[d.mType], AddrName(addr, abuffer, linker));
ip += 2;
break;
case ASMIM_ABSOLUTE_X:
addr = memory[ip] + 256 * memory[ip + 1];
fprintf(file, "%04x : %02x %02x %02x %s $%04x,x\n", iip, memory[iip], memory[iip + 1], memory[iip + 2], AsmInstructionNames[d.mType], addr);
fprintf(file, "%04x : %02x %02x %02x %s %s,x\n", iip, memory[iip], memory[iip + 1], memory[iip + 2], AsmInstructionNames[d.mType], AddrName(addr, abuffer, linker));
ip += 2;
break;
case ASMIM_ABSOLUTE_Y:
addr = memory[ip] + 256 * memory[ip + 1];
fprintf(file, "%04x : %02x %02x %02x %s $%04x,y\n", iip, memory[iip], memory[iip + 1], memory[iip + 2], AsmInstructionNames[d.mType], addr);
fprintf(file, "%04x : %02x %02x %02x %s %s,y\n", iip, memory[iip], memory[iip + 1], memory[iip + 2], AsmInstructionNames[d.mType], AddrName(addr, abuffer, linker));
ip += 2;
break;
case ASMIM_INDIRECT:
@ -653,6 +653,20 @@ void NativeCodeDisassembler::Disassemble(FILE* file, const uint8* memory, int st
}
const char* NativeCodeDisassembler::AddrName(int addr, char* buffer, Linker* linker)
{
if (linker)
{
LinkerObject* obj = linker->FindObjectByAddr(addr);
if (obj && obj->mIdent)
return obj->mIdent->mString;
}
sprintf_s(buffer, 10, "$%04x", addr);
return buffer;
}
const char* NativeCodeDisassembler::TempName(uint8 tmp, char* buffer, InterCodeProcedure* proc)
{
if (tmp >= BC_REG_ADDR && tmp <= BC_REG_ADDR + 3)

View File

@ -29,6 +29,7 @@ public:
void Disassemble(FILE* file, const uint8* memory, int start, int size, InterCodeProcedure* proc, const Ident* ident, Linker* linker);
protected:
const char* TempName(uint8 tmp, char* buffer, InterCodeProcedure* proc);
const char* AddrName(int addr, char* buffer, Linker* linker);
};

View File

@ -65,7 +65,7 @@ void Emulator::DumpCycles(void)
}
printf("Total Cycles %d\n", totalCycles);
return;
// return;
for (int i = 0; i < numTops; i++)
{
@ -468,8 +468,24 @@ int Emulator::Emulate(int startIP)
mMemory[0x1fe] = 0xff;
mMemory[0x1ff] = 0xff;
int ticks = 0;
while (mIP != 0)
{
ticks++;
if (ticks > 4500)
{
mMemory[0xa2]++;
if (!mMemory[0xa2])
{
mMemory[0xa1]++;
if (!mMemory[0xa1])
{
mMemory[0xa0]++;
}
}
ticks = 0;
}
if (mIP == 0xffd2)
{
if (mRegA == 13)
@ -577,7 +593,7 @@ int Emulator::Emulate(int startIP)
break;
}
if ((trace & 1) && ip == 0x0821)
if ((trace & 1) && ip == 0x081f)
{
int accu = mMemory[BC_REG_ACCU] + 256 * mMemory[BC_REG_ACCU + 1];
int ptr = mMemory[BC_REG_ADDR] + 256 * mMemory[BC_REG_ADDR + 1];

View File

@ -1396,6 +1396,10 @@ void InterInstruction::LocalRenameRegister(GrowingIntArray& renameTable, int& nu
renameTable[mTTemp] = num;
mTTemp = num++;
}
#if 0
if (mCode == IC_LOAD_TEMPORARY && mSTemp[0] < 0)
mCode = IC_CONSTANT;
#endif
}
void InterInstruction::GlobalRenameRegister(const GrowingIntArray& renameTable, GrowingTypeArray& temporaries)
@ -1410,6 +1414,10 @@ void InterInstruction::GlobalRenameRegister(const GrowingIntArray& renameTable,
if (InterTypeSize[mTType] > InterTypeSize[temporaries[mTTemp]])
temporaries[mTTemp] = mTType;
}
#if 0
if (mCode == IC_LOAD_TEMPORARY && mSTemp[0] < 0)
mCode = IC_CONSTANT;
#endif
}
static void UpdateCollisionSet(NumberSet& liveTemps, NumberSet* collisionSets, int temp)
@ -2887,10 +2895,17 @@ void InterCodeBasicBlock::LocalRenameRegister(const GrowingIntArray& renameTable
mExitRenameTable[i] = i;
}
else if (mEntryRequiredTemps[i])
{
if (renameTable[i] < 0)
{
mExitRenameTable[i] = mEntryRenameTable[i] = num++;
}
else
{
mEntryRenameTable[i] = renameTable[i];
mExitRenameTable[i] = renameTable[i];
}
}
else
{
mEntryRenameTable[i] = -1;

View File

@ -19,14 +19,13 @@ static inline InterType InterTypeOf(const Declaration* dec)
case DT_TYPE_VOID:
return IT_NONE;
case DT_TYPE_INTEGER:
case DT_TYPE_ENUM:
if (dec->mSize == 1)
return IT_INT8;
else if (dec->mSize == 2)
return IT_INT16;
else
return IT_INT32;
case DT_TYPE_ENUM:
return IT_INT8;
case DT_TYPE_BOOL:
return IT_BOOL;
case DT_TYPE_FLOAT:
@ -709,6 +708,7 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration*
ins->mIntValue = dec->mOffset;
ins->mVarIndex = dec->mVarIndex;
int ref = 1;
if (dec->mType == DT_ARGUMENT)
{
if (inlineMapper)
@ -718,12 +718,18 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration*
}
else
ins->mMemory = IM_PARAM;
if (dec->mBase->mType == DT_TYPE_ARRAY)
{
ref = 2;
ins->mOperandSize = 2;
}
}
else if (dec->mFlags & DTF_GLOBAL)
{
InitGlobalVariable(proc->mModule, dec);
ins->mMemory = IM_GLOBAL;
ins->mLinkerObject = dec->mLinkerObject;
ins->mVarIndex = dec->mVarIndex;
}
else
ins->mMemory = IM_LOCAL;
@ -733,7 +739,7 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration*
if (!(dec->mBase->mFlags & DTF_DEFINED))
mErrors->Error(dec->mLocation, EERR_VARIABLE_TYPE, "Undefined variable type");
return ExValue(dec->mBase, ins->mTTemp, 1);
return ExValue(dec->mBase, ins->mTTemp, ref);
}
@ -1384,7 +1390,9 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration*
if (vl.mType->mType == DT_TYPE_POINTER || vr.mType->mType == DT_TYPE_POINTER)
{
dtype = vl.mType;
if (!vl.mType->IsSame(vr.mType))
if (vl.mType->IsIntegerType() || vr.mType->IsIntegerType())
;
else if (!vl.mType->IsSame(vr.mType))
mErrors->Error(exp->mLocation, EERR_INCOMPATIBLE_OPERATOR, "Incompatible pointer types");
}
else if (!vl.mType->IsNumericType() || !vr.mType->IsNumericType())
@ -1703,6 +1711,9 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration*
{
ains->mVarIndex = pdec->mVarIndex;
ains->mIntValue = pdec->mOffset;
if (pdec->mBase->mType == DT_TYPE_ARRAY)
ains->mOperandSize = 2;
else
ains->mOperandSize = pdec->mSize;
}
else if (ftype->mFlags & DTF_VARIADIC)
@ -1781,7 +1792,12 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration*
wins->mSType[1] = IT_POINTER;
wins->mSTemp[1] = ains->mTTemp;
if (pdec)
{
if (pdec->mBase->mType == DT_TYPE_ARRAY)
wins->mOperandSize = 2;
else
wins->mOperandSize = pdec->mSize;
}
else if (vr.mType->mSize > 2 && vr.mType->mType != DT_TYPE_ARRAY)
wins->mOperandSize = vr.mType->mSize;
else
@ -1967,17 +1983,17 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration*
InterInstruction * zins = new InterInstruction();
zins->mCode = IC_CONSTANT;
zins->mTType = InterTypeOf(vr.mType);
zins->mTType = InterTypeOf(vl.mType);
zins->mTTemp = proc->AddTemporary(zins->mTType);
zins->mIntValue = 0;
block->Append(zins);
InterInstruction * ins = new InterInstruction();
ins->mCode = IC_RELATIONAL_OPERATOR;
ins->mOperator = IA_CMPNE;
ins->mSType[0] = InterTypeOf(vr.mType);
ins->mOperator = IA_CMPEQ;
ins->mSType[0] = InterTypeOf(vl.mType);
ins->mSTemp[0] = zins->mTTemp;
ins->mSType[1] = InterTypeOf(vr.mType);
ins->mSType[1] = InterTypeOf(vl.mType);
ins->mSTemp[1] = vl.mTemp;
ins->mTType = IT_BOOL;
ins->mTTemp = proc->AddTemporary(ins->mTType);

View File

@ -3730,8 +3730,8 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p
case IA_AND:
case IA_XOR:
{
if (sins1) LoadValueToReg(proc, sins1, BC_REG_ACCU, nullptr, nullptr);
if (sins0) LoadValueToReg(proc, sins0, BC_REG_ACCU, nullptr, nullptr);
if (sins1) LoadValueToReg(proc, sins1, BC_REG_TMP + proc->mTempOffset[ins->mSTemp[1]], nullptr, nullptr);
if (sins0) LoadValueToReg(proc, sins0, BC_REG_TMP + proc->mTempOffset[ins->mSTemp[0]], nullptr, nullptr);
AsmInsType atype;
switch (ins->mOperator)
@ -5835,6 +5835,13 @@ void NativeCodeBasicBlock::CallFunction(InterCodeProcedure* proc, NativeCodeProc
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mTTemp] + 1));
}
if (InterTypeSize[ins->mTType] > 2)
{
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 2));
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mTTemp] + 2));
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 3));
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mTTemp] + 3));
}
}
}
}
@ -5869,6 +5876,13 @@ void NativeCodeBasicBlock::CallAssembler(InterCodeProcedure* proc, const InterIn
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mTTemp] + 1));
}
if (InterTypeSize[ins->mTType] > 2)
{
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 2));
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mTTemp] + 2));
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 3));
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mTTemp] + 3));
}
}
}
}

View File

@ -411,8 +411,11 @@ Declaration* Parser::ParsePostfixDeclaration(void)
adec->mType = DT_ARGUMENT;
adec->mVarIndex = vi;
adec->mOffset = 0;
if (adec->mBase->mType == DT_TYPE_ARRAY)
adec->mSize = 2;
else
adec->mSize = adec->mBase->mSize;
vi += adec->mBase->mSize;
vi += adec->mSize;
if (pdec)
pdec->mNext = adec;
else

View File

@ -464,7 +464,7 @@ void Scanner::NextToken(void)
else if (mToken == TK_PREP_DEFINE)
{
NextRawToken();
if (mToken == TK_IDENT)
if (mToken == TK_IDENT || mToken >= TK_IF && mToken <= TK_ASM || mToken == TK_TRUE || mToken == TK_FALSE)
{
Macro* macro = new Macro(mTokenIdent);
@ -472,6 +472,12 @@ void Scanner::NextToken(void)
{
NextRawToken();
if (mTokenChar == ')')
{
NextRawToken();
}
else
{
// Macro with argument
do
{
@ -485,6 +491,7 @@ void Scanner::NextToken(void)
mErrors->Error(mLocation, EERR_INVALID_PREPROCESSOR, "Invalid define argument");
} while (mToken == TK_COMMA);
}
if (mToken == TK_CLOSE_PARENTHESIS)
{

View File

@ -28,6 +28,12 @@
}
"Entry"
{
"MsmKey" = "8:_216D2A5FECF74C96A4964A74DFEB8552"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_317711E6E48744A18655469B4C53767E"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@ -52,6 +58,12 @@
}
"Entry"
{
"MsmKey" = "8:_8B258D238AC44D43A7DC654AFE0B9D8B"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_9D0D7A63D6C848CD85489D6E7C43AFAD"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@ -88,6 +100,12 @@
}
"Entry"
{
"MsmKey" = "8:_E5405BA024FB44FB8A71DC51B3B35428"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_E54AFD61BAD0414C9C5B2EFF31DA01FA"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@ -112,6 +130,12 @@
}
"Entry"
{
"MsmKey" = "8:_F8F279E2317342BB8F6FD09FE8FE4EF5"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@ -243,6 +267,26 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_216D2A5FECF74C96A4964A74DFEB8552"
{
"SourcePath" = "8:..\\include\\stdbool.h"
"TargetName" = "8:stdbool.h"
"Tag" = "8:"
"Folder" = "8:_7C0D28C244F14A21B5F72213BBE59B6F"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_317711E6E48744A18655469B4C53767E"
{
"SourcePath" = "8:..\\include\\math.c"
@ -323,6 +367,26 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_8B258D238AC44D43A7DC654AFE0B9D8B"
{
"SourcePath" = "8:..\\include\\time.h"
"TargetName" = "8:time.h"
"Tag" = "8:"
"Folder" = "8:_7C0D28C244F14A21B5F72213BBE59B6F"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9D0D7A63D6C848CD85489D6E7C43AFAD"
{
"SourcePath" = "8:..\\include\\stdio.h"
@ -443,6 +507,26 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E5405BA024FB44FB8A71DC51B3B35428"
{
"SourcePath" = "8:..\\include\\stdint.h"
"TargetName" = "8:stdint.h"
"Tag" = "8:"
"Folder" = "8:_7C0D28C244F14A21B5F72213BBE59B6F"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E54AFD61BAD0414C9C5B2EFF31DA01FA"
{
"SourcePath" = "8:..\\include\\assert.h"
@ -523,6 +607,26 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F8F279E2317342BB8F6FD09FE8FE4EF5"
{
"SourcePath" = "8:..\\include\\time.c"
"TargetName" = "8:time.c"
"Tag" = "8:"
"Folder" = "8:_7C0D28C244F14A21B5F72213BBE59B6F"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
}
"FileType"
{
@ -602,7 +706,7 @@
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:oscar64"
"ProductCode" = "8:{DD6A1D1D-E6A7-4EB4-912E-725CBB8EB76F}"
"PackageCode" = "8:{5524804F-A9C3-411D-92CD-F805012EBDAE}"
"PackageCode" = "8:{6A7C50E8-23AF-4F35-8542-FB26343A6248}"
"UpgradeCode" = "8:{9AB61EFF-ACAC-4079-9950-8D96615CD4EF}"
"AspNetVersion" = "8:2.0.50727.0"
"RestartWWWService" = "11:FALSE"
@ -1123,7 +1227,7 @@
{
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FB2E467BC172457785F4279BB0BFE8B6"
{
"SourcePath" = "8:..\\Release\\oscar64.exe"
"SourcePath" = "8:..\\Debug\\oscar64.exe"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"