Take BSS into account (like done for Apple GEOS in the first place).
git-svn-id: svn://svn.cc65.org/cc65/trunk@5563 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -164,7 +164,7 @@ static void OptTarget (const char* Opt attribute ((unused)), const char* Arg)
|
|||||||
|
|
||||||
static void OptVersion (const char* Opt attribute ((unused)),
|
static void OptVersion (const char* Opt attribute ((unused)),
|
||||||
const char* Arg attribute ((unused)))
|
const char* Arg attribute ((unused)))
|
||||||
/* Print the assembler version */
|
/* Print the program version */
|
||||||
{
|
{
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
"grc65 V%s - (C) Copyright, Maciej 'YTM/Elysium' Witkowiak\n",
|
"grc65 V%s - (C) Copyright, Maciej 'YTM/Elysium' Witkowiak\n",
|
||||||
@@ -266,7 +266,7 @@ static void fillOut (char *name, int len, char *filler)
|
|||||||
{
|
{
|
||||||
int a;
|
int a;
|
||||||
|
|
||||||
setLen(name, len);
|
setLen (name, len);
|
||||||
fprintf (outputSFile, "\t.byte \"%s\"\n", name);
|
fprintf (outputSFile, "\t.byte \"%s\"\n", name);
|
||||||
|
|
||||||
a = strlen (name);
|
a = strlen (name);
|
||||||
@@ -319,7 +319,7 @@ static void DoMenu (void)
|
|||||||
myMenu.top = atoi (nextWord ());
|
myMenu.top = atoi (nextWord ());
|
||||||
myMenu.type = nextWord ();
|
myMenu.type = nextWord ();
|
||||||
|
|
||||||
if (strcmp(nextWord (), "{") != 0) {
|
if (strcmp (nextWord (), "{") != 0) {
|
||||||
AbEnd ("Menu '%s' description has no opening bracket!", myMenu.name);
|
AbEnd ("Menu '%s' description has no opening bracket!", myMenu.name);
|
||||||
}
|
}
|
||||||
curItem = xmalloc (sizeof(struct menuitem));
|
curItem = xmalloc (sizeof(struct menuitem));
|
||||||
@@ -328,13 +328,13 @@ static void DoMenu (void)
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
token = nextWord ();
|
token = nextWord ();
|
||||||
if (strcmp (token, "}") == 0) break;
|
if (strcmp (token, "}") == 0) break;
|
||||||
if (token[strlen(token) - 1] != '"') {
|
if (token[strlen (token) - 1] != '"') {
|
||||||
strcpy (namebuff, token);
|
strcpy (namebuff, token);
|
||||||
do {
|
do {
|
||||||
token = nextWord ();
|
token = nextWord ();
|
||||||
strcat (namebuff, " ");
|
strcat (namebuff, " ");
|
||||||
strcat (namebuff, token);
|
strcat (namebuff, token);
|
||||||
} while (token[strlen(token) - 1] != '"');
|
} while (token[strlen (token) - 1] != '"');
|
||||||
token = xmalloc (strlen (namebuff));
|
token = xmalloc (strlen (namebuff));
|
||||||
strcpy (token, namebuff);
|
strcpy (token, namebuff);
|
||||||
}
|
}
|
||||||
@@ -430,7 +430,7 @@ static void DoHeader (void)
|
|||||||
|
|
||||||
token = nextWord ();
|
token = nextWord ();
|
||||||
|
|
||||||
i = findToken(hdrFTypes, token);
|
i = findToken (hdrFTypes, token);
|
||||||
|
|
||||||
if (apple == 1) {
|
if (apple == 1) {
|
||||||
switch (i) {
|
switch (i) {
|
||||||
@@ -674,11 +674,11 @@ static void DoMemory (void)
|
|||||||
|
|
||||||
stacksize = -1;
|
stacksize = -1;
|
||||||
overlaysize = -1;
|
overlaysize = -1;
|
||||||
memset (overlaytable, 0, sizeof(overlaytable));
|
memset (overlaytable, 0, sizeof (overlaytable));
|
||||||
lastnumber = -1;
|
lastnumber = -1;
|
||||||
backbuffer = -1;
|
backbuffer = -1;
|
||||||
|
|
||||||
if (strcmp(nextWord (), "{") != 0) {
|
if (strcmp (nextWord (), "{") != 0) {
|
||||||
AbEnd ("MEMORY description has no opening bracket!");
|
AbEnd ("MEMORY description has no opening bracket!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -785,8 +785,8 @@ static void DoMemory (void)
|
|||||||
for (number = 0; number <= lastnumber; number++) {
|
for (number = 0; number <= lastnumber; number++) {
|
||||||
if (overlaytable[number] == 1) {
|
if (overlaytable[number] == 1) {
|
||||||
fprintf (outputSFile,
|
fprintf (outputSFile,
|
||||||
"\t.import __VLIR%i_START__, __VLIR%i_LAST__\n",
|
"\t.import __VLIR%i_START__, __VLIR%i_LAST__%s\n",
|
||||||
number, number);
|
number, number, number == 0 ? ", __BSS_SIZE__" : "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fprintf (outputSFile,
|
fprintf (outputSFile,
|
||||||
@@ -795,9 +795,10 @@ static void DoMemory (void)
|
|||||||
for (number = 0; number <= lastnumber; number++) {
|
for (number = 0; number <= lastnumber; number++) {
|
||||||
if (overlaytable[number] == 1) {
|
if (overlaytable[number] == 1) {
|
||||||
fprintf (outputSFile,
|
fprintf (outputSFile,
|
||||||
"\t.byte .lobyte ((__VLIR%i_LAST__ - __VLIR%i_START__ - 1) / 254) + 1\n"
|
"\t.byte .lobyte ((__VLIR%i_LAST__ - __VLIR%i_START__%s - 1) / 254) + 1\n"
|
||||||
"\t.byte .lobyte ((__VLIR%i_LAST__ - __VLIR%i_START__ - 1) .MOD 254) + 2\n",
|
"\t.byte .lobyte ((__VLIR%i_LAST__ - __VLIR%i_START__%s - 1) .MOD 254) + 2\n",
|
||||||
number, number, number, number);
|
number, number, number == 0 ? " - __BSS_SIZE__" : "",
|
||||||
|
number, number, number == 0 ? " - __BSS_SIZE__" : "");
|
||||||
} else {
|
} else {
|
||||||
fprintf (outputSFile,
|
fprintf (outputSFile,
|
||||||
"\t.byte $00\n"
|
"\t.byte $00\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user