mescc.scm: print two strings.
[mes.git] / mescc.scm
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)))))))