Annotation of uae/ChangeLog, revision 1.1.1.3

1.1.1.3 ! root        1: 960617 Fix memory clobber in X86.S when diwfirstword==0.
        !             2: 960616 Handle programs that don't wait for the blitter by finishing a pending
        !             3:        blit as soon as a blitter register is written to (regardless of DMACON,
        !             4:        to be safe).
        !             5:        Call gui_led only if the LED changed.
        !             6: 960615 Fixed dual playfield sprite priorities. Optimized dual playfield code
        !             7:        in X86.S. More work on AGA code. Get joystick status only in
        !             8:        vsync_handler to speed things up.
        !             9:        Make blitter fill more intelligent with table lookups instead of loop.
        !            10: 960614 DOS update from Gustavo. Pass real bitplane pointer to
        !            11:        bpl_data_differs(), don't calculate it again.
        !            12: 960610 Fixed silly INTEL_FLAG_OPT bug: The new __asm__ expressions use
        !            13:        regflags, which is of course _regflags on a.out...
        !            14:        More BeBox fixes from Christian.
        !            15:        Make the CIA bank bigger (A0..BF) and relax the CIA A/B selection
        !            16:        checks to make broken software (Kingsoft's Emerald Mine, reportedly)
        !            17:        happy.
        !            18:        Default framerate is now 1.
        !            19: 960603 New BeBox code from Christian. Fix test for ELF in configure.in.
        !            20: 960529 genblitter.c: generate blitfunc as a function taking ULONGs and
        !            21:        returning an ULONG. This makes custom.o about 4500 bytes smaller on the
        !            22:        x86 by removing worthless size prefixes, and should increase
        !            23:        performance (better for the cache, and the P6 reportedly doesn't like 
        !            24:        16 bit instructions anyway).
        !            25:        memory.c: Load Kickstart in one block and swap bytes after that if
        !            26:        necessary (eliminates the need for the special bebox load routine)
        !            27:        custom.c: Some preliminary work for AGA support.
        !            28: 960528 Saw a real awful piece of code that detects the right mouse button by
        !            29:        reading a value from POT0DAT, counting up to 25, reading from POT0DAT
        !            30:        again, and deciding the button is pressed if the value changed. Urgl!
        !            31:        Added POT0DAT() in custom.c ...
        !            32:        Gustavo's latest patches.
        !            33: 960525 Do index pulse handling in CIA_hsync_handler(). Make sure bit 12 in 
        !            34:        INTREQ gets set on an index pulse. Don't call DISK_Index() for now,
        !            35:        since this breaks the Workbench.
        !            36:        The CIA code should _probably_ not be resetting the bits in INTREQ.
        !            37:        Disable this as an experiment, let's see what breaks.
        !            38: 960524 Z flag handling for ABCD/SBCD/ADDX/SUBX was wrong (must be clear if not
        !            39:        zero, was set if zero). Some other flag bugs in these functions fixed.
        !            40: 960523 gfxlib.c update from Christian Schmitt. Some new Mac code from Ernesto,
        !            41:        still not all of it, though. Italian keyboard from Alessandro Bissacco.
        !            42: 960522 Fix the CHK instruction. Implement middle mouse button.
        !            43: 960515 Fix some Nextstep problems in configure.in.
        !            44: 960513 New Makefile target "streifenfrei" to remove all output from configure.
        !            45:        Use autoconf 2.7; 2.9 is buggy.
        !            46: 960512 Remove BIG_ALIGNMENT hack. Remove superfluous pfield_fetchdata() call
        !            47:        in pfield_doline_slow_l() that resulted in garbage on the screen.
        !            48:        Move blttbl array from custom.h to genblitter.c
        !            49:        Use new lookup tables imm8_table and areg_byteinc in CPU emulation
        !            50:        instead of ?: expressions.
        !            51:        GCC appears to generate better code if the opcode is passed as ULONG to
        !            52:        the CPU emulation functions instead of as UWORD.
        !            53:        Modify some of the flag emulation __asm__ statements so that GCC uses
        !            54:        less registers for them.
        !            55: 960510 Cast malloc() results to char *, for C++ compilers.
        !            56: 960509 Use test for GCC and __i386__ in options.h to decide whether to use
        !            57:        intel flag optimization.
        !            58:        Use test for wish4.0 to decide whether to use the GUI.
        !            59: 960507 New bebox.cpp from Christian. AF sound patches from Marcus Sundberg.
        !            60: 960505 Fix the configuration stuff so it works. Fix some bugs in gfxlib.c
        !            61: 960504 Use GNU autoconf scripts to generate Makefile and sysconfig.h. Add new
        !            62:        files sysdeps.h that includes the right system header files. Remove
        !            63:        amiga.h and Makefile.
        !            64: 960502 More Next code from Ian (new Uae.app directory, 2 bit drawing for
        !            65:        custom.c).
        !            66: 960501 Allow the sound driver to set the frequency to a value that is slightly
        !            67:        different from the requested one.
        !            68: 960430 Added AmigaOS port from Olaf Barthel.
        !            69: 960427 Fixed single playfield sprite priorities in X86.S.
        !            70: 960426 Added new NeXTwin.m from Ian.
        !            71:        Turn off the blitter delay in line mode.
        !            72:        Added a CPU optimization from Olivier Raoul: gencpu now reads a file
        !            73:        "insncount" that can be generated by UAE during execution and generates
        !            74:        specific functions for the most common opcodes. Not documented yet.
        !            75: 960414 Reimplemented the fast disk emulation in a more sane way. Also it's
        !            76:        only done for reads now. (Plus, it no longer works :-/ Need to work
        !            77:        some more on this).
        !            78:        In blitter emulation, defer not only the setting of the bltfinish bit,
        !            79:        but actually defer the whole blit for the number of cycles it will
        !            80:        take. This makes programs the clear the screen while it is still being
        !            81:        displayed look much better.
        !            82:        Changed supervisor mode handling around a bit (was messy).
        !            83:        New DOS code from Gustavo.
        !            84: 960412 Removed smart update method 2. Added Alessandro Bissacco's blitter
        !            85:        optimization patch.
        !            86:        Fixed some sprite problems: during hysnc, clear sprpos and sprctl, and
        !            87:        don't do_sprites() in line 0.
        !            88: 960409 Be a little more intelligent about when to call pfield_linetoscr() from
        !            89:        pfield_doline_slow(). It's only necessary if a color register changed.
        !            90:        If it can be deferred to the end of the line, use the the _full
        !            91:        variants.
        !            92:        Some CIA TOD fixes.
        !            93:        Better transdisk, accepts first/last track parameters.
        !            94: 960405 New function memcmpy(), inline assembler for the i386. Compares two
        !            95:        memory blocks and copies them at the same time. Used in
        !            96:        bpl_data_differs.
        !            97: 960404 French keyboard from Tristan Cavelier. Parallel port emulation from
        !            98:        Stefan Reinauer.
        !            99:        Turn bpl?pt and r_bpl?pt into arrays, simplify some code using them.
        !           100: 960401 Some parts of Ernesto's new Mac sources.
        !           101: 960331 filesys.c: Close filedescriptors in free_key(). get_path() sometimes
        !           102:        read uninitialized bytes.
        !           103:        Minor cleanups all over the place.
        !           104:        unchain_mnn() leaves sibling intact, but clobbers next. customreset()
        !           105:        didn't care about that and crashed.
        !           106:        Use the __asm__("intel_flag_lookup") magic not only for DOS.
        !           107:        Support 320x300 for X (without LOW_BANDWIDTH).
        !           108:        Add new function fast_memcmp(), defined as memcmp if __i386__ is
        !           109:        undefined, otherwise a slightly optimized inline assembly function.
        !           110: 960329 Some bug fixes in gencpu.c
        !           111: 960328 Stupid programs write odd playfield modulos into the hw registers...
        !           112:        Eek! Sometimes, linedescr[] was indexed with a negative value... Add a
        !           113:        vpos >= minfirstline check to pfield_may_need_update(). I really need
        !           114:        to rewrite this in Oberon...
        !           115:        Don't turn off SHM when LOW_BANDWIDTH is selected.
        !           116:        Keep the nextpos and linepos variables from pfield_doline_slow_?() as
        !           117:        globals and initialize them in pfield_may_need_udpate().
        !           118:        Modified alloc_colors256() some more.
        !           119:        Try to make sprite DMA follow the Amiga DMA slots more closely by
        !           120:        adding a currhp parameter to do_sprites() and calling it at the end
        !           121:        of a scanline or in pfield_may_need_update().
        !           122: 960327 Added Gustavo's latest DOS code, as far as possible. Modified X86.S to
        !           123:        use a macro SYM() to create symbol names either with underscore or
        !           124:        without.
        !           125:        Fixed some very silly SVGAlib lores bugs. Move screen 8 pixels up in
        !           126:        low resolution.
        !           127:        Use diwstop instead of diwstart to caclulate the DIW for 320x200 modes.
        !           128:        Reset it not only in calcdiw(), but also in init_frame().
        !           129:        Speed up 256 color allocation a little bit.
        !           130: 960326 New function flush_block() in xwin.c and svga.c. Called from
        !           131:        do_flush_line() and (new function) do_flush_screen(). Modify struct
        !           132:        vidbuf_description, new member maxblocklines that records the maximum
        !           133:        number of scanlines that do_flush_line() should collect before calling
        !           134:        flush_block(). If it is zero, then flush_line() is used as before.
        !           135:        This makes the special case stuff for SHM unnecessary, so it's removed.
        !           136:        Fixed a stupid bug in events code: Put ev_hsync in front of ev_copper,
        !           137:        so that do_copper gets called with hpos == 0 instead of hpos == 227 at
        !           138:        the beginning of the line.
        !           139:        New function init_frame() that sets up some variables, called from 
        !           140:        customreset() and vsync_handler().
        !           141:        Move smart update code to pfield_doline() from pfield_doline_h() and 
        !           142:        ..._l(). Clean up these two with a macro DO_ONE_PLANE, removing
        !           143:        duplicate code.
        !           144:        Implement big blits and ECS chip ids. New configuration options
        !           145:        ECS_AGNUS and ECS_DENISE.
        !           146:        Implement MOVEP.
        !           147: 960325 Before calling pfield_may_need_update(), make sure the value that was
        !           148:        written to a register actually differs from the previous one.
        !           149:        New expansion code from Stefan Reinauer.
        !           150:        Modify struct mem_notify_node to contain a pointer to a valid bit 
        !           151:        instead of the valid bit itself, so that the playfield code has to
        !           152:        check only one flag to decide whether to draw the line (SU method 2)
        !           153: 960324 The chip_flags approach has several problems. A flag may cover an area
        !           154:        in memory that spans two scanlines, or several scanlines may use the
        !           155:        same area in memory.
        !           156:        Provide two other, different methods for the smart update:
        !           157:        1. Save all the bitplane data for each line and compare the chipmem
        !           158:           with the saved data to decide whether an update is necessary.
        !           159:        2. Use a chain of memory_notify_node structs instead of a single bit
        !           160:           for flags. Each scanline owns a set of these structs and chains them
        !           161:          into the right place, and the chipmem_?put routines walk the chains
        !           162:          and set the modified bit for each element.
        !           163:        Unfortunately, both methods are slower than the old one. Especially the
        !           164:        first one has some advantages though: it speeds up programs that clear
        !           165:        the screen each update and write the same contents back, and it
        !           166:        can speed up double-buffering programs at full framerate, since it does
        !           167:        not have to check whether the bitplane pointers have changed.
        !           168:        Remember the first and last drawn line for each frame, and pass them to
        !           169:        flush_screen. Use this in xwin.c for SHM. Modify SHM logic: if smart
        !           170:        update is selected, call XShmPutImage() from flush_line() instead of 
        !           171:        from flush_screen(). But gather blocks of consecutive lines to avoid
        !           172:        calling XShmPutImage() too often.
        !           173: 960323 "Smart update" method, based very loosely on Alessandro Bissacco's
        !           174:        work, implemented:
        !           175:        Add an array chip_flags that records any change made to specific words
        !           176:        in chip memory.
        !           177:        Move all the hardware registers relevant to playfield display into a
        !           178:        new structure bplinfo. Remember the contents of this structure in
        !           179:        struct line_description for every line on the screen. Avoid redrawing
        !           180:        in pfield_doline if the screen memory has not been modified for the
        !           181:        line to be drawn and if the information from the last frame matches
        !           182:        that in the current frame.
        !           183: 960322 Duplicate all functions responsible for drawing (pfield_doline,
        !           184:        pfield_doline_slow, pfield_sprite, pfield_*word_*res) and append _h
        !           185:        or _l (ah, the golden C++ days, when we had templates... which never
        !           186:        worked). Modify the *_l functions to support drawing in low resolution
        !           187:        (i.e. 320x200). Change the options -d and -H to support selecting color
        !           188:        mode and resolution, thereby getting rid of some SVGALIB_* options.
        !           189:        Get rid of the old pfield_*word_*res functions.
        !           190:        Collect information about the minimum diwstart value during the
        !           191:        previous frame and use that in case 320x200 was selected to fit the
        !           192:        image on the screen.
        !           193:        Get rid of HAVE_JOYSTICK (breaks the "-J" option)
        !           194: 960321 Give up in op_illg() if opcode is 0x4e7b and the exception handler for
        !           195:        it is NULL. In that case, it's a 68020 Kickstart.
        !           196: 960319 New Next code from Ian. SunOS target was still screwed (two CFLAGS).
        !           197:        Turn -x option into a "hair cursor" option. Support multiple mounts,
        !           198:        but warn if more than one is seen (still does not work with Kick 1.3).
        !           199:        Integrated Samuel Devulder's new LOW_BANDWIDTH patch.
        !           200: 960318 Integrated the start of Markus Gietzen's gfx library replacement.
        !           201:        Changed the interface between custom.c and the graphics code. There has
        !           202:        to be a buffer holding the data of all the lines on the screen. For
        !           203:        linear SVGAlib modes, this is the video memory. Eliminated -x option,
        !           204:        prepare_line(), DrawPixel() and the X_?BIT_SCREEN options, replace with
        !           205:        3 versions of pfield_linetoscr for different datatypes. Implement
        !           206:        proper handling of the borders above and below the DIW in custom.c
        !           207:        instead of in flush_screen().
        !           208:        Move common code (color allocation) from all the graphics files to new 
        !           209:        file gfxutil.c.
        !           210:        Swedish keyboard from Per Olofsson.
        !           211: 
        !           212: 960315 Release 0.5.0
        !           213: 960315 Newest DOS port from Gustavo. New sgi-gcc target.
        !           214: 960314 Add -lXext to osf target. Use "rb" for fopen() in main.c
        !           215: 960310 Play a bit with the __asm__ constraints. Implement CHK.
        !           216: 960307 Fix some stupid Makefile errors. Call parse_cmdline() if no init file
        !           217:        is found.
        !           218:        First round of NextStep patches; new file NeXTwin.m
        !           219:        Stupid bug in custom.c: The #define is called NO_FAST_DISK, not
        !           220:        NO_FAST_FLOPPY.
        !           221:        Fix one of the problems the Deform demo had with the blitter: The
        !           222:        line texture wasn't rotated to the right position in blitter_init().
        !           223: 960306 Use some black GCC __asm__ magic to calculate flags more quickly
        !           224:        (config INTEL_FLAG_OPT)
        !           225:        HAM was broken by pfield_linetoscr changes. Fixed.
        !           226:        LOW_BANDWIDTH sometimes got confused when the display window changed.
        !           227: 960305 BCD instructions work well enough for Locomotive Basic on CPE.
        !           228:        New function parse_cmdline_and_init_file() that reads ~/.uaerc or
        !           229:        ./.uaerc and adds the options found in those files to those in argv[].
        !           230:        Patch from Denis Sablic to make disk image filenames runtime 
        !           231:        configurable. Extend it for the ROM filename.
        !           232:        Remove some of the run-time configurable stuff from config.h.
        !           233:        More X keysym fixes (I finally got a proper .Xmodmap ...)
        !           234:        for SVGAlib: Delete key, and PgUp/PgDn as Amiga keys.
        !           235:        The sound driver can now handle 22050 Hz and/or 8 bit samples. Both of
        !           236:        these are the default with LINUX_SOUND_SLOW_MACHINE.
        !           237:        Also use the SNDCTL_DSP_GETBLKSIZE ioctl and write the buffer when 
        !           238:        there is enough data.
        !           239:        Abuse keybuf.c to provide a fake joystick emulation with the numeric
        !           240:        pad (enable with -J)
        !           241: 960304 bebox.cpp from Christian.
        !           242:        Rename pfield_linetoscr_full to pfield_linetoscr_full8.
        !           243:        More x86 assembly: pfield_linetoscr_full16.
        !           244: 960303 SunOS target from Dirk Vangestel. Put some not-so-superfluous includes
        !           245:        back in. Added the DOS specific patches to filesys.c.
        !           246:        Started x86 assembly optimizations. New file X86.S, includes an
        !           247:        optimized version of pfield_linetoscr (for 8 bit screens only).
        !           248:        Don't use SA_RESTART if it isn't defined.
        !           249:        prepare_line() wasn't called often enough (again...), leading to memory
        !           250:        corruption and "hit the reset button" bugs when using SVGAlib.
        !           251: 960226 Get rid of bool, true and false in amiga.h and everywhere else.
        !           252:        Copy yesterdays code to AF_SOUND code, too.
        !           253:        Include first round of Christian Bauer's BeBox patches. Add AIX fix
        !           254:        from Samuel Mackrill.
        !           255:        Add #include <string.h> and #include <stdlib.h> in some more places.
        !           256:        Modify gencpu.c and readcpu.c so that immediate types j and J (0..15
        !           257:        and 1..8) can be merged. Replace HAVE_ONE_GIG... option with a new
        !           258:        CPU_EMU_SIZE option that can be set to a value in the range 0..5,
        !           259:        where 0 is minimum size and 5 is equivalent to HAVE_ONE_GIG...
        !           260: 960225 Remove multiplications in sound code, use a big lookup table.
        !           261: 960222 Go back to having only one memory bank table of type addrbank instead
        !           262:        of several function pointer arrays. Eliminate the HAVE_BROKEN_SOFTWARE 
        !           263:        define by extending the memory bank table to 65536 entries.
        !           264:        Remove remaining DUALCPU code. Allow BTST src,imm instructions in
        !           265:        table68k.
        !           266: 960220 Back out filesys.c change from Stefan Reinauer: don't call V36 specific
        !           267:        functions in expansion.library.
        !           268:        Better fix for the filesys.c assign problems by Oliver Moehrke.
        !           269:        Make new playfield code conditional on EXPERIMENTAL_SCREEN_UPDATE.
        !           270:        Improve the 64bit variant of said code. Try to get alignment for
        !           271:        apixels by putting it into a union with a long.
        !           272:        Kill the child in gui_exit(). Make graphics_init() return a value and
        !           273:        check it in main.c to see whether graphics were initialized. If not,
        !           274:        call gui_exit() anyway.
        !           275:        Use new 256 color allocation routine from svga.c in xwin.c, too.
        !           276:        Make LOW_BANDWIDTH compile _and_ work (wow...).
        !           277: 960219 Fix bug in memory.c: When loading 256K Kickstart, copy 256K, not 128K.
        !           278: 960218 Finished the rest of the UI: reset, debug and quit buttons as well as
        !           279:        drive LEDs. New target linux-gui; all others use dummy file nogui.c
        !           280:        for now.
        !           281: 960217 The GUI now supports inserting and ejecting diskfiles and displays
        !           282:        their names. Two pipes are used now, one for reading and one for
        !           283:        writing. Properly wait for the process to start up.
        !           284:        Use sigaction() instead of signal() in debug.c.
        !           285:        More fixes for the new display routines: Need to do a final call to
        !           286:        pfield_*word_*res with the data shifted right from the last fetched
        !           287:        word.
        !           288: 960216 Copper & sprite bugfixes from Marco Nelissen. Better X keyboard support
        !           289:        from Bruno Coste.
        !           290:        Move my_strdup() from filesys.c to options.h
        !           291:        New files xui.c, uae-ui (shell script) and uae-ui.tk (wish script).
        !           292:        These create a GUI for the X version of the emulator. So far, the
        !           293:        power LED works.
        !           294: 960215 Don't rely on SVGAlib headers defining any keycodes at all.
        !           295:        Include Thorsten Frueauf's NetBSD patch. Apparently, the devname
        !           296:        variable in hardfile.c caused a namespace collision, so rename it to
        !           297:        uaedevname. Fastmem fixes, debugger help, and ConfigDev allocation in
        !           298:        hardfile and filesys from Stefan Reinauer.
        !           299:        xwin.c: Give the window a title.
        !           300:        Half-implemented the DIVU.L, DIVS.L, MULU.L and MULS.L instructions.
        !           301: 960213 AF sound system support from Marcus Sundberg. Win95 keyboard support
        !           302:        for SVGAlib from Thierry Lescot. Added most of Gustavo Goedert's MS-DOS
        !           303:        port.
        !           304:        When using the old pfield_*word_*res functions, the gen_pfield_tables()
        !           305:        function was undefined.
        !           306:        Hmmm, /dev/brain must have been unmounted when I wrote the new pfield_*
        !           307:        functions. Now they make sure they access the apixels array only with
        !           308:        addresses that are multiples of 16 bytes.
        !           309: 960212 Fix copy&paste bug in cia.c found by Marco Nelissen: Need to call
        !           310:        RethinkICRB() instead of RethinkICRA() for CIA B timers.
        !           311:        Added Stefan Reinauers autoconfig area/fastmem support. Added run-time
        !           312:        options for use_slow_mem and use_fast_mem.
        !           313:        Oops, the pfield_*word_*res() optimizations break completely on HPs and
        !           314:        Sparcs. Now use this optimization only if we are using GCC 2.7.
        !           315:        HPUX fixes in the Makefile. New target hpux-gcc.
        !           316:        The code for clearing the areas above and below the DIW was trying to
        !           317:        be a little too clever selecting the color. Just use the current 
        !           318:        background color.
        !           319:        Added channel attachment to the sound code. Untested.
        !           320: 960211 Found some flag setting bugs in the rotate/shift instructions and in
        !           321:        addx/subx (which I thought I had already fixed) by reimplementing 
        !           322:        DUALCPU mode to work with Ed's e68k.
        !           323:        Argh! The copper is completely disabled during DDF in Hires 4 bitplane
        !           324:        mode - so copper positions 0x30 and 0x34 are about 640 pixels apart.
        !           325:        The Kickstart uses FF39FFFE to wait for the end of line 256 instead of
        !           326:        FFDFFFFE as in all the other modes. This is implemented now, but
        !           327:        probably not 100% correct.
        !           328:        Added check whether SVGAlib doesn't support our mode.
        !           329:        If using GCC >= 2.7, define __attribute__((aligned(16))) as
        !           330:        BIG_ALIGNMENT in config.h. Use it for the apixels array to prevent
        !           331:        potential problems on the Alpha.
        !           332:        Tried to make the color selection routine produce better results in 256
        !           333:        color mode.
        !           334: 960210 readdisk didn't work at all for large files - fixed.
        !           335:        In pfield_doline(), clear the apixels array if playfield DMA is off.
        !           336:        In SPRxCTL(), reset sprite mode when sprpos==sprctl==0
        !           337:        Rewrite pfield_orword_hires() and friends to use lookup tables. No
        !           338:        noticeable improvement on my machine, but might be different on other
        !           339:        machines. Two versions of this code: one using 64bit longs on the Alpha.
        !           340:        New targets linux-debug and linux-prof.
        !           341:        Use 1MB slow mem.
        !           342:        -funroll-loops is a little excessive. Remove it.
        !           343:        Add support for linear addressing modes for SVGAlib version. Speedup
        !           344:        is 20-30% on my old 486 VLB. Now, would someone please fix SVGAlib to
        !           345:        support that for the S3-864 as well?
        !           346:        Set SVGAlib keyboard mode to DONT_CATCH_CTRLC.
        !           347:        Change custom.c, xwin.c and svga.c to keep track of the display window 
        !           348:        and background color and to clear the areas above and below the display
        !           349:        window if necessary to remove garbage images from previous frames.
        !           350:        Set the LOF bit in the Kickstart replacement init routine. Also
        !           351:        initialize CIAs to Kick 1.3-like values.
        !           352: 960209 Some more -DHAVE_xxx_H options in the Makefile and filesys.c. DEC Alpha
        !           353:        fixes for filesys.c from Ed and Marcus. HPUX fixes.
        !           354:        New field in table68k for CPU type, parsed by readcpu and compared to
        !           355:        CPU_LEVEL which is defined in config.h. New instructions MOVE2C, MOVEC2
        !           356:        and CAS. Also a new field for priviledge level that is used by gencpu to
        !           357:        generate tests for regs.s and Exception(8) calls if necessary.
        !           358:        Move parsing of table68k into a new file build68k.c. Generate a file
        !           359:        called cpudefs.c containing the information from table68k in 
        !           360:        machine-readable form. Change readcpu.c to use the array found in 
        !           361:        cpudefs.c.
        !           362:        Don't generate the d8(An,Dn) addressing mode in-line. Generate a call to
        !           363:        get_disp_ea(), which is an inline function in newcpu.h if UAE is
        !           364:        configured for 68000 emulation; for 68020 emulation, it is defined in
        !           365:        newcpu.c.
        !           366:        Debugger could crash on illegals because there was no mnemonic defined
        !           367:        in lookuptab[].
        !           368:        Return zero for SERDATR.
        !           369: 960207 It seems that the copper stops completely if an attempt to write to a
        !           370:        specific register fails because of COPDANG. Apparently, the Kickstarts
        !           371:        use this to stop the copper with a 0x00000000 longword. This leaves the
        !           372:        question why they don't do 0xFFFFFFFE like everybody else.
        !           373:        Enable 512K slow memory by default.
        !           374:        Integrate Stefan Reinauers battclock patch that makes it work with
        !           375:        newer Kickstarts.
        !           376:        In cia.c, do the little index pulse hack even if dskdmaen==1, because
        !           377:        DMA is only enabled when dskdmaen==2 (Helps the "Mad Decision" demo).
        !           378:        Add solaris entry to Makefile (GCC, Openwin, -DHAVE_STATFS_H)
        !           379:        Define HAVE_STRINGS_H for SGIs, change filesys.c accordingly.
        !           380: 960206 Build a smaller table instead of cputbl.c. Use readcpu and the smaller
        !           381:        table to build the cpufunctbl array at run-time.
        !           382:        Nuked the other half of the old CPU emulator. Reimplemented debugger to
        !           383:        use the information generated by readcpu.
        !           384:        Define HAVE_STATFS_H for SGIs in the Makefile, and use that as a test
        !           385:        in filesys.c instead of #ifndef __linux.
        !           386:        Hack filesys.c, get_path() to support the assign command.
        !           387:        Add -fstrength-reduce and -funroll-loops in Makefile to make people
        !           388:        nervous.
        !           389:        Rewrite Sam Devulder's LOW_BANDWIDTH patch and add it to xwin.c.
        !           390: 960205 Forgot some PC-relative bit instructions in table68k.
        !           391:        Nuked half of the old CPU emulator.
        !           392:        Split gencpu.c into two parts, new one is called readcpu.c and just
        !           393:        parses the table68k file. Link it to the main program.
        !           394: 
        !           395: 960205 Release 0.4
1.1.1.2   root      396: 960203 filesys.c, action_read(): Slightly more efficient code (translate Amiga
                    397:        address to real pointer).
                    398:        Moved some common code in the generate_* functions in gencpu.c to a
                    399:        separate function.
                    400: 960202 Added an experimental fast disk option. Currently turned off by
                    401:        default (it's not such a big win).
                    402:        Attached sprite fixes (overlapping att. sprites looked bad, Katakis).
                    403:        Add sleep(1) before resetting the console to text mode when using
                    404:        SVGAlib: this might fix some screen corruption problems.
                    405:        Add sprite/playfield priority checking to the most important case
                    406:        (single playfield, no HAM).
                    407:        In filesys.c, do_find(): open() returns -1 on error, not zero.
                    408:        Return ERROR_OBJECT_WRONG_TYPE if do_find() is called for a directory
                    409:        (fixes Champions of Krynn harddisk installation).
                    410: 960201 Don't abort if sound driver not present, just set produce_sound to 0.
                    411:        New files keybuf.c and keybuf.h to record keypresses in the right
                    412:        order and without losing any. In cia.c, force 15 scanlines between
                    413:        keypresses, just to be sure.
                    414:        unixfs.device _does_ work with Kick 1.3: just don't trust what Kick 1.3 
                    415:        sends in the startup packet. For now, disable more than one mount per 
                    416:        command line.
                    417:        Started integrating Ernesto's new Mac sources.
                    418:        Remove superfluous includes from some files.
                    419: 960131 Added Ed's unixfs.device (great stuff).
                    420:        Adding ULONGs to pointers is a bad idea on the Alpha if the ULONG value
                    421:        really is signed. Add some casts to LONG in (pc_p + src) expressions
                    422:        in genpu.c.
                    423:        If DMACON is written and copper DMA is enabled, do a COPJMP1 at once.
                    424:        Helps the "Interference" demo.
                    425: 960129 More SGI fixes from Ed. Bugfixes and transdisk improvements from Marcus 
                    426:        Sundberg.
                    427:        Remove EXTRA_DEFINES from Makefile. Breaks some systems.
                    428:        Move common sprite code from pfield_doline() and pfield_doline_slow()
                    429:        to new function pfield_sprite(). The same sprite may appear more than
                    430:        once on the same line, so don't shift out the bits of sprdata[] and
                    431:        sprdatb[] while displaying it (Turrican I).
                    432:        In xwin.c and svga.c, barf if LINUX_SVGALIB doesn't match the file 
                    433:        being compiled.
                    434:        Make all .o files depend on config.h in the Makefile.
                    435:        No need to exit if sound driver unavailable, but -S given.
                    436:        Small debugger fix: Missing space in output.
                    437:        Fix for the sprite logic: Specifically, use a state variable indicating
                    438:        whether the sprite has been restarted after a VSYNC. Fixes most
                    439:        Turrican problems.
                    440: 960124 Added Denis Sablic's patch for sound run-time option.
                    441:        Added Ed Hanway's patch for better Makefile, X mouse cursor blanking 
                    442:        and more SGI compilation fixes.
                    443: 960123 Include options.h everywhere.
                    444:        Handle 8 bit GrayScale visuals like PseudoColor.
                    445:        Remove C++ leftovers from joystick code.
                    446: 960122 When using the joystick driver, the button test must come after
                    447:        handle_events() in vsync_handler().
                    448: 960118 Removed all the remaining C++ comments. Changed all inline keywords to
                    449:        __inline__. Define __inline__ if not using gcc.
                    450:        Make proper prototypes for everything. Compile with maximum warnings +
                    451:        -ansi + -pedantic.
                    452:        Remove CIA_cycle(), obsolete.
                    453:        Reimplemented the STOP optimization in newcpu.c. Removed DualCPU
                    454:        support in CPU emulator.
                    455:        Real nasty bug in pfield_doline() fixed: sprxpos could be evaluated as
                    456:        negative, with not-so-amusing results. (Need to rewrite this in 
                    457:        Oberon to get array bounds checking :-)       
                    458: 960117 Heroic effort: Rewrote the thing in C. This might help fix some
                    459:        problems with users being unable to compile it.
                    460:        Fixed a problem in hsync_handler(): Only call flush_line() for lines
                    461:        in the display window, i.e. when we did a prepare_line() before.
                    462:        Better code for relative branches: Don't use setpc(getpc()+x) calls,
                    463:        increment regs.pc_p instead.
                    464: 960116 Reimplemented the function to load the Kickstart ROM. Use stdio instead
                    465:        of fstreams since this apparently does not work on the Mac. Detect 256K
                    466:        Kickstarts. Detect corrupt ROM images (calculate checksum).
                    467:        Added Ernesto Corvi's Mac port. Changed it around a bit, so it
                    468:        probably won't compile.
                    469: 960115 Reinstate config.h options for X screen depth, so that DrawPixel() can
                    470:        be inlined in custom.cc for speed. xlinebuffer is now incremented in
                    471:        each call to DrawPixel() (for both X and SVGAlib) to get rid of some
                    472:        address calculations.
                    473: 960114 Fixed X generic pixel drawing routine for SHM.
                    474:        Still trying to fix the harddisk emulation.
                    475:        uae.device no longer breaks the debugger (can step through uae.device
                    476:        functions now)
                    477:        Bugs affecting performance: SPCFLAG_STOP never got reset, and DSKLEN() 
                    478:        would set SPCFLAG_DISK even if DMA was being turned off.
                    479:        Made slow memory a run-time option.
                    480:        Defer interrupts by one CPU instruction to give programs a chance to
                    481:        read INTREQR ("Seeing is Believing" and "Substance" demos)
                    482:        Added ScrollLock hack for X, too.
                    483: 960113 SVGAlib version compiles again. Fixed SVGAlib mouse bug.
                    484:        Fixed SHM bug: Maximum scanline is 313, not 312.
                    485:        Sometimes, disk.cc missed a side change and would read the wrong data.
                    486:        Fixed. Apparently, this was the worst compatibility problem.
                    487:        Implemented trace mode.
                    488: 960112 Changed layout of class amigamemory a little so that gcc can generate
                    489:        better addressing modes.
                    490:        Finally wrote functions in gencpu to generate MOVEMs.
                    491: 960109 Integrated Ed Hanway's patches for better X support and run-time
                    492:        configuration of some options. 
                    493:        Got rid of the direct VGA memory access. (Need to do this differently).
                    494:        Changed the method of drawing lines: custom.cc now tells the graphics
                    495:        code the line number and whether it needs to be doubleed before drawing
                    496:        it.
                    497:        Added Andre Beck's MIT-SHM patch.
                    498:        Remove warnings for newcpu.cc.
                    499: 960108 Fixed exceptions in op_illg(): Need to decrement PC.
                    500: 960107 Added an "uae.device" resident module at 0xF00000. This emulates a hard
                    501:        disk (fixed size 8MB for now).
                    502: 960106 Moved some common code from pfield_doline() and pfield_doline_slow() to
                    503:        a separate function. This fixes a potential HAM bug (two static vars
                    504:        for the same value).
                    505:        Sound support for Linux. Works only with graphics off and the CPU
                    506:        slowed down.
                    507:        Better SVGAlib keyboard support.
                    508: 960105 Added AvailMem(), AllocMem(), AllocAbs() and FreeMem() dummies.
                    509:        The Hardwired demo times the multiplication instructions and prints
                    510:        "This demo don't like Axel" if they are too fast. Apparently, Axel has
                    511:        a 68040. Added a WANT_SLOW_MULTIPLY option to config.h.
                    512:        Fixed the fast blitter emulation (seems to work now).
                    513: 960104 Fixed all the ChangeLog entries from 95 that said 96 (oops??!)
                    514:        pfield_may_need_update() should check whether bitplane DMA is on.
                    515:        Added ersatz.cc and ersatz.h. The purpose of these files is to
                    516:        implement one or two Kickstart functions that are commonly called from
                    517:        bootblocks. This should help support some games and demos that only use
                    518:        the Kickstart as an initial track loader. So far, it's only good enough
                    519:        for one program.
                    520: 951223 More intelligent event handling in the CPU emulator. Slightly faster.
                    521: 951222 Optimize CPU emulation by inlining cctrue(). Also, the real PC no
                    522:        longer needs to be incremented each instruction. The real PC value
                    523:        now has to be fetched by m68k_getpc().
                    524:        Added direct screen access for SVGAlib, but it didn't help much. I'll
                    525:        probably remove it again.
                    526:        The gencpu executable is 2M smaller if it allocates memory
                    527:        dynamically.
                    528: 951216 custom_bput() enhanced a little. Now remembers the value that was 
                    529:        written in the other half of the register.
                    530:        Apparently, the USEx bits of BLTCON0 are ignored in line draw mode.
                    531:        (Silents-Demo)
                    532: 
                    533: 951212 Release 0.3
                    534: 951212 Included Alessandro's battclock patch.
                    535:        Fixed mouse autocalibration for wrong-aspect screens.
                    536: 951210 Joystick support for Linux.
                    537:        Better color matching for 256 color modes.
                    538:        Rewrote most of the memory management in plain C, mainly to avoid the
                    539:        various template bugs in some compilers, but also because gcc can't
                    540:        handle the regparm attribute for virtual functions yet.
                    541: 951209 Added Alessandro's patches for automatic mouse calibration.
                    542:        Tried to optimize the blitter loop a bit. Doesn't work.
                    543: 951205 Added Hannu's patches for diskfile write support.
                    544: 951201 More portability fixes, especially for weird compilers that workstation
                    545:        vendors ship.
                    546: 951125 More keys for X, some keyboard support for SVGAlib (slightly 
                    547:        dangerous); beginnings of US keyboard support.
                    548: 951124 256 color mode support for SVGAlib. FAST!
                    549: 951123 Tiny tweak to central loops in playfield code results in much better
                    550:        assembly. Apparently, GCC does not feel too good about optimizing 
                    551:        reference variables.
                    552: 951113 Bug fix in the events code (nextevent must not be changed while events
                    553:        are being processed).
                    554: 951112 The playfield can now be drawn with the right aspect (i.e., every line
                    555:        twice). Slower, but looks nicer and supports interlaced mode
                    556:        (flickerfree!). The first 29 lines (blanking interval) are omitted
                    557:        now to fit everything in 800x600.
                    558:        Oops, disk drive identification did not work. Fixed, all four drives
                    559:        appear now.
                    560:        Oops, CIA_reset() was there all the time but never got called.
                    561:        Optimized the planar->chunky conversion in pfield_doline() a little.
                    562:        This really is time critical.
                    563: 951111 If colors change on a line, we might still be able to use the full 
                    564:        line update, if the change occurred outside the DIW. Have to be a 
                    565:        little careful, though.
                    566:        Playfield code now uses real pointers again, but makes sure it can
                    567:        read enough bytes to complete the current line without segfaulting.
                    568:        Oops, my "better estimate" (see below) was a mistake. Restored the
                    569:        original 4 hw cycles per instruction relation. This slows down the
                    570:        emulator while booting (more screen refreshs), but speeds up many
                    571:        demos that otherwise spend most of their time waiting for a specific
                    572:        raster position.
                    573:        Playfield modulos must be added immediately when DDF stops. (WOC demo)
                    574:        Portability fixes in disk.cc (null pointers).
                    575:        Implemented average frame rate calculation ('c' in the debugger).
                    576:        Debugger fixes.
                    577:        Sprite fixes (height was wrong, wrong priorities in fast update)
                    578:        Added an AutoConfig expansion RAM device. The OS seems to recognize
                    579:        it, but breaks sometime later (seems to be the same bug that kills
                    580:        the emulator when there's RAM at 0xC00000).
                    581:        SVGAlib now has mouse support, too.
                    582:        HAM mode implemented.
                    583: 951110 Implemented fast complete line playfield update. Switches back if
                    584:        necessary. Fixed attached sprites bug.
                    585:        Copper wait no longer slows down the CPU emulation. (there were
                    586:        lots of new copper bugs because of this, but I hope I fixed all
                    587:        of them).
                    588:        Changed cia?t? from UWORD to ULONG, since there were overflows in
                    589:        the assertion (because of 65535+1 == 0).
                    590: 951108 The DIVS remainder could have the wrong sign.
                    591:        New HAVE_BROKEN_SOFTWARE define in config.h that makes the emulator
                    592:        mask out the high byte of all addresses.
                    593:        Wrote genblitter.cc and replaced the awful code in blitter_blit()
                    594:        and blitter_line() with calls to the generated function.
                    595: 951107 Implemented ?BCD. These don't really work yet.
                    596: 
                    597: 951106 Release 0.2
                    598: 951105 Fixed a bug in the new CIA timer code.
                    599:        Fixed flag settings for some cases of ADDX/SUBX
                    600: 951104 Changed the main loop a bit - call all the *cycle() functions only if
                    601:        it is really necessary. I hope everything still works - at least it is
                    602:        twice as fast now :-D
                    603:        Improved mouse emulation - avoid overflows, permit "wraparound".
                    604:        Added debugger 'g' command.
                    605:        Removed some useless casts from the CPU emulator.
                    606:        Added a configuration option to prevent checks for odd addresses. Only
                    607:        very bad programs need this check.
                    608: 951103 The sprite emulation sometimes did not work too well, especially with
                    609:        dual playfield mode. Hopefully fixed.
                    610: 951102 The 10 cycle counter is more like a 5 cycle counter in this
                    611:        implementation. (Fine, that makes floppy loading even faster :-)
                    612:        Implemented mouse movement. Totally out of sync with the X pointer,
                    613:        but at least something.
                    614:        Found out about the XAutoRepeatOff() function. Real useful.
                    615:        DualCPU mode works again.
                    616:        Corrected flag settings for CMPA.W.
                    617:        Fixed DIV instructions: Don't change dest in case of overflow.
                    618: 951031 The PC is now converted to a real pointer. This is safe (much safer
                    619:        than converting bitplane pointers, since the PC always has to be valid)
                    620:        and should speed things up a little.
                    621: 951029 Some primitive event handling: 2 mouse buttons and 1 joystick button
                    622:        are emulated, as well as parts of the keyboard (only german mapping).
                    623:        Fixes: Delay values and sprite widths are always LoRes. Playfield 2
                    624:        uses colors 9..15.
                    625:        Implemented a frame rate configuration option that can speed up the
                    626:        emulation quite a bit.
                    627: 951028 A-ha. The 68000 has one strange feature after all. MOVEM.W to Dn sign 
                    628:        extends the value to a longword.
                    629:        Katakis expects that accessing odd addresses causes exception 3, so 
                    630:        we have to emulate this. *Sigh*
                    631:        Do at least something with the index pulse bit. It's more or less a 
                    632:        toggle now.
                    633:        Implemented sprites & dual playfields, both with small glitches.
                    634: 951027 When LOF is set, the frame is one line longer.
                    635: 951026 Implemented a preliminary diskfile type for special formats. Turrican
                    636:        boots up correctly (crashes if I want to play a game, though).
                    637:        Implemented EHB and added a few missing masking operations in the color
                    638:        handling.
                    639:        Fixed the absw addressing mode - need to sign extend here as well.
                    640: 951025 Fixed another extremely stupid bug, this time in the playfield code.
                    641:        Each pixel was calculated four times...
                    642:        Increased the size of the apixels array - this was being overrun.
                    643: 951024 Fixed an extremely stupid bug in flag settings for byte and word
                    644:        operations.
                    645:        The "sectors until gap" field must be in the range 1..11 instead of
                    646:        0..10, or very bad things will happen if it is used to calculate a
                    647:        blit size.
                    648: 951021 Don't use real pointers to fetch bitplane data - too many segfaults.
                    649:        Delay the copper after executing an instruction, or wait sequences like
                    650:        FFDF FFFE 0200 FFFE won't work.
                    651:        Some programs expect that the CPU is completely turned off if the
                    652:        blitter nasty bit is set. So be it.
                    653:        The RSI Megademo chokes when disk DMA fetches two syncs. Leave one out.
                    654:        The LOF bit wasn't set correctly.
                    655: 951020 Blitter fixes: Load fill carry from FCI each line; keep the masked
                    656:        value of bltadat in bltolda
                    657:        Give the CPU twice as many "cycles" - this still is not even remotely
                    658:        correct, but a better estimate.
                    659: 951017 Added SVGAlib support. Unfortunately, my graphics card isn't fully
                    660:        supported by the current SVGAlib version.
                    661: 951015 More small optimizations to memory.h and custom.cc.
                    662:        Added code for 256 color screens. The type of screen has to be
                    663:        selected at compile time.
                    664: 951014 Modified the memory management to be (hopefully) a little more
                    665:        efficient.
                    666:        Changed gencpu.cc to generate functions and a big function pointer
                    667:        array instead of the old case labels. The generated C++ files now
                    668:        compile a lot faster, and the code should be better as well.
                    669: 951013 Implemented pseudo POTGOR to keep the RMB from being detected as
                    670:        pressed all the time.
                    671:        GenerateDecTab() generated TRAP incorrectly.
                    672:        Made some more instructions (MOVE.B A0,D0 etc) illegal in gencpu.cc.
                    673:        Fixed X colors. Fixed data fetching for HiRes screens.
                    674: 951011 EXT.WL instructions set the flags.
                    675:        Implemented second CPU emulator, plus "DualCPU" option. The new CPU
                    676:        emulator is generated automatically from a file called table68k by
                    677:        a program called gencpu.
                    678: 951002 Removed version information from the file headers.
                    679:        Removed some sillinesses in custom.cc. 
                    680:        DSKLEN bug fixed (mask out 0xC000).
                    681:        Playfield code rewritten. Now supports horizontal scrolling. Implemented
                    682:        some primitive color support.
                    683: 950927 Fixed predecrement/postincrement addressing with byte size for the
                    684:        stack pointer.
                    685: 950926 Fixes to the disk code: Terminate disk DMA, flip disk side, read more
                    686:        than just two sectors during disk DMA, fix checksum calculation.
                    687:        Fixed copper comparison bugs.
                    688:        
                    689: 950901 Release 0.1
1.1       root      690: 950826 bugfix in GenerateDecTab(): LEA.W instructions were generated.
                    691: 950312 New file disk.cc, for (guess what) disk support. Doesn't work yet.
                    692: 950311 Multiplication instructions were generating 16 bit results.
                    693:        Sign extension was wrong in some places.
                    694:        Removed bugs in the blitter (one word width: ALWM & AFWM and line mode)
                    695:        The Kickstart logo looks perfect now.
                    696:        Playfield routine should check BPLCON0 instead of BLTCON0
                    697: 950309 ASR D8,D0 is not a valid instruction.
                    698:        Bitplane pointers were not incremented.
                    699:        Copper comparison didn't work. COP2LC and bitplane pointers were written
                    700:        incorrectly. Fixed.
                    701:        Something that bears a striking resemblance to the familiar Kickstart
                    702:        logo now appears in my X window!
                    703: 950306 ROR used to set the X flag. Bug fixes in GenerateDecTab.
                    704:        More bug fixes in several 68000 instructions.
                    705:        Improved blitter. ?????? KS1.3 doesn't seem to set BLTDMOD on a 
                    706:        line draw. What is this??
                    707:        Fixed stupid bugs in playfield code.
                    708: 950305 fixed bugs in opcode generation and interrupt handling. Implemented 
                    709:        STOP. Fixed flag settings: Result wasn't masked. Ooops!!
                    710:        ADDQ #imm,An doesn't set flags.
                    711:        One-shot timer mode didn't work.
                    712:        Implemented blitter, doesn't work.
                    713:        Some primitive and slow playfield support, only to make the things that
                    714:        hopefully will soon appear visible.
                    715: 950304 CIA timers ought to work OK. Copper is emulated.
                    716:        Emulator loops infinitely when trying to initialize the console.device
                    717: 950303 experiments with X, figured out how to open a window and draw pixels.
                    718:        No graphics emulation yet, though.
                    719: 950301 Nearly all instructions work.
                    720:        Fixed supervisor mode stack.
                    721:        The memory manager now handles CIA chips.
                    722: 950228 Bug fixes in 68000 code, exceptions and more instructions implemented
                    723:        Memory management extended to handle custom chips as well.
                    724:        Debugger improved.
                    725:        Kickstart passes memory & CPU type test, builds up some system
                    726:        structures.
                    727: 950227 MC68000 & little debugger for tracing. It can execute the first couple
                    728:        of KS1.3 instructions, but doesn't get past the memory test.
                    729: 950225 Work begun

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.