about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--103screen.subx25
-rwxr-xr-xapps/mubin256151 -> 256204 bytes
-rw-r--r--apps/print-file.mu16
3 files changed, 35 insertions, 6 deletions
diff --git a/103screen.subx b/103screen.subx
index 75753a1d..944fd4aa 100644
--- a/103screen.subx
+++ b/103screen.subx
@@ -134,6 +134,31 @@ $print-string:end:
     5d/pop-to-ebp
     c3/return
 
+print-byte:  # c: byte
+    # . prologue
+    55/push-ebp
+    89/<- %ebp 4/r32/esp
+    #
+    (write-byte-buffered Stdout *(ebp+8))
+$print-byte:end:
+    # . epilogue
+    89/<- %esp 5/r32/ebp
+    5d/pop-to-ebp
+    c3/return
+
+# just because Mu has no support for global variables yet
+flush-stdout:
+    # . prologue
+    55/push-ebp
+    89/<- %ebp 4/r32/esp
+    #
+    (flush Stdout)
+$flush-stdout:end:
+    # . epilogue
+    89/<- %esp 5/r32/ebp
+    5d/pop-to-ebp
+    c3/return
+
 print-int32-to-screen:  # n: int
     # . prologue
     55/push-ebp
diff --git a/apps/mu b/apps/mu
index 1f77f3b4..06f3a21b 100755
--- a/apps/mu
+++ b/apps/mu
Binary files differdiff --git a/apps/print-file.mu b/apps/print-file.mu
index b5b5601b..8bec0105 100644
--- a/apps/print-file.mu
+++ b/apps/print-file.mu
@@ -19,13 +19,17 @@ $main-body: {
         var addr-in/eax: (addr handle buffered-file) <- address in
         open *filename, 0, addr-in
       }
-      var in-addr/eax: (addr buffered-file) <- lookup in
-      print-string "filename: "
-      print-string *filename
-      print-string ": "
-      print-int32-to-screen in-addr
-      print-string "\n"
+      var _in-addr/eax: (addr buffered-file) <- lookup in
+      var in-addr/ecx: (addr buffered-file) <- copy _in-addr
+      {
+        var c/eax: byte <- read-byte-buffered in-addr
+        compare c, 0xffffffff
+        break-if-=
+        print-byte c
+        loop
+      }
     }
   }
+  flush-stdout
   exit-status <- copy 0
 }