prog-name
prog-instrs
prog-offset
+ prog->string
install-progs
make-queue
queue-owner
(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
;;