program zast;
type	xpar	=	array [1..2] of integer;
const
	pi = 3.1415926;
var
	ff		: text;
	c,cc,ccc	: char;
	i,color 	: integer;
	x1,y1,
	x2,y2		: integer;
	t		: real;
	par		: xpar;
procedure wait(i:integer);
var	j : integer;
begin
	for j:=1 to i do;
end;

procedure press;
procedure upout; external;
begin
	upout;
	write('   Press any key           ',chr(7));
(*$C
	bis	#^O10100,@#^O44
	mov	#^O30000,r1
a:	emt	^O340
	bcc	b
	sob	r1,a
b:	emt	^O340
	bcc	.-2	
	bic	#^O10100,@#^O44
				*)
	upout;
	write('                  ',chr(7));
end;

procedure init;						external;
procedure finit;					external;
procedure offset(x,y:integer);				external;
procedure circle(x,y,r:integer);			external;
procedure dbline(x,y,xx,yy:integer);			external;
procedure box(x,y,xx,yy:integer);			external;
procedure znewpic(color1,color2:integer);		external;
procedure clearwin(color:integer);			external;
procedure viewport(x,y,xx,yy:integer);			external;
procedure line(x,y,xx,yy:integer);			external;
procedure dot(x,y:integer);				external;
procedure setcolor(color:integer);			external;
procedure arc(x0,y0,xst,yst,xend,yend:integer);		external;
procedure fill(x,y:integer);				external;
procedure inverse;					external;
procedure drawmode(mode:integer);			external;
procedure rulon(typ:integer);				external;

procedure spr1move(n,xst,ysx,dx,dy,wait,nc:integer);	external;
procedure spr2move(n,xst,yst,xend,yend,wait:integer);	external;
procedure sprout(n,x,y:integer);			external;
procedure spr1go(n:integer);				external;
procedure spr2go(n:integer);				external;

procedure muzic;					external;
procedure upout;					external;
procedure downout;					external;

procedure setwind(xst,yst,nstr,ncol:integer);		external;
procedure rolstr(nstr:integer);				external;
procedure rorstr(nstr:integer);				external;
procedure rolwind;					external;
procedure rorwind;					external;
procedure upcol(col:integer);				external;
procedure downcol(col:integer);				external;
procedure upwind;					external;
procedure downwind;					external;

procedure savstat(nbyt:integer);			external;
procedure oncashe;					external;
procedure offcashe;					external;
procedure recashe;					external;
function retstat:integer;				external;
function autoreq:integer;				external;
procedure s1; external;
procedure s2; external;
procedure s3; external;
procedure s4; external;
procedure s5; external;
procedure s6; external;
procedure s7; external;
procedure loader(procedure s; var par:xpar; flag:integer); external;
begin
	readln;
	init;
	loader(s1,PAR,0);
	loader(s2,PAR,0);
	loader(s3,PAR,0);
	loader(s4,PAR,0);
	loader(s5,PAR,0);
	loader(s6,PAR,0);
	loader(s7,PAR,0);
	upout;
	write('                              ',chr(7));
	downout;
	write('                              ',chr(7));
	offcashe;
	downout;
	write('         Zelenograd 1990',chr(7));
	for i:=0 to 10 do box(10+10*i,2+10*i,629-10*i,239-10*i); 
	viewport(11,3,628,238);
	spr2move(1,190,1,190,139,0);
	spr2go(1);
	sprout(1,190,139);
	spr2move(1,190,139,190,107,20);
	spr2go(1);
	spr2move(2,302,1,302,139,0);
	spr2go(2);
	sprout(2,302,139);
	spr2move(2,302,139,302,107,20);
	spr2go(2);
	spr2move(3,414,1,414,139,0);
	spr2go(3);
	sprout(3,414,139);
	spr2move(3,414,139,414,107,0);
	spr2go(3);
(*	fill(100,100);		*)
	press;	
	inverse;
	inverse;
	inverse;
	press;
	clearwin(1);
	for i:=0 to 9 do circle(300,120,100-10*i);
	offset(300,120);
	x1:=trunc(50*sqrt(2));
	y1:=x1;
	arc(2*x1,0,x1,-y1,x1,y1);
	arc(0,2*y1,x1,y1,-x1,y1);
	arc(-2*x1,0,-x1,y1,-x1,-y1);
	arc(0,-2*y1,-x1,-y1,x1,-y1);
	press;
	circle(2*x1,0,100);
	circle(0,2*y1,100);
	circle(-2*x1,0,100);
	circle(0,-2*y1,100);
	circle(0,0,100);
	press;
	offset(0,0);
	for i:=7 downto 2 do clearwin(i);
	color:=1;
	for i:=0 to 500 do
	  begin
		x1:=i;
		y1:=120;
		y2:=trunc(120-100*sin(i/80));
		if (x1 mod 10)=0 then 
		begin
			line(x1,y1,x1,y2);
			color:=(color mod 6) + 1;
			setcolor(color);
		end;
	  end;
	press;
	znewpic(7,3);
	znewpic(6,4);
	znewpic(5,0);
	setcolor(7);
	for i:=0 to 500 do
	  begin
		x1:=i;
		y1:=trunc(60-50*sin(i/80));
		y2:=120+y1;
		dot(x1,y1);
		dot(x1,y2);
	  end;
	for i:=1 to 500 do
	 begin
		x1:=i;
		y1:=trunc(60-50*sin(i/80));
		y2:=120+y1;
		if (x1 mod 10)=0 then box(x1,y1,x1+10,y2);
	 end;
	press;
	clearwin(1); 
	FOR I:=1 TO 65535 DO I:=I;
	write(chr(27),'Y',chr(32+3),chr(32+4),'****************************');
	for i:=0 to 16 do
	     write(chr(27),'Y',chr(32+4+i),chr(32+4),'*');
	setwind(5,5,15,50);
	write(chr(27),'Y',chr(32+12),chr(32+10));
	write('dEMONSTRACIQ RABOTY ');
	write(chr(27),'Y',chr(32+13),chr(32+10));
	write('S OGRANI^ENNOJ ZONOJ RULONA');
	for i:=1 to 3 do
	 begin
		rolstr(7);
		rorstr(8);
	 end;
	for i:=1 to 3 do
	 begin
		upcol(5);
		downcol(15);
	 end;
	press;
	for i:=1 to 3 do
	 begin
		upcol(15);
		downcol(5);
	 end;
	for i:=1 to 3 do
	 begin
		rolstr(8);
		rorstr(7);
	 end;
	press;
	upwind;
	rolwind;
	downwind;
	rorwind;
	upwind;
	rolwind;
	press;

	WRITELN(CHR(33B),'H',CHR(33B),'J');
	upout;
	write('   A I D S  T E S T    ',chr(7));
	muzic;
	write('E 1G 1F 1E 1H 1D 1C 1A 1',CHR(7));
	for i:=1 to 10000 do
	   for x1:=1 to 15 do;
	upout;
	write('   S   O   R   R   Y  !',chr(7));
	muzic;
	write('E 1G 1F 1E 1H 1D 1C 1A 1',CHR(7));
	upout;
	write('   S P E E D  T E S T  ',chr(7));
	t:=time;
	for x1:=0 to 99 do
	 for y1:=0 to 99 do dot(100+x1,100+y1);
	t:=(time-t)*3600;
	FOR I:=1 TO 300 DO;
	writeln(chr(27),'H  10000  TO^EK BYLO WYWEDENO ZA ',t:6:4,' SEK.');
	t:=t/10000;
	writeln('  sREDNQQ SKOROSTX WYWODA 1-J TO^KI ',t:6:4,' SEK.');
	press;
	WRITELN(CHR(33B),'H',CHR(33B),'J');
	t:=time;
	for y1:=0 to 9 do
	 for x1:=0 to 19 do sprout(4,1+27*x1,50+17*y1);
	t:=(time-t)*3600;
	FOR I:=1 TO 300 DO;
	writeln(chr(27),'H200 SPRAJTOW RAZMEROM 27H17 TO^EK WYWEDENO ZA ',t:6:4,' SEK.');
	t:=t/200;
	writeln('  sREDNQQ SKOROSTX WYWODA ODNOGO SPRAJTA ',t:6:4,' SEK.');
  	press;
	WRITELN(CHR(33B),'H',CHR(33B),'J');
	t:=time;
	for y1:=0 to 9 do
	 for x1:=0 to 19 do sprout(5,1+31*x1,50+15*y1);
	t:=(time-t)*3600;
	FOR I:=1 TO 300 DO;
	writeln(chr(27),'H200 SPRAJTOW RAZMEROM 31H15 TO^EK WYWEDENO ZA ',t:6:4,' SEK.');
	t:=t/200;
	writeln('  sREDNQQ SKOROSTX WYWODA ODNOGO SPRAJTA ',t:6:4,' SEK.');
  	press;
	WRITELN(CHR(33B),'H',CHR(33B),'J');
	t:=time;
	for y1:=0 to 9 do
	 for x1:=0 to 8 do sprout(6,1+65*x1,50+21*y1);
	t:=(time-t)*3600;
	FOR I:=1 TO 300 DO;
	writeln(chr(27),'H90 SPRAJTOW RAZMEROM 65H21 TO^EK WYWEDENO ZA ',t,' SEK.');
	t:=t/90;
	writeln('  sREDNQQ SKOROSTX WYWODA ODNOGO SPRAJTA ',t:6:4,' SEK.');
	press;
	finit;
	sprout(7,240,80);
	reset(ff,'DK:LOM   ','MUZ',i);
	if i>0 then
	begin
	 muzic;
	 while not eof(ff) do
	  begin
		read(ff,c,cc,ccc);
		readln(ff);
		write(c,cc,ccc);
	  end;
	 write(chr(7));
	end;
	close(ff);
	upout;
	write('       Good  bye !',chr(7));
	write(chr(27),'H a NA PRO]ANXE - DEMONSTRACIQ E]E ODNOJ WOZMOVNOSTI !!!');
	savstat(14);
	write('init/noq sy:',chr(15B),chr(12B));
	y1:=retstat;
	oncashe;
end.
