Michael J. Mahon
Bellevue, Washington
Hobbies and Interests:
Digital Photography, Computers, Electronics, Sailing, and Flying
For many years I designed systems for Hewlett-Packard--but for fun, Apple II's remain my all-time favorite computers! Some of my more interesting projects are described below.
NADA.PONG: A Graphic Demo of Apple II Network GamingAt KansasFest 2007, thanks to a cogent lunchtime question, I wrote a graphic demo of the use of NadaNet to support multi-Apple II gaming! It shows a simple Pong-like game animation with the "ball" (a bouncing Apple) being passed between machines via NadaNet. A short video of the demo is included for your amusement. ;-)
ProDOS File Server for NadaNetIn order to support more complex applications running on the AppleCrate, and to support a shared file system for general NadaNet use, I have created a File Server. It can be accessed by any machine on the NadaNet, whether or not it has a local file system. This provides a convenient way to gain access to common files as well as a way to publish large volumes of data to other machines on the network.
The file server handles BSAVE, BLOAD, BRUN, SAVE, RUN, CREATE, DELETE, LOCK, UNLOCK, RENAME, and VERIFY commands, with their parameters. There are also two control commands: MON, to control monitoring of requests on the server’s display, and STATS, to read various statistical counters kept by the file server.
Sudoku Solver for the Apple IIScott Hemphill and I collaborated to create a Sudoku puzzle solver for Apple II computers. The machine language solver is Scott's, with some adaptations by me, and I wrote the interactive Applesoft front-end.
SUDOKU v2.0 now runs on any 64KB or larger Apple II with lower case and Applesoft BASIC.
It is amazingly fast! Most Sudoku solvers run on modern PCs thousands of times faster than a 1MHz Apple II, and take seconds to solve a puzzle, but Scott's solver is so time and space efficient that it solves puzzles in seconds running on an Apple II!
Click here to read about and download the Sudoku Solver.
Apple II Networking and Parallel Computing - NadaNet 2.0Do you have more than one Apple II computer? Have you ever thought about what you could do if they were networked together? Several years ago, I began thinking about this, and envisioned being able to send data easily from one machine to another and being able to run programs on other Apples while sitting at my main machine.
I knew that there were networking cards available for the Apple II machines, but they were all some combination of rare, expensive, or unsupported by software. So I considered how one might network Apple II computers using only the I/O capabilities built onto the main board, and wondered what might be done with such a network.
I have worked on this project over the intervening years as time permitted, and it is now working quite well. For more about the new version 2.0 of NadaNet and a parallel Apple II computing platform that uses it, the AppleCrate, click on these links.
Apple II Single-Voice Real-Time SynthesizerI have recently completed a single-voice synthesizer for Apple II machines that can be
played in real-time from the Apple keyboard. It can be run on any Apple //e, Apple //c
(or //c+), or Apple IIgs, and permits not only real-time performance using user-selected
instrument sounds, but recording and playback of performances.
For more information check out RT.SYNTH documentation and downloads.
I have developed an 8-voice polyphonic synthesizer
using the AppleCrate and a highly modified version of SOUND.EDITOR's DAC522.
For details, check out SYNTH documentation, the MIDI converter program, and source.
Here's a nice multi-voice example, a rendition of
In My Life by The Beatles.
It stretches CRATE.SYNTH to its limits, since it actually would like to play ten
voices simultaneously. I implemented a "scavenging" algorithm that reassigns
the oscillator that has been playing a note the longest when I need an oscillator
and all are busy. It usually works, but it occasionally grabs an "audible" note
when a lot of notes are hit together (as you can hear in this piece if you listen
closely).
Here is an earlier rendition of Eric Satie's
Gymnopedie (April 3) (mono, 22kHz, 80k bits/sec) for your enjoyment.
In the old days, some programs were entered by typing in hex listings from magazines.
Then the problem was verifying that what you typed was what was in the listing. The
obvious way to do this was to display a hex dump of what you had typed, the compare
it, line for line, with the printed listing in the magazine. As you can imagine, this
verification step is very error-prone in itself, and quite gruelling.
It is possible to do much better if you can recruit someone else to read either the
screen display or the magazine listing, so that you can compare what you hear to
what you see, without constantly shifting your attention from one listing to another.
This was my approach, with my wife as the "willing" volunteer, until it became clear
that after ten minutes or so, it was no longer amusing. ;-)
So my solution was to write a program to read back the hex dump of Apple memory,
which I could then easily compare to the printed listing.
I first wrote a short machine language program to digitize sound (to 1-bit
precision) at the cassette input for later playback through the speaker. I
recorded the hex digits: "One, Two, Three,..., Able, Baker, Charlie, Dog, Easy, Fox".
I then used an Applesoft program with game paddles to locate the beginning and end
of each spoken digit in memory, and used that info to create a table with an entry
for each hex digit. The rest was easy.
In the process of going through my old data cassettes, I found this program
and am putting it online for nostalgia's sake. The program in unusual in two
ways: 1) it is tricky to modify, since its ending address has been extended
manually to include the digitized voice table, and 2) it contains all the code
that was used in its development, including the voice digitization and exploration.
Just RUN the program READ.HEX.DUMP and enjoy a blast from the past!
Click here to download a ShrinkIt archive of the
Hex Dump Reader.
In 1993, I decided to push the limits to discover what could be done with
sound on an 8-bit Apple II. I was eventually able to achieve excellent sound
quality without the distortion and "screech" typical of SoftDAC sound players.
SOUND.EDITOR uses DAC522 for its conversion, which operates at a sample rate
of 11.025kHz, and converts with 5-bit precision and 22.05kHz oversampling,
so that the "carrier" is ultrasonic (for most people ;-).
If you have any 64KB, lower-case-capable Apple ][ with Applesoft BASIC, you can try it
out by downloading my Sound
Editor v2.2. I guarantee that you will be amazed at the sound reproduction quality.
In fact, you really need headphones or an external speaker to do it justice.
Here is a .zip file containing
assembler listings of Sound Editor's ADPCM sound compression/decompression routines.
Here is another fun program I wrote in my cassette days--an N-body gravitational
simulation with hi-res display of the orbits. And here is a cheat
sheet to its controls.
Apple I Integer BASIC Disassembly
Here is a disassembly of
Apple I Integer BASIC done on an Apple II.
Links
Here's a fun source for electronic books!
You can contact me by clicking here.
Last updated on August 24, 2007.
Page visits since July 12, 2004: