#include "..\kernel\angles.h"
#include <stdbran.h>
#include "printf.c"
/*#include "..\lcd\lcd.h"*/
#include <solver.h>
#include <nav.h>
int abs(int a)
{
return (a>0?a:-a);
}
int Debug;
extern char LCD_Buffers[10][16];
extern const char DIRNAME[4];
Print(Path *P) {
int i;
printf("Path ",0);
if (P) {
if (P->MoveList) {
for(i=0;i<P->MoveCount;i++) {
printf("%c%d ",DIRNAME[P->MoveList[i] >> 6],P->MoveList[i]&MOVE_LENMASK);
}
} else
printf("<empty>",0);
printf("\n",0);
} else
printf("<NULL>\n",0);
}
DumpMaze(Maze *M) {
Node *N;
Node *N1;
printf("Maze %x Free memory=%x\n",(int)M,FreeMemory());
N=M->FirstNode;
while (N) {
int i;
printf(" Node %x (%d,%d)->\n",(int)N,N->XPos,N->YPos);
i=-1;
while (++i<N->LinkCount) {
N1=N->LinkList[i];
if (N1)
printf(" Node %x (%d,%d) via ",(int)N1,N1->XPos,N1->YPos);
else
printf(" Node <NULL> via ",0);
Print(N->PathList[i]);
}
N=N->Next;
}
}
int main() {
int i;
for (i=0;i<20000;i++); /* delay loop to ensure keypad has been read */
Debug=(keypad()==4);
if (Debug) {
LCD_Print(1,"Debug ON: ",0);
LCD_BufferSwap(1);
while (keypad()==4);
}
LCD_Print(1,"Press F4 ",0);
LCD_BufferSwap(1);
while (keypad()!=4);
SetupSensors();
OPT_Reset();
if (!fork(500)) {
Solver_Go();
return 1;
}
if (!fork(400)) {
navmain();
return 1;
}
PM_SetTimeSlice(500); /* 1ms timeslice */
diagmain();
return 1;
}