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:
@@ -10,10 +10,16 @@
|
||||
.include "em-kernel.inc"
|
||||
.include "em-error.inc"
|
||||
|
||||
.macpack module
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; Header. Includes jump table
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __APPLE2ENH__
|
||||
module_header _a2e_auxmem_emd
|
||||
.else
|
||||
module_header _a2_auxmem_emd
|
||||
.endif
|
||||
|
||||
; Driver signature
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
.include "joy-error.inc"
|
||||
.include "apple2.inc"
|
||||
|
||||
.macpack module
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
|
||||
; Constants
|
||||
@@ -29,7 +31,11 @@ PREAD := $FB1E ; Read paddle in X, return AD conv. value in Y
|
||||
|
||||
; Header. Includes jump table.
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __APPLE2ENH__
|
||||
module_header _a2e_stdjoy_joy
|
||||
.else
|
||||
module_header _a2_stdjoy_joy
|
||||
.endif
|
||||
|
||||
; Driver signature
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
.include "mouse-kernel.inc"
|
||||
.include "apple2.inc"
|
||||
|
||||
.macpack module
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
|
||||
SETMOUSE = $12 ; Sets mouse mode
|
||||
@@ -28,7 +30,11 @@ status := $0778
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __APPLE2ENH__
|
||||
module_header _a2e_stdmou_mou
|
||||
.else
|
||||
module_header _a2_stdmou_mou
|
||||
.endif
|
||||
|
||||
; Driver signature
|
||||
.byte $6D, $6F, $75 ; "mou"
|
||||
|
||||
@@ -25,10 +25,16 @@
|
||||
.include "ser-kernel.inc"
|
||||
.include "ser-error.inc"
|
||||
|
||||
.macpack module
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; Header. Includes jump table
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __APPLE2ENH__
|
||||
module_header _a2e_ssc_ser
|
||||
.else
|
||||
module_header _a2_ssc_ser
|
||||
.endif
|
||||
|
||||
; Driver signature
|
||||
.byte $73, $65, $72 ; "ser"
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
.include "tgi-error.inc"
|
||||
.include "apple2.inc"
|
||||
|
||||
.macpack module
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
|
||||
; Zero page stuff
|
||||
@@ -68,7 +70,11 @@ Y2 := ptr4
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __APPLE2ENH__
|
||||
module_header _a2e_hi_tgi
|
||||
.else
|
||||
module_header _a2_hi_tgi
|
||||
.endif
|
||||
|
||||
; Header. Includes jump table and constants.
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
.include "tgi-error.inc"
|
||||
.include "apple2.inc"
|
||||
|
||||
.macpack module
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
|
||||
; Zero page stuff
|
||||
@@ -38,7 +40,11 @@ Y2 := ptr4
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
|
||||
.segment "HEADER"
|
||||
.ifdef __APPLE2ENH__
|
||||
module_header _a2e_lo_tgi
|
||||
.else
|
||||
module_header _a2_lo_tgi
|
||||
.endif
|
||||
|
||||
; Header. Includes jump table and constants.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user