]> git.sur5r.net Git - cc65/commitdiff
Followed the discussions in the Pull request #682.
authorAIDA Shinra <shinra@j10n.org>
Mon, 11 Jun 2018 17:06:01 +0000 (02:06 +0900)
committerAIDA Shinra <shinra@j10n.org>
Wed, 13 Jun 2018 17:02:16 +0000 (02:02 +0900)
* Fixed a misspelling
* Fixed styles
* Added sample codes

14 files changed:
doc/da65.sgml
src/da65/global.c
src/da65/global.h
src/da65/main.c
src/da65/scanner.c
src/da65/scanner.h
testcode/disasm/.gitignore [new file with mode: 0644]
testcode/disasm/bank0.da [new file with mode: 0644]
testcode/disasm/bank0.dai [new file with mode: 0644]
testcode/disasm/bank1.da [new file with mode: 0644]
testcode/disasm/bank1.dai [new file with mode: 0644]
testcode/disasm/fixed.da [new file with mode: 0644]
testcode/disasm/fixed.dai [new file with mode: 0644]
testcode/disasm/sample-unix.mk [new file with mode: 0644]

index c598403896154ddfa334e43d89b9d2946f359777..05154ffd89e9c70ebf1ddfe4d0363b64ff20b23e 100644 (file)
@@ -312,7 +312,7 @@ anything). Each attribute is terminated by a semicolon.
 
 <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.
 Hash marks or double slashes inside of strings will <em/not/ start a comment,
 of course.
index e2b1fd144135ec1e38273a1fa771cb51b3ee0796..7df1bd977f6779b8da44f97d9d5991369941e7ad 100644 (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   NewlineAfterRTS = -1;     /* Add a newline after a RTS insn? */
 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          InputSize       = -1L;    /* Number of bytes to read from input */
 
index 14b1133990cb4e0021b1a71507169b1b6818472f..c85c7a79e4dca84b9162b2d6e9b89599e7c21501 100644 (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      NewlineAfterRTS;/* Add a newline after a RTS insn? */
 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             InputSize;      /* Number of bytes to read from input */
 
index 6ce5f32afb2288dfa2e3f78e67277f045c33a33d..b0a784dd88338ceb5f03bf4fb5efbde4310e0f78 100644 (file)
@@ -318,7 +318,7 @@ static void OptSyncLines (const char* Opt attribute ((unused)),
                           const char* Arg attribute ((unused)))
 /* Handle the --sync-lines option */
 {
-    InfoSyncLines = 1;
+    SyncLines = 1;
 }
 
 
index 567b513485d69d8acd8a8be4886ab8bf350e241b..a579939f9070c1dfc84d3258815281b9ba741a55 100644 (file)
@@ -76,8 +76,6 @@ static unsigned         InputCol        = 0;
 static FILE*            InputFile       = 0;
 static char*            InputSrcName    = 0;
 
-/* Options */
-unsigned char           InfoSyncLines   = 0;
 
 
 /*****************************************************************************/
@@ -119,6 +117,7 @@ void InfoError (const char* Format, ...)
 
 
 
+
 /*****************************************************************************/
 /*                                   Code                                    */
 /*****************************************************************************/
@@ -164,7 +163,7 @@ static void SkipBlanks (int SingleLine)
     }
 }
 
-static long GetDecimalToken ()
+static long GetDecimalToken (void)
 {
     long Value = 0;
 
@@ -226,15 +225,15 @@ Store:
 
 static void LineMarkerOrComment ()
 /* Handle a line beginning with '#'. Possible interpretations are:
- * - #line <lineno> ["<filename>"]         (C preprocessor input)
- * - # <lineno> "<filename>" [<flag>]...    (gcc preprocessor output)
- * - #<comment>
- */
+** - #line <lineno> ["<filename>"]         (C preprocessor input)
+** - # <lineno> "<filename>" [<flag>]...    (gcc preprocessor output)
+** - #<comment>
+*/
 {
     unsigned long LineNo = 0;
     int LineDirective = 0;
     StrBuf SrcNameBuf = AUTO_STRBUF_INITIALIZER;
-    
+
     /* Skip the first "# " */
     NextChar ();
     SkipBlanks (1);
@@ -440,7 +439,7 @@ Again:
 
         case '#':
             /* # lineno "sourcefile" or # comment */
-            if (InfoSyncLines && InputCol == 1) {
+            if (SyncLines && InputCol == 1) {
                 LineMarkerOrComment ();
             } else {
                 do {
index b1dc75279d531738e05402fae24e29e3b464a555..d4e38177b3e77a17131b10260211cf02b536292c 100644 (file)
@@ -138,8 +138,6 @@ extern long             InfoIVal;
 extern unsigned         InfoErrorLine;
 extern unsigned         InfoErrorCol;
 
-/* Options */
-extern unsigned char    InfoSyncLines;
 
 
 /*****************************************************************************/
diff --git a/testcode/disasm/.gitignore b/testcode/disasm/.gitignore
new file mode 100644 (file)
index 0000000..46c4eca
--- /dev/null
@@ -0,0 +1,2 @@
+*.s
+image.bin
diff --git a/testcode/disasm/bank0.da b/testcode/disasm/bank0.da
new file mode 100644 (file)
index 0000000..4fb96ce
--- /dev/null
@@ -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; };
diff --git a/testcode/disasm/bank0.dai b/testcode/disasm/bank0.dai
new file mode 100644 (file)
index 0000000..2d865e7
--- /dev/null
@@ -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; };
diff --git a/testcode/disasm/bank1.da b/testcode/disasm/bank1.da
new file mode 100644 (file)
index 0000000..fd5e324
--- /dev/null
@@ -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"; };
diff --git a/testcode/disasm/bank1.dai b/testcode/disasm/bank1.dai
new file mode 100644 (file)
index 0000000..2b5b685
--- /dev/null
@@ -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"; };
diff --git a/testcode/disasm/fixed.da b/testcode/disasm/fixed.da
new file mode 100644 (file)
index 0000000..e8aa034
--- /dev/null
@@ -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) */
diff --git a/testcode/disasm/fixed.dai b/testcode/disasm/fixed.dai
new file mode 100644 (file)
index 0000000..d73155c
--- /dev/null
@@ -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; };
diff --git a/testcode/disasm/sample-unix.mk b/testcode/disasm/sample-unix.mk
new file mode 100644 (file)
index 0000000..0ef64a5
--- /dev/null
@@ -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