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').
This commit is contained in:
Oliver Schmidt
2014-06-04 23:50:18 +02:00
parent 2bc4634860
commit 2c975d3642
79 changed files with 332 additions and 115 deletions

View File

@@ -4321,16 +4321,14 @@ The package defines the following macros:
<sect1><tt>.MACPACK atari</tt><p>
The atari macro package will define a macro named <tt/scrcode/. It takes a
string as argument and places this string into memory translated into screen
codes.
This macro package defines a macro named <tt/scrcode/. It takes a string
as argument and places this string into memory translated into screen codes.
<sect1><tt>.MACPACK cbm</tt><p>
The cbm macro package will define a macro named <tt/scrcode/. It takes a
string as argument and places this string into memory translated into screen
codes.
This macro package defines a macro named <tt/scrcode/. It takes a string
as argument and places this string into memory translated into screen codes.
<sect1><tt>.MACPACK cpu</tt><p>
@@ -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).
<sect1><tt>.MACPACK module</tt><p>
This macro package defines a macro named <tt/module_header/. It takes an
identifier as argument and is used to define the header of a module both
in the dynamic and static variant.
<sect>Predefined constants<label id="predefined-constants"><p>