6703 - new types: code-point and grapheme
Both have the same size: 4 bytes. So far I've just renamed print-byte to print-grapheme, but it still behaves the same. I'm going to support printing code-points next, but grapheme 'clusters' spanning multiple code-points won't be supported for some time.
This commit is contained in:
parent
1b79f705b9
commit
0452b05f5a
|
@ -131,7 +131,8 @@ $print-string-to-real-screen:end:
|
|||
5d/pop-to-ebp
|
||||
c3/return
|
||||
|
||||
print-byte-to-real-screen: # c: byte
|
||||
# currently only supports ascii
|
||||
print-grapheme-to-real-screen: # c: grapheme
|
||||
# . prologue
|
||||
55/push-ebp
|
||||
89/<- %ebp 4/r32/esp
|
||||
|
@ -142,7 +143,7 @@ print-byte-to-real-screen: # c: byte
|
|||
68/push 4/imm32/size
|
||||
89/<- %ecx 4/r32/esp
|
||||
(write 2 %ecx)
|
||||
$print-byte-to-real-screen:end:
|
||||
$print-grapheme-to-real-screen:end:
|
||||
# . reclaim locals
|
||||
81 0/subop/add %esp 8/imm32
|
||||
# . restore registers
|
||||
|
|
2
400.mu
2
400.mu
|
@ -142,7 +142,7 @@ sig real-screen-size -> nrows/eax: int, ncols/ecx: int
|
|||
sig clear-real-screen
|
||||
sig move-cursor-on-real-screen row: int, column: int
|
||||
sig print-string-to-real-screen s: (addr array byte)
|
||||
sig print-byte-to-real-screen c: byte
|
||||
sig print-grapheme-to-real-screen c: grapheme
|
||||
sig print-int32-hex-to-real-screen n: int
|
||||
sig reset-formatting-on-real-screen
|
||||
sig start-color-on-real-screen fg: int, bg: int
|
||||
|
|
11
404screen.mu
11
404screen.mu
|
@ -82,6 +82,7 @@ $clear-screen:body: {
|
|||
{
|
||||
break-if-=
|
||||
# fake screen
|
||||
var space/edi: grapheme <- copy 0x20
|
||||
move-cursor screen, 1, 1
|
||||
var screen-addr/esi: (addr screen) <- copy screen
|
||||
var i/eax: int <- copy 1
|
||||
|
@ -94,7 +95,7 @@ $clear-screen:body: {
|
|||
{
|
||||
compare j, *ncols
|
||||
break-if->
|
||||
print-byte screen, 0x20 # space
|
||||
print-grapheme screen, space
|
||||
j <- increment
|
||||
loop
|
||||
}
|
||||
|
@ -136,13 +137,13 @@ $print-string:body: {
|
|||
}
|
||||
}
|
||||
|
||||
fn print-byte screen: (addr screen), c: byte {
|
||||
$print-byte:body: {
|
||||
fn print-grapheme screen: (addr screen), c: grapheme {
|
||||
$print-grapheme:body: {
|
||||
compare screen, 0
|
||||
{
|
||||
break-if-!=
|
||||
print-byte-to-real-screen c
|
||||
break $print-byte:body
|
||||
print-grapheme-to-real-screen c
|
||||
break $print-grapheme:body
|
||||
}
|
||||
{
|
||||
break-if-=
|
||||
|
|
|
@ -96,7 +96,8 @@ $line-loop: {
|
|||
update-attributes c, r
|
||||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
}
|
||||
|
@ -176,6 +177,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -412,8 +412,10 @@ Type-id: # (stream (addr array byte))
|
|||
# some SubX types deliberately left undefined in Mu; they can only be operated on using SubX primitives
|
||||
"stream"/imm32 # 11
|
||||
"slice"/imm32 # 12
|
||||
"code-point"/imm32 # 13; smallest scannable unit from a text stream
|
||||
"grapheme"/imm32 # 14; smallest printable unit; will eventually be composed of multiple code-points, but currently corresponds 1:1
|
||||
# Keep Primitive-type-ids in sync if you add types here.
|
||||
0/imm32 0/imm32 0/imm32
|
||||
0/imm32
|
||||
0/imm32 0/imm32 0/imm32 0/imm32 0/imm32 0/imm32 0/imm32 0/imm32
|
||||
0/imm32 0/imm32 0/imm32 0/imm32 0/imm32 0/imm32 0/imm32 0/imm32
|
||||
0/imm32 0/imm32 0/imm32 0/imm32 0/imm32 0/imm32 0/imm32 0/imm32
|
||||
|
|
|
@ -31,7 +31,7 @@ $main-body: {
|
|||
var c/eax: byte <- read-byte-buffered in-addr
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
print-grapheme 0, c
|
||||
loop
|
||||
}
|
||||
}
|
||||
|
|
BIN
apps/random
BIN
apps/random
Binary file not shown.
|
@ -26,7 +26,8 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,7 +75,8 @@ $line-loop: {
|
|||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -171,6 +172,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -119,7 +119,8 @@ $update-attributes:check-state: {
|
|||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -167,6 +168,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -98,7 +98,8 @@ $update-attributes:check-state: {
|
|||
{
|
||||
break-if-!=
|
||||
# r->current-state == 1 && c == '*' => print c, then normal text
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
reset-formatting 0
|
||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||
|
@ -109,7 +110,8 @@ $update-attributes:check-state: {
|
|||
{
|
||||
break-if-!=
|
||||
# r->current-state == 1 && c == '_' => print c, then normal text
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
reset-formatting 0
|
||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||
|
@ -122,7 +124,8 @@ $update-attributes:check-state: {
|
|||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -170,6 +173,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -99,7 +99,8 @@ $update-attributes:check-state: {
|
|||
{
|
||||
break-if-!=
|
||||
# r->current-state == 1 && c == '*' => print c, then normal text
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
reset-formatting 0
|
||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||
|
@ -110,7 +111,8 @@ $update-attributes:check-state: {
|
|||
{
|
||||
break-if-!=
|
||||
# r->current-state == 1 && c == '_' => print c, then normal text
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
reset-formatting 0
|
||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||
|
@ -123,7 +125,8 @@ $update-attributes:check-state: {
|
|||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -171,6 +174,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -97,7 +97,8 @@ $change-state: {
|
|||
{
|
||||
break-if-!=
|
||||
# r->current-state == 1 && c == '*' => print c, then normal text
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
reset-formatting 0
|
||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||
|
@ -108,7 +109,8 @@ $change-state: {
|
|||
{
|
||||
break-if-!=
|
||||
# r->current-state == 1 && c == '_' => print c, then normal text
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
reset-formatting 0
|
||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||
|
@ -121,7 +123,8 @@ $change-state: {
|
|||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -169,6 +172,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -121,7 +121,8 @@ $change-state: {
|
|||
{
|
||||
break-if-!=
|
||||
# r->current-state == 1 && c == '*' => print c, then normal text
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
reset-formatting 0
|
||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||
|
@ -132,7 +133,8 @@ $change-state: {
|
|||
{
|
||||
break-if-!=
|
||||
# r->current-state == 1 && c == '_' => print c, then normal text
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
reset-formatting 0
|
||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||
|
@ -163,7 +165,8 @@ $change-state: {
|
|||
copy-to *s, 0 # false
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
}
|
||||
|
@ -211,6 +214,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -183,6 +183,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -19,7 +19,8 @@ fn render-normal fs: (addr file-state) {
|
|||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
#
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
#
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -63,7 +63,8 @@ fn start-drawing _self: (addr screen-position-state) {
|
|||
fn add-char _self: (addr screen-position-state), c: byte {
|
||||
var self/esi: (addr screen-position-state) <- copy _self
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -25,7 +25,8 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -71,7 +71,8 @@ $add-char:body: {
|
|||
break $add-char:body
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -70,7 +70,8 @@ $add-char:body: {
|
|||
break $add-char:body
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -70,7 +70,8 @@ $add-char:body: {
|
|||
break $add-char:body
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -71,7 +71,8 @@ $add-char:body: {
|
|||
break $add-char:body
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -71,7 +71,8 @@ $add-char:body: {
|
|||
break $add-char:body
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -72,7 +72,8 @@ $add-char:body: {
|
|||
break $add-char:body
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -72,7 +72,8 @@ $add-char:body: {
|
|||
break $add-char:body
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -72,7 +72,8 @@ $add-char:body: {
|
|||
break $add-char:body
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -72,7 +72,8 @@ $add-char:body: {
|
|||
break $add-char:body
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -72,7 +72,8 @@ $add-char:body: {
|
|||
break $add-char:body
|
||||
}
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
# self->col++
|
||||
var tmp/eax: (addr int) <- get self, col
|
||||
increment *tmp
|
||||
|
|
|
@ -24,6 +24,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -29,7 +29,8 @@ $line-loop: {
|
|||
compare c, 0xffffffff # EOF marker
|
||||
break-if-= $line-loop
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -76,6 +77,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -31,7 +31,8 @@ $line-loop: {
|
|||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -78,6 +79,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -42,7 +42,8 @@ $line-loop: {
|
|||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -89,6 +90,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -46,7 +46,8 @@ $line-loop: {
|
|||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -94,6 +95,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -62,7 +62,8 @@ $line-loop: {
|
|||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -110,6 +111,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -70,7 +70,8 @@ $line-loop: {
|
|||
compare c, 0xa # newline
|
||||
break-if-= # no need to print newlines
|
||||
# print c
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
} # $char-loop
|
||||
|
@ -147,6 +148,7 @@ fn dump in: (addr buffered-file) {
|
|||
var c/eax: byte <- read-byte-buffered in
|
||||
compare c, 0xffffffff # EOF marker
|
||||
break-if-=
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -76,7 +76,8 @@ $render:render-loop: {
|
|||
move-cursor 0, row, col
|
||||
loop $render:render-loop
|
||||
}
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -68,7 +68,8 @@ $render:render-loop: {
|
|||
move-cursor 0, row, col
|
||||
loop $render:render-loop
|
||||
}
|
||||
print-byte 0, c
|
||||
var g/eax: grapheme <- copy c
|
||||
print-grapheme 0, g
|
||||
col <- increment
|
||||
loop
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue