28.05.2010

parent 02a1469e
...@@ -14,8 +14,7 @@ DIST_SUBDIRS = \ ...@@ -14,8 +14,7 @@ DIST_SUBDIRS = \
gui-none gui-beos gui-cocoa gui-gtk gui-muirexx \ gui-none gui-beos gui-cocoa gui-gtk gui-muirexx \
od-generic od-amiga od-beos od-linux od-macosx od-win32 \ od-generic od-amiga od-beos od-linux od-macosx od-win32 \
td-none td-amigaos td-beos td-posix td-sdl td-win32 \ td-none td-amigaos td-beos td-posix td-sdl td-win32 \
keymap \ keymap caps dms
caps dms
BUILT_SOURCES = \ BUILT_SOURCES = \
blit.h blitfunc.h blitfunc.c blittable.c \ blit.h blitfunc.h blitfunc.c blittable.c \
......
...@@ -319,8 +319,7 @@ DIST_SUBDIRS = \ ...@@ -319,8 +319,7 @@ DIST_SUBDIRS = \
gui-none gui-beos gui-cocoa gui-gtk gui-muirexx \ gui-none gui-beos gui-cocoa gui-gtk gui-muirexx \
od-generic od-amiga od-beos od-linux od-macosx od-win32 \ od-generic od-amiga od-beos od-linux od-macosx od-win32 \
td-none td-amigaos td-beos td-posix td-sdl td-win32 \ td-none td-amigaos td-beos td-posix td-sdl td-win32 \
keymap \ keymap caps dms
caps dms
BUILT_SOURCES = \ BUILT_SOURCES = \
blit.h blitfunc.h blitfunc.c blittable.c \ blit.h blitfunc.h blitfunc.c blittable.c \
......
...@@ -402,7 +402,7 @@ static int qcode_valid; ...@@ -402,7 +402,7 @@ static int qcode_valid;
static int cdrom_disk, cdrom_paused, cdrom_playing; static int cdrom_disk, cdrom_paused, cdrom_playing;
static int cdrom_command_active; static int cdrom_command_active;
static int cdrom_command_length; static int cdrom_command_length;
static int cdrom_checksum_error; static int cdrom_checksum_error, cdrom_unknown_command;
static int cdrom_data_offset, cdrom_speed, cdrom_sector_counter; static int cdrom_data_offset, cdrom_speed, cdrom_sector_counter;
static int cdrom_current_sector, cdrom_seek_delay; static int cdrom_current_sector, cdrom_seek_delay;
static int cdrom_data_end, cdrom_leadout; static int cdrom_data_end, cdrom_leadout;
...@@ -788,8 +788,8 @@ static int cdrom_command_led (void) ...@@ -788,8 +788,8 @@ static int cdrom_command_led (void)
static int cdrom_command_media_status (void) static int cdrom_command_media_status (void)
{ {
cdrom_result_buffer[0] = 10; cdrom_result_buffer[0] = 0x0a;
cdrom_result_buffer[1] = sys_command_ismedia (DF_IOCTL, unitnum, 0); cdrom_result_buffer[1] = sys_command_ismedia (DF_IOCTL, unitnum, 0) ? 0x83: 0x80;
return 2; return 2;
} }
...@@ -942,6 +942,8 @@ static void cdrom_run_command (void) ...@@ -942,6 +942,8 @@ static void cdrom_run_command (void)
uae_u8 checksum; uae_u8 checksum;
uae_u8 *pp = get_real_address (cdtx_address); uae_u8 *pp = get_real_address (cdtx_address);
if (!(cdrom_flags & CDFLAG_TXD))
return;
for (;;) { for (;;) {
if (cdrom_command_active) if (cdrom_command_active)
return; return;
...@@ -953,13 +955,20 @@ static void cdrom_run_command (void) ...@@ -953,13 +955,20 @@ static void cdrom_run_command (void)
return; return;
} }
cdrom_checksum_error = 0; cdrom_checksum_error = 0;
cdrom_unknown_command = 0;
cmd_len = command_lengths[cdrom_command & 0x0f]; cmd_len = command_lengths[cdrom_command & 0x0f];
if (cmd_len < 0) { if (cmd_len < 0) {
#if AKIKO_DEBUG_IO_CMD #if AKIKO_DEBUG_IO_CMD
write_log ("unknown command\n"); write_log ("unknown command %x\n", cdrom_command & 0x0f);
#endif #endif
cmd_len = 1; cdrom_unknown_command = 1;
cdrom_command_active = 1;
cdrom_command_length = 1;
set_status (CDINTERRUPT_TXDMADONE);
return;
} }
#if AKIKO_DEBUG_IO_CMD #if AKIKO_DEBUG_IO_CMD
write_log ("IN:"); write_log ("IN:");
#endif #endif
...@@ -1020,7 +1029,7 @@ static void cdrom_run_command_run (void) ...@@ -1020,7 +1029,7 @@ static void cdrom_run_command_run (void)
} }
if (len == 0) if (len == 0)
return; return;
if (cdrom_checksum_error) if (cdrom_checksum_error || cdrom_unknown_command)
cdrom_result_buffer[1] |= 0x80; cdrom_result_buffer[1] |= 0x80;
cdrom_start_return_data (len); cdrom_start_return_data (len);
} }
......
...@@ -558,7 +558,6 @@ static void led_vsync (void) ...@@ -558,7 +558,6 @@ static void led_vsync (void)
v = led_cycles_on * 255 / led_cycles_off; v = led_cycles_on * 255 / led_cycles_off;
else else
v = 255; v = 255;
if (v < 0) if (v < 0)
v = 0; v = 0;
if (v > 255) if (v > 255)
......
...@@ -367,7 +367,6 @@ STATIC_INLINE int comp_fp_put (uae_u32 opcode, uae_u16 extra) ...@@ -367,7 +367,6 @@ STATIC_INLINE int comp_fp_put (uae_u32 opcode, uae_u16 extra)
return -1; return -1;
} }
} }
switch (size) { switch (size) {
case 0: /* Long */ case 0: /* Long */
fmovi_mrb((uae_u32)temp_fp,sreg, clamp_bounds.l); fmovi_mrb((uae_u32)temp_fp,sreg, clamp_bounds.l);
...@@ -483,7 +482,6 @@ void comp_fscc_opp (uae_u32 opcode, uae_u16 extra) ...@@ -483,7 +482,6 @@ void comp_fscc_opp (uae_u32 opcode, uae_u16 extra)
mov_l_ri(S1,255); mov_l_ri(S1,255);
mov_l_ri(S4,0); mov_l_ri(S4,0);
switch (extra & 0x0f) { /* according to fpp.c, the 0x10 bit is ignored */ switch (extra & 0x0f) { /* according to fpp.c, the 0x10 bit is ignored */
case 0: break; /* set never */ case 0: break; /* set never */
case 1: case 1:
...@@ -609,32 +607,51 @@ void comp_fbcc_opp (uae_u32 opcode) ...@@ -609,32 +607,51 @@ void comp_fbcc_opp (uae_u32 opcode)
cmov_l_rr(PC_P,S1,4); cmov_l_rr(PC_P,S1,4);
cmov_l_rr(PC_P,S2,10); cmov_l_rr(PC_P,S2,10);
break; break;
case 2: register_branch(v1,v2,7); break; case 2: register_branch(v1,v2,7); break;
case 3: register_branch(v1,v2,3); break; case 3: register_branch(v1,v2,3); break;
case 4: case 4:
mov_l_rr(S2,PC_P); mov_l_rr(S2,PC_P);
cmov_l_rr(PC_P,S1,2); cmov_l_rr(PC_P,S1,2);
cmov_l_rr(PC_P,S2,10); break; cmov_l_rr(PC_P,S2,10);
case 5: break;
mov_l_rr(S2,PC_P); case 5:
cmov_l_rr(PC_P,S1,6); mov_l_rr(S2,PC_P);
cmov_l_rr(PC_P,S2,10); break; cmov_l_rr(PC_P,S1,6);
case 6: register_branch(v1,v2,5); break; cmov_l_rr(PC_P,S2,10);
case 7: register_branch(v1,v2,11); break; break;
case 8: register_branch(v1,v2,10); break; case 6:
case 9: register_branch(v1,v2,4); break; register_branch(v1,v2,5);
case 10: break;
cmov_l_rr(PC_P,S1,10); case 7:
cmov_l_rr(PC_P,S1,7); break; register_branch(v1,v2,11);
case 11: break;
cmov_l_rr(PC_P,S1,4); case 8:
cmov_l_rr(PC_P,S1,3); break; register_branch(v1,v2,10);
case 12: register_branch(v1,v2,2); break; break;
case 13: register_branch(v1,v2,6); break; case 9:
case 14: register_branch(v1,v2,4);
cmov_l_rr(PC_P,S1,5); break;
cmov_l_rr(PC_P,S1,10); break; case 10:
case 15: mov_l_rr(PC_P,S1); break; cmov_l_rr(PC_P,S1,10);
cmov_l_rr(PC_P,S1,7);
break;
case 11:
cmov_l_rr(PC_P,S1,4);
cmov_l_rr(PC_P,S1,3);
break;
case 12:
register_branch(v1,v2,2);
break;
case 13:
register_branch(v1,v2,6);
break;
case 14:
cmov_l_rr(PC_P,S1,5);
cmov_l_rr(PC_P,S1,10);
break;
case 15:
mov_l_rr(PC_P,S1);
break;
} }
} }
...@@ -909,7 +926,8 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra) ...@@ -909,7 +926,8 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
abort(); abort();
} }
if (incr < 0) { // not reached if (incr < 0) {
// not reached
for (reg = 7; reg >= 0; reg--) { for (reg = 7; reg >= 0; reg--) {
if (list & 0x80) { if (list & 0x80) {
sub_l_ri(ad,4); sub_l_ri(ad,4);
......
...@@ -2678,7 +2678,7 @@ static int islinetoggle (void) ...@@ -2678,7 +2678,7 @@ static int islinetoggle (void)
static int isvsync (void) static int isvsync (void)
{ {
if (!currprefs.gfx_afullscreen || picasso_on || !currprefs.gfx_avsync) if (currprefs.gfx_afullscreen != GFX_FULLSCREEN || picasso_on || !currprefs.gfx_avsync)
return 0; return 0;
return currprefs.gfx_avsync; return currprefs.gfx_avsync;
} }
...@@ -4743,6 +4743,7 @@ STATIC_INLINE void do_sprites_1 (int num, int cycle, int hpos) ...@@ -4743,6 +4743,7 @@ STATIC_INLINE void do_sprites_1 (int num, int cycle, int hpos)
#endif #endif
s->dmastate = 0; s->dmastate = 0;
#if 0 #if 0
// roots 2.0 flower zoomer bottom part missing if this enabled
if (vpos == s->vstop) { if (vpos == s->vstop) {
spr_arm (num, 0); spr_arm (num, 0);
//return; //return;
......
...@@ -1774,7 +1774,7 @@ STATIC_INLINE void do_flush_screen (int start, int stop) ...@@ -1774,7 +1774,7 @@ STATIC_INLINE void do_flush_screen (int start, int stop)
unlockscr (); unlockscr ();
if (start <= stop) if (start <= stop)
flush_screen (start, stop); flush_screen (start, stop);
else if (currprefs.gfx_afullscreen == 1 && currprefs.gfx_avsync) else if (currprefs.gfx_afullscreen == GFX_FULLSCREEN && currprefs.gfx_avsync)
flush_screen (0, 0); /* vsync mode */ flush_screen (0, 0); /* vsync mode */
} }
......
...@@ -2120,8 +2120,6 @@ static void gen_opcode (unsigned long int opcode) ...@@ -2120,8 +2120,6 @@ static void gen_opcode (unsigned long int opcode)
if (next_cpu_level < 0) if (next_cpu_level < 0)
next_cpu_level = 0; next_cpu_level = 0;
printf ("\tuae_u16 newsr; uae_u32 newpc;\n"); printf ("\tuae_u16 newsr; uae_u32 newpc;\n");
if (using_ce020) // need some delay so that interrupts have time to clear if previous ins was move to INTREQ
printf ("\tdo_cycles_ce (6 * CYCLE_UNIT);\n");
printf ("\tfor (;;) {\n"); printf ("\tfor (;;) {\n");
printf ("\t\tuaecptr a = m68k_areg (regs, 7);\n"); printf ("\t\tuaecptr a = m68k_areg (regs, 7);\n");
printf ("\t\tuae_s16 sr = %s (a);\n", srcw); printf ("\t\tuae_s16 sr = %s (a);\n", srcw);
......
...@@ -2313,7 +2313,7 @@ int is_vsync (void) ...@@ -2313,7 +2313,7 @@ int is_vsync (void)
return 0; return 0;
} }
void toggle_fullscreen (void) void toggle_fullscreen (int mode)
{ {
} }
......
...@@ -563,7 +563,7 @@ int check_prefs_changed_gfx (void) ...@@ -563,7 +563,7 @@ int check_prefs_changed_gfx (void)
return 0; return 0;
} }
void toggle_fullscreen (void) void toggle_fullscreen (int mode)
{ {
gWin->SetFullScreenMode(0); gWin->SetFullScreenMode(0);
} }
......
...@@ -663,7 +663,7 @@ int is_vsync (void) ...@@ -663,7 +663,7 @@ int is_vsync (void)
return 0; return 0;
} }
void toggle_fullscreen (void) void toggle_fullscreen (int mode)
{ {
}; };
......
...@@ -1888,7 +1888,7 @@ int is_vsync (void) ...@@ -1888,7 +1888,7 @@ int is_vsync (void)
return vsync; return vsync;
} }
void toggle_fullscreen (void) void toggle_fullscreen (int mode)
{ {
/* FIXME: Add support for separate full-screen/windowed sizes */ /* FIXME: Add support for separate full-screen/windowed sizes */
fullscreen = 1 - fullscreen; fullscreen = 1 - fullscreen;
......
...@@ -1534,7 +1534,7 @@ int is_vsync (void) ...@@ -1534,7 +1534,7 @@ int is_vsync (void)
return 0; return 0;
} }
void toggle_fullscreen (void) void toggle_fullscreen (int mode)
{ {
#ifdef USE_DGA_EXTENSION #ifdef USE_DGA_EXTENSION
changed_prefs.gfx_afullscreen = changed_prefs.gfx_pfullscreen = !dgamode; changed_prefs.gfx_afullscreen = changed_prefs.gfx_pfullscreen = !dgamode;
......
...@@ -189,7 +189,7 @@ void gui_display (int shortcut) ...@@ -189,7 +189,7 @@ void gui_display (int shortcut)
int was_fullscreen; int was_fullscreen;
if (was_fullscreen = is_fullscreen ()) { if (was_fullscreen = is_fullscreen ()) {
toggle_fullscreen (); toggle_fullscreen (0);
if (is_fullscreen ()) { if (is_fullscreen ()) {
resume_sound (); resume_sound ();
return; return;
...@@ -199,7 +199,7 @@ void gui_display (int shortcut) ...@@ -199,7 +199,7 @@ void gui_display (int shortcut)
(new floppyFilePanel (shortcut))->run (); (new floppyFilePanel (shortcut))->run ();
if (was_fullscreen) if (was_fullscreen)
toggle_fullscreen (); toggle_fullscreen (0);
} }
resume_sound (); resume_sound ();
} }
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#define COCOA_GUI_MAX_PATH 255 #define COCOA_GUI_MAX_PATH 255
/* These prototypes aren't declared in the sdlgfx header for some reason */ /* These prototypes aren't declared in the sdlgfx header for some reason */
extern void toggle_fullscreen (void); extern void toggle_fullscreen (int mode);
extern int is_fullscreen (void); extern int is_fullscreen (void);
/* Defined in SDLmain.m */ /* Defined in SDLmain.m */
...@@ -504,7 +504,7 @@ static BOOL wasFullscreen = NO; // used by ensureNotFullscreen() and restoreFull ...@@ -504,7 +504,7 @@ static BOOL wasFullscreen = NO; // used by ensureNotFullscreen() and restoreFull
- (void)goFullscreen:(id)sender - (void)goFullscreen:(id)sender
{ {
toggle_fullscreen(); toggle_fullscreen(0);
} }
- (void)toggleInhibitDisplay:(id)sender - (void)toggleInhibitDisplay:(id)sender
...@@ -523,7 +523,7 @@ int ensureNotFullscreen (void) ...@@ -523,7 +523,7 @@ int ensureNotFullscreen (void)
int result = 0; int result = 0;
if (is_fullscreen ()) { if (is_fullscreen ()) {
toggle_fullscreen (); toggle_fullscreen (0);
if (is_fullscreen ()) if (is_fullscreen ())
write_log ("Cannot activate GUI in full-screen mode\n"); write_log ("Cannot activate GUI in full-screen mode\n");
...@@ -548,7 +548,7 @@ void restoreFullscreen (void) ...@@ -548,7 +548,7 @@ void restoreFullscreen (void)
#endif #endif
if ((!is_fullscreen ()) && (wasFullscreen == YES)) if ((!is_fullscreen ()) && (wasFullscreen == YES))
toggle_fullscreen(); toggle_fullscreen(0);
wasFullscreen = NO; wasFullscreen = NO;
} }
......
...@@ -2468,7 +2468,7 @@ void gui_display (int shortcut) ...@@ -2468,7 +2468,7 @@ void gui_display (int shortcut)
/* If running fullscreen, then we must try to switched to windowed /* If running fullscreen, then we must try to switched to windowed
* mode before activating the GUI */ * mode before activating the GUI */
if (is_fullscreen ()) { if (is_fullscreen ()) {
toggle_fullscreen (); toggle_fullscreen (0);
if (is_fullscreen ()) { if (is_fullscreen ()) {
write_log ("Cannot activate GUI in full-screen mode\n"); write_log ("Cannot activate GUI in full-screen mode\n");
return; return;
......
...@@ -132,7 +132,9 @@ ...@@ -132,7 +132,9 @@
enum aks { AKS_ENTERGUI = 0x200, AKS_SCREENSHOT_FILE, AKS_SCREENSHOT_CLIPBOARD, AKS_FREEZEBUTTON, enum aks { AKS_ENTERGUI = 0x200, AKS_SCREENSHOT_FILE, AKS_SCREENSHOT_CLIPBOARD, AKS_FREEZEBUTTON,
AKS_FLOPPY0, AKS_FLOPPY1, AKS_FLOPPY2, AKS_FLOPPY3, AKS_FLOPPY0, AKS_FLOPPY1, AKS_FLOPPY2, AKS_FLOPPY3,
AKS_EFLOPPY0, AKS_EFLOPPY1, AKS_EFLOPPY2, AKS_EFLOPPY3, AKS_EFLOPPY0, AKS_EFLOPPY1, AKS_EFLOPPY2, AKS_EFLOPPY3,
AKS_TOGGLEFULLSCREEN, AKS_ENTERDEBUGGER, AKS_IRQ7, AKS_TOGGLEDEFAULTSCREEN,
AKS_TOGGLEWINDOWEDFULLSCREEN, AKS_TOGGLEFULLWINDOWFULLSCREEN, AKS_TOGGLEWINDOWFULLWINDOW,
AKS_ENTERDEBUGGER, AKS_IRQ7,
AKS_PAUSE, AKS_WARP, AKS_INHIBITSCREEN, AKS_STATEREWIND, AKS_PAUSE, AKS_WARP, AKS_INHIBITSCREEN, AKS_STATEREWIND,
AKS_VOLDOWN, AKS_VOLUP, AKS_VOLMUTE, AKS_VOLDOWN, AKS_VOLUP, AKS_VOLMUTE,
AKS_MVOLDOWN, AKS_MVOLUP, AKS_MVOLMUTE, AKS_MVOLDOWN, AKS_MVOLUP, AKS_MVOLMUTE,
......
...@@ -106,17 +106,12 @@ struct cache030 ...@@ -106,17 +106,12 @@ struct cache030
}; };
#define CACHESETS040 64 #define CACHESETS040 64
struct cache040set
{
uae_u32 data[4];
bool valid[4];
uae_u32 tag;
};
#define CACHELINES040 4 #define CACHELINES040 4
struct cache040 struct cache040
{ {
struct cache040set cs[4]; uae_u32 data[CACHELINES040][4];
int count; bool valid[CACHELINES040];
uae_u32 tag[CACHELINES040];
}; };
struct regstruct struct regstruct
...@@ -419,6 +414,7 @@ extern void compemu_reset (void); ...@@ -419,6 +414,7 @@ extern void compemu_reset (void);
#else #else
#define flush_icache(uaecptr, int) do {} while (0) #define flush_icache(uaecptr, int) do {} while (0)
#endif #endif
extern void flush_dcache (uaecptr, int);
extern void flush_mmu (uaecptr, int); extern void flush_mmu (uaecptr, int);
extern int movec_illg (int regno); extern int movec_illg (int regno);
...@@ -426,6 +422,6 @@ extern uae_u32 val_move2c (int regno); ...@@ -426,6 +422,6 @@ extern uae_u32 val_move2c (int regno);
extern void val_move2c2 (int regno, uae_u32 val); extern void val_move2c2 (int regno, uae_u32 val);
struct cpum2c { struct cpum2c {
int regno; int regno;
char *regname; TCHAR *regname;
}; };
extern struct cpum2c m2cregs[]; extern struct cpum2c m2cregs[];
...@@ -184,7 +184,7 @@ struct uae_prefs { ...@@ -184,7 +184,7 @@ struct uae_prefs {
bool gfx_autoresolution; bool gfx_autoresolution;
bool gfx_scandoubler; bool gfx_scandoubler;
int gfx_refreshrate; int gfx_refreshrate;
bool gfx_avsync, gfx_pvsync; int gfx_avsync, gfx_pvsync;
int gfx_resolution; int gfx_resolution;
int gfx_lores_mode; int gfx_lores_mode;
int gfx_linedbl; int gfx_linedbl;
......
...@@ -327,8 +327,10 @@ extern void mallocemu_free (void *ptr); ...@@ -327,8 +327,10 @@ extern void mallocemu_free (void *ptr);
#endif #endif
#include "target.h" #include "target.h"
#if !defined(RECUR)
#include "machdep/machdep.h" #include "machdep/machdep.h"
#include "gfxdep/gfx.h" #include "gfxdep/gfx.h"
#endif
extern void console_out (const char *, ...); extern void console_out (const char *, ...);
extern void console_flush (void); extern void console_flush (void);
...@@ -405,6 +407,7 @@ extern void xfree (const void*); ...@@ -405,6 +407,7 @@ extern void xfree (const void*);
#define _tcschr strchr #define _tcschr strchr
#define _tstof atof #define _tstof atof
#define _istdigit isdigit #define _istdigit isdigit
#define _istspace isspace
#define _tstoi atoi #define _tstoi atoi
#define _tcstol strtol #define _tcstol strtol
#define _wunlink unlink #define _wunlink unlink
......
...@@ -123,7 +123,7 @@ extern void graphics_notify_state (int state); ...@@ -123,7 +123,7 @@ extern void graphics_notify_state (int state);
extern void handle_events (void); extern void handle_events (void);
extern int is_fullscreen (void); extern int is_fullscreen (void);
extern int is_vsync (void); extern int is_vsync (void);
extern void toggle_fullscreen (void); extern void toggle_fullscreen (int mode);
extern void toggle_mousegrab (void); extern void toggle_mousegrab (void);
......
...@@ -467,7 +467,14 @@ void write_inputdevice_config (struct uae_prefs *p, FILE *f) ...@@ -467,7 +467,14 @@ void write_inputdevice_config (struct uae_prefs *p, FILE *f)
static int getnum (const TCHAR **pp) static int getnum (const TCHAR **pp)
{ {
const TCHAR *p = *pp; const TCHAR *p = *pp;
int v = _tstol (p); int v;
/* if (!_tcsnicmp (p, L"false", 5))
v = 0;
if (!_tcsnicmp (p, "true", 4))
v = 1;
else*/
v = _tstol (p);
while (*p != 0 && *p !='.' && *p != ',') while (*p != 0 && *p !='.' && *p != ',')
p++; p++;
...@@ -544,7 +551,7 @@ static void set_kbr_default_event (struct uae_input_device *kbr, struct uae_inpu ...@@ -544,7 +551,7 @@ static void set_kbr_default_event (struct uae_input_device *kbr, struct uae_inpu
} }
} }
static void set_kbr_default (struct uae_prefs *p, int index) static void set_kbr_default (struct uae_prefs *p, int index, int devnum)
{ {
int i, j; int i, j;
struct uae_input_device_kbr_default *trans = keyboard_default; struct uae_input_device_kbr_default *trans = keyboard_default;
...@@ -555,6 +562,8 @@ static void set_kbr_default (struct uae_prefs *p, int index) ...@@ -555,6 +562,8 @@ static void set_kbr_default (struct uae_prefs *p, int index)
if (!trans) if (!trans)
return; return;
for (j = 0; j < MAX_INPUT_DEVICES; j++) { for (j = 0; j < MAX_INPUT_DEVICES; j++) {
if (devnum >= 0 && devnum != j)
continue;
kbr = &p->keyboard_settings[index][j]; kbr = &p->keyboard_settings[index][j];
for (i = 0; i < MAX_INPUT_DEVICE_EVENTS; i++) { for (i = 0; i < MAX_INPUT_DEVICE_EVENTS; i++) {
memset (kbr, 0, sizeof (struct uae_input_device)); memset (kbr, 0, sizeof (struct uae_input_device));
...@@ -668,20 +677,27 @@ void read_inputdevice_config (struct uae_prefs *pr, char *option, char *value) ...@@ -668,20 +677,27 @@ void read_inputdevice_config (struct uae_prefs *pr, char *option, char *value)
} }
if (!_tcscmp (p2, "custom")) { if (!_tcscmp (p2, "custom")) {
int disabled; int iscustom;
p = value; p = value;
disabled = getnum (&p); iscustom = getnum (&p);
if (idnum == GAMEPORT_INPUT_SETTINGS) { if (idnum == GAMEPORT_INPUT_SETTINGS) {
clear_id (id); clear_id (id);
if (joystick < 0) if (joystick < 0)
set_kbr_default (pr, idnum); set_kbr_default (pr, idnum, devnum);
id->enabled = disabled == 0 ? 1 : 0; id->enabled = iscustom;
} }
return; return;
} }
if (!_tcscmp (p2, "empty")) { if (!_tcscmp (p2, "empty")) {
int empty;
p = value;
empty = getnum (&p);
clear_id (id); clear_id (id);
if (!empty) {
if (joystick < 0)
set_kbr_default (pr, idnum, devnum);
}
id->enabled = 1; id->enabled = 1;
if (idnum == GAMEPORT_INPUT_SETTINGS) if (idnum == GAMEPORT_INPUT_SETTINGS)
id->enabled = 0; id->enabled = 0;
...@@ -2234,8 +2250,17 @@ void inputdevice_handle_inputcode (void) ...@@ -2234,8 +2250,17 @@ void inputdevice_handle_inputcode (void)
savestate_quick ((code - AKS_STATERESTOREQUICK) / 2, 0); savestate_quick ((code - AKS_STATERESTOREQUICK) / 2, 0);
break; break;
#endif #endif
case AKS_TOGGLEFULLSCREEN: case AKS_TOGGLEDEFAULTSCREEN:
toggle_fullscreen (); toggle_fullscreen (-1);
break;
case AKS_TOGGLEWINDOWEDFULLSCREEN:
toggle_fullscreen (0);
break;
case AKS_TOGGLEFULLWINDOWFULLSCREEN:
toggle_fullscreen (1);
break;
case AKS_TOGGLEWINDOWFULLWINDOW:
toggle_fullscreen (2);
break; break;
case AKS_TOGGLEMOUSEGRAB: case AKS_TOGGLEMOUSEGRAB:
toggle_mousegrab (); toggle_mousegrab ();
...@@ -3603,11 +3628,6 @@ static void compatibility_copy (struct uae_prefs *prefs) ...@@ -3603,11 +3628,6 @@ static void compatibility_copy (struct uae_prefs *prefs)
case JSEM_MODE_DEFAULT: case JSEM_MODE_DEFAULT:
case JSEM_MODE_MOUSE: case JSEM_MODE_MOUSE:
default: default:
if (firstmouse) { // map first mouse to each available host mouse device
for (j = 0; j < MAX_INPUT_DEVICES; j++)
input_get_default_mouse (mice, j, i);
firstmouse = false;
}
input_get_default_mouse (mice, joy, i); input_get_default_mouse (mice, joy, i);
joymodes[i] = JSEM_MODE_MOUSE; joymodes[i] = JSEM_MODE_MOUSE;
break; break;
...@@ -4003,7 +4023,7 @@ void inputdevice_default_prefs (struct uae_prefs *p) ...@@ -4003,7 +4023,7 @@ void inputdevice_default_prefs (struct uae_prefs *p)
p->input_autofire_linecnt = 600; p->input_autofire_linecnt = 600;
for (i = 0; i < MAX_INPUT_SETTINGS; i++) { for (i = 0; i < MAX_INPUT_SETTINGS; i++) {
if (i != GAMEPORT_INPUT_SETTINGS) { if (i != GAMEPORT_INPUT_SETTINGS) {
set_kbr_default (p, i); set_kbr_default (p, i, -1);
for (j = 0; j < MAX_INPUT_DEVICES; j++) { for (j = 0; j < MAX_INPUT_DEVICES; j++) {
if (input_get_default_mouse (p->mouse_settings[i], j, j & 1)) if (input_get_default_mouse (p->mouse_settings[i], j, j & 1))
p->mouse_settings[i]->enabled = 1; p->mouse_settings[i]->enabled = 1;
...@@ -4014,7 +4034,7 @@ void inputdevice_default_prefs (struct uae_prefs *p) ...@@ -4014,7 +4034,7 @@ void inputdevice_default_prefs (struct uae_prefs *p)
if (p->jports[0].id != -2 || p->jports[0].id != -2) { if (p->jports[0].id != -2 || p->jports[0].id != -2) {
reset_inputdevice_slot (p, i); reset_inputdevice_slot (p, i);
} }
set_kbr_default (p, i); set_kbr_default (p, i, -1);
} }
} }
} }
......
...@@ -329,7 +329,9 @@ DEFEVENT(SPC_STATESAVE,"Quick save state",AM_K,0,0,AKS_STATESAVEQUICK) ...@@ -329,7 +329,9 @@ DEFEVENT(SPC_STATESAVE,"Quick save state",AM_K,0,0,AKS_STATESAVEQUICK)
DEFEVENT(SPC_STATERESTORE,"Quick restore state",AM_K,0,0,AKS_STATERESTOREQUICK) DEFEVENT(SPC_STATERESTORE,"Quick restore state",AM_K,0,0,AKS_STATERESTOREQUICK)
DEFEVENT(SPC_STATESAVEDIALOG,"Save state",AM_K,0,0,AKS_STATESAVEDIALOG) DEFEVENT(SPC_STATESAVEDIALOG,"Save state",AM_K,0,0,AKS_STATESAVEDIALOG)
DEFEVENT(SPC_STATERESTOREDIALOG,"Restore state",AM_K,0,0,AKS_STATERESTOREDIALOG) DEFEVENT(SPC_STATERESTOREDIALOG,"Restore state",AM_K,0,0,AKS_STATERESTOREDIALOG)
DEFEVENT(SPC_TOGGLEFULLSCREEN,"Toggle windowed/fullscreen",AM_K,0,0,AKS_TOGGLEFULLSCREEN) DEFEVENT(SPC_TOGGLEFULLSCREEN,"Toggle windowed/fullscreen",AM_K,0,0,AKS_TOGGLEWINDOWEDFULLSCREEN)
DEFEVENT(SPC_TOGGLEFULLWINDOWFULLSCREEN,"Toggle full-window/fullscreen",AM_K,0,0,AKS_TOGGLEFULLWINDOWFULLSCREEN)
DEFEVENT(SPC_TOGGLEWINDOWFULLWINDOW,"Toggle window/full-window",AM_K,0,0,AKS_TOGGLEWINDOWFULLWINDOW)
DEFEVENT(SPC_TOGGLEMOUSEGRAB,"Toggle between mouse grabbed and un-grabbed",AM_K,0,0,AKS_TOGGLEMOUSEGRAB) DEFEVENT(SPC_TOGGLEMOUSEGRAB,"Toggle between mouse grabbed and un-grabbed",AM_K,0,0,AKS_TOGGLEMOUSEGRAB)
DEFEVENT(SPC_GLPANLEFT,"Pan opengl texture to the left",AM_K,0,0,AKS_GLPANLEFT) /*Koko*/ DEFEVENT(SPC_GLPANLEFT,"Pan opengl texture to the left",AM_K,0,0,AKS_GLPANLEFT) /*Koko*/
DEFEVENT(SPC_GLPANRIGHT,"Pan opengl texture to the left",AM_K,0,0,AKS_GLPANRIGHT) /*Koko*/ DEFEVENT(SPC_GLPANRIGHT,"Pan opengl texture to the left",AM_K,0,0,AKS_GLPANRIGHT) /*Koko*/
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -170,55 +170,55 @@ struct instr *table68k; ...@@ -170,55 +170,55 @@ struct instr *table68k;
static int specialcase (uae_u16 opcode, int cpu_lev) static int specialcase (uae_u16 opcode, int cpu_lev)
{ {
int mode = (opcode >> 3) & 7; int mode = (opcode >> 3) & 7;
int reg = opcode & 7; int reg = opcode & 7;
if (cpu_lev >= 2) if (cpu_lev >= 2)
return cpu_lev; return cpu_lev;
/* TST.W A0, TST.L A0, TST.x (d16,PC) and TST.x (d8,PC,Xn) are 68020+ only */ /* TST.W A0, TST.L A0, TST.x (d16,PC) and TST.x (d8,PC,Xn) are 68020+ only */
if ((opcode & 0xff00) == 0x4a00) { if ((opcode & 0xff00) == 0x4a00) {
if (mode == 7 && (reg == 4 || reg == 2 || reg == 3)) if (mode == 7 && (reg == 4 || reg == 2 || reg == 3))
return 2; return 2;
if (mode == 1) /* Ax */ if (mode == 1) /* Ax */
return 2; return 2;
} }
/* CMPI.W #x,(d16,PC) and CMPI.W #x,(d8,PC,Xn) are 68020+ only */ /* CMPI.W #x,(d16,PC) and CMPI.W #x,(d8,PC,Xn) are 68020+ only */
if ((opcode & 0xff00) == 0x0c00) { if ((opcode & 0xff00) == 0x0c00) {
if (mode == 7 && (reg == 2 || reg == 3)) if (mode == 7 && (reg == 2 || reg == 3))
return 2; return 2;
} }
return cpu_lev; return cpu_lev;
} }
static amodes mode_from_str (const char *str) static amodes mode_from_str (const char *str)
{ {
if (strncmp (str, "Dreg", 4) == 0) return Dreg; if (strncmp (str, "Dreg", 4) == 0) return Dreg;
if (strncmp (str, "Areg", 4) == 0) return Areg; if (strncmp (str, "Areg", 4) == 0) return Areg;
if (strncmp (str, "Aind", 4) == 0) return Aind; if (strncmp (str, "Aind", 4) == 0) return Aind;
if (strncmp (str, "Apdi", 4) == 0) return Apdi; if (strncmp (str, "Apdi", 4) == 0) return Apdi;
if (strncmp (str, "Aipi", 4) == 0) return Aipi; if (strncmp (str, "Aipi", 4) == 0) return Aipi;
if (strncmp (str, "Ad16", 4) == 0) return Ad16; if (strncmp (str, "Ad16", 4) == 0) return Ad16;
if (strncmp (str, "Ad8r", 4) == 0) return Ad8r; if (strncmp (str, "Ad8r", 4) == 0) return Ad8r;
if (strncmp (str, "absw", 4) == 0) return absw; if (strncmp (str, "absw", 4) == 0) return absw;
if (strncmp (str, "absl", 4) == 0) return absl; if (strncmp (str, "absl", 4) == 0) return absl;
if (strncmp (str, "PC16", 4) == 0) return PC16; if (strncmp (str, "PC16", 4) == 0) return PC16;
if (strncmp (str, "PC8r", 4) == 0) return PC8r; if (strncmp (str, "PC8r", 4) == 0) return PC8r;
if (strncmp (str, "Immd", 4) == 0) return imm; if (strncmp (str, "Immd", 4) == 0) return imm;
abort (); abort ();
return 0; return 0;
} }
STATIC_INLINE amodes mode_from_mr (int mode, int reg) STATIC_INLINE amodes mode_from_mr (int mode, int reg)
{ {
switch (mode) { switch (mode) {
case 0: return Dreg; case 0: return Dreg;
case 1: return Areg; case 1: return Areg;
case 2: return Aind; case 2: return Aind;
case 3: return Aipi; case 3: return Aipi;
case 4: return Apdi; case 4: return Apdi;
case 5: return Ad16; case 5: return Ad16;
case 6: return Ad8r; case 6: return Ad8r;
case 7: case 7:
switch (reg) { switch (reg) {
case 0: return absw; case 0: return absw;
case 1: return absl; case 1: return absl;
...@@ -229,29 +229,29 @@ STATIC_INLINE amodes mode_from_mr (int mode, int reg) ...@@ -229,29 +229,29 @@ STATIC_INLINE amodes mode_from_mr (int mode, int reg)
case 6: case 6:
case 7: return am_illg; case 7: return am_illg;
} }
} }
abort (); abort ();
return 0; return 0;
} }
static void build_insn (int insn) static void build_insn (int insn)
{ {
int find = -1; int find = -1;
int variants; int variants;
int isjmp = 0; int isjmp = 0;
struct instr_def id; struct instr_def id;
const char *opcstr; const char *opcstr;
int i; int i;
int flaglive = 0, flagdead = 0; int flaglive = 0, flagdead = 0;
id = defs68k[insn]; id = defs68k[insn];
/* Note: We treat anything with unknown flags as a jump. That /* Note: We treat anything with unknown flags as a jump. That
is overkill, but "the programmer" was lazy quite often, and is overkill, but "the programmer" was lazy quite often, and
*this* programmer can't be bothered to work out what can and *this* programmer can't be bothered to work out what can and
can't trap. Usually, this will be overwritten with the gencomp can't trap. Usually, this will be overwritten with the gencomp
based information, anyway. */ based information, anyway. */
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
switch (id.flaginfo[i].flagset){ switch (id.flaginfo[i].flagset){
...@@ -300,42 +300,42 @@ out1: ...@@ -300,42 +300,42 @@ out1:
int srcreg = -1, destreg = -1; int srcreg = -1, destreg = -1;
for (i = 0; i < lastbit; i++) for (i = 0; i < lastbit; i++)
bitcnt[i] = bitval[i] = 0; bitcnt[i] = bitval[i] = 0;
vmsk = 1 << id.n_variable; vmsk = 1 << id.n_variable;
for (i = 0, msk = 0x8000; i < 16; i++, msk >>= 1) { for (i = 0, msk = 0x8000; i < 16; i++, msk >>= 1) {
if (!(msk & id.mask)) { if (!(msk & id.mask)) {
int currbit = id.bitpos[bitno++]; int currbit = id.bitpos[bitno++];
int bit_set; int bit_set;
vmsk >>= 1; vmsk >>= 1;
bit_set = variants & vmsk ? 1 : 0; bit_set = variants & vmsk ? 1 : 0;
if (bit_set) if (bit_set)
opc |= msk; opc |= msk;
bitpos[currbit] = 15 - i; bitpos[currbit] = 15 - i;
bitcnt[currbit]++; bitcnt[currbit]++;
bitval[currbit] <<= 1; bitval[currbit] <<= 1;
bitval[currbit] |= bit_set; bitval[currbit] |= bit_set;
} }
} }
if (bitval[bitj] == 0) bitval[bitj] = 8; if (bitval[bitj] == 0) bitval[bitj] = 8;
/* first check whether this one does not match after all */ /* first check whether this one does not match after all */
if (bitval[bitz] == 3 || bitval[bitC] == 1) if (bitval[bitz] == 3 || bitval[bitC] == 1)
continue; continue;
if (bitcnt[bitI] && (bitval[bitI] == 0x00 || bitval[bitI] == 0xff)) if (bitcnt[bitI] && (bitval[bitI] == 0x00 || bitval[bitI] == 0xff))
continue; continue;
/* bitI and bitC get copied to biti and bitc */ /* bitI and bitC get copied to biti and bitc */
if (bitcnt[bitI]) { if (bitcnt[bitI]) {
bitval[biti] = bitval[bitI]; bitpos[biti] = bitpos[bitI]; bitval[biti] = bitval[bitI]; bitpos[biti] = bitpos[bitI];
} }
if (bitcnt[bitC]) if (bitcnt[bitC])
bitval[bitc] = bitval[bitC]; bitval[bitc] = bitval[bitC];
pos = 0; pos = 0;
while (opcstr[pos] && !isspace(opcstr[pos])) { while (opcstr[pos] && !isspace(opcstr[pos])) {
if (opcstr[pos] == '.') { if (opcstr[pos] == '.') {
pos++; pos++;
switch (opcstr[pos]) { switch (opcstr[pos]) {
...@@ -370,524 +370,525 @@ out1: ...@@ -370,524 +370,525 @@ out1:
/* now, we have read the mnemonic and the size */ /* now, we have read the mnemonic and the size */
while (opcstr[pos] && isspace(opcstr[pos])) while (opcstr[pos] && isspace(opcstr[pos]))
pos++; pos++;
/* A goto a day keeps the D******a away. */ /* A goto a day keeps the D******a away. */
if (opcstr[pos] == 0) if (opcstr[pos] == 0)
goto endofline; goto endofline;
/* parse the source address */ /* parse the source address */
usesrc = 1; usesrc = 1;
switch (opcstr[pos++]) { switch (opcstr[pos++]) {
case 'D': case 'D':
srcmode = Dreg; srcmode = Dreg;
switch (opcstr[pos++]) { switch (opcstr[pos++]) {
case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break; case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break;
case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break; case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break;
default: abort(); default: abort();
} }
break; break;
case 'A': case 'A':
srcmode = Areg; srcmode = Areg;
switch (opcstr[pos++]) { switch (opcstr[pos++]) {
case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break; case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break;
case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break; case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break;
default: abort(); default: abort();
} }
switch (opcstr[pos]) { switch (opcstr[pos]) {
case 'p': srcmode = Apdi; pos++; break; case 'p': srcmode = Apdi; pos++; break;
case 'P': srcmode = Aipi; pos++; break; case 'P': srcmode = Aipi; pos++; break;
case 'a': srcmode = Aind; pos++; break; case 'a': srcmode = Aind; pos++; break;
} }
break; break;
case 'L': case 'L':
srcmode = absl; srcmode = absl;
break; break;
case '#': case '#':
switch (opcstr[pos++]) { switch (opcstr[pos++]) {
case 'z': srcmode = imm; break; case 'z': srcmode = imm; break;
case '0': srcmode = imm0; break; case '0': srcmode = imm0; break;
case '1': srcmode = imm1; break; case '1': srcmode = imm1; break;
case '2': srcmode = imm2; break; case '2': srcmode = imm2; break;
case 'i': srcmode = immi; srcreg = (uae_s32)(uae_s8)bitval[biti]; case 'i': srcmode = immi; srcreg = (uae_s32)(uae_s8)bitval[biti];
if (CPU_EMU_SIZE < 4) { if (CPU_EMU_SIZE < 4) {
/* Used for branch instructions */ /* Used for branch instructions */
srctype = 1; srctype = 1;
srcgather = 1; srcgather = 1;
srcpos = bitpos[biti]; srcpos = bitpos[biti];
} }
break; break;
case 'j': srcmode = immi; srcreg = bitval[bitj]; case 'j': srcmode = immi; srcreg = bitval[bitj];
if (CPU_EMU_SIZE < 3) { if (CPU_EMU_SIZE < 3) {
/* 1..8 for ADDQ/SUBQ and rotshi insns */ /* 1..8 for ADDQ/SUBQ and rotshi insns */
srcgather = 1; srcgather = 1;
srctype = 3; srctype = 3;
srcpos = bitpos[bitj]; srcpos = bitpos[bitj];
} }
break; break;
case 'J': srcmode = immi; srcreg = bitval[bitJ]; case 'J': srcmode = immi; srcreg = bitval[bitJ];
if (CPU_EMU_SIZE < 5) { if (CPU_EMU_SIZE < 5) {
/* 0..15 */ /* 0..15 */
srcgather = 1; srcgather = 1;
srctype = 2; srctype = 2;
srcpos = bitpos[bitJ]; srcpos = bitpos[bitJ];
} }
break; break;
case 'k': srcmode = immi; srcreg = bitval[bitk]; case 'k': srcmode = immi; srcreg = bitval[bitk];
if (CPU_EMU_SIZE < 3) { if (CPU_EMU_SIZE < 3) {
srcgather = 1; srcgather = 1;
srctype = 4; srctype = 4;
srcpos = bitpos[bitk]; srcpos = bitpos[bitk];
} }
break; break;
case 'K': srcmode = immi; srcreg = bitval[bitK]; case 'K': srcmode = immi; srcreg = bitval[bitK];
if (CPU_EMU_SIZE < 5) { if (CPU_EMU_SIZE < 5) {
/* 0..15 */ /* 0..15 */
srcgather = 1; srcgather = 1;
srctype = 5; srctype = 5;
srcpos = bitpos[bitK]; srcpos = bitpos[bitK];
} }
break; break;
case 'p': srcmode = immi; srcreg = bitval[bitK]; case 'p': srcmode = immi; srcreg = bitval[bitK];
if (CPU_EMU_SIZE < 5) { if (CPU_EMU_SIZE < 5) {
/* 0..3 */ /* 0..3 */
srcgather = 1; srcgather = 1;
srctype = 7; srctype = 7;
srcpos = bitpos[bitp]; srcpos = bitpos[bitp];
} }
break; break;
default: abort(); default: abort();
}
break;
case 'd':
srcreg = bitval[bitD];
srcmode = mode_from_mr(bitval[bitd],bitval[bitD]);
if (srcmode == am_illg)
continue;
if (CPU_EMU_SIZE < 2 &&
(srcmode == Areg || srcmode == Dreg || srcmode == Aind
|| srcmode == Ad16 || srcmode == Ad8r || srcmode == Aipi
|| srcmode == Apdi))
{
srcgather = 1; srcpos = bitpos[bitD];
}
if (opcstr[pos] == '[') {
pos++;
if (opcstr[pos] == '!') {
/* exclusion */
do {
pos++;
if (mode_from_str(opcstr+pos) == srcmode)
goto nomatch;
pos += 4;
} while (opcstr[pos] == ',');
pos++;
} else {
if (opcstr[pos+4] == '-') {
/* replacement */
if (mode_from_str(opcstr+pos) == srcmode)
srcmode = mode_from_str(opcstr+pos+5);
else
goto nomatch;
pos += 10;
} else {
/* normal */
while(mode_from_str(opcstr+pos) != srcmode) {
pos += 4;
if (opcstr[pos] == ']')
goto nomatch;
pos++;
} }
while(opcstr[pos] != ']') pos++;
pos++;
break; break;
} case 'd':
} srcreg = bitval[bitD];
} srcmode = mode_from_mr(bitval[bitd],bitval[bitD]);
/* Some addressing modes are invalid as destination */ if (srcmode == am_illg)
if (srcmode == imm || srcmode == PC16 || srcmode == PC8r) continue;
goto nomatch; if (CPU_EMU_SIZE < 2 &&
break; (srcmode == Areg || srcmode == Dreg || srcmode == Aind
case 's': || srcmode == Ad16 || srcmode == Ad8r || srcmode == Aipi
srcreg = bitval[bitS]; || srcmode == Apdi))
srcmode = mode_from_mr(bitval[bits],bitval[bitS]); {
srcgather = 1; srcpos = bitpos[bitD];
if (srcmode == am_illg) }
continue; if (opcstr[pos] == '[') {
if (CPU_EMU_SIZE < 2 && pos++;
(srcmode == Areg || srcmode == Dreg || srcmode == Aind if (opcstr[pos] == '!') {
|| srcmode == Ad16 || srcmode == Ad8r || srcmode == Aipi /* exclusion */
|| srcmode == Apdi)) do {
{ pos++;
srcgather = 1; srcpos = bitpos[bitS]; if (mode_from_str(opcstr+pos) == srcmode)
} goto nomatch;
if (opcstr[pos] == '[') { pos += 4;
pos++; } while (opcstr[pos] == ',');
if (opcstr[pos] == '!') { pos++;
/* exclusion */ } else {
do { if (opcstr[pos+4] == '-') {
pos++; /* replacement */
if (mode_from_str(opcstr+pos) == srcmode) if (mode_from_str(opcstr+pos) == srcmode)
goto nomatch; srcmode = mode_from_str(opcstr+pos+5);
pos += 4; else
} while (opcstr[pos] == ','); goto nomatch;
pos++; pos += 10;
} else { } else {
if (opcstr[pos+4] == '-') { /* normal */
/* replacement */ while(mode_from_str(opcstr+pos) != srcmode) {
if (mode_from_str(opcstr+pos) == srcmode) pos += 4;
srcmode = mode_from_str(opcstr+pos+5); if (opcstr[pos] == ']')
else goto nomatch;
goto nomatch; pos++;
pos += 10; }
} else { while(opcstr[pos] != ']') pos++;
/* normal */ pos++;
while(mode_from_str(opcstr+pos) != srcmode) { break;
pos += 4; }
if (opcstr[pos] == ']') }
}
/* Some addressing modes are invalid as destination */
if (srcmode == imm || srcmode == PC16 || srcmode == PC8r)
goto nomatch; goto nomatch;
pos++; break;
case 's':
srcreg = bitval[bitS];
srcmode = mode_from_mr(bitval[bits],bitval[bitS]);
if (srcmode == am_illg)
continue;
if (CPU_EMU_SIZE < 2 &&
(srcmode == Areg || srcmode == Dreg || srcmode == Aind
|| srcmode == Ad16 || srcmode == Ad8r || srcmode == Aipi
|| srcmode == Apdi))
{
srcgather = 1; srcpos = bitpos[bitS];
} }
while(opcstr[pos] != ']') pos++; if (opcstr[pos] == '[') {
pos++; pos++;
} if (opcstr[pos] == '!') {
/* exclusion */
do {
pos++;
if (mode_from_str(opcstr+pos) == srcmode)
goto nomatch;
pos += 4;
} while (opcstr[pos] == ',');
pos++;
} else {
if (opcstr[pos+4] == '-') {
/* replacement */
if (mode_from_str(opcstr+pos) == srcmode)
srcmode = mode_from_str(opcstr+pos+5);
else
goto nomatch;
pos += 10;
} else {
/* normal */
while(mode_from_str(opcstr+pos) != srcmode) {
pos += 4;
if (opcstr[pos] == ']')
goto nomatch;
pos++;
}
while(opcstr[pos] != ']') pos++;
pos++;
}
}
}
break;
default: abort();
} }
} /* safety check - might have changed */
break; if (srcmode != Areg && srcmode != Dreg && srcmode != Aind
default: abort(); && srcmode != Ad16 && srcmode != Ad8r && srcmode != Aipi
} && srcmode != Apdi && srcmode != immi)
/* safety check - might have changed */
if (srcmode != Areg && srcmode != Dreg && srcmode != Aind
&& srcmode != Ad16 && srcmode != Ad8r && srcmode != Aipi
&& srcmode != Apdi && srcmode != immi)
{
srcgather = 0;
}
if (srcmode == Areg && sz == sz_byte)
goto nomatch;
if (opcstr[pos] != ',')
goto endofline;
pos++;
/* parse the destination address */
usedst = 1;
switch (opcstr[pos++]) {
case 'D':
destmode = Dreg;
switch (opcstr[pos++]) {
case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break;
case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break;
default: abort();
}
if (dstpos < 0 || dstpos >= 32)
abort ();
break;
case 'A':
destmode = Areg;
switch (opcstr[pos++]) {
case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break;
case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break;
case 'x': destreg = 0; dstgather = 0; dstpos = 0; break;
default: abort();
}
if (dstpos < 0 || dstpos >= 32)
abort ();
switch (opcstr[pos]) {
case 'p': destmode = Apdi; pos++; break;
case 'P': destmode = Aipi; pos++; break;
}
break;
case 'L':
destmode = absl;
break;
case '#':
switch (opcstr[pos++]) {
case 'z': destmode = imm; break;
case '0': destmode = imm0; break;
case '1': destmode = imm1; break;
case '2': destmode = imm2; break;
case 'i': destmode = immi; destreg = (uae_s32)(uae_s8)bitval[biti]; break;
case 'j': destmode = immi; destreg = bitval[bitj]; break;
case 'J': destmode = immi; destreg = bitval[bitJ]; break;
case 'k': destmode = immi; destreg = bitval[bitk]; break;
case 'K': destmode = immi; destreg = bitval[bitK]; break;
default: abort();
}
break;
case 'd':
destreg = bitval[bitD];
destmode = mode_from_mr(bitval[bitd],bitval[bitD]);
if (destmode == am_illg)
continue;
if (CPU_EMU_SIZE < 1 &&
(destmode == Areg || destmode == Dreg || destmode == Aind
|| destmode == Ad16 || destmode == Ad8r || destmode == Aipi
|| destmode == Apdi))
{ {
dstgather = 1; dstpos = bitpos[bitD]; srcgather = 0;
} }
if (srcmode == Areg && sz == sz_byte)
goto nomatch;
if (opcstr[pos] == '[') { if (opcstr[pos] != ',')
goto endofline;
pos++; pos++;
if (opcstr[pos] == '!') {
/* exclusion */ /* parse the destination address */
do { usedst = 1;
pos++; switch (opcstr[pos++]) {
if (mode_from_str(opcstr+pos) == destmode) case 'D':
goto nomatch; destmode = Dreg;
pos += 4; switch (opcstr[pos++]) {
} while (opcstr[pos] == ','); case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break;
pos++; case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break;
} else { default: abort();
if (opcstr[pos+4] == '-') { }
/* replacement */ if (dstpos < 0 || dstpos >= 32)
if (mode_from_str(opcstr+pos) == destmode) abort ();
destmode = mode_from_str(opcstr+pos+5); break;
else case 'A':
goto nomatch; destmode = Areg;
pos += 10; switch (opcstr[pos++]) {
} else { case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break;
/* normal */ case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break;
while(mode_from_str(opcstr+pos) != destmode) { case 'x': destreg = 0; dstgather = 0; dstpos = 0; break;
pos += 4; default: abort();
if (opcstr[pos] == ']') }
if (dstpos < 0 || dstpos >= 32)
abort ();
switch (opcstr[pos]) {
case 'p': destmode = Apdi; pos++; break;
case 'P': destmode = Aipi; pos++; break;
}
break;
case 'L':
destmode = absl;
break;
case '#':
switch (opcstr[pos++]) {
case 'z': destmode = imm; break;
case '0': destmode = imm0; break;
case '1': destmode = imm1; break;
case '2': destmode = imm2; break;
case 'i': destmode = immi; destreg = (uae_s32)(uae_s8)bitval[biti]; break;
case 'j': destmode = immi; destreg = bitval[bitj]; break;
case 'J': destmode = immi; destreg = bitval[bitJ]; break;
case 'k': destmode = immi; destreg = bitval[bitk]; break;
case 'K': destmode = immi; destreg = bitval[bitK]; break;
default: abort();
}
break;
case 'd':
destreg = bitval[bitD];
destmode = mode_from_mr(bitval[bitd],bitval[bitD]);
if (destmode == am_illg)
continue;
if (CPU_EMU_SIZE < 1 &&
(destmode == Areg || destmode == Dreg || destmode == Aind
|| destmode == Ad16 || destmode == Ad8r || destmode == Aipi
|| destmode == Apdi))
{
dstgather = 1; dstpos = bitpos[bitD];
}
if (opcstr[pos] == '[') {
pos++;
if (opcstr[pos] == '!') {
/* exclusion */
do {
pos++;
if (mode_from_str(opcstr+pos) == destmode)
goto nomatch;
pos += 4;
} while (opcstr[pos] == ',');
pos++;
} else {
if (opcstr[pos+4] == '-') {
/* replacement */
if (mode_from_str(opcstr+pos) == destmode)
destmode = mode_from_str(opcstr+pos+5);
else
goto nomatch;
pos += 10;
} else {
/* normal */
while(mode_from_str(opcstr+pos) != destmode) {
pos += 4;
if (opcstr[pos] == ']')
goto nomatch;
pos++;
}
while(opcstr[pos] != ']') pos++;
pos++;
break;
}
}
}
/* Some addressing modes are invalid as destination */
if (destmode == imm || destmode == PC16 || destmode == PC8r)
goto nomatch; goto nomatch;
pos++; break;
case 's':
destreg = bitval[bitS];
destmode = mode_from_mr(bitval[bits],bitval[bitS]);
if (destmode == am_illg)
continue;
if (CPU_EMU_SIZE < 1 &&
(destmode == Areg || destmode == Dreg || destmode == Aind
|| destmode == Ad16 || destmode == Ad8r || destmode == Aipi
|| destmode == Apdi))
{
dstgather = 1; dstpos = bitpos[bitS];
}
if (opcstr[pos] == '[') {
pos++;
if (opcstr[pos] == '!') {
/* exclusion */
do {
pos++;
if (mode_from_str(opcstr+pos) == destmode)
goto nomatch;
pos += 4;
} while (opcstr[pos] == ',');
pos++;
} else {
if (opcstr[pos+4] == '-') {
/* replacement */
if (mode_from_str(opcstr+pos) == destmode)
destmode = mode_from_str(opcstr+pos+5);
else
goto nomatch;
pos += 10;
} else {
/* normal */
while(mode_from_str(opcstr+pos) != destmode) {
pos += 4;
if (opcstr[pos] == ']')
goto nomatch;
pos++;
}
while(opcstr[pos] != ']') pos++;
pos++;
}
}
} }
while(opcstr[pos] != ']') pos++;
pos++;
break; break;
} default: abort();
} }
} /* safety check - might have changed */
/* Some addressing modes are invalid as destination */ if (destmode != Areg && destmode != Dreg && destmode != Aind
if (destmode == imm || destmode == PC16 || destmode == PC8r) && destmode != Ad16 && destmode != Ad8r && destmode != Aipi
goto nomatch; && destmode != Apdi)
break;
case 's':
destreg = bitval[bitS];
destmode = mode_from_mr(bitval[bits],bitval[bitS]);
if (destmode == am_illg)
continue;
if (CPU_EMU_SIZE < 1 &&
(destmode == Areg || destmode == Dreg || destmode == Aind
|| destmode == Ad16 || destmode == Ad8r || destmode == Aipi
|| destmode == Apdi))
{ {
dstgather = 1; dstpos = bitpos[bitS]; dstgather = 0;
} }
if (opcstr[pos] == '[') { if (destmode == Areg && sz == sz_byte)
pos++; goto nomatch;
if (opcstr[pos] == '!') {
/* exclusion */
do {
pos++;
if (mode_from_str(opcstr+pos) == destmode)
goto nomatch;
pos += 4;
} while (opcstr[pos] == ',');
pos++;
} else {
if (opcstr[pos+4] == '-') {
/* replacement */
if (mode_from_str(opcstr+pos) == destmode)
destmode = mode_from_str(opcstr+pos+5);
else
goto nomatch;
pos += 10;
} else {
/* normal */
while(mode_from_str(opcstr+pos) != destmode) {
pos += 4;
if (opcstr[pos] == ']')
goto nomatch;
pos++;
}
while(opcstr[pos] != ']') pos++;
pos++;
}
}
}
break;
default: abort();
}
/* safety check - might have changed */
if (destmode != Areg && destmode != Dreg && destmode != Aind
&& destmode != Ad16 && destmode != Ad8r && destmode != Aipi
&& destmode != Apdi)
{
dstgather = 0;
}
if (destmode == Areg && sz == sz_byte)
goto nomatch;
#if 0 #if 0
if (sz == sz_byte && (destmode == Aipi || destmode == Apdi)) { if (sz == sz_byte && (destmode == Aipi || destmode == Apdi)) {
dstgather = 0; dstgather = 0;
} }
#endif #endif
endofline: endofline:
/* now, we have a match */ /* now, we have a match */
if (table68k[opc].mnemo != i_ILLG) if (table68k[opc].mnemo != i_ILLG)
;//write_log ("Double match: %x: %s\n", opc, opcstr); ;//write_log ("Double match: %x: %s\n", opc, opcstr);
if (find == -1) { if (find == -1) {
for (find = 0;; find++) { for (find = 0;; find++) {
if (strcmp(mnemonic, lookuptab[find].name) == 0) { if (strcmp (mnemonic, lookuptab[find].name) == 0) {
table68k[opc].mnemo = lookuptab[find].mnemo; table68k[opc].mnemo = lookuptab[find].mnemo;
break; break;
}
if (strlen (lookuptab[find].name) == 0)
abort();
}
} }
if (strlen(lookuptab[find].name) == 0) abort(); else {
} table68k[opc].mnemo = lookuptab[find].mnemo;
} }
else { table68k[opc].cc = bitval[bitc];
table68k[opc].mnemo = lookuptab[find].mnemo; if (table68k[opc].mnemo == i_BTST
} || table68k[opc].mnemo == i_BSET
table68k[opc].cc = bitval[bitc]; || table68k[opc].mnemo == i_BCLR
if (table68k[opc].mnemo == i_BTST || table68k[opc].mnemo == i_BCHG)
|| table68k[opc].mnemo == i_BSET {
|| table68k[opc].mnemo == i_BCLR sz = destmode == Dreg ? sz_long : sz_byte;
|| table68k[opc].mnemo == i_BCHG) }
{ table68k[opc].size = sz;
sz = destmode == Dreg ? sz_long : sz_byte; table68k[opc].sreg = srcreg;
} table68k[opc].dreg = destreg;
table68k[opc].size = sz; table68k[opc].smode = srcmode;
table68k[opc].sreg = srcreg; table68k[opc].dmode = destmode;
table68k[opc].dreg = destreg; table68k[opc].spos = srcgather ? srcpos : -1;
table68k[opc].smode = srcmode; table68k[opc].dpos = dstgather ? dstpos : -1;
table68k[opc].dmode = destmode; table68k[opc].suse = usesrc;
table68k[opc].spos = srcgather ? srcpos : -1; table68k[opc].duse = usedst;
table68k[opc].dpos = dstgather ? dstpos : -1; table68k[opc].stype = srctype;
table68k[opc].suse = usesrc; table68k[opc].plev = id.plevel;
table68k[opc].duse = usedst; table68k[opc].clev = specialcase(opc, id.cpulevel);
table68k[opc].stype = srctype;
table68k[opc].plev = id.plevel;
table68k[opc].clev = specialcase(opc, id.cpulevel);
#if 0 #if 0
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
table68k[opc].flaginfo[i].flagset = id.flaginfo[i].flagset; table68k[opc].flaginfo[i].flagset = id.flaginfo[i].flagset;
table68k[opc].flaginfo[i].flaguse = id.flaginfo[i].flaguse; table68k[opc].flaginfo[i].flaguse = id.flaginfo[i].flaguse;
} }
#endif #endif
table68k[opc].flagdead = flagdead; table68k[opc].flagdead = flagdead;
table68k[opc].flaglive = flaglive; table68k[opc].flaglive = flaglive;
table68k[opc].isjmp = isjmp; table68k[opc].isjmp = isjmp;
nomatch: nomatch:
/* FOO! */; /* FOO! */;
} }
} }
void read_table68k (void) void read_table68k (void)
{ {
int i; int i;
free (table68k); free (table68k);
table68k = (struct instr *)xmalloc (65536 * sizeof (struct instr)); table68k = xmalloc (sizeof (struct instr) * 65536);
for (i = 0; i < 65536; i++) { for (i = 0; i < 65536; i++) {
table68k[i].mnemo = i_ILLG; table68k[i].mnemo = i_ILLG;
table68k[i].handler = -1; table68k[i].handler = -1;
} }
for (i = 0; i < n_defs68k; i++) { for (i = 0; i < n_defs68k; i++) {
build_insn (i); build_insn (i);
} }
} }
static int mismatch; static int mismatch;
static void handle_merges (long int opcode) static void handle_merges (long int opcode)
{ {
uae_u16 smsk; uae_u16 smsk;
uae_u16 dmsk; uae_u16 dmsk;
int sbitdst, dstend; int sbitdst, dstend;
int srcreg, dstreg; int srcreg, dstreg;
if (table68k[opcode].spos == -1) { if (table68k[opcode].spos == -1) {
sbitdst = 1; smsk = 0; sbitdst = 1; smsk = 0;
} else { } else {
switch (table68k[opcode].stype) { switch (table68k[opcode].stype) {
case 0: case 0:
smsk = 7; sbitdst = 8; break; smsk = 7; sbitdst = 8; break;
case 1: case 1:
smsk = 255; sbitdst = 256; break; smsk = 255; sbitdst = 256; break;
case 2: case 2:
smsk = 15; sbitdst = 16; break; smsk = 15; sbitdst = 16; break;
case 3: case 3:
smsk = 7; sbitdst = 8; break; smsk = 7; sbitdst = 8; break;
case 4: case 4:
smsk = 7; sbitdst = 8; break; smsk = 7; sbitdst = 8; break;
case 5: case 5:
smsk = 63; sbitdst = 64; break; smsk = 63; sbitdst = 64; break;
case 7: case 7:
smsk = 3; sbitdst = 4; break; smsk = 3; sbitdst = 4; break;
default: default:
smsk = 0; sbitdst = 0; smsk = 0; sbitdst = 0;
abort(); abort();
break; break;
}
smsk <<= table68k[opcode].spos;
}
if (table68k[opcode].dpos == -1) {
dstend = 1; dmsk = 0;
} else {
dmsk = 7 << table68k[opcode].dpos;
dstend = 8;
} }
smsk <<= table68k[opcode].spos; for (srcreg=0; srcreg < sbitdst; srcreg++) {
} for (dstreg=0; dstreg < dstend; dstreg++) {
if (table68k[opcode].dpos == -1) { uae_u16 code = (uae_u16)opcode;
dstend = 1; dmsk = 0;
} else { code = (code & ~smsk) | (srcreg << table68k[opcode].spos);
dmsk = 7 << table68k[opcode].dpos; code = (code & ~dmsk) | (dstreg << table68k[opcode].dpos);
dstend = 8;
} /* Check whether this is in fact the same instruction.
for (srcreg=0; srcreg < sbitdst; srcreg++) { * The instructions should never differ, except for the
for (dstreg=0; dstreg < dstend; dstreg++) { * Bcc.(BW) case. */
uae_u16 code = (uae_u16)opcode; if (table68k[code].mnemo != table68k[opcode].mnemo
|| table68k[code].size != table68k[opcode].size
code = (code & ~smsk) | (srcreg << table68k[opcode].spos); || table68k[code].suse != table68k[opcode].suse
code = (code & ~dmsk) | (dstreg << table68k[opcode].dpos); || table68k[code].duse != table68k[opcode].duse)
{
/* Check whether this is in fact the same instruction. mismatch++; continue;
* The instructions should never differ, except for the }
* Bcc.(BW) case. */ if (table68k[opcode].suse
if (table68k[code].mnemo != table68k[opcode].mnemo && (table68k[opcode].spos != table68k[code].spos
|| table68k[code].size != table68k[opcode].size || table68k[opcode].smode != table68k[code].smode
|| table68k[code].suse != table68k[opcode].suse || table68k[opcode].stype != table68k[code].stype))
|| table68k[code].duse != table68k[opcode].duse) {
{ mismatch++; continue;
mismatch++; continue; }
} if (table68k[opcode].duse
if (table68k[opcode].suse && (table68k[opcode].dpos != table68k[code].dpos
&& (table68k[opcode].spos != table68k[code].spos || table68k[opcode].dmode != table68k[code].dmode))
|| table68k[opcode].smode != table68k[code].smode {
|| table68k[opcode].stype != table68k[code].stype)) mismatch++; continue;
{ }
mismatch++; continue;
} if (code != opcode)
if (table68k[opcode].duse table68k[code].handler = opcode;
&& (table68k[opcode].dpos != table68k[code].dpos }
|| table68k[opcode].dmode != table68k[code].dmode))
{
mismatch++; continue;
}
if (code != opcode)
table68k[code].handler = opcode;
} }
}
} }
void do_merges (void) void do_merges (void)
{ {
long int opcode; long int opcode;
int nr = 0; int nr = 0;
mismatch = 0; mismatch = 0;
for (opcode = 0; opcode < 65536; opcode++) { for (opcode = 0; opcode < 65536; opcode++) {
if (table68k[opcode].handler != -1 || table68k[opcode].mnemo == i_ILLG) if (table68k[opcode].handler != -1 || table68k[opcode].mnemo == i_ILLG)
continue; continue;
nr++; nr++;
handle_merges (opcode); handle_merges (opcode);
} }
nr_cpuop_funcs = nr; nr_cpuop_funcs = nr;
} }
int get_no_mismatches (void) int get_no_mismatches (void)
{ {
return mismatch; return mismatch;
} }
...@@ -4,7 +4,7 @@ running configure, to aid debugging if configure makes a mistake. ...@@ -4,7 +4,7 @@ running configure, to aid debugging if configure makes a mistake.
It was created by configure, which was It was created by configure, which was
generated by GNU Autoconf 2.65. Invocation command line was generated by GNU Autoconf 2.65. Invocation command line was
$ ./configure --disable-option-checking --prefix=/usr/local --with-sdl --with-sdl-gl --with-sdl-gfx --with-sdl-sound --with-caps --with-gayle --enable-drvsnd --enable-amax --enable-cd32 --enable-scsi-device --disable-jit --cache-file=/dev/null --srcdir=. $ ./configure --disable-option-checking --prefix=/usr/local --with-sdl --with-sdl-gl --with-sdl-gfx --with-sdl-sound --with-caps --with-gayle --enable-drvsnd --enable-amax --enable-cd32 --enable-scsi-device --cache-file=/dev/null --srcdir=.
## --------- ## ## --------- ##
## Platform. ## ## Platform. ##
...@@ -445,7 +445,7 @@ configure:4344: $? = 0 ...@@ -445,7 +445,7 @@ configure:4344: $? = 0
configure:4344: result: yes configure:4344: result: yes
configure:4350: checking for _doprnt configure:4350: checking for _doprnt
configure:4350: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5 configure:4350: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5
/tmp/cc4EAiYz.o: In function `main': /tmp/ccwoa8am.o: In function `main':
/home/gnostic/puaex/src/tools/conftest.c:67: undefined reference to `_doprnt' /home/gnostic/puaex/src/tools/conftest.c:67: undefined reference to `_doprnt'
collect2: ld returned 1 exit status collect2: ld returned 1 exit status
configure:4350: $? = 1 configure:4350: $? = 1
...@@ -533,7 +533,7 @@ configure:4364: $? = 0 ...@@ -533,7 +533,7 @@ configure:4364: $? = 0
configure:4364: result: yes configure:4364: result: yes
configure:4364: checking for strcmpi configure:4364: checking for strcmpi
configure:4364: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5 configure:4364: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5
/tmp/ccFh4SgP.o: In function `main': /tmp/ccvPJKzx.o: In function `main':
/home/gnostic/puaex/src/tools/conftest.c:69: undefined reference to `strcmpi' /home/gnostic/puaex/src/tools/conftest.c:69: undefined reference to `strcmpi'
collect2: ld returned 1 exit status collect2: ld returned 1 exit status
configure:4364: $? = 1 configure:4364: $? = 1
...@@ -613,7 +613,7 @@ configure: failed program was: ...@@ -613,7 +613,7 @@ configure: failed program was:
configure:4364: result: no configure:4364: result: no
configure:4364: checking for stricmp configure:4364: checking for stricmp
configure:4364: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5 configure:4364: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5
/tmp/ccn7jZ5T.o: In function `main': /tmp/ccIoevFC.o: In function `main':
/home/gnostic/puaex/src/tools/conftest.c:69: undefined reference to `stricmp' /home/gnostic/puaex/src/tools/conftest.c:69: undefined reference to `stricmp'
collect2: ld returned 1 exit status collect2: ld returned 1 exit status
configure:4364: $? = 1 configure:4364: $? = 1
......
...@@ -438,7 +438,7 @@ $config_links ...@@ -438,7 +438,7 @@ $config_links
Report bugs to the package provider." Report bugs to the package provider."
ac_cs_config="'--disable-option-checking' '--prefix=/usr/local' '--with-sdl' '--with-sdl-gl' '--with-sdl-gfx' '--with-sdl-sound' '--with-caps' '--with-gayle' '--enable-drvsnd' '--enable-amax' '--enable-cd32' '--enable-scsi-device' '--disable-jit' '--cache-file=/dev/null' '--srcdir=.'" ac_cs_config="'--disable-option-checking' '--prefix=/usr/local' '--with-sdl' '--with-sdl-gl' '--with-sdl-gfx' '--with-sdl-sound' '--with-caps' '--with-gayle' '--enable-drvsnd' '--enable-amax' '--enable-cd32' '--enable-scsi-device' '--cache-file=/dev/null' '--srcdir=.'"
ac_cs_version="\ ac_cs_version="\
config.status config.status
configured by ./configure, generated by GNU Autoconf 2.65, configured by ./configure, generated by GNU Autoconf 2.65,
...@@ -522,7 +522,7 @@ if $ac_cs_silent; then ...@@ -522,7 +522,7 @@ if $ac_cs_silent; then
fi fi
if $ac_cs_recheck; then if $ac_cs_recheck; then
set X '/bin/bash' './configure' '--disable-option-checking' '--prefix=/usr/local' '--with-sdl' '--with-sdl-gl' '--with-sdl-gfx' '--with-sdl-sound' '--with-caps' '--with-gayle' '--enable-drvsnd' '--enable-amax' '--enable-cd32' '--enable-scsi-device' '--disable-jit' '--cache-file=/dev/null' '--srcdir=.' $ac_configure_extra_args --no-create --no-recursion set X '/bin/bash' './configure' '--disable-option-checking' '--prefix=/usr/local' '--with-sdl' '--with-sdl-gl' '--with-sdl-gfx' '--with-sdl-sound' '--with-caps' '--with-gayle' '--enable-drvsnd' '--enable-amax' '--enable-cd32' '--enable-scsi-device' '--cache-file=/dev/null' '--srcdir=.' $ac_configure_extra_args --no-create --no-recursion
shift shift
$as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6
CONFIG_SHELL='/bin/bash' CONFIG_SHELL='/bin/bash'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment