Date: Wed, 4 Jun 2014 21:50:18 +0000 (+0200)
Subject: Create static drivers directly from source files.
X-Git-Tag: V2.15~51
X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=2c975d36424c4d04e998f8f8b1633ad56ed9476a;p=cc65
Create static drivers directly from source files.
Up to now static drivers were created via co65 from dynamic drivers. However there was an issue with that approach:
The dynamic drivers are "o65 simple files" which obligates that they start with the 'code' segment. However dynamic drivers need to start with the module header - which is written to. For dynamic drivers this isn't more than a conceptual issue because they are always contain a 'data' segment and may therefore only be loaded into writable memory.
However when dynamic drivers are converted to static drivers using co65 then that issue becomes a real problem as then the 'code' segment may end up in non-writable memory - and thus writing to the module header fails.
Instead of changing the way dynamic drivers work I opted to rather make static driver creation totally independent from dynamic drivers. This allows to place the module header in the 'data' segment (see 'module.mac').
---
diff --git a/asminc/module.mac b/asminc/module.mac
new file mode 100644
index 000000000..d844ec104
--- /dev/null
+++ b/asminc/module.mac
@@ -0,0 +1,13 @@
+.ifndef DYN_DRV
+ DYN_DRV = 1
+.endif
+
+.macro module_header module_label
+ .if DYN_DRV
+ .segment "HEADER"
+ .else
+ .data
+ .export module_label
+ module_label:
+ .endif
+.endmacro
diff --git a/doc/ca65.sgml b/doc/ca65.sgml
index b222b4aac..32cf0b80b 100644
--- a/doc/ca65.sgml
+++ b/doc/ca65.sgml
@@ -4321,16 +4321,14 @@ The package defines the following macros:
.MACPACK atari
-The atari macro package will define a macro named .MACPACK cbm
-The cbm macro package will define a macro named .MACPACK cpu
@@ -4386,6 +4384,13 @@ it is possible to determine if the
instruction is supported, which is the case for the 65SC02, 65C02 and 65816
CPUs (the latter two are upwards compatible to the 65SC02).
+
+.MACPACK module
+
+This macro package defines a macro named Predefined constants