Touch  Metal
Hardware
This is a picture of a Touch Metal board. Power is supplied through a USB-C connector at the top. The 4x20 LCD display gives information as you work with the board. The display can also be magnified (by using the "Display Mode" button), showing less information in a larger font. Inputs/commands are entered through the 16 pushbuttons. The 8 on the left let you enter octal (base 8) numbers. The buttons on the right let you examine and change memory, step the CPU, put the CPU in free-running mode, and so on.
The board measures 70mm x 90mm (2 3/4" x 3 1/2"). It's well-suited for exploration through just the pushbuttons and the display, especially for smaller projects. For larger projects, there's the option of loading memory using an external Linux-based tool (in conjunction with the "Prog Load" button).
Note that this is a prototype of the board. The final design may change, but the behavior should remain essentially the same.
Touch Metal Instruction Manual
You can download an instruction manual for the Touch Metal board here. Note that this is a a draft version.
Assember
It can be pretty fun and rewarding to develop an assembly language program by hand on paper; to convert it into machine code using a table of opcodes; to enter it into a system's memory through front-panel switches; and then to execute it and see it run! It's comforting to know that if you were stranded on a desert island (with a touch metal board, 5V USB power supply and pencil and paper) you could still program the board to generate prime numbers :)
Eventually though (once you know you can do it by hand), it can be nice to have tools for doing some of these tasks.
For translating assembly language to machine code, you can use an assembler to check the syntax, resolve labels, do the conversion, and generate the machine code.
Board Emulator
Of course touching metal is ideal; that's really the whole point of all this. There's no substitute for manually interacting with a physical computer, feeling the click of the buttons, and so on. That's not always practical though (and I'm still working on the logistics of making physical boards available). To that end, there is a web-based emulator available. This exhibits the same basic behavior as the physical board, but is instead a pure-software system, available through this website.
Two differences from the physical board are:
- EEPROM storage (for saving programs in non-volatile memory) is not available; and
- loading built-in sample programs (which requires holding a button while applying power) is not available.
On the other hand, the Prog Load button is fully functional, and works well with the assembler's output.