This is too adictive.
[jars.git] / mars.scm
index 40e4ca1..23a0337 100644 (file)
--- a/mars.scm
+++ b/mars.scm
@@ -8,6 +8,7 @@
      prog-name
      prog-instrs
      prog-offset
+     prog->string
      install-progs
      make-queue
      queue-owner
@@ -55,7 +56,7 @@
          (conc opcode
                "." modifier
                " " (mode->string A-mode) A-num
-               " " (mode->string B-mode) B-num))
+               ", " (mode->string B-mode) B-num))
         (else
          (error "Invalid instr arguments" args)))))
 
   (define (queue-set-ptrs! queue ptrs)
     (set-cdr! queue ptrs))
 
-
+  (define (prog->string prog)
+    (conc ";redcode\n\n"
+          ";name " (prog-name prog) "\n\n"
+          "ORG\t" (prog-offset prog) "\t; Execution offset\n\n"
+          (apply conc (map (lambda (instr) (conc (instr '->string) "\n")) (prog-instrs prog)))))
+    
   ;;; Executive function
   ;;