diff --git a/main.c b/main.c index 417964a2..efe5fc08 100644 --- 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; } diff --git a/mescc.scm b/mescc.scm index bed39304..4b8c6c41 100644 --- a/mescc.scm +++ b/mescc.scm @@ -472,11 +472,12 @@ (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 '()))) @@ -500,5 +501,5 @@ (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)))))))