Apologies: this article was supposed to be posted A LONG TIME AGO, but wasn’t due to aΓ technical problem with the site.
Brendan Robert has announced Jace, a new Java-based Apple //e emulator project on usenet groupΓ comp.emulators.apple2. According to Brendan,Γ Jace attempts to emulate the //e in a 100% cycle accurate manner. Brendan’s announcement is attached.
Jace, Java Apple Computer Emulator, aims to accurately emulate a //e enhanced computer in a cycle-accurate manner.Γ The program takes advantage of recent improvements in Java, so you must use version 6 or higher to use this emulator.
http://sourceforge.net/projects/java-ace
There are no file releases yet, but you’re welcome to grab the source from the SVN and give it a shot.Γ Right now, the emulation is full speed (capable of way more than full speed) with some issues with sound. At least in Windows, since there’s no high-resolution timer in JavaΓ that works accurately enough. If you use dual-core on Windows, it should work flawlessly.
Emulated:
β 65C02 processor, cycle accurate
β Slot-based devices (once configuration screens are built, you can actually place “cards” in any slot!)
β Graphics modes: Lores, Hires, Double-hires
β Disk II card emulating two disk drives
β Speaker sound (choppy on single-core CPUs in windows, YMMV)
β Breakpoints and memory watches are implemented as well as tracing execution step-by-step
β Mame-styled cheats will be possible and actually really easy to implement due to how the event-based triggers are supported
β Quasi-emulates floating bus support
β Video generation in-sync with CPU emulation. One cpu cycle = One byte converted to video (well, more or less with the exception of some optimizations in the best interests of efficiency where I do two bytes at once and stall for a cycle after). Probably going forward I’ll change it up to capture the video data and then wait for the VBLANK to actually convert the video data to a graphical image, to allow for other interesting things like NTSC artifact calculations. Haven’t decided on that yet.
β Hires color fringe behavior, easy to emulate just by converting hires into double-hires data and showing it as-is
Not yet emulated:
β NTSC-accurate or more realistic TV emulation of color artifacts
β Prodos-ordered disk images or .NIB images (one is easy, the other is less easy β there’s some code that tries to de-nibblize the disk image but it doesn’t work correctly yet)
β Accurate and reliable resync code: Right now the speed is controlled more accurately using the speaker emulation to throttle things down a little. I tried doing everything in treads, but the context switching was a nightmare in windows!
β Mockingboard (actually the AY emulation was written a long time ago)
β SSC (I need to emulate this if I ever want to create a testbed for the game server app, which is one of two reasons I started this project!)
β 80-column text (slight bug in some of the funkier //e softswitches, getting there though!)
β Double-lores (same reason 80-column is busted β the video emulation part works AFAIK)
The UI is really rough around the edges, featuring the emulated screen and a panel on the right for debugging operations. Obviously this needs to get changed, but my free time this year has been reduced to nothing. Mostly because of good things happening and just being busy. But I started to feel bad that I had this thing working back in May and didn’t say anything about it, so I committed all outstanding
code changes and decided to let you folks in on the little secret.
Keys of interest:
F2: Open DSK image
F3: Open binary image (named in ciderpress format with start address as part of filename)
Ctrl+F12: Control-Reset
Can’t remember if I emulated the apple keys yet. It’s not hard to do, it’s just that I got stuck in an infinite loop trying to get the resynchronize code to behave properly on single-cores. Tricky stuffβ¦

