--- uae/src/ChangeLog 2018/04/24 16:38:39 1.1.1.1 +++ uae/src/ChangeLog 2018/04/24 16:38:53 1.1.1.2 @@ -1,3 +1,329 @@ +970204 Disk change fix from Mathias Ortmann. +970203 New file ncurses.c, from Samuel Devulder. + Disabled Exec stuff completely. Now it isn't even compiled in anymore. +970129 Changes from Samuel Devulder for Amiga and Christian Bauer for BeBox. +970122 Reorder the set_planes_unaligned functions so that better code is + generated. Remove the or_planes_unaligned functions, add a parameter + do_or to the set_planes functions and rely on the compiler to optimize + the additional if away. + post_decide_line() can now turn DMA off early. + Make struct flag_struct 64 bits large for i386 systems, so we can use + long move insns without clobbering the X flag. + "make clean" should delete machdep/support.o. + Maybe we do need SPR_vtop after all - undo 970120 change. Instead, + comment out the code that clears the pos and ctl words at vsync time. + In xwin.c, restrict window height to 300 or 600 depending on linedbl + mode. +970121 Get rid of SPCFLAG_BLIT, call do_blitter() directly. + In finish_decisions(), don't check for sprite draws in the border. + Reimplement the SMART_UPDATE define so that the memcmpy() overhead can + be avoided by not setting it (but this usually loses). + Detect 7 lores planes in BPLCON0() and change to 6 to avoid memory + clobbers. + In pfield_draw_line(), do memcpy linedoubling after handling the line + to be doubled, not when we see a LINE_AS_PREVIOUS. Get rid of prev_ypos + parameter. + Add special code for bpldelay1 == bpldelay2 to the UNALIGNED_PROFITABLE + code. + In pfield_init_linetoscr(), when delays 1 and 2 differ, clear the areas + which are covered only by half of the planes at the start and end of + the DDF area. + Replace FASTER_CPU and LINUX_SOUND_SLOW_MACHINE with M68K_SPEED. + Replace fast_unaligned_memset macros with fuzzy_memset; use this also + in pfield_init_linetoscr(). + Use real (PAL) vblank end in do_sprites(). +970120 Mask out high byte in DDF{STRT,STOP} + Oops, forgot about long frames while calculating the bounds of all the + maxvpos*2-sized arrays. Increment them all by two. + Try to detect empty sprites before recording them for the drawing code, + but be careful not to hurt attached sprites. + From Paul Kienitz: hack for keyboard code in cia.c to work better with + newer Kickstarts; small cleanup in cpuopti.c. + Undo yesterday's change in copper_memory_cycles(), instead call + decide_line() each iteration and test whether copper_cycle_time == -1 + to determine whether we're vertically in the DIW. + calculate_copper_cycle_time() could get astronomical plane counts due + to missing masking operation. + No need to put the copper to sleep for one memory cycle after a WAIT, + merge that with the two cycles for the next instruction. + Get rid of SPR_vtop, no longer needed (it was unnatural anyway) +970119 Implemented alternate pfield_doline functions that access the apixels + array at unaligned addresses; conditional on UNALIGNED_PROFITABLE. + Move LORES_HACK from config.h to custom.c. + Fix loop exit test for pfield_linetoscr_hdouble_asm8(). Clear the + right parts of apixels in pfield_init_linetoscr() when LORES_HACK is + enabled. + Get rid of bordercol array: the decision-making code should handle + lines in the border correctly by setting line_changed. + Disable bitplane DMA if more than 4 hires bitplanes are set in BPLCON0. + Fix some more copper timing inaccuracies: used to test + thisline_decision.which without calling decide_line() before. +970118 Now remember BPLCON1 changes during data fetch. New functions + decide_delay(), pfield_adjust_delay(); new fields in struct drawinfo + and new variables next_delay_change, delay_changes. + Forgot to set copstate to COP_morewait in one case in do_copper(). + Add a kludge that checks for copper position 0xDC and changes it to + 0xDE. + Restore equality test for vertical sprite positions. Disable sprite + DMA before the end of the vertical blank area. + Mask not only the positions, but also comparison values in + calc_copcomp_true(). +970117 Change custom_bput to put the byte value in each half of the word that + is put. +970116 disk.c: Set the gap between sector 11 and 0 to 380 words. Andromeda's + "Seven Seas" demo expects at least 320. Make the KILLEHB bit + conditional on AGA_CHIPSET. Decide BPLCON1 (scrolling delays) in + decide_diw(). Fix off-by-one errors in the very_broken_program case + of decide_plane(). Fix aspect calculation when horizontal resolutions + differ. Simplify copper horizontal comparison logic slightly. + Fix divide by zero errors when reading from empty floppies. +970115 pfield_draw_line(): Check for frame_redraw_necessary also for border + lines. New global variable pfield_last_drawn_line, used to implement + clever Y centering. Make the KILLEHB test conditional on ECS_AGNUS. + Move joystick and sound initialization before gui startup. Adapt tui.c + so it understands the gfx_requested_* options. + We can't always avoid clearing pixdata.apixels if DIW is larger than + DDF. There may be sprites in the area outside DDF, but inside the DIW, + so we can't just adjust linetoscr_diw_{start,end} blindly in + pfield_init_linetoscr() [Sanity Arte demo]. +970114 Bebox diffs from Christian Bauer. + Support for Symmetric Multi Penguins under Linux (start second thread + with clone and use some pipes for communication - rather simpleminded + for now). Rework do_flush_line() and do_flush_screen() so that X + libraries are only called from the first thread. + Eliminate valid field from struct decision (set which to -2 instead of + valid = 0) + Fix definition for gui_filename() in xdebug.c to use const char * for + the second parameter. Remove CRs from disk.c (now how did they get in + there??). Likewise for cpuopti.c. +970113 When post_decide_line() detects mid-line DDF change, must adjust + bitplane pointers in decide_plane() also. Make plfstrt the earlier a + position in this case, and adjust bitplane pointers/modulos + accordingly. + current_hpos() isn't what GCC calls a constant function. + Replace line_drawinfo[current_change_set] with new variable + curr_drawinfo throughout. Likewise for new variables prev_drawinfo, + {curr,prev}_{color_{change,table}s,sprite_positions}; all initialized + in init_drawing_frame (). Turn line_data into a 2dim. array, do some + CSE/SR on line_data[lineno] in pfield_doline_{l,h}() and + decide_plane(). Make some custom registers unsigned int instead of + UWORD. + calc_copcomp_true(): Masking with 0xF000 isn't likely to give 0xC0000. + Comment out bplcon{3,4} from struct decision. +970112 filesys.c, action_set_protect(): if __unix is defined, check whether + user wants to change directory protection, and if so, force rwx to be + the new protection. + Force sane window sizes in xwin.c, and set width/height from mode specs + in svga.c. + Implement LORES_HACK compile-time option. + Whee, there _are_ broken programs that enable bitplane DMA in the + middle of the data fetch area, draw half a picture on the first line + and the full picture on all subsequent lines. New function + post_decide_line(), called from BPLCON0() and DMACON() which tries to + detect this case and turns the decision from border to playfield if + necessary. + New arrays, sprvstart and sprvstop, calculated in SPRxPOS and SPRxCTL, + and used by do_sprites. Handle sprites with vstart == vstop correctly. + Sprite vpos comparisons are now done with <= , not ==. + _Now_ the X86-specific linetoscr routines do their masking correctly. + configure: If we have GCC, #define GCCCONSTFUNC as __attribute__ + ((const)) +970111 Eliminate can_draw from struct decision. + Change vertical DIW code; use enum of two states (waiting for start and + for stop) which is updated in decide_line(). Lines during the wait for + stop phase are decided as border. No data is fetched outside the + vertical DIW. + Optimize copper memory cycle calculation a little: the new variable + copper_cycle_time is set to a time >= 0 if this time is constant + (i.e. 2). Calculated whenever DMA, BPLCON0, or DIW state changes. + blitter.c, genblitter.c, custom.c: For BLTBDAT, follow the HRM which + says that immediate data is shifted as soon as it is written. This + seems to be wrong for the A channel, though. Also, don't change prevb + during blitter loops if DMA B is off (Sanity Arte). Turn FAST_BLITTER + stuff into run-time option "-n", and eliminate the ancient blitting + code (former FAST_BLITTER == 0). + Big OOPS: Copper move checked copcon, but there was no COPCON function + so it was always zero -> copper-controlled blitter never worked. As a + speed optimization, recognize 00010000 copper commands and put the + copper to sleep until the blit is finished. + Slow down the blitter in decide_line() if bitplane DMA steals blitter/ + copper/CPU cycles (but this code is commented out for now). +970110 New function pfield_init_linetoscr(). Move calculation of diw_end and + diw_start values there from x86-specific code. Also use DDF values to + determine where data in pixdata.apixels is valid. The x86-specific + linetoscr routines now only do the alignment masking (and they now do + it correctly, too). + Got rid of the display-related contents of struct draw_info, make + static variables and them initialize from pfield_draw_line() only when + necessary in function pfield_expand_dp_bplcon (). Get rid of the four + saved_* arrays, remember line_drawinfo instead now that it's smaller. + Color compare avoidance didn't work because color_src_match didn't get + set when a compare was successful. Fixed. + Reorder parts of the decision-making code so that less redundant checks + are performed. + Add clever x centering. Change "-O" option parameter format. + In md-i386-linux/support.c, memcmpy(), do memcmp() first, then switch + to a plain memcpy routine once we find the first difference. + Patches from Stefan Reinauer/Christian Schmitt for + xdebug.c/configure.in + New uae-ui.tk from Volker Zota. + Add --enable-profiling to configure.in. + Check for period==0 in AUDxPER() was accidentally commented out - + revert. +970109 Some tweaks in X86.S, plus a new option X86_PPRO_OPT to use movzbl + instead of xorl/movb when possible. + Fix maxline calculation in finish_drawing_frame(). + Make next_lineno always a valid array index. Decrease minfirstline to + 21 (NTSC vblank end). New option -O to specify display parameters, + supersedes -d and -C which will be removed eventually. Differentiate + between line doubling and aspect correction. Put aspect correction code + in custom.c. + Remove some more unused stuff from custom.c. + Fix Makefile problems when cpuopti isn't used. +970108 use_lores isn't initialized before custom_init(), setup lores_frame and + friends in customreset(). Optimize spixstate clearing. Optimize border + drawing with copper color changes (use fill_line instead of linetoscr) + Fix the sprite DMA logic, it now works with the Interference demo. + Silly bug: Sprite 7 never got displayed (introduced sometime last week) + Implement USER_PROGRAMS_BEHAVE for normal (non-compiler) CPU emulation. + Add most of Gustavo's last patch (new dir md-i386-dos) +970107 Finish rewriting most of the drawing code in custom.c/X86.S. See + README.PROGRAMMERS and source for details. Improvements include better + copper precision, better interlace support, hopefully much less bugs + and not too many new ones. + Remove calc_adjustment() and gfxvidinfo.x_adjust; replace with code in + custom.c that looks at gfxvidinfo.follow_diwstop (new field) + Some operations (like EHB playfields) now have a higher penalty than + before, the assumption being that these are rare and the normal case + runs faster if it doesn't have to care too much about exceptions. + Fix sign mismatch bug in BPL1MOD() and BPL2MOD(). +970104 Move x_ShowEA() from xdebug.c in newcpu.c, rename as ShowEA(). +970102 Add check for XK_W to decode_es() in xwin.c. + New uae-ui.tk from Volker Zota. +961218 Add a patch by Bernie Solomon to overcome a problem with K&R compilers. + Change X86.S in a way that may make it either faster or slower. + Fix ADF_EXT1. +961217 #ifdef XK_dead_*, since Solaris doesn't have it. +961202 Fixed joystick.h problem in configure. X11/DGA support from Kai + Kollmorgen. +961117 Some fixes in svgancui.c. +961112 Gustavo's latest patch, with GUS support for DOS by Michael Sontheimer. + Add menu browsing to tui.c/svgancui.c +961107 Fix m68k_areg and m68k_dreg macros (put args in parentheses) + Initialize gfxvidinfo.maxlinetoscr in xwin.c (found by Sam Devulder) +961104 svgancui.c tui_refresh() routine tweaked to work with the non-standard + ncurses that came with my new SuSE-Linux CD. +961031 Added Christian Schmitt's xdebug.c (disabled for this release) +961024 Module search function from Michael Krause. +961019 Add Samuel Devulder's Amiga patches. +961018 Don't use -lm on NeXTStep. +961017 configure checks for -lforms. +961016 Ian Stephenson's new NeXTwin.m. Make CLXDAT return 0 (no collisions) + transdisk and transrom patches from Rodney Hester. Don't warn about + 256K Kickstarts. Check diskfile sizes and try to determine whether it's + a normal or a HD diskfile. No HD drive identification yet (is it + different?) +961013 Corrected lots of bugs in the return address stack. Fix some errors in + the compiler memory management. Use the "locked" flag for hash entries + differently, and don't enforce it on a cache flush. Compile JMP to a + constant address. +961012 Remove regs from cache before sign extending them for ADDA, MOVEA and + similar things. Compile NOPs to nothing. Implement variable shifts/ + rotates. Most shifts clear the V flag: Handle this in the compiler by + some extra magic sequences after shifts or in the CC_AFTER_RO case in + flush_cc_cache(). + Implement a stack containing return addresses and their hash entries, + and compile JSR (to constant addresses)/BSR/RTS instructions inline. +961011 compiler.c: Several bugs introduced in the last two days fixed. + New function compile_note_modify() which is used when an ea is + modified. This replaces calls to storeea with eaino_s == eaino_d. + Bah, the 386 doesn't set flags on a NOT. Use CC_TEST_REG again. + Do flag life analysis until no more changes are found. + Make sure all "data" parts of EAs are locked exclusively (esp. for + LEA, PEA) +961010 compiler.c: Finish yesterdays changes. Get rid of reg/offset + bookkeeping in m68k_compile_block(), keep the information in struct + ea_info instead. Rewrite all instructions to use the new fetch and + store routines. + Don't force a byteorder conversion in sync_reg() if the reg doesn't need + to be written back. Don't do a SAHF or equivalent in compile_condbranch + if we are doing a BRA or BF. + Don't use CC_TEST_REG for NEG and NOT (this was inefficient for NOT and + wrong for NEG). +961009 compiler.c: Two types of locks for registers; shared and exclusive. + Implement better EA fetching and storing routines. For pdi addressing + modes, lock the necessary registers shared before calling prepareea. + Unlock those registers again in generate_possible_exit(). +961008 MOVEM instructions in the compiler to an absolute address could have + caused random memory corruption. +961007 Spanish keyboard support for X by Ruben Martinez. Some configure fixes + (don't assume current dir is in path, don't assume ncurses.h exists if + libncurses does). + If we're calling 68k code from an emulator function, don't use compiled + code. + Add a compilation option USER_PROGRAMS_BEHAVE (for compiler). Make + compiler hash table larger. +961004 Fix typo in configure.in. + Modify the compiler so it doesn't ever throw away code, unless it's + necessary for a cache flush. + Didn't quite squash the compiler flag bug yesterday. Try again. + In filesys.c, do_find(), add a parameter fallback that indicates that + the open should be retried with O_RDONLY if it failed with O_RDWR. + Use this in find_input(). This fixes problems with r/o files on r/w + volumes. +961003 Play around with the x86 specific memory access functions. Problem: + __attribute__((regparam)) isn't reliable, and it seems that that's a + rather hard to fix bug in GCC. Add some alternatives to + md-i386-linux/memory.h; these aren't used yet though. + Huh, the compiler was completely wrong about the flag needs of + conditional instructions. I wonder how it could work at all... + Remove a and d arrays from struct regstruct; replace with array regs + with 16 elements. This allows better code for get_disp_ea() +961002 BeBox diffs from Christian Bauer. Move all code from main() to new + function real_main(). +961001 Use do_get_mem_*() functions for nextiword(), nextilong() and new + function nextibyte(). +960930 genblitter optimizations: Don't generate expressions in genblitter, use + a second program called gengenblitter to generate a table of + expressions for genblitter to use. gengenblitter knows about a lot of + rules to simplify expressions. Some other tweaks to make GCC output + better assembly for blitfunc.c. +960927 Turn off LED() in xwin.c (may fix SunOS joystick emulation problems) + Call XFlush() and XSync() when exiting. + Add some DOS patches. + Add hooks in filesys.c to support filesystem units in a GUI. Use them + in tui.c. Bugfixes in svgancui.c. Change the way tui_refresh() works. + New option "-A". +960925 For read-only filesystems (CD...), use O_RDONLY in action_find_input. +960923 Save options file even if rename fails. + Mirror address space every 16MB like we used to (got turned off by + accident). + Move some checks out of options.h into configure. Set up md-* + directories with machine-dependent stuff in them; configure creates + a link called machdep to the appropriate one. +960918 Solaris sound update from Manfred Thole. +960917 Add a timer.device replacement (buggy). +960916 Tristan Cavelier's french keyboard patch. + Apply ReadTheSpecsBeforeYouWrite(tm) technology to AddPort(). + Implement RemPort(), GetCC(). +960915 Tighten up some of the return values in Exec. +960914 EXEC: Implement RemTask(), ObtainSemaphoreList() and + ReleaseSemaphoreList(). Set up more fields of the ExecBase properly + and Enqueue it in the library list. Make InitResident call AddLibrary + when appropriate (otherwise, intuition is never put into the library + list). Fix major braino in Obtain/ReleaseSemaphore() (tried to Enqueue + tasks into two lists). Make OpenLibrary() honor the version parameter. +960913 EXEC: Idle task now runs in user mode (abuse 0xFF0D as second STOP + instruction). Make EXEC_IntTrap perform the RTE before trying to + schedule. +960912 Solaris sound didn't compile. So much for making blind changes without + being able to test them. +960911 As soon as you compile it under Solaris, it bombs... Now check that the + hardfile exists before determining the size in main.c. + execlib fixes: Set master DMA enable bit at startup, fix interrupt + code to survive an interrupt that occurs before the proper SetIntVector + call. Implement RawDoFmt(), CloseDevice(), CloseLibrary(), + FindResident(). 960905 Lower 8 bits of POTGOR should be 0. 960904 Implement MULU, MULS, ADDX and SUBX in compiler. 960903 ncurses interface works. DOS people: please use the new portable tui.c @@ -51,7 +377,7 @@ 960728 Fixed the scancodes for <> and #' keys in svga.c Apparently, CIA timer latches ought to be 0xFFFF after a reset (prevents Eagleplayer from crashing occasionally). #ifdeffed out a - slightly weird call to INTREQ from RehtinkICRB() + slightly weird call to INTREQ from RethinkICRB() 960727 Sound code rewritten again. Now uses events (five new ones). All modules seem to play correctly now. It's a bit slower, though. AF sound should work again, patches from Marcus Sundberg.