Sweet16 Changelog

What's new in Sweet16 3.0.3

Apr 17, 2014
  • All-new About box, rewritten in Cocoa, with additional features including license information, hexadecimal build number for added nerdiness, and more.
  • Fixed bug in About box that could cause a crash if the build number couldn’t be retrieved for some reason.
  • Updated the code that draws the note in full-screen mode about how to get out of full screen mode to stop allocating new texture buffers 30x/sec without ever deallocating them. It only needed to do this once in the first place, and this bug was causing a massive leak of memory while in full-screen mode. Fixes bug 158.
  • Rebuilt the internal utilities that are bundled into the Sweet16 application that are used by the file drag-and-drop support; these were previously compiled to require a full 64-bit processor, and therefore would not work on an Intel Core Duo CPU (which is the oldest CPU on which Sweet16 can still be used).
  • Updated a macro that auto-generates a lot of the emulation code to eliminate huge numbers of code warnings and in theory some possible run-time errors (although to be clear, no known problems were fixed by this).

New in Sweet16 3.0.2 (Nov 27, 2013)

  • Fixed the bug that was causing crashes on quit, finally. Took a long time to find this one; it was a sneaky devil!
  • Made assorted bits of memory management code a little bit more robust.
  • The disk eject sound effect works again.
  • Added a “Clear All Breakpoints” button to the debugger.
  • Cleaned up some memory management code.
  • The integrated utility programs are now code-signed as required by Xcode 5.
  • Code signing of the application itself with my developer ID is now done more correctly.

New in Sweet16 3.0.1 (Nov 27, 2013)

  • Rearranged the order in which certain tasks are performed on shutdown to reduce the chances of hitting a Mac OS X bug that’s causing crashes when freeing memory used for tracking certain disk image files.
  • Updated the code that adds the Quit option to the “It is now safe to shut off your Apple IIgs” alert to not break if Marinetti presents its “You’re shutting down with an active network connection” alert as well.
  • Minor adjustments to the OpenGL startup code that may slightly improve performance on certain hardware.
  • Rewrote the code that switches between full screen and windowed modes to use newer CGDisplay APIs. Full screen mode now works correctly on Macs with Retina displays.
  • Fixed broken handling of modifier keys when being interpreted through low-level ADB access, such as in Wolfenstein 3D. Previously, key-up events were not being correctly generated for these keys.
  • Added support to Sweet16 for a new “start” type for the “step” command. This is used by the included debugger to immediately break into the debugger when you click the new “Break” button.
  • The debugger API “setRegisters” command now supports all the same registers “getRegisters” does, although this functionality is not yet used by the debugger itself. That should come soon!
  • The Sweet16 build number is now displayed in the emulator info alert presented by the debugger, in parentheses after the version number. This value is also in a new “build” value reported by the debugger API’s “getEmulatorInfo” command.
  • Console output is now only time-stamped at the beginning of new lines; you can no longer wind up with timestamps in mid-line if you don’t include a newline each time you send console output.
  • Removed a JavaScript library from the debugger that I’m no longer planning to use.
  • Sweet16 3.0.1 is now code-signed with my Apple Developer ID.
  • When activating Sweet16 with a mouse click, the window clicked on is now correctly made the frontmost window, instead of just bringing the application to the foreground.

New in Sweet16 3.0 (Nov 27, 2013)

  • Sweet16 3.0 requires Mac OS X 10.6.8 or later, and as such is no longer compatible with PowerPC Macs.
  • Implemented support for dragging files from the Mac into the GS Finder and vice versa; requires both the SweetPrinter and SweetDupe extensions to be installed on the emulated IIgs.
  • Implemented the first phases of the new Sweet16 debugger protocol, which is provided by a built-in WebSocket server that responds to special JSON-format commands, and sends its responses in JSON format as well. See “The Sweet16 Debugger” for details.
  • There’s also a Web server internally, that’s running when the debugger server is running, which serves up the built-in Debugger for you to use in your browser.
  • The internal Web server can also send a PNG image of the current Apple IIgs screen if you ask it for a file called currentscreen.png; for example, to load it from a browser running on the same computer as Sweet16, visit http://localhost:6502/currentscreen.png.
  • Created the new “Open In New Sweet16 Instance” service.
  • Removed the old JavaScript-based scriptable debugger and the user interface for controlling and configuring it.
  • The mounted disks window’s context menu now offers a “Reveal in Finder” option.
  • Fixed a bug in the IWM code that could result in failure to correctly count the tracks on a 5.25” disk.
  • Changed all references to “CleverPort” to “SmartPort” because... well... it was confusing people.
  • Renamed the “Automatically pause when in Dock” preference to “Automatically pause when minimized.”
  • Added an option to the Setup menu to let you select a ROM file. Finally!
  • When the screen dims while the emulator is paused, it no longer fades all the way to black.
  • Alert boxes are now presented using a thread-safe method that will reduce the potential for crashes being caused by trying to present an alert from threads that don’t have access to the user interface layer.
  • Added an option to the Help menu to download Ewen Wannop’s “Sweet16 Starter Kit”.
  • Updated many of the special internal COP intercepts to set the carry flag correctly on errors.
  • Cleaned up a lot of compiler warnings; these were harmless but sloppy.
  • A little clean-up work on the ADB emulation code.
  • Showing and hiding of the Mac cursor is much more reliable as you mouse in and out of Sweet16.
  • The click that activates Sweet16 after it’s been in the background is no longer passed along to the IIgs. This should help reduce the number of accidental clicks on buttons and the like on the IIgs.
  • Mouse events handled by the emulator are no longer reported back to the Mac as “unhandled.”
  • Significantly improved the Mac event handling code to be more efficient and less... quirky.
  • Implemented support for detecting the COP codes inserted when ORCA compilers are configured to output code for ORCA/Debugger. Currently, this just results in some extra console output, but soon this will be used more by the Sweet16 Debugger.
  • Console logging from IIgs code (done using a special COP operand) is now directed to the debugger instead of to the Mac’s console.
  • The about box now shows a build ID number next to the version number.
  • The about box no longer wastefully requests two references to the application bundle.
  • Updated all places that were using hard-coded buffer sizes for pathnames to use the PATH_MAX constant, so that they at least are guaranteed to be big enough.

New in Sweet16 2.3.1 (Aug 1, 2011)

  • Improved the vertical mouse wheel support to be more reliable.
  • Added support for horizontal mouse wheel scrolling.
  • The emulator speed overlay now moves properly when the video window is resized.

New in Sweet16 2.2.1 (Sep 16, 2010)

  • The CleverPort ROM now correctly stores $C7 in $07F8 when handling I/O.

New in Sweet16 2.2 (Jul 19, 2010)

  • Sweet16 now defaults to having speed control enabled, with the GS set to a 40 MHz emulated speed. This prevents laptops from getting hot while running Sweet16. You can easily turn off speed control to let your GS fly, using the preferences' CPU options panel.
  • You can now mount ProDOS-order (.po) disk images that are not floppy disk sizes.
  • When paused, Sweet16 no longer continues to use lots of your Mac's processor capacity.
  • Creating 1.4 MB disks using the Create Disk Image feature now creates disk images that are actually 1.4 MB, rather than 1.6 MB.

New in Sweet16 2.1.3 (Aug 31, 2009)

  • Massive speed improvement (especially on PowerPC) achieved by optimizing the main CPU thread loop.
  • Fixed a problem preventing the speed control feature from working on PowerPC.
  • Control-H no longer resets the Apple IIgs. Oops.
  • Removed some stray debug output.
  • Rewrote the Recent Disks code so the Recent Disks submenu now only shows file names instead of full URLs to the files in the list. This makes it much more user-friendly.

New in Sweet16 2.1.2 (Aug 31, 2009)

  • Fixed several errors in the French keyboard support.
  • Creating any size disk image, including floppy disk sizes, now has the same speed gain as creating hard disk images got in Sweet16 2.1.1.
  • Removed an obsolete error message.
  • Fixed an error message that was coming up blank when trying to create invalidly-sized DiskCopy 4.2 images.
  • The disk image size now tracks correctly in the “Create Disk Image” window, so the size you get actually matches the size you picked all the time (there were cases in which that wouldn’t necessarily be true).

New in Sweet16 2.1.1 (Aug 6, 2009)

  • Reworded the alert that appears when trying to mount a CD-ROM when no CD-ROM is found, since the same alert is used both when there is no CD-ROM media available as well as when there is no CD-ROM drive available.
  • Memory no longer gets leaked when controls in the Create Disk Image and Create Emupack file panels are clicked on.
  • The Create Disk Image panel now lets you create DiskCopy 4.2 images at 1.4 MB.
  • The Create Disk Image panel’s size popup no longer wanders out of view when you resize the panel.
  • Enabled some new optimizations that noticeably improves performance on PowerPC systems.
  • Removed some unnecessary debug output.
  • The SpiderMonkey JavaScript runtime is now weak-linked, so that Sweet16 really does now run on PowerPC G3 systems (albeit without debugger support).
  • The Create Disk Image panel now lets you choose a disk image format on Mac OS X 10.4; previously this popup window didn’t do anything prior to Mac OS X 10.5.
  • Creating disk images of even 1 MB sizes (5 MB, 10 MB, 32 MB, 100 MB, for example) now goes much, much faster, since instead of writing out 512 bytes at a time, these are written 1 MB at a time. A future update will provide a similar performance improvement for floppy size image creation.
  • Clicks in the video window are no longer ignored when the System Information window is open.
  • Removed some unnecessary mutual exclusion code in the networking support, speeding up networking substantially.
  • Rewrote the video timing code to be more precise.
  • The main event loop now does sleeps instead of busy-loops, dramatically reducing wasted CPU cycles; Sweet16 plays much more nicely with other running processes now.

New in Sweet16 2.1 (Jul 24, 2009)

  • Added a new View menu, with new half-size, normal size, and double size options.
  • Moved the Full Screen option to the View menu.
  • Fixed a serious memory corrupting/crashing bug in the Get Clipboard NDA.
  • Improved the robustness of the Sweet16 side of the clipboard code.

New in Sweet16 2.0 Beta 18 (Aug 12, 2008)

  • The SpiderMonkey JavaScript library has been recompiled to run on both PowerPC G4 and G5 chips instead of only G5s. G3 support should be coming soon

New in Sweet16 2.0 Beta 17 (Aug 11, 2008)

  • If no joystick is connected, the joystick routines now report that they�re dead center.
  • If the memory for the screen shot buffer can�t be allocated, screen shots are disabled, instead of letting it try and crash.
  • You can now paste text from the Mac clipboard into the Apple IIgs. Only ASCII characters are supported at present.
  • Added a System Information window to show the CPU speed.
  • Programmers can access the OpenGL buffer used to draw the Apple IIgs screen in banks $E2 through $E9 of Apple IIgs memory. This is a 640x400 pixel buffer in 16-bit color.
  • The Sparkle framework is now used to provide automatic updates. In addition, there�s a preference that lets you enable and disable automatic updates, as well as one that lets you subscribe to receive the extra-risky test updates.
  • Added mutex to fix problems with crashes adding and removing disks to the online disks windows.
  • Added a new Toggle Full Screen NDA so you can toggle full screen within the IIgs environment.
  • Fixed a crash that occurred when changing the window title from the CPU thread; it is now done in the UI thread.
  • Fixed a problem with color palettes that affected colors in DreamGrafix, Wolfenstein 3D, and other applications.
  • You can now mount disk images by dragging them to the application�s icon.
  • Added joystick support; USB joysticks are now supported (but not gamepads).
  • Fixed a crash that occurred when ejecting disks by moving the resize of the online disks window into the UI thread.
  • If GS/OS is shut down and you�re at the �It�s now safe to shut off your Apple IIgs� screen, quitting Sweet16 no longer asks for confirmation, since it�s safe to quit.
  • Added a new preference that lets Sweet16 automatically switch to 1 MHz when booting 5.25� disk images.
  • If the first character of a disk image name you�re creating isn�t a letter, it�s replaced with an �x� when naming the ProDOS volume written onto it.
  • Implemented TCP/IP networking support over Ethernet.
  • Strings are now in the localizable.strings file so they can be localized.
  • Replaced the application icon with something less dorky looking.
  • Added a sweet new debugger.
  • Fixed the title of the About window to get rid of some junk characters.
  • You can now mount ISO format disk images; these may require the High Sierra (ISO) FST to be installed, depending on the format of the contents.
  • You can now mount CD-ROM disks into Sweet16. Sweet16 will attempt to mount all partitions on the disc. Ejecting the disk from the emulator physically ejects it from the computer.
  • Added the �Open CDA Menu� option to the Setup menu; this lets you open the CDA menu if you don�t remember the keys to do it, or if they conflict with some other software running on your Mac.

New in Sweet16 2.0 Beta 1 (Jun 11, 2008)

  • Graphics are now drawn using OpenGL, and color is 16-bit for truer color fidelity.
  • Removed tons of unused code.
  • Added a routine that makes it possible for IIgs code to output text to the Mac console.
  • The video window's title bar now indicates the name of the Apple II application currently running -- if you've installed the latest version of the SweetPrinter extension from the tools disk, as described in the documentation.
  • Added full screen graphics support.
  • Added a preference that lets you specify whether 800K disk images mount on the CleverPort or IWM by default.
  • You can now resize the video window to any size by holding down option and clicking and dragging in the resize box that appears in the bottom right corner of the window.
  • Switched to using the more modern Carbon Event Manager, which improves performance and makes certain tasks easier to accomplish in the code.
  • The Mac mouse cursor now hides and shows more reliably as it passes in and out of the video window, courtesy of Carbon Event Manager mouse tracking.
  • You can now switch between 16:10 (typical emulated Apple IIgs aspect ratio) and 4:3 (real Apple II aspect ratio) using the preferences.
  • Fixed a bug that was causing empty ROM and other files to be created if they couldn't be found.
  • The toolbar has been removed; the CPU speed indicator is not currently available but will return before the final version of Sweet16 2.0.
  • Removed the Real Time dock icon update option; this was hurting system performance when selected. Added an "Every second" option to replace it.
  • DiskCopy 4.2, HDRV, and Universal Disk Image files are now recognized by their Mac file type information if it's present.
  • Universal Disk Image files are identified by their internal signature if no other type information is found.
  • The mouse scroll wheel now sends key up and down events, to let you use the scroll wheel to some extent in GS applications.