|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.