<?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=Programowanie%3A_Parsowanie_zawarto%C5%9Bci_zmiennej_%C5%9Brodowiskowej</id>
	<title>Programowanie: Parsowanie zawartości zmiennej środowiskowej - 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=Programowanie%3A_Parsowanie_zawarto%C5%9Bci_zmiennej_%C5%9Brodowiskowej"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Programowanie:_Parsowanie_zawarto%C5%9Bci_zmiennej_%C5%9Brodowiskowej&amp;action=history"/>
	<updated>2026-10-04T08:57:04Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Programowanie:_Parsowanie_zawarto%C5%9Bci_zmiennej_%C5%9Brodowiskowej&amp;diff=3300&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=Programowanie:_Parsowanie_zawarto%C5%9Bci_zmiennej_%C5%9Brodowiskowej&amp;diff=3300&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;[[SpartaDOS X]] jest jednym z nielicznych DOS-ów pozwalających przekazywać parametry do wywoływanego programu (patrz rozdział 5 [http://sdx.atari8.info/index.php?show=en_docs podręcznika programowania]). Niestety, rozmiar linii poleceń ograniczony jest wewnętrznie do 64 znaków. Jeśli pisany program pozwala na użycie przełączników konfigurujących jego działanie, wtedy rychło okazać się może, że linia poleceń jest za krótka i część parametrów po prostu zostanie obcięta.&lt;br /&gt;
Przykładowo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;SIDPLAYH /V PAL /O EVIE /A $D2C0 /R /F LINEAR /T 10:23 A:&amp;amp;gt;MUSIC&amp;amp;gt;SID&amp;amp;gt;LAST 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
będzie widziane przez SDX jako&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;SIDPLAYH /V PAL /O EVIE /A $D2C0 /R /F LINEAR /T 10:23 A:&amp;amp;gt;MUSIC&amp;amp;gt;SID&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ponieważ SDX jest też jedynym DOS-em pozwalającym na używanie zmiennych środowiskowych (patrz rozdział 7 [http://sdx.atari8.info/index.php?show=en_docs podręcznika programowania]), to problem ten można obejść definiując zmienną środowiskową, w której zostaną umieszczone często występujące parametry, np.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;SET SIDPLAYH=/O EVIE /A $D2C0 /R /F LINEAR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i przetwarzać je zanim jeszcze przejdziemy do interpretacji parametrów w linii poleceń. Wywołanie programu może już wtedy wyglądać tak:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;SIDPLAYH /V PAL /T 10:23 A:&amp;amp;gt;MUSIC&amp;amp;gt;SID&amp;amp;gt;LAST 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Szkopuł polega jednak na tym, że użyteczne procedury U_GETADR, U_SLASH, U_GETNUM, U_TOKEN i inne parsują wyłącznie zawartość bufora linii poleceń.&lt;br /&gt;
&lt;br /&gt;
Można jednak przekonać DOS-a, że przetwarza wiersz komend, podczas gdy faktycznie rzeczone procedury operować będą na zawartości zmiennej środowiskowej. Aby tego dokonać, należy:&lt;br /&gt;
&lt;br /&gt;
1. Zachować zawartość bufora linii poleceń LBUF i offset aktualnie przetwarzanego parametru BUFOFF w buforze tymczasowym.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ldy #64&lt;br /&gt;
  lda BUFOFF&lt;br /&gt;
  sta store,y&lt;br /&gt;
?copy:&lt;br /&gt;
  dey&lt;br /&gt;
  lda LBUF,y&lt;br /&gt;
  sta store,y&lt;br /&gt;
  tya&lt;br /&gt;
  bne ?copy&lt;br /&gt;
&lt;br /&gt;
store .ds 64+1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Pobrać zmienną środowiskową.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  lda ?envad&lt;br /&gt;
  ldx ?envad+1&lt;br /&gt;
  jsr GETENV&lt;br /&gt;
  bmi ?noenv   ;nie ma - należy więc odtworzyć zawartość linii poleceń (patrz p.5)&lt;br /&gt;
&lt;br /&gt;
?envad .dw ?env&lt;br /&gt;
?env .db &amp;#039;SIDPLAYH&amp;#039;,$9B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Przepisać ją z bufora liczb zmiennoprzecinkowych (BUF580 = $580) do LBUF zerując offset przetwarzanego parametru.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ldy #64&lt;br /&gt;
?copy:&lt;br /&gt;
  dey&lt;br /&gt;
  lda BUF580,y&lt;br /&gt;
  sta LBUF,y&lt;br /&gt;
  tya&lt;br /&gt;
  bne ?copy&lt;br /&gt;
  sty BUFOFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Używać do woli U_GETADR, U_SLASH i innych wraz z całym dobrodziejstwem inwentarza ustawiając wartości zmiennych programu.&lt;br /&gt;
&lt;br /&gt;
5. Po wszystkim odtworzyć bufor linii poleceń i indeks przetwarzanego parametru.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ldy #64&lt;br /&gt;
  lda store,y&lt;br /&gt;
  sta BUFOFF&lt;br /&gt;
?copy:&lt;br /&gt;
  dey&lt;br /&gt;
  lda store,y&lt;br /&gt;
  sta LBUF,y&lt;br /&gt;
  tya&lt;br /&gt;
  bne ?copy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Używać do woli U_GETADR, U_SLASH i reszty ale tym razem do przetworzenia parametrów przekazanych w wierszu komend.&lt;br /&gt;
&lt;br /&gt;
Jak wspomniano wcześniej, zarówno zawartość zmiennej środowiskowej, jak i linii poleceń można przetwarzać &amp;#039;&amp;#039;&amp;#039;tą samą procedurą&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;UWAGA!&amp;#039;&amp;#039;&amp;#039; Należy zwrócić uwagę, iż rozmiar zmiennej środowiskowej ograniczony jest przez rozmiar bufora poleceń również do 64 znaków (łącznie ze znakiem końca linii).&lt;br /&gt;
&lt;br /&gt;
== Uwagi ==&lt;br /&gt;
&lt;br /&gt;
Podobny przykład przedstawiony został w rozdziale 18.1 [http://sdx.atari8.info/index.php?show=en_docs podręcznika programowania].&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Programowanie Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Niezbędnik kodera]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>