mbed LPC1114 emulator pre-alpha version

Dependencies:   BaseV6M mbed F12RFileSystem F32RFileSystem ROMSLOT SDStorage

Fork of emu812 by Norimasa Okamoto

480
TOYOSHIKI TINY BASIC mbed Edition TTB_mbed_LPC1114.bin save as "LPC1114.IMG" .

main.cpp

Committer:
va009039
Date:
2015-08-19
Revision:
4:6629544a482e
Parent:
3:5df725af50e0
Child:
6:41e64a077678

File content as of revision 4:6629544a482e:

// main.cpp 2015/8/19
#include "EMU111x.h"

DigitalOut led1(LED1),led2(LED2);
RawSerial pc(USBTX,USBRX);

LocalFileSystem local("local");
uint8_t* flash = (uint8_t*)0x2007c000; // AHBSRAM0,AHBSRAM1

class MyEMU1114 : public EMU111x {
    virtual void DigitalWrite_Callback(int port, int pin, int value) {
        switch(port<<8|pin) {
            case 1<<8|5: led1 = value; break; // PIO1_5(LED1)
            case 0<<8|7: led2 = value; break; // PIO0_7(LED2)
        }
    }
    virtual void SerialPutc_Callback(int ch, uint8_t c) { pc.putc(c); }
    virtual int SerialGetc_Callback(int ch) { return pc.getc(); }
    virtual int SerialReadable_Callback(int ch) { return pc.readable(); }
};

uint8_t* load(uint8_t* buf, int size, const char* filename) {
    pc.printf("loading[%s]... ", filename);
    FileHandle* fh = local.open(filename, O_RDONLY);
    MBED_ASSERT(fh);
    int n = fh->read(buf, size);
    pc.printf("%d bytes\n", n);
    fh->close();
    return buf;
}

int main() {
    pc.baud(115200);
    pc.puts("LPC1114 emulator pre-alpha version\n");

    MyEMU1114 mcu;
    mcu.assign_flash(load(flash, 32*1024, "LPC1114.IMG"));

    mcu.reset();
    for(;;) {
        mcu.run(100);
        mcu.clock_in(250);
    }
    /* NOTREACHED */
}