]> git.sur5r.net Git - cc65/blobdiff - libsrc/atari/ostype.s
more atarixl linker cfg file cleanups; adapt atarixl-overlay.cfg
[cc65] / libsrc / atari / ostype.s
index dc17018fae2ecc06ed8864b015370858987b25fa..7a3342d2ac48f4c5a433b21e82d1cecdea770a2f 100644 (file)
         .export         _get_ostype
 
 .if .defined(__ATARIXL__)
-.warning "fix me!"
+
+        .include "atari.inc"
+        .import __CHARGEN_START__
+        .segment "LOWCODE"
+.macro  disable_rom
+        pha
+        lda     PORTB
+        and     #$fe
+        sta     PORTB
+        lda     #>__CHARGEN_START__
+        sta     CHBAS
+        sta     CHBASE
+        pla
+.endmacro
+.macro  enable_rom
+        lda     PORTB
+        ora     #1
+        sta     PORTB
+        lda     #$E0
+        sta     CHBAS
+        sta     CHBASE
+.endmacro
+
+.else   ; above atarixl, below atari
+
+.macro  disable_rom
+.endmacro
+.macro  enable_rom
+.endmacro
+
 .endif
 
 .proc   _get_ostype
 
+        enable_rom
         lda     $fcd8
         cmp     #$a2
         beq     _400800
@@ -67,6 +97,7 @@
         and     #%00111000
         ora     #%11
 _fin:   ldx     #0
+        disable_rom
         rts
 
 ; unknown ROM
@@ -74,6 +105,7 @@ _fin:   ldx     #0
 _unknown:
         lda     #0
         tax
+        disable_rom
         rts
 
 ; 1200XL ROM