about summary refs log tree commit diff stats
path: root/304screen.subx
diff options
context:
space:
mode:
Diffstat (limited to '304screen.subx')
-rw-r--r--304screen.subx19
1 files changed, 19 insertions, 0 deletions
diff --git a/304screen.subx b/304screen.subx
index 1537a9b1..8ec33fd5 100644
--- a/304screen.subx
+++ b/304screen.subx
@@ -131,6 +131,19 @@ $print-string-to-real-screen:end:
     5d/pop-to-ebp
     c3/return
 
+print-slice-to-real-screen:  # s: (addr slice)
+    # . prologue
+    55/push-ebp
+    89/<- %ebp 4/r32/esp
+    #
+    (write-slice-buffered Stdout *(ebp+8))
+    (flush Stdout)
+$print-slice-to-real-screen:end:
+    # . epilogue
+    89/<- %esp 5/r32/ebp
+    5d/pop-to-ebp
+    c3/return
+
 print-stream-to-real-screen:  # s: (addr stream byte)
     # . prologue
     55/push-ebp
@@ -240,6 +253,8 @@ write-int32-decimal-buffered:  # f: (addr buffered-file), n: int
     # . prologue
     55/push-ebp
     89/<- %ebp 4/r32/esp
+    # . save registers
+    51/push-ecx
     # var ecx: (stream byte 16)
     81 5/subop/subtract %esp 0x10/imm32
     68/push 0x10/imm32/size
@@ -249,6 +264,10 @@ write-int32-decimal-buffered:  # f: (addr buffered-file), n: int
     (write-int32-decimal %ecx *(ebp+0xc))
     (write-stream-data *(ebp+8) %ecx)
 $write-int32-decimal-buffered:end:
+    # . reclaim locals
+    81 0/subop/add %esp 0x1c/imm32
+    # . restore registers
+    59/pop-to-ecx
     # . epilogue
     89/<- %esp 5/r32/ebp
     5d/pop-to-ebp