|
|
1.1.1.3 ! root 1: 980508 Fix compilation problem on ELF systems introduced by BSD patches. ! 2: configure.in, aclocal.m4, Makefile.in: Use AM_PATH_GTK from gtk ! 3: distribution. ! 4: Don't disable GGI if we can't find svgalib. ! 5: 980504 xwin.c: Call XAllocColorCells for dithered modes. Don't set image_mem ! 6: in get_image, instead arrange for it to store the address in a pointer ! 7: chosen by the caller. ! 8: BSD patches by Krister Walfridsson. ! 9: 980425 picasso96.c: In BlitPattern, correctly handle the pattern offsets. ! 10: 980421 BeOS update (Christian Bauer) ! 11: 980419 In pfield_doline_unaligned_h, don't increment dataptr. ! 12: 980418 gtkui.c: Don't crash if -G option is given. ! 13: 980416 custom.c: Don't use bplhires in do_modulos. ! 14: ! 15: Release 0.7.0 ! 16: 980401 gengenblitter.c: Complete rewrite. Much smaller, much faster, much ! 17: better results. ! 18: Check for -lXi to support newer versions of gtk+. ! 19: 980316 gencpu.c (read_counts): Two silly bugs fixed. ! 20: main.c (save_options): Don't write out 'a' if cpu_level < 2 ! 21: configure.in: Changes to try to be compatible with Solaris /bin/sh. ! 22: 980315 New UAE-Control version from Tauno & Cloanto. ! 23: Make configure set UNALIGNED_PROFITABLE for x86. ! 24: Get rid of "-o", add save command to tui.c and gtkui.c. ! 25: Fix some bugs in save_options. ! 26: 980314 Many improvements in the gtk UI. Made CPU type changeable at run-time. ! 27: Make DGA && ! VIDMODE configuration compile. Kludge around the fact ! 28: that DGA misses colormap changes. Call XWarpPointer to try to avoid ! 29: the click-moves-framebuffer bug. ! 30: Make sure p2c.[ch] don't get deleted. ! 31: 980313 Move all CPU_LEVEL handling from build68k.c to gencpu.c. In gencpu.c, ! 32: ignore all parameters and don't write to standard output, instead ! 33: hardcode all filenames and generate them all at once. Arrange to ! 34: generate code for all CPU emulator variants and to select them at ! 35: run-time. ! 36: Get rid of copper cheat mode, re-use "-C" option for CPU selection. ! 37: 980312 In COPxLCL, mask out LSB (Axel Wefers). ! 38: newcpu.h: Always compile in both get_disp_ea versions with a different ! 39: name. Delete USE_POINTER option; always use pointer. Don't fill ! 40: prefetch in m68k_setpc, do it in callers where necessary. Compile in ! 41: two versions of get_ixxxx, with different names for prefetch and ! 42: non-prefetch. Change gencpu.c to use these appropriately. ! 43: Don't generate 16 small CPU emulation source files. With a decent ! 44: machine it's no problem to compile all the code in one file. Also turn ! 45: off -O3 for gcc, -O2 does fine since all the necessary __inline__s are ! 46: there, and the compiler takes less memory that way. ! 47: Don't include <linux/joystick.h>, duplicate some definitions from ! 48: there instead. Makes configure.in simpler, too. ! 49: Fix Makefile.in/configure.in and a couple of other places to support ! 50: building in a separate directory (sort of; not complete yet). ! 51: Remove p2c.[ch] and genp2c when doing make clean. ! 52: Delete code to support Tcl/Tk and XForms GUIs. ! 53: 971215 More Amiga and BeOS patches from Sam and Christian. ! 54: 971205 Move some more code from custom.c to audio.c. Optimize sample handlers ! 55: a bit. ! 56: Make RDTSC asm statement volatile. ! 57: 971203 Latest GGI patch from Christian Schmitt. ! 58: Fix configure to enable zfile decompression for GGI target. ! 59: Fix mouse button mapping in ggi.c. ! 60: 971128 Fix double definition of gfxvidinfo in custom.c. ! 61: Fix impossible register constraints in asm statement in newcpu.c ! 62: Sprinkle casts and rename some variables to make C++ compilers happy. ! 63: Add BeOS patches by Christian Bauer. ! 64: 971125 More Amiga patches from Sam. ! 65: 971120 Get rid of DONT_WANT_SOUND. ! 66: 971119 Support USS sound not only on Linux (Douglas Carmichael) ! 67: Update Win32 and DOS ports. ! 68: Add Polish documentation by Tomasz Sienicki. ! 69: 971116 Add a missing return statement in filesys.c (Brian King) ! 70: 971112 Fix silly error in xwin.c. ! 71: 971108 Add some more decompressors to zfile.c. Set FLOPPY_SPEED to 4. ! 72: 971107 Make ggi.c compile again, fix a few bugs and add Picasso support. ! 73: 971106 Fill prefetch queue after executing an encrypted ROM illegal insn. ! 74: 971105 Initialize the sprites during customreset now that init_hardware_frame ! 75: no longer does it. ! 76: 971104 Implement action_set_file_size as required by the specs. ! 77: SetPanning/picasso96_state: XOffset and YOffset are signed. ! 78: 971103 xwin.c: Offer 640x512 and 320x256 resolutions in windowed Picasso mode. ! 79: Add a few more memory banks in memory.c (A3000 stuff - nonfunctional) ! 80: Don't map kickmem at address 0 if using replacement Kickstart. ! 81: Must fill prefetch buffer when calling calltraps or ersatz functions. ! 82: Write out hardfile parameters in write_filesys_config(). ! 83: xwin.c: Support 15 bit displays. ! 84: 971101 Add latest patches by Samuel Devulder. Improve hardfile support in ! 85: tui.c. ! 86: 971031 Offer "-U" only ifdef PICASSO96. ! 87: Add support for mounting multiple hardfiles in any order. ! 88: Don't reset sprite state in init_hardware_frame. Instead, allow SPRxPT ! 89: functions to set the state to SPR_restart in the vertical blanking ! 90: area. ! 91: 971030 Fix 8MB Chip RAM. ! 92: filesys_dev_storeinfo: New function and calltrap. Use it to store ! 93: per-unit data (which now includes geometry information) in the ! 94: parampacket. Modify filesys.asm to use it instead of trying to find ! 95: the values by itself. ! 96: 971028 "AMIROMTYPE1" has 11 characters, not 0. ! 97: 971027 Implement encrypted ROM features. Comment out non-working InvertRect ! 98: optimization. ! 99: 971026 Fix some problems in PlanarToDirect and CopyColorIndexMappingA2U. ! 100: 971022 Remove fixed paths in genp2c.c (oops...) ! 101: Some more XF86VidMode hacks. ! 102: Include target.h in sysdeps.h. Define PICASSO96_SUPPORTED for X11, ! 103: SVGAlib and Win32. Don't compile in Picasso support if this macro isn't ! 104: defined. ! 105: 971021 xwin.c: Picasso code wants to use bit_unit, not bitdepth. Also correct ! 106: byteorder (it's B8G8R8A8 from the Amiga's point of view). ! 107: Fix Picasso InvertRect function. ! 108: Half-hearted attempt at 24 bit support in the X11 version, with some ! 109: awful code in custom.c. ! 110: Make the X11/VidMode version try to resize the screen for Picasso mode ! 111: switches. ! 112: 971020 Delete option -5, make -4 take an argument. Disable z3fastmem and ! 113: Picasso emulation when using a 24 bit address space. ! 114: 971019 record_color_change: No need to remember a color table if the current ! 115: line hasn't been decided yet. ! 116: Add XF86VidMode extension support. ! 117: Integrate Stefan's Zorro III support, add support for up to 64MB fast. ! 118: xwin.c: Refresh the whole Picasso screen if there are Expose events. ! 119: Fix module length calculation for *Tracker modules. ! 120: Use a 32 bit address space by default if CPU_LEVEL > 1. New option -5. ! 121: 971018 Apparently it's not possible to turn on bitplane DMA in the middle of ! 122: the line, so call post_decide_line only when the number of planes is ! 123: modified, not in DMACON. ! 124: genp2c.c: New file, generates planar to chunky conversion routines. ! 125: Remove those which are now generated from custom.c. ! 126: 971017 Make row_map an array, not a pointer to one. ! 127: Audio periods may not be 0, so initialize them to 65535 in customreset. ! 128: Implement "S" command in the debugger. Add a bunch of module detection ! 129: routines. ! 130: 971015 od-linux/sound.c: If FRAME_RATE_HACK, reduce vsynctime a bit to give ! 131: the sound emulation more room to breathe. ! 132: 971013 Merge with Brian's latest Picasso code. ! 133: 971012 Fix a few more portability problems that showed up when compiling with ! 134: Watcom C. Also remove superfluous includes from some files. ! 135: Add md-i386-watcom directory. Update od-win32 with latest code. ! 136: Remove fast_memcmp routine. ! 137: Include penguin.h before xwin.h everywhere. Declare a few semaphores ! 138: for multithreaded setups in xwin.h. Move inhibit_frame stuff to xwin.h. ! 139: 971011 gencpu.c: Don't generate labels without following statement. Don't ! 140: directly generate assembly statements if X86_ASSEMBLY, instead generate ! 141: code that uses macros defined in machdep/m68k.h. ! 142: 971008 xwin.c, svga.c, custom.c, uaelib.c: Add picasso96 code. Add Picasso ! 143: selection to configure. ! 144: Move common variables (mouse stuff, gfxvidinfo, xcolors) from graphics ! 145: files to custom.c. ! 146: memory.c: custom chip area isn't supposed to be mapped at 0x200000. Use ! 147: dummy bank for now. ! 148: od-linux/joystick.c: Open different devices for different joysticks. ! 149: From Win32 sources: set vsyncmintime in m68k_go. ! 150: 971005 genblitter.c: blitzero is initialized to 1, not to 0, so we need to ! 151: clear, not set it. ! 152: 970928 Add another user interface for X11 using libgtk+. ! 153: 970925 audio.c: For stereo sound, double all lookup table values. ! 154: Added (preliminary) win32.c. ! 155: 970923 DISK_check_change: Should call gui_filename when ejecting. ! 156: 970922 Fix od-linux/joystick.c compilation problem with recent kernels. ! 157: Merge results of the UAE meeting: ! 158: New serial code (Stefan Reinauer) ! 159: Expansion "test card" support (Stefan Reinauer) ! 160: New GGI code (Christian Schmitt), also configure/Makefile changes ! 161: to make it compile. ! 162: Fix 68020/FPU code. ! 163: Call do_mousehack before every read of the mouse position to get more ! 164: accurate values. ! 165: Add sd-file directory; add support for it in configure. ! 166: Add stereo support in audio.c, od-linux/sound.[ch], and main.c. ! 167: Fix copper problem: call decide_line in calc_copcomp_true; and if the ! 168: copper wouldn't wait normally (position reached), but the hardware is ! 169: fetching data in Hires 4 plane mode, delay until ddf stop. ! 170: t-ascii.h: Asciiart target understands "-x" parameter. ! 171: 970823 gencpu.c [X86_ASSEMBLY]: Turn input constraints for scratch into output ! 172: constraints. ! 173: 970626 Fix 24 bit address space logic (Mathias Ortmann). ! 174: Raise exception 3 for Bcc.L insns if CPU_LEVEL < 1. Reported by Stefan ! 175: Ropke. ! 176: Remove USER_PROGRAMS_BEHAVE for normal emulator. Remove hacks to ! 177: generate expanded CPU functions for specific opcodes. Replace with code ! 178: that reads an instruction count file and sorts gencpu output by ! 179: frequency of the called opcodes. ! 180: 970625 Calltraps (at least those with call_m68k calls in them) were broken by ! 181: the CPU emulator changes. Now use Axxx opcodes as calltraps. ! 182: Include pOS port by Samuel Devulder. ! 183: 970624 Solaris sound patches by Manfred Thole. ! 184: gencpu.c: The generated code shouldn't just check for odd addresses, ! 185: it should also call Exception... ! 186: 970622 gencpu.c: don't emit return statements; make code jump to a function ! 187: end label instead. Make genamode() check for odd addresses, also reduce ! 188: code duplication. Interpret getv parameter so that data is fetched if ! 189: getv == 1, and the address is checked if getv != 0. Remove exception 3 ! 190: checks from get_long() etc. Get rid of buserr. ! 191: cpuopti.c: Make a few more checks whether optimization is possible. Add ! 192: code to undo GCC's epilogue scheduling. ! 193: newcpu.c: Split all the specialflag handling into new function. ! 194: Implement -w option as in Win32 port. tui.c: add it to misc menu. ! 195: 907621 Fix yesterday's CPU emulator changes. Make cpuopti aware of functions ! 196: with two RET insns. Make sure that NO_EXCEPTION_3 and ! 197: NO_PREFETCH_BUFFER are on when emulating a 68020. ! 198: Add usage information for src/dst operands to table68k. ! 199: Implement CIA A OVL bit properly. ! 200: 970620 New NeXTwin.m from Ian. Fix a number of prefetch bugs in gencpu.c. ! 201: newcpu.h: m68k_incpc(), get_i{byte,word,long}: New function/macros. ! 202: Also add oldpc parameter to m68k_do_[bj]sr(). gencpu.c: use all this. ! 203: CPU functions now don't use nextiword; they keep the PC constant and ! 204: increment it with the right value at the end. ! 205: If chipmem_size > 2MB, disable fastmem. ! 206: In configure.in and od-linux/joystick.c, use ljoystick.h as name for ! 207: the replacement file for a broken <linux/joystick.h> ! 208: configure.in: Check for post-gcc-2.7.2 option "-mno-schedule-prologue" ! 209: and use it for compiling the optimized CPU files if it exists. ! 210: 970618 Rename hardfile.device to uaehf.device to avoid name clashes. Suggested ! 211: by George Nicolaidis. ! 212: Reimplement CPU prefetch by making gencpu aware of it so it generates ! 213: code that fetches data from the right places automatically. Also reduce ! 214: prefetch length to 4 bytes. ! 215: 970612 memory.h: Include osdep/memory.h. missing.c: implement xmalloc(). ! 216: Throughout: use xmalloc instead of malloc. ! 217: Apply changes by Sam Devulder. ! 218: 970608 Fix ncurses.c so that it links. Fix configure so that it can be enabled ! 219: Get rid of spixstate by implementing a new sprite drawing method. ! 220: 970607 do_copper_cheat(): New function, Implement inaccurate, line-based ! 221: copper as an option (-C). calc_copcomp_true(): Fix possible hr 4 plane ! 222: bug (split the wait into several pieces in this mode). ! 223: Allow 0 bytes for fast and bogomem (to override .uaerc) ! 224: 970606 Fix some bugs in transdisk, and make it compile with SAS C (Joanne Dow) ! 225: Stupid compilation fixes: Get rid of "==" in shell scripts, check that ! 226: B300 and friends are defined in serial.c before using them. ! 227: Implement blitter prefetch. Fix silly typo in main.c that prevented ! 228: immediate blits. ! 229: init_ham_decoding(): new function, handles case where the first few ! 230: pixels of a HAM display are outside the window. ! 231: 970605 disk.c: Get rid of need_read. Save cylinder/track number for the data ! 232: in the MFM buffer for each drive. Force rereads on disk insert and ! 233: write operations. In drive_fill_bigbuf(), do nothing if saved data ! 234: matches current. Fix disk change logic: give the program time to read ! 235: the change bit a couple of times before inserting a new disk. ! 236: custom.c: Fix really subtle bug: when deciding a line as border, ! 237: plfstrt/plflinelen were not set up properly, which could confuse ! 238: post_decide_line(), and eventually there would be lines decided as ! 239: playfield with plfstrt == 0, plflinelen == -32 ==> Bang. A related ! 240: bug was that setting DDFSTRT to 0 would result in both plfstrt and ! 241: plfstop having value 0. ! 242: gfxutil.c: Fix bug that could cause color values to go out of bounds. ! 243: xwin.c, svga.c: When dithering, color values were not doubled properly. ! 244: 970604 filesys.c: when deleting an a_ino, remove it from hash table (Mathias ! 245: Ortmann). In do_find(), if creating a file failed and we didn't have ! 246: an a_ino before, call delete_aino on the one we created. ! 247: More configure changes: Add $X_PRE_LIBS and $X_EXTRA_LIBS in some ! 248: places. See if MIT-SHM support for X will compile and link. Always ! 249: compile it in if it will. Turn DONT_WANT_SHM and LOW_BANDWIDTH into ! 250: run-time options (-T, -L). Use single line buffer when dithering and ! 251: in low-bandwidth mode (but in all cases there's a full buffer for the ! 252: X image). ! 253: memory.c: Don't map in custom regs at 0x200000 if chipmem_size > 2MB. ! 254: Split up init_sound(): new function setup_sound(). Make "-B" accept ! 255: minimum and maximum values as in Gustavo's latest patch. Add code to ! 256: tui.c to support changing buffer size, number of bits and frequency. ! 257: 970603 If using compiler, define NO_EXCEPTION_3 and NO_PREFETCH_BUFFER. ! 258: (bugreport by Raphael Poss). ! 259: GGI support from Christian Schmitt/Stefan Reinauer. More serial patches ! 260: from Stefan. 3 button joystick patch from Mathias. ! 261: Add linemem field to gfxvidinfo, for systems that don't want to keep ! 262: a buffer of the full screen. Adjust custom.c to use it instead of ! 263: bufmem if it's not NULL (mostly by Mathias). svga.c, xwin.c: Use single ! 264: line buffer in some cases. xwin.c: If USE_DGA_EXTENSION, undef ! 265: LOW_BANDWIDTH. Move test of DONT_WANT_SHM after inclusion of config.h ! 266: Make configure.in a bit more structured. ! 267: Move colormodes array to main.c. ! 268: 970602 gfxlib.c: Start implementing layers workalike. ! 269: md-i386-gcc/support.c: Don't mix sleep and alarm. (Petter Schau) ! 270: 970601 Remove may_run_compiled. Print error and abort if m68k_go is called ! 271: twice. ! 272: Fix yesterdays bugfix in svga.c. ! 273: Change FRAME_RATE_HACK so it tries to average the times a bit. ! 274: Re-implement a call_m68k function in autoconf.c. The new version ! 275: works by doing some heavy setjmp/longjmp magic and switching stacks. ! 276: With this, it's even possible to call things that Wait(), so use ! 277: the new functionality in gfxlib.c to call LockLayer() in WritePixel(). ! 278: 970531 Turn some inline functions in memory.h into macros. Get rid of ! 279: get_along and get_aword. Implement CIA A OVL bit. ! 280: main.c: Add missing close_sound() call. ! 281: Remove INTEL_FLAG_OPT, use X86_ASSEMBLY for everything. ! 282: tui.c/svgancui.c: Implement scrollable menus. Add code to select ! 283: video mode from a given list. Add "graphics_setup" call to graphics ! 284: specific files. Use it in svga.c to build a video mode menu. ! 285: Fix bug in svga.c that would crash non-linear modes. ! 286: disk.c needs to include gensound.h and sounddep/sound.h. ! 287: Fix bug in fuzzy_memset. In pfield_init_linetoscr, always adjust ddf ! 288: values if lores hack is being used. ! 289: 970530 Apply some patches by Samuel Devulder. ! 290: 970529 filesys.c: In "Houston, we have a problem" case, do not only delete ! 291: the oldest ExKey, but also use it instead of random memory for the ! 292: new one. Attempt to reduce the number of lost exkeys by allocating ! 293: them in action_examine_next instead of action_examine_object. ! 294: Initialize the "uniq" field of unit->rootnode. ! 295: Attempt to speed up sprite drawing loop. ! 296: Implement sprite<->sprite collisions. ! 297: Get rid of -Wtraditional. ! 298: 970524 New config option NO_PREFETCH_BUFFER. Emulate 16 byte prefetch if ! 299: unset. ! 300: For exception 3, the stack frame seems to be: ! 301: (saved SR).w, (faulting address).l, (faulting instruction).w, 0.w, ! 302: (pc at fault time).l. Make everything that could generate this fault ! 303: handle it properly. That got Cybernoid II working! ! 304: 970523 Makefile.in: Make sure $(DEBUGFLAGS) is used for CPU emulation files. ! 305: memory.c: Don't map chipmem at 0x200000, use custom chip bank for now. ! 306: 970507 configure.in: Mutate ac_cv_c_inline=no to ac_cv_c_inline= ! 307: Check for tcgetattr, <sys/termios.h>, cfmakeraw, <sys/ioctl.h> ! 308: Check for sem_init in -lposix4 (Marc Zimmermann) ! 309: serial.c, cia.c, cia.h, serial.c: changes (Stefan Reinauer) ! 310: Make disk gap 360 (Michael Krause) ! 311: 970404 In configure, check for features.h before including it in test program. ! 312: 970401 New option -4. Bugreport by Mirko Viviani. ! 313: 970324 Petter Schau says the exception frame for Bus Error and Address Error ! 314: is 14 bytes, not 6, on the 68000. Change Exception() accordingly. ! 315: It's *** OUCH *** day! Make hardfile beginio return the correct value. ! 316: Also load execbase before calling ReplyMsg(). ! 317: It's *** OUCH *** day again! The filesystem asm code was an odd number ! 318: of bytes, leaving the hardfile code unaligned. ! 319: 970318 custom.c: Rename spron to sprst, and use new variable spron to indicate ! 320: for which sprites the sprite pointer registers have been written. Don't ! 321: do sprite DMA if spron==0. (The problem was that some programs write ! 322: SPRxCTL and then SPRxPT, which used to set the sprite state to ! 323: SPR_restart, but it must be SPR_waiting_start.) ! 324: Turn a few m68k_reset()s into uae_reset()s. ! 325: New variable nr_joysticks. Delete joystickpresent. New arg "nr" for ! 326: getjoystate() and read_joystick(). ! 327: New extra keycode AK_RCTRL. Handle multiple joysticks & different key ! 328: replacements in keybuf.c/custom.c. Make tui.c handle all the settings. ! 329: 970310 od-linux/joystick.c now compiles again without the joystick header. ! 330: Fix some problems in configure; also check whether [n]curses.h defines ! 331: attr_t. Keep count of warnings and errors during configuration and ! 332: print a hopefully helpful message at the end. ! 333: disk.c sanitized by Mathias Ortmann. ! 334: Change the replacement getopt around a bit. ! 335: execlib.c, timerdev.c: Files removed. This will never be compatible ! 336: enough. Also remove related code (several SPCFLAGs, etc.) ! 337: Make main.c a bit nicer by introducing additional defines for the t-* ! 338: files. Also canonicalize the .uaerc file on all systems, eliminating ! 339: lines starting with '#' in the process. ! 340: Remove code in autoconf.c to set up 8MB chip; move it to filesys.asm. ! 341: Try doing the copper end-of-line hack in copper_memory_cycles(). ! 342: Disable the copper speedup hack. ! 343: 970309 Add a small, dumb hash table to struct _unit to speed up repeated ! 344: aino lookups. Delete aino in action_delete_object(). Move children in ! 345: action_rename_object(). In action_examine_next(), call new function ! 346: lookup_child_aino_for_exnext() which behaves more or less like ! 347: lookup_child_aino(), except it uses new function get_aname() to ! 348: translate filenames. ! 349: More portability fixes. New links set up in configure: sounddep, ! 350: target.h. All machine-dependent and joystick code removed ! 351: from os.c, renamed to audio.c. os.h renamed to audio.h, joystick stuff ! 352: moved to joystick.h. New directory targets/. ! 353: missing.c: New file. ! 354: 970308 Rewrite filesystem. Now it keeps one unique "a_inode" structure for ! 355: every object in the filesystem. This contains Amiga name, native ! 356: name, Amiga permissions, lock counts and several links for building ! 357: a tree structure. Keys are now made only for files which need a fd ! 358: and a file position. ! 359: Treat invalid locking modes als shared. ! 360: Comment out the code using readdir_r because that function appears ! 361: to be broken in glibc-2.0.1. ! 362: Clear RES2 in all packets before handling them. ! 363: Give mousehack the same task priority as the input.device. ! 364: Fix (?) some silly bugs in disk.c. ! 365: 970307 Include some Acorn port code from Peter Teichmann. ! 366: Yet Another Serial Diff from Stefan. ! 367: 970306 filesys.c: Don't just crash if lookup_key() has no success. ! 368: action_find_write() is supposed to create the file if it does not ! 369: exist. ! 370: 970305 More DOS patches. Make the Makefile parallel-make safe. ! 371: svgancui.c: Do cyclic search if character is typed in file selector. ! 372: my_alphasort(): New function (work around glibc bug) ! 373: custom.c: Fix error in yesterdays change. ! 374: filesys.h: New file. ! 375: 970304 New serial patch from Stefan and Christian. ! 376: Remove the assembler code to generate inputevents. Instead, add a new ! 377: Amiga C program ("mousehack") which does the trick. New function ! 378: mousehack_helper() in custom.c, activated by calltrap 0xF0FF70. ! 379: Mouse default is now always normal_mouse, not follow_mouse. ! 380: Do disk change checks only every 1/2 second. disk.c: Reverse ! 381: nodskchange to dskchange, and make sure there has been a step with the ! 382: drive empty before calling drive_insert() from DISK_check_change() (but ! 383: this _still_ doesn't work. Arrrghh). ! 384: 970303 filesys.c: Initialize _all_ of struct _unit in startup_handler(). ! 385: Remove message_lock and friends and use new variables cmds_sent, ! 386: cmds_acked and cmds_completed to determine when to send dummy messages. ! 387: Changed examinekey handling so that "dir all" on a large tree doesn't ! 388: crash anymore (it used to reuse the top-level exkeys which were still ! 389: in use after a wraparound). Don't allocate examinekeys if we're ! 390: examining files. ! 391: Check for readdir_r in configure. Use a wrapper my_readdir() around ! 392: either readdir or readdir_r. ! 393: Call filesys_reset() also from filesys_diagentry(). ! 394: Get rid of most of uaelib.c. Now there isn't a library, just a calltrap ! 395: at 0xF0FF60. Changed uae_pragmas.h accordingly and recompiled uaectrl. ! 396: Added a bunch of "volatile"s in various places in filesys.c and ! 397: penguin.h. ! 398: Make the filesystem reset-safe in the threaded case (paranoia changes). ! 399: Check disk changes only every 1/10 second in vsync_handler(). ! 400: Add assembler code to generate InputEvents once every vblank to ! 401: filesys.asm. (Doesn't work yet.) ! 402: 970302 filesys.c: Get rid of DosPacket type, pass pointers into Amiga memory ! 403: instead. Use GET_PCK_* and PUT_PCK_* macros to access fields. ! 404: Start making filesystem code thread safe & multithreaded. Move static ! 405: variables from some functions into struct _unit, likewise the key ! 406: and exkey variables. Add code to filesys.asm to queue commands which ! 407: did not complete and to reply to them later. Do multithreading if ! 408: compiled with SUPPORT_THREADS. See source for details. ! 409: Change hardfile and uaelib code not to call 68k routines. Make emulator ! 410: traps more efficient (no need to save regs, don't need SPCFLAG_EMULTRAP ! 411: anymore). ! 412: 970301 Fixed ncurses.c so it works with currprefs. ! 413: filesys_reset(): New function, called from customreset(). ! 414: Changed source layout. Break up machdep into machdep, osdep and ! 415: threaddep. ! 416: penguin.h: Now supports arbitrary types in pipes. ! 417: Changed filesys.c so that no 68k code is called from native C code. ! 418: filesys.asm, filesys.sh: New files. filesys.asm contains some ! 419: startup code and the main loop for the filesystem. Several locks ! 420: are allocated by the assembler code for use by the C code. ! 421: DOS_AllocMem(), DOS_FreeMem(), make_dev(), build_parmpacket(), ! 422: filesys_init(): Functions removed. ! 423: 970228 ncurses.c: Fix problem in b/w modes. ! 424: finish_drawing_frame(): Don't need to draw lines in multipenguin mode. ! 425: Move all options into new struct uae_prefs. New variables currprefs, ! 426: changed_prefs. ! 427: svgancui.c, tui_filereq(): If user presses a key, start search at ! 428: current position, not at the beginning. ! 429: DISK_check_change(): new function, compares currprefs with ! 430: changed_prefs and handles diskchanges if they differ. Called from ! 431: vsync_handler(). ! 432: DISK_validate_filename(): new function, checks whether a file exists. ! 433: Modify svga.c and tui.c so that F11 now brings up a limited UI. ! 434: 970227 Reimplement Mathias Ortmann's frame rate hack: New option HAVE_RDTSC ! 435: in config.h. New typedef frame_time_t. New variables vsynctime and ! 436: vsyncmintime. New function machdep_init() in md-*/support.c which ! 437: sets up vsynctime in the md-i386-gcc and md-i386-linux cases. Use ! 438: all of those in events.h, do_cycles() to determine whether to spend ! 439: more time on the CPU emulation. ! 440: Add missing "int i;" to xwin.c, init_colors(). ! 441: Unroll some loops in sample_*handler(). ! 442: Improve quitting/resetting behaviour: Move quit_program from GUI ! 443: specific files to main.c. New functions uae_reset() and uae_quit(), ! 444: quit_program is now handled in vsync_handler() and m68k_go(). ! 445: New variable sample_evtime, used in customreset() and set up in ! 446: init_sound(). ! 447: 970226 Solaris sound update from Manfred Thole. ! 448: keybuf.c: Decided that it doesn't need locking after all. ! 449: Add a bunch of Gustavo's latest diffs. (I hate CR characters!) ! 450: Move gfxvidinfo from all the target-specific files to custom.c ! 451: More Win32 stuff: New function notice_new_xcolors(). ! 452: 970225 configure.in: In shell string comparisons, always put spaces around = ! 453: Add warning about standard SVGAlib being incompatible with ! 454: LinuxThreads. ! 455: os.c, SOLARIS_SOUND: Remove reference to obsolete variable smplcnt. ! 456: Two new variables sound8_base and sound16_base. ! 457: sysdeps.h: Split off some stuff into md-amiga/amiga-kludges.h. Also ! 458: make the main types now uae_u32 and variants instead of ULONG, etc. ! 459: Convert some files to use the new types. ! 460: cia.c: use int/long instead of ULONG/UWORD/etc for most static vars. ! 461: xdebug.c: Some cleanup. ! 462: md-i386-linux/penguin.h: Fix bug. Add "chunks" parameter to ! 463: init_comm_pipe. Use it to decide in write routine whether to signal ! 464: the other thread if it's waiting. Add no_buffer parameter to ! 465: write_comm_pipe_int. ! 466: Start adding Mathias Ortmann's Win32 patches. ! 467: md-i386-win32: New directory ! 468: include/sysconfig.h.win32: New file ! 469: custom.c: is_lastline: new variable, set in hsync_handler(). ! 470: sysdeps.h: Make it possible for system specific code to say that ! 471: POSIX/ANSI stdio/malloc functions aren't present and are defined ! 472: by a system-specific file instead. In filesys.c, don't reference ! 473: errno if DONT_HAVE_POSIX is defined. ! 474: readcpu.h: Kludge around the fact that Messysoft C apparently doesn't ! 475: handle enums properly. ! 476: newcpu.c/sysdeps.h: Preprocessor magic for 64 bit constants to get ! 477: around a problem with MS C. ! 478: md-*/penguin.h: Add dummy definitions for semaphores. ! 479: keybuf.c: Use semaphores to synchronize access. ! 480: os.c, win32 sound stuff: add memcpy avoidance code. ! 481: 970221 X86.S: Don't use .type ifdef USE_UNDERSCORE. ! 482: Move thread support configuration to configure from config.h. Change ! 483: pipe implementation to use POSIX semaphore functions. ! 484: 970217 From Samuel Devulder: Fix off-by-one error in LINE_TO_SCR, EHB case. ! 485: 970215 customreset(): Initialize current_colors.color_regs to invalid values ! 486: [reported by Samuel Devulder]. config.h: Uncomment ECS_DENISE [reported ! 487: by Mathias Ortmann]. Add ami-win.c and custom.c patch from Samuel ! 488: Devulder. ! 489: 970213 disk.c: Set FLOPPY_SPEED to 3 ! 490: custom.c: SPRxCTL_1(): if spron was SPR_restart set it to ! 491: SPR_waiting_start. do_sprites(): don't do that. ! 492: SPRxPT{H,L}: Call decide_line(). ! 493: 970210 custom.c, X86.S: Do LORES_HACK for dual playfield screens. Plug memory ! 494: leak in custom_reset(). Fix pfield_draw_line() not to do so many ! 495: multiplications. Make line_changed a char array. In remember_ctable(), ! 496: remember comparison results also if negative. ! 497: In 8 and 16 bit graphics modes, use the high parts of the color values ! 498: to duplicate the actual values. This saves a lot of code in the ! 499: hdoubling routines. Add a special fill_line in the X86_ASSEMBLY case. ! 500: Check for glibc-2 and libpthread in configure. ! 501: options.h: In fuzzy_memset(), do rounding slightly more conservative. ! 502: Add tons of new keycodes to svga.c ! 503: In record_color_change(), also check if vertically outside DIW. ! 504: New variable hdiwstate, to represent the horizontal DIW state machine ! 505: (thanks Petter!) Handled in reset_decisions(), finish_decisions() and ! 506: decide_diw(). ! 507: 970209 Change ncurses.c not to do so many multiplications/divisions. Add bold ! 508: character support. Add color support. Make configure recognize ! 509: --without-svgalib and enable ncurses.c in that case. ! 510: 970208 X86.S, custom.c: Do LORES_HACK for EHB screens also. ! 511: New function write_log(); convert some fprintf(stderr, ...) calls. ! 512: 970207 Argh, Linux/i386/ELF check in configure got broken by latest sh-utils. ! 513: In disk.c, drive_reset(), clear nodskchange flag. ! 514: 970206 Sprite fix from Mathias Ortmann: _really_ get rid of SPR_vtop, and ! 515: replace all uses by SPR_stop. 1.1.1.2 root 516: 970204 Disk change fix from Mathias Ortmann. 517: 970203 New file ncurses.c, from Samuel Devulder. 518: Disabled Exec stuff completely. Now it isn't even compiled in anymore. 519: 970129 Changes from Samuel Devulder for Amiga and Christian Bauer for BeBox. 520: 970122 Reorder the set_planes_unaligned functions so that better code is 521: generated. Remove the or_planes_unaligned functions, add a parameter 522: do_or to the set_planes functions and rely on the compiler to optimize 523: the additional if away. 524: post_decide_line() can now turn DMA off early. 525: Make struct flag_struct 64 bits large for i386 systems, so we can use 526: long move insns without clobbering the X flag. 527: "make clean" should delete machdep/support.o. 528: Maybe we do need SPR_vtop after all - undo 970120 change. Instead, 529: comment out the code that clears the pos and ctl words at vsync time. 530: In xwin.c, restrict window height to 300 or 600 depending on linedbl 531: mode. 532: 970121 Get rid of SPCFLAG_BLIT, call do_blitter() directly. 533: In finish_decisions(), don't check for sprite draws in the border. 534: Reimplement the SMART_UPDATE define so that the memcmpy() overhead can 535: be avoided by not setting it (but this usually loses). 536: Detect 7 lores planes in BPLCON0() and change to 6 to avoid memory 537: clobbers. 538: In pfield_draw_line(), do memcpy linedoubling after handling the line 539: to be doubled, not when we see a LINE_AS_PREVIOUS. Get rid of prev_ypos 540: parameter. 541: Add special code for bpldelay1 == bpldelay2 to the UNALIGNED_PROFITABLE 542: code. 543: In pfield_init_linetoscr(), when delays 1 and 2 differ, clear the areas 544: which are covered only by half of the planes at the start and end of 545: the DDF area. 546: Replace FASTER_CPU and LINUX_SOUND_SLOW_MACHINE with M68K_SPEED. 547: Replace fast_unaligned_memset macros with fuzzy_memset; use this also 548: in pfield_init_linetoscr(). 549: Use real (PAL) vblank end in do_sprites(). 550: 970120 Mask out high byte in DDF{STRT,STOP} 551: Oops, forgot about long frames while calculating the bounds of all the 552: maxvpos*2-sized arrays. Increment them all by two. 553: Try to detect empty sprites before recording them for the drawing code, 554: but be careful not to hurt attached sprites. 555: From Paul Kienitz: hack for keyboard code in cia.c to work better with 556: newer Kickstarts; small cleanup in cpuopti.c. 557: Undo yesterday's change in copper_memory_cycles(), instead call 558: decide_line() each iteration and test whether copper_cycle_time == -1 559: to determine whether we're vertically in the DIW. 560: calculate_copper_cycle_time() could get astronomical plane counts due 561: to missing masking operation. 562: No need to put the copper to sleep for one memory cycle after a WAIT, 563: merge that with the two cycles for the next instruction. 564: Get rid of SPR_vtop, no longer needed (it was unnatural anyway) 565: 970119 Implemented alternate pfield_doline functions that access the apixels 566: array at unaligned addresses; conditional on UNALIGNED_PROFITABLE. 567: Move LORES_HACK from config.h to custom.c. 568: Fix loop exit test for pfield_linetoscr_hdouble_asm8(). Clear the 569: right parts of apixels in pfield_init_linetoscr() when LORES_HACK is 570: enabled. 571: Get rid of bordercol array: the decision-making code should handle 572: lines in the border correctly by setting line_changed. 573: Disable bitplane DMA if more than 4 hires bitplanes are set in BPLCON0. 574: Fix some more copper timing inaccuracies: used to test 575: thisline_decision.which without calling decide_line() before. 576: 970118 Now remember BPLCON1 changes during data fetch. New functions 577: decide_delay(), pfield_adjust_delay(); new fields in struct drawinfo 578: and new variables next_delay_change, delay_changes. 579: Forgot to set copstate to COP_morewait in one case in do_copper(). 580: Add a kludge that checks for copper position 0xDC and changes it to 581: 0xDE. 582: Restore equality test for vertical sprite positions. Disable sprite 583: DMA before the end of the vertical blank area. 584: Mask not only the positions, but also comparison values in 585: calc_copcomp_true(). 586: 970117 Change custom_bput to put the byte value in each half of the word that 587: is put. 588: 970116 disk.c: Set the gap between sector 11 and 0 to 380 words. Andromeda's 589: "Seven Seas" demo expects at least 320. Make the KILLEHB bit 590: conditional on AGA_CHIPSET. Decide BPLCON1 (scrolling delays) in 591: decide_diw(). Fix off-by-one errors in the very_broken_program case 592: of decide_plane(). Fix aspect calculation when horizontal resolutions 593: differ. Simplify copper horizontal comparison logic slightly. 594: Fix divide by zero errors when reading from empty floppies. 595: 970115 pfield_draw_line(): Check for frame_redraw_necessary also for border 596: lines. New global variable pfield_last_drawn_line, used to implement 597: clever Y centering. Make the KILLEHB test conditional on ECS_AGNUS. 598: Move joystick and sound initialization before gui startup. Adapt tui.c 599: so it understands the gfx_requested_* options. 600: We can't always avoid clearing pixdata.apixels if DIW is larger than 601: DDF. There may be sprites in the area outside DDF, but inside the DIW, 602: so we can't just adjust linetoscr_diw_{start,end} blindly in 603: pfield_init_linetoscr() [Sanity Arte demo]. 604: 970114 Bebox diffs from Christian Bauer. 605: Support for Symmetric Multi Penguins under Linux (start second thread 606: with clone and use some pipes for communication - rather simpleminded 607: for now). Rework do_flush_line() and do_flush_screen() so that X 608: libraries are only called from the first thread. 609: Eliminate valid field from struct decision (set which to -2 instead of 610: valid = 0) 611: Fix definition for gui_filename() in xdebug.c to use const char * for 612: the second parameter. Remove CRs from disk.c (now how did they get in 613: there??). Likewise for cpuopti.c. 614: 970113 When post_decide_line() detects mid-line DDF change, must adjust 615: bitplane pointers in decide_plane() also. Make plfstrt the earlier a 616: position in this case, and adjust bitplane pointers/modulos 617: accordingly. 618: current_hpos() isn't what GCC calls a constant function. 619: Replace line_drawinfo[current_change_set] with new variable 620: curr_drawinfo throughout. Likewise for new variables prev_drawinfo, 621: {curr,prev}_{color_{change,table}s,sprite_positions}; all initialized 622: in init_drawing_frame (). Turn line_data into a 2dim. array, do some 623: CSE/SR on line_data[lineno] in pfield_doline_{l,h}() and 624: decide_plane(). Make some custom registers unsigned int instead of 625: UWORD. 626: calc_copcomp_true(): Masking with 0xF000 isn't likely to give 0xC0000. 627: Comment out bplcon{3,4} from struct decision. 628: 970112 filesys.c, action_set_protect(): if __unix is defined, check whether 629: user wants to change directory protection, and if so, force rwx to be 630: the new protection. 631: Force sane window sizes in xwin.c, and set width/height from mode specs 632: in svga.c. 633: Implement LORES_HACK compile-time option. 634: Whee, there _are_ broken programs that enable bitplane DMA in the 635: middle of the data fetch area, draw half a picture on the first line 636: and the full picture on all subsequent lines. New function 637: post_decide_line(), called from BPLCON0() and DMACON() which tries to 638: detect this case and turns the decision from border to playfield if 639: necessary. 640: New arrays, sprvstart and sprvstop, calculated in SPRxPOS and SPRxCTL, 641: and used by do_sprites. Handle sprites with vstart == vstop correctly. 642: Sprite vpos comparisons are now done with <= , not ==. 643: _Now_ the X86-specific linetoscr routines do their masking correctly. 644: configure: If we have GCC, #define GCCCONSTFUNC as __attribute__ 645: ((const)) 646: 970111 Eliminate can_draw from struct decision. 647: Change vertical DIW code; use enum of two states (waiting for start and 648: for stop) which is updated in decide_line(). Lines during the wait for 649: stop phase are decided as border. No data is fetched outside the 650: vertical DIW. 651: Optimize copper memory cycle calculation a little: the new variable 652: copper_cycle_time is set to a time >= 0 if this time is constant 653: (i.e. 2). Calculated whenever DMA, BPLCON0, or DIW state changes. 654: blitter.c, genblitter.c, custom.c: For BLTBDAT, follow the HRM which 655: says that immediate data is shifted as soon as it is written. This 656: seems to be wrong for the A channel, though. Also, don't change prevb 657: during blitter loops if DMA B is off (Sanity Arte). Turn FAST_BLITTER 658: stuff into run-time option "-n", and eliminate the ancient blitting 659: code (former FAST_BLITTER == 0). 660: Big OOPS: Copper move checked copcon, but there was no COPCON function 661: so it was always zero -> copper-controlled blitter never worked. As a 662: speed optimization, recognize 00010000 copper commands and put the 663: copper to sleep until the blit is finished. 664: Slow down the blitter in decide_line() if bitplane DMA steals blitter/ 665: copper/CPU cycles (but this code is commented out for now). 666: 970110 New function pfield_init_linetoscr(). Move calculation of diw_end and 667: diw_start values there from x86-specific code. Also use DDF values to 668: determine where data in pixdata.apixels is valid. The x86-specific 669: linetoscr routines now only do the alignment masking (and they now do 670: it correctly, too). 671: Got rid of the display-related contents of struct draw_info, make 672: static variables and them initialize from pfield_draw_line() only when 673: necessary in function pfield_expand_dp_bplcon (). Get rid of the four 674: saved_* arrays, remember line_drawinfo instead now that it's smaller. 675: Color compare avoidance didn't work because color_src_match didn't get 676: set when a compare was successful. Fixed. 677: Reorder parts of the decision-making code so that less redundant checks 678: are performed. 679: Add clever x centering. Change "-O" option parameter format. 680: In md-i386-linux/support.c, memcmpy(), do memcmp() first, then switch 681: to a plain memcpy routine once we find the first difference. 682: Patches from Stefan Reinauer/Christian Schmitt for 683: xdebug.c/configure.in 684: New uae-ui.tk from Volker Zota. 685: Add --enable-profiling to configure.in. 686: Check for period==0 in AUDxPER() was accidentally commented out - 687: revert. 688: 970109 Some tweaks in X86.S, plus a new option X86_PPRO_OPT to use movzbl 689: instead of xorl/movb when possible. 690: Fix maxline calculation in finish_drawing_frame(). 691: Make next_lineno always a valid array index. Decrease minfirstline to 692: 21 (NTSC vblank end). New option -O to specify display parameters, 693: supersedes -d and -C which will be removed eventually. Differentiate 694: between line doubling and aspect correction. Put aspect correction code 695: in custom.c. 696: Remove some more unused stuff from custom.c. 697: Fix Makefile problems when cpuopti isn't used. 698: 970108 use_lores isn't initialized before custom_init(), setup lores_frame and 699: friends in customreset(). Optimize spixstate clearing. Optimize border 700: drawing with copper color changes (use fill_line instead of linetoscr) 701: Fix the sprite DMA logic, it now works with the Interference demo. 702: Silly bug: Sprite 7 never got displayed (introduced sometime last week) 703: Implement USER_PROGRAMS_BEHAVE for normal (non-compiler) CPU emulation. 704: Add most of Gustavo's last patch (new dir md-i386-dos) 705: 970107 Finish rewriting most of the drawing code in custom.c/X86.S. See 706: README.PROGRAMMERS and source for details. Improvements include better 707: copper precision, better interlace support, hopefully much less bugs 708: and not too many new ones. 709: Remove calc_adjustment() and gfxvidinfo.x_adjust; replace with code in 710: custom.c that looks at gfxvidinfo.follow_diwstop (new field) 711: Some operations (like EHB playfields) now have a higher penalty than 712: before, the assumption being that these are rare and the normal case 713: runs faster if it doesn't have to care too much about exceptions. 714: Fix sign mismatch bug in BPL1MOD() and BPL2MOD(). 715: 970104 Move x_ShowEA() from xdebug.c in newcpu.c, rename as ShowEA(). 716: 970102 Add check for XK_W to decode_es() in xwin.c. 717: New uae-ui.tk from Volker Zota. 718: 961218 Add a patch by Bernie Solomon to overcome a problem with K&R compilers. 719: Change X86.S in a way that may make it either faster or slower. 720: Fix ADF_EXT1. 721: 961217 #ifdef XK_dead_*, since Solaris doesn't have it. 722: 961202 Fixed joystick.h problem in configure. X11/DGA support from Kai 723: Kollmorgen. 724: 961117 Some fixes in svgancui.c. 725: 961112 Gustavo's latest patch, with GUS support for DOS by Michael Sontheimer. 726: Add menu browsing to tui.c/svgancui.c 727: 961107 Fix m68k_areg and m68k_dreg macros (put args in parentheses) 728: Initialize gfxvidinfo.maxlinetoscr in xwin.c (found by Sam Devulder) 729: 961104 svgancui.c tui_refresh() routine tweaked to work with the non-standard 730: ncurses that came with my new SuSE-Linux CD. 731: 961031 Added Christian Schmitt's xdebug.c (disabled for this release) 732: 961024 Module search function from Michael Krause. 733: 961019 Add Samuel Devulder's Amiga patches. 734: 961018 Don't use -lm on NeXTStep. 735: 961017 configure checks for -lforms. 736: 961016 Ian Stephenson's new NeXTwin.m. Make CLXDAT return 0 (no collisions) 737: transdisk and transrom patches from Rodney Hester. Don't warn about 738: 256K Kickstarts. Check diskfile sizes and try to determine whether it's 739: a normal or a HD diskfile. No HD drive identification yet (is it 740: different?) 741: 961013 Corrected lots of bugs in the return address stack. Fix some errors in 742: the compiler memory management. Use the "locked" flag for hash entries 743: differently, and don't enforce it on a cache flush. Compile JMP to a 744: constant address. 745: 961012 Remove regs from cache before sign extending them for ADDA, MOVEA and 746: similar things. Compile NOPs to nothing. Implement variable shifts/ 747: rotates. Most shifts clear the V flag: Handle this in the compiler by 748: some extra magic sequences after shifts or in the CC_AFTER_RO case in 749: flush_cc_cache(). 750: Implement a stack containing return addresses and their hash entries, 751: and compile JSR (to constant addresses)/BSR/RTS instructions inline. 752: 961011 compiler.c: Several bugs introduced in the last two days fixed. 753: New function compile_note_modify() which is used when an ea is 754: modified. This replaces calls to storeea with eaino_s == eaino_d. 755: Bah, the 386 doesn't set flags on a NOT. Use CC_TEST_REG again. 756: Do flag life analysis until no more changes are found. 757: Make sure all "data" parts of EAs are locked exclusively (esp. for 758: LEA, PEA) 759: 961010 compiler.c: Finish yesterdays changes. Get rid of reg/offset 760: bookkeeping in m68k_compile_block(), keep the information in struct 761: ea_info instead. Rewrite all instructions to use the new fetch and 762: store routines. 763: Don't force a byteorder conversion in sync_reg() if the reg doesn't need 764: to be written back. Don't do a SAHF or equivalent in compile_condbranch 765: if we are doing a BRA or BF. 766: Don't use CC_TEST_REG for NEG and NOT (this was inefficient for NOT and 767: wrong for NEG). 768: 961009 compiler.c: Two types of locks for registers; shared and exclusive. 769: Implement better EA fetching and storing routines. For pdi addressing 770: modes, lock the necessary registers shared before calling prepareea. 771: Unlock those registers again in generate_possible_exit(). 772: 961008 MOVEM instructions in the compiler to an absolute address could have 773: caused random memory corruption. 774: 961007 Spanish keyboard support for X by Ruben Martinez. Some configure fixes 775: (don't assume current dir is in path, don't assume ncurses.h exists if 776: libncurses does). 777: If we're calling 68k code from an emulator function, don't use compiled 778: code. 779: Add a compilation option USER_PROGRAMS_BEHAVE (for compiler). Make 780: compiler hash table larger. 781: 961004 Fix typo in configure.in. 782: Modify the compiler so it doesn't ever throw away code, unless it's 783: necessary for a cache flush. 784: Didn't quite squash the compiler flag bug yesterday. Try again. 785: In filesys.c, do_find(), add a parameter fallback that indicates that 786: the open should be retried with O_RDONLY if it failed with O_RDWR. 787: Use this in find_input(). This fixes problems with r/o files on r/w 788: volumes. 789: 961003 Play around with the x86 specific memory access functions. Problem: 790: __attribute__((regparam)) isn't reliable, and it seems that that's a 791: rather hard to fix bug in GCC. Add some alternatives to 792: md-i386-linux/memory.h; these aren't used yet though. 793: Huh, the compiler was completely wrong about the flag needs of 794: conditional instructions. I wonder how it could work at all... 795: Remove a and d arrays from struct regstruct; replace with array regs 796: with 16 elements. This allows better code for get_disp_ea() 797: 961002 BeBox diffs from Christian Bauer. Move all code from main() to new 798: function real_main(). 799: 961001 Use do_get_mem_*() functions for nextiword(), nextilong() and new 800: function nextibyte(). 801: 960930 genblitter optimizations: Don't generate expressions in genblitter, use 802: a second program called gengenblitter to generate a table of 803: expressions for genblitter to use. gengenblitter knows about a lot of 804: rules to simplify expressions. Some other tweaks to make GCC output 805: better assembly for blitfunc.c. 806: 960927 Turn off LED() in xwin.c (may fix SunOS joystick emulation problems) 807: Call XFlush() and XSync() when exiting. 808: Add some DOS patches. 809: Add hooks in filesys.c to support filesystem units in a GUI. Use them 810: in tui.c. Bugfixes in svgancui.c. Change the way tui_refresh() works. 811: New option "-A". 812: 960925 For read-only filesystems (CD...), use O_RDONLY in action_find_input. 813: 960923 Save options file even if rename fails. 814: Mirror address space every 16MB like we used to (got turned off by 815: accident). 816: Move some checks out of options.h into configure. Set up md-* 817: directories with machine-dependent stuff in them; configure creates 818: a link called machdep to the appropriate one. 819: 960918 Solaris sound update from Manfred Thole. 820: 960917 Add a timer.device replacement (buggy). 821: 960916 Tristan Cavelier's french keyboard patch. 822: Apply ReadTheSpecsBeforeYouWrite(tm) technology to AddPort(). 823: Implement RemPort(), GetCC(). 824: 960915 Tighten up some of the return values in Exec. 825: 960914 EXEC: Implement RemTask(), ObtainSemaphoreList() and 826: ReleaseSemaphoreList(). Set up more fields of the ExecBase properly 827: and Enqueue it in the library list. Make InitResident call AddLibrary 828: when appropriate (otherwise, intuition is never put into the library 829: list). Fix major braino in Obtain/ReleaseSemaphore() (tried to Enqueue 830: tasks into two lists). Make OpenLibrary() honor the version parameter. 831: 960913 EXEC: Idle task now runs in user mode (abuse 0xFF0D as second STOP 832: instruction). Make EXEC_IntTrap perform the RTE before trying to 833: schedule. 834: 960912 Solaris sound didn't compile. So much for making blind changes without 835: being able to test them. 836: 960911 As soon as you compile it under Solaris, it bombs... Now check that the 837: hardfile exists before determining the size in main.c. 838: execlib fixes: Set master DMA enable bit at startup, fix interrupt 839: code to survive an interrupt that occurs before the proper SetIntVector 840: call. Implement RawDoFmt(), CloseDevice(), CloseLibrary(), 841: FindResident(). 1.1 root 842: 960905 Lower 8 bits of POTGOR should be 0. 843: 960904 Implement MULU, MULS, ADDX and SUBX in compiler. 844: 960903 ncurses interface works. DOS people: please use the new portable tui.c 845: and turn dos-ui.c into a frontend for conio.h, similar to svgancui.c 846: In xui.c, unlink the temporary files ASAP. 847: Two new command-line options, "-o" and "-G". 848: Get rid of sz_unknown. 849: compiler.h, compiler.c: New files. 850: filesys.c, action_read(): Added a hack to test whether the first four 851: bytes read from a file a file contain 0x000003F3 (HUNK_HEADER), in 852: which case there's probably a LoadSeg() call going on and we ought to 853: flush the cache. Also, use the fact that memory is now linear. 854: 960902 Struggle a bit with dos-ui.c, rename it to tui.c (text-based ui), add 855: new file svgancui.c (ncurses ui) and try to make these two understand 856: each other. 857: 960829 New transdisk from Stefan Ropke (can write images) 858: Apply Patrick Hanevolds BeBox patches. 859: 96082x many changes to Exec. Still not booting (DMACON seems not to be set up 860: properly, and sometimes Signal is called with task==0). 861: 960821 Solaris sound from Manfred Thole. 862: 960820 In filesys.c, get_fileinfo(), return volume name for top-level 863: directory. 864: 960819 Reimplement WritePixel(). Layer locking is still missing. 865: 960818 Reverse meaning of -x flag for X11. More Exec code. 866: Several changes to the main CPU loop and the way call traps work. 867: 960817 Implement some simple Exec functions (Lists, AllocMem & friends) 868: 960816 filesys.c fixes from David Varley. 869: 960815 Implement graphics library region functions. 870: 960814 Modify memory layout: All memory is linear now; get_real_address() 871: returns a (UBYTE *). 872: 960810 Add Gustavo's latest DOS code. 873: In configure, include <sys/param.h> earlier for the sake of some *BSD. 874: Add three options for sound code (bits, frequency, buffer size). 875: Make -S option take a parameter; remove SPEED_UP_SIDMON_MODULES. 876: New version of transrom (return 0, duh). 877: 960805 Fixed the blitter line mode emulation (this time, really! I hope.) 878: Thanks to Fabio Ciucci for a detailed description of the correct 879: behaviour. 880: 960730 Spent the last three days trying to make the filesystem emulation 881: bootable by adding an expansion device for it. A fair bit of trial and 882: error, but now it works! Even the hardfile now works with Kick 1.3, but 883: you have to mount it manually after booting. 884: hardfile.c, filesys.c, expansion.c and autoconf.c now are an 885: entangled mess which badly needs to be cleaned up. 886: We can now mount more than one filesystem even with Kick 1.3: we 887: recognize them by param 2 of the startup packet, which has the same 888: value as the dn_Startup field of the devicenode. 889: Make Kickstart replacement work again (didn't like the CPU emulator 890: changes) 891: Include preliminary serial support from Stefan Reinauer. 892: 960728 Fixed the scancodes for <> and #' keys in svga.c 893: Apparently, CIA timer latches ought to be 0xFFFF after a reset 894: (prevents Eagleplayer from crashing occasionally). #ifdeffed out a 1.1.1.2 root 895: slightly weird call to INTREQ from RethinkICRB() 1.1 root 896: 960727 Sound code rewritten again. Now uses events (five new ones). All 897: modules seem to play correctly now. It's a bit slower, though. 898: AF sound should work again, patches from Marcus Sundberg. 899: 960723 ... and more CPU emulation bugs fixed by Herman. 900: Added uae.library from Tauno Taipaleenmaki, plus support files in the 901: "amiga" directory. 902: Added some files for the XFree86/OS2 port from Krister Bergman. 903: Reorganized all the directories. 904: 960717 Add latest patch from Herman. 905: More FAST_BLITTER options: 4 and 5. These finish the blit immediately. 906: 960713 Call XAutoRepeatXXX() only if we know we want to change the state. 907: 960709 Work around a few AIX bugs (ughhh... what a broken OS). New test for 908: sys/select.h. 909: In xui.c, don't try to communicate with a dead process. 910: 960704 More bugfixes from Herman. 911: Get rid of dummy_xlate(), use default_xlate() to abort with error. 912: In svga.c, set correct_aspect to 0 if using lores. 913: Change the Bcc exception 3 handling code a bit. 914: Add new program "cpuopti" that takes gcc-generated assembly files and 915: optimizes away unnecessary pushl/popl instructions on the x86. 916: 960701 68020 exception handling & various bugfixes from Herman ten Brugge. 917: In ersatz.c, use 0xFF0D instead of 0xF00D as trap opcode. 918: Do MMU "emulation" (no-op MMU instructions, probably many cases decoded 919: incorrectly). 920: 960627 New file LIESMICH, with minimal German instructions. Somebody want to 921: translate the docs to French, Spanish, Italian, all the Scandinavian 922: languages, Hebrew, Polish, Dutch, Russian, Welsh, Gaelic and something 923: [email protected] understands? (No offense meant - I'm sure there are 924: brillant minds using AOL. There must be.) 925: 960626 In zfile.c, make sure we delete the temporary file even if file 926: decompression fails. 927: Reimplemented sound support, this time following the HRM closely. Seems 928: to work fine most of the time, but occasionally loses drum beats in 929: TFMX modules. do_sound() is now unconditional, it calls 930: flush_sound_buffer(), which is system-dependent. This breaks everything 931: except Linux sound for now :( 932: Add Herman ten Brugge's 68020/68881 emulation code. 933: FreeBSD chokes if sys/mount.h is included without sys/types.h. Fix the 934: configure script. 935: 960622 More work on AGA code. 936: Removed 2-bit display routines from custom.c. Ian: please use dithering 937: code. 938: Make slowmem and chipmem sizes run-time configurable. 939: Mask out the high bits in BLT?PTH(). 940: Add exception 3 checks to Bcc/BSR instructions. Seems to be not quite 941: correct yet. 942: Completely rewrote the disk emulation. We now create a big track buffer 943: full of MFM data, used in a cyclic fashion by DSKBYTR() and friends. 944: The current position in the buffer is determined by the cycle counter. 945: DMA reads are now done in one piece. Two new event types: ev_diskblk 946: and ev_diskindex. 947: ARRGGHH! The RSI demo has _completely_ broken disk loading routines. 948: They start disk DMA on a block while the blitter is still working on 949: the same memory region. 950: In zfile.c, unlink() the temporary file directly after opening it so 951: it will be freed by the OS as soon as we close it (or crash... :) 952: 960621 Merge pfield_sprite_h() and pfield_sprite_l() into one function. 953: Split off new files blitter.c and blitter.h from custom.c. 954: Fixed null-pointer dereference in zfile.c when filename has no 955: extension. 956: Add new field maxline to gfxvidinfo that prevents writing past the 957: screen buffer if it has less lines than expected. 958: Modify the 256 color allocation routine to set nb_cols to the same 959: value first for r,g and b; allocate everything as usual and fill the 960: lost colors afterwards with those that have the greatest difference. 961: 960620 For some extremely weird reason, it is faster to simply call the 962: assembly-optimized pfield_linetoscr_full routines _twice_ to double the 963: line than calling the new (also assembly-optimized) 964: pfield_linetoscr_full_double routines, at least when writing directly 965: into the framebuffer. If someone has a good theory why, let me know 966: about it. 967: Drawing into memory is faster with the _double routines, but not 968: noticeably (about 1%). 969: Consequence: Removed the new pfield_linetoscr_full_double assembly 970: routines again. 971: Add a "--disable-gui" option to configure. 972: Add Samuel Devulder's dithering code. Provide support for mono and 973: 16 color X servers. 974: Put an assembly version of DitherLine() in X86.S. 975: New color mode (3) available, tells UAE to use 256 colors and dither 976: the image. This is meant for people who have only a 256 color X server 977: available, but it works with the SVGA version, too. It's much slower 978: than normal 256 color mode, though. 979: Use the color allocation algorithm from the dither code in 980: alloc_colors256(), too. 981: 960619 New files: zfile.c and zfile.h, from Samuel Devulder. These provide 982: transparent decompression of various compressed file formats. Enabled 983: by configure only for Unix systems. 984: Eliminate dont_want_aspect. New option "-C", sets correct_aspect. Make 985: video mode 3 640x480, video mode 4 800x600. Honor correct_aspect in 986: 320x400, 640x480 and 800x600 mode with SVGAlib. 987: Add fields maxlinetoscr and x_adjust to gfxvidinfo. 988: Rename pfield_slow_linetoscr() to pfield_do_linetoscr(). Use new fields 989: in gfxvidinfo to enable writing directly to the framebuffer in 990: resolutions with <800 horizontal pixels. 991: New function pfield_do_linetoscr_full(), called when sure that full 992: line update is being done. 993: Move some of the usage() information into some target_specific_usage() 994: functions, defined in the various system-specific files. 995: Support lower resolutions with LOW_BANDWIDTH, too. 996: memcpy() within screen memory is dog slow. Prevent some common cases: 997: 1. Use fill_line() to double a line in the border. 998: 2. Add a parameter to pfield_do_linetoscr_full() to indicate whether 999: the line has to be doubled. New functions 1000: pfield_linetoscr_*_double_slow() that simply do a memcpy(), plus 1001: optimized ones in X86.S that are much faster by avoiding the copy. 1002: Smart update code could get confused by lores modes when 1003: prev_max_diwstop changed from one frame to the next. New variable 1004: frame_redraw_necessary, which acts as a counter. It's initialized to 1005: 2 in interlace mode to handle that case properly, too. 1006: Move sprite priority checks into pfield_sprite_?(), move HAM 1007: calculations into new function decode_ham6() to simplify the various 1008: linetoscr functions. 1009: Fixed a bug that would cause sprites to get deformed in some cases 1010: when they overlapped (never seen it). 1011: 960618 New file: dos-snd.c, from Gustavo. 1012: 1013: 960617 Release 0.6.0 1014: 960617 Fix memory clobber in X86.S when diwfirstword==0. Eliminate double test 1015: for HAVE_SYS_MOUNT_H in sysdeps.h. 1016: 960616 Handle programs that don't wait for the blitter by finishing a pending 1017: blit as soon as a blitter register is written to (regardless of DMACON, 1018: to be safe). 1019: Call gui_led only if the LED changed. 1020: 960615 Fixed dual playfield sprite priorities. Optimized dual playfield code 1021: in X86.S. More work on AGA code. Get joystick status only in 1022: vsync_handler to speed things up. 1023: Make blitter fill more intelligent with table lookups instead of loop. 1024: 960614 DOS update from Gustavo. Pass real bitplane pointer to 1025: bpl_data_differs(), don't calculate it again. 1026: 960610 Fixed silly INTEL_FLAG_OPT bug: The new __asm__ expressions use 1027: regflags, which is of course _regflags on a.out... 1028: More BeBox fixes from Christian. 1029: Make the CIA bank bigger (A0..BF) and relax the CIA A/B selection 1030: checks to make broken software (Kingsoft's Emerald Mine, reportedly) 1031: happy. 1032: Default framerate is now 1. 1033: 960603 New BeBox code from Christian. Fix test for ELF in configure.in. 1034: 960529 genblitter.c: generate blitfunc as a function taking ULONGs and 1035: returning an ULONG. This makes custom.o about 4500 bytes smaller on the 1036: x86 by removing worthless size prefixes, and should increase 1037: performance (better for the cache, and the P6 reportedly doesn't like 1038: 16 bit instructions anyway). 1039: memory.c: Load Kickstart in one block and swap bytes after that if 1040: necessary (eliminates the need for the special bebox load routine) 1041: custom.c: Some preliminary work for AGA support. 1042: 960528 Saw a real awful piece of code that detects the right mouse button by 1043: reading a value from POT0DAT, counting up to 25, reading from POT0DAT 1044: again, and deciding the button is pressed if the value changed. Urgl! 1045: Added POT0DAT() in custom.c ... 1046: Gustavo's latest patches. 1047: 960525 Do index pulse handling in CIA_hsync_handler(). Make sure bit 12 in 1048: INTREQ gets set on an index pulse. Don't call DISK_Index() for now, 1049: since this breaks the Workbench. 1050: The CIA code should _probably_ not be resetting the bits in INTREQ. 1051: Disable this as an experiment, let's see what breaks. 1052: 960524 Z flag handling for ABCD/SBCD/ADDX/SUBX was wrong (must be clear if not 1053: zero, was set if zero). Some other flag bugs in these functions fixed. 1054: 960523 gfxlib.c update from Christian Schmitt. Some new Mac code from Ernesto, 1055: still not all of it, though. Italian keyboard from Alessandro Bissacco. 1056: 960522 Fix the CHK instruction. Implement middle mouse button. 1057: 960515 Fix some Nextstep problems in configure.in. 1058: 960513 New Makefile target "streifenfrei" to remove all output from configure. 1059: Use autoconf 2.7; 2.9 is buggy. 1060: 960512 Remove BIG_ALIGNMENT hack. Remove superfluous pfield_fetchdata() call 1061: in pfield_doline_slow_l() that resulted in garbage on the screen. 1062: Move blttbl array from custom.h to genblitter.c 1063: Use new lookup tables imm8_table and areg_byteinc in CPU emulation 1064: instead of ?: expressions. 1065: GCC appears to generate better code if the opcode is passed as ULONG to 1066: the CPU emulation functions instead of as UWORD. 1067: Modify some of the flag emulation __asm__ statements so that GCC uses 1068: less registers for them. 1069: 960510 Cast malloc() results to char *, for C++ compilers. 1070: 960509 Use test for GCC and __i386__ in options.h to decide whether to use 1071: intel flag optimization. 1072: Use test for wish4.0 to decide whether to use the GUI. 1073: 960507 New bebox.cpp from Christian. AF sound patches from Marcus Sundberg. 1074: 960505 Fix the configuration stuff so it works. Fix some bugs in gfxlib.c 1075: 960504 Use GNU autoconf scripts to generate Makefile and sysconfig.h. Add new 1076: files sysdeps.h that includes the right system header files. Remove 1077: amiga.h and Makefile. 1078: 960502 More Next code from Ian (new Uae.app directory, 2 bit drawing for 1079: custom.c). 1080: 960501 Allow the sound driver to set the frequency to a value that is slightly 1081: different from the requested one. 1082: 960430 Added AmigaOS port from Olaf Barthel. 1083: 960427 Fixed single playfield sprite priorities in X86.S. 1084: 960426 Added new NeXTwin.m from Ian. 1085: Turn off the blitter delay in line mode. 1086: Added a CPU optimization from Olivier Raoul: gencpu now reads a file 1087: "insncount" that can be generated by UAE during execution and generates 1088: specific functions for the most common opcodes. Not documented yet. 1089: 960414 Reimplemented the fast disk emulation in a more sane way. Also it's 1090: only done for reads now. (Plus, it no longer works :-/ Need to work 1091: some more on this). 1092: In blitter emulation, defer not only the setting of the bltfinish bit, 1093: but actually defer the whole blit for the number of cycles it will 1094: take. This makes programs the clear the screen while it is still being 1095: displayed look much better. 1096: Changed supervisor mode handling around a bit (was messy). 1097: New DOS code from Gustavo. 1098: 960412 Removed smart update method 2. Added Alessandro Bissacco's blitter 1099: optimization patch. 1100: Fixed some sprite problems: during hysnc, clear sprpos and sprctl, and 1101: don't do_sprites() in line 0. 1102: 960409 Be a little more intelligent about when to call pfield_linetoscr() from 1103: pfield_doline_slow(). It's only necessary if a color register changed. 1104: If it can be deferred to the end of the line, use the the _full 1105: variants. 1106: Some CIA TOD fixes. 1107: Better transdisk, accepts first/last track parameters. 1108: 960405 New function memcmpy(), inline assembler for the i386. Compares two 1109: memory blocks and copies them at the same time. Used in 1110: bpl_data_differs. 1111: 960404 French keyboard from Tristan Cavelier. Parallel port emulation from 1112: Stefan Reinauer. 1113: Turn bpl?pt and r_bpl?pt into arrays, simplify some code using them. 1114: 960401 Some parts of Ernesto's new Mac sources. 1115: 960331 filesys.c: Close filedescriptors in free_key(). get_path() sometimes 1116: read uninitialized bytes. 1117: Minor cleanups all over the place. 1118: unchain_mnn() leaves sibling intact, but clobbers next. customreset() 1119: didn't care about that and crashed. 1120: Use the __asm__("intel_flag_lookup") magic not only for DOS. 1121: Support 320x300 for X (without LOW_BANDWIDTH). 1122: Add new function fast_memcmp(), defined as memcmp if __i386__ is 1123: undefined, otherwise a slightly optimized inline assembly function. 1124: 960329 Some bug fixes in gencpu.c 1125: 960328 Stupid programs write odd playfield modulos into the hw registers... 1126: Eek! Sometimes, linedescr[] was indexed with a negative value... Add a 1127: vpos >= minfirstline check to pfield_may_need_update(). I really need 1128: to rewrite this in Oberon... 1129: Don't turn off SHM when LOW_BANDWIDTH is selected. 1130: Keep the nextpos and linepos variables from pfield_doline_slow_?() as 1131: globals and initialize them in pfield_may_need_udpate(). 1132: Modified alloc_colors256() some more. 1133: Try to make sprite DMA follow the Amiga DMA slots more closely by 1134: adding a currhp parameter to do_sprites() and calling it at the end 1135: of a scanline or in pfield_may_need_update(). 1136: 960327 Added Gustavo's latest DOS code, as far as possible. Modified X86.S to 1137: use a macro SYM() to create symbol names either with underscore or 1138: without. 1139: Fixed some very silly SVGAlib lores bugs. Move screen 8 pixels up in 1140: low resolution. 1141: Use diwstop instead of diwstart to caclulate the DIW for 320x200 modes. 1142: Reset it not only in calcdiw(), but also in init_frame(). 1143: Speed up 256 color allocation a little bit. 1144: 960326 New function flush_block() in xwin.c and svga.c. Called from 1145: do_flush_line() and (new function) do_flush_screen(). Modify struct 1146: vidbuf_description, new member maxblocklines that records the maximum 1147: number of scanlines that do_flush_line() should collect before calling 1148: flush_block(). If it is zero, then flush_line() is used as before. 1149: This makes the special case stuff for SHM unnecessary, so it's removed. 1150: Fixed a stupid bug in events code: Put ev_hsync in front of ev_copper, 1151: so that do_copper gets called with hpos == 0 instead of hpos == 227 at 1152: the beginning of the line. 1153: New function init_frame() that sets up some variables, called from 1154: customreset() and vsync_handler(). 1155: Move smart update code to pfield_doline() from pfield_doline_h() and 1156: ..._l(). Clean up these two with a macro DO_ONE_PLANE, removing 1157: duplicate code. 1158: Implement big blits and ECS chip ids. New configuration options 1159: ECS_AGNUS and ECS_DENISE. 1160: Implement MOVEP. 1161: 960325 Before calling pfield_may_need_update(), make sure the value that was 1162: written to a register actually differs from the previous one. 1163: New expansion code from Stefan Reinauer. 1164: Modify struct mem_notify_node to contain a pointer to a valid bit 1165: instead of the valid bit itself, so that the playfield code has to 1166: check only one flag to decide whether to draw the line (SU method 2) 1167: 960324 The chip_flags approach has several problems. A flag may cover an area 1168: in memory that spans two scanlines, or several scanlines may use the 1169: same area in memory. 1170: Provide two other, different methods for the smart update: 1171: 1. Save all the bitplane data for each line and compare the chipmem 1172: with the saved data to decide whether an update is necessary. 1173: 2. Use a chain of memory_notify_node structs instead of a single bit 1174: for flags. Each scanline owns a set of these structs and chains them 1175: into the right place, and the chipmem_?put routines walk the chains 1176: and set the modified bit for each element. 1177: Unfortunately, both methods are slower than the old one. Especially the 1178: first one has some advantages though: it speeds up programs that clear 1179: the screen each update and write the same contents back, and it 1180: can speed up double-buffering programs at full framerate, since it does 1181: not have to check whether the bitplane pointers have changed. 1182: Remember the first and last drawn line for each frame, and pass them to 1183: flush_screen. Use this in xwin.c for SHM. Modify SHM logic: if smart 1184: update is selected, call XShmPutImage() from flush_line() instead of 1185: from flush_screen(). But gather blocks of consecutive lines to avoid 1186: calling XShmPutImage() too often. 1187: 960323 "Smart update" method, based very loosely on Alessandro Bissacco's 1188: work, implemented: 1189: Add an array chip_flags that records any change made to specific words 1190: in chip memory. 1191: Move all the hardware registers relevant to playfield display into a 1192: new structure bplinfo. Remember the contents of this structure in 1193: struct line_description for every line on the screen. Avoid redrawing 1194: in pfield_doline if the screen memory has not been modified for the 1195: line to be drawn and if the information from the last frame matches 1196: that in the current frame. 1197: 960322 Duplicate all functions responsible for drawing (pfield_doline, 1198: pfield_doline_slow, pfield_sprite, pfield_*word_*res) and append _h 1199: or _l (ah, the golden C++ days, when we had templates... which never 1200: worked). Modify the *_l functions to support drawing in low resolution 1201: (i.e. 320x200). Change the options -d and -H to support selecting color 1202: mode and resolution, thereby getting rid of some SVGALIB_* options. 1203: Get rid of the old pfield_*word_*res functions. 1204: Collect information about the minimum diwstart value during the 1205: previous frame and use that in case 320x200 was selected to fit the 1206: image on the screen. 1207: Get rid of HAVE_JOYSTICK (breaks the "-J" option) 1208: 960321 Give up in op_illg() if opcode is 0x4e7b and the exception handler for 1209: it is NULL. In that case, it's a 68020 Kickstart. 1210: 960319 New Next code from Ian. SunOS target was still screwed (two CFLAGS). 1211: Turn -x option into a "hair cursor" option. Support multiple mounts, 1212: but warn if more than one is seen (still does not work with Kick 1.3). 1213: Integrated Samuel Devulder's new LOW_BANDWIDTH patch. 1214: 960318 Integrated the start of Markus Gietzen's gfx library replacement. 1215: Changed the interface between custom.c and the graphics code. There has 1216: to be a buffer holding the data of all the lines on the screen. For 1217: linear SVGAlib modes, this is the video memory. Eliminated -x option, 1218: prepare_line(), DrawPixel() and the X_?BIT_SCREEN options, replace with 1219: 3 versions of pfield_linetoscr for different datatypes. Implement 1220: proper handling of the borders above and below the DIW in custom.c 1221: instead of in flush_screen(). 1222: Move common code (color allocation) from all the graphics files to new 1223: file gfxutil.c. 1224: Swedish keyboard from Per Olofsson. 1225: 1226: 960315 Release 0.5.0 1227: 960315 Newest DOS port from Gustavo. New sgi-gcc target. 1228: 960314 Add -lXext to osf target. Use "rb" for fopen() in main.c 1229: 960310 Play a bit with the __asm__ constraints. Implement CHK. 1230: 960307 Fix some stupid Makefile errors. Call parse_cmdline() if no init file 1231: is found. 1232: First round of NextStep patches; new file NeXTwin.m 1233: Stupid bug in custom.c: The #define is called NO_FAST_DISK, not 1234: NO_FAST_FLOPPY. 1235: Fix one of the problems the Deform demo had with the blitter: The 1236: line texture wasn't rotated to the right position in blitter_init(). 1237: 960306 Use some black GCC __asm__ magic to calculate flags more quickly 1238: (config INTEL_FLAG_OPT) 1239: HAM was broken by pfield_linetoscr changes. Fixed. 1240: LOW_BANDWIDTH sometimes got confused when the display window changed. 1241: 960305 BCD instructions work well enough for Locomotive Basic on CPE. 1242: New function parse_cmdline_and_init_file() that reads ~/.uaerc or 1243: ./.uaerc and adds the options found in those files to those in argv[]. 1244: Patch from Denis Sablic to make disk image filenames runtime 1245: configurable. Extend it for the ROM filename. 1246: Remove some of the run-time configurable stuff from config.h. 1247: More X keysym fixes (I finally got a proper .Xmodmap ...) 1248: for SVGAlib: Delete key, and PgUp/PgDn as Amiga keys. 1249: The sound driver can now handle 22050 Hz and/or 8 bit samples. Both of 1250: these are the default with LINUX_SOUND_SLOW_MACHINE. 1251: Also use the SNDCTL_DSP_GETBLKSIZE ioctl and write the buffer when 1252: there is enough data. 1253: Abuse keybuf.c to provide a fake joystick emulation with the numeric 1254: pad (enable with -J) 1255: 960304 bebox.cpp from Christian. 1256: Rename pfield_linetoscr_full to pfield_linetoscr_full8. 1257: More x86 assembly: pfield_linetoscr_full16. 1258: 960303 SunOS target from Dirk Vangestel. Put some not-so-superfluous includes 1259: back in. Added the DOS specific patches to filesys.c. 1260: Started x86 assembly optimizations. New file X86.S, includes an 1261: optimized version of pfield_linetoscr (for 8 bit screens only). 1262: Don't use SA_RESTART if it isn't defined. 1263: prepare_line() wasn't called often enough (again...), leading to memory 1264: corruption and "hit the reset button" bugs when using SVGAlib. 1265: 960226 Get rid of bool, true and false in amiga.h and everywhere else. 1266: Copy yesterdays code to AF_SOUND code, too. 1267: Include first round of Christian Bauer's BeBox patches. Add AIX fix 1268: from Samuel Mackrill. 1269: Add #include <string.h> and #include <stdlib.h> in some more places. 1270: Modify gencpu.c and readcpu.c so that immediate types j and J (0..15 1271: and 1..8) can be merged. Replace HAVE_ONE_GIG... option with a new 1272: CPU_EMU_SIZE option that can be set to a value in the range 0..5, 1273: where 0 is minimum size and 5 is equivalent to HAVE_ONE_GIG... 1274: 960225 Remove multiplications in sound code, use a big lookup table. 1275: 960222 Go back to having only one memory bank table of type addrbank instead 1276: of several function pointer arrays. Eliminate the HAVE_BROKEN_SOFTWARE 1277: define by extending the memory bank table to 65536 entries. 1278: Remove remaining DUALCPU code. Allow BTST src,imm instructions in 1279: table68k. 1280: 960220 Back out filesys.c change from Stefan Reinauer: don't call V36 specific 1281: functions in expansion.library. 1282: Better fix for the filesys.c assign problems by Oliver Moehrke. 1283: Make new playfield code conditional on EXPERIMENTAL_SCREEN_UPDATE. 1284: Improve the 64bit variant of said code. Try to get alignment for 1285: apixels by putting it into a union with a long. 1286: Kill the child in gui_exit(). Make graphics_init() return a value and 1287: check it in main.c to see whether graphics were initialized. If not, 1288: call gui_exit() anyway. 1289: Use new 256 color allocation routine from svga.c in xwin.c, too. 1290: Make LOW_BANDWIDTH compile _and_ work (wow...). 1291: 960219 Fix bug in memory.c: When loading 256K Kickstart, copy 256K, not 128K. 1292: 960218 Finished the rest of the UI: reset, debug and quit buttons as well as 1293: drive LEDs. New target linux-gui; all others use dummy file nogui.c 1294: for now. 1295: 960217 The GUI now supports inserting and ejecting diskfiles and displays 1296: their names. Two pipes are used now, one for reading and one for 1297: writing. Properly wait for the process to start up. 1298: Use sigaction() instead of signal() in debug.c. 1299: More fixes for the new display routines: Need to do a final call to 1300: pfield_*word_*res with the data shifted right from the last fetched 1301: word. 1302: 960216 Copper & sprite bugfixes from Marco Nelissen. Better X keyboard support 1303: from Bruno Coste. 1304: Move my_strdup() from filesys.c to options.h 1305: New files xui.c, uae-ui (shell script) and uae-ui.tk (wish script). 1306: These create a GUI for the X version of the emulator. So far, the 1307: power LED works. 1308: 960215 Don't rely on SVGAlib headers defining any keycodes at all. 1309: Include Thorsten Frueauf's NetBSD patch. Apparently, the devname 1310: variable in hardfile.c caused a namespace collision, so rename it to 1311: uaedevname. Fastmem fixes, debugger help, and ConfigDev allocation in 1312: hardfile and filesys from Stefan Reinauer. 1313: xwin.c: Give the window a title. 1314: Half-implemented the DIVU.L, DIVS.L, MULU.L and MULS.L instructions. 1315: 960213 AF sound system support from Marcus Sundberg. Win95 keyboard support 1316: for SVGAlib from Thierry Lescot. Added most of Gustavo Goedert's MS-DOS 1317: port. 1318: When using the old pfield_*word_*res functions, the gen_pfield_tables() 1319: function was undefined. 1320: Hmmm, /dev/brain must have been unmounted when I wrote the new pfield_* 1321: functions. Now they make sure they access the apixels array only with 1322: addresses that are multiples of 16 bytes. 1323: 960212 Fix copy&paste bug in cia.c found by Marco Nelissen: Need to call 1324: RethinkICRB() instead of RethinkICRA() for CIA B timers. 1325: Added Stefan Reinauers autoconfig area/fastmem support. Added run-time 1326: options for use_slow_mem and use_fast_mem. 1327: Oops, the pfield_*word_*res() optimizations break completely on HPs and 1328: Sparcs. Now use this optimization only if we are using GCC 2.7. 1329: HPUX fixes in the Makefile. New target hpux-gcc. 1330: The code for clearing the areas above and below the DIW was trying to 1331: be a little too clever selecting the color. Just use the current 1332: background color. 1333: Added channel attachment to the sound code. Untested. 1334: 960211 Found some flag setting bugs in the rotate/shift instructions and in 1335: addx/subx (which I thought I had already fixed) by reimplementing 1336: DUALCPU mode to work with Ed's e68k. 1337: Argh! The copper is completely disabled during DDF in Hires 4 bitplane 1338: mode - so copper positions 0x30 and 0x34 are about 640 pixels apart. 1339: The Kickstart uses FF39FFFE to wait for the end of line 256 instead of 1340: FFDFFFFE as in all the other modes. This is implemented now, but 1341: probably not 100% correct. 1342: Added check whether SVGAlib doesn't support our mode. 1343: If using GCC >= 2.7, define __attribute__((aligned(16))) as 1344: BIG_ALIGNMENT in config.h. Use it for the apixels array to prevent 1345: potential problems on the Alpha. 1346: Tried to make the color selection routine produce better results in 256 1347: color mode. 1348: 960210 readdisk didn't work at all for large files - fixed. 1349: In pfield_doline(), clear the apixels array if playfield DMA is off. 1350: In SPRxCTL(), reset sprite mode when sprpos==sprctl==0 1351: Rewrite pfield_orword_hires() and friends to use lookup tables. No 1352: noticeable improvement on my machine, but might be different on other 1353: machines. Two versions of this code: one using 64bit longs on the Alpha. 1354: New targets linux-debug and linux-prof. 1355: Use 1MB slow mem. 1356: -funroll-loops is a little excessive. Remove it. 1357: Add support for linear addressing modes for SVGAlib version. Speedup 1358: is 20-30% on my old 486 VLB. Now, would someone please fix SVGAlib to 1359: support that for the S3-864 as well? 1360: Set SVGAlib keyboard mode to DONT_CATCH_CTRLC. 1361: Change custom.c, xwin.c and svga.c to keep track of the display window 1362: and background color and to clear the areas above and below the display 1363: window if necessary to remove garbage images from previous frames. 1364: Set the LOF bit in the Kickstart replacement init routine. Also 1365: initialize CIAs to Kick 1.3-like values. 1366: 960209 Some more -DHAVE_xxx_H options in the Makefile and filesys.c. DEC Alpha 1367: fixes for filesys.c from Ed and Marcus. HPUX fixes. 1368: New field in table68k for CPU type, parsed by readcpu and compared to 1369: CPU_LEVEL which is defined in config.h. New instructions MOVE2C, MOVEC2 1370: and CAS. Also a new field for priviledge level that is used by gencpu to 1371: generate tests for regs.s and Exception(8) calls if necessary. 1372: Move parsing of table68k into a new file build68k.c. Generate a file 1373: called cpudefs.c containing the information from table68k in 1374: machine-readable form. Change readcpu.c to use the array found in 1375: cpudefs.c. 1376: Don't generate the d8(An,Dn) addressing mode in-line. Generate a call to 1377: get_disp_ea(), which is an inline function in newcpu.h if UAE is 1378: configured for 68000 emulation; for 68020 emulation, it is defined in 1379: newcpu.c. 1380: Debugger could crash on illegals because there was no mnemonic defined 1381: in lookuptab[]. 1382: Return zero for SERDATR. 1383: 960207 It seems that the copper stops completely if an attempt to write to a 1384: specific register fails because of COPDANG. Apparently, the Kickstarts 1385: use this to stop the copper with a 0x00000000 longword. This leaves the 1386: question why they don't do 0xFFFFFFFE like everybody else. 1387: Enable 512K slow memory by default. 1388: Integrate Stefan Reinauers battclock patch that makes it work with 1389: newer Kickstarts. 1390: In cia.c, do the little index pulse hack even if dskdmaen==1, because 1391: DMA is only enabled when dskdmaen==2 (Helps the "Mad Decision" demo). 1392: Add solaris entry to Makefile (GCC, Openwin, -DHAVE_STATFS_H) 1393: Define HAVE_STRINGS_H for SGIs, change filesys.c accordingly. 1394: 960206 Build a smaller table instead of cputbl.c. Use readcpu and the smaller 1395: table to build the cpufunctbl array at run-time. 1396: Nuked the other half of the old CPU emulator. Reimplemented debugger to 1397: use the information generated by readcpu. 1398: Define HAVE_STATFS_H for SGIs in the Makefile, and use that as a test 1399: in filesys.c instead of #ifndef __linux. 1400: Hack filesys.c, get_path() to support the assign command. 1401: Add -fstrength-reduce and -funroll-loops in Makefile to make people 1402: nervous. 1403: Rewrite Sam Devulder's LOW_BANDWIDTH patch and add it to xwin.c. 1404: 960205 Forgot some PC-relative bit instructions in table68k. 1405: Nuked half of the old CPU emulator. 1406: Split gencpu.c into two parts, new one is called readcpu.c and just 1407: parses the table68k file. Link it to the main program. 1408: 1409: 960205 Release 0.4 1410: 960203 filesys.c, action_read(): Slightly more efficient code (translate Amiga 1411: address to real pointer). 1412: Moved some common code in the generate_* functions in gencpu.c to a 1413: separate function. 1414: 960202 Added an experimental fast disk option. Currently turned off by 1415: default (it's not such a big win). 1416: Attached sprite fixes (overlapping att. sprites looked bad, Katakis). 1417: Add sleep(1) before resetting the console to text mode when using 1418: SVGAlib: this might fix some screen corruption problems. 1419: Add sprite/playfield priority checking to the most important case 1420: (single playfield, no HAM). 1421: In filesys.c, do_find(): open() returns -1 on error, not zero. 1422: Return ERROR_OBJECT_WRONG_TYPE if do_find() is called for a directory 1423: (fixes Champions of Krynn harddisk installation). 1424: 960201 Don't abort if sound driver not present, just set produce_sound to 0. 1425: New files keybuf.c and keybuf.h to record keypresses in the right 1426: order and without losing any. In cia.c, force 15 scanlines between 1427: keypresses, just to be sure. 1428: unixfs.device _does_ work with Kick 1.3: just don't trust what Kick 1.3 1429: sends in the startup packet. For now, disable more than one mount per 1430: command line. 1431: Started integrating Ernesto's new Mac sources. 1432: Remove superfluous includes from some files. 1433: 960131 Added Ed's unixfs.device (great stuff). 1434: Adding ULONGs to pointers is a bad idea on the Alpha if the ULONG value 1435: really is signed. Add some casts to LONG in (pc_p + src) expressions 1436: in genpu.c. 1437: If DMACON is written and copper DMA is enabled, do a COPJMP1 at once. 1438: Helps the "Interference" demo. 1439: 960129 More SGI fixes from Ed. Bugfixes and transdisk improvements from Marcus 1440: Sundberg. 1441: Remove EXTRA_DEFINES from Makefile. Breaks some systems. 1442: Move common sprite code from pfield_doline() and pfield_doline_slow() 1443: to new function pfield_sprite(). The same sprite may appear more than 1444: once on the same line, so don't shift out the bits of sprdata[] and 1445: sprdatb[] while displaying it (Turrican I). 1446: In xwin.c and svga.c, barf if LINUX_SVGALIB doesn't match the file 1447: being compiled. 1448: Make all .o files depend on config.h in the Makefile. 1449: No need to exit if sound driver unavailable, but -S given. 1450: Small debugger fix: Missing space in output. 1451: Fix for the sprite logic: Specifically, use a state variable indicating 1452: whether the sprite has been restarted after a VSYNC. Fixes most 1453: Turrican problems. 1454: 960124 Added Denis Sablic's patch for sound run-time option. 1455: Added Ed Hanway's patch for better Makefile, X mouse cursor blanking 1456: and more SGI compilation fixes. 1457: 960123 Include options.h everywhere. 1458: Handle 8 bit GrayScale visuals like PseudoColor. 1459: Remove C++ leftovers from joystick code. 1460: 960122 When using the joystick driver, the button test must come after 1461: handle_events() in vsync_handler(). 1462: 960118 Removed all the remaining C++ comments. Changed all inline keywords to 1463: __inline__. Define __inline__ if not using gcc. 1464: Make proper prototypes for everything. Compile with maximum warnings + 1465: -ansi + -pedantic. 1466: Remove CIA_cycle(), obsolete. 1467: Reimplemented the STOP optimization in newcpu.c. Removed DualCPU 1468: support in CPU emulator. 1469: Real nasty bug in pfield_doline() fixed: sprxpos could be evaluated as 1470: negative, with not-so-amusing results. (Need to rewrite this in 1471: Oberon to get array bounds checking :-) 1472: 960117 Heroic effort: Rewrote the thing in C. This might help fix some 1473: problems with users being unable to compile it. 1474: Fixed a problem in hsync_handler(): Only call flush_line() for lines 1475: in the display window, i.e. when we did a prepare_line() before. 1476: Better code for relative branches: Don't use setpc(getpc()+x) calls, 1477: increment regs.pc_p instead. 1478: 960116 Reimplemented the function to load the Kickstart ROM. Use stdio instead 1479: of fstreams since this apparently does not work on the Mac. Detect 256K 1480: Kickstarts. Detect corrupt ROM images (calculate checksum). 1481: Added Ernesto Corvi's Mac port. Changed it around a bit, so it 1482: probably won't compile. 1483: 960115 Reinstate config.h options for X screen depth, so that DrawPixel() can 1484: be inlined in custom.cc for speed. xlinebuffer is now incremented in 1485: each call to DrawPixel() (for both X and SVGAlib) to get rid of some 1486: address calculations. 1487: 960114 Fixed X generic pixel drawing routine for SHM. 1488: Still trying to fix the harddisk emulation. 1489: uae.device no longer breaks the debugger (can step through uae.device 1490: functions now) 1491: Bugs affecting performance: SPCFLAG_STOP never got reset, and DSKLEN() 1492: would set SPCFLAG_DISK even if DMA was being turned off. 1493: Made slow memory a run-time option. 1494: Defer interrupts by one CPU instruction to give programs a chance to 1495: read INTREQR ("Seeing is Believing" and "Substance" demos) 1496: Added ScrollLock hack for X, too. 1497: 960113 SVGAlib version compiles again. Fixed SVGAlib mouse bug. 1498: Fixed SHM bug: Maximum scanline is 313, not 312. 1499: Sometimes, disk.cc missed a side change and would read the wrong data. 1500: Fixed. Apparently, this was the worst compatibility problem. 1501: Implemented trace mode. 1502: 960112 Changed layout of class amigamemory a little so that gcc can generate 1503: better addressing modes. 1504: Finally wrote functions in gencpu to generate MOVEMs. 1505: 960109 Integrated Ed Hanway's patches for better X support and run-time 1506: configuration of some options. 1507: Got rid of the direct VGA memory access. (Need to do this differently). 1508: Changed the method of drawing lines: custom.cc now tells the graphics 1509: code the line number and whether it needs to be doubleed before drawing 1510: it. 1511: Added Andre Beck's MIT-SHM patch. 1512: Remove warnings for newcpu.cc. 1513: 960108 Fixed exceptions in op_illg(): Need to decrement PC. 1514: 960107 Added an "uae.device" resident module at 0xF00000. This emulates a hard 1515: disk (fixed size 8MB for now). 1516: 960106 Moved some common code from pfield_doline() and pfield_doline_slow() to 1517: a separate function. This fixes a potential HAM bug (two static vars 1518: for the same value). 1519: Sound support for Linux. Works only with graphics off and the CPU 1520: slowed down. 1521: Better SVGAlib keyboard support. 1522: 960105 Added AvailMem(), AllocMem(), AllocAbs() and FreeMem() dummies. 1523: The Hardwired demo times the multiplication instructions and prints 1524: "This demo don't like Axel" if they are too fast. Apparently, Axel has 1525: a 68040. Added a WANT_SLOW_MULTIPLY option to config.h. 1526: Fixed the fast blitter emulation (seems to work now). 1527: 960104 Fixed all the ChangeLog entries from 95 that said 96 (oops??!) 1528: pfield_may_need_update() should check whether bitplane DMA is on. 1529: Added ersatz.cc and ersatz.h. The purpose of these files is to 1530: implement one or two Kickstart functions that are commonly called from 1531: bootblocks. This should help support some games and demos that only use 1532: the Kickstart as an initial track loader. So far, it's only good enough 1533: for one program. 1534: 951223 More intelligent event handling in the CPU emulator. Slightly faster. 1535: 951222 Optimize CPU emulation by inlining cctrue(). Also, the real PC no 1536: longer needs to be incremented each instruction. The real PC value 1537: now has to be fetched by m68k_getpc(). 1538: Added direct screen access for SVGAlib, but it didn't help much. I'll 1539: probably remove it again. 1540: The gencpu executable is 2M smaller if it allocates memory 1541: dynamically. 1542: 951216 custom_bput() enhanced a little. Now remembers the value that was 1543: written in the other half of the register. 1544: Apparently, the USEx bits of BLTCON0 are ignored in line draw mode. 1545: (Silents-Demo) 1546: 1547: 951212 Release 0.3 1548: 951212 Included Alessandro's battclock patch. 1549: Fixed mouse autocalibration for wrong-aspect screens. 1550: 951210 Joystick support for Linux. 1551: Better color matching for 256 color modes. 1552: Rewrote most of the memory management in plain C, mainly to avoid the 1553: various template bugs in some compilers, but also because gcc can't 1554: handle the regparm attribute for virtual functions yet. 1555: 951209 Added Alessandro's patches for automatic mouse calibration. 1556: Tried to optimize the blitter loop a bit. Doesn't work. 1557: 951205 Added Hannu's patches for diskfile write support. 1558: 951201 More portability fixes, especially for weird compilers that workstation 1559: vendors ship. 1560: 951125 More keys for X, some keyboard support for SVGAlib (slightly 1561: dangerous); beginnings of US keyboard support. 1562: 951124 256 color mode support for SVGAlib. FAST! 1563: 951123 Tiny tweak to central loops in playfield code results in much better 1564: assembly. Apparently, GCC does not feel too good about optimizing 1565: reference variables. 1566: 951113 Bug fix in the events code (nextevent must not be changed while events 1567: are being processed). 1568: 951112 The playfield can now be drawn with the right aspect (i.e., every line 1569: twice). Slower, but looks nicer and supports interlaced mode 1570: (flickerfree!). The first 29 lines (blanking interval) are omitted 1571: now to fit everything in 800x600. 1572: Oops, disk drive identification did not work. Fixed, all four drives 1573: appear now. 1574: Oops, CIA_reset() was there all the time but never got called. 1575: Optimized the planar->chunky conversion in pfield_doline() a little. 1576: This really is time critical. 1577: 951111 If colors change on a line, we might still be able to use the full 1578: line update, if the change occurred outside the DIW. Have to be a 1579: little careful, though. 1580: Playfield code now uses real pointers again, but makes sure it can 1581: read enough bytes to complete the current line without segfaulting. 1582: Oops, my "better estimate" (see below) was a mistake. Restored the 1583: original 4 hw cycles per instruction relation. This slows down the 1584: emulator while booting (more screen refreshs), but speeds up many 1585: demos that otherwise spend most of their time waiting for a specific 1586: raster position. 1587: Playfield modulos must be added immediately when DDF stops. (WOC demo) 1588: Portability fixes in disk.cc (null pointers). 1589: Implemented average frame rate calculation ('c' in the debugger). 1590: Debugger fixes. 1591: Sprite fixes (height was wrong, wrong priorities in fast update) 1592: Added an AutoConfig expansion RAM device. The OS seems to recognize 1593: it, but breaks sometime later (seems to be the same bug that kills 1594: the emulator when there's RAM at 0xC00000). 1595: SVGAlib now has mouse support, too. 1596: HAM mode implemented. 1597: 951110 Implemented fast complete line playfield update. Switches back if 1598: necessary. Fixed attached sprites bug. 1599: Copper wait no longer slows down the CPU emulation. (there were 1600: lots of new copper bugs because of this, but I hope I fixed all 1601: of them). 1602: Changed cia?t? from UWORD to ULONG, since there were overflows in 1603: the assertion (because of 65535+1 == 0). 1604: 951108 The DIVS remainder could have the wrong sign. 1605: New HAVE_BROKEN_SOFTWARE define in config.h that makes the emulator 1606: mask out the high byte of all addresses. 1607: Wrote genblitter.cc and replaced the awful code in blitter_blit() 1608: and blitter_line() with calls to the generated function. 1609: 951107 Implemented ?BCD. These don't really work yet. 1610: 1611: 951106 Release 0.2 1612: 951105 Fixed a bug in the new CIA timer code. 1613: Fixed flag settings for some cases of ADDX/SUBX 1614: 951104 Changed the main loop a bit - call all the *cycle() functions only if 1615: it is really necessary. I hope everything still works - at least it is 1616: twice as fast now :-D 1617: Improved mouse emulation - avoid overflows, permit "wraparound". 1618: Added debugger 'g' command. 1619: Removed some useless casts from the CPU emulator. 1620: Added a configuration option to prevent checks for odd addresses. Only 1621: very bad programs need this check. 1622: 951103 The sprite emulation sometimes did not work too well, especially with 1623: dual playfield mode. Hopefully fixed. 1624: 951102 The 10 cycle counter is more like a 5 cycle counter in this 1625: implementation. (Fine, that makes floppy loading even faster :-) 1626: Implemented mouse movement. Totally out of sync with the X pointer, 1627: but at least something. 1628: Found out about the XAutoRepeatOff() function. Real useful. 1629: DualCPU mode works again. 1630: Corrected flag settings for CMPA.W. 1631: Fixed DIV instructions: Don't change dest in case of overflow. 1632: 951031 The PC is now converted to a real pointer. This is safe (much safer 1633: than converting bitplane pointers, since the PC always has to be valid) 1634: and should speed things up a little. 1635: 951029 Some primitive event handling: 2 mouse buttons and 1 joystick button 1636: are emulated, as well as parts of the keyboard (only german mapping). 1637: Fixes: Delay values and sprite widths are always LoRes. Playfield 2 1638: uses colors 9..15. 1639: Implemented a frame rate configuration option that can speed up the 1640: emulation quite a bit. 1641: 951028 A-ha. The 68000 has one strange feature after all. MOVEM.W to Dn sign 1642: extends the value to a longword. 1643: Katakis expects that accessing odd addresses causes exception 3, so 1644: we have to emulate this. *Sigh* 1645: Do at least something with the index pulse bit. It's more or less a 1646: toggle now. 1647: Implemented sprites & dual playfields, both with small glitches. 1648: 951027 When LOF is set, the frame is one line longer. 1649: 951026 Implemented a preliminary diskfile type for special formats. Turrican 1650: boots up correctly (crashes if I want to play a game, though). 1651: Implemented EHB and added a few missing masking operations in the color 1652: handling. 1653: Fixed the absw addressing mode - need to sign extend here as well. 1654: 951025 Fixed another extremely stupid bug, this time in the playfield code. 1655: Each pixel was calculated four times... 1656: Increased the size of the apixels array - this was being overrun. 1657: 951024 Fixed an extremely stupid bug in flag settings for byte and word 1658: operations. 1659: The "sectors until gap" field must be in the range 1..11 instead of 1660: 0..10, or very bad things will happen if it is used to calculate a 1661: blit size. 1662: 951021 Don't use real pointers to fetch bitplane data - too many segfaults. 1663: Delay the copper after executing an instruction, or wait sequences like 1664: FFDF FFFE 0200 FFFE won't work. 1665: Some programs expect that the CPU is completely turned off if the 1666: blitter nasty bit is set. So be it. 1667: The RSI Megademo chokes when disk DMA fetches two syncs. Leave one out. 1668: The LOF bit wasn't set correctly. 1669: 951020 Blitter fixes: Load fill carry from FCI each line; keep the masked 1670: value of bltadat in bltolda 1671: Give the CPU twice as many "cycles" - this still is not even remotely 1672: correct, but a better estimate. 1673: 951017 Added SVGAlib support. Unfortunately, my graphics card isn't fully 1674: supported by the current SVGAlib version. 1675: 951015 More small optimizations to memory.h and custom.cc. 1676: Added code for 256 color screens. The type of screen has to be 1677: selected at compile time. 1678: 951014 Modified the memory management to be (hopefully) a little more 1679: efficient. 1680: Changed gencpu.cc to generate functions and a big function pointer 1681: array instead of the old case labels. The generated C++ files now 1682: compile a lot faster, and the code should be better as well. 1683: 951013 Implemented pseudo POTGOR to keep the RMB from being detected as 1684: pressed all the time. 1685: GenerateDecTab() generated TRAP incorrectly. 1686: Made some more instructions (MOVE.B A0,D0 etc) illegal in gencpu.cc. 1687: Fixed X colors. Fixed data fetching for HiRes screens. 1688: 951011 EXT.WL instructions set the flags. 1689: Implemented second CPU emulator, plus "DualCPU" option. The new CPU 1690: emulator is generated automatically from a file called table68k by 1691: a program called gencpu. 1692: 951002 Removed version information from the file headers. 1693: Removed some sillinesses in custom.cc. 1694: DSKLEN bug fixed (mask out 0xC000). 1695: Playfield code rewritten. Now supports horizontal scrolling. Implemented 1696: some primitive color support. 1697: 950927 Fixed predecrement/postincrement addressing with byte size for the 1698: stack pointer. 1699: 950926 Fixes to the disk code: Terminate disk DMA, flip disk side, read more 1700: than just two sectors during disk DMA, fix checksum calculation. 1701: Fixed copper comparison bugs. 1702: 1703: 950901 Release 0.1 1704: 950826 bugfix in GenerateDecTab(): LEA.W instructions were generated. 1705: 950312 New file disk.cc, for (guess what) disk support. Doesn't work yet. 1706: 950311 Multiplication instructions were generating 16 bit results. 1707: Sign extension was wrong in some places. 1708: Removed bugs in the blitter (one word width: ALWM & AFWM and line mode) 1709: The Kickstart logo looks perfect now. 1710: Playfield routine should check BPLCON0 instead of BLTCON0 1711: 950309 ASR D8,D0 is not a valid instruction. 1712: Bitplane pointers were not incremented. 1713: Copper comparison didn't work. COP2LC and bitplane pointers were written 1714: incorrectly. Fixed. 1715: Something that bears a striking resemblance to the familiar Kickstart 1716: logo now appears in my X window! 1717: 950306 ROR used to set the X flag. Bug fixes in GenerateDecTab. 1718: More bug fixes in several 68000 instructions. 1719: Improved blitter. ?????? KS1.3 doesn't seem to set BLTDMOD on a 1720: line draw. What is this?? 1721: Fixed stupid bugs in playfield code. 1722: 950305 fixed bugs in opcode generation and interrupt handling. Implemented 1723: STOP. Fixed flag settings: Result wasn't masked. Ooops!! 1724: ADDQ #imm,An doesn't set flags. 1725: One-shot timer mode didn't work. 1726: Implemented blitter, doesn't work. 1727: Some primitive and slow playfield support, only to make the things that 1728: hopefully will soon appear visible. 1729: 950304 CIA timers ought to work OK. Copper is emulated. 1730: Emulator loops infinitely when trying to initialize the console.device 1731: 950303 experiments with X, figured out how to open a window and draw pixels. 1732: No graphics emulation yet, though. 1733: 950301 Nearly all instructions work. 1734: Fixed supervisor mode stack. 1735: The memory manager now handles CIA chips. 1736: 950228 Bug fixes in 68000 code, exceptions and more instructions implemented 1737: Memory management extended to handle custom chips as well. 1738: Debugger improved. 1739: Kickstart passes memory & CPU type test, builds up some system 1740: structures. 1741: 950227 MC68000 & little debugger for tracing. It can execute the first couple 1742: of KS1.3 instructions, but doesn't get past the memory test. 1743: 950225 Work begun
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.