(colors-left colors))
(if (null? progs-left)
entries
- (let ((this-prog (car progs-left))
- (this-col (car colors-left)))
- (loop (cons (cons (prog-name this-prog) this-col) entries)
- (cdr progs-left)
- (cdr colors-left))))))
+ (if (null? colors-left)
+ (error "Not enough colours in colour map!")
+ (let ((this-prog (car progs-left))
+ (this-col (car colors-left)))
+ (loop (cons (cons (prog-name this-prog) this-col) entries)
+ (cdr progs-left)
+ (cdr colors-left)))))))
(define (mars-runner files iters core-size visualization)
(print "Iters: " iters ", core size: " core-size)
(lambda (fname)
(string->prog (with-input-from-file fname read-string)))
files))
- (empty-instr (make-instr 'DAT 'F 'immediate 0 'immediate 0))
(core (if visualization
(let* ((colors '("red" "blue" "green" "magenta" "cyan"))
(color-map (make-color-map progs colors))
(vis (make-vis 640 480 core-size color-map)))
- (make-core 8000 empty-instr (lambda (i n)
- (vis 'update-owner i n))))
- (make-core 8000 empty-instr)))
+ (make-core 8000 (lambda (i n)
+ (vis 'update-owner i n))))
+ (make-core 8000)))
(queues (run-mars core (install-progs core progs) iters)))
(for-each (lambda (q)
(print)
(loop rest iters core-size #f))
((files ...)
(mars-runner files iters core-size visualization)))))
+
(main)