program proba03;

(*
Atmega32 15 MHz-es kristállyal megy !!!


*)

{ Declarations section }

var LED_Pin : sbit at PORTA.B0;
var Video_imp1: sbit at PORTA.B7;   // Ezek adják a szinkron
var Video_imp2: sbit at PORTA.B6;   // és a videojeleket
var k: integer;

procedure blinking_led;
begin
  LED_pin:=1;
  delay_ms(100);
  LED_pin:=0;
  delay_ms(100);
end;

procedure fekete;     // 0,33V
begin
  Video_imp1:=1;
  Video_imp2:=0;
end;

procedure szurke;     // 0,67V
begin
  Video_imp1:=0;
  Video_imp2:=1;
end;

procedure feher;       // 1V
begin
  Video_imp1:=1;
  Video_imp2:=1;
end;

procedure csozar;     // 0V
begin
  Video_imp1:=0;
  Video_imp2:=0;
end;


begin
  { Main program }
  ddra:=0xff;   // kimenet
  porta:=0;
  
  blinking_led;
  
  while true do
    begin

      // képszinkron
      for k:=1 to 5 do
        begin
          fekete;
          delay_us(1);
          csozar;
          delay_us(26);
          fekete;
          delay_us(5);
        end;

      // utókiegyenlítő jelek
      for k:=1 to 5 do
        begin
          fekete;
          delay_us(1);
          csozar;
          delay_us(3);
          fekete;
          delay_us(28);
        end;
      
      // maradék kiegyenlítőjelek
      for k:=1 to 18 do
        begin
          fekete;
          delay_us(1);
          csozar;
          delay_us(5);
          fekete;
          delay_us(58);
        end;
      
      // 1. félkép
      for k:=1 to 286 do   // 24-310. lépés
        begin
          fekete;          // sorszinkron
          delay_us(1);
          csozar;
          delay_us(5);
          fekete;
          delay_us(6);
          fekete;          // képtartalom
          delay_us(23);
          feher;
          delay_us(6);
          fekete;
          delay_us(21);
          fekete;
          delay_us(2);
        end;
        
        // előkiegyenlítő jelek
        for k:=1 to 5 do
          begin
            fekete;
            delay_us(1);
            csozar;
            delay_us(3);
            fekete;
            delay_us(28);
          end;
      
        // képszinkron jelek
        for k:=1 to 5 do
          begin
            fekete;
            delay_us(1);
            csozar;
            delay_us(26);
            fekete;
            delay_us(5);
          end;
      
        // utószinkron jelek
        for k:=1 to 5 do
          begin
            fekete;
            delay_us(1);
            csozar;
            delay_us(3);
            fekete;
            delay_us(28);
          end;

        // félsor szünet
        delay_us(32);
        
        // maradék kiegyenlítő jelek
        for k:=1 to 17 do
          begin
            fekete;
            delay_us(1);
            csozar;
            delay_us(5);
            fekete;
            delay_us(6);
          end;
          
        // 2. félkép
        for k:=1 to 286 do // 336-622. lépés
        begin
          fekete;          // sorszinkron
          delay_us(1);
          csozar;
          delay_us(5);
          fekete;
          delay_us(6);
          fekete;          // képtartalom
          delay_us(23);
          feher;
          delay_us(6);
          fekete;
          delay_us(21);
          fekete;
          delay_us(2);
        end;
        
        // félsor
        fekete;
        delay_us(1);
        csozar;
        delay_us(26);
        fekete;
        delay_us(5);
        
        // előkiegyenlítő jelek
        for k:=1 to 5 do
          begin
            fekete;
            delay_us(1);
            csozar;
            delay_us(3);
            fekete;
            delay_us(28);
          end;
    end;
end.
