initial commit
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
#ifndef MEMMAP_H
|
||||
#define MEMMAP_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
// MMAP_ROM : BASIC + I/O + KERNAL -> default power on config
|
||||
// MMAP_NO_BASIC : I/O + KERNAL -> easy extra chunk of contiguous RAM
|
||||
// MMAP_NO_ROM : I/O -> I/O and COLOR RAM in $d000-$dfff block, rest is RAM
|
||||
// MMAP_RAM : -> ALL RAM, you'll need to manage some state switching...
|
||||
// MMAP_CHAR_ROM : CHAR -> no BASIC or KERNAL or I/O, but can copy CHAR ROM
|
||||
// MMAP_ALL_ROM : BASIC + CHAR + KERNAL -> All ROM functions available, but no I/O
|
||||
|
||||
#define MMAP_ROM 0x37
|
||||
#define MMAP_NO_BASIC 0x36
|
||||
#define MMAP_NO_ROM 0x35
|
||||
#define MMAP_RAM 0x30
|
||||
#define MMAP_CHAR_ROM 0x31
|
||||
#define MMAP_ALL_ROM 0x33
|
||||
|
||||
// Install an IRQ an NMI trampoline, that routes the kernal interrupts
|
||||
// through an intermediate trampoline when the kernal ROM is not paged
|
||||
// in. The trampoline enables the ROM, executes the interrupt and
|
||||
// restores the memory map setting before returning.
|
||||
|
||||
void mmap_trampoline(void);
|
||||
|
||||
// Set the memory map in a way that is compatible with the IRQ
|
||||
// trampoline, returns the previous state
|
||||
|
||||
inline char mmap_set(char pla);
|
||||
|
||||
#pragma compile("memmap.c")
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user