1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-26 05:29:30 +00:00

Followed the discussions in the Pull request #682.

* Fixed a misspelling
* Fixed styles
* Added sample codes
This commit is contained in:
AIDA Shinra 2018-06-12 02:06:01 +09:00
parent 335a8972b9
commit 8899d71cad
14 changed files with 195 additions and 13 deletions

View File

@ -312,7 +312,7 @@ anything). Each attribute is terminated by a semicolon.
<sect1>Comments<p> <sect1>Comments<p>
Comments start with a hash mark (<tt/#/) or a double slashe (<tt>//</tt>); Comments start with a hash mark (<tt/#/) or a double slash (<tt>//</tt>);
and, extend from the position of the mark to the end of the current line. and, extend from the position of the mark to the end of the current line.
Hash marks or double slashes inside of strings will <em/not/ start a comment, Hash marks or double slashes inside of strings will <em/not/ start a comment,
of course. of course.

View File

@ -59,6 +59,7 @@ unsigned char PassCount = 2; /* How many passed do we do? */
signed char NewlineAfterJMP = -1; /* Add a newline after a JMP insn? */ signed char NewlineAfterJMP = -1; /* Add a newline after a JMP insn? */
signed char NewlineAfterRTS = -1; /* Add a newline after a RTS insn? */ signed char NewlineAfterRTS = -1; /* Add a newline after a RTS insn? */
long StartAddr = -1L; /* Start/load address of the program */ long StartAddr = -1L; /* Start/load address of the program */
unsigned char SyncLines = 0; /* Accept line markers in the info file */
long InputOffs = -1L; /* Offset into input file */ long InputOffs = -1L; /* Offset into input file */
long InputSize = -1L; /* Number of bytes to read from input */ long InputSize = -1L; /* Number of bytes to read from input */

View File

@ -60,6 +60,7 @@ extern unsigned char PassCount; /* How many passed do we do? */
extern signed char NewlineAfterJMP;/* Add a newline after a JMP insn? */ extern signed char NewlineAfterJMP;/* Add a newline after a JMP insn? */
extern signed char NewlineAfterRTS;/* Add a newline after a RTS insn? */ extern signed char NewlineAfterRTS;/* Add a newline after a RTS insn? */
extern long StartAddr; /* Start/load address of the program */ extern long StartAddr; /* Start/load address of the program */
extern unsigned char SyncLines; /* Accept line markers in the info file */
extern long InputOffs; /* Offset into input file */ extern long InputOffs; /* Offset into input file */
extern long InputSize; /* Number of bytes to read from input */ extern long InputSize; /* Number of bytes to read from input */

View File

@ -318,7 +318,7 @@ static void OptSyncLines (const char* Opt attribute ((unused)),
const char* Arg attribute ((unused))) const char* Arg attribute ((unused)))
/* Handle the --sync-lines option */ /* Handle the --sync-lines option */
{ {
InfoSyncLines = 1; SyncLines = 1;
} }

View File

@ -76,8 +76,6 @@ static unsigned InputCol = 0;
static FILE* InputFile = 0; static FILE* InputFile = 0;
static char* InputSrcName = 0; static char* InputSrcName = 0;
/* Options */
unsigned char InfoSyncLines = 0;
/*****************************************************************************/ /*****************************************************************************/
@ -119,6 +117,7 @@ void InfoError (const char* Format, ...)
/*****************************************************************************/ /*****************************************************************************/
/* Code */ /* Code */
/*****************************************************************************/ /*****************************************************************************/
@ -164,7 +163,7 @@ static void SkipBlanks (int SingleLine)
} }
} }
static long GetDecimalToken () static long GetDecimalToken (void)
{ {
long Value = 0; long Value = 0;
@ -226,15 +225,15 @@ Store:
static void LineMarkerOrComment () static void LineMarkerOrComment ()
/* Handle a line beginning with '#'. Possible interpretations are: /* Handle a line beginning with '#'. Possible interpretations are:
* - #line <lineno> ["<filename>"] (C preprocessor input) ** - #line <lineno> ["<filename>"] (C preprocessor input)
* - # <lineno> "<filename>" [<flag>]... (gcc preprocessor output) ** - # <lineno> "<filename>" [<flag>]... (gcc preprocessor output)
* - #<comment> ** - #<comment>
*/ */
{ {
unsigned long LineNo = 0; unsigned long LineNo = 0;
int LineDirective = 0; int LineDirective = 0;
StrBuf SrcNameBuf = AUTO_STRBUF_INITIALIZER; StrBuf SrcNameBuf = AUTO_STRBUF_INITIALIZER;
/* Skip the first "# " */ /* Skip the first "# " */
NextChar (); NextChar ();
SkipBlanks (1); SkipBlanks (1);
@ -440,7 +439,7 @@ Again:
case '#': case '#':
/* # lineno "sourcefile" or # comment */ /* # lineno "sourcefile" or # comment */
if (InfoSyncLines && InputCol == 1) { if (SyncLines && InputCol == 1) {
LineMarkerOrComment (); LineMarkerOrComment ();
} else { } else {
do { do {

View File

@ -137,8 +137,6 @@ extern long InfoIVal;
extern unsigned InfoErrorLine; extern unsigned InfoErrorLine;
extern unsigned InfoErrorCol; extern unsigned InfoErrorCol;
/* Options */
extern unsigned char InfoSyncLines;
/*****************************************************************************/ /*****************************************************************************/

2
testcode/disasm/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.s
image.bin

16
testcode/disasm/bank0.da Normal file
View File

@ -0,0 +1,16 @@
// Da65 input file before preprocessed by cpp
// Bank0 ROM map
#define TARGET_BANK 0
global {
inputoffs $00010;
inputsize $4000;
startaddr $8000;
cpu "6502";
};
#include "fixed.da"
label { addr $8000; name "Bank0ProcA"; };
label { addr $8123; name "Bank0ProcB"; };
range { start $A000; end $BFFF; name "Bank0Data"; type ByteTable; };

33
testcode/disasm/bank0.dai Normal file
View File

@ -0,0 +1,33 @@
# 1 "bank0.da"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "bank0.da"
global {
inputoffs $00010;
inputsize $4000;
startaddr $8000;
cpu "6502";
};
# 1 "fixed.da" 1
# 18 "fixed.da"
label { addr $00; name "VariableA"; };
label { addr $01; name "VariableB"; };
label { addr $0100; name "Stack"; size $0100; };
label { addr $C000; name "CommonProcA"; };
label { addr $C123; name "CommonProcB"; };
range { start $E123; end $FFFF; name "CommonData"; type ByteTable; };
# 13 "bank0.da" 2
label { addr $8000; name "Bank0ProcA"; };
label { addr $8123; name "Bank0ProcB"; };
range { start $A000; end $BFFF; name "Bank0Data"; type ByteTable; };

16
testcode/disasm/bank1.da Normal file
View File

@ -0,0 +1,16 @@
// Da65 input file before preprocessed by cpp
// Bank1 ROM map
#define TARGET_BANK 1
global {
inputoffs $04010;
inputsize $4000;
startaddr $8000;
cpu "6502";
};
#include "fixed.da"
range { start $8000; end $AFFF; name "Bank1Data"; type ByteTable; };
label { addr $B000; name "Bank1ProcA"; };
label { addr $B123; name "Bank1ProcB"; };

33
testcode/disasm/bank1.dai Normal file
View File

@ -0,0 +1,33 @@
# 1 "bank1.da"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "bank1.da"
global {
inputoffs $04010;
inputsize $4000;
startaddr $8000;
cpu "6502";
};
# 1 "fixed.da" 1
# 18 "fixed.da"
label { addr $00; name "VariableA"; };
label { addr $01; name "VariableB"; };
label { addr $0100; name "Stack"; size $0100; };
label { addr $C000; name "CommonProcA"; };
label { addr $C123; name "CommonProcB"; };
range { start $E123; end $FFFF; name "CommonData"; type ByteTable; };
# 13 "bank1.da" 2
range { start $8000; end $AFFF; name "Bank1Data"; type ByteTable; };
label { addr $B000; name "Bank1ProcA"; };
label { addr $B123; name "Bank1ProcB"; };

30
testcode/disasm/fixed.da Normal file
View File

@ -0,0 +1,30 @@
// Da65 input file before preprocessed by cpp
// RAM and Fixed ROM map
#ifndef FIXED_DA_INCLUDED
#define FIXED_DA_INCLUDED
#ifndef TARGET_BANK
#define TARGET_BANK -1
global {
inputoffs $1C010;
inputsize $4000;
startaddr $C000;
cpu "6502";
};
#endif /* !defined(TARGET_BANK) */
// ---- RAM map ----
label { addr $00; name "VariableA"; };
label { addr $01; name "VariableB"; };
label { addr $0100; name "Stack"; size $0100; };
#if defined(TEST_ERROR) && TARGET_BANK == 0
erroneous_line;
#endif
// ---- Fixed ROM map ----
label { addr $C000; name "CommonProcA"; };
label { addr $C123; name "CommonProcB"; };
range { start $E123; end $FFFF; name "CommonData"; type ByteTable; };
#endif /* !defined(FIXED_DA_INCLUDED) */

25
testcode/disasm/fixed.dai Normal file
View File

@ -0,0 +1,25 @@
# 1 "fixed.da"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "fixed.da"
# 9 "fixed.da"
global {
inputoffs $1C010;
inputsize $4000;
startaddr $C000;
cpu "6502";
};
label { addr $00; name "VariableA"; };
label { addr $01; name "VariableB"; };
label { addr $0100; name "Stack"; size $0100; };
label { addr $C000; name "CommonProcA"; };
label { addr $C123; name "CommonProcB"; };
range { start $E123; end $FFFF; name "CommonData"; type ByteTable; };

View File

@ -0,0 +1,28 @@
# Sample makefile using a preprocessor against info files
# and the --sync-lines option
CPP = env LANG=C cpp
CPPFLAGS = # -DTEST_ERROR
ASMS = fixed.s bank0.s bank1.s
DAIS = fixed.dai bank0.dai bank1.dai
.SUFFIXES: .da .dai .s
.PHONY: all clean maintainer-clean
.SECONDARY: $(DAIS)
.da.dai:
$(CPP) -o $@ $(CPPFLAGS) $<
.dai.s:
da65 --sync-lines -o $@ -i $< image.bin
all: $(ASMS)
clean:
rm -f $(ASMS)
maintainer-clean: clean
rm -f $(DAIS)
$(DAIS): fixed.da