12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- * 6502 Memory manager - The peTI-NESulator Project
- * memory.h - Taken from the Quick6502 project
- *
- * Created by Manoël Trapier on 18/09/06.
- * Copyright (c) 2002-2019 986-Studio.
- *
- */
- #ifndef MEMORY_H
- #define MEMORY_H
- #include "types.h"
- #define ATTR_PAGE_HAVE_RDHOOK 0x20
- #define ATTR_PAGE_HAVE_WRHOOK 0x10
- #define ATTR_PAGE_WRITEABLE 0x08
- #define ATTR_PAGE_READABLE 0x04
- #define ATTR_PAGE_GHOST 0x02
- #define ATTR_PAGE_MAPPED 0x01
- typedef uint8_t (*func_rdhook)(uint8_t /* addr */);
- typedef void (*func_wrhook)(uint8_t addr, uint8_t data);
- /* Functions to manage pages data */
- void set_page_ptr(uint8_t page, uint8_t *ptr);
- void set_page_ptr_1k(uint8_t page, uint8_t *ptr);
- void set_page_ptr_2k(uint8_t page, uint8_t *ptr);
- void set_page_ptr_4k(uint8_t page, uint8_t *ptr);
- void set_page_ptr_8k(uint8_t page, uint8_t *ptr);
- void set_page_ptr_16k(uint8_t page, uint8_t *ptr);
- void set_page_ptr_32k(uint8_t page, uint8_t *ptr);
- uint8_t *get_page_ptr(uint8_t page);
- /* Functions to set pages attributes */
- void set_page_rd_hook(uint8_t page, func_rdhook func);
- void set_page_wr_hook(uint8_t page, func_wrhook func);
- void set_page_readable(uint8_t page, uint8_t value);
- void set_page_writeable(uint8_t page, uint8_t value);
- void set_page_ghost(uint8_t page, uint8_t value, uint8_t ghost);
- uint8_t get_page_attributes(uint8_t page);
- func_rdhook get_page_rdhook(uint8_t page);
- func_wrhook get_page_wrhook(uint8_t page);
- /* Generalist functions */
- void InitMemory();
- uint8_t ReadMemory(uint8_t page, uint8_t addr);
- void WriteMemory(uint8_t page, uint8_t addr, uint8_t value);
- void DumpMemoryState(FILE *fp);
- #endif
|