SuperH-based fx calculators
fx-9860, Standardheader, G1A(Addin)-structure

Standardheader
All file formats that are read or written by the calculator share a common header format. This header is inverted before being written and read, so a description of the inverted file data make more sense than the normal file data:

Offset (b) Size (b) Description
0 8 File identifier: “USBPower”
8 1 File type identifier
9 5 {0x00, 0x10, 0x00, 0x10, 0x00}
0xE 1 Control byte: (LSB of filesize (at offset 0x13)) + 0x41
0xF 1 0x01
0x10 4 Total file size as unsigned integer, big endian format
0x14 1 Control byte: (LSB of filesize (at offset 0x13)) + 0xB8
0x15 9 Unknown purpose (maybe 4-alignment), appears insignificant
0x1E 2 Number of objects contained, if file is of type G1M or G1R
0x20 ... Subheader depending on particular file type

Known file types are:
0xF3 Addin
0x31 General MCS memory file
0x49 E-Activity

Addin subheader
Upon execution, the addin file is virtually mapped to 0x00300000, and the OS jumps to address 0x00300200 (“Addin code”). The addin code should use 0x08100000 for its .bss and .data sections (static RAM). CASIOs SDK will automatically add initialization code that loads the .data section and performs various system calls.

Addin subheader fields

Offset (b) Size (b) Description
0x20 8  “Internal” name, on the form “@APPNAME”
0x2B 1 Number of estrips
0x30 0xA Version on the form “01.23.4567”, first 5 bytes appear in MAIN MENU SYSTEM VERSION
0x3C 0xE Creation date on the form “YYYY.MMDD.HHMM”
0x4C 0x44 A 30×17 pixel menu icon bitmap. Logical “1” is black, “0” is white“
0x1D4 8 Program title. Appears in MAIN MENU SYSTEM VERSION
0x1F0 4 Filesize as unsigned long, big endian.
0x200  . . . Addin code

The CASIO SDK expects 30x19 bw BMP-files. The first and last line are omitted, when a G1A is assembled.

(18.05.2012 17:16:11)