home *** CD-ROM | disk | FTP | other *** search
- 960622 More work on AGA code.
- Removed 2-bit display routines from custom.c. Ian: please use dithering
- code.
- Make slowmem and chipmem sizes run-time configurable.
- Mask out the high bits in BLT?PTH().
- Add exception 3 checks to Bcc/BSR instructions. Seems to be not quite
- correct yet.
- Completely rewrote the disk emulation. We now create a big track buffer
- full of MFM data, used in a cyclic fashion by DSKBYTR() and friends.
- The current position in the buffer is determined by the cycle counter.
- DMA reads are now done in one piece. Two new event types: ev_diskblk
- and ev_diskindex.
- ARRGGHH! The RSI demo has _completely_ broken disk loading routines.
- They start disk DMA on a block while the blitter is still working on
- the same memory region.
- In zfile.c, unlink() the temporary file directly after opening it so
- it will be freed by the OS as soon as we close it (or crash... :)
- 960621 Merge pfield_sprite_h() and pfield_sprite_l() into one function.
- Split off new files blitter.c and blitter.h from custom.c.
- Fixed null-pointer dereference in zfile.c when filename has no
- extension.
- Add new field maxline to gfxvidinfo that prevents writing past the
- screen buffer if it has less lines than expected.
- Modify the 256 color allocation routine to set nb_cols to the same
- value first for r,g and b; allocate everything as usual and fill the
- lost colors afterwards with those that have the greatest difference.
- 960620 For some extremely weird reason, it is faster to simply call the
- assembly-optimized pfield_linetoscr_full routines _twice_ to double the
- line than calling the new (also assembly-optimized)
- pfield_linetoscr_full_double routines, at least when writing directly
- into the framebuffer. If someone has a good theory why, let me know
- about it.
- Drawing into memory is faster with the _double routines, but not
- noticeably (about 1%).
- Consequence: Removed the new pfield_linetoscr_full_double assembly
- routines again.
- Add a "--disable-gui" option to configure.
- Add Samuel Devulder's dithering code. Provide support for mono and
- 16 color X servers.
- Put an assembly version of DitherLine() in X86.S.
- New color mode (3) available, tells UAE to use 256 colors and dither
- the image. This is meant for people who have only a 256 color X server
- available, but it works with the SVGA version, too. It's much slower
- than normal 256 color mode, though.
- Use the color allocation algorithm from the dither code in
- alloc_colors256(), too.
- 960619 New files: zfile.c and zfile.h, from Samuel Devulder. These provide
- transparent decompression of various compressed file formats. Enabled
- by configure only for Unix systems.
- Eliminate dont_want_aspect. New option "-C", sets correct_aspect. Make
- video mode 3 640x480, video mode 4 800x600. Honor correct_aspect in
- 320x400, 640x480 and 800x600 mode with SVGAlib.
- Add fields maxlinetoscr and x_adjust to gfxvidinfo.
- Rename pfield_slow_linetoscr() to pfield_do_linetoscr(). Use new fields
- in gfxvidinfo to enable writing directly to the framebuffer in
- resolutions with <800 horizontal pixels.
- New function pfield_do_linetoscr_full(), called when sure that full
- line update is being done.
- Move some of the usage() information into some target_specific_usage()
- functions, defined in the various system-specific files.
- Support lower resolutions with LOW_BANDWIDTH, too.
- memcpy() within screen memory is dog slow. Prevent some common cases:
- 1. Use fill_line() to double a line in the border.
- 2. Add a parameter to pfield_do_linetoscr_full() to indicate whether
- the line has to be doubled. New functions
- pfield_linetoscr_*_double_slow() that simply do a memcpy(), plus
- optimized ones in X86.S that are much faster by avoiding the copy.
- Smart update code could get confused by lores modes when
- prev_max_diwstop changed from one frame to the next. New variable
- frame_redraw_necessary, which acts as a counter. It's initialized to
- 2 in interlace mode to handle that case properly, too.
- Move sprite priority checks into pfield_sprite_?(), move HAM
- calculations into new function decode_ham6() to simplify the various
- linetoscr functions.
- Fixed a bug that would cause sprites could get deformed in some cases
- when they overlapped (never seen it).
- 960618 New file: dos-snd.c, from Gustavo.
-
- 960617 Release 0.6.0
- 960617 Fix memory clobber in X86.S when diwfirstword==0. Eliminate double test
- for HAVE_SYS_MOUNT_H in sysdeps.h.
- 960616 Handle programs that don't wait for the blitter by finishing a pending
- blit as soon as a blitter register is written to (regardless of DMACON,
- to be safe).
- Call gui_led only if the LED changed.
- 960615 Fixed dual playfield sprite priorities. Optimized dual playfield code
- in X86.S. More work on AGA code. Get joystick status only in
- vsync_handler to speed things up.
- Make blitter fill more intelligent with table lookups instead of loop.
- 960614 DOS update from Gustavo. Pass real bitplane pointer to
- bpl_data_differs(), don't calculate it again.
- 960610 Fixed silly INTEL_FLAG_OPT bug: The new __asm__ expressions use
- regflags, which is of course _regflags on a.out...
- More BeBox fixes from Christian.
- Make the CIA bank bigger (A0..BF) and relax the CIA A/B selection
- checks to make broken software (Kingsoft's Emerald Mine, reportedly)
- happy.
- Default framerate is now 1.
- 960603 New BeBox code from Christian. Fix test for ELF in configure.in.
- 960529 genblitter.c: generate blitfunc as a function taking ULONGs and
- returning an ULONG. This makes custom.o about 4500 bytes smaller on the
- x86 by removing worthless size prefixes, and should increase
- performance (better for the cache, and the P6 reportedly doesn't like
- 16 bit instructions anyway).
- memory.c: Load Kickstart in one block and swap bytes after that if
- necessary (eliminates the need for the special bebox load routine)
- custom.c: Some preliminary work for AGA support.
- 960528 Saw a real awful piece of code that detects the right mouse button by
- reading a value from POT0DAT, counting up to 25, reading from POT0DAT
- again, and deciding the button is pressed if the value changed. Urgl!
- Added POT0DAT() in custom.c ...
- Gustavo's latest patches.
- 960525 Do index pulse handling in CIA_hsync_handler(). Make sure bit 12 in
- INTREQ gets set on an index pulse. Don't call DISK_Index() for now,
- since this breaks the Workbench.
- The CIA code should _probably_ not be resetting the bits in INTREQ.
- Disable this as an experiment, let's see what breaks.
- 960524 Z flag handling for ABCD/SBCD/ADDX/SUBX was wrong (must be clear if not
- zero, was set if zero). Some other flag bugs in these functions fixed.
- 960523 gfxlib.c update from Christian Schmitt. Some new Mac code from Ernesto,
- still not all of it, though. Italian keyboard from Alessandro Bissacco.
- 960522 Fix the CHK instruction. Implement middle mouse button.
- 960515 Fix some Nextstep problems in configure.in.
- 960513 New Makefile target "streifenfrei" to remove all output from configure.
- Use autoconf 2.7; 2.9 is buggy.
- 960512 Remove BIG_ALIGNMENT hack. Remove superfluous pfield_fetchdata() call
- in pfield_doline_slow_l() that resulted in garbage on the screen.
- Move blttbl array from custom.h to genblitter.c
- Use new lookup tables imm8_table and areg_byteinc in CPU emulation
- instead of ?: expressions.
- GCC appears to generate better code if the opcode is passed as ULONG to
- the CPU emulation functions instead of as UWORD.
- Modify some of the flag emulation __asm__ statements so that GCC uses
- less registers for them.
- 960510 Cast malloc() results to char *, for C++ compilers.
- 960509 Use test for GCC and __i386__ in options.h to decide whether to use
- intel flag optimization.
- Use test for wish4.0 to decide whether to use the GUI.
- 960507 New bebox.cpp from Christian. AF sound patches from Marcus Sundberg.
- 960505 Fix the configuration stuff so it works. Fix some bugs in gfxlib.c
- 960504 Use GNU autoconf scripts to generate Makefile and sysconfig.h. Add new
- files sysdeps.h that includes the right system header files. Remove
- amiga.h and Makefile.
- 960502 More Next code from Ian (new Uae.app directory, 2 bit drawing for
- custom.c).
- 960501 Allow the sound driver to set the frequency to a value that is slightly
- different from the requested one.
- 960430 Added AmigaOS port from Olaf Barthel.
- 960427 Fixed single playfield sprite priorities in X86.S.
- 960426 Added new NeXTwin.m from Ian.
- Turn off the blitter delay in line mode.
- Added a CPU optimization from Olivier Raoul: gencpu now reads a file
- "insncount" that can be generated by UAE during execution and generates
- specific functions for the most common opcodes. Not documented yet.
- 960414 Reimplemented the fast disk emulation in a more sane way. Also it's
- only done for reads now. (Plus, it no longer works :-/ Need to work
- some more on this).
- In blitter emulation, defer not only the setting of the bltfinish bit,
- but actually defer the whole blit for the number of cycles it will
- take. This makes programs the clear the screen while it is still being
- displayed look much better.
- Changed supervisor mode handling around a bit (was messy).
- New DOS code from Gustavo.
- 960412 Removed smart update method 2. Added Alessandro Bissacco's blitter
- optimization patch.
- Fixed some sprite problems: during hysnc, clear sprpos and sprctl, and
- don't do_sprites() in line 0.
- 960409 Be a little more intelligent about when to call pfield_linetoscr() from
- pfield_doline_slow(). It's only necessary if a color register changed.
- If it can be deferred to the end of the line, use the the _full
- variants.
- Some CIA TOD fixes.
- Better transdisk, accepts first/last track parameters.
- 960405 New function memcmpy(), inline assembler for the i386. Compares two
- memory blocks and copies them at the same time. Used in
- bpl_data_differs.
- 960404 French keyboard from Tristan Cavelier. Parallel port emulation from
- Stefan Reinauer.
- Turn bpl?pt and r_bpl?pt into arrays, simplify some code using them.
- 960401 Some parts of Ernesto's new Mac sources.
- 960331 filesys.c: Close filedescriptors in free_key(). get_path() sometimes
- read uninitialized bytes.
- Minor cleanups all over the place.
- unchain_mnn() leaves sibling intact, but clobbers next. customreset()
- didn't care about that and crashed.
- Use the __asm__("intel_flag_lookup") magic not only for DOS.
- Support 320x300 for X (without LOW_BANDWIDTH).
- Add new function fast_memcmp(), defined as memcmp if __i386__ is
- undefined, otherwise a slightly optimized inline assembly function.
- 960329 Some bug fixes in gencpu.c
- 960328 Stupid programs write odd playfield modulos into the hw registers...
- Eek! Sometimes, linedescr[] was indexed with a negative value... Add a
- vpos >= minfirstline check to pfield_may_need_update(). I really need
- to rewrite this in Oberon...
- Don't turn off SHM when LOW_BANDWIDTH is selected.
- Keep the nextpos and linepos variables from pfield_doline_slow_?() as
- globals and initialize them in pfield_may_need_udpate().
- Modified alloc_colors256() some more.
- Try to make sprite DMA follow the Amiga DMA slots more closely by
- adding a currhp parameter to do_sprites() and calling it at the end
- of a scanline or in pfield_may_need_update().
- 960327 Added Gustavo's latest DOS code, as far as possible. Modified X86.S to
- use a macro SYM() to create symbol names either with underscore or
- without.
- Fixed some very silly SVGAlib lores bugs. Move screen 8 pixels up in
- low resolution.
- Use diwstop instead of diwstart to caclulate the DIW for 320x200 modes.
- Reset it not only in calcdiw(), but also in init_frame().
- Speed up 256 color allocation a little bit.
- 960326 New function flush_block() in xwin.c and svga.c. Called from
- do_flush_line() and (new function) do_flush_screen(). Modify struct
- vidbuf_description, new member maxblocklines that records the maximum
- number of scanlines that do_flush_line() should collect before calling
- flush_block(). If it is zero, then flush_line() is used as before.
- This makes the special case stuff for SHM unnecessary, so it's removed.
- Fixed a stupid bug in events code: Put ev_hsync in front of ev_copper,
- so that do_copper gets called with hpos == 0 instead of hpos == 227 at
- the beginning of the line.
- New function init_frame() that sets up some variables, called from
- customreset() and vsync_handler().
- Move smart update code to pfield_doline() from pfield_doline_h() and
- ..._l(). Clean up these two with a macro DO_ONE_PLANE, removing
- duplicate code.
- Implement big blits and ECS chip ids. New configuration options
- ECS_AGNUS and ECS_DENISE.
- Implement MOVEP.
- 960325 Before calling pfield_may_need_update(), make sure the value that was
- written to a register actually differs from the previous one.
- New expansion code from Stefan Reinauer.
- Modify struct mem_notify_node to contain a pointer to a valid bit
- instead of the valid bit itself, so that the playfield code has to
- check only one flag to decide whether to draw the line (SU method 2)
- 960324 The chip_flags approach has several problems. A flag may cover an area
- in memory that spans two scanlines, or several scanlines may use the
- same area in memory.
- Provide two other, different methods for the smart update:
- 1. Save all the bitplane data for each line and compare the chipmem
- with the saved data to decide whether an update is necessary.
- 2. Use a chain of memory_notify_node structs instead of a single bit
- for flags. Each scanline owns a set of these structs and chains them
- into the right place, and the chipmem_?put routines walk the chains
- and set the modified bit for each element.
- Unfortunately, both methods are slower than the old one. Especially the
- first one has some advantages though: it speeds up programs that clear
- the screen each update and write the same contents back, and it
- can speed up double-buffering programs at full framerate, since it does
- not have to check whether the bitplane pointers have changed.
- Remember the first and last drawn line for each frame, and pass them to
- flush_screen. Use this in xwin.c for SHM. Modify SHM logic: if smart
- update is selected, call XShmPutImage() from flush_line() instead of
- from flush_screen(). But gather blocks of consecutive lines to avoid
- calling XShmPutImage() too often.
- 960323 "Smart update" method, based very loosely on Alessandro Bissacco's
- work, implemented:
- Add an array chip_flags that records any change made to specific words
- in chip memory.
- Move all the hardware registers relevant to playfield display into a
- new structure bplinfo. Remember the contents of this structure in
- struct line_description for every line on the screen. Avoid redrawing
- in pfield_doline if the screen memory has not been modified for the
- line to be drawn and if the information from the last frame matches
- that in the current frame.
- 960322 Duplicate all functions responsible for drawing (pfield_doline,
- pfield_doline_slow, pfield_sprite, pfield_*word_*res) and append _h
- or _l (ah, the golden C++ days, when we had templates... which never
- worked). Modify the *_l functions to support drawing in low resolution
- (i.e. 320x200). Change the options -d and -H to support selecting color
- mode and resolution, thereby getting rid of some SVGALIB_* options.
- Get rid of the old pfield_*word_*res functions.
- Collect information about the minimum diwstart value during the
- previous frame and use that in case 320x200 was selected to fit the
- image on the screen.
- Get rid of HAVE_JOYSTICK (breaks the "-J" option)
- 960321 Give up in op_illg() if opcode is 0x4e7b and the exception handler for
- it is NULL. In that case, it's a 68020 Kickstart.
- 960319 New Next code from Ian. SunOS target was still screwed (two CFLAGS).
- Turn -x option into a "hair cursor" option. Support multiple mounts,
- but warn if more than one is seen (still does not work with Kick 1.3).
- Integrated Samuel Devulder's new LOW_BANDWIDTH patch.
- 960318 Integrated the start of Markus Gietzen's gfx library replacement.
- Changed the interface between custom.c and the graphics code. There has
- to be a buffer holding the data of all the lines on the screen. For
- linear SVGAlib modes, this is the video memory. Eliminated -x option,
- prepare_line(), DrawPixel() and the X_?BIT_SCREEN options, replace with
- 3 versions of pfield_linetoscr for different datatypes. Implement
- proper handling of the borders above and below the DIW in custom.c
- instead of in flush_screen().
- Move common code (color allocation) from all the graphics files to new
- file gfxutil.c.
- Swedish keyboard from Per Olofsson.
-
- 960315 Release 0.5.0
- 960315 Newest DOS port from Gustavo. New sgi-gcc target.
- 960314 Add -lXext to osf target. Use "rb" for fopen() in main.c
- 960310 Play a bit with the __asm__ constraints. Implement CHK.
- 960307 Fix some stupid Makefile errors. Call parse_cmdline() if no init file
- is found.
- First round of NextStep patches; new file NeXTwin.m
- Stupid bug in custom.c: The #define is called NO_FAST_DISK, not
- NO_FAST_FLOPPY.
- Fix one of the problems the Deform demo had with the blitter: The
- line texture wasn't rotated to the right position in blitter_init().
- 960306 Use some black GCC __asm__ magic to calculate flags more quickly
- (config INTEL_FLAG_OPT)
- HAM was broken by pfield_linetoscr changes. Fixed.
- LOW_BANDWIDTH sometimes got confused when the display window changed.
- 960305 BCD instructions work well enough for Locomotive Basic on CPE.
- New function parse_cmdline_and_init_file() that reads ~/.uaerc or
- ./.uaerc and adds the options found in those files to those in argv[].
- Patch from Denis Sablic to make disk image filenames runtime
- configurable. Extend it for the ROM filename.
- Remove some of the run-time configurable stuff from config.h.
- More X keysym fixes (I finally got a proper .Xmodmap ...)
- for SVGAlib: Delete key, and PgUp/PgDn as Amiga keys.
- The sound driver can now handle 22050 Hz and/or 8 bit samples. Both of
- these are the default with LINUX_SOUND_SLOW_MACHINE.
- Also use the SNDCTL_DSP_GETBLKSIZE ioctl and write the buffer when
- there is enough data.
- Abuse keybuf.c to provide a fake joystick emulation with the numeric
- pad (enable with -J)
- 960304 bebox.cpp from Christian.
- Rename pfield_linetoscr_full to pfield_linetoscr_full8.
- More x86 assembly: pfield_linetoscr_full16.
- 960303 SunOS target from Dirk Vangestel. Put some not-so-superfluous includes
- back in. Added the DOS specific patches to filesys.c.
- Started x86 assembly optimizations. New file X86.S, includes an
- optimized version of pfield_linetoscr (for 8 bit screens only).
- Don't use SA_RESTART if it isn't defined.
- prepare_line() wasn't called often enough (again...), leading to memory
- corruption and "hit the reset button" bugs when using SVGAlib.
- 960226 Get rid of bool, true and false in amiga.h and everywhere else.
- Copy yesterdays code to AF_SOUND code, too.
- Include first round of Christian Bauer's BeBox patches. Add AIX fix
- from Samuel Mackrill.
- Add #include <string.h> and #include <stdlib.h> in some more places.
- Modify gencpu.c and readcpu.c so that immediate types j and J (0..15
- and 1..8) can be merged. Replace HAVE_ONE_GIG... option with a new
- CPU_EMU_SIZE option that can be set to a value in the range 0..5,
- where 0 is minimum size and 5 is equivalent to HAVE_ONE_GIG...
- 960225 Remove multiplications in sound code, use a big lookup table.
- 960222 Go back to having only one memory bank table of type addrbank instead
- of several function pointer arrays. Eliminate the HAVE_BROKEN_SOFTWARE
- define by extending the memory bank table to 65536 entries.
- Remove remaining DUALCPU code. Allow BTST src,imm instructions in
- table68k.
- 960220 Back out filesys.c change from Stefan Reinauer: don't call V36 specific
- functions in expansion.library.
- Better fix for the filesys.c assign problems by Oliver Moehrke.
- Make new playfield code conditional on EXPERIMENTAL_SCREEN_UPDATE.
- Improve the 64bit variant of said code. Try to get alignment for
- apixels by putting it into a union with a long.
- Kill the child in gui_exit(). Make graphics_init() return a value and
- check it in main.c to see whether graphics were initialized. If not,
- call gui_exit() anyway.
- Use new 256 color allocation routine from svga.c in xwin.c, too.
- Make LOW_BANDWIDTH compile _and_ work (wow...).
- 960219 Fix bug in memory.c: When loading 256K Kickstart, copy 256K, not 128K.
- 960218 Finished the rest of the UI: reset, debug and quit buttons as well as
- drive LEDs. New target linux-gui; all others use dummy file nogui.c
- for now.
- 960217 The GUI now supports inserting and ejecting diskfiles and displays
- their names. Two pipes are used now, one for reading and one for
- writing. Properly wait for the process to start up.
- Use sigaction() instead of signal() in debug.c.
- More fixes for the new display routines: Need to do a final call to
- pfield_*word_*res with the data shifted right from the last fetched
- word.
- 960216 Copper & sprite bugfixes from Marco Nelissen. Better X keyboard support
- from Bruno Coste.
- Move my_strdup() from filesys.c to options.h
- New files xui.c, uae-ui (shell script) and uae-ui.tk (wish script).
- These create a GUI for the X version of the emulator. So far, the
- power LED works.
- 960215 Don't rely on SVGAlib headers defining any keycodes at all.
- Include Thorsten Frueauf's NetBSD patch. Apparently, the devname
- variable in hardfile.c caused a namespace collision, so rename it to
- uaedevname. Fastmem fixes, debugger help, and ConfigDev allocation in
- hardfile and filesys from Stefan Reinauer.
- xwin.c: Give the window a title.
- Half-implemented the DIVU.L, DIVS.L, MULU.L and MULS.L instructions.
- 960213 AF sound system support from Marcus Sundberg. Win95 keyboard support
- for SVGAlib from Thierry Lescot. Added most of Gustavo Goedert's MS-DOS
- port.
- When using the old pfield_*word_*res functions, the gen_pfield_tables()
- function was undefined.
- Hmmm, /dev/brain must have been unmounted when I wrote the new pfield_*
- functions. Now they make sure they access the apixels array only with
- addresses that are multiples of 16 bytes.
- 960212 Fix copy&paste bug in cia.c found by Marco Nelissen: Need to call
- RethinkICRB() instead of RethinkICRA() for CIA B timers.
- Added Stefan Reinauers autoconfig area/fastmem support. Added run-time
- options for use_slow_mem and use_fast_mem.
- Oops, the pfield_*word_*res() optimizations break completely on HPs and
- Sparcs. Now use this optimization only if we are using GCC 2.7.
- HPUX fixes in the Makefile. New target hpux-gcc.
- The code for clearing the areas above and below the DIW was trying to
- be a little too clever selecting the color. Just use the current
- background color.
- Added channel attachment to the sound code. Untested.
- 960211 Found some flag setting bugs in the rotate/shift instructions and in
- addx/subx (which I thought I had already fixed) by reimplementing
- DUALCPU mode to work with Ed's e68k.
- Argh! The copper is completely disabled during DDF in Hires 4 bitplane
- mode - so copper positions 0x30 and 0x34 are about 640 pixels apart.
- The Kickstart uses FF39FFFE to wait for the end of line 256 instead of
- FFDFFFFE as in all the other modes. This is implemented now, but
- probably not 100% correct.
- Added check whether SVGAlib doesn't support our mode.
- If using GCC >= 2.7, define __attribute__((aligned(16))) as
- BIG_ALIGNMENT in config.h. Use it for the apixels array to prevent
- potential problems on the Alpha.
- Tried to make the color selection routine produce better results in 256
- color mode.
- 960210 readdisk didn't work at all for large files - fixed.
- In pfield_doline(), clear the apixels array if playfield DMA is off.
- In SPRxCTL(), reset sprite mode when sprpos==sprctl==0
- Rewrite pfield_orword_hires() and friends to use lookup tables. No
- noticeable improvement on my machine, but might be different on other
- machines. Two versions of this code: one using 64bit longs on the Alpha.
- New targets linux-debug and linux-prof.
- Use 1MB slow mem.
- -funroll-loops is a little excessive. Remove it.
- Add support for linear addressing modes for SVGAlib version. Speedup
- is 20-30% on my old 486 VLB. Now, would someone please fix SVGAlib to
- support that for the S3-864 as well?
- Set SVGAlib keyboard mode to DONT_CATCH_CTRLC.
- Change custom.c, xwin.c and svga.c to keep track of the display window
- and background color and to clear the areas above and below the display
- window if necessary to remove garbage images from previous frames.
- Set the LOF bit in the Kickstart replacement init routine. Also
- initialize CIAs to Kick 1.3-like values.
- 960209 Some more -DHAVE_xxx_H options in the Makefile and filesys.c. DEC Alpha
- fixes for filesys.c from Ed and Marcus. HPUX fixes.
- New field in table68k for CPU type, parsed by readcpu and compared to
- CPU_LEVEL which is defined in config.h. New instructions MOVE2C, MOVEC2
- and CAS. Also a new field for priviledge level that is used by gencpu to
- generate tests for regs.s and Exception(8) calls if necessary.
- Move parsing of table68k into a new file build68k.c. Generate a file
- called cpudefs.c containing the information from table68k in
- machine-readable form. Change readcpu.c to use the array found in
- cpudefs.c.
- Don't generate the d8(An,Dn) addressing mode in-line. Generate a call to
- get_disp_ea(), which is an inline function in newcpu.h if UAE is
- configured for 68000 emulation; for 68020 emulation, it is defined in
- newcpu.c.
- Debugger could crash on illegals because there was no mnemonic defined
- in lookuptab[].
- Return zero for SERDATR.
- 960207 It seems that the copper stops completely if an attempt to write to a
- specific register fails because of COPDANG. Apparently, the Kickstarts
- use this to stop the copper with a 0x00000000 longword. This leaves the
- question why they don't do 0xFFFFFFFE like everybody else.
- Enable 512K slow memory by default.
- Integrate Stefan Reinauers battclock patch that makes it work with
- newer Kickstarts.
- In cia.c, do the little index pulse hack even if dskdmaen==1, because
- DMA is only enabled when dskdmaen==2 (Helps the "Mad Decision" demo).
- Add solaris entry to Makefile (GCC, Openwin, -DHAVE_STATFS_H)
- Define HAVE_STRINGS_H for SGIs, change filesys.c accordingly.
- 960206 Build a smaller table instead of cputbl.c. Use readcpu and the smaller
- table to build the cpufunctbl array at run-time.
- Nuked the other half of the old CPU emulator. Reimplemented debugger to
- use the information generated by readcpu.
- Define HAVE_STATFS_H for SGIs in the Makefile, and use that as a test
- in filesys.c instead of #ifndef __linux.
- Hack filesys.c, get_path() to support the assign command.
- Add -fstrength-reduce and -funroll-loops in Makefile to make people
- nervous.
- Rewrite Sam Devulder's LOW_BANDWIDTH patch and add it to xwin.c.
- 960205 Forgot some PC-relative bit instructions in table68k.
- Nuked half of the old CPU emulator.
- Split gencpu.c into two parts, new one is called readcpu.c and just
- parses the table68k file. Link it to the main program.
-
- 960205 Release 0.4
- 960203 filesys.c, action_read(): Slightly more efficient code (translate Amiga
- address to real pointer).
- Moved some common code in the generate_* functions in gencpu.c to a
- separate function.
- 960202 Added an experimental fast disk option. Currently turned off by
- default (it's not such a big win).
- Attached sprite fixes (overlapping att. sprites looked bad, Katakis).
- Add sleep(1) before resetting the console to text mode when using
- SVGAlib: this might fix some screen corruption problems.
- Add sprite/playfield priority checking to the most important case
- (single playfield, no HAM).
- In filesys.c, do_find(): open() returns -1 on error, not zero.
- Return ERROR_OBJECT_WRONG_TYPE if do_find() is called for a directory
- (fixes Champions of Krynn harddisk installation).
- 960201 Don't abort if sound driver not present, just set produce_sound to 0.
- New files keybuf.c and keybuf.h to record keypresses in the right
- order and without losing any. In cia.c, force 15 scanlines between
- keypresses, just to be sure.
- unixfs.device _does_ work with Kick 1.3: just don't trust what Kick 1.3
- sends in the startup packet. For now, disable more than one mount per
- command line.
- Started integrating Ernesto's new Mac sources.
- Remove superfluous includes from some files.
- 960131 Added Ed's unixfs.device (great stuff).
- Adding ULONGs to pointers is a bad idea on the Alpha if the ULONG value
- really is signed. Add some casts to LONG in (pc_p + src) expressions
- in genpu.c.
- If DMACON is written and copper DMA is enabled, do a COPJMP1 at once.
- Helps the "Interference" demo.
- 960129 More SGI fixes from Ed. Bugfixes and transdisk improvements from Marcus
- Sundberg.
- Remove EXTRA_DEFINES from Makefile. Breaks some systems.
- Move common sprite code from pfield_doline() and pfield_doline_slow()
- to new function pfield_sprite(). The same sprite may appear more than
- once on the same line, so don't shift out the bits of sprdata[] and
- sprdatb[] while displaying it (Turrican I).
- In xwin.c and svga.c, barf if LINUX_SVGALIB doesn't match the file
- being compiled.
- Make all .o files depend on config.h in the Makefile.
- No need to exit if sound driver unavailable, but -S given.
- Small debugger fix: Missing space in output.
- Fix for the sprite logic: Specifically, use a state variable indicating
- whether the sprite has been restarted after a VSYNC. Fixes most
- Turrican problems.
- 960124 Added Denis Sablic's patch for sound run-time option.
- Added Ed Hanway's patch for better Makefile, X mouse cursor blanking
- and more SGI compilation fixes.
- 960123 Include options.h everywhere.
- Handle 8 bit GrayScale visuals like PseudoColor.
- Remove C++ leftovers from joystick code.
- 960122 When using the joystick driver, the button test must come after
- handle_events() in vsync_handler().
- 960118 Removed all the remaining C++ comments. Changed all inline keywords to
- __inline__. Define __inline__ if not using gcc.
- Make proper prototypes for everything. Compile with maximum warnings +
- -ansi + -pedantic.
- Remove CIA_cycle(), obsolete.
- Reimplemented the STOP optimization in newcpu.c. Removed DualCPU
- support in CPU emulator.
- Real nasty bug in pfield_doline() fixed: sprxpos could be evaluated as
- negative, with not-so-amusing results. (Need to rewrite this in
- Oberon to get array bounds checking :-)
- 960117 Heroic effort: Rewrote the thing in C. This might help fix some
- problems with users being unable to compile it.
- Fixed a problem in hsync_handler(): Only call flush_line() for lines
- in the display window, i.e. when we did a prepare_line() before.
- Better code for relative branches: Don't use setpc(getpc()+x) calls,
- increment regs.pc_p instead.
- 960116 Reimplemented the function to load the Kickstart ROM. Use stdio instead
- of fstreams since this apparently does not work on the Mac. Detect 256K
- Kickstarts. Detect corrupt ROM images (calculate checksum).
- Added Ernesto Corvi's Mac port. Changed it around a bit, so it
- probably won't compile.
- 960115 Reinstate config.h options for X screen depth, so that DrawPixel() can
- be inlined in custom.cc for speed. xlinebuffer is now incremented in
- each call to DrawPixel() (for both X and SVGAlib) to get rid of some
- address calculations.
- 960114 Fixed X generic pixel drawing routine for SHM.
- Still trying to fix the harddisk emulation.
- uae.device no longer breaks the debugger (can step through uae.device
- functions now)
- Bugs affecting performance: SPCFLAG_STOP never got reset, and DSKLEN()
- would set SPCFLAG_DISK even if DMA was being turned off.
- Made slow memory a run-time option.
- Defer interrupts by one CPU instruction to give programs a chance to
- read INTREQR ("Seeing is Believing" and "Substance" demos)
- Added ScrollLock hack for X, too.
- 960113 SVGAlib version compiles again. Fixed SVGAlib mouse bug.
- Fixed SHM bug: Maximum scanline is 313, not 312.
- Sometimes, disk.cc missed a side change and would read the wrong data.
- Fixed. Apparently, this was the worst compatibility problem.
- Implemented trace mode.
- 960112 Changed layout of class amigamemory a little so that gcc can generate
- better addressing modes.
- Finally wrote functions in gencpu to generate MOVEMs.
- 960109 Integrated Ed Hanway's patches for better X support and run-time
- configuration of some options.
- Got rid of the direct VGA memory access. (Need to do this differently).
- Changed the method of drawing lines: custom.cc now tells the graphics
- code the line number and whether it needs to be doubleed before drawing
- it.
- Added Andre Beck's MIT-SHM patch.
- Remove warnings for newcpu.cc.
- 960108 Fixed exceptions in op_illg(): Need to decrement PC.
- 960107 Added an "uae.device" resident module at 0xF00000. This emulates a hard
- disk (fixed size 8MB for now).
- 960106 Moved some common code from pfield_doline() and pfield_doline_slow() to
- a separate function. This fixes a potential HAM bug (two static vars
- for the same value).
- Sound support for Linux. Works only with graphics off and the CPU
- slowed down.
- Better SVGAlib keyboard support.
- 960105 Added AvailMem(), AllocMem(), AllocAbs() and FreeMem() dummies.
- The Hardwired demo times the multiplication instructions and prints
- "This demo don't like Axel" if they are too fast. Apparently, Axel has
- a 68040. Added a WANT_SLOW_MULTIPLY option to config.h.
- Fixed the fast blitter emulation (seems to work now).
- 960104 Fixed all the ChangeLog entries from 95 that said 96 (oops??!)
- pfield_may_need_update() should check whether bitplane DMA is on.
- Added ersatz.cc and ersatz.h. The purpose of these files is to
- implement one or two Kickstart functions that are commonly called from
- bootblocks. This should help support some games and demos that only use
- the Kickstart as an initial track loader. So far, it's only good enough
- for one program.
- 951223 More intelligent event handling in the CPU emulator. Slightly faster.
- 951222 Optimize CPU emulation by inlining cctrue(). Also, the real PC no
- longer needs to be incremented each instruction. The real PC value
- now has to be fetched by m68k_getpc().
- Added direct screen access for SVGAlib, but it didn't help much. I'll
- probably remove it again.
- The gencpu executable is 2M smaller if it allocates memory
- dynamically.
- 951216 custom_bput() enhanced a little. Now remembers the value that was
- written in the other half of the register.
- Apparently, the USEx bits of BLTCON0 are ignored in line draw mode.
- (Silents-Demo)
-
- 951212 Release 0.3
- 951212 Included Alessandro's battclock patch.
- Fixed mouse autocalibration for wrong-aspect screens.
- 951210 Joystick support for Linux.
- Better color matching for 256 color modes.
- Rewrote most of the memory management in plain C, mainly to avoid the
- various template bugs in some compilers, but also because gcc can't
- handle the regparm attribute for virtual functions yet.
- 951209 Added Alessandro's patches for automatic mouse calibration.
- Tried to optimize the blitter loop a bit. Doesn't work.
- 951205 Added Hannu's patches for diskfile write support.
- 951201 More portability fixes, especially for weird compilers that workstation
- vendors ship.
- 951125 More keys for X, some keyboard support for SVGAlib (slightly
- dangerous); beginnings of US keyboard support.
- 951124 256 color mode support for SVGAlib. FAST!
- 951123 Tiny tweak to central loops in playfield code results in much better
- assembly. Apparently, GCC does not feel too good about optimizing
- reference variables.
- 951113 Bug fix in the events code (nextevent must not be changed while events
- are being processed).
- 951112 The playfield can now be drawn with the right aspect (i.e., every line
- twice). Slower, but looks nicer and supports interlaced mode
- (flickerfree!). The first 29 lines (blanking interval) are omitted
- now to fit everything in 800x600.
- Oops, disk drive identification did not work. Fixed, all four drives
- appear now.
- Oops, CIA_reset() was there all the time but never got called.
- Optimized the planar->chunky conversion in pfield_doline() a little.
- This really is time critical.
- 951111 If colors change on a line, we might still be able to use the full
- line update, if the change occurred outside the DIW. Have to be a
- little careful, though.
- Playfield code now uses real pointers again, but makes sure it can
- read enough bytes to complete the current line without segfaulting.
- Oops, my "better estimate" (see below) was a mistake. Restored the
- original 4 hw cycles per instruction relation. This slows down the
- emulator while booting (more screen refreshs), but speeds up many
- demos that otherwise spend most of their time waiting for a specific
- raster position.
- Playfield modulos must be added immediately when DDF stops. (WOC demo)
- Portability fixes in disk.cc (null pointers).
- Implemented average frame rate calculation ('c' in the debugger).
- Debugger fixes.
- Sprite fixes (height was wrong, wrong priorities in fast update)
- Added an AutoConfig expansion RAM device. The OS seems to recognize
- it, but breaks sometime later (seems to be the same bug that kills
- the emulator when there's RAM at 0xC00000).
- SVGAlib now has mouse support, too.
- HAM mode implemented.
- 951110 Implemented fast complete line playfield update. Switches back if
- necessary. Fixed attached sprites bug.
- Copper wait no longer slows down the CPU emulation. (there were
- lots of new copper bugs because of this, but I hope I fixed all
- of them).
- Changed cia?t? from UWORD to ULONG, since there were overflows in
- the assertion (because of 65535+1 == 0).
- 951108 The DIVS remainder could have the wrong sign.
- New HAVE_BROKEN_SOFTWARE define in config.h that makes the emulator
- mask out the high byte of all addresses.
- Wrote genblitter.cc and replaced the awful code in blitter_blit()
- and blitter_line() with calls to the generated function.
- 951107 Implemented ?BCD. These don't really work yet.
-
- 951106 Release 0.2
- 951105 Fixed a bug in the new CIA timer code.
- Fixed flag settings for some cases of ADDX/SUBX
- 951104 Changed the main loop a bit - call all the *cycle() functions only if
- it is really necessary. I hope everything still works - at least it is
- twice as fast now :-D
- Improved mouse emulation - avoid overflows, permit "wraparound".
- Added debugger 'g' command.
- Removed some useless casts from the CPU emulator.
- Added a configuration option to prevent checks for odd addresses. Only
- very bad programs need this check.
- 951103 The sprite emulation sometimes did not work too well, especially with
- dual playfield mode. Hopefully fixed.
- 951102 The 10 cycle counter is more like a 5 cycle counter in this
- implementation. (Fine, that makes floppy loading even faster :-)
- Implemented mouse movement. Totally out of sync with the X pointer,
- but at least something.
- Found out about the XAutoRepeatOff() function. Real useful.
- DualCPU mode works again.
- Corrected flag settings for CMPA.W.
- Fixed DIV instructions: Don't change dest in case of overflow.
- 951031 The PC is now converted to a real pointer. This is safe (much safer
- than converting bitplane pointers, since the PC always has to be valid)
- and should speed things up a little.
- 951029 Some primitive event handling: 2 mouse buttons and 1 joystick button
- are emulated, as well as parts of the keyboard (only german mapping).
- Fixes: Delay values and sprite widths are always LoRes. Playfield 2
- uses colors 9..15.
- Implemented a frame rate configuration option that can speed up the
- emulation quite a bit.
- 951028 A-ha. The 68000 has one strange feature after all. MOVEM.W to Dn sign
- extends the value to a longword.
- Katakis expects that accessing odd addresses causes exception 3, so
- we have to emulate this. *Sigh*
- Do at least something with the index pulse bit. It's more or less a
- toggle now.
- Implemented sprites & dual playfields, both with small glitches.
- 951027 When LOF is set, the frame is one line longer.
- 951026 Implemented a preliminary diskfile type for special formats. Turrican
- boots up correctly (crashes if I want to play a game, though).
- Implemented EHB and added a few missing masking operations in the color
- handling.
- Fixed the absw addressing mode - need to sign extend here as well.
- 951025 Fixed another extremely stupid bug, this time in the playfield code.
- Each pixel was calculated four times...
- Increased the size of the apixels array - this was being overrun.
- 951024 Fixed an extremely stupid bug in flag settings for byte and word
- operations.
- The "sectors until gap" field must be in the range 1..11 instead of
- 0..10, or very bad things will happen if it is used to calculate a
- blit size.
- 951021 Don't use real pointers to fetch bitplane data - too many segfaults.
- Delay the copper after executing an instruction, or wait sequences like
- FFDF FFFE 0200 FFFE won't work.
- Some programs expect that the CPU is completely turned off if the
- blitter nasty bit is set. So be it.
- The RSI Megademo chokes when disk DMA fetches two syncs. Leave one out.
- The LOF bit wasn't set correctly.
- 951020 Blitter fixes: Load fill carry from FCI each line; keep the masked
- value of bltadat in bltolda
- Give the CPU twice as many "cycles" - this still is not even remotely
- correct, but a better estimate.
- 951017 Added SVGAlib support. Unfortunately, my graphics card isn't fully
- supported by the current SVGAlib version.
- 951015 More small optimizations to memory.h and custom.cc.
- Added code for 256 color screens. The type of screen has to be
- selected at compile time.
- 951014 Modified the memory management to be (hopefully) a little more
- efficient.
- Changed gencpu.cc to generate functions and a big function pointer
- array instead of the old case labels. The generated C++ files now
- compile a lot faster, and the code should be better as well.
- 951013 Implemented pseudo POTGOR to keep the RMB from being detected as
- pressed all the time.
- GenerateDecTab() generated TRAP incorrectly.
- Made some more instructions (MOVE.B A0,D0 etc) illegal in gencpu.cc.
- Fixed X colors. Fixed data fetching for HiRes screens.
- 951011 EXT.WL instructions set the flags.
- Implemented second CPU emulator, plus "DualCPU" option. The new CPU
- emulator is generated automatically from a file called table68k by
- a program called gencpu.
- 951002 Removed version information from the file headers.
- Removed some sillinesses in custom.cc.
- DSKLEN bug fixed (mask out 0xC000).
- Playfield code rewritten. Now supports horizontal scrolling. Implemented
- some primitive color support.
- 950927 Fixed predecrement/postincrement addressing with byte size for the
- stack pointer.
- 950926 Fixes to the disk code: Terminate disk DMA, flip disk side, read more
- than just two sectors during disk DMA, fix checksum calculation.
- Fixed copper comparison bugs.
-
- 950901 Release 0.1
- 950826 bugfix in GenerateDecTab(): LEA.W instructions were generated.
- 950312 New file disk.cc, for (guess what) disk support. Doesn't work yet.
- 950311 Multiplication instructions were generating 16 bit results.
- Sign extension was wrong in some places.
- Removed bugs in the blitter (one word width: ALWM & AFWM and line mode)
- The Kickstart logo looks perfect now.
- Playfield routine should check BPLCON0 instead of BLTCON0
- 950309 ASR D8,D0 is not a valid instruction.
- Bitplane pointers were not incremented.
- Copper comparison didn't work. COP2LC and bitplane pointers were written
- incorrectly. Fixed.
- Something that bears a striking resemblance to the familiar Kickstart
- logo now appears in my X window!
- 950306 ROR used to set the X flag. Bug fixes in GenerateDecTab.
- More bug fixes in several 68000 instructions.
- Improved blitter. ?????? KS1.3 doesn't seem to set BLTDMOD on a
- line draw. What is this??
- Fixed stupid bugs in playfield code.
- 950305 fixed bugs in opcode generation and interrupt handling. Implemented
- STOP. Fixed flag settings: Result wasn't masked. Ooops!!
- ADDQ #imm,An doesn't set flags.
- One-shot timer mode didn't work.
- Implemented blitter, doesn't work.
- Some primitive and slow playfield support, only to make the things that
- hopefully will soon appear visible.
- 950304 CIA timers ought to work OK. Copper is emulated.
- Emulator loops infinitely when trying to initialize the console.device
- 950303 experiments with X, figured out how to open a window and draw pixels.
- No graphics emulation yet, though.
- 950301 Nearly all instructions work.
- Fixed supervisor mode stack.
- The memory manager now handles CIA chips.
- 950228 Bug fixes in 68000 code, exceptions and more instructions implemented
- Memory management extended to handle custom chips as well.
- Debugger improved.
- Kickstart passes memory & CPU type test, builds up some system
- structures.
- 950227 MC68000 & little debugger for tracing. It can execute the first couple
- of KS1.3 instructions, but doesn't get past the memory test.
- 950225 Work begun
-