summaryrefslogtreecommitdiff
path: root/sim/ucsim/s51.src/test/monitor.c
blob: 319d5a2968b375cfaa9f08cb7a4ac884339835a2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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');
	    }
	}
    }
}