Timex Datalink

Home Timex API WristApps S1C88 Assembly Float Code Samples

bullet

Ray's WristApps

bullet

Ray's info for Programming the Timex® M851 (Ironman® USB watch with Datalink®)

bullet

General

bullet
I haven't worn a watch in years, but got this one because it is programmable.  Really wanted the Palm OS watch and then the MS Spot watch, but the Palm OS watch never came and the Spot watch has no SDK :(.  Besides, you have to recharge those watches almost every day and they're very big.  This watch has just enough memory and speed to be useful.
bullet
Update:  Ok, the Palm OS watch is out and looks pretty nice, but it's not waterproof and only the battery only lasts a few days...
bullet
The watch is programmed via proprietary USB connector on the left side (shown above) using Timex software (which you should download to get the latest version).
bullet
You switch between programs using the "mode" switch in the upper-right corner.  You input data with the "Start/Split" (bottom) and "Stop/Reset" (lower-right) buttons and the crown.  The crown can be rotated in either direction, pushed in, or pulled out.
bullet
Programming is done in assembly language.  This is no fun, but probably a good idea anyway due to the limited memory.  You write your "app" to be a state machine and in this way divide your program into up to 20 states.  This is done because the Timex OS only copies one state at a time into RAM because it is so small.  The code for each state is limited to 900 bytes (the RAM is actually 2 kB, but the Timex OS uses the rest).  Fortunately, Timex has provided an SDK that eases the pain of writing an application.
bullet
You will have to join the Yahoo group to find other developers and their code.  Google usually finds nothing...
bullet
Pros:  Only $61 at WalMart, relatively thin, nice look, long battery life.  Cons:  small memory size, have to program in assembly, no FPU or floating point support of any kind, no emulator (have to test apps on real watch).
bullet
Update:   Paulo Marques, Pierre Delore, and Paulo Costa have created a very nice emulator for the Datalink watch.  This is very useful for debugging and seeing the internal workings of the system.  It is free to use and you can download it from the "files" section of Datalink Developer Yahoo Group.
bullet

Links

bullet
Timex DataLink Main Page:  http://www.timex.com/datalink/
bullet
Timex Developer Page: http://www.timex.com/developer/datalink/
bullet
Timex Data Link USB discussion forum:  http://groups.yahoo.com/group/timexdatalinkusb/
bullet
Timex Datalink USB Developer forum:  http://groups.yahoo.com/group/timexdatalinkusbdevelop
bullet

Display

bullet
bullet
Note that the upper Dot-Matrix is actually 12x5, despite what the documentation says!
bullet

CPU:  8-Bit SEIKO EPSON S1C88349

bullet
Specification table for Seiko Epson (click to expand):  specs.png (74341 bytes)
bullet
Supply Voltage:  1.8 to 3.5 VDC for low speed/power operation
bullet
Clock Frequency:  32 kHz in low speed/power operation, 4.2 MHz in normal mode, 8.2 MHz in high speed mode
bullet
Note:  the M851 OS uses 2 CPU clocks; 32.768 kHz for for normal operations, 2 MHz for high speed ops.  Timex says to limit use of high speed as it drains the battery.
bullet
Memory:  48 kB internal ROM and 2 kB internal RAM (up to 2 MB external ROM/RAM)
bullet
Special Features:  1 buzzer output (sound), 1 SVD (supply voltage detector), LCD driver, Serial I/O, 2 Comparators, various timers. 
bullet

External Memory

bullet
User data is stored in an external EEPROM chip.  It is a Microchip® 24LC256 (I/SN version), 32 kB, 400 kHz max, 5 ms write speed chip, good for 1 million write cycles.
bullet

Programming the S1C88 in Assembly

bullet
Fortunately, Timex has provided a nice SDK that makes programming relatively simple.  Most of your program will probably be calling macros defined in the Timex SDK header files.  To get started, simply run the "M851 WristApp Wizard", which will build a skeleton program for you based on your desired number of states and resources.  Then, edit the source files (.asm) using some kind of text editor.  When you are done, run the "M851 WristApp Builder", open the script file for your app (.scr), and push the button to build your app.  Then, use the "WristApp Installer" program to download to the watch.
bullet
You will probably have to become familiar with the CPU register names and instruction set.
bullet
You will also have to become familiar with the Timex API.
bullet
There's no floating point support, so I had to write my own!  Tried doing IEEE-754 floats, but the code was getting too big, so I switched to s16e7 floats.
bullet
You can see pieces of my code here