IPS(Interpreter for Process Structures) for mbed

Dependencies:   ConfigFile FATFileSystem mbed

IPS port from linux/unix version.

mbed_blinky.ips

0 VAR led1
" LED1 " DigitalOut led1 !
: main
    ANFANG
    1 JA?
      1 led1 @ write
      200 wait_ms
      0 led1 @ write
      200 wait_ms
    DANN/NOCHMAL
;
main
Committer:
va009039
Date:
Sun May 24 21:29:48 2015 +0900
Revision:
4:b62b40563944
Parent:
1:e74530ad6b9e
fix I2C

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 1:e74530ad6b9e 1 // VirtualRAM.h 2015/4/29
va009039 1:e74530ad6b9e 2 #pragma once
va009039 1:e74530ad6b9e 3 #define PAGE_CHUNK_SIZE 1024
va009039 1:e74530ad6b9e 4 class VirtualRAM {
va009039 1:e74530ad6b9e 5 public:
va009039 1:e74530ad6b9e 6 int used_size;
va009039 1:e74530ad6b9e 7 VirtualRAM(): used_size(0) {
va009039 1:e74530ad6b9e 8 memset(mem_ptr, 0x00, sizeof(mem_ptr)); // NULL
va009039 1:e74530ad6b9e 9 }
va009039 1:e74530ad6b9e 10 uint8_t peek(uint16_t a) {
va009039 1:e74530ad6b9e 11 uint8_t* mem = ptr(a);
va009039 1:e74530ad6b9e 12 if (mem == NULL) {
va009039 1:e74530ad6b9e 13 return 0x00;
va009039 1:e74530ad6b9e 14 }
va009039 1:e74530ad6b9e 15 return mem[a % PAGE_CHUNK_SIZE];
va009039 1:e74530ad6b9e 16 }
va009039 1:e74530ad6b9e 17 void poke(uint16_t a, uint8_t b) {
va009039 1:e74530ad6b9e 18 uint8_t* mem = ptr(a);
va009039 1:e74530ad6b9e 19 if (mem == NULL) {
va009039 1:e74530ad6b9e 20 mem = reinterpret_cast<uint8_t*>(malloc(PAGE_CHUNK_SIZE));
va009039 1:e74530ad6b9e 21 MBED_ASSERT(mem != NULL);
va009039 1:e74530ad6b9e 22 mem_ptr[idx(a)] = mem;
va009039 1:e74530ad6b9e 23 used_size += PAGE_CHUNK_SIZE;
va009039 1:e74530ad6b9e 24 }
va009039 1:e74530ad6b9e 25 mem[a % PAGE_CHUNK_SIZE] = b;
va009039 1:e74530ad6b9e 26 }
va009039 1:e74530ad6b9e 27
va009039 1:e74530ad6b9e 28 private:
va009039 1:e74530ad6b9e 29 uint8_t* ptr(uint16_t addr) {
va009039 1:e74530ad6b9e 30 return mem_ptr[idx(addr)];
va009039 1:e74530ad6b9e 31 }
va009039 1:e74530ad6b9e 32 int idx(uint16_t addr) {
va009039 1:e74530ad6b9e 33 return addr / PAGE_CHUNK_SIZE;
va009039 1:e74530ad6b9e 34 }
va009039 1:e74530ad6b9e 35 uint8_t* mem_ptr[65536 / PAGE_CHUNK_SIZE];
va009039 1:e74530ad6b9e 36 };
va009039 1:e74530ad6b9e 37