// kernel for the bad dos. char get_char(); void print_char(char c); void print(const char* str) { while (*str) { __asm__ __volatile__( "mov ah, 0x0E" "mov al, %[char];" "int 0x10;" : : [char] "r" (*str) ); } } void kernel_main() { print("Welcome to BadDOS!\r\n"); print("type something or die:\r\n"); while (1) { print("/dev/flp/> "); char c = get_char(); print_char(c); if (c == '\r') print("\r\n"); } } char get_char() { char c; __asm__ __volatile__( "mov ah, 0x00;" "int 0x16;" "mov %[char], al;" : [char] "=r" (c) ); return c; } void print_char(char c) { __asm__ __volatile__( "mov ah, 0x0E;" "mov al, %[char];" "int 0x10;" : : [char] "r" (c) ); }