int main(void){ struct virtual_machine * vm; unsigned int output; unsigned char c; struct termios * original = terminal_setup(); vm = vm_create(data_start, data_end, data); while(!is_halted(vm)){ if(vm_getc(vm, &output)){ putchar((int)output); fflush(stdout); } if(read(STDIN_FILENO, &c, 1) > 0){ vm_putc(vm, c); } step(vm); } vm_destroy(vm); tcsetattr(STDOUT_FILENO,TCSANOW, original); tcsetattr(STDOUT_FILENO,TCSAFLUSH, original); free(original); return 0; }
int main(void){ struct virtual_machine * vm; unsigned int output; unsigned char c; struct termios * original = terminal_setup(); vm = vm_create(data_start, data_end, data); printf("Kernel image has been loaded. All input is now being handled by the emulator.\n"); printf("Press 'q' to quit.\n"); while(!is_halted(vm)){ if(vm_getc(vm, &output)){ putchar((int)output); fflush(stdout); } if(read(STDIN_FILENO, &c, 1) > 0){ vm_putc(vm, c); } step(vm); } vm_destroy(vm); tcsetattr(STDOUT_FILENO,TCSANOW, original); tcsetattr(STDOUT_FILENO,TCSAFLUSH, original); free(original); return 0; }