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