Merge pull request #2794 from mrdudz/fixgrc

Fixgrc
This commit is contained in:
Bob Andrews
2025-07-27 00:23:02 +02:00
committed by GitHub
3 changed files with 150 additions and 86 deletions

View File

@@ -8,6 +8,26 @@ SYMBOLS {
__OVERLAYADDR__: type = weak, value = __HIMEM__ - __OVERLAYSIZE__; __OVERLAYADDR__: type = weak, value = __HIMEM__ - __OVERLAYSIZE__;
__STACKSIZE__: type = weak, value = $0400; # 1k stack __STACKSIZE__: type = weak, value = $0400; # 1k stack
__STACKADDR__: type = weak, value = __OVERLAYADDR__ - __STACKSIZE__; __STACKADDR__: type = weak, value = __OVERLAYADDR__ - __STACKSIZE__;
__VLIR0_BLOCKS__: type = export, value = ((__VLIR0_LAST__ - __VLIR0_START__ - __BSS_SIZE__) + 253) / 254;
__VLIR1_BLOCKS__: type = export, value = ((__VLIR1_LAST__ - __VLIR1_START__) + 253) / 254;
__VLIR2_BLOCKS__: type = export, value = ((__VLIR2_LAST__ - __VLIR2_START__) + 253) / 254;
__VLIR3_BLOCKS__: type = export, value = ((__VLIR3_LAST__ - __VLIR3_START__) + 253) / 254;
__VLIR4_BLOCKS__: type = export, value = ((__VLIR4_LAST__ - __VLIR4_START__) + 253) / 254;
__VLIR5_BLOCKS__: type = export, value = ((__VLIR5_LAST__ - __VLIR5_START__) + 253) / 254;
__VLIR6_BLOCKS__: type = export, value = ((__VLIR6_LAST__ - __VLIR6_START__) + 253) / 254;
__VLIR7_BLOCKS__: type = export, value = ((__VLIR7_LAST__ - __VLIR7_START__) + 253) / 254;
__VLIR8_BLOCKS__: type = export, value = ((__VLIR8_LAST__ - __VLIR8_START__) + 253) / 254;
__VLIR9_BLOCKS__: type = export, value = ((__VLIR9_LAST__ - __VLIR9_START__) + 253) / 254;
__VLIR10_BLOCKS__: type = export, value = ((__VLIR10_LAST__ - __VLIR10_START__) + 253) / 254;
__VLIR11_BLOCKS__: type = export, value = ((__VLIR11_LAST__ - __VLIR11_START__) + 253) / 254;
__VLIR12_BLOCKS__: type = export, value = ((__VLIR12_LAST__ - __VLIR12_START__) + 253) / 254;
__VLIR13_BLOCKS__: type = export, value = ((__VLIR13_LAST__ - __VLIR13_START__) + 253) / 254;
__VLIR14_BLOCKS__: type = export, value = ((__VLIR14_LAST__ - __VLIR14_START__) + 253) / 254;
__VLIR15_BLOCKS__: type = export, value = ((__VLIR15_LAST__ - __VLIR15_START__) + 253) / 254;
__VLIR16_BLOCKS__: type = export, value = ((__VLIR16_LAST__ - __VLIR16_START__) + 253) / 254;
__VLIR17_BLOCKS__: type = export, value = ((__VLIR17_LAST__ - __VLIR17_START__) + 253) / 254;
__VLIR18_BLOCKS__: type = export, value = ((__VLIR18_LAST__ - __VLIR18_START__) + 253) / 254;
__VLIR19_BLOCKS__: type = export, value = ((__VLIR19_LAST__ - __VLIR19_START__) + 253) / 254;
} }
MEMORY { MEMORY {
CVT: file = %O, start = $0, size = $40000; CVT: file = %O, start = $0, size = $40000;

View File

@@ -39,10 +39,12 @@ ifdef CMD_EXE
NULLDEV = nul: NULLDEV = nul:
DEL = -del /f DEL = -del /f
RMDIR = rmdir /s /q RMDIR = rmdir /s /q
CP = copy
else else
NULLDEV = /dev/null NULLDEV = /dev/null
DEL = $(RM) DEL = $(RM)
RMDIR = $(RM) -r RMDIR = $(RM) -r
CP = cp
endif endif
ifdef CC65_HOME ifdef CC65_HOME
@@ -107,7 +109,11 @@ $(C1541) -attach $(0).d64 -geoswrite $(1);
endef endef
samples-geos: $(EXELIST_$(SYS)) samples-geos: $(EXELIST_$(SYS))
ifeq (,$(wildcard ./geos-template.d64))
$(C1541) -format "$@,01" d64 $@.d64 $(C1541) -format "$@,01" d64 $@.d64
else
$(CP) geos-template.d64 $@.d64
endif
$(foreach tool,$(EXELIST_$(SYS)),$(call samples-geos,$(tool))) $(foreach tool,$(EXELIST_$(SYS)),$(call samples-geos,$(tool)))
else else
samples: samples:
@@ -172,4 +178,5 @@ clean:
@$(DEL) bitmap.c 2>$(NULLDEV) @$(DEL) bitmap.c 2>$(NULLDEV)
@$(DEL) *.cvt 2>$(NULLDEV) @$(DEL) *.cvt 2>$(NULLDEV)
@$(DEL) *.map 2>$(NULLDEV) @$(DEL) *.map 2>$(NULLDEV)
@$(DEL) samples-geos.d64 2>$(NULLDEV)
$(foreach dir,$(DIRLIST),$(SUBDIR_recipe)) $(foreach dir,$(DIRLIST),$(SUBDIR_recipe))

View File

@@ -64,6 +64,9 @@ struct appheader {
char *icon; char *icon;
}; };
#define APPHEADER_STRUCTURE_SEQ 0
#define APPHEADER_STRUCTURE_VLIR 1
const char *mainToken[] = {"MENU", "HEADER", "ICON", "DIALOG", "MEMORY", ""}; const char *mainToken[] = {"MENU", "HEADER", "ICON", "DIALOG", "MEMORY", ""};
const char *toggle[] = {"off", "no", "0", "on", "yes", "1", ""}; const char *toggle[] = {"off", "no", "0", "on", "yes", "1", ""};
@@ -114,16 +117,16 @@ static void Usage (void)
printf ( printf (
"Usage: %s [options] file\n" "Usage: %s [options] file\n"
"Short options:\n" "Short options:\n"
" -V\t\t\tPrint the version number\n" " -V Print the version number\n"
" -h\t\t\tHelp (this text)\n" " -h Help (this text)\n"
" -o name\t\tName the C output file\n" " -o name Name the C output file\n"
" -s name\t\tName the asm output file\n" " -s name Name the asm output file\n"
" -t sys\t\tSet the target system\n" " -t sys Set the target system\n"
"\n" "\n"
"Long options:\n" "Long options:\n"
" --help\t\tHelp (this text)\n" " --help Help (this text)\n"
" --target sys\t\tSet the target system\n" " --target sys Set the target system\n"
" --version\t\tPrint the version number\n", " --version Print the version number\n",
ProgName); ProgName);
} }
@@ -176,11 +179,11 @@ static void printCHeader (void)
{ {
fprintf (outputCFile, fprintf (outputCFile,
"//\n" "//\n"
"//\tThis file was generated by the GEOS Resource Compiler\n" "// This file was generated by the GEOS Resource Compiler\n"
"//\n" "//\n"
"//\tDO NOT EDIT! Any changes will be lost!\n" "// DO NOT EDIT! Any changes will be lost!\n"
"//\n" "//\n"
"//\tEdit proper resource file instead.\n" "// Edit proper resource file instead.\n"
"//\n\n"); "//\n\n");
} }
@@ -189,11 +192,11 @@ static void printSHeader (void)
{ {
fprintf (outputSFile, fprintf (outputSFile,
";\n" ";\n"
";\tThis file was generated by the GEOS Resource Compiler\n" "; This file was generated by the GEOS Resource Compiler\n"
";\n" ";\n"
";\tDO NOT EDIT! Any changes will be lost!\n" "; DO NOT EDIT! Any changes will be lost!\n"
";\n" ";\n"
";\tEdit proper resource file instead.\n" "; Edit proper resource file instead.\n"
";\n\n"); ";\n\n");
} }
@@ -268,11 +271,11 @@ 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, " .byte \"%s\"\n", name);
a = strlen (name); a = strlen (name);
if (a < len) { if (a < len) {
fprintf (outputSFile, "\t.res (%i - %i), %s\n", len, a, filler); fprintf (outputSFile, " .res (%i - %i), %s\n", len, a, filler);
} }
} }
@@ -388,15 +391,15 @@ static void DoMenu (void)
fprintf (outputCFile, fprintf (outputCFile,
"\n" "\n"
"const void %s = {\n" "const void %s = {\n"
"\t(char)%i, (char)%i,\n" " (char)%i, (char)%i,\n"
"\t(int)%i, (int)%i,\n" " (int)%i, (int)%i,\n"
"\t(char)(%i | %s),\n", " (char)(%i | %s),\n",
myMenu.name, myMenu.top, myMenu.bot, myMenu.left, myMenu.right, item, myMenu.type); myMenu.name, myMenu.top, myMenu.bot, myMenu.left, myMenu.right, item, myMenu.type);
curItem = myMenu.item; curItem = myMenu.item;
for (a = 0; a != item; a++) { for (a = 0; a != item; a++) {
fprintf (outputCFile, fprintf (outputCFile,
"\t%s, (char)%s, (int)", " %s, (char)%s, (int)",
curItem->name, curItem->type); curItem->name, curItem->type);
if ((strstr (curItem->type, "SUB_MENU") != NULL) && (strstr (curItem->type, "DYN_SUB_MENU") == NULL)) { if ((strstr (curItem->type, "SUB_MENU") != NULL) && (strstr (curItem->type, "DYN_SUB_MENU") == NULL)) {
fprintf (outputCFile, fprintf (outputCFile,
@@ -464,8 +467,10 @@ static void DoHeader (void)
myHead.author = "cc65"; myHead.author = "cc65";
myHead.info = "Program compiled with cc65 and GEOSLib."; myHead.info = "Program compiled with cc65 and GEOSLib.";
myHead.dostype = 128; myHead.dostype = 128;
if (apple == 0) myHead.dostype += 3; if (apple == 0) {
myHead.structure = 0; myHead.dostype += 3;
}
myHead.structure = APPHEADER_STRUCTURE_SEQ;
myHead.mode = 0; myHead.mode = 0;
myHead.icon = NULL; myHead.icon = NULL;
@@ -542,11 +547,11 @@ static void DoHeader (void)
AbEnd ("unknown structure type in header '%s'", myHead.dosname); AbEnd ("unknown structure type in header '%s'", myHead.dosname);
case 0: case 0:
case 1: case 1:
myHead.structure = 0; myHead.structure = APPHEADER_STRUCTURE_SEQ;
break; break;
case 2: case 2:
case 3: case 3:
myHead.structure = 1; myHead.structure = APPHEADER_STRUCTURE_VLIR;
break; break;
} }
break; break;
@@ -560,35 +565,60 @@ static void DoHeader (void)
/* OK, all information is gathered, do flushout */ /* OK, all information is gathered, do flushout */
fprintf (outputSFile, fprintf (outputSFile,
"\t\t.segment \"DIRENTRY\"\n\n"); " .import __BSS_SIZE__, __STARTUP_RUN__\n"
" .import __VLIR0_START__, __VLIR0_LAST__\n"
" .import __VLIR0_BLOCKS__\n"
" .import __VLIR1_BLOCKS__\n"
" .import __VLIR2_BLOCKS__\n"
" .import __VLIR3_BLOCKS__\n"
" .import __VLIR4_BLOCKS__\n"
" .import __VLIR5_BLOCKS__\n"
" .import __VLIR6_BLOCKS__\n"
" .import __VLIR7_BLOCKS__\n"
" .import __VLIR8_BLOCKS__\n"
" .import __VLIR9_BLOCKS__\n"
" .import __VLIR10_BLOCKS__\n"
" .import __VLIR11_BLOCKS__\n"
" .import __VLIR12_BLOCKS__\n"
" .import __VLIR13_BLOCKS__\n"
" .import __VLIR14_BLOCKS__\n"
" .import __VLIR15_BLOCKS__\n"
" .import __VLIR16_BLOCKS__\n"
" .import __VLIR17_BLOCKS__\n"
" .import __VLIR18_BLOCKS__\n"
" .import __VLIR19_BLOCKS__\n\n"
);
fprintf (outputSFile,
" .segment \"DIRENTRY\"\n\n");
if (apple == 1) { if (apple == 1) {
if (myHead.structure == 0) { if (myHead.structure == APPHEADER_STRUCTURE_SEQ) {
fprintf (outputSFile, fprintf (outputSFile,
"\t.import __VLIR0_START__, __VLIR0_LAST__, __BSS_SIZE__\n\n"); " .import __VLIR0_START__, __VLIR0_LAST__, __BSS_SIZE__\n\n");
} }
fprintf (outputSFile, fprintf (outputSFile,
"\t.byte %i << 4 | %u\n", " .byte %i << 4 | %u\n",
myHead.structure + 2, (unsigned)strlen (myHead.dosname)); myHead.structure + 2, (unsigned)strlen (myHead.dosname));
fillOut (myHead.dosname, 15, "0"); fillOut (myHead.dosname, 15, "0");
fprintf (outputSFile, fprintf (outputSFile,
"\t.byte $%02x\n" " .byte $%02x\n"
"\t.word 0\n" " .word 0\n"
"\t.word 0\n" " .word 0\n"
"\t.word %s\n" " .word %s\n"
"\t.byte 0\n" " .byte 0\n"
"\t.word %i << 9 | %i << 5 | %i, %i << 8 | %i\n" " .word %i << 9 | %i << 5 | %i, %i << 8 | %i\n"
"\t.byte 0\n" " .byte 0\n"
"\t.byte 0\n" " .byte 0\n"
"\t.byte 0\n" " .byte 0\n"
"\t.word 0\n" " .word 0\n"
"\t.word %i << 9 | %i << 5 | %i, %i << 8 | %i\n" " .word %i << 9 | %i << 5 | %i, %i << 8 | %i\n"
"\t.word 0\n\n", " .word 0\n\n",
myHead.geostype, myHead.geostype,
myHead.structure == 0 ? myHead.structure == APPHEADER_STRUCTURE_SEQ ?
"__VLIR0_LAST__ - __VLIR0_START__ - __BSS_SIZE__" : "0", "__VLIR0_LAST__ - __VLIR0_START__ - __BSS_SIZE__" : "0",
myHead.year, myHead.month, myHead.day, myHead.hour, myHead.min, myHead.year, myHead.month, myHead.day, myHead.hour, myHead.min,
myHead.year, myHead.month, myHead.day, myHead.hour, myHead.min); myHead.year, myHead.month, myHead.day, myHead.hour, myHead.min);
@@ -596,43 +626,50 @@ static void DoHeader (void)
} else { } else {
fprintf (outputSFile, fprintf (outputSFile,
"\t.byte %i\n" " .byte %i\n"
"\t.word 0\n", " .word 0\n",
myHead.dostype); myHead.dostype);
fillOut (myHead.dosname, 16, "$a0"); fillOut (myHead.dosname, 16, "$a0");
fprintf (outputSFile, fprintf (outputSFile,
"\t.word 0\n" " .word 0\n"
"\t.byte %i\n" " .byte %i\n"
"\t.byte %i\n" " .byte %i\n"
"\t.byte %i, %i, %i, %i, %i\n\n" " .byte %i, %i, %i, %i, %i\n\n"
"\t.word 0\n" /* length in blocks:
"\t.byte \"PRG formatted GEOS file V1.0\"\n\n", * add size of each VLIR segment, plus 1 block for the info block (icon),
* plus another block for the VLIR RECORDS table (VLIR structure only)
*/
" .word %d + __VLIR0_BLOCKS__ + __VLIR1_BLOCKS__ + __VLIR2_BLOCKS__ + __VLIR3_BLOCKS__ + __VLIR4_BLOCKS__ + __VLIR5_BLOCKS__ + __VLIR6_BLOCKS__ + __VLIR7_BLOCKS__ + __VLIR8_BLOCKS__ + __VLIR9_BLOCKS__ + __VLIR10_BLOCKS__ + __VLIR11_BLOCKS__ + __VLIR12_BLOCKS__ + __VLIR13_BLOCKS__ + __VLIR14_BLOCKS__ + __VLIR15_BLOCKS__ + __VLIR16_BLOCKS__ + __VLIR17_BLOCKS__ + __VLIR18_BLOCKS__ + __VLIR19_BLOCKS__\n"
/* PRG formatted or SEQ formatted */
" .byte \"%s formatted GEOS file V1.0\"\n\n",
myHead.structure, myHead.geostype, myHead.structure, myHead.geostype,
myHead.year, myHead.month, myHead.day, myHead.hour, myHead.min); myHead.year, myHead.month, myHead.day, myHead.hour, myHead.min,
(myHead.structure == APPHEADER_STRUCTURE_SEQ) ? 1 : 2,
(myHead.structure == APPHEADER_STRUCTURE_SEQ) ? "SEQ" : "PRG"
);
} }
fprintf (outputSFile, fprintf (outputSFile,
"\t\t.segment \"FILEINFO\"\n\n" " .segment \"FILEINFO\"\n\n"
"\t.import __VLIR0_START__, __STARTUP_RUN__\n\n" " .byte 3, 21, 63 | $80\n");
"\t.byte 3, 21, 63 | $80\n");
if (myHead.icon != NULL) { if (myHead.icon != NULL) {
fprintf (outputSFile, fprintf (outputSFile,
"\t.incbin \"%s\", 0, 63\n", " .incbin \"%s\", 0, 63\n",
myHead.icon); myHead.icon);
} else { } else {
for (i = 0; i != 63; i = i + 3) { for (i = 0; i != 63; i = i + 3) {
fprintf (outputSFile, fprintf (outputSFile,
"\t.byte %%%s, %%%s, %%%s\n", " .byte %%%s, %%%s, %%%s\n",
bintos (icon1[i], i1), bintos (icon1[i+1], i2), bintos (icon1[i+2], i3)); bintos (icon1[i], i1), bintos (icon1[i+1], i2), bintos (icon1[i+2], i3));
} }
} }
fprintf (outputSFile, fprintf (outputSFile,
"\t.byte %i, %i, %i\n" " .byte %i, %i, %i\n"
"\t.word __VLIR0_START__, __VLIR0_START__ - 1, __STARTUP_RUN__\n\n", " .word __VLIR0_START__, __VLIR0_START__ - 1, __STARTUP_RUN__\n\n",
myHead.dostype, myHead.geostype, myHead.structure); myHead.dostype, myHead.geostype, myHead.structure);
fillOut (myHead.classname, 12, "$20"); fillOut (myHead.classname, 12, "$20");
@@ -640,21 +677,21 @@ static void DoHeader (void)
fillOut (myHead.version, 4, "0"); fillOut (myHead.version, 4, "0");
fprintf (outputSFile, fprintf (outputSFile,
"\t.byte 0, 0, 0\n" " .byte 0, 0, 0\n"
"\t.byte %i\n\n", " .byte %i\n\n",
myHead.mode); myHead.mode);
setLen (myHead.author, 62); setLen (myHead.author, 62);
fprintf (outputSFile, fprintf (outputSFile,
"\t.byte \"%s\"\n" " .byte \"%s\"\n"
"\t.byte 0\n" " .byte 0\n"
"\t.res (63 - %i)\n\n", " .res (63 - %i)\n\n",
myHead.author, (int)(strlen (myHead.author) + 1)); myHead.author, (int)(strlen (myHead.author) + 1));
setLen (myHead.info, 95); setLen (myHead.info, 95);
fprintf (outputSFile, fprintf (outputSFile,
"\t.byte \"%s\"\n" " .byte \"%s\"\n"
"\t.byte 0\n\n", " .byte 0\n\n",
myHead.info); myHead.info);
if (fclose (outputSFile) != 0) { if (fclose (outputSFile) != 0) {
@@ -751,13 +788,13 @@ static void DoMemory (void)
if (lastnumber != -1) { if (lastnumber != -1) {
fprintf (outputSFile, fprintf (outputSFile,
"\t\t.segment \"RECORDS\"\n\n"); " .segment \"RECORDS\"\n\n");
if (apple == 1) { if (apple == 1) {
for (number = 0; number <= lastnumber; number++) { for (number = 0; number <= lastnumber; number++) {
fprintf (outputSFile, fprintf (outputSFile,
"\t.byte %s\n", " .byte %s\n",
overlaytable[number] == 1 ? "$00" : "$FF"); overlaytable[number] == 1 ? "$00" : "$FF");
} }
fprintf (outputSFile, fprintf (outputSFile,
@@ -766,12 +803,12 @@ 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\t.segment \"VLIRIDX%i\"\n\n" " .segment \"VLIRIDX%i\"\n\n"
"\t.import __VLIR%i_START__, __VLIR%i_LAST__%s\n\n" " .import __VLIR%i_START__, __VLIR%i_LAST__%s\n\n"
"\t.res 255\n" " .res 255\n"
"\t.byte .lobyte (__VLIR%i_LAST__ - __VLIR%i_START__%s)\n" " .byte .lobyte (__VLIR%i_LAST__ - __VLIR%i_START__%s)\n"
"\t.res 255\n" " .res 255\n"
"\t.byte .hibyte (__VLIR%i_LAST__ - __VLIR%i_START__%s)\n\n", " .byte .hibyte (__VLIR%i_LAST__ - __VLIR%i_START__%s)\n\n",
number, number, number, number, number, number,
number == 0 ? ", __BSS_SIZE__" : "", number == 0 ? ", __BSS_SIZE__" : "",
number, number, number, number,
@@ -786,7 +823,7 @@ 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__%s\n", " .import __VLIR%i_START__, __VLIR%i_LAST__%s\n",
number, number, number == 0 ? ", __BSS_SIZE__" : ""); number, number, number == 0 ? ", __BSS_SIZE__" : "");
} }
} }
@@ -796,14 +833,14 @@ 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__%s - 1) / 254) + 1\n" " .byte .lobyte ((__VLIR%i_LAST__ - __VLIR%i_START__%s - 1) / 254) + 1\n"
"\t.byte .lobyte ((__VLIR%i_LAST__ - __VLIR%i_START__%s - 1) .MOD 254) + 2\n", " .byte .lobyte ((__VLIR%i_LAST__ - __VLIR%i_START__%s - 1) .MOD 254) + 2\n",
number, number, number == 0 ? " - __BSS_SIZE__" : "", number, number, number == 0 ? " - __BSS_SIZE__" : "",
number, number, number == 0 ? " - __BSS_SIZE__" : ""); number, number, number == 0 ? " - __BSS_SIZE__" : "");
} else { } else {
fprintf (outputSFile, fprintf (outputSFile,
"\t.byte $00\n" " .byte $00\n"
"\t.byte $FF\n"); " .byte $FF\n");
} }
} }
fprintf (outputSFile, fprintf (outputSFile,
@@ -825,19 +862,19 @@ static void DoMemory (void)
if (stacksize != -1) { if (stacksize != -1) {
fprintf (outputSFile, fprintf (outputSFile,
"\t.export __STACKSIZE__ : absolute = $%04x\n\n", " .export __STACKSIZE__ : absolute = $%04x\n\n",
stacksize); stacksize);
} }
if (overlaysize != -1) { if (overlaysize != -1) {
fprintf (outputSFile, fprintf (outputSFile,
"\t.export __OVERLAYSIZE__ : absolute = $%04x\n\n", " .export __OVERLAYSIZE__ : absolute = $%04x\n\n",
overlaysize); overlaysize);
} }
if (backbuffer != -1) { if (backbuffer != -1) {
fprintf (outputSFile, fprintf (outputSFile,
"\t.export __BACKBUFSIZE__ : absolute = $%04x\n\n", " .export __BACKBUFSIZE__ : absolute = $%04x\n\n",
backbuffer ? 0x2000 : 0x0000); backbuffer ? 0x2000 : 0x0000);
} }