|
|
1.1.1.2 ! root 1: 960203 filesys.c, action_read(): Slightly more efficient code (translate Amiga ! 2: address to real pointer). ! 3: Moved some common code in the generate_* functions in gencpu.c to a ! 4: separate function. ! 5: 960202 Added an experimental fast disk option. Currently turned off by ! 6: default (it's not such a big win). ! 7: Attached sprite fixes (overlapping att. sprites looked bad, Katakis). ! 8: Add sleep(1) before resetting the console to text mode when using ! 9: SVGAlib: this might fix some screen corruption problems. ! 10: Add sprite/playfield priority checking to the most important case ! 11: (single playfield, no HAM). ! 12: In filesys.c, do_find(): open() returns -1 on error, not zero. ! 13: Return ERROR_OBJECT_WRONG_TYPE if do_find() is called for a directory ! 14: (fixes Champions of Krynn harddisk installation). ! 15: 960201 Don't abort if sound driver not present, just set produce_sound to 0. ! 16: New files keybuf.c and keybuf.h to record keypresses in the right ! 17: order and without losing any. In cia.c, force 15 scanlines between ! 18: keypresses, just to be sure. ! 19: unixfs.device _does_ work with Kick 1.3: just don't trust what Kick 1.3 ! 20: sends in the startup packet. For now, disable more than one mount per ! 21: command line. ! 22: Started integrating Ernesto's new Mac sources. ! 23: Remove superfluous includes from some files. ! 24: 960131 Added Ed's unixfs.device (great stuff). ! 25: Adding ULONGs to pointers is a bad idea on the Alpha if the ULONG value ! 26: really is signed. Add some casts to LONG in (pc_p + src) expressions ! 27: in genpu.c. ! 28: If DMACON is written and copper DMA is enabled, do a COPJMP1 at once. ! 29: Helps the "Interference" demo. ! 30: 960129 More SGI fixes from Ed. Bugfixes and transdisk improvements from Marcus ! 31: Sundberg. ! 32: Remove EXTRA_DEFINES from Makefile. Breaks some systems. ! 33: Move common sprite code from pfield_doline() and pfield_doline_slow() ! 34: to new function pfield_sprite(). The same sprite may appear more than ! 35: once on the same line, so don't shift out the bits of sprdata[] and ! 36: sprdatb[] while displaying it (Turrican I). ! 37: In xwin.c and svga.c, barf if LINUX_SVGALIB doesn't match the file ! 38: being compiled. ! 39: Make all .o files depend on config.h in the Makefile. ! 40: No need to exit if sound driver unavailable, but -S given. ! 41: Small debugger fix: Missing space in output. ! 42: Fix for the sprite logic: Specifically, use a state variable indicating ! 43: whether the sprite has been restarted after a VSYNC. Fixes most ! 44: Turrican problems. ! 45: 960124 Added Denis Sablic's patch for sound run-time option. ! 46: Added Ed Hanway's patch for better Makefile, X mouse cursor blanking ! 47: and more SGI compilation fixes. ! 48: 960123 Include options.h everywhere. ! 49: Handle 8 bit GrayScale visuals like PseudoColor. ! 50: Remove C++ leftovers from joystick code. ! 51: 960122 When using the joystick driver, the button test must come after ! 52: handle_events() in vsync_handler(). ! 53: 960118 Removed all the remaining C++ comments. Changed all inline keywords to ! 54: __inline__. Define __inline__ if not using gcc. ! 55: Make proper prototypes for everything. Compile with maximum warnings + ! 56: -ansi + -pedantic. ! 57: Remove CIA_cycle(), obsolete. ! 58: Reimplemented the STOP optimization in newcpu.c. Removed DualCPU ! 59: support in CPU emulator. ! 60: Real nasty bug in pfield_doline() fixed: sprxpos could be evaluated as ! 61: negative, with not-so-amusing results. (Need to rewrite this in ! 62: Oberon to get array bounds checking :-) ! 63: 960117 Heroic effort: Rewrote the thing in C. This might help fix some ! 64: problems with users being unable to compile it. ! 65: Fixed a problem in hsync_handler(): Only call flush_line() for lines ! 66: in the display window, i.e. when we did a prepare_line() before. ! 67: Better code for relative branches: Don't use setpc(getpc()+x) calls, ! 68: increment regs.pc_p instead. ! 69: 960116 Reimplemented the function to load the Kickstart ROM. Use stdio instead ! 70: of fstreams since this apparently does not work on the Mac. Detect 256K ! 71: Kickstarts. Detect corrupt ROM images (calculate checksum). ! 72: Added Ernesto Corvi's Mac port. Changed it around a bit, so it ! 73: probably won't compile. ! 74: 960115 Reinstate config.h options for X screen depth, so that DrawPixel() can ! 75: be inlined in custom.cc for speed. xlinebuffer is now incremented in ! 76: each call to DrawPixel() (for both X and SVGAlib) to get rid of some ! 77: address calculations. ! 78: 960114 Fixed X generic pixel drawing routine for SHM. ! 79: Still trying to fix the harddisk emulation. ! 80: uae.device no longer breaks the debugger (can step through uae.device ! 81: functions now) ! 82: Bugs affecting performance: SPCFLAG_STOP never got reset, and DSKLEN() ! 83: would set SPCFLAG_DISK even if DMA was being turned off. ! 84: Made slow memory a run-time option. ! 85: Defer interrupts by one CPU instruction to give programs a chance to ! 86: read INTREQR ("Seeing is Believing" and "Substance" demos) ! 87: Added ScrollLock hack for X, too. ! 88: 960113 SVGAlib version compiles again. Fixed SVGAlib mouse bug. ! 89: Fixed SHM bug: Maximum scanline is 313, not 312. ! 90: Sometimes, disk.cc missed a side change and would read the wrong data. ! 91: Fixed. Apparently, this was the worst compatibility problem. ! 92: Implemented trace mode. ! 93: 960112 Changed layout of class amigamemory a little so that gcc can generate ! 94: better addressing modes. ! 95: Finally wrote functions in gencpu to generate MOVEMs. ! 96: 960109 Integrated Ed Hanway's patches for better X support and run-time ! 97: configuration of some options. ! 98: Got rid of the direct VGA memory access. (Need to do this differently). ! 99: Changed the method of drawing lines: custom.cc now tells the graphics ! 100: code the line number and whether it needs to be doubleed before drawing ! 101: it. ! 102: Added Andre Beck's MIT-SHM patch. ! 103: Remove warnings for newcpu.cc. ! 104: 960108 Fixed exceptions in op_illg(): Need to decrement PC. ! 105: 960107 Added an "uae.device" resident module at 0xF00000. This emulates a hard ! 106: disk (fixed size 8MB for now). ! 107: 960106 Moved some common code from pfield_doline() and pfield_doline_slow() to ! 108: a separate function. This fixes a potential HAM bug (two static vars ! 109: for the same value). ! 110: Sound support for Linux. Works only with graphics off and the CPU ! 111: slowed down. ! 112: Better SVGAlib keyboard support. ! 113: 960105 Added AvailMem(), AllocMem(), AllocAbs() and FreeMem() dummies. ! 114: The Hardwired demo times the multiplication instructions and prints ! 115: "This demo don't like Axel" if they are too fast. Apparently, Axel has ! 116: a 68040. Added a WANT_SLOW_MULTIPLY option to config.h. ! 117: Fixed the fast blitter emulation (seems to work now). ! 118: 960104 Fixed all the ChangeLog entries from 95 that said 96 (oops??!) ! 119: pfield_may_need_update() should check whether bitplane DMA is on. ! 120: Added ersatz.cc and ersatz.h. The purpose of these files is to ! 121: implement one or two Kickstart functions that are commonly called from ! 122: bootblocks. This should help support some games and demos that only use ! 123: the Kickstart as an initial track loader. So far, it's only good enough ! 124: for one program. ! 125: 951223 More intelligent event handling in the CPU emulator. Slightly faster. ! 126: 951222 Optimize CPU emulation by inlining cctrue(). Also, the real PC no ! 127: longer needs to be incremented each instruction. The real PC value ! 128: now has to be fetched by m68k_getpc(). ! 129: Added direct screen access for SVGAlib, but it didn't help much. I'll ! 130: probably remove it again. ! 131: The gencpu executable is 2M smaller if it allocates memory ! 132: dynamically. ! 133: 951216 custom_bput() enhanced a little. Now remembers the value that was ! 134: written in the other half of the register. ! 135: Apparently, the USEx bits of BLTCON0 are ignored in line draw mode. ! 136: (Silents-Demo) ! 137: ! 138: 951212 Release 0.3 ! 139: 951212 Included Alessandro's battclock patch. ! 140: Fixed mouse autocalibration for wrong-aspect screens. ! 141: 951210 Joystick support for Linux. ! 142: Better color matching for 256 color modes. ! 143: Rewrote most of the memory management in plain C, mainly to avoid the ! 144: various template bugs in some compilers, but also because gcc can't ! 145: handle the regparm attribute for virtual functions yet. ! 146: 951209 Added Alessandro's patches for automatic mouse calibration. ! 147: Tried to optimize the blitter loop a bit. Doesn't work. ! 148: 951205 Added Hannu's patches for diskfile write support. ! 149: 951201 More portability fixes, especially for weird compilers that workstation ! 150: vendors ship. ! 151: 951125 More keys for X, some keyboard support for SVGAlib (slightly ! 152: dangerous); beginnings of US keyboard support. ! 153: 951124 256 color mode support for SVGAlib. FAST! ! 154: 951123 Tiny tweak to central loops in playfield code results in much better ! 155: assembly. Apparently, GCC does not feel too good about optimizing ! 156: reference variables. ! 157: 951113 Bug fix in the events code (nextevent must not be changed while events ! 158: are being processed). ! 159: 951112 The playfield can now be drawn with the right aspect (i.e., every line ! 160: twice). Slower, but looks nicer and supports interlaced mode ! 161: (flickerfree!). The first 29 lines (blanking interval) are omitted ! 162: now to fit everything in 800x600. ! 163: Oops, disk drive identification did not work. Fixed, all four drives ! 164: appear now. ! 165: Oops, CIA_reset() was there all the time but never got called. ! 166: Optimized the planar->chunky conversion in pfield_doline() a little. ! 167: This really is time critical. ! 168: 951111 If colors change on a line, we might still be able to use the full ! 169: line update, if the change occurred outside the DIW. Have to be a ! 170: little careful, though. ! 171: Playfield code now uses real pointers again, but makes sure it can ! 172: read enough bytes to complete the current line without segfaulting. ! 173: Oops, my "better estimate" (see below) was a mistake. Restored the ! 174: original 4 hw cycles per instruction relation. This slows down the ! 175: emulator while booting (more screen refreshs), but speeds up many ! 176: demos that otherwise spend most of their time waiting for a specific ! 177: raster position. ! 178: Playfield modulos must be added immediately when DDF stops. (WOC demo) ! 179: Portability fixes in disk.cc (null pointers). ! 180: Implemented average frame rate calculation ('c' in the debugger). ! 181: Debugger fixes. ! 182: Sprite fixes (height was wrong, wrong priorities in fast update) ! 183: Added an AutoConfig expansion RAM device. The OS seems to recognize ! 184: it, but breaks sometime later (seems to be the same bug that kills ! 185: the emulator when there's RAM at 0xC00000). ! 186: SVGAlib now has mouse support, too. ! 187: HAM mode implemented. ! 188: 951110 Implemented fast complete line playfield update. Switches back if ! 189: necessary. Fixed attached sprites bug. ! 190: Copper wait no longer slows down the CPU emulation. (there were ! 191: lots of new copper bugs because of this, but I hope I fixed all ! 192: of them). ! 193: Changed cia?t? from UWORD to ULONG, since there were overflows in ! 194: the assertion (because of 65535+1 == 0). ! 195: 951108 The DIVS remainder could have the wrong sign. ! 196: New HAVE_BROKEN_SOFTWARE define in config.h that makes the emulator ! 197: mask out the high byte of all addresses. ! 198: Wrote genblitter.cc and replaced the awful code in blitter_blit() ! 199: and blitter_line() with calls to the generated function. ! 200: 951107 Implemented ?BCD. These don't really work yet. ! 201: ! 202: 951106 Release 0.2 ! 203: 951105 Fixed a bug in the new CIA timer code. ! 204: Fixed flag settings for some cases of ADDX/SUBX ! 205: 951104 Changed the main loop a bit - call all the *cycle() functions only if ! 206: it is really necessary. I hope everything still works - at least it is ! 207: twice as fast now :-D ! 208: Improved mouse emulation - avoid overflows, permit "wraparound". ! 209: Added debugger 'g' command. ! 210: Removed some useless casts from the CPU emulator. ! 211: Added a configuration option to prevent checks for odd addresses. Only ! 212: very bad programs need this check. ! 213: 951103 The sprite emulation sometimes did not work too well, especially with ! 214: dual playfield mode. Hopefully fixed. ! 215: 951102 The 10 cycle counter is more like a 5 cycle counter in this ! 216: implementation. (Fine, that makes floppy loading even faster :-) ! 217: Implemented mouse movement. Totally out of sync with the X pointer, ! 218: but at least something. ! 219: Found out about the XAutoRepeatOff() function. Real useful. ! 220: DualCPU mode works again. ! 221: Corrected flag settings for CMPA.W. ! 222: Fixed DIV instructions: Don't change dest in case of overflow. ! 223: 951031 The PC is now converted to a real pointer. This is safe (much safer ! 224: than converting bitplane pointers, since the PC always has to be valid) ! 225: and should speed things up a little. ! 226: 951029 Some primitive event handling: 2 mouse buttons and 1 joystick button ! 227: are emulated, as well as parts of the keyboard (only german mapping). ! 228: Fixes: Delay values and sprite widths are always LoRes. Playfield 2 ! 229: uses colors 9..15. ! 230: Implemented a frame rate configuration option that can speed up the ! 231: emulation quite a bit. ! 232: 951028 A-ha. The 68000 has one strange feature after all. MOVEM.W to Dn sign ! 233: extends the value to a longword. ! 234: Katakis expects that accessing odd addresses causes exception 3, so ! 235: we have to emulate this. *Sigh* ! 236: Do at least something with the index pulse bit. It's more or less a ! 237: toggle now. ! 238: Implemented sprites & dual playfields, both with small glitches. ! 239: 951027 When LOF is set, the frame is one line longer. ! 240: 951026 Implemented a preliminary diskfile type for special formats. Turrican ! 241: boots up correctly (crashes if I want to play a game, though). ! 242: Implemented EHB and added a few missing masking operations in the color ! 243: handling. ! 244: Fixed the absw addressing mode - need to sign extend here as well. ! 245: 951025 Fixed another extremely stupid bug, this time in the playfield code. ! 246: Each pixel was calculated four times... ! 247: Increased the size of the apixels array - this was being overrun. ! 248: 951024 Fixed an extremely stupid bug in flag settings for byte and word ! 249: operations. ! 250: The "sectors until gap" field must be in the range 1..11 instead of ! 251: 0..10, or very bad things will happen if it is used to calculate a ! 252: blit size. ! 253: 951021 Don't use real pointers to fetch bitplane data - too many segfaults. ! 254: Delay the copper after executing an instruction, or wait sequences like ! 255: FFDF FFFE 0200 FFFE won't work. ! 256: Some programs expect that the CPU is completely turned off if the ! 257: blitter nasty bit is set. So be it. ! 258: The RSI Megademo chokes when disk DMA fetches two syncs. Leave one out. ! 259: The LOF bit wasn't set correctly. ! 260: 951020 Blitter fixes: Load fill carry from FCI each line; keep the masked ! 261: value of bltadat in bltolda ! 262: Give the CPU twice as many "cycles" - this still is not even remotely ! 263: correct, but a better estimate. ! 264: 951017 Added SVGAlib support. Unfortunately, my graphics card isn't fully ! 265: supported by the current SVGAlib version. ! 266: 951015 More small optimizations to memory.h and custom.cc. ! 267: Added code for 256 color screens. The type of screen has to be ! 268: selected at compile time. ! 269: 951014 Modified the memory management to be (hopefully) a little more ! 270: efficient. ! 271: Changed gencpu.cc to generate functions and a big function pointer ! 272: array instead of the old case labels. The generated C++ files now ! 273: compile a lot faster, and the code should be better as well. ! 274: 951013 Implemented pseudo POTGOR to keep the RMB from being detected as ! 275: pressed all the time. ! 276: GenerateDecTab() generated TRAP incorrectly. ! 277: Made some more instructions (MOVE.B A0,D0 etc) illegal in gencpu.cc. ! 278: Fixed X colors. Fixed data fetching for HiRes screens. ! 279: 951011 EXT.WL instructions set the flags. ! 280: Implemented second CPU emulator, plus "DualCPU" option. The new CPU ! 281: emulator is generated automatically from a file called table68k by ! 282: a program called gencpu. ! 283: 951002 Removed version information from the file headers. ! 284: Removed some sillinesses in custom.cc. ! 285: DSKLEN bug fixed (mask out 0xC000). ! 286: Playfield code rewritten. Now supports horizontal scrolling. Implemented ! 287: some primitive color support. ! 288: 950927 Fixed predecrement/postincrement addressing with byte size for the ! 289: stack pointer. ! 290: 950926 Fixes to the disk code: Terminate disk DMA, flip disk side, read more ! 291: than just two sectors during disk DMA, fix checksum calculation. ! 292: Fixed copper comparison bugs. ! 293: ! 294: 950901 Release 0.1 1.1 root 295: 950826 bugfix in GenerateDecTab(): LEA.W instructions were generated. 296: 950312 New file disk.cc, for (guess what) disk support. Doesn't work yet. 297: 950311 Multiplication instructions were generating 16 bit results. 298: Sign extension was wrong in some places. 299: Removed bugs in the blitter (one word width: ALWM & AFWM and line mode) 300: The Kickstart logo looks perfect now. 301: Playfield routine should check BPLCON0 instead of BLTCON0 302: 950309 ASR D8,D0 is not a valid instruction. 303: Bitplane pointers were not incremented. 304: Copper comparison didn't work. COP2LC and bitplane pointers were written 305: incorrectly. Fixed. 306: Something that bears a striking resemblance to the familiar Kickstart 307: logo now appears in my X window! 308: 950306 ROR used to set the X flag. Bug fixes in GenerateDecTab. 309: More bug fixes in several 68000 instructions. 310: Improved blitter. ?????? KS1.3 doesn't seem to set BLTDMOD on a 311: line draw. What is this?? 312: Fixed stupid bugs in playfield code. 313: 950305 fixed bugs in opcode generation and interrupt handling. Implemented 314: STOP. Fixed flag settings: Result wasn't masked. Ooops!! 315: ADDQ #imm,An doesn't set flags. 316: One-shot timer mode didn't work. 317: Implemented blitter, doesn't work. 318: Some primitive and slow playfield support, only to make the things that 319: hopefully will soon appear visible. 320: 950304 CIA timers ought to work OK. Copper is emulated. 321: Emulator loops infinitely when trying to initialize the console.device 322: 950303 experiments with X, figured out how to open a window and draw pixels. 323: No graphics emulation yet, though. 324: 950301 Nearly all instructions work. 325: Fixed supervisor mode stack. 326: The memory manager now handles CIA chips. 327: 950228 Bug fixes in 68000 code, exceptions and more instructions implemented 328: Memory management extended to handle custom chips as well. 329: Debugger improved. 330: Kickstart passes memory & CPU type test, builds up some system 331: structures. 332: 950227 MC68000 & little debugger for tracing. It can execute the first couple 333: of KS1.3 instructions, but doesn't get past the memory test. 334: 950225 Work begun
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.