anchor.diff:  (defvar size-loc (gl:get-uniform-location prog "size"))
   (defvar color-loc (gl:get-uniform-location prog "color"))
   (defvar cam-loc (gl:get-uniform-location prog "cam"))
  +(defvar cam-size-loc (gl:get-uniform-location prog "cam_size"))
   (defvar iteration 0)
   (defun mouse-callback (void (win-ptr (ptr void)) (button i32) (action i32) (mods i32))
     (write-line "mouse callback!"))
   (defvar player-pos (vec 0 0))
  +(defvar new-pos (vec 0 0))
   (defvar cam-pos (vec 0 0))
   (defvar cam-size (vec 10 10))
   
   (defun key-callback (void (win-ptr (ptr void)) (key i32)(scancode i32) (action i32) (mods i32))
     (let ((k64 (cast key i64)))
  -    (when (eq k64 glfw:key-up)
  -      (incr (member player-pos y) 0.1))
  -    (when (eq k64 glfw:key-down)
  -      (incr (member player-pos y) -0.1))
  -    (when (eq k64 glfw:key-left)
  -      (incr (member player-pos x) -0.1))
  -    (when (eq k64 glfw:key-right)
  -      (incr (member player-pos x) 0.1))
  -    (when (eq k64 glfw:key-space)
  -      (setf cam-pos player-pos))
  +    (when (eq action 1)
  +      (setf new-pos player-pos)
  +      (when (eq k64 glfw:key-up)
  +	(incr (member new-pos y) 1))
  +      (when (eq k64 glfw:key-down)
  +	(incr (member new-pos y) -1))
  +      (when (eq k64 glfw:key-left)
  +	(incr (member new-pos x) -1))
  +      (when (eq k64 glfw:key-right)
  +	(incr (member new-pos x) 1))
  +      (when (eq k64 glfw:key-space)
  +	(setf cam-pos new-pos)))
       (print "Key: ")
       (print key)
  +    (print " ")
  +    (print action)
       (print "\n")
       ))
   
  
positive.code: uniform vec2 offset;
  uniform vec2 size;
  uniform vec2 cam;
  void main(){
    gl_Position = vec4(vertex_position * size + offset - cam,0.0,1.0);
  }
  ")
  (defvar frag-src-len (cast (strlen frag-src) u32))
  
negative.code: 	(cam-right (cast (+ (member cam-pos x) (member cam-size x)) i64))
  	(cam-top (cast (member cam-pos y) i64))
  	(cam-bottom (cast (+ (member cam-pos y) (member cam-size y)) i64)))
      (gl:uniform size-loc 1.0 1.0)
      (gl:uniform color-loc 1 1 1 1)
      (for row (max 0 cam-top) (< row (min cam-bottom tiles-height)) (i64+ row 1)
  	 (for col (max 0 cam-left) (< col (min cam-right tiles-width)) (i64+ col 1)
  	      (let ((fx (cast row f32))
  		    (fy (cast col f32)))
  		(let ((tile (deref (get-tile col row))))
  		  (unless (eq 0 tile)
  		    (gl:uniform color-loc 1 0 0 1)
  