--- uae/src/ChangeLog 2018/04/24 16:38:39 1.1.1.1 +++ uae/src/ChangeLog 2018/04/24 16:40:45 1.1.1.4 @@ -1,3 +1,849 @@ +980629 MOVEP bug fixes (Philippe Gerin) +980625 Make sure it compile when configured for DGA without VidMode. +980606 Create config.h link in configure, not in Makefile. + xwin.c: Fix some dithering bugs. +980601 Make ersatz.c a little more crash-proof. +980508 Fix compilation problem on ELF systems introduced by BSD patches. + configure.in, aclocal.m4, Makefile.in: Use AM_PATH_GTK from gtk + distribution. + Don't disable GGI if we can't find svgalib. +980504 xwin.c: Call XAllocColorCells for dithered modes. Don't set image_mem + in get_image, instead arrange for it to store the address in a pointer + chosen by the caller. + BSD patches by Krister Walfridsson. +980425 picasso96.c: In BlitPattern, correctly handle the pattern offsets. +980421 BeOS update (Christian Bauer) +980419 In pfield_doline_unaligned_h, don't increment dataptr. +980418 gtkui.c: Don't crash if -G option is given. +980416 custom.c: Don't use bplhires in do_modulos. + +Release 0.7.0 +980401 gengenblitter.c: Complete rewrite. Much smaller, much faster, much + better results. + Check for -lXi to support newer versions of gtk+. +980316 gencpu.c (read_counts): Two silly bugs fixed. + main.c (save_options): Don't write out 'a' if cpu_level < 2 + configure.in: Changes to try to be compatible with Solaris /bin/sh. +980315 New UAE-Control version from Tauno & Cloanto. + Make configure set UNALIGNED_PROFITABLE for x86. + Get rid of "-o", add save command to tui.c and gtkui.c. + Fix some bugs in save_options. +980314 Many improvements in the gtk UI. Made CPU type changeable at run-time. + Make DGA && ! VIDMODE configuration compile. Kludge around the fact + that DGA misses colormap changes. Call XWarpPointer to try to avoid + the click-moves-framebuffer bug. + Make sure p2c.[ch] don't get deleted. +980313 Move all CPU_LEVEL handling from build68k.c to gencpu.c. In gencpu.c, + ignore all parameters and don't write to standard output, instead + hardcode all filenames and generate them all at once. Arrange to + generate code for all CPU emulator variants and to select them at + run-time. + Get rid of copper cheat mode, re-use "-C" option for CPU selection. +980312 In COPxLCL, mask out LSB (Axel Wefers). + newcpu.h: Always compile in both get_disp_ea versions with a different + name. Delete USE_POINTER option; always use pointer. Don't fill + prefetch in m68k_setpc, do it in callers where necessary. Compile in + two versions of get_ixxxx, with different names for prefetch and + non-prefetch. Change gencpu.c to use these appropriately. + Don't generate 16 small CPU emulation source files. With a decent + machine it's no problem to compile all the code in one file. Also turn + off -O3 for gcc, -O2 does fine since all the necessary __inline__s are + there, and the compiler takes less memory that way. + Don't include , duplicate some definitions from + there instead. Makes configure.in simpler, too. + Fix Makefile.in/configure.in and a couple of other places to support + building in a separate directory (sort of; not complete yet). + Remove p2c.[ch] and genp2c when doing make clean. + Delete code to support Tcl/Tk and XForms GUIs. +971215 More Amiga and BeOS patches from Sam and Christian. +971205 Move some more code from custom.c to audio.c. Optimize sample handlers + a bit. + Make RDTSC asm statement volatile. +971203 Latest GGI patch from Christian Schmitt. + Fix configure to enable zfile decompression for GGI target. + Fix mouse button mapping in ggi.c. +971128 Fix double definition of gfxvidinfo in custom.c. + Fix impossible register constraints in asm statement in newcpu.c + Sprinkle casts and rename some variables to make C++ compilers happy. + Add BeOS patches by Christian Bauer. +971125 More Amiga patches from Sam. +971120 Get rid of DONT_WANT_SOUND. +971119 Support USS sound not only on Linux (Douglas Carmichael) + Update Win32 and DOS ports. + Add Polish documentation by Tomasz Sienicki. +971116 Add a missing return statement in filesys.c (Brian King) +971112 Fix silly error in xwin.c. +971108 Add some more decompressors to zfile.c. Set FLOPPY_SPEED to 4. +971107 Make ggi.c compile again, fix a few bugs and add Picasso support. +971106 Fill prefetch queue after executing an encrypted ROM illegal insn. +971105 Initialize the sprites during customreset now that init_hardware_frame + no longer does it. +971104 Implement action_set_file_size as required by the specs. + SetPanning/picasso96_state: XOffset and YOffset are signed. +971103 xwin.c: Offer 640x512 and 320x256 resolutions in windowed Picasso mode. + Add a few more memory banks in memory.c (A3000 stuff - nonfunctional) + Don't map kickmem at address 0 if using replacement Kickstart. + Must fill prefetch buffer when calling calltraps or ersatz functions. + Write out hardfile parameters in write_filesys_config(). + xwin.c: Support 15 bit displays. +971101 Add latest patches by Samuel Devulder. Improve hardfile support in + tui.c. +971031 Offer "-U" only ifdef PICASSO96. + Add support for mounting multiple hardfiles in any order. + Don't reset sprite state in init_hardware_frame. Instead, allow SPRxPT + functions to set the state to SPR_restart in the vertical blanking + area. +971030 Fix 8MB Chip RAM. + filesys_dev_storeinfo: New function and calltrap. Use it to store + per-unit data (which now includes geometry information) in the + parampacket. Modify filesys.asm to use it instead of trying to find + the values by itself. +971028 "AMIROMTYPE1" has 11 characters, not 0. +971027 Implement encrypted ROM features. Comment out non-working InvertRect + optimization. +971026 Fix some problems in PlanarToDirect and CopyColorIndexMappingA2U. +971022 Remove fixed paths in genp2c.c (oops...) + Some more XF86VidMode hacks. + Include target.h in sysdeps.h. Define PICASSO96_SUPPORTED for X11, + SVGAlib and Win32. Don't compile in Picasso support if this macro isn't + defined. +971021 xwin.c: Picasso code wants to use bit_unit, not bitdepth. Also correct + byteorder (it's B8G8R8A8 from the Amiga's point of view). + Fix Picasso InvertRect function. + Half-hearted attempt at 24 bit support in the X11 version, with some + awful code in custom.c. + Make the X11/VidMode version try to resize the screen for Picasso mode + switches. +971020 Delete option -5, make -4 take an argument. Disable z3fastmem and + Picasso emulation when using a 24 bit address space. +971019 record_color_change: No need to remember a color table if the current + line hasn't been decided yet. + Add XF86VidMode extension support. + Integrate Stefan's Zorro III support, add support for up to 64MB fast. + xwin.c: Refresh the whole Picasso screen if there are Expose events. + Fix module length calculation for *Tracker modules. + Use a 32 bit address space by default if CPU_LEVEL > 1. New option -5. +971018 Apparently it's not possible to turn on bitplane DMA in the middle of + the line, so call post_decide_line only when the number of planes is + modified, not in DMACON. + genp2c.c: New file, generates planar to chunky conversion routines. + Remove those which are now generated from custom.c. +971017 Make row_map an array, not a pointer to one. + Audio periods may not be 0, so initialize them to 65535 in customreset. + Implement "S" command in the debugger. Add a bunch of module detection + routines. +971015 od-linux/sound.c: If FRAME_RATE_HACK, reduce vsynctime a bit to give + the sound emulation more room to breathe. +971013 Merge with Brian's latest Picasso code. +971012 Fix a few more portability problems that showed up when compiling with + Watcom C. Also remove superfluous includes from some files. + Add md-i386-watcom directory. Update od-win32 with latest code. + Remove fast_memcmp routine. + Include penguin.h before xwin.h everywhere. Declare a few semaphores + for multithreaded setups in xwin.h. Move inhibit_frame stuff to xwin.h. +971011 gencpu.c: Don't generate labels without following statement. Don't + directly generate assembly statements if X86_ASSEMBLY, instead generate + code that uses macros defined in machdep/m68k.h. +971008 xwin.c, svga.c, custom.c, uaelib.c: Add picasso96 code. Add Picasso + selection to configure. + Move common variables (mouse stuff, gfxvidinfo, xcolors) from graphics + files to custom.c. + memory.c: custom chip area isn't supposed to be mapped at 0x200000. Use + dummy bank for now. + od-linux/joystick.c: Open different devices for different joysticks. + From Win32 sources: set vsyncmintime in m68k_go. +971005 genblitter.c: blitzero is initialized to 1, not to 0, so we need to + clear, not set it. +970928 Add another user interface for X11 using libgtk+. +970925 audio.c: For stereo sound, double all lookup table values. + Added (preliminary) win32.c. +970923 DISK_check_change: Should call gui_filename when ejecting. +970922 Fix od-linux/joystick.c compilation problem with recent kernels. + Merge results of the UAE meeting: + New serial code (Stefan Reinauer) + Expansion "test card" support (Stefan Reinauer) + New GGI code (Christian Schmitt), also configure/Makefile changes + to make it compile. + Fix 68020/FPU code. + Call do_mousehack before every read of the mouse position to get more + accurate values. + Add sd-file directory; add support for it in configure. + Add stereo support in audio.c, od-linux/sound.[ch], and main.c. + Fix copper problem: call decide_line in calc_copcomp_true; and if the + copper wouldn't wait normally (position reached), but the hardware is + fetching data in Hires 4 plane mode, delay until ddf stop. + t-ascii.h: Asciiart target understands "-x" parameter. +970823 gencpu.c [X86_ASSEMBLY]: Turn input constraints for scratch into output + constraints. +970626 Fix 24 bit address space logic (Mathias Ortmann). + Raise exception 3 for Bcc.L insns if CPU_LEVEL < 1. Reported by Stefan + Ropke. + Remove USER_PROGRAMS_BEHAVE for normal emulator. Remove hacks to + generate expanded CPU functions for specific opcodes. Replace with code + that reads an instruction count file and sorts gencpu output by + frequency of the called opcodes. +970625 Calltraps (at least those with call_m68k calls in them) were broken by + the CPU emulator changes. Now use Axxx opcodes as calltraps. + Include pOS port by Samuel Devulder. +970624 Solaris sound patches by Manfred Thole. + gencpu.c: The generated code shouldn't just check for odd addresses, + it should also call Exception... +970622 gencpu.c: don't emit return statements; make code jump to a function + end label instead. Make genamode() check for odd addresses, also reduce + code duplication. Interpret getv parameter so that data is fetched if + getv == 1, and the address is checked if getv != 0. Remove exception 3 + checks from get_long() etc. Get rid of buserr. + cpuopti.c: Make a few more checks whether optimization is possible. Add + code to undo GCC's epilogue scheduling. + newcpu.c: Split all the specialflag handling into new function. + Implement -w option as in Win32 port. tui.c: add it to misc menu. +907621 Fix yesterday's CPU emulator changes. Make cpuopti aware of functions + with two RET insns. Make sure that NO_EXCEPTION_3 and + NO_PREFETCH_BUFFER are on when emulating a 68020. + Add usage information for src/dst operands to table68k. + Implement CIA A OVL bit properly. +970620 New NeXTwin.m from Ian. Fix a number of prefetch bugs in gencpu.c. + newcpu.h: m68k_incpc(), get_i{byte,word,long}: New function/macros. + Also add oldpc parameter to m68k_do_[bj]sr(). gencpu.c: use all this. + CPU functions now don't use nextiword; they keep the PC constant and + increment it with the right value at the end. + If chipmem_size > 2MB, disable fastmem. + In configure.in and od-linux/joystick.c, use ljoystick.h as name for + the replacement file for a broken + configure.in: Check for post-gcc-2.7.2 option "-mno-schedule-prologue" + and use it for compiling the optimized CPU files if it exists. +970618 Rename hardfile.device to uaehf.device to avoid name clashes. Suggested + by George Nicolaidis. + Reimplement CPU prefetch by making gencpu aware of it so it generates + code that fetches data from the right places automatically. Also reduce + prefetch length to 4 bytes. +970612 memory.h: Include osdep/memory.h. missing.c: implement xmalloc(). + Throughout: use xmalloc instead of malloc. + Apply changes by Sam Devulder. +970608 Fix ncurses.c so that it links. Fix configure so that it can be enabled + Get rid of spixstate by implementing a new sprite drawing method. +970607 do_copper_cheat(): New function, Implement inaccurate, line-based + copper as an option (-C). calc_copcomp_true(): Fix possible hr 4 plane + bug (split the wait into several pieces in this mode). + Allow 0 bytes for fast and bogomem (to override .uaerc) +970606 Fix some bugs in transdisk, and make it compile with SAS C (Joanne Dow) + Stupid compilation fixes: Get rid of "==" in shell scripts, check that + B300 and friends are defined in serial.c before using them. + Implement blitter prefetch. Fix silly typo in main.c that prevented + immediate blits. + init_ham_decoding(): new function, handles case where the first few + pixels of a HAM display are outside the window. +970605 disk.c: Get rid of need_read. Save cylinder/track number for the data + in the MFM buffer for each drive. Force rereads on disk insert and + write operations. In drive_fill_bigbuf(), do nothing if saved data + matches current. Fix disk change logic: give the program time to read + the change bit a couple of times before inserting a new disk. + custom.c: Fix really subtle bug: when deciding a line as border, + plfstrt/plflinelen were not set up properly, which could confuse + post_decide_line(), and eventually there would be lines decided as + playfield with plfstrt == 0, plflinelen == -32 ==> Bang. A related + bug was that setting DDFSTRT to 0 would result in both plfstrt and + plfstop having value 0. + gfxutil.c: Fix bug that could cause color values to go out of bounds. + xwin.c, svga.c: When dithering, color values were not doubled properly. +970604 filesys.c: when deleting an a_ino, remove it from hash table (Mathias + Ortmann). In do_find(), if creating a file failed and we didn't have + an a_ino before, call delete_aino on the one we created. + More configure changes: Add $X_PRE_LIBS and $X_EXTRA_LIBS in some + places. See if MIT-SHM support for X will compile and link. Always + compile it in if it will. Turn DONT_WANT_SHM and LOW_BANDWIDTH into + run-time options (-T, -L). Use single line buffer when dithering and + in low-bandwidth mode (but in all cases there's a full buffer for the + X image). + memory.c: Don't map in custom regs at 0x200000 if chipmem_size > 2MB. + Split up init_sound(): new function setup_sound(). Make "-B" accept + minimum and maximum values as in Gustavo's latest patch. Add code to + tui.c to support changing buffer size, number of bits and frequency. +970603 If using compiler, define NO_EXCEPTION_3 and NO_PREFETCH_BUFFER. + (bugreport by Raphael Poss). + GGI support from Christian Schmitt/Stefan Reinauer. More serial patches + from Stefan. 3 button joystick patch from Mathias. + Add linemem field to gfxvidinfo, for systems that don't want to keep + a buffer of the full screen. Adjust custom.c to use it instead of + bufmem if it's not NULL (mostly by Mathias). svga.c, xwin.c: Use single + line buffer in some cases. xwin.c: If USE_DGA_EXTENSION, undef + LOW_BANDWIDTH. Move test of DONT_WANT_SHM after inclusion of config.h + Make configure.in a bit more structured. + Move colormodes array to main.c. +970602 gfxlib.c: Start implementing layers workalike. + md-i386-gcc/support.c: Don't mix sleep and alarm. (Petter Schau) +970601 Remove may_run_compiled. Print error and abort if m68k_go is called + twice. + Fix yesterdays bugfix in svga.c. + Change FRAME_RATE_HACK so it tries to average the times a bit. + Re-implement a call_m68k function in autoconf.c. The new version + works by doing some heavy setjmp/longjmp magic and switching stacks. + With this, it's even possible to call things that Wait(), so use + the new functionality in gfxlib.c to call LockLayer() in WritePixel(). +970531 Turn some inline functions in memory.h into macros. Get rid of + get_along and get_aword. Implement CIA A OVL bit. + main.c: Add missing close_sound() call. + Remove INTEL_FLAG_OPT, use X86_ASSEMBLY for everything. + tui.c/svgancui.c: Implement scrollable menus. Add code to select + video mode from a given list. Add "graphics_setup" call to graphics + specific files. Use it in svga.c to build a video mode menu. + Fix bug in svga.c that would crash non-linear modes. + disk.c needs to include gensound.h and sounddep/sound.h. + Fix bug in fuzzy_memset. In pfield_init_linetoscr, always adjust ddf + values if lores hack is being used. +970530 Apply some patches by Samuel Devulder. +970529 filesys.c: In "Houston, we have a problem" case, do not only delete + the oldest ExKey, but also use it instead of random memory for the + new one. Attempt to reduce the number of lost exkeys by allocating + them in action_examine_next instead of action_examine_object. + Initialize the "uniq" field of unit->rootnode. + Attempt to speed up sprite drawing loop. + Implement sprite<->sprite collisions. + Get rid of -Wtraditional. +970524 New config option NO_PREFETCH_BUFFER. Emulate 16 byte prefetch if + unset. + For exception 3, the stack frame seems to be: + (saved SR).w, (faulting address).l, (faulting instruction).w, 0.w, + (pc at fault time).l. Make everything that could generate this fault + handle it properly. That got Cybernoid II working! +970523 Makefile.in: Make sure $(DEBUGFLAGS) is used for CPU emulation files. + memory.c: Don't map chipmem at 0x200000, use custom chip bank for now. +970507 configure.in: Mutate ac_cv_c_inline=no to ac_cv_c_inline= + Check for tcgetattr, , cfmakeraw, + Check for sem_init in -lposix4 (Marc Zimmermann) + serial.c, cia.c, cia.h, serial.c: changes (Stefan Reinauer) + Make disk gap 360 (Michael Krause) +970404 In configure, check for features.h before including it in test program. +970401 New option -4. Bugreport by Mirko Viviani. +970324 Petter Schau says the exception frame for Bus Error and Address Error + is 14 bytes, not 6, on the 68000. Change Exception() accordingly. + It's *** OUCH *** day! Make hardfile beginio return the correct value. + Also load execbase before calling ReplyMsg(). + It's *** OUCH *** day again! The filesystem asm code was an odd number + of bytes, leaving the hardfile code unaligned. +970318 custom.c: Rename spron to sprst, and use new variable spron to indicate + for which sprites the sprite pointer registers have been written. Don't + do sprite DMA if spron==0. (The problem was that some programs write + SPRxCTL and then SPRxPT, which used to set the sprite state to + SPR_restart, but it must be SPR_waiting_start.) + Turn a few m68k_reset()s into uae_reset()s. + New variable nr_joysticks. Delete joystickpresent. New arg "nr" for + getjoystate() and read_joystick(). + New extra keycode AK_RCTRL. Handle multiple joysticks & different key + replacements in keybuf.c/custom.c. Make tui.c handle all the settings. +970310 od-linux/joystick.c now compiles again without the joystick header. + Fix some problems in configure; also check whether [n]curses.h defines + attr_t. Keep count of warnings and errors during configuration and + print a hopefully helpful message at the end. + disk.c sanitized by Mathias Ortmann. + Change the replacement getopt around a bit. + execlib.c, timerdev.c: Files removed. This will never be compatible + enough. Also remove related code (several SPCFLAGs, etc.) + Make main.c a bit nicer by introducing additional defines for the t-* + files. Also canonicalize the .uaerc file on all systems, eliminating + lines starting with '#' in the process. + Remove code in autoconf.c to set up 8MB chip; move it to filesys.asm. + Try doing the copper end-of-line hack in copper_memory_cycles(). + Disable the copper speedup hack. +970309 Add a small, dumb hash table to struct _unit to speed up repeated + aino lookups. Delete aino in action_delete_object(). Move children in + action_rename_object(). In action_examine_next(), call new function + lookup_child_aino_for_exnext() which behaves more or less like + lookup_child_aino(), except it uses new function get_aname() to + translate filenames. + More portability fixes. New links set up in configure: sounddep, + target.h. All machine-dependent and joystick code removed + from os.c, renamed to audio.c. os.h renamed to audio.h, joystick stuff + moved to joystick.h. New directory targets/. + missing.c: New file. +970308 Rewrite filesystem. Now it keeps one unique "a_inode" structure for + every object in the filesystem. This contains Amiga name, native + name, Amiga permissions, lock counts and several links for building + a tree structure. Keys are now made only for files which need a fd + and a file position. + Treat invalid locking modes als shared. + Comment out the code using readdir_r because that function appears + to be broken in glibc-2.0.1. + Clear RES2 in all packets before handling them. + Give mousehack the same task priority as the input.device. + Fix (?) some silly bugs in disk.c. +970307 Include some Acorn port code from Peter Teichmann. + Yet Another Serial Diff from Stefan. +970306 filesys.c: Don't just crash if lookup_key() has no success. + action_find_write() is supposed to create the file if it does not + exist. +970305 More DOS patches. Make the Makefile parallel-make safe. + svgancui.c: Do cyclic search if character is typed in file selector. + my_alphasort(): New function (work around glibc bug) + custom.c: Fix error in yesterdays change. + filesys.h: New file. +970304 New serial patch from Stefan and Christian. + Remove the assembler code to generate inputevents. Instead, add a new + Amiga C program ("mousehack") which does the trick. New function + mousehack_helper() in custom.c, activated by calltrap 0xF0FF70. + Mouse default is now always normal_mouse, not follow_mouse. + Do disk change checks only every 1/2 second. disk.c: Reverse + nodskchange to dskchange, and make sure there has been a step with the + drive empty before calling drive_insert() from DISK_check_change() (but + this _still_ doesn't work. Arrrghh). +970303 filesys.c: Initialize _all_ of struct _unit in startup_handler(). + Remove message_lock and friends and use new variables cmds_sent, + cmds_acked and cmds_completed to determine when to send dummy messages. + Changed examinekey handling so that "dir all" on a large tree doesn't + crash anymore (it used to reuse the top-level exkeys which were still + in use after a wraparound). Don't allocate examinekeys if we're + examining files. + Check for readdir_r in configure. Use a wrapper my_readdir() around + either readdir or readdir_r. + Call filesys_reset() also from filesys_diagentry(). + Get rid of most of uaelib.c. Now there isn't a library, just a calltrap + at 0xF0FF60. Changed uae_pragmas.h accordingly and recompiled uaectrl. + Added a bunch of "volatile"s in various places in filesys.c and + penguin.h. + Make the filesystem reset-safe in the threaded case (paranoia changes). + Check disk changes only every 1/10 second in vsync_handler(). + Add assembler code to generate InputEvents once every vblank to + filesys.asm. (Doesn't work yet.) +970302 filesys.c: Get rid of DosPacket type, pass pointers into Amiga memory + instead. Use GET_PCK_* and PUT_PCK_* macros to access fields. + Start making filesystem code thread safe & multithreaded. Move static + variables from some functions into struct _unit, likewise the key + and exkey variables. Add code to filesys.asm to queue commands which + did not complete and to reply to them later. Do multithreading if + compiled with SUPPORT_THREADS. See source for details. + Change hardfile and uaelib code not to call 68k routines. Make emulator + traps more efficient (no need to save regs, don't need SPCFLAG_EMULTRAP + anymore). +970301 Fixed ncurses.c so it works with currprefs. + filesys_reset(): New function, called from customreset(). + Changed source layout. Break up machdep into machdep, osdep and + threaddep. + penguin.h: Now supports arbitrary types in pipes. + Changed filesys.c so that no 68k code is called from native C code. + filesys.asm, filesys.sh: New files. filesys.asm contains some + startup code and the main loop for the filesystem. Several locks + are allocated by the assembler code for use by the C code. + DOS_AllocMem(), DOS_FreeMem(), make_dev(), build_parmpacket(), + filesys_init(): Functions removed. +970228 ncurses.c: Fix problem in b/w modes. + finish_drawing_frame(): Don't need to draw lines in multipenguin mode. + Move all options into new struct uae_prefs. New variables currprefs, + changed_prefs. + svgancui.c, tui_filereq(): If user presses a key, start search at + current position, not at the beginning. + DISK_check_change(): new function, compares currprefs with + changed_prefs and handles diskchanges if they differ. Called from + vsync_handler(). + DISK_validate_filename(): new function, checks whether a file exists. + Modify svga.c and tui.c so that F11 now brings up a limited UI. +970227 Reimplement Mathias Ortmann's frame rate hack: New option HAVE_RDTSC + in config.h. New typedef frame_time_t. New variables vsynctime and + vsyncmintime. New function machdep_init() in md-*/support.c which + sets up vsynctime in the md-i386-gcc and md-i386-linux cases. Use + all of those in events.h, do_cycles() to determine whether to spend + more time on the CPU emulation. + Add missing "int i;" to xwin.c, init_colors(). + Unroll some loops in sample_*handler(). + Improve quitting/resetting behaviour: Move quit_program from GUI + specific files to main.c. New functions uae_reset() and uae_quit(), + quit_program is now handled in vsync_handler() and m68k_go(). + New variable sample_evtime, used in customreset() and set up in + init_sound(). +970226 Solaris sound update from Manfred Thole. + keybuf.c: Decided that it doesn't need locking after all. + Add a bunch of Gustavo's latest diffs. (I hate CR characters!) + Move gfxvidinfo from all the target-specific files to custom.c + More Win32 stuff: New function notice_new_xcolors(). +970225 configure.in: In shell string comparisons, always put spaces around = + Add warning about standard SVGAlib being incompatible with + LinuxThreads. + os.c, SOLARIS_SOUND: Remove reference to obsolete variable smplcnt. + Two new variables sound8_base and sound16_base. + sysdeps.h: Split off some stuff into md-amiga/amiga-kludges.h. Also + make the main types now uae_u32 and variants instead of ULONG, etc. + Convert some files to use the new types. + cia.c: use int/long instead of ULONG/UWORD/etc for most static vars. + xdebug.c: Some cleanup. + md-i386-linux/penguin.h: Fix bug. Add "chunks" parameter to + init_comm_pipe. Use it to decide in write routine whether to signal + the other thread if it's waiting. Add no_buffer parameter to + write_comm_pipe_int. + Start adding Mathias Ortmann's Win32 patches. + md-i386-win32: New directory + include/sysconfig.h.win32: New file + custom.c: is_lastline: new variable, set in hsync_handler(). + sysdeps.h: Make it possible for system specific code to say that + POSIX/ANSI stdio/malloc functions aren't present and are defined + by a system-specific file instead. In filesys.c, don't reference + errno if DONT_HAVE_POSIX is defined. + readcpu.h: Kludge around the fact that Messysoft C apparently doesn't + handle enums properly. + newcpu.c/sysdeps.h: Preprocessor magic for 64 bit constants to get + around a problem with MS C. + md-*/penguin.h: Add dummy definitions for semaphores. + keybuf.c: Use semaphores to synchronize access. + os.c, win32 sound stuff: add memcpy avoidance code. +970221 X86.S: Don't use .type ifdef USE_UNDERSCORE. + Move thread support configuration to configure from config.h. Change + pipe implementation to use POSIX semaphore functions. +970217 From Samuel Devulder: Fix off-by-one error in LINE_TO_SCR, EHB case. +970215 customreset(): Initialize current_colors.color_regs to invalid values + [reported by Samuel Devulder]. config.h: Uncomment ECS_DENISE [reported + by Mathias Ortmann]. Add ami-win.c and custom.c patch from Samuel + Devulder. +970213 disk.c: Set FLOPPY_SPEED to 3 + custom.c: SPRxCTL_1(): if spron was SPR_restart set it to + SPR_waiting_start. do_sprites(): don't do that. + SPRxPT{H,L}: Call decide_line(). +970210 custom.c, X86.S: Do LORES_HACK for dual playfield screens. Plug memory + leak in custom_reset(). Fix pfield_draw_line() not to do so many + multiplications. Make line_changed a char array. In remember_ctable(), + remember comparison results also if negative. + In 8 and 16 bit graphics modes, use the high parts of the color values + to duplicate the actual values. This saves a lot of code in the + hdoubling routines. Add a special fill_line in the X86_ASSEMBLY case. + Check for glibc-2 and libpthread in configure. + options.h: In fuzzy_memset(), do rounding slightly more conservative. + Add tons of new keycodes to svga.c + In record_color_change(), also check if vertically outside DIW. + New variable hdiwstate, to represent the horizontal DIW state machine + (thanks Petter!) Handled in reset_decisions(), finish_decisions() and + decide_diw(). +970209 Change ncurses.c not to do so many multiplications/divisions. Add bold + character support. Add color support. Make configure recognize + --without-svgalib and enable ncurses.c in that case. +970208 X86.S, custom.c: Do LORES_HACK for EHB screens also. + New function write_log(); convert some fprintf(stderr, ...) calls. +970207 Argh, Linux/i386/ELF check in configure got broken by latest sh-utils. + In disk.c, drive_reset(), clear nodskchange flag. +970206 Sprite fix from Mathias Ortmann: _really_ get rid of SPR_vtop, and + replace all uses by SPR_stop. +970204 Disk change fix from Mathias Ortmann. +970203 New file ncurses.c, from Samuel Devulder. + Disabled Exec stuff completely. Now it isn't even compiled in anymore. +970129 Changes from Samuel Devulder for Amiga and Christian Bauer for BeBox. +970122 Reorder the set_planes_unaligned functions so that better code is + generated. Remove the or_planes_unaligned functions, add a parameter + do_or to the set_planes functions and rely on the compiler to optimize + the additional if away. + post_decide_line() can now turn DMA off early. + Make struct flag_struct 64 bits large for i386 systems, so we can use + long move insns without clobbering the X flag. + "make clean" should delete machdep/support.o. + Maybe we do need SPR_vtop after all - undo 970120 change. Instead, + comment out the code that clears the pos and ctl words at vsync time. + In xwin.c, restrict window height to 300 or 600 depending on linedbl + mode. +970121 Get rid of SPCFLAG_BLIT, call do_blitter() directly. + In finish_decisions(), don't check for sprite draws in the border. + Reimplement the SMART_UPDATE define so that the memcmpy() overhead can + be avoided by not setting it (but this usually loses). + Detect 7 lores planes in BPLCON0() and change to 6 to avoid memory + clobbers. + In pfield_draw_line(), do memcpy linedoubling after handling the line + to be doubled, not when we see a LINE_AS_PREVIOUS. Get rid of prev_ypos + parameter. + Add special code for bpldelay1 == bpldelay2 to the UNALIGNED_PROFITABLE + code. + In pfield_init_linetoscr(), when delays 1 and 2 differ, clear the areas + which are covered only by half of the planes at the start and end of + the DDF area. + Replace FASTER_CPU and LINUX_SOUND_SLOW_MACHINE with M68K_SPEED. + Replace fast_unaligned_memset macros with fuzzy_memset; use this also + in pfield_init_linetoscr(). + Use real (PAL) vblank end in do_sprites(). +970120 Mask out high byte in DDF{STRT,STOP} + Oops, forgot about long frames while calculating the bounds of all the + maxvpos*2-sized arrays. Increment them all by two. + Try to detect empty sprites before recording them for the drawing code, + but be careful not to hurt attached sprites. + From Paul Kienitz: hack for keyboard code in cia.c to work better with + newer Kickstarts; small cleanup in cpuopti.c. + Undo yesterday's change in copper_memory_cycles(), instead call + decide_line() each iteration and test whether copper_cycle_time == -1 + to determine whether we're vertically in the DIW. + calculate_copper_cycle_time() could get astronomical plane counts due + to missing masking operation. + No need to put the copper to sleep for one memory cycle after a WAIT, + merge that with the two cycles for the next instruction. + Get rid of SPR_vtop, no longer needed (it was unnatural anyway) +970119 Implemented alternate pfield_doline functions that access the apixels + array at unaligned addresses; conditional on UNALIGNED_PROFITABLE. + Move LORES_HACK from config.h to custom.c. + Fix loop exit test for pfield_linetoscr_hdouble_asm8(). Clear the + right parts of apixels in pfield_init_linetoscr() when LORES_HACK is + enabled. + Get rid of bordercol array: the decision-making code should handle + lines in the border correctly by setting line_changed. + Disable bitplane DMA if more than 4 hires bitplanes are set in BPLCON0. + Fix some more copper timing inaccuracies: used to test + thisline_decision.which without calling decide_line() before. +970118 Now remember BPLCON1 changes during data fetch. New functions + decide_delay(), pfield_adjust_delay(); new fields in struct drawinfo + and new variables next_delay_change, delay_changes. + Forgot to set copstate to COP_morewait in one case in do_copper(). + Add a kludge that checks for copper position 0xDC and changes it to + 0xDE. + Restore equality test for vertical sprite positions. Disable sprite + DMA before the end of the vertical blank area. + Mask not only the positions, but also comparison values in + calc_copcomp_true(). +970117 Change custom_bput to put the byte value in each half of the word that + is put. +970116 disk.c: Set the gap between sector 11 and 0 to 380 words. Andromeda's + "Seven Seas" demo expects at least 320. Make the KILLEHB bit + conditional on AGA_CHIPSET. Decide BPLCON1 (scrolling delays) in + decide_diw(). Fix off-by-one errors in the very_broken_program case + of decide_plane(). Fix aspect calculation when horizontal resolutions + differ. Simplify copper horizontal comparison logic slightly. + Fix divide by zero errors when reading from empty floppies. +970115 pfield_draw_line(): Check for frame_redraw_necessary also for border + lines. New global variable pfield_last_drawn_line, used to implement + clever Y centering. Make the KILLEHB test conditional on ECS_AGNUS. + Move joystick and sound initialization before gui startup. Adapt tui.c + so it understands the gfx_requested_* options. + We can't always avoid clearing pixdata.apixels if DIW is larger than + DDF. There may be sprites in the area outside DDF, but inside the DIW, + so we can't just adjust linetoscr_diw_{start,end} blindly in + pfield_init_linetoscr() [Sanity Arte demo]. +970114 Bebox diffs from Christian Bauer. + Support for Symmetric Multi Penguins under Linux (start second thread + with clone and use some pipes for communication - rather simpleminded + for now). Rework do_flush_line() and do_flush_screen() so that X + libraries are only called from the first thread. + Eliminate valid field from struct decision (set which to -2 instead of + valid = 0) + Fix definition for gui_filename() in xdebug.c to use const char * for + the second parameter. Remove CRs from disk.c (now how did they get in + there??). Likewise for cpuopti.c. +970113 When post_decide_line() detects mid-line DDF change, must adjust + bitplane pointers in decide_plane() also. Make plfstrt the earlier a + position in this case, and adjust bitplane pointers/modulos + accordingly. + current_hpos() isn't what GCC calls a constant function. + Replace line_drawinfo[current_change_set] with new variable + curr_drawinfo throughout. Likewise for new variables prev_drawinfo, + {curr,prev}_{color_{change,table}s,sprite_positions}; all initialized + in init_drawing_frame (). Turn line_data into a 2dim. array, do some + CSE/SR on line_data[lineno] in pfield_doline_{l,h}() and + decide_plane(). Make some custom registers unsigned int instead of + UWORD. + calc_copcomp_true(): Masking with 0xF000 isn't likely to give 0xC0000. + Comment out bplcon{3,4} from struct decision. +970112 filesys.c, action_set_protect(): if __unix is defined, check whether + user wants to change directory protection, and if so, force rwx to be + the new protection. + Force sane window sizes in xwin.c, and set width/height from mode specs + in svga.c. + Implement LORES_HACK compile-time option. + Whee, there _are_ broken programs that enable bitplane DMA in the + middle of the data fetch area, draw half a picture on the first line + and the full picture on all subsequent lines. New function + post_decide_line(), called from BPLCON0() and DMACON() which tries to + detect this case and turns the decision from border to playfield if + necessary. + New arrays, sprvstart and sprvstop, calculated in SPRxPOS and SPRxCTL, + and used by do_sprites. Handle sprites with vstart == vstop correctly. + Sprite vpos comparisons are now done with <= , not ==. + _Now_ the X86-specific linetoscr routines do their masking correctly. + configure: If we have GCC, #define GCCCONSTFUNC as __attribute__ + ((const)) +970111 Eliminate can_draw from struct decision. + Change vertical DIW code; use enum of two states (waiting for start and + for stop) which is updated in decide_line(). Lines during the wait for + stop phase are decided as border. No data is fetched outside the + vertical DIW. + Optimize copper memory cycle calculation a little: the new variable + copper_cycle_time is set to a time >= 0 if this time is constant + (i.e. 2). Calculated whenever DMA, BPLCON0, or DIW state changes. + blitter.c, genblitter.c, custom.c: For BLTBDAT, follow the HRM which + says that immediate data is shifted as soon as it is written. This + seems to be wrong for the A channel, though. Also, don't change prevb + during blitter loops if DMA B is off (Sanity Arte). Turn FAST_BLITTER + stuff into run-time option "-n", and eliminate the ancient blitting + code (former FAST_BLITTER == 0). + Big OOPS: Copper move checked copcon, but there was no COPCON function + so it was always zero -> copper-controlled blitter never worked. As a + speed optimization, recognize 00010000 copper commands and put the + copper to sleep until the blit is finished. + Slow down the blitter in decide_line() if bitplane DMA steals blitter/ + copper/CPU cycles (but this code is commented out for now). +970110 New function pfield_init_linetoscr(). Move calculation of diw_end and + diw_start values there from x86-specific code. Also use DDF values to + determine where data in pixdata.apixels is valid. The x86-specific + linetoscr routines now only do the alignment masking (and they now do + it correctly, too). + Got rid of the display-related contents of struct draw_info, make + static variables and them initialize from pfield_draw_line() only when + necessary in function pfield_expand_dp_bplcon (). Get rid of the four + saved_* arrays, remember line_drawinfo instead now that it's smaller. + Color compare avoidance didn't work because color_src_match didn't get + set when a compare was successful. Fixed. + Reorder parts of the decision-making code so that less redundant checks + are performed. + Add clever x centering. Change "-O" option parameter format. + In md-i386-linux/support.c, memcmpy(), do memcmp() first, then switch + to a plain memcpy routine once we find the first difference. + Patches from Stefan Reinauer/Christian Schmitt for + xdebug.c/configure.in + New uae-ui.tk from Volker Zota. + Add --enable-profiling to configure.in. + Check for period==0 in AUDxPER() was accidentally commented out - + revert. +970109 Some tweaks in X86.S, plus a new option X86_PPRO_OPT to use movzbl + instead of xorl/movb when possible. + Fix maxline calculation in finish_drawing_frame(). + Make next_lineno always a valid array index. Decrease minfirstline to + 21 (NTSC vblank end). New option -O to specify display parameters, + supersedes -d and -C which will be removed eventually. Differentiate + between line doubling and aspect correction. Put aspect correction code + in custom.c. + Remove some more unused stuff from custom.c. + Fix Makefile problems when cpuopti isn't used. +970108 use_lores isn't initialized before custom_init(), setup lores_frame and + friends in customreset(). Optimize spixstate clearing. Optimize border + drawing with copper color changes (use fill_line instead of linetoscr) + Fix the sprite DMA logic, it now works with the Interference demo. + Silly bug: Sprite 7 never got displayed (introduced sometime last week) + Implement USER_PROGRAMS_BEHAVE for normal (non-compiler) CPU emulation. + Add most of Gustavo's last patch (new dir md-i386-dos) +970107 Finish rewriting most of the drawing code in custom.c/X86.S. See + README.PROGRAMMERS and source for details. Improvements include better + copper precision, better interlace support, hopefully much less bugs + and not too many new ones. + Remove calc_adjustment() and gfxvidinfo.x_adjust; replace with code in + custom.c that looks at gfxvidinfo.follow_diwstop (new field) + Some operations (like EHB playfields) now have a higher penalty than + before, the assumption being that these are rare and the normal case + runs faster if it doesn't have to care too much about exceptions. + Fix sign mismatch bug in BPL1MOD() and BPL2MOD(). +970104 Move x_ShowEA() from xdebug.c in newcpu.c, rename as ShowEA(). +970102 Add check for XK_W to decode_es() in xwin.c. + New uae-ui.tk from Volker Zota. +961218 Add a patch by Bernie Solomon to overcome a problem with K&R compilers. + Change X86.S in a way that may make it either faster or slower. + Fix ADF_EXT1. +961217 #ifdef XK_dead_*, since Solaris doesn't have it. +961202 Fixed joystick.h problem in configure. X11/DGA support from Kai + Kollmorgen. +961117 Some fixes in svgancui.c. +961112 Gustavo's latest patch, with GUS support for DOS by Michael Sontheimer. + Add menu browsing to tui.c/svgancui.c +961107 Fix m68k_areg and m68k_dreg macros (put args in parentheses) + Initialize gfxvidinfo.maxlinetoscr in xwin.c (found by Sam Devulder) +961104 svgancui.c tui_refresh() routine tweaked to work with the non-standard + ncurses that came with my new SuSE-Linux CD. +961031 Added Christian Schmitt's xdebug.c (disabled for this release) +961024 Module search function from Michael Krause. +961019 Add Samuel Devulder's Amiga patches. +961018 Don't use -lm on NeXTStep. +961017 configure checks for -lforms. +961016 Ian Stephenson's new NeXTwin.m. Make CLXDAT return 0 (no collisions) + transdisk and transrom patches from Rodney Hester. Don't warn about + 256K Kickstarts. Check diskfile sizes and try to determine whether it's + a normal or a HD diskfile. No HD drive identification yet (is it + different?) +961013 Corrected lots of bugs in the return address stack. Fix some errors in + the compiler memory management. Use the "locked" flag for hash entries + differently, and don't enforce it on a cache flush. Compile JMP to a + constant address. +961012 Remove regs from cache before sign extending them for ADDA, MOVEA and + similar things. Compile NOPs to nothing. Implement variable shifts/ + rotates. Most shifts clear the V flag: Handle this in the compiler by + some extra magic sequences after shifts or in the CC_AFTER_RO case in + flush_cc_cache(). + Implement a stack containing return addresses and their hash entries, + and compile JSR (to constant addresses)/BSR/RTS instructions inline. +961011 compiler.c: Several bugs introduced in the last two days fixed. + New function compile_note_modify() which is used when an ea is + modified. This replaces calls to storeea with eaino_s == eaino_d. + Bah, the 386 doesn't set flags on a NOT. Use CC_TEST_REG again. + Do flag life analysis until no more changes are found. + Make sure all "data" parts of EAs are locked exclusively (esp. for + LEA, PEA) +961010 compiler.c: Finish yesterdays changes. Get rid of reg/offset + bookkeeping in m68k_compile_block(), keep the information in struct + ea_info instead. Rewrite all instructions to use the new fetch and + store routines. + Don't force a byteorder conversion in sync_reg() if the reg doesn't need + to be written back. Don't do a SAHF or equivalent in compile_condbranch + if we are doing a BRA or BF. + Don't use CC_TEST_REG for NEG and NOT (this was inefficient for NOT and + wrong for NEG). +961009 compiler.c: Two types of locks for registers; shared and exclusive. + Implement better EA fetching and storing routines. For pdi addressing + modes, lock the necessary registers shared before calling prepareea. + Unlock those registers again in generate_possible_exit(). +961008 MOVEM instructions in the compiler to an absolute address could have + caused random memory corruption. +961007 Spanish keyboard support for X by Ruben Martinez. Some configure fixes + (don't assume current dir is in path, don't assume ncurses.h exists if + libncurses does). + If we're calling 68k code from an emulator function, don't use compiled + code. + Add a compilation option USER_PROGRAMS_BEHAVE (for compiler). Make + compiler hash table larger. +961004 Fix typo in configure.in. + Modify the compiler so it doesn't ever throw away code, unless it's + necessary for a cache flush. + Didn't quite squash the compiler flag bug yesterday. Try again. + In filesys.c, do_find(), add a parameter fallback that indicates that + the open should be retried with O_RDONLY if it failed with O_RDWR. + Use this in find_input(). This fixes problems with r/o files on r/w + volumes. +961003 Play around with the x86 specific memory access functions. Problem: + __attribute__((regparam)) isn't reliable, and it seems that that's a + rather hard to fix bug in GCC. Add some alternatives to + md-i386-linux/memory.h; these aren't used yet though. + Huh, the compiler was completely wrong about the flag needs of + conditional instructions. I wonder how it could work at all... + Remove a and d arrays from struct regstruct; replace with array regs + with 16 elements. This allows better code for get_disp_ea() +961002 BeBox diffs from Christian Bauer. Move all code from main() to new + function real_main(). +961001 Use do_get_mem_*() functions for nextiword(), nextilong() and new + function nextibyte(). +960930 genblitter optimizations: Don't generate expressions in genblitter, use + a second program called gengenblitter to generate a table of + expressions for genblitter to use. gengenblitter knows about a lot of + rules to simplify expressions. Some other tweaks to make GCC output + better assembly for blitfunc.c. +960927 Turn off LED() in xwin.c (may fix SunOS joystick emulation problems) + Call XFlush() and XSync() when exiting. + Add some DOS patches. + Add hooks in filesys.c to support filesystem units in a GUI. Use them + in tui.c. Bugfixes in svgancui.c. Change the way tui_refresh() works. + New option "-A". +960925 For read-only filesystems (CD...), use O_RDONLY in action_find_input. +960923 Save options file even if rename fails. + Mirror address space every 16MB like we used to (got turned off by + accident). + Move some checks out of options.h into configure. Set up md-* + directories with machine-dependent stuff in them; configure creates + a link called machdep to the appropriate one. +960918 Solaris sound update from Manfred Thole. +960917 Add a timer.device replacement (buggy). +960916 Tristan Cavelier's french keyboard patch. + Apply ReadTheSpecsBeforeYouWrite(tm) technology to AddPort(). + Implement RemPort(), GetCC(). +960915 Tighten up some of the return values in Exec. +960914 EXEC: Implement RemTask(), ObtainSemaphoreList() and + ReleaseSemaphoreList(). Set up more fields of the ExecBase properly + and Enqueue it in the library list. Make InitResident call AddLibrary + when appropriate (otherwise, intuition is never put into the library + list). Fix major braino in Obtain/ReleaseSemaphore() (tried to Enqueue + tasks into two lists). Make OpenLibrary() honor the version parameter. +960913 EXEC: Idle task now runs in user mode (abuse 0xFF0D as second STOP + instruction). Make EXEC_IntTrap perform the RTE before trying to + schedule. +960912 Solaris sound didn't compile. So much for making blind changes without + being able to test them. +960911 As soon as you compile it under Solaris, it bombs... Now check that the + hardfile exists before determining the size in main.c. + execlib fixes: Set master DMA enable bit at startup, fix interrupt + code to survive an interrupt that occurs before the proper SetIntVector + call. Implement RawDoFmt(), CloseDevice(), CloseLibrary(), + FindResident(). 960905 Lower 8 bits of POTGOR should be 0. 960904 Implement MULU, MULS, ADDX and SUBX in compiler. 960903 ncurses interface works. DOS people: please use the new portable tui.c @@ -51,7 +897,7 @@ 960728 Fixed the scancodes for <> and #' keys in svga.c Apparently, CIA timer latches ought to be 0xFFFF after a reset (prevents Eagleplayer from crashing occasionally). #ifdeffed out a - slightly weird call to INTREQ from RehtinkICRB() + slightly weird call to INTREQ from RethinkICRB() 960727 Sound code rewritten again. Now uses events (five new ones). All modules seem to play correctly now. It's a bit slower, though. AF sound should work again, patches from Marcus Sundberg.