+int led(int argc, char ** argsv) {
+
+
+ if (argsv[1] != NULL) {
+ if (strcmp(argsv[1], "on")) {
+ cputs("LED ON\n");
+ led_on();
+ }
+ else if (strcmp(argsv[1], "off")) {
+ cputs("LED OFF\n");
+ led_off();
+ }
+ }
+ return 0;
+}
+
+int show(int argc, char ** argsv) {
+
+ if ((argsv[1] != NULL) && (strlen(argsv[1]) == 8)) {
+
+ uint32_t * check = (uint32_t *) hextoreg(argsv[1]);
+ cputs("REGISTER 0x");
+ cputs(argsv[1]);
+ cputs(" VALUE: ");
+ cputs(regtohex(*check));
+ cputchar('\n');
+ return 1;
+
+ }
+
+ return 0;
+}
+
+int exec_cmd(char * buf) {
+
+ int argc;
+ char *argv[MAXARGS];
+ int i;
+
+ // Parse the command buffer into whitespace-separated arguments
+ argc = 0;
+ argv[argc] = 0;
+ while (1) {
+ // gobble whitespace
+ while (*buf && strchr(WHITESPACE, *buf))
+ *buf++ = 0;
+ if (*buf == 0)
+ break;
+
+ // save and scan past next arg
+ if (argc == MAXARGS-1) {
+ cputs("Too many arguments");
+ return 0;
+ }
+ argv[argc++] = buf;
+ while (*buf && !strchr(WHITESPACE, *buf))
+ buf++;
+ }
+ argv[argc] = 0;
+
+ // Lookup and invoke the command
+ if (argc == 0)
+ return 0;
+ for (i = 0; i < BUILTINCMDS; i++) {
+ if (strcmp(argv[0], builtincmds[i].name))
+ return builtincmds[i].function(argc, argv);
+ }
+ cputs("Unknown command");
+ return 0;
+
+}
+