Skocz do zawartości
Ex3qtor

Czyszczenie bufora klawiatury

Rekomendowane odpowiedzi

Mam problem z tym buforem.

Potrzebuje procedurki która zczyta jeden klawisz z bufora i go oczyściza pomocą najlepiej przerwań.

Robiłem co mogłem i nic.

Zczytuje znak z bufora przerwaniem 16h rozkazem 22h.

Potem chciałbym oczyścić bufor rozkazem 0ch(chyba nie pamiętam) z przerwania 21h.

Czasem działa, czasem(np jak przytrzymam klawisz) to działa jakby bez opróżniania bufora.

NEED HELP

 

Co mam zrobić z tym buforem żeby zczytywał mi tylko jeden znak i czyścił bufor.

BTW działam na wstawkach asemblerowych w TPascalu :(

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

1. Czemu używasz asm w TPascalu? Brakuje Ci takiej funkcjonalności w standardowych bibliotekach TP (odczyt znaku, czyszczenie bufora)?? Czy po prostu używasz TP jako kompilatora asm?!?

 

2. Dlaczego zakładasz, że bufor klawiatury i buforowane standardowe wejście (stdin) mają ten sam bufor??

 

Jeżeli używasz przerwania klawiatury INT16h do odczytu znaków to wyczyść bufor również tym przerwaniem (radze przyjrzeć się temu: Int 16/AH=04h - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER - chociaż może nie działać...).

 

A dla INT21h używaj standardowego wczytywania z stdin, np.: Int 21/AH=07h - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO

 

3. Int 16/AH=22h - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only) - Na pewno tym chcesz odczytywać znak z klawiatury?!?!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...