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