uae-wii/src/ChangeLog

2348 lines
137 KiB
Plaintext
Raw Blame History

9C0702 Correct an overflow problem in the CIA code.
9C0407 Sprite code updates; correct CIA memory access handlers (Toni).
9C0306 Make w/d representable for fsdb_win32.
Don't reorder children of directories; this causes duplicates in
exnext.
Reorder the code for the 9/10 vsynctime hack a bit.
Add code from Toni to remember the last value written to a custom
register and to return it when reading from a write-only reg - this
seems to match actual hardware behaviour.
Add some more blitter tweaks (Toni).
9C0227 When waking up the copper from a blitter wait, recheck that vpos is
larger than vcmp - especially with masking going on, this may not be
the case.
X11: When changing picasso resolution, reinitialize everything - our
bitmap might be too small otherwise.
When configuring hardfiles, use specified blocksize, not 512 (Toni).
In SPRxCTL_1, don't examine vstart position before computing it (Toni).
9C0225 Some cfgfile fixes, more blitter timing changes and one big sprite
statemachine update from Toni.
Some copper timing fixes.
Fix flag bit confusion in action_fh_from_lock (taken from earlier
WinUAE).
9C0220 Blitter timing update from Toni.
Copper timing "theory" changed (me/Toni).
If we have a rdtsc insn, always synchronize with realtime in
vsync_handler.
Don't reset the lof bit when restoring state.
When restoring disk image names, put them in changed_prefs (Toni)
Return error in action_seek if trying to seek past end of file (Bernd
Roesch).
SDL fixes by Maik Qualmann.
Fix for gtk warnings when updating floppy LEDs (Maik Qualmann).
9C0216 Fix the clockspeed detection - we were getting lots of alarm signals
even after it had finished.
Some tweaks for the GUI - and also fix the problem with waiting on the
GUI semaphore even if no GUI is present...
More accurate blitter timing (Toni).
Support for A1000 bootrom and CDTV/CD32 extended ROMs (Toni).
Fix filesystem lockup with "copy dh0: ram: all".
Fix for JIT and more than 2MB chipmem from Toni
Make fsdb_win32 accept more valid Windows filenames (Toni).
9C0215 Fix filesystem reset code that used to access freed memory.
9C0213 gtk UI fixes from Maik Qualmann.
9C0113 Configury & bsd compilation fixes from Krister Walfridsson.
Match up lock/unlock calls in wgfx_do_flushline (found by Axel
Doerfler).
Fix potential crash taking strlen of NULL in filesys.c (Axel Doerfler).
Set diskdmaen to 0 in dsk_dmafinished (Toni).
9B1230 lockscr/unlockscr fixes in drawing.c.
Add sdlgfx from Bernd [4] Lachner.
Filesystem asm code improvements from Toni (make it pic, call
setup_exter earlier in the boot sequence, etc.)
Also add Toni's patch to make rtarea position configurable (keep it
at 0xF00000 for now, though).
Avoid installing filesystem stuff if user didn't request to mount
directories.
BEAMCON0 is only available with ECS Agnus.
Revert some bogus parts of the write_log patch.
9B1219 Add some missing clipping to the Picasso code.
Limit number of illegal-mem warnings.
9B1217 Fix the GUI crash when changing floppies.
Changes to support programs that change between HAM/no HAM in the
middle of a line.
Some bug fixes, and a big fprintf->write_log patch from Alex Kazik.
9B1125 Panning support for Picasso96 (in part from WinUAE).
More state save fixes from Toni, and a small disk.c update as well
which corrects track/gap lengths.
More evolution of the AHI code.
9B1124 Merged a few more small pieces from WinUAE (larger pieces in case of
the Picasso code).
CLXCON2 was never called or statesaved. Fixed by Toni.
Sound sample frequency now always based on PAL timings.
9B1123 Goodness! Massive memory corruption bug in picasso96.c - passing
last color changed to DX_SetPalette instead of count.
Fixes for the AHI code.
Changed prefetch emulation to be more similar to the one MAME uses.
Trace mode fixes (Bernd Roesch & myself).
9B1122 Redo the ExNext code in the filesystem to make sure we always match
opendir with closedir and to fix some renaming problems.
Fix hd changing code in gtkui.
9B1121 Mini-merge of noncontroversial WinUAE filesys.c code.
Add harddisk page to gtkui. Also change gui behaviour to wait for
the user to unpause before starting the emulator.
Add Toni's drive-led display.
Fixed a rather amazing source of crashes (we could fail to notice
the end of the frame in some cases).
Default to scanline mode.
Some tweaks to the SDL driver and the Win32 gui, mostly buffer-size
related.
Moved C source files back from tools directory (but still build them
there) to preserve my CVS history.
9B1119 Move all the build tools (gencpu, cpuopti etc.) into their own
directory which is configured separately. This was necessary to
avoid picking up SDL CFLAGS (which can #define main to _SDL_main, and
that breaks if you don't link with SDL), and to make cross-compiling
at least a little more likely.
Remove sanity check for SDL header file - rely on sdl-config getting
things right (not that we have much choice).
Move thread support code past sound code in configure, and make sure
that SDL sound enables threads.
Move sername into options structure.
Check for existance of isinf/isnan before using them.
Rather large WinUAE merge - this tree compiles again under Windows.
Most of the additional features are missing though.
9B1118 Restore code to mirror banks for 24 bit address space which got lost
when all the JIT memory changes were put in.
Speed up the CPU time calibration code.
Fix the broken file selector handling in the gtk ui. Add kickstart
selector.
Don't call XCloseDisplay, it apparently leads to crashes.
Try to solve the "missing write_log" problem in a sane way.
SDL joystick support.
When configure detects win32, use fsdb_win32 rather than fsdb_unix.
9B1117 Proper masking for DDFSTOP; proper handling of AUDLEN == 0, changed
delayoffset code, gencpu BFINS fix, and lots of disk updates (all
Toni).
Some additional regs for move2c/movec2 (also by Toni IIRC)
9B1115 COLOR_READ typo fix (Toni).
9B1024 Filesystem reset leak fixes (Brian)
Allocate enough memory for custom state saving.
bploff renamed to bpl_off.
AGA copper cycle diagram (Toni)
Disable disk_data_used optimization.
9B0926 Delayed palette setting for Picasso modes. Also fixed problem with
palette setting in CLUT emulation - we need to redraw the entire
screen if that happens.
9B0921 Miscellaneous small bugfixes. Delete some obsolete code.
9B0907 Beginnings of SDL support. Exterminated some penguins.
9B0825 Some xwin.c fixes from Maik Qualmann.
9B0730 Some sprite state machine tweaks. Fix sprite vs. DIW comparison.
HAM linebuffer was too small by half - oops.
Make absolutely, positively sure that when hsync_handler calls
sync_copper_with_cpu, we don't take any invalid shortcuts.
Memory management changes for JIT (Bernie [2], mostly).
9B0729 Silly mistake - need to call flush_plane_data unless plfleft is
-1, even if no planes were enabled.
9B0728 Small hack to reduce the time we lose with unnecessary
disk_doupdate_read calls.
Avoid calling flush_plane_data if we have no bitplanes enabled.
Tweak the SPCFLAG_INT handling to make "Delirium" demo work.
Limit rate of DDF warning messages.
Adjust display parameters so that things are shifted to the left
even more.
Fix (hopefully) CIA & blitter saving code.
9B0727 Copper code reorganized; speedup code rewritten. Can now be
enabled with a GUI setting.
Fixed the delayoffset stuff.
9B0725 AGA sprites, and some patches to sprite/playfield collision code,
mostly by Toni.
Fixed a small sprite restore problem; added missing code to map
fastmem banks when restoring them.
Some more state saving updates from Toni.
9B0724 Fix a nasty bug in the copper SKIP instruction introduced by recent
changes.
Update the FAST_COPPER code. Not quite enabled yet.
More work on the memory configuration stuff.
Fix CPU type writeout in cfgfile.c (taken from WinUAE source).
Move the WOC demo BPLCON0 fix to compute_toscr_delay (Toni).
Added Toni's new disk patches, which include HD disk support by
Adil Temel.
Rewrote the memory and audio save/restore code.
Mask DDFSTOP with 0xFE, not 0xFC.
9B0723 Yet another new and correct copper state machine (this time for sure)
Fix some AGA problems in DDF speedup code.
In gencpu.c, branch insns return a hardcoded cycle count; this had
not been updated for the CYCLE_UNIT stuff. Fixed.
xwin.c: If mouse is grabbed, we don't need mousehack.
Don't clear audio state if produce_sound == 0; this causes problems
if we want to turn the sound back on.
If an audio channel had a period of PERIOD_MAX, allow AUDxPER to
set its evtime back to a reasonable value.
Massive cleanup of memory initialization code; it will now use changed
prefs on reset. Added some memory options to gtkui.c.
Added Toni's state saving code, then added gtkui options and code to
initiate saving/restoring.
9B0722 filesys.c: Fix writeout of hardfile params (Bernie [2])
Add an A1000 Kickstart disk loader (Gerald Schnabel). Got rid of
the automount_uaedev code; we can detect the Kickstart version and
do the right thing.
Deleted a few unused variables (Toni)
Avoid aborting in decode_ham if Amiga code turns on the HAM bit but
has too few bitplanes (found by Toni).
Make the dummy mem bank return other values than 0; helps some
stupid memory detection code.
Implemented a little exec task lister for the debugger.
Added new debugger commands from Mark Cox. Improved his copper list
debugger by adding recorded timing information to it.
MOVE16 fixes from Gwenole Beauchesne.
xBCD fixes by Maik Qualmann, with some additional flag fixes by myself
(ABCD & SBCD behave exactly like on a 68000 now; dunno about NBCD).
9B0520 AGA bscan2 fixes and disk.c kickstart speedup fixes from Toni.
Remove bogus changes I made to one of Toni's earlier disk.c updates.
Call RethinkICRA/B from INTREQ (suggested by Toni).
Properly save mixed_stereo setting.
NEGX uses X and Z (Bernd Roesch).
Danish keyboard support (Jesper Bojesen).
9B0311 Repair "emulated but no output" sound setting.
9B0310 Fix massive bug introduced in do_cycles_slow with the rescaling
changes.
CLXCON logic updated for AGA (Toni). Change meaning of collision_level
and add support for it in cfgfile.c.
9B0309 Fix problem where a fsdb file could prevent deletion of otherwise
empty directory discovered by Torsten Enderling.
Rescale return values of CPU emulator functions.
9B0225 Undo parts of the audio changes that made the "accurate" setting the
default.
9B0221 Make fsdb_unix compile again.
9B0219 Fix ddf for cases where start isn't aligned to fetchunit.
Fix some problems with the sound code going into infinite loops or
crashing.
Try to re-add Toni's ddf delay fixes properly.
Added a fix from Krister Walfridsson for X11 SHM code.
Rename OBJECT_NOT_FOUND to OBJECT_NOT_AROUND (not sure why, but the
win32 port does this; Fellow picked it up as well...)
Give in and allocate ainos with xcalloc.
Import fsdb_win32 code from Fellow.
Some tidyup and fixes in fsdb code.
Lose the lastdiv10 variable, and update CIA timers when reading them
(mostly by Bernie [2] Meyer)
Move reset_uaedevices and get_new_device to filesys.c. Add extra
parameter to get_new_device.
9B0213 Fix mouse pointer jumping bug in X11 code (Ralf Hoffmann)
Scaled event handling by a factor of 512. This allows more accurate
sound output frequencies, as well as more fine grained CPU speed
settings.
Implemented totally untested emulator side AHI support.
9B0211 Partially reverted changes made to the audio event code in 0.8.0.
Implemented "mixed" stereo.
9B0210 Fixed invisible sprite bug - sprite_width got a new meaning, and not
everything had been updated.
9B0121 cycles => get_cycles () (from Bernie [2] Meyer's JIT patchkit)
9B0120 Final bugfix in speedup code (plfleft got set too early).
9B0118 Fixed SPEEDUP code for AGA. Speedup now starts when fetch_state is
fetched_plane0.
9B0115 First batch of AGA playfield changes (Toni & myself).
9B0110 Small fix for the m68k_run macro (Bernie [2] Meyer)
9B0109 Use ntscmode from prefs structure (Dwayne C. Litzenberger)
Some 040 FPU fixes (Bernie [2] Meyer)
Delay DSKREADY a while; fix other small disk bugs (Toni Wilen)
9A0902 F0FF10 is now a puts () calltrap.
9A0830 Add some missing initializations in filesys.c, thanks to debugging by
Harald Frank.
9A0827 Fix a crash with framerate != 1.
Don't allow programs to see left & right or top & bottom simultaneously
with the keyboard joystick replacements. (Gee, games on the CPC and on
the Amiga actually have something in common - some of them crash when
the joystick is pushed in too many directions at the same time...)
9A0825 Put in the new sprite code. This has existed for many months but
I've only now found the final bugs.
New version of Bernd Meyer's special_mem code. Also add his
set_special/unset_special code, the noflags changes for gencpu,
and a fix for cpuopti's string matching.
Tiny clarification in table68k.
Add 68040 support from Basilisk.
readcpu.h is now included from newcpu.h.
9A0824 Rather massive overhaul of the DDF code. Many other timing fixes
(copper state machine mostly) (Sam Jordan and myself)
Get rid of stupid optimizations in color recording.
Synchronize CPU and copper in custom_wget.
9A0816 Introduce variable "special_mem", set it in each memory handler
that doesn't work on real memory (Bernd Meyer).
9A0815 Fix a really stupid bug in cfgfile_strval.
Nonfunctional support for switching between windowed/fullscreen modes
in gtkui.
Add (semi-broken) support in the debugger to create a trace logfile.
Take out most port-specific flags handling; x86 version kept with
slight name changes to indicate that this is code is suitable for
other ports as well. Took out HAVE_GAS while I was in configure.
9A0811 Fix the line doubling slowdown.
9A0809 Software autofire.
Remove one line from Makefile.in in the hope it will fix the build
errors people are seeing.
9A0807 Tighten up some minor aspects of spcflags handling.
Fix an AGA bug in customreset.
Set default CPU speed to approximate a A500. Tweak gencpu so that the
timings for this are more accurate.
Ignore T0 bit if not emulating a 68020.
Add an option to set the number of emulated floppy drives.
Improve the mfmcode function a bit. Faster and more accurate.
More SCSI patches from Patrick.
Add gui_data structure from WinUAE. Turn on gui leds again.
9A0725 Fix incorrect define of m68k_run for non-x86 systems (could have
sworn I already fixed that).
9A0723 Some SCSI patches by Patrick Ohly (which I got two months ago... oops)
Filesystem fixes from Brian.
AGA updates from Toni.
9A0627 Apydia loader fixes from Toni.
9A0611 Fix bug in filesys.c causing in-use ainos to get discarded. Thanks
to Brian for the analysis.
9A0608 Added some disk.c changes from Toni and a crude hack of my own to
speed up disk accesses done by the Kickstart.
9A0330 Change blitter not to translate memory addresses to native. Had to
disable 32 bit blits.
Floppy code changes (Toni Wilen)
Delete GGI port.
Fix toggle_inhibit_frame (Brian).
9A0228 Some WARPUP fixes, and changes to accomodate broken Amiga gzip (Sam
Jordan).
9A0221 Tweak POTGO a bit. Seems to work with BC Kid now.
9A0220 Fix off-by-one errors in expansion.c (Toni Wilen).
Remove AGA checks in DDFSTRT/DDFSTOP (Toni Wilen).
Turn off/restrict some warning messages.
9A0209 Fix some problems where the blitter nasty flag wouldn't ever get reset.
cia.c: Set all parallel port related bits to 1 when reading.
9A0208 gencpu.c: Fix saved PC for division by zero exception (found by Sam
Jordan).
9A0131 update_copper: Mask until_hpos properly.
Delay values are masked to 3 bit in hires mode (Sam Jordan).
9A0102 Only delay horizontal copper wait if vertical position matches exactly.
Tweak vblank end position for sprites.
Calculate playfield borders more accurately for case where we have
sprites.
9A0101 Reintroduce ev_copper; use it sparingly for longer waits within a
single line (but _not_ to time reads).
Fix a dumb bug in yesterday's changes that screwed up scrolling.
991231 drawing.c: Cruftectomy. genp2c.c: Gone. X86.S: mostly gone.
991229 Always use NTSC vblank_lastline for sprite purposes.
Make sprite logic recognize vertical stop even if vertical start has
not been reached (found by Sam Jordan).
Prevent move2c/movec2 instructions from incrementing the PC if they
raise an illegal instruction exception (found by Toni Wilen).
991212 ncurses port compiles again.
Disable serial interrupts in custom.c; they break things.
991208 Add a missing decide_line call in update_copper_1.
991206 Fix copper emulation to use state machine figured out by Sam Jordan.
991205 Fix event table corruption in disksync_handler.
991113 gencpu.c: Fix a problem with BTST.
991110 fpp.c: Initial set of changes merging code from Lauri Pesonen.
991024 Add missing type in m68k_run1.
Divisions by zero clear overflow bit.
991023 Fix compilation problem for ! HAVE_STEREO_SUPPORT.
991022 Rewrite disk read code to transfer some DMA words every raster line.
fpp_movem_index1 and fpp_movem_index2 were reversed (Brian King, Sam
Jordan).
Fix accuracy of fpp fix insns (Sam Jordan).
Allow ports to define their own FP 68881/host conversion functions (Sam
Jordan).
Get rid of all the HAVE_GET_WORD_UNSWAPPED code.
Fix prefetch for insn opcodes (Sam Jordan).
Fix call insn syntax in X86.S.
Tidy up sound interpolation support.
Readd old command line arg parsing.
Change "long unsigned int" to "unsigned long" in a couple of places.
Use Sam's version of the filesys.c fixes (action_parent_fh,
action_change_mode).
Fix a place in disk.c where a mfm buffer was zeroed instead of 0xaa'ed
(Sam Jordan).
991006 CPU emulator fixes by Christian Bauer
tui.c compilation fixes by Christof Petig.
Fix operand in one insn in X86.S (Brian).
zfile.c fix for filenames with embedded spaces (Ingo Ruhnke).
linux-ppc configury patch (Holger Jakob).
s,static __inline__,STATIC_INLINE, (Sam Jordan).
cfgfile.c: Don't use "t" modifier in fopen (Sam Jordan).
serial.c: Don't close file if fd < 0 (Sam Jordan).
filesys.c: Open files on readonly devices with O_RDONLY (Sam Jordan).
Fix bugs in parent_fh and change_mode actions (Sam Jordan).
WARPUP patch (Sam Jordan).
990621 Initial version of Richard Hoffmann's sound interpolation patches.
Fix a crash in action_set_comment.
De-inline 68k trace code.
990508 Fix rdtsc asm statement to show that edx is clobbered.
gtkui.c: Add pause button (Patrick Ohly)
configure.in: Check for -mpreferred-stack-boundary compiler option
and use it if found to set a sane value.
990429 X11 patches by Patrick Ohly.
Filesystem code extended to keep a simple database with information
about each file that is not representable on the host FS, such as
script/pure bits or filenotes.
990417 Bits and pieces merged from the Win32 port; mostly options stuff. Got
rid of getopt; added chipset options to prefs structure.
990411 Patches by Patrick Ohly: SCSI support and timehack tool.
990410 Applied easy parts of Toni's latest AGA patches.
990315 Attempts to fix Picasso crashes in SVGAlib version.
990216 picasso96.c: Some optimizations.
cfgfile.c: Save target specific options. Allow simple/smart choice
for centering options. Delete mount_data junk, substitute immediately.
Whitespace handling fixes. Fix config_description typo.
m68k flag handling redone.
990212 Implement rotate instructions without loops. Some other m68k
optimizations.
Some configure.in fixes.
990122 gtkui.c: Fixes for gtk 1.1.13.
990113 genp2c.c: Don't include custom.h.
990109 Some fixes in cfgfile.c. Make svga.c compile again.
981229 Miscellaneous fixes in the new config file stuff.
In config files, allow 68ec020 as CPU type, and get rid of 24 bit
addressing option.
Make the get_disp_ea non-inline.
SGI sound support (Ari Heikkinen).
More updates by Brian:
audio.c: Handle frequency, too, when changing sound prefs. Do some
work in update_audio even if not generating sound output.
filesys.c: Request 50 buffers in our parampacket.
Assorted right control key fixes.
Some updates in od-win32 (not nearly done...)
981228 Config file and option handling redone; based on work by Brian.
Rename UAEn: devices to DHn: (Brian).
filesys.c: Implement ACTION_CHANGE_MODE, ACTION_PARENT_FH; add support
for variable hardfile blocksizes (Brian).
Some Picasso96 updates (Brian).
981226 Win32 fsusage.c fixes; zfile bug fix; gui_fps addition (Brian).
981221 Fix gtkui to work with newer versions of gtk.
Fix gencpu so that FPU emulation doesn't crash when unswapped word reads
are available.
981129 gencpu.c: Delete all the queue_amode stuff again.
xwin.c: Allow switching between DGA and window mode (Marcus Sundberg).
DGA seems broken in X 3.3.3, however :(
981011 Teach cpuopti.c about epilogues that increment esp by popping.
980930 Add BSD socket code (Mathias Ortmann).
980923 filesys.c: Implement FH_FROM_LOCK (Brian King)
980823 xwin.c: French keyboard patch (Rapha<68>l Poss).
980810 Fix RDTSC detection (Rapha<68>l Poss).
newcpu.c: Patch by Brian King to display what kind of CPU table is
built.
980716 More AGA patches: use new macro GET_PLANES to calculate number of
bitplanes from BPLCON0; adapt the copper code; add BPLPT[HL][78] and
BPLDAT[78] (Toni Wilen)
980715 Change sd-uss/sound.c not to keep a file open in setup_sound, to
support reconfiguration.
980713 Fix m68k detection in configure.in. Clear execbase after allocating
chipmem (Holger Jakob)
od-dos update, tui.c patches (Gustavo Goedert)
Get rid of --enable-sound, always enable sound.
Make svga.c compilable.
980712 md-ppc-gcc patches (Holger Jakob)
980707 gtk ui: Better CPU speed selection.
Move initializations from add_filesys_unit to set_filesys_unit.
980706 AGA patches by Toni Wilen: Call calcdiw when changing fmode; fix
references to bplcon variables to go through dp_for_drawing; ifdef out
some code that's too hard to fix for now.
"Fix" the AGA color code. In pfield_linetoscr_aga, add lframe_end and
diw_end parameters and use them. Add some fill_line code for AGA. Make
sure no code touches acolors if [AGA_CHIPSET != 0]
New function finish_line_aga.
980705 drawing.c/custom.c: Get rid of line_changed, replace with a single
variable thisline_changed. Pass it to hsync_record_line_state and
evaluate it there. Get rid of BORDER_PREV and BORDER_NEXT states;
add LINE_BLACK/LINE_REMEMBERED_AS_BLACK to implement scanlines option.
Remove code in pfield_draw_line that checks line_changed.
980702 filesys.c: New function move_filesys_unit.
Win32 GUI fixes.
980701 gtk UI beautification and code cleanup (Michael Krause)
Beginning to make audio code run-time configurable (mostly by Michael
Krause)
Fix off-by-one errors in memory check handlers (Jake Hamby)
configure: Add AM_CYGWIN32, AM_EXEEXT and AM_MINGW32 and fix some Win32
configuration problems.
genp2c: Fix symbol name braindamage.
md-i386-{gcc,watcom}.c: Don't do machdep_init when [_WIN32].
Many Win32 compilation fixes.
filesys.c: Attempt to fix the mount code chaos.
980629 MOVEP bug fixes (Philippe Gerin)
Comment out code using readdir_r again.
980628 gencpu.c: Generate an end label only when it's needed.
configure.in: Check for windows.h, ddraw.h, sys/utime.h; check sizeof
__int64; check whether a small DirectX program compiles; check for
Watcom C; don't do GNOME_FILEUTILS_CHECKS when compiling on Win32
without GNU C; use AC_EGREP_CPP in some places instead of compiling a
file by hand; check for GAS .p2align feature; check for USE_UNDERSCORE
with a small test program; add code to set up od-win32/md-i386-watcom
directories when appropriate.
genp2c.c: Use GAS .p2align feature; don't generate .type directive.
Rename md-*/memory.h to md-*/maccess.h.
More fixes in Win32 code.
Add wcc.sh and wrc.sh, two scripts to make it possible to use the
Watcom C compiler and the resource compiler in a Cygwin32 build
environment.
980626 Change zfile.c not to use fopen_del.
980614 Delete ihf_sem stuff.
picasso_refresh now nonstatic and called by check_picasso after a
notice_screen_contents_lost call.
More functions to access filesystem mount information.
More Win32 code.
980613 Use an AC_TRY_LINK block to check for libpthread.
980611 Rename lockscr/unlockscr to gfx_{lock,unlock}_picasso and add new
functions lockscr/unlockscr which are now called by drawing.c.
xwin.c: Clear picasso_invalid_lines in graphics_subinit and when
doing an XPutImage for a refresh.
New function reset_all_systems, which is a bit misnamed at the moment
because it only resets the filesystem. Called from m68k_go when a
reset is needed.
In filesys_prepare_reset, examine unit_pipe instead of self to
determine whether a unit has a thread that needs to be killed. Move
the reset_state and reset_sync_sem variable to UnitInfo so they are
available at all times.
Don't need to call finish_drawing_frame if we do a reset, it was
done a couple of lines earlier.
In uae_reset, do nothing if any reset or quit operations are in
progress.
Make DMACONR static.
980609 Add memory size fields in struct uae_prefs. New variables
allocated_xxxmem for every block of memory that holds the actual
amount currently allocated, copied from the preferences at allocation
time.
Create a new structure "uaedev_mount_info" to hold filesystem mount
information. Add a pointer to one of those in struct uae_options,
and copy it from currprefs to a filesystem private place when
starting the filesystem threads to a work area.
Terminate filesystem threads during a reset, and restart the whole
filesystem code afterwards so that prefs changes are noticed.
980608 If check_prefs_changed_gfx returns nonzero, or if we switch from/to
picasso mode, call notice_new_xcolors and notice_screen_contents_lost.
Delete the frame_do_semup crap.
980606 Create config.h link in configure, not in Makefile.
980604 xwin.c: No longer need picasso_max[wh]. Improve picasso invalid lines
code a bit more. Fix some dithering bugs.
gtkui.c (add_checkbox_widget, add_radio_widget): New helper functions.
Patches by Marcus Sundberg:
Make X11 picasso clut emulation mode work in DGA
gfxutil.c (setup_dither): Free redvals.
980602 Split out init_aspect_maps from reset_drawing.
Call check_prefs_changed_gfx from vsync_handle_redraw, and initialize
row and aspect maps if it returns nonzero.
Use an enum instead of integer values to communicate between
hsync_handler and hsync_record_line_state.
gtkui.c: Use gtk_window_set_title (Marcus Sundberg)
xwin.h: Add lockscr/unlockscr prototypes.
980601 Move check_prefs_changed_xxx into vsync_handle_redraw.
Make ersatz.c a little more crash-proof.
980531 New graphics specs 'a' and 'p'. Support them in the X11 version.
980530 sysdeps.h, posixemu.c: Change (char *) to (const char *) in the
arguments of some of the posixemu functions.
sysdeps.h: Delete getopt declaration. Include "getopt.h" in main.c.
aclocal.m4: add fsusage.c support from Gnome.
fsusage.[ch]: New files from fileutils, slightly modified to fit
into UAE and to add Win32 support. Adapt do_info filesys.c to use
it, and delete all the old cruft.
Some updates for the Win32 port.
980529 Patches for X11 version by Marcus Sundberg (Picasso invalid lines
optimization, XShm availability check, cleanup, etc.)
980528 Add field emergmem to struct vidbuf_description, and change
pfield_draw_line to use it.
980516 Patches by Samuel Devulder and Holger Jakob: update Amiga port,
add support for compiling cpuemu.c in seveal steps again, add
cheatsearch in the debugger.
980515 GGI patches (Christian Schmitt).
sd-mme: New directory (Marcus Sundberg).
Changes in the X11 version to support mixed DGA/normal binaries,
hotkeys, and mouse grabbing (Marcus Sundberg)
xwin.c: Copy a bit of code from Win32 port that constrains
lastmx/lastmy to real coordinates when ievent_alive.
980510 gencpu.c: Slightly better flag generation code.
picasso96.c (wgfx_flushline): Don't do anything if Picasso screen
is invisible.
980508 Don't disable GGI if we can't find svgalib.
newcpu.[ch], gencpu.c, md-i386-gcc/memory.h: Implement unswapped
word reads for opcodes.
980505 drawing.c: add missing #ifdef X86_ASSEMBLY.
980504 More BSD fixes from Krister.
xwin.c: Call XAllocColorCells for dithered modes. Don't set image_mem
in get_image, instead arrange for it to store the address in a pointer
chosen by the caller.
picasso96.h: Add a clut array to picasso_vidinfo.
picasso96.c (do_fillrect, do_blit): Use picasso_vidinfo.pixbytes
instead of picasso96_state.BytesPerPixel where appropriate.
(do_fillrect, do_blit, wgfx_do_flushline): Handle the case when the
Amiga-side buffer is a 256 color palette mode and the native buffer
is truecolor by looking up colors in the new picasso_vidinfo.clut.
xwin.c: Adapt to support emulating a palette display in truecolor.
Make tui.c compile.
980501 picasso96.c: Make sure there's an unlockscr for every lockscr call.
In SetColorArray, detect when no colors changed.
configure.in, aclocal.m4, Makefile.in: Use AM_PATH_GTK from gtk
distribution.
New field rgbformat in picasso_vidinfo. Set it in xwin.c and svga.c.
custom.c (mousehack_helper): Use Picasso screen offsets correctly.
980427 Call decide_line in DIWSTOP. Implement DIWHIGH register.
980426 filesys.c (get_nname): Don't allow Unix "." and ".." directories.
gencpu.c: Approximate the number of cycles per instruction. Make
generated functions return that number, and use it in newcpu.c in
the do_cycles call.
custom.c, drawing.c: init_hardware_for_drawing_frame must be
called from init_drawing_frame.
Move read_processor_time specific stuff to new file md-xxx/rpt.h.
md-i386-gcc/support.c: Try to detect whether the CPU has RDTSC.
newcpu.c: m68k_speed == 0 means approximate A500 speed;
m68k-speed == -1 means use frame rate hack when available. Some
changes to support this.
980425 custom.c: New copper code. Unfortunately not much faster than the
old one.
Get rid of some unused variables throughout.
filesys.c: Use readdir_r when available.
picasso96.c: In BlitPattern, correctly handle the pattern offsets.
missing.c: Get rid of getopt. Add GNU getopt instead.
In SPRxPTH, SPRxPTL, call decide_sprites instead of decide_line.
980421 custom.c: Add an extra argument, hpos, to plenty of functions, and
use it instead of calling current_hpos.
980420 BeOS update (Christian Bauer).
When enabling additional planes in post_decide_line, update
thisline_decision.bplcon0.
Tweak copper timings.
980419 Extend post_decide_line to handle cases where some planes are
enabled much later in the line than the others.
In pfield_doline_unaligned_h, don't increment dataptr.
Split custom.c, move drawing code to new file drawing.c. New header
file drawing.h for declarations of shared stuff.
osemu.h: Delete junk.
980418 gtkui.c: Don't crash if -G option is given.
audio.c, custom.c: Don't use the generic event handling mechanism
for audio emulation, the overhead is too high. update_audio: New
function, handles audio updates "on demand" or every hsync (Idea by
Petter Schau).
980417 Some cleanups in custom.c to make splitting it up easier.
980416 custom.c: Don't use bplhires in do_modulos.
980415 readdisk.c: Support FFS (Jim Cooper).
BSD patches by Krister Walfridsson.
configure.in, Makefile.in: More fixes for build != source directory.
Arrange to build p2c_x86.o when using md-i386-gcc.
sysdeps.h: Include limits.h.
Remove silly code that restricted possible version numbers.
980320 configure.in: Check for vprintf.
Make write_log a varargs function. Provide a write_log_standard
function that is used by most systems.
Refuse to compile with non-ANSI compilers.
gencpu.c: Rearrange some of the generated code to reduce register
pressure.
Release 0.7.0
980401 gengenblitter.c: Complete rewrite. Much smaller, much faster, much
better results.
Check for -lXi to support newer versions of gtk+.
980316 gencpu.c (read_counts): Two silly bugs fixed.
main.c (save_options): Don't write out 'a' if cpu_level < 2
configure.in: Changes to try to be compatible with Solaris /bin/sh.
980315 New UAE-Control version from Tauno & Cloanto.
Make configure set UNALIGNED_PROFITABLE for x86.
Get rid of "-o", add save command to tui.c and gtkui.c.
Fix some bugs in save_options.
980314 Many improvements in the gtk UI. Made CPU type changeable at run-time.
Make DGA && ! VIDMODE configuration compile. Kludge around the fact
that DGA misses colormap changes. Call XWarpPointer to try to avoid
the click-moves-framebuffer bug.
Make sure p2c.[ch] don't get deleted.
980313 Move all CPU_LEVEL handling from build68k.c to gencpu.c. In gencpu.c,
ignore all parameters and don't write to standard output, instead
hardcode all filenames and generate them all at once. Arrange to
generate code for all CPU emulator variants and to select them at
run-time.
Get rid of copper cheat mode, re-use "-C" option for CPU selection.
980312 In COPxLCL, mask out LSB (Axel Wefers).
newcpu.h: Always compile in both get_disp_ea versions with a different
name. Delete USE_POINTER option; always use pointer. Don't fill
prefetch in m68k_setpc, do it in callers where necessary. Compile in
two versions of get_ixxxx, with different names for prefetch and
non-prefetch. Change gencpu.c to use these appropriately.
Don't generate 16 small CPU emulation source files. With a decent
machine it's no problem to compile all the code in one file. Also turn
off -O3 for gcc, -O2 does fine since all the necessary __inline__s are
there, and the compiler takes less memory that way.
Don't include <linux/joystick.h>, duplicate some definitions from
there instead. Makes configure.in simpler, too.
Fix Makefile.in/configure.in and a couple of other places to support
building in a separate directory (sort of; not complete yet).
Remove p2c.[ch] and genp2c when doing make clean.
Delete code to support Tcl/Tk and XForms GUIs.
971215 More Amiga and BeOS patches from Sam and Christian.
971205 Move some more code from custom.c to audio.c. Optimize sample handlers
a bit.
Make RDTSC asm statement volatile.
971203 Latest GGI patch from Christian Schmitt.
Fix configure to enable zfile decompression for GGI target.
Fix mouse button mapping in ggi.c.
971128 Fix double definition of gfxvidinfo in custom.c.
Fix impossible register constraints in asm statement in newcpu.c
Sprinkle casts and rename some variables to make C++ compilers happy.
Add BeOS patches by Christian Bauer.
971125 More Amiga patches from Sam.
971120 Get rid of DONT_WANT_SOUND.
971119 Support USS sound not only on Linux (Douglas Carmichael)
Update Win32 and DOS ports.
Add Polish documentation by Tomasz Sienicki.
971116 Add a missing return statement in filesys.c (Brian King)
971112 Fix silly error in xwin.c.
971108 Add some more decompressors to zfile.c. Set FLOPPY_SPEED to 4.
971107 Make ggi.c compile again, fix a few bugs and add Picasso support.
971106 Fill prefetch queue after executing an encrypted ROM illegal insn.
971105 Initialize the sprites during customreset now that init_hardware_frame
no longer does it.
971104 Implement action_set_file_size as required by the specs.
SetPanning/picasso96_state: XOffset and YOffset are signed.
971103 xwin.c: Offer 640x512 and 320x256 resolutions in windowed Picasso mode.
Add a few more memory banks in memory.c (A3000 stuff - nonfunctional)
Don't map kickmem at address 0 if using replacement Kickstart.
Must fill prefetch buffer when calling calltraps or ersatz functions.
Write out hardfile parameters in write_filesys_config().
xwin.c: Support 15 bit displays.
971101 Add latest patches by Samuel Devulder. Improve hardfile support in
tui.c.
971031 Offer "-U" only ifdef PICASSO96.
Add support for mounting multiple hardfiles in any order.
Don't reset sprite state in init_hardware_frame. Instead, allow SPRxPT
functions to set the state to SPR_restart in the vertical blanking
area.
971030 Fix 8MB Chip RAM.
filesys_dev_storeinfo: New function and calltrap. Use it to store
per-unit data (which now includes geometry information) in the
parampacket. Modify filesys.asm to use it instead of trying to find
the values by itself.
971028 "AMIROMTYPE1" has 11 characters, not 0.
971027 Implement encrypted ROM features. Comment out non-working InvertRect
optimization.
971026 Fix some problems in PlanarToDirect and CopyColorIndexMappingA2U.
971022 Remove fixed paths in genp2c.c (oops...)
Some more XF86VidMode hacks.
Include target.h in sysdeps.h. Define PICASSO96_SUPPORTED for X11,
SVGAlib and Win32. Don't compile in Picasso support if this macro isn't
defined.
971021 xwin.c: Picasso code wants to use bit_unit, not bitdepth. Also correct
byteorder (it's B8G8R8A8 from the Amiga's point of view).
Fix Picasso InvertRect function.
Half-hearted attempt at 24 bit support in the X11 version, with some
awful code in custom.c.
Make the X11/VidMode version try to resize the screen for Picasso mode
switches.
971020 Delete option -5, make -4 take an argument. Disable z3fastmem and
Picasso emulation when using a 24 bit address space.
971019 record_color_change: No need to remember a color table if the current
line hasn't been decided yet.
Add XF86VidMode extension support.
Integrate Stefan's Zorro III support, add support for up to 64MB fast.
xwin.c: Refresh the whole Picasso screen if there are Expose events.
Fix module length calculation for *Tracker modules.
Use a 32 bit address space by default if CPU_LEVEL > 1. New option -5.
971018 Apparently it's not possible to turn on bitplane DMA in the middle of
the line, so call post_decide_line only when the number of planes is
modified, not in DMACON.
genp2c.c: New file, generates planar to chunky conversion routines.
Remove those which are now generated from custom.c.
971017 Make row_map an array, not a pointer to one.
Audio periods may not be 0, so initialize them to 65535 in customreset.
Implement "S" command in the debugger. Add a bunch of module detection
routines.
971015 od-linux/sound.c: If FRAME_RATE_HACK, reduce vsynctime a bit to give
the sound emulation more room to breathe.
971013 Merge with Brian's latest Picasso code.
971012 Fix a few more portability problems that showed up when compiling with
Watcom C. Also remove superfluous includes from some files.
Add md-i386-watcom directory. Update od-win32 with latest code.
Remove fast_memcmp routine.
Include penguin.h before xwin.h everywhere. Declare a few semaphores
for multithreaded setups in xwin.h. Move inhibit_frame stuff to xwin.h.
971011 gencpu.c: Don't generate labels without following statement. Don't
directly generate assembly statements if X86_ASSEMBLY, instead generate
code that uses macros defined in machdep/m68k.h.
971008 xwin.c, svga.c, custom.c, uaelib.c: Add picasso96 code. Add Picasso
selection to configure.
Move common variables (mouse stuff, gfxvidinfo, xcolors) from graphics
files to custom.c.
memory.c: custom chip area isn't supposed to be mapped at 0x200000. Use
dummy bank for now.
od-linux/joystick.c: Open different devices for different joysticks.
From Win32 sources: set vsyncmintime in m68k_go.
971005 genblitter.c: blitzero is initialized to 1, not to 0, so we need to
clear, not set it.
970928 Add another user interface for X11 using libgtk+.
970925 audio.c: For stereo sound, double all lookup table values.
Added (preliminary) win32.c.
970923 DISK_check_change: Should call gui_filename when ejecting.
970922 Fix od-linux/joystick.c compilation problem with recent kernels.
Merge results of the UAE meeting:
New serial code (Stefan Reinauer)
Expansion "test card" support (Stefan Reinauer)
New GGI code (Christian Schmitt), also configure/Makefile changes
to make it compile.
Fix 68020/FPU code.
Call do_mousehack before every read of the mouse position to get more
accurate values.
Add sd-file directory; add support for it in configure.
Add stereo support in audio.c, od-linux/sound.[ch], and main.c.
Fix copper problem: call decide_line in calc_copcomp_true; and if the
copper wouldn't wait normally (position reached), but the hardware is
fetching data in Hires 4 plane mode, delay until ddf stop.
t-ascii.h: Asciiart target understands "-x" parameter.
970823 gencpu.c [X86_ASSEMBLY]: Turn input constraints for scratch into output
constraints.
970626 Fix 24 bit address space logic (Mathias Ortmann).
Raise exception 3 for Bcc.L insns if CPU_LEVEL < 1. Reported by Stefan
Ropke.
Remove USER_PROGRAMS_BEHAVE for normal emulator. Remove hacks to
generate expanded CPU functions for specific opcodes. Replace with code
that reads an instruction count file and sorts gencpu output by
frequency of the called opcodes.
970625 Calltraps (at least those with call_m68k calls in them) were broken by
the CPU emulator changes. Now use Axxx opcodes as calltraps.
Include pOS port by Samuel Devulder.
970624 Solaris sound patches by Manfred Thole.
gencpu.c: The generated code shouldn't just check for odd addresses,
it should also call Exception...
970622 gencpu.c: don't emit return statements; make code jump to a function
end label instead. Make genamode() check for odd addresses, also reduce
code duplication. Interpret getv parameter so that data is fetched if
getv == 1, and the address is checked if getv != 0. Remove exception 3
checks from get_long() etc. Get rid of buserr.
cpuopti.c: Make a few more checks whether optimization is possible. Add
code to undo GCC's epilogue scheduling.
newcpu.c: Split all the specialflag handling into new function.
Implement -w option as in Win32 port. tui.c: add it to misc menu.
907621 Fix yesterday's CPU emulator changes. Make cpuopti aware of functions
with two RET insns. Make sure that NO_EXCEPTION_3 and
NO_PREFETCH_BUFFER are on when emulating a 68020.
Add usage information for src/dst operands to table68k.
Implement CIA A OVL bit properly.
970620 New NeXTwin.m from Ian. Fix a number of prefetch bugs in gencpu.c.
newcpu.h: m68k_incpc(), get_i{byte,word,long}: New function/macros.
Also add oldpc parameter to m68k_do_[bj]sr(). gencpu.c: use all this.
CPU functions now don't use nextiword; they keep the PC constant and
increment it with the right value at the end.
If chipmem_size > 2MB, disable fastmem.
In configure.in and od-linux/joystick.c, use ljoystick.h as name for
the replacement file for a broken <linux/joystick.h>
configure.in: Check for post-gcc-2.7.2 option "-mno-schedule-prologue"
and use it for compiling the optimized CPU files if it exists.
970618 Rename hardfile.device to uaehf.device to avoid name clashes. Suggested
by George Nicolaidis.
Reimplement CPU prefetch by making gencpu aware of it so it generates
code that fetches data from the right places automatically. Also reduce
prefetch length to 4 bytes.
970612 memory.h: Include osdep/memory.h. missing.c: implement xmalloc().
Throughout: use xmalloc instead of malloc.
Apply changes by Sam Devulder.
970608 Fix ncurses.c so that it links. Fix configure so that it can be enabled
Get rid of spixstate by implementing a new sprite drawing method.
970607 do_copper_cheat(): New function, Implement inaccurate, line-based
copper as an option (-C). calc_copcomp_true(): Fix possible hr 4 plane
bug (split the wait into several pieces in this mode).
Allow 0 bytes for fast and bogomem (to override .uaerc)
970606 Fix some bugs in transdisk, and make it compile with SAS C (Joanne Dow)
Stupid compilation fixes: Get rid of "==" in shell scripts, check that
B300 and friends are defined in serial.c before using them.
Implement blitter prefetch. Fix silly typo in main.c that prevented
immediate blits.
init_ham_decoding(): new function, handles case where the first few
pixels of a HAM display are outside the window.
970605 disk.c: Get rid of need_read. Save cylinder/track number for the data
in the MFM buffer for each drive. Force rereads on disk insert and
write operations. In drive_fill_bigbuf(), do nothing if saved data
matches current. Fix disk change logic: give the program time to read
the change bit a couple of times before inserting a new disk.
custom.c: Fix really subtle bug: when deciding a line as border,
plfstrt/plflinelen were not set up properly, which could confuse
post_decide_line(), and eventually there would be lines decided as
playfield with plfstrt == 0, plflinelen == -32 ==> Bang. A related
bug was that setting DDFSTRT to 0 would result in both plfstrt and
plfstop having value 0.
gfxutil.c: Fix bug that could cause color values to go out of bounds.
xwin.c, svga.c: When dithering, color values were not doubled properly.
970604 filesys.c: when deleting an a_ino, remove it from hash table (Mathias
Ortmann). In do_find(), if creating a file failed and we didn't have
an a_ino before, call delete_aino on the one we created.
More configure changes: Add $X_PRE_LIBS and $X_EXTRA_LIBS in some
places. See if MIT-SHM support for X will compile and link. Always
compile it in if it will. Turn DONT_WANT_SHM and LOW_BANDWIDTH into
run-time options (-T, -L). Use single line buffer when dithering and
in low-bandwidth mode (but in all cases there's a full buffer for the
X image).
memory.c: Don't map in custom regs at 0x200000 if chipmem_size > 2MB.
Split up init_sound(): new function setup_sound(). Make "-B" accept
minimum and maximum values as in Gustavo's latest patch. Add code to
tui.c to support changing buffer size, number of bits and frequency.
970603 If using compiler, define NO_EXCEPTION_3 and NO_PREFETCH_BUFFER.
(bugreport by Raphael Poss).
GGI support from Christian Schmitt/Stefan Reinauer. More serial patches
from Stefan. 3 button joystick patch from Mathias.
Add linemem field to gfxvidinfo, for systems that don't want to keep
a buffer of the full screen. Adjust custom.c to use it instead of
bufmem if it's not NULL (mostly by Mathias). svga.c, xwin.c: Use single
line buffer in some cases. xwin.c: If USE_DGA_EXTENSION, undef
LOW_BANDWIDTH. Move test of DONT_WANT_SHM after inclusion of config.h
Make configure.in a bit more structured.
Move colormodes array to main.c.
970602 gfxlib.c: Start implementing layers workalike.
md-i386-gcc/support.c: Don't mix sleep and alarm. (Petter Schau)
970601 Remove may_run_compiled. Print error and abort if m68k_go is called
twice.
Fix yesterdays bugfix in svga.c.
Change FRAME_RATE_HACK so it tries to average the times a bit.
Re-implement a call_m68k function in autoconf.c. The new version
works by doing some heavy setjmp/longjmp magic and switching stacks.
With this, it's even possible to call things that Wait(), so use
the new functionality in gfxlib.c to call LockLayer() in WritePixel().
970531 Turn some inline functions in memory.h into macros. Get rid of
get_along and get_aword. Implement CIA A OVL bit.
main.c: Add missing close_sound() call.
Remove INTEL_FLAG_OPT, use X86_ASSEMBLY for everything.
tui.c/svgancui.c: Implement scrollable menus. Add code to select
video mode from a given list. Add "graphics_setup" call to graphics
specific files. Use it in svga.c to build a video mode menu.
Fix bug in svga.c that would crash non-linear modes.
disk.c needs to include gensound.h and sounddep/sound.h.
Fix bug in fuzzy_memset. In pfield_init_linetoscr, always adjust ddf
values if lores hack is being used.
970530 Apply some patches by Samuel Devulder.
970529 filesys.c: In "Houston, we have a problem" case, do not only delete
the oldest ExKey, but also use it instead of random memory for the
new one. Attempt to reduce the number of lost exkeys by allocating
them in action_examine_next instead of action_examine_object.
Initialize the "uniq" field of unit->rootnode.
Attempt to speed up sprite drawing loop.
Implement sprite<->sprite collisions.
Get rid of -Wtraditional.
970524 New config option NO_PREFETCH_BUFFER. Emulate 16 byte prefetch if
unset.
For exception 3, the stack frame seems to be:
(saved SR).w, (faulting address).l, (faulting instruction).w, 0.w,
(pc at fault time).l. Make everything that could generate this fault
handle it properly. That got Cybernoid II working!
970523 Makefile.in: Make sure $(DEBUGFLAGS) is used for CPU emulation files.
memory.c: Don't map chipmem at 0x200000, use custom chip bank for now.
970507 configure.in: Mutate ac_cv_c_inline=no to ac_cv_c_inline=
Check for tcgetattr, <sys/termios.h>, cfmakeraw, <sys/ioctl.h>
Check for sem_init in -lposix4 (Marc Zimmermann)
serial.c, cia.c, cia.h, serial.c: changes (Stefan Reinauer)
Make disk gap 360 (Michael Krause)
970404 In configure, check for features.h before including it in test program.
970401 New option -4. Bugreport by Mirko Viviani.
970324 Petter Schau says the exception frame for Bus Error and Address Error
is 14 bytes, not 6, on the 68000. Change Exception() accordingly.
It's *** OUCH *** day! Make hardfile beginio return the correct value.
Also load execbase before calling ReplyMsg().
It's *** OUCH *** day again! The filesystem asm code was an odd number
of bytes, leaving the hardfile code unaligned.
970318 custom.c: Rename spron to sprst, and use new variable spron to indicate
for which sprites the sprite pointer registers have been written. Don't
do sprite DMA if spron==0. (The problem was that some programs write
SPRxCTL and then SPRxPT, which used to set the sprite state to
SPR_restart, but it must be SPR_waiting_start.)
Turn a few m68k_reset()s into uae_reset()s.
New variable nr_joysticks. Delete joystickpresent. New arg "nr" for
getjoystate() and read_joystick().
New extra keycode AK_RCTRL. Handle multiple joysticks & different key
replacements in keybuf.c/custom.c. Make tui.c handle all the settings.
970310 od-linux/joystick.c now compiles again without the joystick header.
Fix some problems in configure; also check whether [n]curses.h defines
attr_t. Keep count of warnings and errors during configuration and
print a hopefully helpful message at the end.
disk.c sanitized by Mathias Ortmann.
Change the replacement getopt around a bit.
execlib.c, timerdev.c: Files removed. This will never be compatible
enough. Also remove related code (several SPCFLAGs, etc.)
Make main.c a bit nicer by introducing additional defines for the t-*
files. Also canonicalize the .uaerc file on all systems, eliminating
lines starting with '#' in the process.
Remove code in autoconf.c to set up 8MB chip; move it to filesys.asm.
Try doing the copper end-of-line hack in copper_memory_cycles().
Disable the copper speedup hack.
970309 Add a small, dumb hash table to struct _unit to speed up repeated
aino lookups. Delete aino in action_delete_object(). Move children in
action_rename_object(). In action_examine_next(), call new function
lookup_child_aino_for_exnext() which behaves more or less like
lookup_child_aino(), except it uses new function get_aname() to
translate filenames.
More portability fixes. New links set up in configure: sounddep,
target.h. All machine-dependent and joystick code removed
from os.c, renamed to audio.c. os.h renamed to audio.h, joystick stuff
moved to joystick.h. New directory targets/.
missing.c: New file.
970308 Rewrite filesystem. Now it keeps one unique "a_inode" structure for
every object in the filesystem. This contains Amiga name, native
name, Amiga permissions, lock counts and several links for building
a tree structure. Keys are now made only for files which need a fd
and a file position.
Treat invalid locking modes als shared.
Comment out the code using readdir_r because that function appears
to be broken in glibc-2.0.1.
Clear RES2 in all packets before handling them.
Give mousehack the same task priority as the input.device.
Fix (?) some silly bugs in disk.c.
970307 Include some Acorn port code from Peter Teichmann.
Yet Another Serial Diff from Stefan.
970306 filesys.c: Don't just crash if lookup_key() has no success.
action_find_write() is supposed to create the file if it does not
exist.
970305 More DOS patches. Make the Makefile parallel-make safe.
svgancui.c: Do cyclic search if character is typed in file selector.
my_alphasort(): New function (work around glibc bug)
custom.c: Fix error in yesterdays change.
filesys.h: New file.
970304 New serial patch from Stefan and Christian.
Remove the assembler code to generate inputevents. Instead, add a new
Amiga C program ("mousehack") which does the trick. New function
mousehack_helper() in custom.c, activated by calltrap 0xF0FF70.
Mouse default is now always normal_mouse, not follow_mouse.
Do disk change checks only every 1/2 second. disk.c: Reverse
nodskchange to dskchange, and make sure there has been a step with the
drive empty before calling drive_insert() from DISK_check_change() (but
this _still_ doesn't work. Arrrghh).
970303 filesys.c: Initialize _all_ of struct _unit in startup_handler().
Remove message_lock and friends and use new variables cmds_sent,
cmds_acked and cmds_completed to determine when to send dummy messages.
Changed examinekey handling so that "dir all" on a large tree doesn't
crash anymore (it used to reuse the top-level exkeys which were still
in use after a wraparound). Don't allocate examinekeys if we're
examining files.
Check for readdir_r in configure. Use a wrapper my_readdir() around
either readdir or readdir_r.
Call filesys_reset() also from filesys_diagentry().
Get rid of most of uaelib.c. Now there isn't a library, just a calltrap
at 0xF0FF60. Changed uae_pragmas.h accordingly and recompiled uaectrl.
Added a bunch of "volatile"s in various places in filesys.c and
penguin.h.
Make the filesystem reset-safe in the threaded case (paranoia changes).
Check disk changes only every 1/10 second in vsync_handler().
Add assembler code to generate InputEvents once every vblank to
filesys.asm. (Doesn't work yet.)
970302 filesys.c: Get rid of DosPacket type, pass pointers into Amiga memory
instead. Use GET_PCK_* and PUT_PCK_* macros to access fields.
Start making filesystem code thread safe & multithreaded. Move static
variables from some functions into struct _unit, likewise the key
and exkey variables. Add code to filesys.asm to queue commands which
did not complete and to reply to them later. Do multithreading if
compiled with SUPPORT_THREADS. See source for details.
Change hardfile and uaelib code not to call 68k routines. Make emulator
traps more efficient (no need to save regs, don't need SPCFLAG_EMULTRAP
anymore).
970301 Fixed ncurses.c so it works with currprefs.
filesys_reset(): New function, called from customreset().
Changed source layout. Break up machdep into machdep, osdep and
threaddep.
penguin.h: Now supports arbitrary types in pipes.
Changed filesys.c so that no 68k code is called from native C code.
filesys.asm, filesys.sh: New files. filesys.asm contains some
startup code and the main loop for the filesystem. Several locks
are allocated by the assembler code for use by the C code.
DOS_AllocMem(), DOS_FreeMem(), make_dev(), build_parmpacket(),
filesys_init(): Functions removed.
970228 ncurses.c: Fix problem in b/w modes.
finish_drawing_frame(): Don't need to draw lines in multipenguin mode.
Move all options into new struct uae_prefs. New variables currprefs,
changed_prefs.
svgancui.c, tui_filereq(): If user presses a key, start search at
current position, not at the beginning.
DISK_check_change(): new function, compares currprefs with
changed_prefs and handles diskchanges if they differ. Called from
vsync_handler().
DISK_validate_filename(): new function, checks whether a file exists.
Modify svga.c and tui.c so that F11 now brings up a limited UI.
970227 Reimplement Mathias Ortmann's frame rate hack: New option HAVE_RDTSC
in config.h. New typedef frame_time_t. New variables vsynctime and
vsyncmintime. New function machdep_init() in md-*/support.c which
sets up vsynctime in the md-i386-gcc and md-i386-linux cases. Use
all of those in events.h, do_cycles() to determine whether to spend
more time on the CPU emulation.
Add missing "int i;" to xwin.c, init_colors().
Unroll some loops in sample_*handler().
Improve quitting/resetting behaviour: Move quit_program from GUI
specific files to main.c. New functions uae_reset() and uae_quit(),
quit_program is now handled in vsync_handler() and m68k_go().
New variable sample_evtime, used in customreset() and set up in
init_sound().
970226 Solaris sound update from Manfred Thole.
keybuf.c: Decided that it doesn't need locking after all.
Add a bunch of Gustavo's latest diffs. (I hate CR characters!)
Move gfxvidinfo from all the target-specific files to custom.c
More Win32 stuff: New function notice_new_xcolors().
970225 configure.in: In shell string comparisons, always put spaces around =
Add warning about standard SVGAlib being incompatible with
LinuxThreads.
os.c, SOLARIS_SOUND: Remove reference to obsolete variable smplcnt.
Two new variables sound8_base and sound16_base.
sysdeps.h: Split off some stuff into md-amiga/amiga-kludges.h. Also
make the main types now uae_u32 and variants instead of ULONG, etc.
Convert some files to use the new types.
cia.c: use int/long instead of ULONG/UWORD/etc for most static vars.
xdebug.c: Some cleanup.
md-i386-linux/penguin.h: Fix bug. Add "chunks" parameter to
init_comm_pipe. Use it to decide in write routine whether to signal
the other thread if it's waiting. Add no_buffer parameter to
write_comm_pipe_int.
Start adding Mathias Ortmann's Win32 patches.
md-i386-win32: New directory
include/sysconfig.h.win32: New file
custom.c: is_lastline: new variable, set in hsync_handler().
sysdeps.h: Make it possible for system specific code to say that
POSIX/ANSI stdio/malloc functions aren't present and are defined
by a system-specific file instead. In filesys.c, don't reference
errno if DONT_HAVE_POSIX is defined.
readcpu.h: Kludge around the fact that Messysoft C apparently doesn't
handle enums properly.
newcpu.c/sysdeps.h: Preprocessor magic for 64 bit constants to get
around a problem with MS C.
md-*/penguin.h: Add dummy definitions for semaphores.
keybuf.c: Use semaphores to synchronize access.
os.c, win32 sound stuff: add memcpy avoidance code.
970221 X86.S: Don't use .type ifdef USE_UNDERSCORE.
Move thread support configuration to configure from config.h. Change
pipe implementation to use POSIX semaphore functions.
970217 From Samuel Devulder: Fix off-by-one error in LINE_TO_SCR, EHB case.
970215 customreset(): Initialize current_colors.color_regs to invalid values
[reported by Samuel Devulder]. config.h: Uncomment ECS_DENISE [reported
by Mathias Ortmann]. Add ami-win.c and custom.c patch from Samuel
Devulder.
970213 disk.c: Set FLOPPY_SPEED to 3
custom.c: SPRxCTL_1(): if spron was SPR_restart set it to
SPR_waiting_start. do_sprites(): don't do that.
SPRxPT{H,L}: Call decide_line().
970210 custom.c, X86.S: Do LORES_HACK for dual playfield screens. Plug memory
leak in custom_reset(). Fix pfield_draw_line() not to do so many
multiplications. Make line_changed a char array. In remember_ctable(),
remember comparison results also if negative.
In 8 and 16 bit graphics modes, use the high parts of the color values
to duplicate the actual values. This saves a lot of code in the
hdoubling routines. Add a special fill_line in the X86_ASSEMBLY case.
Check for glibc-2 and libpthread in configure.
options.h: In fuzzy_memset(), do rounding slightly more conservative.
Add tons of new keycodes to svga.c
In record_color_change(), also check if vertically outside DIW.
New variable hdiwstate, to represent the horizontal DIW state machine
(thanks Petter!) Handled in reset_decisions(), finish_decisions() and
decide_diw().
970209 Change ncurses.c not to do so many multiplications/divisions. Add bold
character support. Add color support. Make configure recognize
--without-svgalib and enable ncurses.c in that case.
970208 X86.S, custom.c: Do LORES_HACK for EHB screens also.
New function write_log(); convert some fprintf(stderr, ...) calls.
970207 Argh, Linux/i386/ELF check in configure got broken by latest sh-utils.
In disk.c, drive_reset(), clear nodskchange flag.
970206 Sprite fix from Mathias Ortmann: _really_ get rid of SPR_vtop, and
replace all uses by SPR_stop.
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
and turn dos-ui.c into a frontend for conio.h, similar to svgancui.c
In xui.c, unlink the temporary files ASAP.
Two new command-line options, "-o" and "-G".
Get rid of sz_unknown.
compiler.h, compiler.c: New files.
filesys.c, action_read(): Added a hack to test whether the first four
bytes read from a file a file contain 0x000003F3 (HUNK_HEADER), in
which case there's probably a LoadSeg() call going on and we ought to
flush the cache. Also, use the fact that memory is now linear.
960902 Struggle a bit with dos-ui.c, rename it to tui.c (text-based ui), add
new file svgancui.c (ncurses ui) and try to make these two understand
each other.
960829 New transdisk from Stefan Ropke (can write images)
Apply Patrick Hanevolds BeBox patches.
96082x many changes to Exec. Still not booting (DMACON seems not to be set up
properly, and sometimes Signal is called with task==0).
960821 Solaris sound from Manfred Thole.
960820 In filesys.c, get_fileinfo(), return volume name for top-level
directory.
960819 Reimplement WritePixel(). Layer locking is still missing.
960818 Reverse meaning of -x flag for X11. More Exec code.
Several changes to the main CPU loop and the way call traps work.
960817 Implement some simple Exec functions (Lists, AllocMem & friends)
960816 filesys.c fixes from David Varley.
960815 Implement graphics library region functions.
960814 Modify memory layout: All memory is linear now; get_real_address()
returns a (UBYTE *).
960810 Add Gustavo's latest DOS code.
In configure, include <sys/param.h> earlier for the sake of some *BSD.
Add three options for sound code (bits, frequency, buffer size).
Make -S option take a parameter; remove SPEED_UP_SIDMON_MODULES.
New version of transrom (return 0, duh).
960805 Fixed the blitter line mode emulation (this time, really! I hope.)
Thanks to Fabio Ciucci for a detailed description of the correct
behaviour.
960730 Spent the last three days trying to make the filesystem emulation
bootable by adding an expansion device for it. A fair bit of trial and
error, but now it works! Even the hardfile now works with Kick 1.3, but
you have to mount it manually after booting.
hardfile.c, filesys.c, expansion.c and autoconf.c now are an
entangled mess which badly needs to be cleaned up.
We can now mount more than one filesystem even with Kick 1.3: we
recognize them by param 2 of the startup packet, which has the same
value as the dn_Startup field of the devicenode.
Make Kickstart replacement work again (didn't like the CPU emulator
changes)
Include preliminary serial support from Stefan Reinauer.
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 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.
960723 ... and more CPU emulation bugs fixed by Herman.
Added uae.library from Tauno Taipaleenmaki, plus support files in the
"amiga" directory.
Added some files for the XFree86/OS2 port from Krister Bergman.
Reorganized all the directories.
960717 Add latest patch from Herman.
More FAST_BLITTER options: 4 and 5. These finish the blit immediately.
960713 Call XAutoRepeatXXX() only if we know we want to change the state.
960709 Work around a few AIX bugs (ughhh... what a broken OS). New test for
sys/select.h.
In xui.c, don't try to communicate with a dead process.
960704 More bugfixes from Herman.
Get rid of dummy_xlate(), use default_xlate() to abort with error.
In svga.c, set correct_aspect to 0 if using lores.
Change the Bcc exception 3 handling code a bit.
Add new program "cpuopti" that takes gcc-generated assembly files and
optimizes away unnecessary pushl/popl instructions on the x86.
960701 68020 exception handling & various bugfixes from Herman ten Brugge.
In ersatz.c, use 0xFF0D instead of 0xF00D as trap opcode.
Do MMU "emulation" (no-op MMU instructions, probably many cases decoded
incorrectly).
960627 New file LIESMICH, with minimal German instructions. Somebody want to
translate the docs to French, Spanish, Italian, all the Scandinavian
languages, Hebrew, Polish, Dutch, Russian, Welsh, Gaelic and something
Joe_Luser@aol.com understands? (No offense meant - I'm sure there are
brillant minds using AOL. There must be.)
960626 In zfile.c, make sure we delete the temporary file even if file
decompression fails.
Reimplemented sound support, this time following the HRM closely. Seems
to work fine most of the time, but occasionally loses drum beats in
TFMX modules. do_sound() is now unconditional, it calls
flush_sound_buffer(), which is system-dependent. This breaks everything
except Linux sound for now :(
Add Herman ten Brugge's 68020/68881 emulation code.
FreeBSD chokes if sys/mount.h is included without sys/types.h. Fix the
configure script.
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 to 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