This page simply contains a few downloads, which are my work-in-progress, in building an alternate source base for the PJRC Custom MP3 hardware.

The following source code is intended for use only with the PJRC MP3 Player Hardware. This is V1.0 of the player code. It does not have as many features as the "official" code, but there are a few other things it can do that the official code doesn't do at the moment:

WARNING: THIS WILL REPLACE THE EXISTING MP3 PLAYER APPLICATION ON YOUR HARDWARE! MAKE SURE YOU HAVE THE ORIGINAL ("OFFICIAL") FIRMWARE AVAILABLE TO RE-INSTALL AFTER YOU'RE DONE WITH THIS!

On-board Buttons:
From left to right, while holding the player with the ports aimed up:

The downloads are split into several parts...

Flash.zip - The HEX file which can be uploaded to the hardware to give you a working player. If this is all you want, everything below here is of no interest to you.
Source.zip - All the source-code which produced the above Flash file.
Simulator.zip - The 8052 simulator I've been writing which allows me to debug the code in a much more interactive way than on the real hardware. (executable and source, written in C#). This simulator is incomplete, but does execute enough to trace my latest bugs. This portion of the project is being worked on, on an as-needed basis but is *very* functional already. NOTE: This program requires that the "Microsoft .NET Framework" is installed.

NOTE: Last upload: Oct.17, 2002

To use the above downloads, fetch them and extract them, preserving the paths for the files they contain. You should have a final directory tree which looks (roughly) like this:

C:\MP3PLAYERHARDWARE\SOURCE
+---Docs
+---Perl
+---Code
|   +---String
|   |   +---Segment0
|   |   \---Segment1
|   +---Data
|   +---Hardware
|   |   \---Serial
|   +---Main
|   |   +---Segment1
|   |   |   \---Generated
|   |   \---Segment0
|   |       \---Generated
|   +---PaulMon2
|   +---SubPrograms
|   +---PageStack
|   +---FlowServer
|   +---SampleClip
|   +---FileSystem
|   |   \---Fat32
|   |       \---FileTree
|   +---Streaming
|   |   \---Tasks
|   +---SmartKey
|   +---Terminal
|   +---Generated
|   +---UserInterface
|   |   +---Display
|   |   \---Input
|   \---Debug
+---Debug
\---8052Sim
    +---bin
    |   \---Debug
    +---obj
    |   \---Debug
    |       +---temp
    |       \---TempPE
    +---Command
    |   \---Commands
    +---docs
    |   \---8052Sim
    +---8052
    |   \---Instruction
    \---Hardware
The simulator, if I recall, has a few hard-coded paths, which I will eventually kill, but for now, if it doesn't start-up, then it's probably not finding a file it wants. NOTE: When you start the simulator, it can take a minute or two after you double-click the icon, before anything happens. The app has loaded already, and is scanning the source code (.RST files), and producing the image of the flash memory. This all happens before the Simulators' view appears on-screen. Just watch the CPU usage, and you should be able to tell something's happening. Eventually, the app will respond, and you'll find that common commands like step-into, step-over, and run are available. Many tool-windows are available and will display information, but most can not be edited. (values are updated, but don't change if you enter new values yourself, with a few exceptions). I'm implementing the simulator features on an as-needed basis.