Close

SmartApplet format

A project log for Hacking the AlphaSmart NEO

From Zero to Homebrew!

greg-kennedyGreg Kennedy 07/04/2017 at 03:245 Comments

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.

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.

grkenn@server:~/src/AlphaSmart % ./smartapp-tool.pl SmartApplets/Beamer.OS3KApp
SmartApplets/Beamer.OS3KApp
        magic = 0xc0ffeead      [VALID]
        rom_file_size = 32580   [VALID]
        ram_file_size = 2076
        settings_offset = 32392
        flags = 0xff000000
        id = 0xa006
        header_version = 1
        file_count = 0
        name = 'Beamer'
        Version = 1.01
        language_id = English (UK)
        info = 'Copyright (c) 2005-2012 by Renaissance Learning, Inc.'
        min_asm_version = 0
        file_space = 0
        entry_offset = 148
        unknown0 = 0
        unknown1 = 1
        unknown2 = 2

SETTINGS
        t: 1, i: 32768, l: 12
                Permit Send
        t: 1, i: 32769, l: 30
                Warn if overwriting clipboard
        t: 1, i: 32770, l: 38
                Send to Palm device as ALPHAWORD file
        t: 1, i: 32771, l: 24
                Require master password
        t: 259, i: 32768, l: 6
                On: On,Off
        t: 259, i: 32769, l: 6
                On: On,Off
        t: 259, i: 32770, l: 6
                On: On,Off
        t: 259, i: 32771, l: 6
                Off: On,Off
        t: 0, i: 0, l: 0
                [END]

        footer = 0xcafefeed     [VALID]

You can see that the various type 259 here have the same ident as the type 1s: in other words, the Label describes the Option. Here's the same app from within NEO Manager.

And the Settings Panel it creates - complete with Windows 7 UI errors : )

---

Something I think would be very valuable is to get a ROM dump of the machine. Probably this would entail generating my own SmartApplet that reads ROM data, copies it to SRAM, and then uploads that to PC in parts. By combining this all together, I can get a ROM image that I can then build an emulator around.

Discussions

Martin-P. Frenette wrote 04/24/2019 at 16:58 point

Did you make any additional progress since 2017?

  Are you sure? yes | no

Matt Sephton wrote 04/16/2018 at 22:33 point

Did you ever share your Perl script? I'm also interested in poking around.

  Are you sure? yes | no

Greg Kennedy wrote 05/15/2018 at 15:22 point

That's weird.  I THOUGHT I had attached it to this post, but then I didn't.  I'll edit this to add it.

  Are you sure? yes | no

anxiousArtisan wrote 09/28/2017 at 14:39 point

instead of dumping the rom, couldn't you rip up the firmware update that the neo manager grabs?

  Are you sure? yes | no

anxiousArtisan wrote 09/28/2017 at 14:54 point

and yes, I MADE AN ACCOUNT to post that because I want this to happen that much

  Are you sure? yes | no