#include <vectrex.h>
static inline void set_scale(unsigned int scale) { /*VIA_t1_cnt_lo*/ *(volatile unsigned char *)0xD004 = scale; }
// this is quite a "C" optimized version of print_sync
// (-O3 and -fomit-frame-pointer)

#define ZERO_DELAY 5
void draw_maze(
	const signed char *u,
	unsigned int scaleMove,
	unsigned int scaleDraw
	) {
  int c, dy, dx;
  // first instruction is always a Reset0Ref
  Intensity_7F();
  set_scale(scaleDraw);
  for (;;) {
    c = u[0]; dy = u[1]; dx = u[2];
    if (c < 0) {                          // draw
      Draw_Line_d(dy, dx);
    } else if (c == 0) {                  // move
      set_scale(scaleMove);
      Moveto_d(dy,dx);
      set_scale(scaleDraw);
    } else if (c == 1) {                  // Reset0Ref and move
      Reset0Ref();
      set_scale(scaleMove);
      Moveto_d(dy,dx);
      set_scale(scaleDraw);
    } else if (c == 2) {
      return;    // end
    } else {
      for (;;) ;
    }
    u = u+3;
  }
}
