From 6a48dd05b02eb619c4fa063662a4a55c94d96dc2 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Fri, 30 Sep 2005 18:53:39 +0300 Subject: [PATCH] imported winuaesrc1100b10.zip --- debug.c | 2 + disk.c | 186 +++++++++++++++-------------------- filesys.c | 25 ++--- gfxutil.c | 6 +- include/disk.h | 1 + memory.c | 8 +- od-win32/resources/winuae.rc | 8 +- od-win32/win32.h | 4 +- 8 files changed, 109 insertions(+), 131 deletions(-) diff --git a/debug.c b/debug.c index 2a296649..12529059 100755 --- a/debug.c +++ b/debug.c @@ -106,6 +106,7 @@ static char help[] = { " b Step to previous state capture position\n" " am Enable or disable audio channels\n" " di [] Break on disk access. R=DMA read,W=write,RW=both,P=PIO\n" + " Also enables extended disk logging\n" " q Quit the emulator. You don't want to use this command.\n\n" }; @@ -1254,6 +1255,7 @@ static void disk_debug(char **inptr) char parm[10]; int i; + disk_debug_logging = 1; disk_debug_mode = 0; disk_debug_track = -1; ignore_ws(inptr); diff --git a/disk.c b/disk.c index 42b29eb1..364c87d6 100755 --- a/disk.c +++ b/disk.c @@ -60,10 +60,6 @@ #define DDHDMULT 1 #endif -#define DISK_DEBUG -#define DISK_DEBUG2 -#undef DISK_DEBUG -#undef DISK_DEBUG2 #undef DEBUG_DRIVE_ID /* UAE-1ADF (ADF_EXT2) @@ -177,6 +173,7 @@ typedef struct { #endif } drive; +int disk_debug_logging; int disk_debug_mode; int disk_debug_track = -1; @@ -996,9 +993,8 @@ static void drive_step (drive * drv) } #endif if (drv->steplimit && get_cycles() - drv->steplimitcycle < MIN_STEPLIMIT_CYCLE) { -#ifdef DISK_DEBUG2 - write_dlog (" step ignored %d", (get_cycles() - drv->steplimitcycle) / CYCLE_UNIT); -#endif + if (disk_debug_logging > 1) + write_log (" step ignored %d", (get_cycles() - drv->steplimitcycle) / CYCLE_UNIT); return; } /* A1200's floppy drive needs at least 30 raster lines between steps @@ -1030,15 +1026,14 @@ static void drive_step (drive * drv) #endif } if (drv->cyl >= maxtrack) - write_dlog ("program tried to step over track %d\n", maxtrack); + write_log ("program tried to step over track %d\n", maxtrack); #ifdef DRIVESOUND driveclick_click (drv - floppy, drv->cyl); #endif } rand_shifter (drv); -#ifdef DISK_DEBUG2 - write_dlog (" ->step %d", drv->cyl); -#endif + if (disk_debug_logging > 1) + write_log (" ->step %d", drv->cyl); } static int drive_track0 (drive * drv) @@ -1072,11 +1067,10 @@ static void drive_motor (drive * drv, int off) #ifdef DRIVESOUND driveclick_motor (drv - floppy, drv->dskready_down_time == 0 ? 2 : 1); #endif -#ifdef DISK_DEBUG2 - write_dlog (" ->motor on"); + if (disk_debug_logging > 1) + write_log (" ->motor on"); if (drv->indexhackmode > 0) drv->indexhack = 1; -#endif } if (!drv->motoroff && off) { drv->drive_id_scnt = 0; /* Reset id shift reg counter */ @@ -1085,11 +1079,10 @@ static void drive_motor (drive * drv, int off) driveclick_motor (drv - floppy, 0); #endif #ifdef DEBUG_DRIVE_ID - write_dlog("drive_motor: Selected DF%d: reset id shift reg.\n",drv-floppy); -#endif -#ifdef DISK_DEBUG2 - write_dlog (" ->motor off"); + write_log("drive_motor: Selected DF%d: reset id shift reg.\n",drv-floppy); #endif + if (disk_debug_logging > 1) + write_log (" ->motor off"); } drv->motoroff = off; if (drv->motoroff) { @@ -1158,9 +1151,8 @@ static void drive_fill_bigbuf (drive * drv, int force) uae_u8 *data = (uae_u8 *) mfm; *mfm = 256 * *data + *(data + 1); } -#ifdef DISK_DEBUG - write_log ("track %d, length %d read from \"saveimage\"\n", tr, drv->tracklen); -#endif + if (disk_debug_logging > 0) + write_log ("track %d, length %d read from \"saveimage\"\n", tr, drv->tracklen); } else if (drv->filetype == ADF_CATWEASEL) { #ifdef CATWEASEL drv->tracklen = 0; @@ -1273,9 +1265,8 @@ static void drive_fill_bigbuf (drive * drv, int force) } -#ifdef DISK_DEBUG - write_log ("amigados read track %d\n", tr); -#endif + if (disk_debug_logging > 0) + write_log ("amigados read track %d\n", tr); } else { int i; int base_offset = ti->type == TRACK_RAW ? 0 : 1; @@ -1287,9 +1278,8 @@ static void drive_fill_bigbuf (drive * drv, int force) uae_u8 *data = (uae_u8 *) mfm; *mfm = 256 * *data + *(data + 1); } -#if 0 && defined DISK_DEBUG - write_log ("rawtrack %d image offset=%x\n", tr, ti->offs); -#endif + if (disk_debug_logging > 1) + write_log ("rawtrack %d image offset=%x\n", tr, ti->offs); } drv->buffered_side = side; drv->buffered_cyl = drv->cyl; @@ -1321,9 +1311,8 @@ static void diskfile_update (struct zfile *diskfile, trackid *ti, int len, uae_u zfile_fwrite (zerobuf, 1, ti->len, diskfile); free (zerobuf); } -#ifdef DISK_DEBUG - write_log ("track %d, raw track length %d written (total size %d)\n", ti->track, (ti->bitlen + 7) / 8, ti->len); -#endif + if (disk_debug_logging > 0) + write_log ("track %d, raw track length %d written (total size %d)\n", ti->track, (ti->bitlen + 7) / 8, ti->len); } #define MFMMASK 0x55555555 @@ -1534,9 +1523,8 @@ static void drive_eject (drive * drv) drv->dskready_down_time = 0; drv->crc32 = 0; drive_settype_id(drv); /* Back to 35 DD */ -#ifdef DISK_DEBUG - write_dlog ("eject drive %d\n", drv - &floppy[0]); -#endif + if (disk_debug_logging > 0) + write_log ("eject drive %d\n", drv - &floppy[0]); } /* We use this function if we have no Kickstart ROM. @@ -1658,9 +1646,8 @@ static void setdskchangetime(drive *drv, int dsktime) } } drv->dskchange_time = dsktime; -#ifdef DISK_DEBUG - write_dlog("delayed insert enable %d\n", dsktime); -#endif + if (disk_debug_logging > 0) + write_log("delayed insert enable %d\n", dsktime); } void DISK_reinsert (int num) @@ -1806,9 +1793,8 @@ void DISK_check_change (void) drv->dskchange_time--; if (drv->dskchange_time == 0) { drive_insert (drv, &currprefs, i, drv->newname); -#ifdef DISK_DEBUG - write_dlog ("delayed insert, drive %d, image '%s'\n", i, drv->newname); -#endif + if (disk_debug_logging > 0) + write_log ("delayed insert, drive %d, image '%s'\n", i, drv->newname); update_drive_gui (i); } @@ -1821,7 +1807,6 @@ int disk_empty (int num) return drive_empty (floppy + num); } -#ifdef DISK_DEBUG2 static char *tobin(uae_u8 v) { int i; @@ -1831,7 +1816,6 @@ static char *tobin(uae_u8 v) buf[i] = 0; return buf; } -#endif void DISK_select (uae_u8 data) { @@ -1839,9 +1823,9 @@ void DISK_select (uae_u8 data) static uae_u8 prevdata; static int step; -#ifdef DISK_DEBUG2 - write_dlog ("%08.8X %02.2X %s", m68k_getpc(), data, tobin(data)); -#endif + if (disk_debug_logging > 1) + write_log ("%08.8X %02.2X %s", m68k_getpc(), data, tobin(data)); + lastselected = selected; selected = (data >> 3) & 15; side = 1 - ((data >> 2) & 1); @@ -1852,29 +1836,27 @@ void DISK_select (uae_u8 data) for (dr = 0; dr < 4; dr++) { if (floppy[dr].indexhackmode > 1 && !(selected & (1 << dr))) { floppy[dr].indexhack = 1; -#ifdef DISK_DEBUG2 - write_dlog (" indexhack!"); -#endif + if (disk_debug_logging > 1) + write_log (" indexhack!"); } } } -#ifdef DISK_DEBUG2 - write_dlog (" %d%d%d%d% ", (selected & 1) ? 0 : 1, (selected & 2) ? 0 : 1, (selected & 4) ? 0 : 1, (selected & 8) ? 0 : 1); - if ((prevdata & 0x80) != (data & 0x80)) - write_dlog (" dskmotor %d ", (data & 0x80) ? 1 : 0); - if ((prevdata & 0x02) != (data & 0x02)) - write_dlog (" direct %d ", (data & 0x02) ? 1 : 0); - if ((prevdata & 0x04) != (data & 0x04)) - write_dlog (" side %d ", (data & 0x04) ? 1 : 0); -#endif + if (disk_debug_logging > 1) { + write_log (" %d%d%d%d% ", (selected & 1) ? 0 : 1, (selected & 2) ? 0 : 1, (selected & 4) ? 0 : 1, (selected & 8) ? 0 : 1); + if ((prevdata & 0x80) != (data & 0x80)) + write_log (" dskmotor %d ", (data & 0x80) ? 1 : 0); + if ((prevdata & 0x02) != (data & 0x02)) + write_log (" direct %d ", (data & 0x02) ? 1 : 0); + if ((prevdata & 0x04) != (data & 0x04)) + write_log (" side %d ", (data & 0x04) ? 1 : 0); + } selected |= disabled; if (step != step_pulse) { -#ifdef DISK_DEBUG2 - write_dlog (" dskstep %d ", step_pulse); -#endif + if (disk_debug_logging > 1) + write_log (" dskstep %d ", step_pulse); step = step_pulse; if (step && !savestate_state) { for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) { @@ -1910,7 +1892,7 @@ void DISK_select (uae_u8 data) drv->idbit = 1; } #ifdef DEBUG_DRIVE_ID - write_dlog("DISK_status: sel %d id %s (%08.8X) [0x%08lx, bit #%02d: %d]\n", + write_log("DISK_status: sel %d id %s (%08.8X) [0x%08lx, bit #%02d: %d]\n", dr, drive_id_name(drv), drv->drive_id, drv->drive_id << drv->drive_id_scnt, 31 - drv->drive_id_scnt, drv->idbit); #endif } @@ -1921,9 +1903,8 @@ void DISK_select (uae_u8 data) update_drive_gui (dr); } prevdata = data; -#ifdef DISK_DEBUG2 - write_log ("\n"); -#endif + if (disk_debug_logging > 1) + write_log ("\n"); } uae_u8 DISK_status (void) @@ -2019,15 +2000,13 @@ static void disk_dmafinished (void) { INTREQ (0x8002); dskdmaen = 0; -#ifdef DISK_DEBUG - { + if (disk_debug_logging > 0) { int dr, mfmpos = -1; - write_dlog("disk dma finished %08.8X MFMpos=", dskpt); + write_log("disk dma finished %08.8X MFMpos=", dskpt); for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) write_log ("%d%s", floppy[dr].mfmpos, dr < MAX_FLOPPY_DRIVES - 1 ? "," : ""); write_log ("\n"); } -#endif } static void fetchnextrevolution (drive *drv) @@ -2078,9 +2057,8 @@ void DISK_handler (void) drv->dskready_time--; if (drv->dskready_time == 0) { drv->dskready = 1; -#ifdef DISK_DEBUG - write_log ("%d: %d\n", i, drv->mfmpos); -#endif + if (disk_debug_logging > 0) + write_log ("%d: %d\n", i, drv->mfmpos); } } } @@ -2241,17 +2219,15 @@ static void disk_doupdate_read (drive * drv, int floppybits) //write_log ("%08.8X bo=%d so=%d mfmpos=%d dma=%d\n", (word & 0xffffff), bitoffset, syncoffset, drv->mfmpos,dma_enable); drv->mfmpos++; drv->mfmpos %= drv->tracklen; - if (drv->mfmpos == drv->skipoffset) { - drv->mfmpos += disk_jitter; - drv->mfmpos %= drv->tracklen; - } if (drv->mfmpos == drv->indexoffset) { -#ifdef DISK_DEBUG2 - if (drv->indexhack) + if (disk_debug_logging > 1 && drv->indexhack) write_log ("indexhack cleared\n"); -#endif drv->indexhack = 0; } + if (drv->mfmpos == drv->skipoffset) { + drv->mfmpos += disk_jitter; + drv->mfmpos %= drv->tracklen; + } if (bitoffset == 15 && dma_enable && dskdmaen == 2 && dsklength >= 0) { if (dsklength > 0) { put_word (dskpt, word); @@ -2280,10 +2256,8 @@ static void disk_doupdate_read (drive * drv, int floppybits) if (adkcon & 0x400) bitoffset = 15; if (dskdmaen) { -#ifdef DISK_DEBUG - if (dma_enable == 0) - write_dlog ("Sync match, DMA started at %d\n", drv->mfmpos); -#endif + if (disk_debug_logging && dma_enable == 0) + write_log ("Sync match, DMA started at %d\n", drv->mfmpos); dma_enable = 1; } } @@ -2298,7 +2272,7 @@ static void disk_doupdate_read (drive * drv, int floppybits) static void disk_dma_debugmsg(void) { - write_dlog ("LEN=%04.4X (%d) SYNC=%04.4X PT=%08.8X ADKCON=%04.4X PC=%08.8X\n", + write_log ("LEN=%04.4X (%d) SYNC=%04.4X PT=%08.8X ADKCON=%04.4X PC=%08.8X\n", dsklength, dsklength, (adkcon & 0x400) ? dsksync : 0xffff, dskpt, adkcon, m68k_getpc()); } @@ -2335,9 +2309,8 @@ uae_u16 DSKBYTR (int hpos) v |= 0x4000; if (dsklen & 0x4000) v |= 0x2000; -#ifdef DISK_DEBUG2 - write_dlog ("DSKBYTR=%04.4X hpos=%d\n", v, hpos); -#endif + if (disk_debug_logging > 1) + write_log ("DSKBYTR=%04.4X hpos=%d\n", v, hpos); if (disk_debug_mode & DISK_DEBUG_PIO) { int dr; for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) { @@ -2467,12 +2440,10 @@ void DSKLEN (uae_u16 v, int hpos) if (!(v & 0x8000)) { if (dskdmaen) { /* Megalomania and Knightmare does this */ -#ifdef DISK_DEBUG - if (dskdmaen == 2) - write_dlog ("warning: Disk read DMA aborted, %d words left PC=%x\n", dsklength, m68k_getpc()); -#endif + if (disk_debug_logging > 0 && dskdmaen == 2) + write_log ("warning: Disk read DMA aborted, %d words left PC=%x\n", dsklength, m68k_getpc()); if (dskdmaen == 3) - write_dlog ("warning: Disk write DMA aborted, %d words left PC=%x\n", dsklength, m68k_getpc()); + write_log ("warning: Disk write DMA aborted, %d words left PC=%x\n", dsklength, m68k_getpc()); dskdmaen = 0; } } @@ -2508,25 +2479,24 @@ void DSKLEN (uae_u16 v, int hpos) } } -#ifdef DISK_DEBUG - for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) { - drive *drv = &floppy[dr]; - if (drv->motoroff) - continue; - if ((selected & (1 << dr)) == 0) - break; - } - if (dr == 4) { - write_log ("disk %s DMA started but no drive selected!\n", + if (disk_debug_logging > 0) { + for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) { + drive *drv = &floppy[dr]; + if (drv->motoroff) + continue; + if ((selected & (1 << dr)) == 0) + break; + } + if (dr == 4) { + write_log ("disk %s DMA started but no drive selected!\n", dskdmaen == 3 ? "write" : "read"); - } else { - write_log ("disk %s DMA started, drv=%x track %d mfmpos %d\n", - dskdmaen == 3 ? "write" : "read", selected ^ 15, - floppy[dr].cyl * 2 + side, floppy[dr].mfmpos); - update_drive_gui (dr); + } else { + write_log ("disk %s DMA started, drv=%x track %d mfmpos %d\n", + dskdmaen == 3 ? "write" : "read", selected ^ 15, + floppy[dr].cyl * 2 + side, floppy[dr].mfmpos); + } + disk_dma_debugmsg(); } - disk_dma_debugmsg(); -#endif for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) update_drive_gui (dr); @@ -2616,7 +2586,7 @@ void DSKDAT (uae_u16 v) static int count = 0; if (count < 5) { count++; - write_dlog ("%04.4X written to DSKDAT. Not good. PC=%08.8X", v, m68k_getpc()); + write_log ("%04.4X written to DSKDAT. Not good. PC=%08.8X", v, m68k_getpc()); if (count == 5) write_log ("(further messages suppressed)"); diff --git a/filesys.c b/filesys.c index f303ba0f..9b3447f7 100755 --- a/filesys.c +++ b/filesys.c @@ -152,7 +152,7 @@ int is_hardfile (struct uaedev_mount_info *mountinfo, int unit_no) static void close_filesys_unit (UnitInfo *uip) { - if (uip->hf.handle != 0) + if (uip->hf.handle_valid) hdf_close (&uip->hf); if (uip->volname != 0) xfree (uip->volname); @@ -168,7 +168,7 @@ static void close_filesys_unit (UnitInfo *uip) uip->unit_pipe = 0; uip->back_pipe = 0; - uip->hf.handle = 0; + uip->hf.handle_valid = 0; uip->volname = 0; uip->devname = 0; uip->rootdir = 0; @@ -233,7 +233,7 @@ static char *set_filesys_unit_1 (struct uaedev_mount_info *mountinfo, int nr, ui->rootdir = 0; ui->unit_pipe = 0; ui->back_pipe = 0; - ui->hf.handle = 0; + ui->hf.handle_valid = 0; ui->bootpri = 0; ui->filesysdir = 0; ui->automounted = flags & FILESYS_FLAG_DONOTSAVE; @@ -263,7 +263,7 @@ static char *set_filesys_unit_1 (struct uaedev_mount_info *mountinfo, int nr, hdf_open (&ui->hf, rootdir); } ui->hf.readonly = readonly; - if (ui->hf.handle == 0) + if (ui->hf.handle_valid == 0) return "Hardfile not found"; if ((ui->hf.blocksize & (ui->hf.blocksize - 1)) != 0 || ui->hf.blocksize == 0) return "Bad blocksize"; @@ -437,7 +437,7 @@ static void dup_mountinfo (struct uaedev_mount_info *mip, struct uaedev_mount_in uip->devname = my_strdup (uip->devname); if (uip->rootdir) uip->rootdir = my_strdup (uip->rootdir); - if (uip->hf.handle) + if (uip->hf.handle_valid) hdf_dup (&uip->hf, &uip->hf); } } @@ -1976,22 +1976,25 @@ get_fileinfo (Unit *unit, dpacket packet, uaecptr info, a_inode *aino) { struct stat statbuf; long days, mins, ticks; - int i, n; + int i, n, entrytype; char *x; /* No error checks - this had better work. */ stat (aino->nname, &statbuf); if (aino->parent == 0) { + /* Guru book says ST_ROOT = 1 (root directory, not currently used) + * and some programs really expect 2 from root dir.. + */ + entrytype = 2; x = unit->ui.volname; - put_long (info + 4, 1); - put_long (info + 120, 1); } else { - /* AmigaOS docs say these have to contain the same value. */ - put_long (info + 4, aino->dir ? 2 : -3); - put_long (info + 120, aino->dir ? 2 : -3); + entrytype = aino->dir ? 2 : -3; x = aino->aname; } + put_long (info + 4, entrytype); + /* AmigaOS docs say these have to contain the same value. */ + put_long (info + 120, entrytype); TRACE(("name=\"%s\"\n", x)); n = strlen (x); if (n > 106) diff --git a/gfxutil.c b/gfxutil.c index 193bb797..d44b6eed 100755 --- a/gfxutil.c +++ b/gfxutil.c @@ -110,9 +110,9 @@ void alloc_colors64k (int rw, int gw, int bw, int rs, int gs, int bs, int aw, in int i; for (i = 0; i < 4096; i++) { - int r = (i >> 8) << 4; - int g = ((i >> 4) & 0xF) << 4; - int b = (i & 0xF) << 4; + int r = ((i >> 8) << 4) | (i >> 8); + int g = (((i >> 4) & 0xf) << 4) | ((i >> 4) & 0x0f); + int b = ((i & 0xf) << 4) | (i & 0x0f); //colormodify (&r, &g, &b); xcolors[i] = doMask(r, rw, rs) | doMask(g, gw, gs) | doMask(b, bw, bs) | doAlpha (alpha, aw, as); } diff --git a/include/disk.h b/include/disk.h index 60caccc3..cb1faa91 100755 --- a/include/disk.h +++ b/include/disk.h @@ -38,6 +38,7 @@ extern void DSKSYNC (int, uae_u16); extern void DSKPTL (uae_u16); extern void DSKPTH (uae_u16); +extern int disk_debug_logging; extern int disk_debug_mode; extern int disk_debug_track; #define DISK_DEBUG_DMA_READ 1 diff --git a/memory.c b/memory.c index a273e8e7..d6124d0b 100755 --- a/memory.c +++ b/memory.c @@ -498,6 +498,8 @@ static void dummy_bput (uaecptr, uae_u32) REGPARAM; static int dummy_check (uaecptr addr, uae_u32 size) REGPARAM; #define MAX_ILG 20 +#define NONEXISTINGDATA 0 +//#define NONEXISTINGDATA 0xffffffff uae_u32 REGPARAM2 dummy_lget (uaecptr addr) { @@ -511,7 +513,7 @@ uae_u32 REGPARAM2 dummy_lget (uaecptr addr) } } if (currprefs.cpu_level >= 2) - return 0; + return NONEXISTINGDATA; return (regs.irc << 16) | regs.irc; } @@ -527,7 +529,7 @@ uae_u32 REGPARAM2 dummy_wget (uaecptr addr) } } if (currprefs.cpu_level >= 2) - return 0; + return NONEXISTINGDATA; return regs.irc; } @@ -543,7 +545,7 @@ uae_u32 REGPARAM2 dummy_bget (uaecptr addr) } } if (currprefs.cpu_level >= 2) - return 0; + return NONEXISTINGDATA; return (addr & 1) ? regs.irc : regs.irc >> 8; } diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index 94f7f0ac..aa36502a 100755 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -765,8 +765,8 @@ IDI_PATHS ICON "paths.ico" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,0 - PRODUCTVERSION 1,0,0,0 + FILEVERSION 1,1,0,0 + PRODUCTVERSION 1,1,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -782,12 +782,12 @@ BEGIN BLOCK "040904b0" BEGIN VALUE "FileDescription", "WinUAE" - VALUE "FileVersion", "1.0.0" + VALUE "FileVersion", "1.1.0" VALUE "InternalName", "WinUAE" VALUE "LegalCopyright", "© 1996-2005 under the GNU Public License (GPL)" VALUE "OriginalFilename", "WinUAE.exe" VALUE "ProductName", "WinUAE" - VALUE "ProductVersion", "1.0.0" + VALUE "ProductVersion", "1.1.0" END END BLOCK "VarFileInfo" diff --git a/od-win32/win32.h b/od-win32/win32.h index cc97baa4..aa9f9b3c 100755 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -21,8 +21,8 @@ extern int manual_painting_needed; extern int manual_palette_refresh_needed; extern int mouseactive, focus; extern int ignore_messages_all; -#define WINUAEBETA 1 -#define WINUAEBETASTR " Beta 9" +#define WINUAEBETA 0 +#define WINUAEBETASTR "" extern char start_path_exe[MAX_DPATH]; extern char start_path_data[MAX_DPATH]; -- 2.47.3