Changes in KEGS v0.64 since v0.63 (12/10/02) , , - handle gzip-compressed image files, which are uncompressed to a temp file. Changes to the image are not written back to the original compressed file. - Integrated some patches from KEGS 0.91 - generate rom.c from ROM.01 to avoid ROM file distribution - ACTIVEX INTERFACE (not included in KEGS-SDL) Added ki.h for additionnal API To be redefined by the host : .ki_printf instead of printf for console redirection .ki_alert for messagebox display .ki_hideConsole/ki_showConsole/ki_read for console interaction To communicate with the host .ki_main instead of main for app encapsulation .get_halt/sel_halt .get_speed/set_speed - COSMETIC Move WIN32 stuff (kegs32.rc, Kegs32.ico, Resource.h, Toobar.bmp, *.dsp, *.dsw ) out of the SRC directory Change exit to my_exit for fatalerror exit ( use set_halt(HALT_WANTTOQUIT) for non fatal ) ROM.C and FONT.C files added to the project Modify memalloc_alligned to keep track of the original pointer and free memory when leaving Removed most of the warnings Added DISABLE_CONFFILE define .remove the need of any external files ( ROM, KEGS_CONF, BRAM.DATA, FONT, ... ) .add manual disk selection : functions mountDisk() getLocalIMG and setLocalIMG must be then redefined ) .prevent the BRAM.DATA file to be saved .enable the choice of the boot slot ( function getBootSlot() to be redefined ) . Start removing memory leaks : not yet finished :-( - Add Transwarp/ZipGS support (disable/enable/setspeed) - Mac OSX: More patches done without disturbing others releases. An internal Degugger window is active. SDL calls and profiles are now corrects. visible files renamed with the .kegs extension : Bram.kegs, ROM.kegs, Disk.kegs & Config.kegs. - Lots of Ensoniq/memory calls fixed for FTA's demo & games by The Gog's. . Fix Ensoniq issue (swap/one-shot ) : Fixed the Delta loading voice problem . Fix MVN issue . Added patch (disk_eject) for Task Force . Add patch (write to C026) for ACS Demo 2 . Add sound patch ( TaskForce, OOTW, ... ) when writing to DOC registers 0xE2-0xFF - Debug/Enhancements . Use the g_installed_full_superhires_colormap feature for accurate color mapping (use an extra palette for border color) : > fixed Poms'50 and Space Harrier Intros > WIN32 Only, not yet implemented in SDL (dunno how to do multiple palettes) . Fix do_reset() function by stopping all the remainings interrupt (still a random sound issue ) . Added slow_disk emul for better 525 emulation (run Flobynoid) . Fix dialog problem when 2MG disk name includes spaces [WIN32 only] . WIN32 : Added VK_ENTER for KeyPAd/ENTER (Allow music change in Nucleus) . Added two events HALT_WANTTOQUIT and HALT_WANTTOBRK to control the emulator behaviour HALT_WANTTOBRK : to go to the console HALT_WANTTOQUIT : to clean quit the emulator ( and allow it to restart ! ) - configmenu.c and configmenu.h are used instead of the file config.c and config.h Changes in KEGS v0.63 since v0.63 (08/15/02) - Command-line help ('kegs -\?' or 'kegs -h') - Debugger help ('?') - make_size script should work with any perl installation - Added F6 function, which defaults to "enter debugger" (for 1-button mouse) Changes in KEGS v0.63 since v0.62 (08/09/02) - Mac OSX: Config files can be found in the resources folder (KEGS.app/Contents/Resources). - Mac OSX: Control-backspace resets KEGS (don't have a Pause key). - Mac OSX: F12 now defaults to "switch speed limit" (for 1-button mouse) - Changed 2.5 Mhz as default speed. - Some code optimization by Gilles Tschopp : a clean memory tester and Berny virtual floppy compatibility. Changes in KEGS v0.62 since v0.61 (06/22/02) - Slow paddles mode () - Fixed pointer warping (F8 by default) Changes in KEGS v0.61 since v0.60 (02/19/02) - SDL video/sound/joystick driver, see www.libsdl.org - code cleanups (prototypes, etc.) Changes in KEGS v0.60 since v0.59 (10/03/00) - The 16-bit colors were still wrong due to another coding error. It would be much easier to get this right if I had a 16-bit color display... A user says it works now. Changes in KEGS v0.59 since v0.58 (7/07/00) - Added support for multiple paths to the default files and also multiple names for many default files. This should make the .rpm distribution work better. - Add another keycode to mean break according to mic@research.nj.nec.com. - Add support for various ROMs to get plugged into slot 1-7. - Fix code so that it should compile on 64-bit platforms. Changes in KEGS v0.58 since v0.57 (2/08/00) - Setting the execute bit on the disk image no longer means no-write-thru. Too many new users were getting confused by this. - Fixed another bug with Apple //e bank switching created by v0.56 Reported by phoenyx. - Add command line option "-v" to turn on some verbose debugging flags. - Fixed potential core-dump bug with non-8 bit visuals. - Fixed double-lo-res color problem. - The X driver should work with any visual depth display now and get the colors right. Ian Schmidt reported his 16-bit card had bad colors. Changes in KEGS v0.57 since v0.56 (12/27/99) - Another try at making timezone stuff work across all Unix variants. Let me know if the time in the Apple //gs control panel doesn't match your real local time. - Fix a bug created in v0.56 where the fast //e bank switch code had a typo. This prevented ZBasic from working correctly. Changes in KEGS v0.56 since v0.55 (10/31/99) - Faster Apple //e bank switch emulation. - Simplified number of global variables for various softswitches. - Fixed a bug which made 3.5" and 5.25" disk access much slower than necessary. - Improved scan-line interrupt accuracy (lets MEGADEMO run). - Improved sound interrupt accuracy (was hoping this would fix some sound issues, but it doesn't seem to help). - Add Mode_switch as an alias for the Option key - I noticed the //gs self-tests were broken again--fixed. Changes in KEGS v0.55 since v0.54 (10/19/99) - In LOG_PC debug aid, add cycles to the trace - Fix MEGADEMO bug where 3.5" disks weren't properly ejected. Needed to look at iwm.motor_on35 not iwm.motor_on. - Temp fix for MEGADEMO to not halt if shadow-in-all-banks is on in $c036. - Another MEGADEMO fix to not take a scan-line int if the SCB was cleared right before the raster got to this line. - Fix bug in smartport.c that was causing core dumps if you tried to init a disk is s7dx. Changes in KEGS v0.54 since v0.53 (10/10/99) - Add support for Out Of This World's direct reading of ADB RAM loc 0xb to get key status. This lets shift/control work in OOTW. - Code simplification to get rid of most set_halt() calls and use halt_printf. - Speed improvement: track kpc (merged kbank and pc in one 32 bit variable) which makes the inner loop faster. This does make KEGS not accurately model a 65816 code crossing bank boundaries, but just about every other emulator gets it wrong, and the speed improvement is 5-10%. And I don't know of any code which relies on it working correctly. - Fix to allow better GS/OS compatibility: after each smartport call, set 0x7f8 = 0xc7. - Fixed ZipGS emulation bug where KEGS was not re-locking Zip at the right time, which made double-hires not work after booting GS/OS. Changes in KEGS v0.53 since v0.52 (8/3/99) - Move all the "fcycles" timing calculations to use double instead of float. - Fix display shadowing bug reported by "phoenyx" which caused the text display to not always be updated correctly with funny bank switching. - Added the "Home" key as an alias for the '=' on the keypad. - Changed the way X modifiers are interpreted to increase compatibility of Caps Lock to more X servers. - Add -dhr140 option to use old double-hires color mode that results in exactly 140 horizontal pixels with no bleeding. It's set default to "on" for now while I work out double-hires colors. - Started adding some ZipGS compatibility--control panels run, but all the controls are effectively ignored by KEGS. Changes in KEGS v0.52 since v0.51 (6/27/99) - Small speed-up of interpreter loop to avoid checking the global variable "halt_sim" after every instruction. - Smartport fixes to avoid halts when the SCSI CD player NDA is installed. - Fix to autodetect X visual depth (it didn't work at all in v0.51). - Fix to HP binary--KEGS v0.51 hit an HP linker bug which caused the executable to not run correctly. (It didn't obey an assembly- language alignment command correctly). Re-ordering the object list works around the problem. Changes in KEGS v0.51 since v0.50 (6/1/99) - Fixed many bugs that crept into scanline interrupts over the last few months. - RAM size is now settable on the commandline: -mem 0x400000 will use a 4MB expansion RAM card (giving you 4.25MB of memory with ROM 01). - VBL time used to be a variable (which was wrong)--it's now always the same number of cycles. - Typo preventing joystick_driver.c from compiling fixed. - Auto senses X visual depth, searching for 8 bit, then 15 bit, then 24, then 16 bit visuals. Can still override this with commandline. Changes in KEGS v0.50 since v0.49 (5/31/99) - Added Linux joystick support with code provided by Jonathan Stark. Activate with "-joystick" command line option. - Small improvements in s7 device handling. If you have no s7 devices or no bootable devices, KEGS launches Applesoft. - Bug fix in scan-line interrupts--they were occurring at the wrong time previously. - Rewrote double-hires color routines. They're still not quite right, but it's a lot better than it used to be. Changes in KEGS v0.49 since v0.48 (5/3/99) - Fixed a key-repeat bug in v0.48 caused usually with shift-key sequences. - Fixed bug where GNO would not work with ROM 03. ROM area at $C071-$C07F is different from ROM 01. - Ian Schmidt pointed out a special Ensoniq case where an oscillator in one-shot mode can cause it's partner to start if it is in swap mode. - Integrated in Geoff Weiss's Solaris x86 ports. I might have broken it making a few last-minute changes... Changes in KEGS v0.48 since v0.47 (4/13/99) - Even better ADB key repeat--key rollover works more like a real Apple //gs. - IWM fix: some "smarport" modes were being activated sometimes during normal 3.5" accesses, resulting in some games not loading correctly. - Some fixes to serial port emulation to handle programs writing to the serial port in MIDI mode when the chars will not be consumed. - Smartport fix to set zero-page locations $42-$47, needed by some poorly- written game loaders - The "oscilloscope" effect in some sound-demos now shows the sounds being played. Changes in KEGS v0.47 since v0.46 (4/7/99) - ADB fix #1: reading $c010 should give key-down status better - ADB fix #2: key repeat was stopping if modifier key pressed - ADB fix #3: The game "Pirates" was crashing on startup due to a small bug. - Bard's Tale 2 was freezing on startup due to a bug in the WAI instruction. - Major serial port rewrite. Diversi-Tune now runs and sound OK (but there are some small problems) and serial port emulation is better. Changes in KEGS v0.46 since v0.45 (3/21/99) - Fix for undefined var in engine_c.c. Oops. - Fix for old bug in engine_c.c causing KEGS to sometimes misinterpret instructions which cross page boundaries. Was causing Thexder not to work, at least. Changes in KEGS v0.45 since v0.44 (3/20/99) - Fix for COP instruction in engine_c.c. Pointed out by Kelvin Sherlock. - Major fixes to Ensoniq emulation, SynthLab sounds much better. - Fix to iwm.c to deal with corrupt 2IMG archives a little better. Changes in KEGS v0.44 since v0.43 (2/23/99) - -audio 0 option would often cause programs to hang. Bug was that the audio rate was defaulting to '0' which confused KEGS. - Made keycode 0x072 be the XK_Break key for XFree86 Changes in KEGS v0.43 since v0.42 (2/19/99) - Support .nib 5.25" format as read-only - Faster 3.5" nibblization routines (should make startup faster) - Fixed a very-old 3.5" disk writing bug that made bit-copiers not work Changes in KEGS v0.42 since v0.41 (2/1/99) - Include to fix Linux compile problem - Fix relative branch timing bug that was making IWM emulation flaky (backward branches should count as 3 cycles if to the same page, and 4 if to a different page in emulation mode. Bug always counted them as 4) - Gave up on fast 5.25" writes--KEGS always slows to 1MHz for 5.25" writes since the timing and kludges just got too annoying. - add "-arate 22050" option to change audio sample rate on the command-line. Slower audio rates can hit more audio bugs (I'm working on them). - fixed little-endian bug in smartport.c and partls.c - fixed side border redraw bug that would sometimes leave super-hires images on the right-side border. Changes in KEGS v0.41 since v0.40 (1/19/99) - Fixed bug where fill-line mode would not always redraw the screen correctly - Changed some // comments to /* */ to help David Wilson's Solaris port - Fixed little-endian bugs in smartport.c preventing mounting of parititioned disks. Fix submitted by Jonathan Stark. - Christopher Neufeld noted that fast space/delete option in the control panel caused KEGS to hit breakpoints. I fixed this and fast arrows and fast mouse options (they are now just ignored). - Solaris port by David Wilson now provides a Makefile_solaris Changes in KEGS v0.40 since v0.39 (10/25/98) - 15 and 24 bit depth displays now supported (though somewhat slower than 8 bit displays). But Super-hires displays now show 256 simultaneous colors on a 16- or 24-bit X display. Select a 15-bit display with the cmd line option "-15" and a 24-bit display with "-24". Otherwise, KEGS defaults to looking for an 8-bit display, and fails if it cannot find one. - Some border fixes--border colors now update correctly when palette changes occur (like via F10). - Alias F1 to ESC for OS/2. Changes in KEGS v0.39 since v0.38 (9/13/98) - OS/2 port by Tschopp Gilles - handle cr&lf better in disk_conf - Drive letters work and are not confused with partition names, so s7d1 = D:\images\cd:1 will open partition 1 correctly. - KEGS no longer uses system() to do file copies, it does it all using POSIX calls. - Unix-specific socket calls moved from scc.c to scc_driver.h - Default X handler re-installed properly now for better debug - Nasty core dump bug found and fixed by Tschopp Gilles in disk switch code Changes in KEGS v0.38 since v0.37 (7/28/98) - IWM bugs: - fast_disk_emul off under GS/OS caused I/O errors. KEGS was always slowing down to 1MHz when 5.25" drive was on, when it should have been obeying the $C036 register. - bug in IWM on little-endian processors - disk ejection should now work, but a beta user claimed some bugs on x86 Linux. - 2IMG support, but only lightly tested. - Removed some internal breaks on access to $C0B0 for tool033. - Modulae also stumbled into some breakpoints by writing to $C02F, which does nothing. - Screen refresh simplified (for me) by redrawing the screen while raster is on first scan-line, rather than line 200. However, a side effect is some of the graphics during the XMAS DEMO look a bit choppier. - More SCC fixes to avoid breakpoints under GNO. - Start support for sound under Linux, but it sounds horrible right now. Any Linux sound gurus want to help out? - Fixed possible array-overrun bug in video.c around border effects. Maybe shared memory works under x86 Linux now? - Made changes for OS/2 port to fopen() text files. From Blue Neon. Changes in KEGS v0.37 since v0.36 (7/13/98) - Linux PPC port completed and functional. KEGS has been tested to run quite well and quite fast on a 240MHz 604e running MkLinux pre-DR3. - Change LITTLE_ENDIAN define to KEGS_LITTLE_ENDIAN since Linux always defines LITTLE_ENDIAN as a silly macro. - Dumb bug in IWM 3.5" routines could cause core dumps if disk arm moved from outer track to inner track very quickly. - Deleted some breakpoints that some Second Sight searching code would hit. - Ignore some SCC reset commands GNO would use that caused KEGS to stop. - Handle odd partitions better--some //gs formatted Zips had a blocksize of 0, which defaults to 512 now. - Handle some keysyms better to avoid MkLinux bug with keysym 0. Changes in KEGS v0.36 since v0.35 (5/30/98) - Linux x86 port completed and functional with help from Karl Pfleger - Linux clock fixes--should handle daylight savings better on Linux - LITTLE_ENDIAN defines - Start making fixes for NeXTStep due to Eric Sunshine - Fixed bug in HP asm code with I/O fetches--caused //gs selftests to fail and a bug in scc.c was also causing self-tests to fail. Changes in KEGS v0.35 since v0.34 (5/17/98) - engine_c.c fully implemented--KEGS now has a version completely written in C, and now portable to other Unix machines. - KEGS got another 5% faster with more tweaks to the asm dispatch loop. Changes in KEGS v0.34 since v0.33 - KEGS is 10-15% faster due to finally implementing a planned recoding of the dispatch loop. Changes in KEGS v0.33 since v0.32 (5/7/98) - Fixed bug in engine_s.s that prevented compiling on pre-10.20 systems. - ADB mouse interrupts work now. Fixed "bug" where GSHK would think mouse button was depressed at startup. (GS/OS is looking at mouse button 1 status, which accidentally was reading as down). - ADB emulation of read char_sets and read_kbd_layouts now matches a real //gs. - optimization to allow dereferencing page_info[] even if BANK_IO is set, to get a small speed improvement in engines_s:dispatch(). - SCC logs are 'Z' at the disas prompt. - Tool decoded is 'T' at the disas prompt. - SCC changes to support slot 1 == port 6501 and slot 2 == port 6502, with limited interrupt support. Most serial tasks won't work still, but some do. PR#1/2 and IN#1/2 work fine. getty under GNO doesn't. - -audio [0/1] forces audio off/on. This just stops the sound playing-- internally all Ensoniq interrupts/etc are fully emulated. If display is not using shared memory (i.e., it's remote), audio defaults to off. (but can be forced on with -audio 1). - -display {foo} sends X display to {foo}. Changes in KEGS v0.32 since v0.31 (10/23/97) - Faster dispatch loop, for a 10-15% overall performance improvement - Fixed sound bug where Oversampler would make KEGS halt (Oversampler said turn on 128 oscillators, and KEGS tried to...) - Fixed bug where KEGS would not work on 24-bit displays due to a typo. - Added frame skipping support (-skip n) and auto frame skipping if you are not using shared memory (like displaying KEGS to a remote machine). - Added -noshm support for forcing off shared memory, so you can see how much it helps. Changes in KEGS v0.31 since v0.30 (9/23/97) - New mouse handling--Press F8 to hide X windows cursor and constrain cursor inside window. Makes using the mouse much easier. F8 toggles back to normal. - Add revision to status area. - Remove "slow memory" calculation. KEGS was emulating slowing down to 1MHz to write to slow memory (bank $E0 or $E1). But true //gs accelerators have a smarter trick, so I just removed it from KEGS. KEGS still slows down for I/O reads and writes. This eliminates the confusing 40MHz speed numbers you'd sometimes get. KEGS can also now run faster when it would have slowed down to 1MHz before. - Turn off accurate IWM emulation be default, for much faster emulation. Bit copiers won't work by default now. Toggle accurate IWM with F7. Accurate IWM forces 1MHz speed for 5.25" and 2.5MHz for 3.5", but less accurate IWM runs as fast as possible. - Add optional size to s7dx entries in disk_conf, to allow using /dev/rfloppy. - Allow mounting partitions by number, instead of just by name, since some Mac-formatted Zip disks don't have partition names. - Add -ignbadacc to ignore bad memory accesses. - Increase MAX_C030_TIMES. Otherwise, fast workstations could generate too many clicks per VBL, causing an assertion to fail. - Small speed increase detecting changes in the superhires screen. - Alt_L is now Open-Apple, and Alt_R is Closed-Apple. - KEGS now uses just one private colormap, so xwd can get screendumps.