Files
kolibrios/programs/develop/libraries/libunicode/examples/console.asm
Swarnadeep Paul 6de88d5fd0
Some checks are pending
Build system / Check kernel codestyle (pull_request) Blocked by required conditions
Build system / Build (pull_request) Blocked by required conditions
Add initial libunicode for UTF-8 parsing and example
- Added libunicode.asm to parse UTF-8 strings.
- Implemented count_utf8_codepoints to skip continuation bytes.
- Implemented count_utf8_graphemes to handle ZWJ (E2 80 8D) and combining marks (CC/CD).
- Added console.asm to the examples folder to test and print the results.
- Submitted for GSoC qualification task.
2026-03-09 13:08:25 +05:30

71 lines
1.5 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
format binary as ""
use32
org 0x0
db 'MENUET01'
dd 0x01, START, I_END
dd 0x100000 ; 1MB Memory
dd 0x100000 ; Stack pointer
dd 0x0
dd 0x0
include '../../../../proc32.inc'
include '../../../../macros.inc'
include '../../../../dll.inc'
include '../libunicode.asm'
START:
stdcall dll.Load, import_table
test eax, eax
jnz EXIT ; If 0, jump to exit
push window_title
push -1
push -1
push -1
push -1
call [con_init]
push my_text
call [con_write_asciiz]
mov eax, test_combo
call count_utf8_codepoints
push eax
push fmt_codepoints
call [con_printf]
add esp, 8
mov eax, test_combo
call count_utf8_gramphene
push eax
push fmt_graphemes
call [con_printf]
add esp, 8
push 0
call [con_exit]
EXIT:
mcall -1 ; Exit cleanly
; DATA SECTION
window_title db 'Debug Console', 0
my_text db 'Console loaded successfully!', 10, 0
fmt_codepoints db "Total Codepoints: %d", 10, 0
fmt_graphemes db "Total Graphemes: %d", 10, 0
unitxt db 'AП👨👩👦qwerty', 0
test_tech db 'c', 'a', 'f', 'e', 0xCC, 0x81, 0
test_combo db 'A', 0xD0, 0x9F, 0xF0, 0x9F, 0x91, 0xA9, 0xE2, 0x80, 0x8D, 0xF0, 0x9F, 0x92, 0xBB, 'e', 0xCC, 0x81, 0
align 4
import_table:
library console, '/sys/lib/console.obj'
import console, con_init, 'con_init', con_write_asciiz, 'con_write_asciiz', con_exit, 'con_exit', \
con_printf, 'con_printf'
I_END: