#define MAX_SPEED 180
dclrscr blue;
dsetwidth 2
dsetsize 20
timer 50
Main();
dexit;
float SpeedToAngle(float speed)
{
float pi;
fpi pi;
mov ecx, speed;
div ecx, 180;
mul ecx, pi;
return ecx;
}
void DrawKM()
{
float pos[2];
float m, k, i, count;
count = 0;
for(m = count = 0; m <= 180 ; m += (MAX_SPEED / 18))
{
float j = SpeedToAngle(m);
mov ecx, j
fcos eax, ecx;
fsin edx, ecx;
k = eax;
i = edx;
k *= 220;
i *= 220;
pos[0] = 250 - k;
pos[1] = 300 - i;
dcolor black
dline center, pos
dcolor red
dwritei pos, m
count += 10;
}
}
float GetVelocity()
{
float vel;
mov eax, port1
div eax, 6.2
mov vel, eax
return vel
}
void DrawArrow(float speed)
{
if(speed > MAX_SPEED)
speed = MAX_SPEED;
if(speed < 0)
speed = 0;
float k, i;
float pos[2];
float j = SpeedToAngle(speed);
mov ecx, j
fcos eax, ecx
fsin edx, ecx
k = eax
i = edx
k *= 220
i *= 220
pos[0] = 250 - k;
pos[1] = 300 - i;
dcolor green
dline center, pos
}
void Main()
{
DrawKM();
DrawArrow(GetVelocity());
}
color black, 0, 0, 0
color red, 255, 0, 0
color blue, 0, 0,255
color green, 0, 255, 0
vec2f size, 256, 256
vec2f center, 256, 300
Comments