OXYGENHUB
◆ riscv-1 x16-emulator / src / memory.h
2.4 KiB · Objective-C · last changed chore(): initial commit 15 days ago source blame history raw
03a3459e Andy McCall 1
// Commander X16 Emulator
2
// Copyright (c) 2019 Michael Steil
3
// All rights reserved. License: 2-clause BSD
4
5
#ifndef _MEMORY_H_
6
#define _MEMORY_H_
7
8
#include <stdbool.h>
9
#include <stdint.h>
10
#include <stdio.h>
11
#include <SDL.h>
12
13
#define BANK_SIZE 65536
14
15
#define USE_CURRENT_X16_BANK (-1)
16
#define debug_read6502(a, b, x) real_read6502((a), (b), true, (x))
17
18
// X16 r0-r15
19
#define X16_REG_R0L (direct_page_add(2))
20
#define X16_REG_R0H (direct_page_add(3))
21
#define X16_REG_R1L (direct_page_add(4))
22
#define X16_REG_R1H (direct_page_add(5))
23
#define X16_REG_R2L (direct_page_add(6))
24
#define X16_REG_R2H (direct_page_add(7))
25
#define X16_REG_R3L (direct_page_add(8))
26
#define X16_REG_R3H (direct_page_add(9))
27
#define X16_REG_R4L (direct_page_add(10))
28
#define X16_REG_R4H (direct_page_add(11))
29
#define X16_REG_R5L (direct_page_add(12))
30
#define X16_REG_R5H (direct_page_add(13))
31
#define X16_REG_R6L (direct_page_add(14))
32
#define X16_REG_R6H (direct_page_add(15))
33
#define X16_REG_R7L (direct_page_add(16))
34
#define X16_REG_R7H (direct_page_add(17))
35
#define X16_REG_R8L (direct_page_add(18))
36
#define X16_REG_R8H (direct_page_add(19))
37
#define X16_REG_R9L (direct_page_add(20))
38
#define X16_REG_R9H (direct_page_add(21))
39
#define X16_REG_R10L (direct_page_add(22))
40
#define X16_REG_R10H (direct_page_add(23))
41
#define X16_REG_R11L (direct_page_add(24))
42
#define X16_REG_R11H (direct_page_add(25))
43
#define X16_REG_R12L (direct_page_add(26))
44
#define X16_REG_R12H (direct_page_add(27))
45
#define X16_REG_R13L (direct_page_add(28))
46
#define X16_REG_R13H (direct_page_add(29))
47
#define X16_REG_R14L (direct_page_add(30))
48
#define X16_REG_R14H (direct_page_add(31))
49
#define X16_REG_R15L (direct_page_add(32))
50
#define X16_REG_R15H (direct_page_add(33))
51
52
uint8_t read6502(uint16_t address, uint8_t bank);
53
uint8_t real_read6502(uint16_t address, uint8_t bank, bool debugOn, int16_t x16Bank);
54
void write6502(uint16_t address, uint8_t bank, uint8_t value);
55
void vp6502();
56
57
void memory_init();
58
void memory_reset();
59
void memory_report_uninitialized_access(bool);
60
void memory_report_usage_statistics(const char *filename);
61
void memory_randomize_ram(bool);
62
63
void memory_save(SDL_RWops *f, bool dump_ram, bool dump_bank);
64
void memory_dump_usage_counts();
65
66
void memory_set_ram_bank(uint8_t bank);
67
void memory_set_rom_bank(uint8_t bank);
68
69
uint8_t memory_get_ram_bank();
70
uint8_t memory_get_rom_bank();
71
72
uint8_t emu_read(uint8_t reg, bool debugOn);
73
void emu_write(uint8_t reg, uint8_t value);
74
75
#endif