7491 - baremetal: draw ASCII text to screen
This commit is contained in:
parent
7f8770ae08
commit
0518944e37
|
@ -0,0 +1,11 @@
|
|||
# TODO: bring this back
|
||||
|
||||
__check-mu-array-bounds: # index: int, elem-size: int, arr-size: int, function-name: (addr array byte), array-name: (addr array byte)
|
||||
# . prologue
|
||||
55/push-ebp
|
||||
89/<- %ebp 4/r32/esp
|
||||
$__check-mu-array-bounds:end:
|
||||
# . epilogue
|
||||
89/<- %esp 5/r32/ebp
|
||||
5d/pop-to-ebp
|
||||
c3/return
|
|
@ -0,0 +1,16 @@
|
|||
fn draw-text-rightward screen: (addr screen), _text: (addr array byte), x: int, y: int, color: int {
|
||||
var text/esi: (addr array byte) <- copy _text
|
||||
var len/ecx: int <- length text
|
||||
var i/edx: int <- copy 0
|
||||
{
|
||||
compare i, len
|
||||
break-if->=
|
||||
var g/eax: (addr byte) <- index text, i
|
||||
var g2/eax: byte <- copy-byte *g
|
||||
var g3/eax: grapheme <- copy g2
|
||||
draw-grapheme screen, g3, x, y, color
|
||||
add-to x, 8 # font-width
|
||||
i <- increment
|
||||
loop
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
# Draw an ASCII string using the built-in font (GNU unifont)
|
||||
#
|
||||
# To build a disk image:
|
||||
# ./translate_mu_baremetal baremetal/ex5.mu # emits disk.img
|
||||
# To run:
|
||||
# qemu-system-i386 disk.img
|
||||
# Or:
|
||||
# bochs -f baremetal/boot.bochsrc # boot.bochsrc loads disk.img
|
||||
#
|
||||
# Expected output: text in green near the top-left corner of screen
|
||||
|
||||
fn main {
|
||||
draw-text-rightward 0, "hello from baremetal Mu!", 0x10, 0x10, 0xa
|
||||
}
|
Loading…
Reference in New Issue