A project to implement a console using the Mbed using VGA for video output and a PS/2 keyboard for the input. The eventual goal is to also include tools for managing SD cards, and a semi-self-hosting programming environment.

Dependencies:   PS2_MbedConsole fastlib SDFileSystem vga640x480g_mbedconsole lightvm mbed

MbedConsole is a cool little project to have a self-contained computer all on an Mbed. So far it has VGA and PS/2 support and can stand alone without a computer powering it. Next planned features are SD card support and a lightweight programmable VM complete with a file editor and self-hosted assembler.

You can view additional details about it at http://earlz.net/tags/mbedconsole

Revision:
0:6906dbde03da
Child:
1:eb209f0468de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Sep 17 03:25:23 2012 +0000
@@ -0,0 +1,82 @@
+#include "mbed.h"
+#include "vga640x480g.h"
+
+#define FONTHEIGHT 16
+#define FONTWIDTH 8
+
+int console_x=0, console_y=0;
+int console_color=WHITE; //text color
+
+DigitalOut myled(LED1);
+
+Serial serial(USBTX,USBRX);
+
+void rawputc(char c)
+{
+    //fuck that shitv
+    if(console_x>80)
+    {
+        return;
+    }
+    //shift left for fast multiply
+    vga_putchar(console_x<<3, console_y<<4, c, console_color);
+}
+void putc(char c)
+{
+    //shift left for fast multiply
+    if(console_x>=79)
+    {
+        console_x=0;
+        console_y++;
+    }
+    switch(c){
+        case '\n':
+        case '\r':
+        console_y++;
+        console_x=0;
+        break;
+        case '\b':
+        rawputc(' ');
+        if(console_x>0)
+        {
+            console_x--;
+        }
+        rawputc(' ');
+        break;
+        case '\t':
+        for(int i=0;i<4;i++)
+        {
+            console_x++;
+            rawputc(' ');
+        }
+        default:
+        vga_putchar(console_x<<3, console_y<<4, c, console_color);
+        console_x++;
+    }
+}
+
+/*void puts(char *s){
+    while(*s!=0){
+        char c=*s;
+        switch(c)
+            case '\n':
+            case '\r':
+            console_x=0;
+        vga_putchar(console_x,console_y,*s,console_color);
+    }
+*/
+
+int main() {
+    init_vga();
+
+    serial.baud(115200);
+    
+    vga_cls();
+    
+    while(1)
+    {
+        if(serial.readable()){
+            putc(serial.getc());
+        }
+    }
+}