- /* restore the old interrupt signal handler */
- if (signal(SIGINT, osig) == SIG_ERR) {
- fprintf(stderr, "%s():%s\n", "sigaction", strerror(errno));
- return -1;
+ printf("interrupted...\n");
+
+ return 0;
+}
+COMMAND_HELP(run) {
+ fprintf(f, "\trun\n");
+ if (summary) return;
+
+ fprintf(f, "Begins executing continuously.\n"
+ "May be interrupted with SIGINT.\n");
+}
+
+COMMAND_IMPL(display) {
+ (void)arg_count, (void)arg_vector;
+
+ static DPIX *pixbuf = NULL;
+
+ if (pixbuf) {
+ printf("display already enabled..\n");
+ return 0;
+ }
+
+ pixbuf = display_init_pixbuf();
+ if (pixbuf == NULL) {
+ fprintf(stderr, "failed to initialize display buffer\n");
+ return 0;
+ }
+
+ if (dcpu16_acct_add(vm, DCPU16_ACCT_EV_WRITE, display_fn, pixbuf)) {
+ fprintf(stderr, "failed to register display update callback\n");
+ return 0;
+ }
+
+ if (dcpu16_acct_add(vm, DCPU16_ACCT_EV_RESET, display_reset_fn, pixbuf)) {
+ fprintf(stderr, "failed to register display reset callback\n");
+ return 0;