Welcome!


[Michael J. Mahon]
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 Gaming

At 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 NadaNet

In 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 II

Scott 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.0

Do 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 Synthesizer

I 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.

AppleCrate 8-Voice Synthesizer

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.

Early (1981) Hex Dump Reader

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.

Sound Editor

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.

Early (1981) N-Body Gravitational Simulation

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: