(define ImmediateInstructions
  (local ((define jump
	    (lambda (sign digits)
	      (set-pc! (collapse MAX-DIGITS-INDEX 6 digits))))
	  (define conditional-jump
	    (lambda (cmp)
	      (lambda (sign digits)
		(when (cmp (get-reg (vector-ref digits 1)) 0)
		  (jump sign digits))))))
  (vector
   (dispatch-to RegisterInstructions 1)
   jump
   (lambda (sign digits)
     (begin
       (set-reg! (vector-ref digits 1) (get-pc))
       (jump sign digits)))
   (conditional-jump =) 
   (conditional-jump (lambda (x y) (not (= x y)))) 
   (conditional-jump <)
   (conditional-jump <=)
   (conditional-jump >)
   (conditional-jump >=)
   (lambda (sign digits)
     (set-reg! (vector-ref digits 1)
       (* sign (collapse MAX-DIGITS-INDEX 6 digits)))))))
