anchor.diff:  
   ;;;; Globals
   
  -(defparameter vblank-flag (zp #xFF))
  +
   
   (defparameter *sprite-x* (zp #xF0))
   (defparameter *sprite-y* (zp #xF1))
  -(defparameter *oamidx* (zp #xFF))
  +(defparameter *shadow-cr1* (zp #xF2))
  +(defparameter *shadow-cr2* (zp #xF3))
  +(defparameter *shadow-scroll-x* (zp #xF4))
  +(defparameter *shadow-scroll-y* (zp #xF5))
  +
  +(defparameter *oamidx* (zp #xFE))
  +(defparameter vblank-flag (zp #xFF))
   
   (defparameter *oam-shadow* #x0200)
   
  
positive.code:     (dex)))
  
  (procedure wait-for-vblank
    (lda (imm 0))
    (sta vblank-flag)
    (as/until :not-zero (lda vblank-flag))
    (lda (imm 0))
    (sta vblank-flag)
    (rts))
  
  (procedure brk-handler (rti))
  
negative.code: 
    ;; Main loop - wait for vblank, reset PPU registers, do sprite DMA.
    (with-label :loop
      (poke #b10001000 *shadow-cr1*)
      (poke #b00010100 *shadow-cr2*)
      (poke 0 *shadow-scroll-x*)
      (poke 0 *shadow-scroll-y*)
  
      (jsr 'reset-sprites)
      (poke 40 *sprite-x*)
  