1
0
mirror of https://github.com/cc65/cc65.git synced 2026-04-23 23:17:45 +00:00

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
+3 -1
View File
@@ -12,11 +12,13 @@
.include "joy-error.inc"
.include "nes.inc"
.macpack module
; ------------------------------------------------------------------------
; Header. Includes jump table
.segment "HEADER"
module_header _nes_stdjoy_joy
; Driver signature
+3 -1
View File
@@ -15,11 +15,13 @@
.import paldata
.macpack generic
.macpack module
; ------------------------------------------------------------------------
; Header. Includes jump table and constants.
.segment "HEADER"
module_header _nes_64_56_2_tgi
; First part of the header is a structure that has a magic and defines the
; capabilities of the driver