Friday, October 14, 2016

Back to 8 bit

Quick update. I discovered that Adafruit doesn't support USB keyboard emulation on the M0 version of the Adalogger, so I ordered a couple of the 8 bit 32u4 feathers for more experiments. Not much point doing the translation in the micro if you can't get out it to the computer.

Wednesday, October 12, 2016

Side Trip, Adafruit Feather M0

First: You can still order a stenomod keyboard. Same price, same procedure. See the earlier post.

Now, I know I said I'd talk about making the wooden deck next, but I haven't needed to make one lately so I don't have any pictures yet. Instead I want to take a little side trip into some research I've been doing.

On Discord there's been some discussion about putting some version of Plover directly into a steno keyboard like the stenomod. For this and other reasons I'd like to see about using a more powerful processor in the next version of stenomod. I bought a couple copies of the Adafruit Feather M0 board, called the "Adalogger". It uses an ARM processor with 48k bytes RAM and 256 bytes flash. It also has an SD card socket on the board. Even if "Plover in the middle" doesn't work out, I'd like to use the SD card to record strokes without being attached to a computer the way some of the real steno keyboards do.

My first experiments with the new board involved getting an interpreter to run to make interactive testing go easier. I don't anticipate getting Forth going on this machine, so I want to make my C environment as comfortable as possible. I already had this interpreter working for the 8 bit AVR.

It turned out to be amazingly easy to port the interpreter to the M0! I used it to test pins and dump memory as I got to know something about this chip. I've committed the code to a github repository if anyone is interested, here. I have a newfound respect for the portability of the Arduino IDE.

As it stands you can test I/O pins, making them input, output, input_pullup, high, low, or get one to wiggle indefinitely. You can also do basic arithmetic and logic using a sort of a data stack to pass parameters. I say "sort of" because the data stack is circular like that in the Green Arrays F18A. There is no overflow nor underflow. One you're used to it it's a very powerful way to pass parameters. It's not hard to make new functions visible to the interpreter as you go.

Now that I've learned a little something about the Adalogger, I'm wiring up a prototype stenomod and adapting the stenomod-C code to work with it. I'll report back when I know more.