mescc.scm: print two strings.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 14 Aug 2016 07:06:09 +0000 (09:06 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 14 Aug 2016 07:06:09 +0000 (09:06 +0200)
main.c
mescc.scm

diff --git a/main.c b/main.c
index 417964a221d9efc331f644a363c71b814a1e4814..efe5fc08110f4b4f26458d02720be368245dccd4 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1,5 +1,6 @@
 int main ()
 {
-  puts ("Hello, [messi] world!");
+  puts ("Hi Mes!\n");
+  puts ("Hello, world!\n");
   return 1;
 }
index bed39304745bd5dac20ca037aa602004e2ecce1d..4b8c6c4154d89b49fe021a4026d47cc7b94f2638 100644 (file)
--- a/mescc.scm
+++ b/mescc.scm
            (string->list (cadr (caddr o))))
       '()))
 
-(define (statement->text o)
+(define (statement->text data o)
   (cond
    ((and (pair? o) (eq? (car o) 'call))
-    (let ((string (cadr (caddr o))))
-      (list (lambda (data) (i386:puts data (string-length string))))))
+    (let ((string (cadr (caddr o)))
+          (offset (length data)))
+      (list (lambda (data) (i386:puts (+ data offset) (string-length string))))))
    ((and (pair? o) (eq? (car o) 'return))
     (list (lambda (data) (i386:exit (cadr o)))))
    (else '())))
           (display statement (current-error-port))
           (newline (current-error-port))
           (loop (cdr statements)
-                (append text (statement->text statement))
+                (append text (statement->text data statement))
                 (append data (statement->data statement)))))))