<?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_Dost%C4%99p_do_pami%C4%99ci_rozszerzonej</id>
	<title>Programowanie: Dostęp do pamięci rozszerzonej - 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_Dost%C4%99p_do_pami%C4%99ci_rozszerzonej"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Programowanie:_Dost%C4%99p_do_pami%C4%99ci_rozszerzonej&amp;action=history"/>
	<updated>2026-10-03T11:06:45Z</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:_Dost%C4%99p_do_pami%C4%99ci_rozszerzonej&amp;diff=3280&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:_Dost%C4%99p_do_pami%C4%99ci_rozszerzonej&amp;diff=3280&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]] udostępnia procedury zarządzania dostępem do pamięci opisane w rozdziale 3 [http://sdx.atari8.info/index.php?show=en_docs podręcznika programowania].&lt;br /&gt;
&lt;br /&gt;
Podczas pisania operacji szczególnie krytycznych czasowo zachodzi czasem potrzeba własnoręcznego przełączania banków pamięci i dostępu do ich rejestrów sterujących. W tym celu przydatne mogą okazać się następujące procedury:&lt;br /&gt;
&lt;br /&gt;
1. Sprawdzenia jakiego rodzaju jest rozszerzenie, które mamy zainstalowane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Checks if Axlon or 130xe extension exist&lt;br /&gt;
; N=0 - 130xe, N=1 - Axlon&lt;br /&gt;
ismemaxlon:&lt;br /&gt;
  bit _EXTTYP&lt;br /&gt;
  rts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Od SpartaDOS X 4.46 rozszerzenie typu [[Axlon]] jest wykrywane i obsługiwane również na Atari [[XL]] i [[XE]].&lt;br /&gt;
&lt;br /&gt;
2. Przetworzenia indeksu banku używanego przez procedury SDX na wartość wpisywaną do portu (PORTB lub rejestr banków Axlona).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Convert memory index to port value&lt;br /&gt;
; IN: A-mem index&lt;br /&gt;
; OUT: A-port value&lt;br /&gt;
toportvalue:&lt;br /&gt;
  stx temp&lt;br /&gt;
  jsr ismemaxlon&lt;br /&gt;
  bpl ?130xe&lt;br /&gt;
?axlon:&lt;br /&gt;
  tax&lt;br /&gt;
  beq ?axlonbase&lt;br /&gt;
?axlonext:&lt;br /&gt;
  sec&lt;br /&gt;
  sbc #3&lt;br /&gt;
  ldx temp&lt;br /&gt;
  rts&lt;br /&gt;
?axlonbase:&lt;br /&gt;
  lda T_,x&lt;br /&gt;
  ldx temp&lt;br /&gt;
  rts&lt;br /&gt;
?130xe:&lt;br /&gt;
  tax&lt;br /&gt;
  beq ?130xebase&lt;br /&gt;
?130xeext:&lt;br /&gt;
  pha&lt;br /&gt;
  lsr&lt;br /&gt;
  lsr&lt;br /&gt;
  tax&lt;br /&gt;
  pla&lt;br /&gt;
  and #%11&lt;br /&gt;
  asl&lt;br /&gt;
  asl&lt;br /&gt;
  ora T_+8-1,x&lt;br /&gt;
  ldx temp&lt;br /&gt;
  rts&lt;br /&gt;
?130xebase:&lt;br /&gt;
  lda T_+4,x&lt;br /&gt;
  ldx temp&lt;br /&gt;
  rts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Obliczenia ilości wolnych banków pamięci.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
memdetect:&lt;br /&gt;
  lda NBANKS&lt;br /&gt;
  sta banksfree&lt;br /&gt;
  rts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Emulacji alokacji pamięci rozszerzonej.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Allocate XRAM memory - replacement for MALLOC&lt;br /&gt;
; hack for lack of MALLOC for XRAM (sdx 4.47-)&lt;br /&gt;
memalloc:&lt;br /&gt;
  cpx #4&lt;br /&gt;
  beq ?ext&lt;br /&gt;
  jmp MALLOC&lt;br /&gt;
?ext:&lt;br /&gt;
  lda banksfree&lt;br /&gt;
  beq ?noroom&lt;br /&gt;
  dec banksfree&lt;br /&gt;
  ldx #&amp;amp;lt;$4000&lt;br /&gt;
  ldy #&amp;amp;gt;$4000&lt;br /&gt;
  stx FAUX1&lt;br /&gt;
  sty FAUX2&lt;br /&gt;
  clc&lt;br /&gt;
  adc #3&lt;br /&gt;
  tax&lt;br /&gt;
  rts&lt;br /&gt;
?noroom:&lt;br /&gt;
  lda #$80&lt;br /&gt;
  rts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;UWAGA!&amp;#039;&amp;#039;&amp;#039; Procedura alokacji powinna być używana zamiast MALLOC. Nie oznacza w systemie banków pamięci rozszerzonej jako zajętych (więc de facto nie rezerwuje pamięci XRAM), lecz pozwala z niej korzystać w programach przeznaczonych dla wersji DOS-a mniejszych niż 4.47 i powinna być używana po uprzednim wywołaniu procedury memdetect.&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>