[PASCAL] Jak pozbyć się mrugania ekranu???

0

Witam

Piszę program w trybie tekstowym, ale nie bardzo wiem jak pozbyć się mrugania ekranu. Zastosowałem procedurę odwołującą się do portu 03DAh i po wyczekaniu odpowiedniego momentu za pomocą Write wywalam tekst na ekran, następnie kontrola klawiszy. To wszystko jest w pętli "While (1=1) do".

  1. gdy przytrzymam chwilę jakiś klawisz to ekran zaczyna mrugać. Jak tego uniknąć?

  2. gdy wyświetlam kursor myszy za pomocą int 33h ax 0001h (chyba nie pomyliłem nr funkcji, nie chce mi się teraz sięgać po książkę :-)) to kursor jest "zamazywany" przez ekran. Pojawia się gdy ruszam myszką, a powinien być na wierzchu przez cały czas. Jak na to zaradić?

Tiger

0

Uruchom komputer 'czystym' DOS.

0

To raczej unikanie problemu niż rozwiązanie. Wolałbym napisać program tak, aby dobrze diałał pod Win.

Tiger

0

Ad 1)

procedure sync; assembler;
asm
  mov dx,03DAh
@1:
  in al,dx
  test al,1000b
  jz @1
end;

procedurka synchronizacji z ekranem. nota bene wyciągnięta z FAQ!!!

0

Właśnie dzięki tej procedurze próbowałem, ale nie pomaga. taki mam schemat programu. czekanie na ekran pomaga tylko troche. gdy wypisuję więcej rzeczy na ekran to czasem pojawia się mruganie np. narożnika rysowanego okienka.

czy procedura czekająca na ekran jest w dobrym miejscu? może jest potrzebna jeszcze dodatkowa procedura (jakiś bufor, albo co)?

Tiger

narysowanie tła itp.
while (1=1) do
  begin
    procedura czekająca na odświeżanie (03DAh)
      begin
        write....
        write....
        write....                     {np. rysowanie okienka }
        write....
      end;
    kontrola steorwania
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1