;; ------------------------------------------------------------------ ;; The CPU (define run (lambda () (begin (execute (decode (get-mem (get&inc-pc)))) (run)))) (define step (lambda () (local ((define num (get-mem (get&inc-pc)))) (begin (printf "~n~s~n" (disassemble num)) (execute (decode num)) (print-regs))))) (define decode (lambda (num) (cons (sign num) (cons (build-vector DIGITS (lambda (i) (extract num i 1))) null)))) (define execute (lambda (sign&digits) (local ((define sign (car sign&digits)) (define digits (cadr sign&digits))) ((vector-ref ImmediateInstructions (vector-ref digits 0)) sign digits)))) (define dispatch-to (lambda (InstructionTable index) (lambda (sign digits) ((vector-ref InstructionTable (vector-ref digits index)) sign digits))))