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