anchor.diff:      \ Completed homes
       5 0 do
           done i + c@ if
  -            homes i + c@ 40 63 sprite
  +            i homes 40 63 sprite
           then
       loop
   
  
positive.code:     endcase
  ;
  
  \ 
  \ static void squarewave(uint16_t freq, byte amp)
  \ {
  \   GD.wr(REG_VOL_SOUND, amp);
  \   GD.wr16(REG_SOUND, (freq << 8) | 0x01);
  \   GD.wr(REG_PLAY, 1);
  \ }
  \ 
  \ static void sound()
  \ {
  \   byte note;
  \ 
  \   if (dying) { 
  \     note = 84 - (dying / 2);
  \     squarewave(note, 100);
  \   } else if (leaping) {
  \     if (leaping & 1)
  \       note = 60 + leaping;
  \     else
  \       note = 72 + leaping;
  \     squarewave(note, 100);
  \   } else {
  \     squarewave(0, 0);  // silence
  \   }
  \ }
  \ 
  \ static void rotate_around(int x, int y, int a)
  \ {
  \     GD.cmd_loadidentity();
  \     GD.cmd_translate(F16(x),F16(y));
  \     GD.cmd_rotate(a);
  \     GD.cmd_translate(F16(-x),F16(-y));
  \     GD.cmd_setmatrix();
  \ }
  
  : F16
      16 lshift
  ;
  
  : rotate_around ( x y a -- )
      >r
      swap F16 swap F16
      GD.cmd_loadidentity
      2dup GD.cmd_translate
  
negative.code:     2186 GD.c -66032 GD.c 30844839 GD.c 70571 GD.c -1348 GD.c -909177 GD.c
  
      game_setup
      begin
          gameloop
      again
  