Become a fan of Slashdot on Facebook


Forgot your password?
Wii Businesses Entertainment Games Apple

Apple IIe Emulator Released For the Wii 86

fortapocalypse writes "Yohanes Nugroho just released WiiApple, an Apple IIe Emulator for Wii. While the sound doesn't work, some games are playable (he shows a screenshot of Epyx Winter Games as well the execution of a program he wrote in BASIC). He's also released the source code. Using WiiApple requires the Homebrew Channel, which we have discussed in the past."
This discussion has been archived. No new comments can be posted.

Apple IIe Emulator Released For the Wii

Comments Filter:
  • Memories are Forever (Score:3, Interesting)

    by alain94040 ( 785132 ) * on Saturday January 03, 2009 @01:30PM (#26312431) Homepage

    This is great... Now, all you have to do is install the preventive multitasking OS [] I had written at the time then try to bootstrap Minix from it, and you'll have the best of the 80s.

    So many memories, so little time. How many people on /. even have fond memories of the Apple II? Just showing my age I guess. Anyone below 30 who even knows what it was like at the time? I ran my first BBS on an Apple II. Kind of like slashdot, minus the traffic :-)

  • Re:Linapple (Score:3, Interesting)

    by the_B0fh ( 208483 ) on Saturday January 03, 2009 @03:02PM (#26313143) Homepage

    Where the heck did you get Wasteland from? I succumbed to nostalgia, and downloaded some MS-DOS versions of wasteland. Holy Mother of God, CGA graphics sucked big time compared to Apple II Hi-Res. I played Wasteland on my Apple ][GS, and don't remember it sucking that much.

  • by VanessaE ( 970834 ) on Monday January 05, 2009 @06:09AM (#26327819) Homepage

    And depending on how those clicks were timed, the technique was probably pulse width modulation. It's simply the easiest way to turn a 1 bit output into something greater. At present, PWM is used commonly in CD players, motor speed controllers, and probably your PC's power supply. Hell, even a Commodore mouse uses it [1]. There's not much limit to the applications this method can be applied to. Higher drive current and/or voltage, a faster pulse rate, and finer pulse width granularity are usually better, but the fundamentals are the same pretty much anywhere a variable voltage is needed if everything is otherwise sane.

    Since I don't know the intimate details of the Apple II beyond the presence of that flip flop output, I'll speak from a generic perspective, to expand on the comments made by the AC below.

    Suppose you have a basic computer with a 1 MHz system clock and one or more generic I/O chips with ordinary TTL outputs, among its various other hardware.

    In your code, configure a main interrupt to trigger at a fairly decent clip, let's say 25000 times a second. Each time it triggers, have it set up a second interrupt, force an I/O line high, and exit. That second interrupt should fire a short time after it is enabled, and it should do nothing but set the I/O line low and exit when triggered.

    Call the second interrupt's time delay "D", as it represents the pulse's duty cycle. Structure the primary interrupt's code so that, when D is zero, the secondary interrupt code can chime in (that is, before the main interrupt can even exit) and force the I/O line to low right after the main interrupt sets it high.

    On the hardware side, couple that I/O line through the usual R/C circuit and attach to a speaker. As the AC below already said, this is what was done in every Apple II, and this is what will do most of the work to turn that train of pulses into a smooth voltage. With your 10 MHz system clock, a 25 kHz pulse train gives you 40 cycles between the pulses' leading edges, so your average voltage output will be about (100*(D/40)) percent of that of the high rail.

    Do something simple that makes D the same amount at all times, and you've got a configurable voltage output. Change D every so often to follow a digital sample and you've got a 25 kHz output with about 5.32193 bits of resolution.

    Since there will be some timing variation and latency in the interrupts, the available resolution will be slightly lower that this theoretical maximum (probably 5 bits even). Because of the large amount of CPU time consumed by the interrupt routines, this method works best if the I/O line is something like a timed shift register port. Then you only need a single interrupt that reads a sample value, sets the I/O line's timer accordingly, writes to the serial register any value that has only one bit set, and then exits.

    The fact that this all requires good assembly language skills on the 8-bitters does not change the fact that it *is* full digital audio - you need good skills regardless of the type of audio output hardware you're working with.

    *[1] I 'scoped it once years ago and was surprised to find that the 1351 mouse uses PWM to generate the analog signals that are sensed as voltage levels by the POTX/POTY lines in the controller port.

It seems intuitively obvious to me, which means that it might be wrong. -- Chris Torek