diff options
Diffstat (limited to 'sim/ucsim/s51.src/test/monitor.c')
| -rw-r--r-- | sim/ucsim/s51.src/test/monitor.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/sim/ucsim/s51.src/test/monitor.c b/sim/ucsim/s51.src/test/monitor.c new file mode 100644 index 0000000..319d5a2 --- /dev/null +++ b/sim/ucsim/s51.src/test/monitor.c @@ -0,0 +1,65 @@ +#include <string.h> +#include "hw.h" + +#include "serial.h" +#include "print.h" + +__xdata char *simif; + +int cnt; + +void process(char *cmd) +{ + if (strstr(cmd, "test") == cmd) + { + cnt++; + print_c('_');print(cmd);print_c('_'); + print_f("This is a test %d\n", cnt); + } + else if (strstr(cmd, "dump") == cmd) + { + int i; + print_c('_');print(cmd);print_c('_'); + for (i= 0; i<100; i++) + { + print_cx(i); + print(" "); + } + print("\n----\n"); + } + else + { + print("Unknown command: \"");print(cmd);print("\"\n"); + } +} + +__xdata char cmd[40]; +char ptr; + +void main(void) +{ + simif= (__xdata char *)0xffff; + serial_init(9600); + cmd[ptr=0]= 0; + print("Hello World!\n"); + P1= 0; + while (1) + { + if (serial_received()) + { + char c= serial_receive(); + if ((c == '\n') || + (c == '\r')) + { + process(cmd); + cmd[ptr=0]= 0; + } + else if (ptr < 39) + { + cmd[ptr++]= c; + cmd[ptr]= 0; + print("cmd=");print(cmd);print_c('\n'); + } + } + } +} |
