Petscii translation in stdio and conio

This commit is contained in:
drmortalwombat 2021-10-12 17:54:10 +02:00
parent da57ae00c5
commit 5372d49b50
10 changed files with 243 additions and 263 deletions

View File

@ -23,7 +23,7 @@ The goal is to implement the actual C standard and not some subset for performan
## Limits and Errors ## Limits and Errors
After four weeks, the compiler has now matured significantly. There are still several open areas. There are still several open areas, but most targets have been reached. The current Dhrystone performance is 35 iterations per second with byte code (12259) and 203 iterations with native code (13572 Bytes).
### Language ### Language
@ -76,6 +76,19 @@ The compiler is command line driven, and creates an executable .prg file.
A list of source files can be provided. A list of source files can be provided.
## Console input and output
The C64 does not use ASCII it uses a derivative called PETSCII. There are two fonts, one with uppercase and one with uppercase and lowercase characters. It also used CR (13) as line terminator instead of LF (10). The stdio and conio libaries can perform translations.
The translation mode is selected in conio with the variable "giocharmap" and the function "iocharmap" which will also switch the font.
iocharmap(IOCHM_PETSCII_2);
printf("Hello World\");
Will switch to the lowercase PETSCII font and translate the strings while printing.
Input from the console will also be translated accordingly.
## Inline Assembler ## Inline Assembler
Inline assembler can be embedded inside of any functions, regardles of their compilation target of byte code or native. Inline assembler can be embedded inside of any functions, regardles of their compilation target of byte code or native.

View File

@ -23,21 +23,21 @@ enum VICColors
{ {
VCOL_BLACK, VCOL_BLACK,
VCOL_WHITE, VCOL_WHITE,
BCOL_RED, VCOL_RED,
BCOL_CYAN, VCOL_CYAN,
BCOL_PURPLE, VCOL_PURPLE,
BCOL_GREEN, VCOL_GREEN,
BCOL_BLUE, VCOL_BLUE,
BCOL_YELLOW, VCOL_YELLOW,
BCOL_ORANGE, VCOL_ORANGE,
BCOL_BROWN, VCOL_BROWN,
BCOL_LT_RED, VCOL_LT_RED,
BCOL_DARK_GREY, VCOL_DARK_GREY,
BCOL_MED_GREY, VCOL_MED_GREY,
BCOL_LT_GREEN, VCOL_LT_GREEN,
BCOL_LT_BLUE, VCOL_LT_BLUE,
BCOL_LT_GREY VCOL_LT_GREY
}; };
struct VIC struct VIC

View File

@ -1,5 +1,75 @@
#include "conio.h" #include "conio.h"
static IOCharMap giocharmap = IOCHM_ASCII;
void iocharmap(IOCharMap chmap)
{
giocharmap = chmap;
if (chmap == IOCHM_PETSCII_1)
putchar(128 + 14);
else if (chmap == IOCHM_PETSCII_2)
putchar(14);
}
__asm putpch
{
ldx giocharmap
cpx #IOCHM_ASCII
bcc w3
cmp #10
bne w1
lda #13
w1:
cpx #IOCHM_PETSCII_1
bcc w3
cmp #65
bcc w3
cmp #123
bcs w3
cmp #97
bcs w2
cmp #91
bcs w3
w2:
eor #$20
cpx #IOCHM_PETSCII_2
beq w3
and #$df
w3:
jmp 0xffd2
}
__asm getpch
{
jsr 0xffe4
ldx giocharmap
cpx #IOCHM_ASCII
bcc w3
cmp #13
bne w1
lda #10
w1:
cpx #IOCHM_PETSCII_1
bcc w3
cmp #65
bcc w3
cmp #123
bcs w3
cmp #97
bcs w2
cmp #91
bcs w3
w2:
eor #$20
w3:
}
int kbhit(void) int kbhit(void)
{ {
__asm __asm
@ -16,12 +86,12 @@ int getche(void)
__asm __asm
{ {
L1: L1:
jsr $ffe4 jsr getpch
cmp #0 cmp #0
beq L1 beq L1
sta accu sta accu
jsr $ffd2 jsr putpch
lda #0 lda #0
sta accu + 1 sta accu + 1
} }
@ -33,7 +103,7 @@ int getch(void)
__asm __asm
{ {
L1: L1:
jsr $ffe4 jsr getpch
cmp #0 cmp #0
beq L1 beq L1
@ -60,16 +130,17 @@ void clrscr(void)
} }
} }
void gotoxy(int x, int y) void textcursor(bool show)
{
*(char *)0xcc = show ? 0 : 1;
}
void gotoxy(int cx, int cy)
{ {
__asm __asm
{ {
ldy #y ldy cy
lda (fp), y ldx cx
tax
ldy #x
lda (fp), y
tay
clc clc
jsr $fff0 jsr $fff0
} }
@ -79,8 +150,7 @@ void textcolor(int c)
{ {
__asm __asm
{ {
ldy #c lda c
lda (fp), y
sta $0286 sta $0286
} }
} }

View File

@ -1,6 +1,24 @@
#ifndef CONIO_H #ifndef CONIO_H
#define CONIO_H #define CONIO_H
enum IOCharMap
{
IOCHM_TRANSPARENT,
IOCHM_ASCII,
IOCHM_PETSCII_1,
IOCHM_PETSCII_2
};
extern IOCharMap giocharmap;
// Switch character map to transparent bypass, petscii font 1 or
// petscii font 2. Translation is performed for all reading and
// writing operations. The ascii mode will only translate the
// line end CR into an LF
void iocharmap(IOCharMap chmap);
int kbhit(void); int kbhit(void);
int getche(void); int getche(void);
@ -19,6 +37,10 @@ int wherex(void);
int wherey(void); int wherey(void);
// show or hide the text cursor
void textcursor(bool show);
#pragma compile("conio.c") #pragma compile("conio.c")
#endif #endif

View File

@ -1,21 +1,77 @@
#include "stdio.h" #include "stdio.h"
#include <stdlib.h> #include "conio.h"
#include "stdlib.h"
__asm putpch
{
ldx giocharmap
cpx #IOCHM_ASCII
bcc w3
cmp #10
bne w1
lda #13
w1:
cpx #IOCHM_PETSCII_1
bcc w3
cmp #65
bcc w3
cmp #123
bcs w3
cmp #97
bcs w2
cmp #91
bcs w3
w2:
eor #$20
cpx #IOCHM_PETSCII_2
beq w3
and #$df
w3:
jmp 0xffd2
}
__asm getpch
{
jsr 0xffcf
ldx giocharmap
cpx #IOCHM_ASCII
bcc w3
cmp #13
bne w1
lda #10
w1:
cpx #IOCHM_PETSCII_1
bcc w3
cmp #65
bcc w3
cmp #123
bcs w3
cmp #97
bcs w2
cmp #91
bcs w3
w2:
eor #$20
w3:
}
void putchar(char c) void putchar(char c)
{ {
__asm { __asm {
lda c lda c
bne w1 jmp putpch
lda #13
w1:
jsr 0xffd2
} }
} }
char getchar(void) char getchar(void)
{ {
__asm { __asm {
jsr 0xffcf jsr getpch
sta accu sta accu
lda #0 lda #0
sta accu + 1 sta accu + 1
@ -25,21 +81,16 @@ char getchar(void)
void puts(const char * str) void puts(const char * str)
{ {
__asm { __asm {
loop:
ldy #0 ldy #0
lda (str), y lda (str), y
beq done beq done
loop:
cmp #10 jsr putpch
bne w1
lda #13
w1:
jsr 0xffd2
inc str inc str
bne next bne loop
inc str + 1 inc str + 1
next:
ldy #0
lda (str), y
bne loop bne loop
done: done:
} }
@ -49,14 +100,14 @@ char * gets(char * str)
{ {
__asm { __asm {
loop: loop:
jsr 0xffcf jsr getpch
ldy #0 ldy #0
cmp #13 cmp #10
beq done beq done
sta (str), y sta (str), y
inc str inc str
bne loop bne loop
inc srt + 1 inc str + 1
bne loop bne loop
done: done:
lda #0 lda #0

View File

@ -3,6 +3,7 @@
#include <stdlib.h> #include <stdlib.h>
void putchar(char c); void putchar(char c);
char getchar(void); char getchar(void);

View File

@ -432,16 +432,21 @@ void InterCodeGenerator::TranslateAssembler(InterCodeModule* mod, Expression* ex
} }
else if (aexp->mType == DT_LABEL_REF) else if (aexp->mType == DT_LABEL_REF)
{ {
if (!aexp->mBase->mBase->mLinkerObject) if (aexp->mBase->mBase)
TranslateAssembler(mod, aexp->mBase->mBase->mValue, nullptr); {
if (!aexp->mBase->mBase->mLinkerObject)
TranslateAssembler(mod, aexp->mBase->mBase->mValue, nullptr);
LinkerReference ref; LinkerReference ref;
ref.mObject = dec->mLinkerObject; ref.mObject = dec->mLinkerObject;
ref.mOffset = offset; ref.mOffset = offset;
ref.mFlags = LREF_LOWBYTE | LREF_HIGHBYTE; ref.mFlags = LREF_LOWBYTE | LREF_HIGHBYTE;
ref.mRefObject = aexp->mBase->mBase->mLinkerObject; ref.mRefObject = aexp->mBase->mBase->mLinkerObject;
ref.mRefOffset = aexp->mOffset + aexp->mBase->mInteger; ref.mRefOffset = aexp->mOffset + aexp->mBase->mInteger;
dec->mLinkerObject->AddReference(ref); dec->mLinkerObject->AddReference(ref);
}
else
mErrors->Error(aexp->mLocation, EERR_ASM_INVALD_OPERAND, "Undefined label");
offset += 2; offset += 2;
} }

View File

@ -75,7 +75,7 @@ int main(int argc, const char** argv)
DWORD length = ::GetModuleFileNameA(NULL, basePath, sizeof(basePath)); DWORD length = ::GetModuleFileNameA(NULL, basePath, sizeof(basePath));
#else #else
printf("Starting oscar64 1.1.40\n"); printf("Starting oscar64 1.1.41\n");
#ifdef __APPLE__ #ifdef __APPLE__
uint32_t length = sizeof(basePath); uint32_t length = sizeof(basePath);

View File

@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,1,40,0 FILEVERSION 1,1,41,0
PRODUCTVERSION 1,1,40,0 PRODUCTVERSION 1,1,41,0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -43,12 +43,12 @@ BEGIN
BEGIN BEGIN
VALUE "CompanyName", "oscar64" VALUE "CompanyName", "oscar64"
VALUE "FileDescription", "oscar64 compiler" VALUE "FileDescription", "oscar64 compiler"
VALUE "FileVersion", "1.1.40.0" VALUE "FileVersion", "1.1.41.0"
VALUE "InternalName", "oscar64.exe" VALUE "InternalName", "oscar64.exe"
VALUE "LegalCopyright", "Copyright (C) 2021" VALUE "LegalCopyright", "Copyright (C) 2021"
VALUE "OriginalFilename", "oscar64.exe" VALUE "OriginalFilename", "oscar64.exe"
VALUE "ProductName", "oscar64" VALUE "ProductName", "oscar64"
VALUE "ProductVersion", "1.1.40.0" VALUE "ProductVersion", "1.1.41.0"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View File

@ -14,12 +14,6 @@
"BackwardsCompatibleGUIDGeneration" = "8:TRUE" "BackwardsCompatibleGUIDGeneration" = "8:TRUE"
"Hierarchy" "Hierarchy"
{ {
"Entry"
{
"MsmKey" = "8:_03D7013B0D39A89CEA9D267005ADCE39"
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
"MsmSig" = "8:_UNDEFINED"
}
"Entry" "Entry"
{ {
"MsmKey" = "8:_0D8B657E4A954DBFAF14055CDFFB384C" "MsmKey" = "8:_0D8B657E4A954DBFAF14055CDFFB384C"
@ -40,20 +34,14 @@
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_2CA3A525072974368303677563606FFE"
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_317711E6E48744A18655469B4C53767E" "MsmKey" = "8:_317711E6E48744A18655469B4C53767E"
"OwnerKey" = "8:_UNDEFINED" "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_3FA71395262A4AB4A1C2839FD6B91190" "MsmKey" = "8:_3AFDC86156F04AABB8D82218C17005F2"
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6" "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -76,18 +64,6 @@
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_777CE896BB0B3C09C1B5FB6CB3BFE84F"
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_7A40466D5E5D2D3FD71213A0C0AA5075"
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_7EA67552E0B34B9BA70152AD9E369EA6" "MsmKey" = "8:_7EA67552E0B34B9BA70152AD9E369EA6"
"OwnerKey" = "8:_UNDEFINED" "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
@ -118,13 +94,13 @@
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_B2B920A649CF4027457BBAB004078A03" "MsmKey" = "8:_B4265CBF352343D2867DBCCE67D9F493"
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6" "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_B4265CBF352343D2867DBCCE67D9F493" "MsmKey" = "8:_C239EFB1C3A646809AD2740ABDE747B0"
"OwnerKey" = "8:_UNDEFINED" "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
@ -136,18 +112,6 @@
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_DC9FDF52011EB7C47318682BA0B3F26F"
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_DE2BF7C92569053E7C3DCE88AB7E2566"
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_E218D776D9014F99BE2B046AEF2D6E8B" "MsmKey" = "8:_E218D776D9014F99BE2B046AEF2D6E8B"
"OwnerKey" = "8:_UNDEFINED" "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
@ -184,12 +148,6 @@
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_EA3C0BCB01F2639DFA2E37EC8436E5F6"
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_EDDED74E9AC24D9C8C7811F3A20ACA53" "MsmKey" = "8:_EDDED74E9AC24D9C8C7811F3A20ACA53"
"OwnerKey" = "8:_UNDEFINED" "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
@ -293,26 +251,6 @@
} }
"File" "File"
{ {
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_03D7013B0D39A89CEA9D267005ADCE39"
{
"SourcePath" = "8:VCRUNTIME140.dll"
"TargetName" = "8:VCRUNTIME140.dll"
"Tag" = "8:"
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
"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:TRUE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0D8B657E4A954DBFAF14055CDFFB384C" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0D8B657E4A954DBFAF14055CDFFB384C"
{ {
"SourcePath" = "8:..\\include\\crt.c" "SourcePath" = "8:..\\include\\crt.c"
@ -373,26 +311,6 @@
"IsDependency" = "11:FALSE" "IsDependency" = "11:FALSE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_2CA3A525072974368303677563606FFE"
{
"SourcePath" = "8:api-ms-win-crt-heap-l1-1-0.dll"
"TargetName" = "8:api-ms-win-crt-heap-l1-1-0.dll"
"Tag" = "8:"
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
"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:TRUE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_317711E6E48744A18655469B4C53767E" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_317711E6E48744A18655469B4C53767E"
{ {
"SourcePath" = "8:..\\include\\math.c" "SourcePath" = "8:..\\include\\math.c"
@ -413,12 +331,12 @@
"IsDependency" = "11:FALSE" "IsDependency" = "11:FALSE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3FA71395262A4AB4A1C2839FD6B91190" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3AFDC86156F04AABB8D82218C17005F2"
{ {
"SourcePath" = "8:api-ms-win-crt-stdio-l1-1-0.dll" "SourcePath" = "8:..\\include\\c64\\vic.h"
"TargetName" = "8:api-ms-win-crt-stdio-l1-1-0.dll" "TargetName" = "8:vic.h"
"Tag" = "8:" "Tag" = "8:"
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4" "Folder" = "8:_247D4CAD3CB843B3A8A4DC2D90F47C28"
"Condition" = "8:" "Condition" = "8:"
"Transitive" = "11:FALSE" "Transitive" = "11:FALSE"
"Vital" = "11:TRUE" "Vital" = "11:TRUE"
@ -430,7 +348,7 @@
"PackageAs" = "3:1" "PackageAs" = "3:1"
"Register" = "3:1" "Register" = "3:1"
"Exclude" = "11:FALSE" "Exclude" = "11:FALSE"
"IsDependency" = "11:TRUE" "IsDependency" = "11:FALSE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3FFD08277B804985BDF072C0C1877287" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3FFD08277B804985BDF072C0C1877287"
@ -493,46 +411,6 @@
"IsDependency" = "11:FALSE" "IsDependency" = "11:FALSE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_777CE896BB0B3C09C1B5FB6CB3BFE84F"
{
"SourcePath" = "8:api-ms-win-crt-filesystem-l1-1-0.dll"
"TargetName" = "8:api-ms-win-crt-filesystem-l1-1-0.dll"
"Tag" = "8:"
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
"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:TRUE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7A40466D5E5D2D3FD71213A0C0AA5075"
{
"SourcePath" = "8:api-ms-win-crt-locale-l1-1-0.dll"
"TargetName" = "8:api-ms-win-crt-locale-l1-1-0.dll"
"Tag" = "8:"
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
"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:TRUE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7EA67552E0B34B9BA70152AD9E369EA6" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7EA67552E0B34B9BA70152AD9E369EA6"
{ {
"SourcePath" = "8:..\\include\\c64\\joystick.h" "SourcePath" = "8:..\\include\\c64\\joystick.h"
@ -633,12 +511,12 @@
"IsDependency" = "11:FALSE" "IsDependency" = "11:FALSE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B2B920A649CF4027457BBAB004078A03" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B4265CBF352343D2867DBCCE67D9F493"
{ {
"SourcePath" = "8:api-ms-win-crt-math-l1-1-0.dll" "SourcePath" = "8:..\\include\\c64\\joystick.c"
"TargetName" = "8:api-ms-win-crt-math-l1-1-0.dll" "TargetName" = "8:joystick.c"
"Tag" = "8:" "Tag" = "8:"
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4" "Folder" = "8:_247D4CAD3CB843B3A8A4DC2D90F47C28"
"Condition" = "8:" "Condition" = "8:"
"Transitive" = "11:FALSE" "Transitive" = "11:FALSE"
"Vital" = "11:TRUE" "Vital" = "11:TRUE"
@ -650,13 +528,13 @@
"PackageAs" = "3:1" "PackageAs" = "3:1"
"Register" = "3:1" "Register" = "3:1"
"Exclude" = "11:FALSE" "Exclude" = "11:FALSE"
"IsDependency" = "11:TRUE" "IsDependency" = "11:FALSE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B4265CBF352343D2867DBCCE67D9F493" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C239EFB1C3A646809AD2740ABDE747B0"
{ {
"SourcePath" = "8:..\\include\\c64\\joystick.c" "SourcePath" = "8:..\\include\\c64\\types.h"
"TargetName" = "8:joystick.c" "TargetName" = "8:types.h"
"Tag" = "8:" "Tag" = "8:"
"Folder" = "8:_247D4CAD3CB843B3A8A4DC2D90F47C28" "Folder" = "8:_247D4CAD3CB843B3A8A4DC2D90F47C28"
"Condition" = "8:" "Condition" = "8:"
@ -693,46 +571,6 @@
"IsDependency" = "11:FALSE" "IsDependency" = "11:FALSE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DC9FDF52011EB7C47318682BA0B3F26F"
{
"SourcePath" = "8:api-ms-win-crt-string-l1-1-0.dll"
"TargetName" = "8:api-ms-win-crt-string-l1-1-0.dll"
"Tag" = "8:"
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
"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:TRUE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DE2BF7C92569053E7C3DCE88AB7E2566"
{
"SourcePath" = "8:api-ms-win-crt-runtime-l1-1-0.dll"
"TargetName" = "8:api-ms-win-crt-runtime-l1-1-0.dll"
"Tag" = "8:"
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
"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:TRUE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E218D776D9014F99BE2B046AEF2D6E8B" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E218D776D9014F99BE2B046AEF2D6E8B"
{ {
"SourcePath" = "8:..\\include\\stdlib.c" "SourcePath" = "8:..\\include\\stdlib.c"
@ -853,26 +691,6 @@
"IsDependency" = "11:FALSE" "IsDependency" = "11:FALSE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EA3C0BCB01F2639DFA2E37EC8436E5F6"
{
"SourcePath" = "8:VERSION.dll"
"TargetName" = "8:VERSION.dll"
"Tag" = "8:"
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
"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:TRUE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EDDED74E9AC24D9C8C7811F3A20ACA53" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EDDED74E9AC24D9C8C7811F3A20ACA53"
{ {
"SourcePath" = "8:..\\include\\stdio.c" "SourcePath" = "8:..\\include\\stdio.c"
@ -1002,15 +820,15 @@
{ {
"Name" = "8:Microsoft Visual Studio" "Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:oscar64" "ProductName" = "8:oscar64"
"ProductCode" = "8:{B454BC86-EF23-4C62-8A7B-812DC9099703}" "ProductCode" = "8:{40AF707C-0E9B-4786-A353-C49A7288B8E5}"
"PackageCode" = "8:{7E765723-5387-4BC6-9543-542D3C759786}" "PackageCode" = "8:{7C6E8F8C-262F-4230-92A2-4E3E95F7B70E}"
"UpgradeCode" = "8:{9AB61EFF-ACAC-4079-9950-8D96615CD4EF}" "UpgradeCode" = "8:{9AB61EFF-ACAC-4079-9950-8D96615CD4EF}"
"AspNetVersion" = "8:2.0.50727.0" "AspNetVersion" = "8:2.0.50727.0"
"RestartWWWService" = "11:FALSE" "RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE" "RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:FALSE" "InstallAllUsers" = "11:FALSE"
"ProductVersion" = "8:1.1.40" "ProductVersion" = "8:1.1.41"
"Manufacturer" = "8:oscar64" "Manufacturer" = "8:oscar64"
"ARPHELPTELEPHONE" = "8:" "ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:" "ARPHELPLINK" = "8:"