comparison menu.c @ 2499:d74d3998482c

Make some progress on compiling full emulator with new 68K core
author Michael Pavone <pavone@retrodev.com>
date Tue, 30 Apr 2024 00:02:14 -0700
parents bdd83b47d78a
children
comparison
equal deleted inserted replaced
2498:dffda054d218 2499:d74d3998482c
48 char *src = NULL; 48 char *src = NULL;
49 for (cur = buf; cur < buf+maxchars; cur+=2, guest_addr+=2, src+=2) 49 for (cur = buf; cur < buf+maxchars; cur+=2, guest_addr+=2, src+=2)
50 { 50 {
51 if (!src || !(guest_addr & 0xFFFF)) { 51 if (!src || !(guest_addr & 0xFFFF)) {
52 //we may have walked off the end of a memory block, get a fresh native pointer 52 //we may have walked off the end of a memory block, get a fresh native pointer
53 src = get_native_pointer(guest_addr, (void **)m68k->mem_pointers, &m68k->options->gen); 53 src = get_native_pointer(guest_addr, (void **)m68k->mem_pointers, &m68k->opts->gen);
54 if (!src) { 54 if (!src) {
55 break; 55 break;
56 } 56 }
57 } 57 }
58 *cur = src[1]; 58 *cur = src[1];
70 char *dst = NULL; 70 char *dst = NULL;
71 for (char *cur = src; cur < src+tocopy; cur+=2, guest_addr+=2, dst+=2) 71 for (char *cur = src; cur < src+tocopy; cur+=2, guest_addr+=2, dst+=2)
72 { 72 {
73 if (!dst || !(guest_addr & 0xFFFF)) { 73 if (!dst || !(guest_addr & 0xFFFF)) {
74 //we may have walked off the end of a memory block, get a fresh native pointer 74 //we may have walked off the end of a memory block, get a fresh native pointer
75 dst = get_native_pointer(guest_addr, (void **)m68k->mem_pointers, &m68k->options->gen); 75 dst = get_native_pointer(guest_addr, (void **)m68k->mem_pointers, &m68k->opts->gen);
76 if (!dst) { 76 if (!dst) {
77 break; 77 break;
78 } 78 }
79 } 79 }
80 dst[1] = *cur; 80 dst[1] = *cur;
84 84
85 #define SAVE_INFO_BUFFER_SIZE (11*40) 85 #define SAVE_INFO_BUFFER_SIZE (11*40)
86 86
87 uint32_t copy_dir_entry_to_guest(uint32_t dst, m68k_context *m68k, char *name, uint8_t is_dir) 87 uint32_t copy_dir_entry_to_guest(uint32_t dst, m68k_context *m68k, char *name, uint8_t is_dir)
88 { 88 {
89 uint8_t *dest = get_native_pointer(dst, (void **)m68k->mem_pointers, &m68k->options->gen); 89 uint8_t *dest = get_native_pointer(dst, (void **)m68k->mem_pointers, &m68k->opts->gen);
90 if (!dest) { 90 if (!dest) {
91 return 0; 91 return 0;
92 } 92 }
93 *(dest++) = is_dir; 93 *(dest++) = is_dir;
94 *(dest++) = 1; 94 *(dest++) = 1;
104 term = 1; 104 term = 1;
105 } 105 }
106 dst += 2; 106 dst += 2;
107 if (!(dst & 0xFFFF)) { 107 if (!(dst & 0xFFFF)) {
108 //we may have walked off the end of a memory block, get a fresh native pointer 108 //we may have walked off the end of a memory block, get a fresh native pointer
109 dest = get_native_pointer(dst, (void **)m68k->mem_pointers, &m68k->options->gen); 109 dest = get_native_pointer(dst, (void **)m68k->mem_pointers, &m68k->opts->gen);
110 if (!dest) { 110 if (!dest) {
111 break; 111 break;
112 } 112 }
113 } else { 113 } else {
114 dest += 2; 114 dest += 2;
156 } 156 }
157 dst = copy_dir_entry_to_guest(dst, m68k, entries[i].name, entries[i].is_dir); 157 dst = copy_dir_entry_to_guest(dst, m68k, entries[i].name, entries[i].is_dir);
158 } 158 }
159 free(ext_list); 159 free(ext_list);
160 //terminate list 160 //terminate list
161 uint8_t *dest = get_native_pointer(dst, (void **)m68k->mem_pointers, &m68k->options->gen); 161 uint8_t *dest = get_native_pointer(dst, (void **)m68k->mem_pointers, &m68k->opts->gen);
162 if (dest) { 162 if (dest) {
163 *dest = dest[1] = 0; 163 *dest = dest[1] = 0;
164 } 164 }
165 free_dir_list(entries, num_entries); 165 free_dir_list(entries, num_entries);
166 break; 166 break;
254 } else { 254 } else {
255 menu->latch = value; 255 menu->latch = value;
256 menu->state = 1; 256 menu->state = 1;
257 } 257 }
258 if (m68k->should_return) { 258 if (m68k->should_return) {
259 m68k->target_cycle = m68k->current_cycle; 259 m68k->target_cycle = m68k->cycles;
260 } 260 }
261 261
262 return context; 262 return context;
263 } 263 }