X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=jars.git;a=blobdiff_plain;f=mars.scm;fp=mars.scm;h=23a0337df4e4d75e88aa49eda6df3a6f9c2f7980;hp=40e4ca19a762ea3b3f79f36aadd54986c8016cad;hb=6fa8a83fb4cf917fabe4c2bb930b8b092c9c7519;hpb=28a3308e193e60e376fe9f171513ef541bb08385 diff --git a/mars.scm b/mars.scm index 40e4ca1..23a0337 100644 --- 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))))) @@ -177,7 +178,12 @@ (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 ;;