The AlphaSmart NEO (and its successor, the NEO 2) is a portable, battery-powered word processor. It features a keyboard and grayscale LCD in a durable, all-in-one hard plastic body. It's become a darling of hipster writers for its no-distractions interface: there's no Internet, no games, no music, nothing. It boots directly into a word processor within 5 seconds, using one of 8 files that you can quickly switch via function keys at the top. And it goes for 700 hours on a set of AA batteries.
Installable binary files to the AlphaSmart device have an extension ".os3kapp". Several of these come with the official AlphaSmart NEO Manager software - the tool used to link a NEO to PC and perform software updates, copy files, manage classroom activities, etc.
What makes an os3kapp tick? Lucky me, someone has already worked out most of the wrapper format as part of an open, OSX version of the NEO File Manager - take a look at tSoniq's "AlphaSync" code here: https://github.com/tSoniq/alphasync This is the same person who figured out the font code and produced a font editor.
Here's a spec. This being the Motorola 68000, all values are BIG ENDIAN.
Header - 0x94 bytes
uint32: File Signature (must be 0xc0ffeead)
uint32: ROM Usage (must match file size)
uint32: RAM Usage
uint32: Settings Offset (0 if app lacks settings)
uint32: Flags. Mostly unknown for now - the lowest byte seems to make a difference, of which the lowest bit means "applet is hidden from applets menu" (for system apps)
uint16: Unique App ID. Files with duplicate IDs cannot be installed on a device.
0xc001: null-terminated file password (use ident to know WHICH file)
0x8002: uint16 Applet ID
uint16: Settings Ident
Bit 31 is set if this ident is app-specific or clear if it is global
Bit 30 is set for passwords
Some IDs
0x0000: none (end of list marker)
0x1001: "On"
0x1002: "Off"
0x100C: "Yes"
0x100D: "No"
0x400b: master password, see type 0x0105
0x8003: Clear All AlphaWord Files (see type 0x0103)
0x1010: Maximum AlphaWord File Size
0x1011: Minimum AlphaWord File Size
uint16: Settings Length
Length x char: Settings Value
Skip one byte if Length was odd (68k memory access is 2byte aligned)
Stop after reading Type = 0
There may be unused bytes between this point and Footer, but are usually all 0.
Footer
uint32: always 0xcafefeed
Settings are a weird bunch that deserve extra mention. They control SmartApplets behavior on the device, but are also parsed by the GUI in NeoManager and used to build a special Settings panel. This allows control of the settings from the PC before copying an installation to a bunch of NEO in the field.
Using this info, I was able to knock together a decoder in Perl (project Files section) that prints information about a SmartApplet. It also dumps the 68k binary content into a .bin file, which I can load to a disassembler to see how it ticks. Here is Beamer.os3kapp, the IR communications tool.
I was going to open up my NEO unit to see what's inside. But, fortunately, people have already done that. There is a CR2032 coin-cell inside that serves as backup to retain SRAM while the AA batteries are removed. Some power users have opened their units to replace the lithium backup battery, and photographed the innards.
Main processor: DragonBall VZ "MC68VZ328PV" (or AG) with markings "6K85Z" and "QQAN0433"
This is a DragonBall VZ SoC - a 32-bit processor implementing the Motorola 68k architecture, and common in early PalmPC offerings before they switched to ARM.
Based on how the device functions: the system appears to store the OS and applications on the flash chip, do all computation using the processor within the SoC and attached SRAM temp area, and store the users' writing on the SRAM too. This makes a lot of sense, because the device is from the Early Days of flashmem, and it would be smart to limit the number of writes to the chip - like, don't save every time a key is pressed. Also, if the batteries run out, the OS and apps won't disappear : )
Disappointingly, it doesn't appear possible to give space to the text editor at the expense of apps. They live in separate RAM environments. Scratch that long-requested feature off the list.
The USB opens up possibility to read and write to an external drive...
When you install the NEO Manager software, it unpacks a number of files of format ".os3kapp". These are the SmartApplets that you can install to the device. Now that we know the CPU architecture, and we have local dumps of the applications, maybe it's time to dig up a 68000 disassembler.
It arrived today. There is great potential here, and largely untapped too - the sum total of knowledge about this device now lives on in this Flickr group: https://www.flickr.com/groups/alphasmart/discuss/
This device connects to a PC via USB. Without special drivers, it emulates a USB Keyboard when attached. Users can open Notepad, attach the NEO, then hit a key to "upload" their document by having it type out the letters one by one. There is also a NEO Manager application, and special drivers, which allow two-way communication. This is used to update firmware or flash new "SmartApplets", the name for programs that execute on the NEO.
There are multiple versions of AlphaSmart hardware: the 3000 is the oldest in the series, then the NEO, and the NEO 2 (which is like the NEO except it includes a proprietary radio system to link other NEO 2s in a classroom setting). There is also the Dana, which is actually a PalmOS device and very different.
All told, there hasn't been much done on the hacking front. Users do a fair bit of case modding by repainting with vinyl dye. Someone has cracked the font format and produced a font editor (http://tsoniq.com/software/legacy/neo-fonts/). Most SmartApplets are distributed by the now-defunct manufacturer: there are two commercial apps "Co:Writer" and "Inspiration Outliner" that have long since passed out of their customer service life, and not a lick of homebrew code to be found.
I look forward to seeing how this project progresses. I too want a distraction-free writing tool for my next NaNoWriMo attempt. Since my own home-brew word processor won't be ready in time, I opted to buy a Neo today so I have something portable to write on. Postage from the US to Aus is obscene BTW.
I'm so hype for this. I'm a computer science student with a creative writing degree so you know I've got two neos haha. But I don't have quite the chops to have gotten very far on my own yet in terms of hacking the neo. I had basically found tSoniq's stuff and got lost trying to grok it.
This is an interesting project. I myself was obsessed with the idea of owning a small text terminal device. I got the Girltech Im:me but was quite disappointed. This one looks like a much better text terminal.
I look forward to seeing how this project progresses. I too want a distraction-free writing tool for my next NaNoWriMo attempt. Since my own home-brew word processor won't be ready in time, I opted to buy a Neo today so I have something portable to write on. Postage from the US to Aus is obscene BTW.