The Virtual Motherboard Homepage
The Virtual Motherboard is hosted under sourceforge
(see:
http://sourceforge.net/projects/vmb/). There you can get
source code and browse the CVS repository.
Here you find a selection of ready to run binary examples.
A simple configuration running under Linux consisting of
- Virtual Motherboard.
- MMIX CPU
- ROM, including the rom image and the MMIX source files for the image
- RAM
- Screen
- Keyboard
- A sample hello world program, written in MMIX assembler.
- The mmix assembler (mmixal) and a tool to produce a boot image
from an mmix object file (mmoboot).
- A README file.
- The configuration file (default.mmc).
- A tgz file containing all of the above.
Example 2
A simple configuration running under Linux consisting of
- Virtual Motherboard.
- MMIX CPU
- ROM, including the rom image and the MMIX source files for the image
- RAM
- Two Framebuffer devices, one written in Java the other in C (for X11).
- A sample program lorenz.mms diplaying a lorenz attractor.
- The mmix assembler (mmixal) and a tool to produce a boot image
from an mmix object file (mmoboot).
- A README file.
- The configuration file (default.mmc).
- A tgz file containing all of the above.
Example 3
The same as Example 1, but with executables for WIN32.
(screenshot)
Example 4
The same as Example 2, but with executables for WIN32.
Example 5
This example demonstrates a simple embedded device, a stopwatch.
There is no RAM (everything works in registers, no user program, just
a program in ROM.
The example uses the GNU toolchain under windows to build the system.
- start it by double-clicking the motherboard. You will get the
motherboard, ROM (no RAM needed for this), a MMIX CPU in a console window,
a black, a green, and a red button, a timer, and a seven-segment display.
Arrange them on the screen as needed. At the first run all items are
located at position 0x0, but they remember new positions...
- Power the system on using the power button on the motherboard.
- Pressing the green button sends an interrupt and the CPU will
switch on the timer.
- A Timer interrupt will come every 1/10th of a second.
- The CPU will update the display on receiving a timer interrupt.
- Pressing the red button will stop up the timer.
- Pressing the black button, will reset the counter to zero.
Example 7
This example demonstrates the framebuffer device, buttons and timer.
- The program runs the "Game of Live"
- start it by double-clicking the motherboard. You will get the
motherboard, RAM, ROM, am MMIX CPU in a console window, a black, green, and
red button, a timer, and a frame buffer device. Arrange them on the screen
as needed. At the first run all items are located at position 0x0, but they
remember new positions...
- When power is on the CPU starts, and initializes the screen.
- Pressing the green button sends an interrupt and the CPU will advance
to the next generation.
- Pressing the red button will set up the timer, to send interrupts,
advancing to the next generation automatically.
- Pressing the black button, will terminate the Game of Life program. And
the CPU returns to the operating systems idle loop.
- Press the rest button on the motherboard to start over.
It sould be possible to write a program that starts with zero
counting the seconds and displaying the number of seconds elapsed on
the seven segment display.
Example GNU
A complex example demonstrating the GNU toolchain with MMIX.