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
|
5d/pop-to-ebp
|
||||||
c3/return
|
c3/return
|
||||||
|
|
||||||
print-byte-to-real-screen: # c: byte
|
# currently only supports ascii
|
||||||
|
print-grapheme-to-real-screen: # c: grapheme
|
||||||
# . prologue
|
# . prologue
|
||||||
55/push-ebp
|
55/push-ebp
|
||||||
89/<- %ebp 4/r32/esp
|
89/<- %ebp 4/r32/esp
|
||||||
|
@ -142,7 +143,7 @@ print-byte-to-real-screen: # c: byte
|
||||||
68/push 4/imm32/size
|
68/push 4/imm32/size
|
||||||
89/<- %ecx 4/r32/esp
|
89/<- %ecx 4/r32/esp
|
||||||
(write 2 %ecx)
|
(write 2 %ecx)
|
||||||
$print-byte-to-real-screen:end:
|
$print-grapheme-to-real-screen:end:
|
||||||
# . reclaim locals
|
# . reclaim locals
|
||||||
81 0/subop/add %esp 8/imm32
|
81 0/subop/add %esp 8/imm32
|
||||||
# . restore registers
|
# . 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 clear-real-screen
|
||||||
sig move-cursor-on-real-screen row: int, column: int
|
sig move-cursor-on-real-screen row: int, column: int
|
||||||
sig print-string-to-real-screen s: (addr array byte)
|
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 print-int32-hex-to-real-screen n: int
|
||||||
sig reset-formatting-on-real-screen
|
sig reset-formatting-on-real-screen
|
||||||
sig start-color-on-real-screen fg: int, bg: int
|
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-=
|
break-if-=
|
||||||
# fake screen
|
# fake screen
|
||||||
|
var space/edi: grapheme <- copy 0x20
|
||||||
move-cursor screen, 1, 1
|
move-cursor screen, 1, 1
|
||||||
var screen-addr/esi: (addr screen) <- copy screen
|
var screen-addr/esi: (addr screen) <- copy screen
|
||||||
var i/eax: int <- copy 1
|
var i/eax: int <- copy 1
|
||||||
|
@ -94,7 +95,7 @@ $clear-screen:body: {
|
||||||
{
|
{
|
||||||
compare j, *ncols
|
compare j, *ncols
|
||||||
break-if->
|
break-if->
|
||||||
print-byte screen, 0x20 # space
|
print-grapheme screen, space
|
||||||
j <- increment
|
j <- increment
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
@ -136,13 +137,13 @@ $print-string:body: {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print-byte screen: (addr screen), c: byte {
|
fn print-grapheme screen: (addr screen), c: grapheme {
|
||||||
$print-byte:body: {
|
$print-grapheme:body: {
|
||||||
compare screen, 0
|
compare screen, 0
|
||||||
{
|
{
|
||||||
break-if-!=
|
break-if-!=
|
||||||
print-byte-to-real-screen c
|
print-grapheme-to-real-screen c
|
||||||
break $print-byte:body
|
break $print-grapheme:body
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
break-if-=
|
break-if-=
|
||||||
|
|
|
@ -96,7 +96,8 @@ $line-loop: {
|
||||||
update-attributes c, r
|
update-attributes c, r
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
@ -176,6 +177,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
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
|
# some SubX types deliberately left undefined in Mu; they can only be operated on using SubX primitives
|
||||||
"stream"/imm32 # 11
|
"stream"/imm32 # 11
|
||||||
"slice"/imm32 # 12
|
"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.
|
# 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
|
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
|
var c/eax: byte <- read-byte-buffered in-addr
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
print-grapheme 0, c
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
BIN
apps/random
BIN
apps/random
Binary file not shown.
3
prototypes/browse/1-print-file.mu
generated
3
prototypes/browse/1-print-file.mu
generated
|
@ -26,7 +26,8 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
6
prototypes/browse/10.mu
generated
6
prototypes/browse/10.mu
generated
|
@ -75,7 +75,8 @@ $line-loop: {
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -171,6 +172,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
6
prototypes/browse/11.mu
generated
6
prototypes/browse/11.mu
generated
|
@ -119,7 +119,8 @@ $update-attributes:check-state: {
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -167,6 +168,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
12
prototypes/browse/12.mu
generated
12
prototypes/browse/12.mu
generated
|
@ -98,7 +98,8 @@ $update-attributes:check-state: {
|
||||||
{
|
{
|
||||||
break-if-!=
|
break-if-!=
|
||||||
# r->current-state == 1 && c == '*' => print c, then normal text
|
# 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
|
col <- increment
|
||||||
reset-formatting 0
|
reset-formatting 0
|
||||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||||
|
@ -109,7 +110,8 @@ $update-attributes:check-state: {
|
||||||
{
|
{
|
||||||
break-if-!=
|
break-if-!=
|
||||||
# r->current-state == 1 && c == '_' => print c, then normal text
|
# 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
|
col <- increment
|
||||||
reset-formatting 0
|
reset-formatting 0
|
||||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||||
|
@ -122,7 +124,8 @@ $update-attributes:check-state: {
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -170,6 +173,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
12
prototypes/browse/13.mu
generated
12
prototypes/browse/13.mu
generated
|
@ -99,7 +99,8 @@ $update-attributes:check-state: {
|
||||||
{
|
{
|
||||||
break-if-!=
|
break-if-!=
|
||||||
# r->current-state == 1 && c == '*' => print c, then normal text
|
# 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
|
col <- increment
|
||||||
reset-formatting 0
|
reset-formatting 0
|
||||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||||
|
@ -110,7 +111,8 @@ $update-attributes:check-state: {
|
||||||
{
|
{
|
||||||
break-if-!=
|
break-if-!=
|
||||||
# r->current-state == 1 && c == '_' => print c, then normal text
|
# 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
|
col <- increment
|
||||||
reset-formatting 0
|
reset-formatting 0
|
||||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||||
|
@ -123,7 +125,8 @@ $update-attributes:check-state: {
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -171,6 +174,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
12
prototypes/browse/14.mu
generated
12
prototypes/browse/14.mu
generated
|
@ -97,7 +97,8 @@ $change-state: {
|
||||||
{
|
{
|
||||||
break-if-!=
|
break-if-!=
|
||||||
# r->current-state == 1 && c == '*' => print c, then normal text
|
# 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
|
col <- increment
|
||||||
reset-formatting 0
|
reset-formatting 0
|
||||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||||
|
@ -108,7 +109,8 @@ $change-state: {
|
||||||
{
|
{
|
||||||
break-if-!=
|
break-if-!=
|
||||||
# r->current-state == 1 && c == '_' => print c, then normal text
|
# 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
|
col <- increment
|
||||||
reset-formatting 0
|
reset-formatting 0
|
||||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||||
|
@ -121,7 +123,8 @@ $change-state: {
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -169,6 +172,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
12
prototypes/browse/15-headers-broken.mu
generated
12
prototypes/browse/15-headers-broken.mu
generated
|
@ -121,7 +121,8 @@ $change-state: {
|
||||||
{
|
{
|
||||||
break-if-!=
|
break-if-!=
|
||||||
# r->current-state == 1 && c == '*' => print c, then normal text
|
# 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
|
col <- increment
|
||||||
reset-formatting 0
|
reset-formatting 0
|
||||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||||
|
@ -132,7 +133,8 @@ $change-state: {
|
||||||
{
|
{
|
||||||
break-if-!=
|
break-if-!=
|
||||||
# r->current-state == 1 && c == '_' => print c, then normal text
|
# 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
|
col <- increment
|
||||||
reset-formatting 0
|
reset-formatting 0
|
||||||
start-color 0, 0xec, 7 # 236 = darkish gray
|
start-color 0, 0xec, 7 # 236 = darkish gray
|
||||||
|
@ -163,7 +165,8 @@ $change-state: {
|
||||||
copy-to *s, 0 # false
|
copy-to *s, 0 # false
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
@ -211,6 +214,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/16-screen-state-broken.mu
generated
3
prototypes/browse/16-screen-state-broken.mu
generated
|
@ -183,6 +183,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/18/file-state.mu
generated
3
prototypes/browse/18/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/18/main.mu
generated
3
prototypes/browse/18/main.mu
generated
|
@ -19,7 +19,8 @@ fn render-normal fs: (addr file-state) {
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
#
|
#
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
#
|
#
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/19/file-state.mu
generated
3
prototypes/browse/19/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/19/screen-position-state.mu
generated
3
prototypes/browse/19/screen-position-state.mu
generated
|
@ -63,7 +63,8 @@ fn start-drawing _self: (addr screen-position-state) {
|
||||||
fn add-char _self: (addr screen-position-state), c: byte {
|
fn add-char _self: (addr screen-position-state), c: byte {
|
||||||
var self/esi: (addr screen-position-state) <- copy _self
|
var self/esi: (addr screen-position-state) <- copy _self
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
3
prototypes/browse/2.mu
generated
3
prototypes/browse/2.mu
generated
|
@ -25,7 +25,8 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/20/file-state.mu
generated
3
prototypes/browse/20/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/20/screen-position-state.mu
generated
3
prototypes/browse/20/screen-position-state.mu
generated
|
@ -71,7 +71,8 @@ $add-char:body: {
|
||||||
break $add-char:body
|
break $add-char:body
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
3
prototypes/browse/21/file-state.mu
generated
3
prototypes/browse/21/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/21/screen-position-state.mu
generated
3
prototypes/browse/21/screen-position-state.mu
generated
|
@ -70,7 +70,8 @@ $add-char:body: {
|
||||||
break $add-char:body
|
break $add-char:body
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
3
prototypes/browse/22/file-state.mu
generated
3
prototypes/browse/22/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/22/screen-position-state.mu
generated
3
prototypes/browse/22/screen-position-state.mu
generated
|
@ -70,7 +70,8 @@ $add-char:body: {
|
||||||
break $add-char:body
|
break $add-char:body
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,8 @@ $add-char:body: {
|
||||||
break $add-char:body
|
break $add-char:body
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
3
prototypes/browse/24-bold/file-state.mu
generated
3
prototypes/browse/24-bold/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,8 @@ $add-char:body: {
|
||||||
break $add-char:body
|
break $add-char:body
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
3
prototypes/browse/25-soft-newlines/file-state.mu
generated
3
prototypes/browse/25-soft-newlines/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,8 @@ $add-char:body: {
|
||||||
break $add-char:body
|
break $add-char:body
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
3
prototypes/browse/26-headers/file-state.mu
generated
3
prototypes/browse/26-headers/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,8 @@ $add-char:body: {
|
||||||
break $add-char:body
|
break $add-char:body
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
3
prototypes/browse/27/file-state.mu
generated
3
prototypes/browse/27/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/27/screen-position-state.mu
generated
3
prototypes/browse/27/screen-position-state.mu
generated
|
@ -72,7 +72,8 @@ $add-char:body: {
|
||||||
break $add-char:body
|
break $add-char:body
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
3
prototypes/browse/28/file-state.mu
generated
3
prototypes/browse/28/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/28/screen-position-state.mu
generated
3
prototypes/browse/28/screen-position-state.mu
generated
|
@ -72,7 +72,8 @@ $add-char:body: {
|
||||||
break $add-char:body
|
break $add-char:body
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
3
prototypes/browse/29/file-state.mu
generated
3
prototypes/browse/29/file-state.mu
generated
|
@ -39,6 +39,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/browse/29/screen-position-state.mu
generated
3
prototypes/browse/29/screen-position-state.mu
generated
|
@ -72,7 +72,8 @@ $add-char:body: {
|
||||||
break $add-char:body
|
break $add-char:body
|
||||||
}
|
}
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
# self->col++
|
# self->col++
|
||||||
var tmp/eax: (addr int) <- get self, col
|
var tmp/eax: (addr int) <- get self, col
|
||||||
increment *tmp
|
increment *tmp
|
||||||
|
|
3
prototypes/browse/3.mu
generated
3
prototypes/browse/3.mu
generated
|
@ -24,6 +24,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
6
prototypes/browse/4-render-page.mu
generated
6
prototypes/browse/4-render-page.mu
generated
|
@ -29,7 +29,8 @@ $line-loop: {
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-= $line-loop
|
break-if-= $line-loop
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -76,6 +77,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
6
prototypes/browse/5.mu
generated
6
prototypes/browse/5.mu
generated
|
@ -31,7 +31,8 @@ $line-loop: {
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -78,6 +79,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
6
prototypes/browse/6.mu
generated
6
prototypes/browse/6.mu
generated
|
@ -42,7 +42,8 @@ $line-loop: {
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -89,6 +90,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
6
prototypes/browse/7.mu
generated
6
prototypes/browse/7.mu
generated
|
@ -46,7 +46,8 @@ $line-loop: {
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -94,6 +95,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
6
prototypes/browse/8-multiple-pages.mu
generated
6
prototypes/browse/8-multiple-pages.mu
generated
|
@ -62,7 +62,8 @@ $line-loop: {
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -110,6 +111,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
6
prototypes/browse/9-bold.mu
generated
6
prototypes/browse/9-bold.mu
generated
|
@ -70,7 +70,8 @@ $line-loop: {
|
||||||
compare c, 0xa # newline
|
compare c, 0xa # newline
|
||||||
break-if-= # no need to print newlines
|
break-if-= # no need to print newlines
|
||||||
# print c
|
# print c
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
} # $char-loop
|
} # $char-loop
|
||||||
|
@ -147,6 +148,7 @@ fn dump in: (addr buffered-file) {
|
||||||
var c/eax: byte <- read-byte-buffered in
|
var c/eax: byte <- read-byte-buffered in
|
||||||
compare c, 0xffffffff # EOF marker
|
compare c, 0xffffffff # EOF marker
|
||||||
break-if-=
|
break-if-=
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/tile/2.mu
generated
3
prototypes/tile/2.mu
generated
|
@ -76,7 +76,8 @@ $render:render-loop: {
|
||||||
move-cursor 0, row, col
|
move-cursor 0, row, col
|
||||||
loop $render:render-loop
|
loop $render:render-loop
|
||||||
}
|
}
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
3
prototypes/tile/3.mu
generated
3
prototypes/tile/3.mu
generated
|
@ -68,7 +68,8 @@ $render:render-loop: {
|
||||||
move-cursor 0, row, col
|
move-cursor 0, row, col
|
||||||
loop $render:render-loop
|
loop $render:render-loop
|
||||||
}
|
}
|
||||||
print-byte 0, c
|
var g/eax: grapheme <- copy c
|
||||||
|
print-grapheme 0, g
|
||||||
col <- increment
|
col <- increment
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user