Re: [openag5-talk] Modus operandis

[ Thread Index | Date Index | More lists.tuxfamily.org/openag5-talk Archives ]


Bruce Harley wrote:
> For several years I have been using a product that is no longer
> manufactured, called the Touchstream keyboard (the technology was bought by
> Apple and is being slowly reintroduced as the user interface in iPhone,
> iTouch, etc).

Yes, I remember the TouchStream.  I learned about it just after they
stopped selling them, which was very disappointing.  :-(  Bad apple
for sitting on such useful technology and hiding its true purpose
(and knowledge of its existence) from the world!

> 1. to design an interface that allows reprogramming of the device via the
> USB cable, from any computer that has the software tools to do this, and
> withut needing any special hardware.

Absolutely.  This was planned to be done at the very last stage of
development.  In particular, here's the Grand Plan from months ago:

1. build MON08 programmer circuit  <================= we are here

2. save default flash to host computer (for backup)

3. write C program that emits key numbers as they are pressed (for
validating my reverse-engineered key/contact mapping)

4. get USB keyboard interface working

5. get USB mouse interface working

6. allow device to be programmed via USB

> 2. to figure out what modifications may be necessary to the AG-5 hardware to
> facilitate such a process.
>  
> A key limitation would be, what can you fit in the on-board eeprom memory?

Yes.  The MC68HC908JB8 is a 8-bit micro-controller that has 64 KiB
program memory and 4 KiB data memory (flash).

The program memory cannot be overwritten dynamically, whereas the
data memory can be.  So we will use the program memory for the boot
loader (firmware which allows the user to "upload" their state
machine onto the device) and the data memory for the user-defined
state machine which transforms button presses + mouse movements into
USB data packets.

Assuming the user-defined state machine is implemented in the native
assembly language, 4 KiB should be sufficient: since the
micro-controller is 8-bit, each native instruction is 1 byte long.
Therefore we can have a maximum of 4 Ki instructions.

I recently learned of a language called Forth which allows execution
of native machine instructions from arbitrary memory locations.  It
also allows us to build higher-level primitives from a set of native
machine instructions.

So I will be investigating Forth as the language for implementing
the user-defined state machines.  Of course, at the user level, we
will use something like Ragel[1] to compile a very high-level state
machine into Forth code or maybe native assembly.  Finally, we can
wrap a simple GUI around Ragel to simplify the user experience.

In the end, the user need only manipulate a GUI or write Ragel code.
 There is no assembly/Forth programming.

[1] http://www.cs.queensu.ca/~thurston/ragel/

> I wonder that the manufacturer wouldn't
> be interested in making the device inherently firmware-upgradable--it'd be a
> great customer service to be able to offer upgrades like the
> mouse-acceleration firmware to existing users.  Then the rest of this effort
> would be simply a software excercise.  Has anyone been in touch with the
> inventor to suggest such a thing?

The inventor is aware of this project and is a member of this
mailing list, but I'm not sure if anyone has asked him that
question.  It seemed like such capability was planned for the AG6.

> I hope these thoughts are helpful.  I don't have the skills or the time to
> participate too much in actually creating the software, but I have more than
> a passing interest in making AG5 work and in making re-mapping native to the
> device for portability, and will certainly participate in trying/testing
> stuff that others come up with, to help make this happen.

Yes, thanks for your comments and your help.  I am glad to have more
people try out the firmware when the time comes.

Cheers.

---


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/