<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://atariki.krap.pl/index.php?action=history&amp;feed=atom&amp;title=Obliczenie_rozmiaru_pami%C4%99ci_liniowej</id>
	<title>Obliczenie rozmiaru pamięci liniowej - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://atariki.krap.pl/index.php?action=history&amp;feed=atom&amp;title=Obliczenie_rozmiaru_pami%C4%99ci_liniowej"/>
	<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Obliczenie_rozmiaru_pami%C4%99ci_liniowej&amp;action=history"/>
	<updated>2026-10-25T09:29:56Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Obliczenie_rozmiaru_pami%C4%99ci_liniowej&amp;diff=36183&amp;oldid=prev</id>
		<title>KMK: /* Szybkie obliczenie rozmiaru pamięci */ linkowanie</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Obliczenie_rozmiaru_pami%C4%99ci_liniowej&amp;diff=36183&amp;oldid=prev"/>
		<updated>2017-07-21T19:11:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Szybkie obliczenie rozmiaru pamięci: &lt;/span&gt; linkowanie&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Wersja z 21 lip 2017, 20:11&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot;&gt;Linia 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Procedura sprawdza liczbę segmentów 64k RAM dostępnych powyżej adresu $00FFFF. Sprawdzany jest tylko pierwszy bajt każdego z nich, zakłada się, że pojedynczy segment składa się poza tym wyłącznie z komórek pamięci RAM.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Procedura sprawdza liczbę segmentów 64k RAM dostępnych powyżej adresu $00FFFF. Sprawdzany jest tylko pierwszy bajt każdego z nich, zakłada się, że pojedynczy segment składa się poza tym wyłącznie z komórek pamięci RAM.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Procedura działa tak samo w obu trybach pracy 65C816 (natywnym i emulacji 6502). Jedyny wymóg to uruchomienie w segmencie 0 (czyli w pierwszych 64k przestrzeni adresowej).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Procedura działa tak samo w obu trybach pracy &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;65C816&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;(natywnym i emulacji &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;6502&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;). Jedyny wymóg to uruchomienie w segmencie 0 (czyli w pierwszych 64k przestrzeni adresowej).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Zmienne na stronie zerowej ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Zmienne na stronie zerowej ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KMK</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Obliczenie_rozmiaru_pami%C4%99ci_liniowej&amp;diff=36182&amp;oldid=prev</id>
		<title>KMK: /* Kod */</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Obliczenie_rozmiaru_pami%C4%99ci_liniowej&amp;diff=36182&amp;oldid=prev"/>
		<updated>2017-07-21T15:15:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Kod&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Wersja z 21 lip 2017, 16:15&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l62&quot;&gt;Linia 62:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 62:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	inc adr+2&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	inc adr+2&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	bne ?lp1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	bne ?lp1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        dec bcnt&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;?abt    rts&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;?abt    rts&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KMK</name></author>
	</entry>
	<entry>
		<id>https://atariki.krap.pl/index.php?title=Obliczenie_rozmiaru_pami%C4%99ci_liniowej&amp;diff=36181&amp;oldid=prev</id>
		<title>KMK o 13:41, 21 lip 2017</title>
		<link rel="alternate" type="text/html" href="https://atariki.krap.pl/index.php?title=Obliczenie_rozmiaru_pami%C4%99ci_liniowej&amp;diff=36181&amp;oldid=prev"/>
		<updated>2017-07-21T13:41:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Szybkie obliczenie rozmiaru pamięci ==&lt;br /&gt;
Procedura sprawdza liczbę segmentów 64k RAM dostępnych powyżej adresu $00FFFF. Sprawdzany jest tylko pierwszy bajt każdego z nich, zakłada się, że pojedynczy segment składa się poza tym wyłącznie z komórek pamięci RAM.&lt;br /&gt;
&lt;br /&gt;
Procedura działa tak samo w obu trybach pracy 65C816 (natywnym i emulacji 6502). Jedyny wymóg to uruchomienie w segmencie 0 (czyli w pierwszych 64k przestrzeni adresowej).&lt;br /&gt;
&lt;br /&gt;
=== Zmienne na stronie zerowej ===&lt;br /&gt;
Wstępnie deklarujemy na stronie zerowej następujące zmienne:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
adr	.ds 3&lt;br /&gt;
bfirst	.ds 1&lt;br /&gt;
bcnt	.ds 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kod ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ramsize	stz adr&lt;br /&gt;
	stz adr+1&lt;br /&gt;
	lda #$01&lt;br /&gt;
	sta adr+2&lt;br /&gt;
&lt;br /&gt;
	stz bfirst&lt;br /&gt;
	stz bcnt&lt;br /&gt;
&lt;br /&gt;
?lp0	stz !$0000&lt;br /&gt;
&lt;br /&gt;
	lda [adr]&lt;br /&gt;
	eor #$ff&lt;br /&gt;
	sta [adr]&lt;br /&gt;
	cmp [adr]&lt;br /&gt;
	bne ?nx&lt;br /&gt;
	ldx !$0000&lt;br /&gt;
	bne ?nx&lt;br /&gt;
	eor #$ff&lt;br /&gt;
	sta [adr]&lt;br /&gt;
	bra ?fnd&lt;br /&gt;
&lt;br /&gt;
?nx	inc adr+2&lt;br /&gt;
	bne ?lp0&lt;br /&gt;
&lt;br /&gt;
	bra ?abt&lt;br /&gt;
&lt;br /&gt;
?fnd	lda adr+2&lt;br /&gt;
	sta bfirst&lt;br /&gt;
&lt;br /&gt;
	inc adr+2&lt;br /&gt;
	inc bcnt&lt;br /&gt;
&lt;br /&gt;
?lp1	stz !$0000&lt;br /&gt;
&lt;br /&gt;
	lda [adr]&lt;br /&gt;
	eor #$ff&lt;br /&gt;
	sta [adr]&lt;br /&gt;
	cmp [adr]&lt;br /&gt;
	bne ?abt&lt;br /&gt;
	ldx !$0000&lt;br /&gt;
	bne ?abt&lt;br /&gt;
	eor #$ff&lt;br /&gt;
	sta [adr]&lt;br /&gt;
	inc bcnt&lt;br /&gt;
	inc adr+2&lt;br /&gt;
	bne ?lp1&lt;br /&gt;
&lt;br /&gt;
?abt    rts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Użycie ===&lt;br /&gt;
Procedurę uruchamiamy przez &amp;lt;code&amp;gt;jsr ramsize&amp;lt;/code&amp;gt;. Wyniki:&lt;br /&gt;
&lt;br /&gt;
* bfirst - najstarszy bajt adresu pierwszego segmentu 64k powyżej segmentu 0 (np. $01 = pamięć liniowa zaczyna się od adresu $010000)&lt;br /&gt;
* bcnt - liczba dodatkowych segmentów 64k ponad segment 0 (np. 47 = 4 MB)&lt;br /&gt;
&lt;br /&gt;
Zmienna &amp;lt;code&amp;gt;bcnt&amp;lt;/code&amp;gt; zawiera liczbę dodatkowych segmentów ponad segment 0, czyli liczbę wszystkich segmentów zmniejszoną o 1.&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Akceleratory]]&lt;/div&gt;</summary>
		<author><name>KMK</name></author>
	</entry>
</feed>