mirror of
https://github.com/cc65/cc65.git
synced 2026-04-26 13:18:31 +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:
@@ -31,12 +31,17 @@
|
||||
|
||||
|
||||
.macpack generic
|
||||
.macpack module
|
||||
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; Header. Includes jump table
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __ATARIXL__
|
||||
module_header _atrx130_emd
|
||||
.else
|
||||
module_header _atr130_emd
|
||||
.endif
|
||||
|
||||
; Driver signature
|
||||
|
||||
|
||||
@@ -14,12 +14,17 @@
|
||||
.include "atari.inc"
|
||||
|
||||
.macpack generic
|
||||
.macpack module
|
||||
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; Header. Includes jump table
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __ATARIXL__
|
||||
module_header _atrxmj8_joy
|
||||
.else
|
||||
module_header _atrmj8_joy
|
||||
.endif
|
||||
|
||||
; Driver signature
|
||||
|
||||
|
||||
@@ -13,12 +13,17 @@
|
||||
.include "atari.inc"
|
||||
|
||||
.macpack generic
|
||||
.macpack module
|
||||
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; Header. Includes jump table
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __ATARIXL__
|
||||
module_header _atrxstd_joy
|
||||
.else
|
||||
module_header _atrstd_joy
|
||||
.endif
|
||||
|
||||
; Driver signature
|
||||
|
||||
|
||||
@@ -10,11 +10,16 @@
|
||||
.include "atari.inc"
|
||||
|
||||
.macpack generic
|
||||
.macpack module
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; Header. Includes jump table
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __ATARIXL__
|
||||
module_header _atrxjoy_mou
|
||||
.else
|
||||
module_header _atrjoy_mou
|
||||
.endif
|
||||
|
||||
HEADER:
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ DISABLE_TIMEOUT = 30 ; # of vertical blank interrupts after w
|
||||
.include "atari.inc"
|
||||
|
||||
.macpack generic
|
||||
.macpack module
|
||||
|
||||
.if .not ( .defined (AMIGA_MOUSE) .or .defined (TRAK_MOUSE))
|
||||
ST_MOUSE = 1
|
||||
@@ -31,7 +32,31 @@ DISABLE_TIMEOUT = 30 ; # of vertical blank interrupts after w
|
||||
; ------------------------------------------------------------------------
|
||||
; Header. Includes jump table
|
||||
|
||||
.segment "HEADER"
|
||||
.if .defined (ST_MOUSE)
|
||||
|
||||
.ifdef __ATARIXL__
|
||||
module_header _atrxst_mou
|
||||
.else
|
||||
module_header _atrst_mou
|
||||
.endif
|
||||
|
||||
.elseif .defined (AMIGA_MOUSE)
|
||||
|
||||
.ifdef __ATARIXL__
|
||||
module_header _atrxami_mou
|
||||
.else
|
||||
module_header _atrami_mou
|
||||
.endif
|
||||
|
||||
.elseif .defined (TRAK_MOUSE)
|
||||
|
||||
.ifdef __ATARIXL__
|
||||
module_header _atrxtrk_mou
|
||||
.else
|
||||
module_header _atrtrk_mou
|
||||
.endif
|
||||
|
||||
.endif
|
||||
|
||||
HEADER:
|
||||
|
||||
|
||||
@@ -9,11 +9,16 @@
|
||||
.include "atari.inc"
|
||||
|
||||
.macpack generic
|
||||
.macpack module
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; Header. Includes jump table
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __ATARIXL__
|
||||
module_header _atrxtt_mou
|
||||
.else
|
||||
module_header _atrtt_mou
|
||||
.endif
|
||||
|
||||
HEADER:
|
||||
|
||||
|
||||
@@ -10,11 +10,17 @@
|
||||
.include "ser-error.inc"
|
||||
.include "atari.inc"
|
||||
|
||||
.macpack module
|
||||
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; Header. Includes jump table
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __ATARIXL__
|
||||
module_header _atrxrdev_ser
|
||||
.else
|
||||
module_header _atrrdev_ser
|
||||
.endif
|
||||
|
||||
; Driver signature
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
;
|
||||
|
||||
.macpack longbranch
|
||||
.macpack module
|
||||
|
||||
.ifdef __ATARIXL__
|
||||
CIO_vec := my_CIOV
|
||||
@@ -18,7 +19,19 @@
|
||||
;
|
||||
; ----------------------------------------------------------------------
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __ATARIXL__
|
||||
.define LABEL_X "x"
|
||||
.else
|
||||
.define LABEL_X ""
|
||||
.endif
|
||||
|
||||
.if pages = 2
|
||||
.define LABEL_P2 "p2"
|
||||
.else
|
||||
.define LABEL_P2 ""
|
||||
.endif
|
||||
|
||||
module_header .ident (.sprintf ("_atr%s%d%s_tgi", LABEL_X, ::grmode, LABEL_P2))
|
||||
|
||||
; Header
|
||||
|
||||
|
||||
Reference in New Issue
Block a user