home *** CD-ROM | disk | FTP | other *** search
/ Acorn User 3 / AUCD3.iso / funland / emulators / amiga / uae / Docs / ChangeLog next >
Text File  |  1997-06-06  |  93KB  |  1,515 lines

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