-(import mars visualizer parser)
+(import (chicken io)
+ mars visualizer parser)
;; (define addressing-test
;; (make-prog 'at (list
;; (make-instr 'MOV 'I 'direct -2 'indirect-B -2)
;; (make-instr 'JMP 'I 'immediate -2 'immediate 0)) 1))
-(define imp (string->prog (with-input-from-file "imp.red" read-string)))
-(define dwarf (string->prog (with-input-from-file "dwarf.red" read-string)))
+(condition-case
+ (vis 'destroy)
+ ((exn) #f))
-(define palette '((Imp . "red")
- (Dwarf . "blue")))
+;; (define files '("dwarf.red"))
+(define files '("imp.red" "dwarf.red"))
-(define vis (make-vis 640 480 8000 palette))
+(define progs
+ (map
+ (lambda (fname)
+ (string->prog (with-input-from-file fname read-string)))
+ files))
+
+(define colors '("red" "blue" "green" "magenta" "cyan"))
+
+(define color-map
+ (let loop ((entries '())
+ (progs-left progs)
+ (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))))))
+
+(define vis (make-vis 640 480 8000 color-map))
(define core (make-core 8000 (make-instr 'DAT 'F 'immediate 0 'immediate 0)
(lambda (i n)
(vis 'update-owner i n))))
-(define queues (install-progs core (list dwarf imp)))
+(define queues (install-progs core progs))
+
+(for-each dump-prog progs)
+
+(set! queues (run-mars core queues 10000))
-(run-mars core queues 10000)
+(for-each (lambda (q)
+ (print "Queue for " (queue-owner q) ":")
+ (dump-queue q core)
+ (print))
+ queues)