]> git.sur5r.net Git - cc65/commit
Atari: fix interrupt handling if extended memory is banked in
authorChristian Groessler <chris@groessler.org>
Sun, 2 Sep 2018 21:07:03 +0000 (23:07 +0200)
committerOliver Schmidt <ol.sc@web.de>
Wed, 5 Sep 2018 09:28:15 +0000 (11:28 +0200)
commit1cc4fa9356a8a7ca17b3bd519dc818531a8e6b66
treeeccf0ca398f8566d74306ad57a225c08fe0a66c3
parentd199ca14602d3fe9bceb74dcabcdbfaa16726f99
Atari: fix interrupt handling if extended memory is banked in

Extendend memory is mapped over the main memory in the 0x4000..0x7FFF
area. Many DOSes disable interrupts while extended memory is banked in,
but not all (e.g. SpartaDOS-X).
This change modifies the initial interrupt handler to map in main memory
before chaining to the "worker" handlers.
Since the initial interrupt handler uses a data segment to store the
trampoline to chain to the original handler, introduce a new "LOWBSS"
segment to hold this trampoline. Otherwise the trampoline may end up
inside the 0x4000..0x7FFF area.

Add a link time warning if "LOWCODE" segment lays within the extended
memory window.
cfg/atari-cart.cfg
cfg/atari-cassette.cfg
cfg/atari-overlay.cfg
cfg/atari.cfg
cfg/atarixl-largehimem.cfg
cfg/atarixl-overlay.cfg
cfg/atarixl.cfg
libsrc/atari/crt0.s
libsrc/atari/irq.s