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
Revision:
2:908338b1151a
Parent:
1:e74530ad6b9e
--- a/BaseIPS.h	Wed May 13 18:39:01 2015 +0900
+++ b/BaseIPS.h	Sat May 23 16:50:59 2015 +0900
@@ -1,4 +1,4 @@
-// BaseIPS.h 2015/5/6
+// BaseIPS.h 2015/5/22
 #pragma once
 
 /* data types */
@@ -33,9 +33,15 @@
     void load_image(const u8* image, int size);
     void command(const char* s);
 
+    void push_ps(u16 w);
+    u16 pull_ps();
+    virtual uint8_t mem_peek(uint16_t a) = 0;
+    virtual void mem_poke(uint16_t a, uint8_t b) = 0;
+
+    uint8_t peekB(u16 a) { return mem_peek(a); }
+    void pokeB(uint16_t a, uint8_t b) { mem_poke(a, b); }
+
 protected:
-    virtual u8 peekB(u16 a) = 0;
-    virtual void pokeB(u16 a, u8 b) = 0;
     void poke(u16 a, u16 w);
     u16 peek(u16 a);
     virtual void do_io() = 0;
@@ -45,6 +51,7 @@
     virtual void file_putc(int c, void* handle) {}
     virtual bool file_close(void* handle) { return false; }
     virtual void trace(u32 cycle, u16 ppc, u16 hp, u16 cpc, u16 ps, u16 rs) {}
+    virtual void usercode(uint16_t cpc) = 0;
     int input_ptr;
 
 private:
@@ -54,8 +61,6 @@
     int depth;
     int redraw;
     int idle;
-    void push_ps(u16 w);
-    u16 pull_ps();
     void push_rs(u16 w);
     u16 pull_rs();
     void* inputfile;
@@ -69,8 +74,8 @@
     void c_retex(void); // 4
     void c_get(void); // 5
     void c_getB(void); // 6
-    void c_put(void); // 7 
-    void c_putB(void); // 8 
+    void c_put(void); // 7
+    void c_putB(void); // 8
     void c_1bliteral(void); // 9
     void c_2bliteral(void); // 10
     void c_bronz(void); // 11
@@ -102,7 +107,7 @@
     void c_sbit(void); // 37
     void c_tbit(void); // 38
     void loop_sharedcode(int i);
-    void c_jeex(void); // 39 
+    void c_jeex(void); // 39
     void c_loopex(void); // 40
     void c_plusloopex(void); // 41
     void c_fieldtrans(void); // 42
@@ -116,7 +121,7 @@
     void c_cyc2(void); // 50
     void c_close(void); // 51
     void c_open(void); // 52
-    void c_oscli(void); // 53 
+    void c_oscli(void); // 53
     void c_load(void); // 54
     void c_save(void); // 55
     void c_setkbptr(void); // 56
@@ -128,7 +133,7 @@
     void c_defchar(void); // 62
     void c_pplus(void); // 63
     void c_pminus(void); // 64
-    void c_sleepifidle(void); // 80
 };
 
 
+