diff --git a/extra/dragon/disk1.dr b/extra/dragon/disk1.dr index e805635..a98f986 100644 Binary files a/extra/dragon/disk1.dr and b/extra/dragon/disk1.dr differ diff --git a/extra/dss/DragonOS/kernel0.dss b/extra/dss/DragonOS/kernel0.dss index f36c426..af92dc0 100644 --- a/extra/dss/DragonOS/kernel0.dss +++ b/extra/dss/DragonOS/kernel0.dss @@ -12,6 +12,7 @@ .data $textCell $test_str "Hello DragonOS! :)" + $cursor_x:1 ## ========================================================================================================================= @@ -28,6 +29,8 @@ _kernel0_main: push 1 call $_print_string + mov [$cursor_x], 0 + ## Init Keyboard driver push $_key_pressed ## KeyPressed handler address passed to the _init_keyboard subroutine push 1 @@ -47,16 +50,29 @@ _key_pressed: ## debug_break mov R1, [Keyboard_Registers.KEYCODE] + mov ACC, 13 ## Enter + jeq $_key_pressed_enter, R1 + mov ACC, ASCII.LOWERCASE_A jls $_key_pressed_end, R1 mov ACC, ASCII.LOWERCASE_Z jgr $_key_pressed_end, R1 push R1 - push 10 - push 10 + mov R2, [$cursor_x] + push R2 + push 1 push DefaultPalette.Red push 4 call $_print_char + inc R2 + mov [$cursor_x], R2 + jmp $_key_pressed_end + +_key_pressed_enter: + mov [$cursor_x], 0 + mov R10, 0x25 + int 0x30 + jmp $_key_pressed_end _key_pressed_end: ret diff --git a/extra/info/info b/extra/info/info index 8d475b8..7ceaf46 100644 --- a/extra/info/info +++ b/extra/info/info @@ -154,6 +154,7 @@ 0x22: Print String in Text16 Colors Mode (String address stored in R8, Cell address stored in R9) 0x23: Print Integer in Text16 Colors Mode (Integer stored in R8, Cell address stored in R9) 0x24: Clear Screen in Text16 Colors Mode (Cell address stored in R9) + 0x25: Scroll in Text16 Colors Mode 0xE0: Refresh Screen 0xE1: Clear Screen diff --git a/extra/scripts/build_dragonos b/extra/scripts/build_dragonos index 62114ac..12dad62 100644 --- a/extra/scripts/build_dragonos +++ b/extra/scripts/build_dragonos @@ -8,7 +8,7 @@ cd .. cp ../extra/dss/DragonOS/* ./dss/DragonOS/ printf "\n${green}1) kernel0.dss\n${clear}" -./dasm dss/DragonOS/kernel0.dss -o dragon/kernel0.bin -D +./dasm dss/DragonOS/kernel0.dss -o dragon/kernel0.bin -D --verbose ./dtools load-binary dragon/disk1.dr dragon/kernel0.bin 0x00018000 printf "\n"