[ff8d800] | 1 | #include <all.h>
|
---|
| 2 |
|
---|
| 3 | #define ver(...) { \
|
---|
| 4 | if (cpu_verbose) { \
|
---|
| 5 | SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
|
---|
| 6 | } \
|
---|
| 7 | }
|
---|
| 8 |
|
---|
| 9 | #define CYCLES 10
|
---|
| 10 |
|
---|
| 11 | #define RESET_PC 0x100000
|
---|
| 12 | #define RESET_SP 0x100000
|
---|
| 13 |
|
---|
| 14 | bool cpu_verbose = false;
|
---|
| 15 | static bool reset = true;
|
---|
| 16 |
|
---|
| 17 | uint32_t m68k_read_disassembler_8(uint32_t addr)
|
---|
| 18 | {
|
---|
| 19 | ver("mem rd 0x%08x:8", addr);
|
---|
| 20 | return 0;
|
---|
| 21 | }
|
---|
| 22 |
|
---|
| 23 | uint32_t m68k_read_disassembler_16(uint32_t addr)
|
---|
| 24 | {
|
---|
| 25 | ver("mem rd 0x%08x:16", addr);
|
---|
| 26 | return 0;
|
---|
| 27 | }
|
---|
| 28 |
|
---|
| 29 | uint32_t m68k_read_disassembler_32(uint32_t addr)
|
---|
| 30 | {
|
---|
| 31 | ver("mem rd 0x%08x:32", addr);
|
---|
| 32 | return 0;
|
---|
| 33 | }
|
---|
| 34 |
|
---|
| 35 | uint32_t m68k_read_memory_8(uint32_t addr)
|
---|
| 36 | {
|
---|
| 37 | ver("mem rd 0x%08x:8", addr);
|
---|
| 38 | return 0;
|
---|
| 39 | }
|
---|
| 40 |
|
---|
| 41 | uint32_t m68k_read_memory_16(uint32_t addr)
|
---|
| 42 | {
|
---|
| 43 | ver("mem rd 0x%08x:16", addr);
|
---|
| 44 |
|
---|
| 45 | if (addr < 0x100000) {
|
---|
| 46 | }
|
---|
| 47 |
|
---|
| 48 | if (addr < 0x110000) {
|
---|
| 49 | return 0x60fe;
|
---|
| 50 | }
|
---|
| 51 |
|
---|
| 52 | return 0;
|
---|
| 53 | }
|
---|
| 54 |
|
---|
| 55 | uint32_t m68k_read_memory_32(uint32_t addr)
|
---|
| 56 | {
|
---|
| 57 | ver("mem rd 0x%08x:32", addr);
|
---|
| 58 |
|
---|
| 59 | if (reset) {
|
---|
| 60 | if (addr == 0) {
|
---|
| 61 | return RESET_SP;
|
---|
| 62 | }
|
---|
| 63 |
|
---|
| 64 | if (addr == 4) {
|
---|
| 65 | reset = false;
|
---|
| 66 | return RESET_PC;
|
---|
| 67 | }
|
---|
| 68 |
|
---|
| 69 | fail("invalid reset sequence");
|
---|
| 70 | }
|
---|
| 71 |
|
---|
| 72 | return 0;
|
---|
| 73 | }
|
---|
| 74 |
|
---|
| 75 | void m68k_write_memory_8(uint32_t addr, uint32_t val)
|
---|
| 76 | {
|
---|
| 77 | ver("mem wr 0x%08x:8 0x%02x", addr, val);
|
---|
| 78 | }
|
---|
| 79 |
|
---|
| 80 | void m68k_write_memory_16(uint32_t addr, uint32_t val)
|
---|
| 81 | {
|
---|
| 82 | ver("mem wr 0x%08x:16 0x%04x", addr, val);
|
---|
| 83 | }
|
---|
| 84 |
|
---|
| 85 | void m68k_write_memory_32(uint32_t addr, uint32_t val)
|
---|
| 86 | {
|
---|
| 87 | ver("mem wr 0x%08x:32 0x%08x", addr, val);
|
---|
| 88 | }
|
---|
| 89 |
|
---|
| 90 | void cpu_loop(void)
|
---|
| 91 | {
|
---|
| 92 | ver("entering CPU loop");
|
---|
| 93 |
|
---|
| 94 | m68k_init();
|
---|
| 95 | m68k_set_cpu_type(M68K_CPU_TYPE_68000);
|
---|
| 96 | m68k_pulse_reset();
|
---|
| 97 |
|
---|
| 98 | for (int32_t i = 0; i < 5; ++i) {
|
---|
| 99 | m68k_execute(CYCLES);
|
---|
| 100 | }
|
---|
| 101 | }
|
---|