summaryrefslogtreecommitdiff
path: root/sim/ucsim/s51.src/test/monitor.c
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
committerXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
commit268a53de823a6750d6256ee1fb1e7707b4b45740 (patch)
tree42c1799a9a82b2f7d9790ee9fe181d72a7274751 /sim/ucsim/s51.src/test/monitor.c
downloadsdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'sim/ucsim/s51.src/test/monitor.c')
-rw-r--r--sim/ucsim/s51.src/test/monitor.c65
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');
+ }
+ }
+ }
+}