]> git.sur5r.net Git - cc65/commitdiff
cleanup and document CHARGEN_RELOC change
authorChristian Groessler <chris@groessler.org>
Thu, 19 Sep 2013 22:10:34 +0000 (00:10 +0200)
committerChristian Groessler <chris@groessler.org>
Thu, 19 Sep 2013 22:10:34 +0000 (00:10 +0200)
libsrc/atari/romswitch.inc

index 9e229ea63e4cf2d91fbfb83c02cc80ffd5a24c59..e1f3433b69b298e304d70712291d2c3e4ec2cb9b 100644 (file)
@@ -3,6 +3,19 @@
 ;
 ; Christian Groessler, chris@groessler.org, 19-Sep-2013
 ;
+;
+; Defines which modify the operation of the macros:
+;
+; CHARGEN_RELOC: If defined, CHBAS and CHBASE are updated when
+;                enabling or disabling the ROM.
+;                If the ROM is enabled, $E0 is written to CHBAS
+;                and CHBASE.
+;                If the ROM is disabled, the upper byte of
+;                __CHARGEN_START__ is written to CHBAS and CHBASE.
+; USEWSYNC:      If defined, the code waits for horizontal retrace
+;                before switching the ROM and updating CHBAS and
+;                CHBASE. This define only has effect if CHAGEN_RELOC
+;                is also defined.
 
 
 .ifdef __ATARIXL__
 USEWSYNC =      1
 CHARGEN_RELOC = 1
 
+
+.ifdef CHARGEN_RELOC
+
+.macro  set_chbase val
+        lda     #val
+        sta     CHBAS
+        sta     CHBASE
+.endmacro
+
+.else
+
+.macro  set_chbase val
+.endmacro
+
+.endif  ; .ifdef CHARGEN_RELOC
+
+
 .if .defined(USEWSYNC) .and .defined(CHARGEN_RELOC)
+
 .macro  wsync
         sta     WSYNC
 .endmacro
-.else
+
+.else   ; above 
+
 .macro  wsync
 .endmacro
+
 .endif
 
 
+; "disable ROM" macros
+
 .macro  disable_rom
         lda     PORTB
         and     #$fe
         wsync
         sta     PORTB
-.ifdef CHARGEN_RELOC
-        lda     #>__CHARGEN_START__
-        sta     CHBAS
-        sta     CHBASE
-.endif
+        set_chbase >__CHARGEN_START__
 .endmacro
+
 .macro  disable_rom_quick
         lda     PORTB
         and     #$fe
         sta     PORTB
-.ifdef CHARGEN_RELOC
-        lda     #>__CHARGEN_START__
-        sta     CHBAS
-        sta     CHBASE
-.endif
+        set_chbase >__CHARGEN_START__
 .endmacro
+
 .macro  disable_rom_val val
         lda     val
         wsync
         sta     PORTB
-.ifdef CHARGEN_RELOC
-        lda     #>__CHARGEN_START__
-        sta     CHBAS
-        sta     CHBASE
-.endif
+        set_chbase >__CHARGEN_START__
 .endmacro
 
+; "enable ROM" macros
+
 .macro  enable_rom
         lda     PORTB
         ora     #1
         wsync
         sta     PORTB
-.ifdef CHARGEN_RELOC
-        lda     #$E0
-        sta     CHBAS
-        sta     CHBASE
-.endif
+        set_chbase $E0
 .endmacro
+
 .macro  enable_rom_quick
         lda     PORTB
         ora     #1
         sta     PORTB
-.ifdef CHARGEN_RELOC
-        lda     #$E0
-        sta     CHBAS
-        sta     CHBASE
-.endif
+        set_chbase $E0
 .endmacro
 
 .else   ; above __ATARIXL__, below not