Ex3qtor Opublikowano 19 Października 2004 Zgłoś Opublikowano 19 Października 2004 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 :( Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
marcinEc Opublikowano 23 Października 2004 Zgłoś Opublikowano 23 Października 2004 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?!?! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...