``````{
This one more fire code from ME... Check this out and comment me... I'd
like to get comments for this (and I might be able to help someone, if
he/she can't get fire code done correctly)...

}
const wavespd = 6;

var ftable : array [1..30,1..60] of byte;
ycal : array [1..60] of real;
x,y,i,j : word;

begin
asm mov ax,013h; int 010h; end;
for i:=1 to 15 do
begin
port[\$3c8]:=i;
port[\$3c9]:=i*4;
port[\$3c9]:=i*4;
port[\$3c9]:=0;
end;
for i:=1 to 31 do
begin
port[\$3c8]:=15+i;
port[\$3c9]:=63;
port[\$3c9]:=63-i*2;
port[\$3c9]:=0;
end;
for i:=1 to 63 do
begin
port[\$3c9]:=63;
port[\$3c9]:=0;
port[\$3c9]:=0;
end;
for i:=1 to 30 do
for j:=1 to 60 do
ftable[i,j]:=0;
for i:=1 to 60 do
ycal[i]:=sin(i*pi/30);
j:=1;
repeat
asm mov dx,03dah; @v1: in al,dx; test al,8; je @v1; @v2: in al,dx; test al,8;
jne @v2; end;
for x:=10 to 20 do
if random(100)<50 then ftable[x,60]:=200 else ftable[x,60]:=0;
for y:=1 to 58 do
for x:=2 to 28 do
begin
ftable[x,y]:=(ftable[x-1,y]+ftable[x,y]+ftable[x+1,y]+ftable[x-1,y+1]
+ftable[x+1,y+1]+ftable[x-1,y+2]+ftable[x,y+2]+ftable[x+1,y+2]) shr 3;
end;
inc(j); if j>59 then j:=j-59;
for y:=1 to 59 do
for x:=1 to 30 do
begin
mem[\$a000:100+x+y*320]:=ftable[x,y];
i:=y+j;
if i>59 then i:=i-59;
mem[\$a000:(100+x+round(ycal[i]*((60-y) div wavespd)))+
(117-(y*1 div 3)-(40))*320]:=ftable[x,y];
end;
until port[\$60]=1;
asm mov ax,03h; int 010h; end;
end.

``````