<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Odczyt_znaku_z_klawiatury_%28GET%29</id>
	<title>Odczyt znaku z klawiatury (GET) - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Odczyt_znaku_z_klawiatury_%28GET%29"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Odczyt_znaku_z_klawiatury_(GET)&amp;action=history"/>
	<updated>2026-10-04T04:39:34Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Odczyt_znaku_z_klawiatury_(GET)&amp;diff=3061&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Odczyt_znaku_z_klawiatury_(GET)&amp;diff=3061&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Procedura czeka, aż użytkownik naciśnie jakiś klawisz na klawiaturze, po czym zwraca odpowiedni kod w akumulatorze.&lt;br /&gt;
&lt;br /&gt;
== GET zwracające [[Kody klawiszy|kod klawiatury]] ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;kbcodes = $02fc&lt;br /&gt;
;&lt;br /&gt;
getkbc lda kbcodes&lt;br /&gt;
       cmp #$ff&lt;br /&gt;
       beq getkbc&lt;br /&gt;
       ldx #$ff&lt;br /&gt;
       stx kbcodes&lt;br /&gt;
       rts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zaletą użycia &amp;lt;code&amp;gt;KBCODES&amp;lt;/code&amp;gt; jest łatwość monitorowania stanu tej zmiennej bez konieczności czekania na naciśnięcie klawisza przez użytkownika (patrz niżej). Kod ATASCII można tu uzyskać przez kombinację obu sposobów, tzn. wywołanie &amp;lt;code&amp;gt;getkey&amp;lt;/code&amp;gt; wtedy, kiedy &amp;lt;code&amp;gt;KBCODES&amp;lt;/code&amp;gt; zasygnalizuje naciśnięcie klawisza. Oszczędza to kłopotu z użyciem wektora tablicy definicji klawiatury, który w nowszych wersjach OS istnieje, a w starszych nie.&lt;br /&gt;
&lt;br /&gt;
== GET zwracające kod [[ATASCII]] ==&lt;br /&gt;
&lt;br /&gt;
Obie poniższe procedury wywołują tę samą funkcję OS. Jej - czasem niepożądaną - cechą jest to, że wstrzymuje wykonywanie programu aż do naciśnięcia klawisza przez użytkownika.&lt;br /&gt;
&lt;br /&gt;
=== Wersja elegancka, ale długa ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;kname .byte &amp;quot;K:&amp;quot;,$9B&lt;br /&gt;
;&lt;br /&gt;
cioexe sta iccmd,x&lt;br /&gt;
       jmp jciomain&lt;br /&gt;
;&lt;br /&gt;
getkey jsr lookup&lt;br /&gt;
       bmi error&lt;br /&gt;
;&lt;br /&gt;
       lda #&amp;amp;lt;kname&lt;br /&gt;
       sta icbufa,x&lt;br /&gt;
       lda #&amp;amp;gt;kname&lt;br /&gt;
       sta icbufa+1,x&lt;br /&gt;
       lda #$04&lt;br /&gt;
       sta icax1,x&lt;br /&gt;
       lda #$00&lt;br /&gt;
       sta icax2,x&lt;br /&gt;
       lda #$03&lt;br /&gt;
       jsr cioexe&lt;br /&gt;
       bmi error            ;w dobrze zdebugowanym programie raczej nie wystąpi tu błąd&lt;br /&gt;
;&lt;br /&gt;
       lda #$00&lt;br /&gt;
       sta icbufl,x&lt;br /&gt;
       sta icbufl+1,x&lt;br /&gt;
       lda #$07&lt;br /&gt;
       jsr cioexe&lt;br /&gt;
       bmi error             ;np. naciśnięto Break&lt;br /&gt;
;&lt;br /&gt;
       pha&lt;br /&gt;
       lda #$0c&lt;br /&gt;
       jsr cioexe&lt;br /&gt;
       pla&lt;br /&gt;
       rts&lt;br /&gt;
;&lt;br /&gt;
error  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Procedura &amp;#039;&amp;#039;&amp;#039;lookup&amp;#039;&amp;#039;&amp;#039; jest do znalezienia [[Programowanie: Jak wyszukać pierwszy wolny IOCB|tutaj]]. Reszta to etykiety systemowe.&lt;br /&gt;
&lt;br /&gt;
Zaletą takiego sposobu odczytywania danych z klawiatury jest zgodność z każdym rodzajem klawiatury, byleby tylko był zainstalowany w systemie właściwy dlań sterownik &amp;quot;K:&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Wersja krótka, ale nieelegancka ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;getkey lda $e425&lt;br /&gt;
       pha&lt;br /&gt;
       lda $e424&lt;br /&gt;
       pha&lt;br /&gt;
       rts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zaletą tego sposobu jest to, że procedura zajmuje tylko 9 bajtów; powinna też zawsze działać, gdyż korzysta z umieszczonego w ROM-ie wektora wskazującego procedurę odczytu bajtu z klawiatury, z którego to wektora korzysta też [[CIO]]. Niemniej jest to &amp;quot;półlegalna&amp;quot; metoda wywoływania systemu operacyjnego: te wektory nie są przeznaczone dla programów użytkownika, a to, że w każdej wersji OS-u są w tym samym miejscu wynika po prostu z faktu, że nie ma szczególnego powodu przenosić ich gdzie indziej.&lt;br /&gt;
&lt;br /&gt;
Wadą tej metody jest to, że omija ona tablicę urządzeń HATABS - a więc ewentualny handler zainstalowany przez użytkownika nie zostanie wywołany.&lt;br /&gt;
&lt;br /&gt;
=== Wersja najkrótsza, zależna od SO, do ograniczonego zastosowania ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;       jsr $f2fd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funkcja ta zwraca kod ATASCII w akumulatorze. Zastosowanie tej funkcji ogranicza się do szybkich programików, wprawek, tam, gdzie liczy się ilość kodu.&lt;br /&gt;
Funkcja ta czeka na znak. Jeśli nie chcemy, aby funkcja nie czekała na znak, tylko zwracała go wyłącznie jeśli został naciśnięty, to musimy skorzystać z rejestru CH (764, $2fc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;       lda CH&lt;br /&gt;
       cmp #255&lt;br /&gt;
       beq skip&lt;br /&gt;
       jsr $f2fd&lt;br /&gt;
skip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Może być stosowana w parze z&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;       jsr $f2b0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
która służy do wypisania znaku z akumulatora na ekran.&lt;br /&gt;
&lt;br /&gt;
A oto najkrótszy edytor ekranowy (MEMO PAD)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;       org $2800&lt;br /&gt;
start&lt;br /&gt;
       jsr $f2fd&lt;br /&gt;
       jsr $f2b0&lt;br /&gt;
       jmp start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Metoda ta jest hackerska, używanie jej w dzisiejszych progamach to proszenie się o kłopoty (głównie u innych użytkowników).&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Niezbędnik kodera]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>