UNIT MAIN;
{
  programmed by Kristian Peters
  (c) Copyright 1995-2004 Korseby

  released under the terms of GPL

  contact: kristian.peters@korseby.net
  web: http://www.korseby.net
}

INTERFACE
  USES
    CRT,DOS,GRAPH;

  PROCEDURE DELAY(s:word);
  PROCEDURE INITGR;
  PROCEDURE SETPAL(c:byte;r,g,b:shortint);

IMPLEMENTATION

{²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²}
PROCEDURE DELAY(s:word);
var ms:word;
BEGIN
  ASM
    mov       ax,1000
    mul       s
    mov       cx,dx
    mov       dx,ax
    mov       ah,$86
    int       $15
  END
END;

{²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²}
PROCEDURE INITGR;
VAR GRD,GRM,EC:INTEGER;
BEGIN
  GRD:=installuserdriver('VGAVESA',nil);
  GRM:=2;
  initgraph(GRD,GRM,'');
  EC:=graphresult;
  if EC<>grok then
  begin
    writeln;
    textcolor(10);
    writeln('Procedure INITGR Fehlermeldung: '+^G);
    writeln('Der Grafikmodus konnte nicht eingeschaltet werden. Beende..');
    textcolor(7);
    delay(1000);
    writeln;
    halt(0);
  end;
END;

{²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²}
PROCEDURE SETPAL(c:byte;r,g,b:shortint);
BEGIN
  port[$3C8]:=c;

  if (r<0) then r:=0; if (r>63) then r:=63;
  if (g<0) then g:=0; if (g>63) then g:=63;
  if (b<0) then b:=0; if (b>63) then b:=63;

  port[$3C9]:=r;
  port[$3C9]:=g;
  port[$3C9]:=b;
END;

END.
