program loopply;

{$L ppoly_s}
uses crt;

const
        DEFTEMP = 1024;
	FILENAMEEXT = '.ply';

var
	tempval, badchar : integer;
	infile : file;

procedure poly(s,o:word); external;

procedure looppoly(filename:string; defaulttempo:word);
var
	tune : pointer;
	fsize : longint;
	p : ^word;
	infilename : string;
begin
	infilename := filename;
	if pos('.', filename) = 0 then
		infilename := infilename+FILENAMEEXT;
	assign(infile, infilename);
	reset(infile,1);
	fsize := filesize(infile);
	getmem( p, word(fsize)+1 );
	p^ := defaulttempo;
	tune := p;
	p := ptr(seg(p^),ofs(p^)+2);
	blockread(infile,p^,word(fsize));
	close(infile);
		  while not (keypressed) do
        	poly(seg(tune^),ofs(tune^));
	freemem(tune,word(fsize));
end;

procedure message;
begin
	writeln('Usage: LoopPoly <plyfile> [tval]');
	writeln;
	writeln('where:');
	writeln('   <plyfile> = the name of the file to play.');
	writeln('   [tval]    = [optional] starting tempo value, 1 (fast) - 65535 (slow)');
	writeln;
	writeln('LoopPoly.EXE and its original source code is Copyright (c) 1989 - ');
	writeln('GrigaSoft Productions. PlayPoly may not be included in any commercial');
	writeln('software package without explicit written permission from the author.');
	writeln('This package is an unregistered evaluation copy for demo use only.');
	writeln('Register your copy today!');
end;

begin
	if paramcount > 0 then begin
		if paramcount > 1 then begin
			val(paramstr(2),tempval,badchar);
			if badchar = 0 then
				looppoly( paramstr(1), tempval )
			else begin
				message;
				halt(2);
			end;
		end else
			looppoly(paramstr(1),DEFTEMP);
	end else begin
		message;
		halt(1);
	end;
end.


