From 498ed6ae5033539669be69bdd43f1ce177f97e0d Mon Sep 17 00:00:00 2001 From: Aleksey Mandrykin Date: Sat, 10 Feb 2024 07:56:50 +0300 Subject: [PATCH] prepare to BIOS --- demo.asm | 21 ++++++++++++++++----- demos/visual.asm | 27 ++++++++++++++++++++------- lib/asm/vga/clear_screen.asm | 8 +++++--- lib/asm/vga/menu.asm | 4 ++-- 4 files changed, 43 insertions(+), 17 deletions(-) diff --git a/demo.asm b/demo.asm index 10caf7c..c557534 100644 --- a/demo.asm +++ b/demo.asm @@ -1,9 +1,20 @@ function init_vga load r14, 0x8000 ; set stack -;debug +debug + call _vertical_scroll_demo + + lea r7, $dosfont2x + call _select_font + + lea r0, $menu ; R0 - текст меню + load r1, 0x80004000 ; R1 - адрес видеопамяти + load r2, 0x00000000 ; R2 - цвет текста + load r3, 0xffffffff ; R3 - цыет фона + + call _menu + call _test_vga send -entry: end function _test_vga @@ -16,8 +27,6 @@ enter: unlock ; Выбор шрифта по умолчанию - lea r7, $dosfont1 - call _select_font help: lea r1, $line1 ; Адрес строки приветсвия в R1 @@ -217,12 +226,14 @@ include lib/asm/vga/draw_string.asm include lib/asm/vga/get_event.asm include lib/asm/vga/scroll.asm include lib/asm/vga/sprite.asm +include lib/asm/vga/menu.asm include lib/asm/tty/tty.asm include lib/asm/emulate/div.asm +include demos/visual.asm $dosfont1 import lib/asm/vga/fonts/CYRTHIN-Nesterenko-8x16.utf8.fnt -$dosfont2 import lib/asm/vga/fonts/DK-Feoktistov-8x16.utf8.fnt +;$dosfont2 import lib/asm/vga/fonts/DK-Feoktistov-8x16.utf8.fnt $dosfont3 import lib/asm/vga/fonts/beta-Chi-Sovt-8x16.utf8.fnt $dosfont4 import lib/asm/vga/fonts/EDFN-Anry-VGA3-8x16.utf8.FNT ;$dosfont5 import lib/asm/vga/fonts/MYFONT-8x16.utf8.FNT diff --git a/demos/visual.asm b/demos/visual.asm index 3034038..cce3281 100644 --- a/demos/visual.asm +++ b/demos/visual.asm @@ -1,3 +1,9 @@ +function visual_test + load r14, 0x8000 ; установка вершины стека + call _vertical_scroll_demo + send +end + assign r11 dot_step assign r12 text_ptr assign r10 buffer_ptr @@ -6,12 +12,11 @@ assign r10 buffer_ptr ;$buffer_ptr equ 0 $text_ptr equ 1 -function visual_test - load r14, 0x8000 ; установка вершины стека - - load r0, 32 +function _vertical_scroll_demo + push r15 + load r13, 32 clc - subc r14, r0 + subc r14, r13 ; mov this, r14 load r0, 320 ; Размер буфкера с индексами символов @@ -78,7 +83,15 @@ inside: load dot_step, 4 jmp loop exit: - send +;debug + load r13, 32 + clc + addc r14, r13 + load r13, 320 ; Размер буфкера с индексами символов + clc + addc r14, r13 + pop r15 + return end @@ -87,7 +100,7 @@ $hello db 'Slagheap SoC emulator Demo', 0 $message db ' \n' db 'Здравствуй, дорогой друг!\n \n' db 'Я - демонстрационная программа для системы на кристалле "Террикон".\n' - db 'Я представляю собой виртуальный 32-х битный компьютер с 32 килобайтами\n' + db 'Я представляю собой виртуальный 32-х битный компьютер с 48 килобайтами\n' db 'оперативной памяти, которая разделяется между программами, данными' db ' и стеком.\n \n' db 'На борту у меня так же присутствует алфавитно-цифровой терминал. Доступ\n' diff --git a/lib/asm/vga/clear_screen.asm b/lib/asm/vga/clear_screen.asm index e564855..076c2cf 100644 --- a/lib/asm/vga/clear_screen.asm +++ b/lib/asm/vga/clear_screen.asm @@ -8,11 +8,11 @@ function lib_entry_test entry: end -assign R3 video_ptr -assign R4 counter -assign R8 eax function _clear_vga_screen + assign R3 video_ptr + assign R4 counter + assign R8 eax load video_ptr, 0x80000000 load counter, 307200 ; 640x480 load eax, 0x555a555a @@ -28,6 +28,8 @@ end function _refresh_screen + assign R3 video_ptr + assign R8 eax load video_ptr, 0xfffeffe0 ; Порт обновления экрана mov (video_ptr), eax end \ No newline at end of file diff --git a/lib/asm/vga/menu.asm b/lib/asm/vga/menu.asm index da1bde6..1754322 100644 --- a/lib/asm/vga/menu.asm +++ b/lib/asm/vga/menu.asm @@ -2,7 +2,7 @@ function menu_test load r14, 0x8000 ; установка вершины стека ; Выбор шрифта по умолчанию - lea r7, $dosfont2 + lea r7, $dosfont2x call _select_font lea r0, $menu ; R0 - текст меню @@ -28,7 +28,7 @@ $menu db 'Test\r\nAgain\r\nThird test\nABC\n' ;$menu db 'Ёлки\r\nWhat?\r\nЧто стряслось'0 done -$dosfont2 import fonts/DK-Feoktistov-8x16.utf8.fnt +$dosfont2x import fonts/DK-Feoktistov-8x16.utf8.fnt include draw_char.asm include get_event.asm