<?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=Let%27s_Emu%21</id>
	<title>Let&#039;s Emu! - 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=Let%27s_Emu%21"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Let%27s_Emu!&amp;action=history"/>
	<updated>2026-10-01T19:32:19Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Let%27s_Emu!&amp;diff=2723&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=Let%27s_Emu!&amp;diff=2723&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;[[File:Letsemu.png]]&lt;br /&gt;
&lt;br /&gt;
Eksperymentalny emulator komputera [https://pl.wikipedia.org/wiki/ZX_Spectrum Sinclair ZX Spectrum] dla Atari wyposażonego w procesor [[65C816]]. Autorem jest [[KMK]].&lt;br /&gt;
&lt;br /&gt;
== Wymagania sprzętowe ==&lt;br /&gt;
&lt;br /&gt;
* procesor 65C816&lt;br /&gt;
* dodatkowa [[Pamięć liniowa|pamięć liniowa]] o rozmiarze co najmniej 448k&lt;br /&gt;
* [[DracOS]] (ze względu na funkcje zarządzania pamięcią liniową)&lt;br /&gt;
&lt;br /&gt;
Joysticki Atari działają jako joysticki [https://en.wikipedia.org/wiki/Kempston_Interface Kempston] lub Sinclair. Wybór pomiędzy jednym a drugim systemem jest automatyczny, tj. pierwsze odwołanie do portu I/O joysticka Kempston wyłącza emulację joysticków Sinclair.&lt;br /&gt;
&lt;br /&gt;
== Zalecana konfiguracja sprzętowa ==&lt;br /&gt;
&lt;br /&gt;
* procesor 65C816 taktowany co najmniej 7 MHz (optymalnie - 20 MHz)&lt;br /&gt;
* przynajmniej 512k pamięci liniowej (64+512, czyli razem 576k)&lt;br /&gt;
* [[Rapidus Accelerator|karta Rapidus]]&lt;br /&gt;
* [[VBXE]]&lt;br /&gt;
* [[Evie]], [[SONari]] lub stereo [[POKEY]]&lt;br /&gt;
* szybki twardy dysk&lt;br /&gt;
* [[SpartaDOS X]]&lt;br /&gt;
&lt;br /&gt;
Program został napisany dla karty [[Rapidus Accelerator|Rapidus]], ale nie jest ona niezbędnie konieczna do jego działania: &amp;#039;&amp;#039;Let&amp;#039;s Emu!&amp;#039;&amp;#039; można np. uruchomić pod emulatorem [[Altirra]] (niemniej po wykryciu karty Rapidus wykorzystywane są jej niektóre specyficzne możliwości).&lt;br /&gt;
&lt;br /&gt;
Bez VBXE brak jest atrybutów koloru ZX Spectrum (bez tego niektóre programy - np. gra [https://en.wikipedia.org/wiki/The_Trap_Door_%28video_game%29 Trap Door] - są bezużyteczne).&lt;br /&gt;
&lt;br /&gt;
Układ [[PSG (układ)|PSG]] znajdujący się w Evie lub SONari jest pod emulatorem widoczny jako przystawka z układem AY-3-8910. Jeśli taka przystawka nie jest dostępna, ale jeśli komputer zawiera rozszerzenie [[Stereo|stereo]] dla POKEY-a, program wykorzysta je do odtwarzania utworów ułożonych dla układu AY. Układ AY nie jest jednak syntezowany, dlatego generowany dźwięk będzie w takim wypadku tylko lepszym lub gorszym przybliżeniem oryginału.&lt;br /&gt;
&lt;br /&gt;
SpartaDOS X pozwala zarejestrować program jako &amp;quot;przeglądarkę&amp;quot; do plików (tzw. snapszotów) zawierających programy na ZX Spectrum. Natomiast twardy dysk znacznie usprawnia całą zabawę: pliki snapszotów mają po kilkadziesiąt KB, sam plik wykonywalny emulatora też nie ułomek (75 KB), a z twardego dysku na [[PBI]] to wszystko ładuje się w kilka sekund.&lt;br /&gt;
&lt;br /&gt;
== Kompatybilność ==&lt;br /&gt;
&lt;br /&gt;
Program emuluje podstawowy model ZX Spectrum, tj. ZX Spectrum 48k. Procesor [https://pl.wikipedia.org/wiki/Zilog_Z80 Z80] i w ogóle cała maszyna emulowana jest dość wiernie (na tyle, że bez zakłóceń działa np. Sinclair BASIC), są jednak wyjątki wynikające z uproszczeń w kodzie emulatora:&lt;br /&gt;
&lt;br /&gt;
* odczyt pamięci kolorów odbywa się raz na [[Ramka|ramkę]] (a nie, jak w oryginale, co linię skaningową)&lt;br /&gt;
* nie jest dokładnie emulowany rejestr R procesora&lt;br /&gt;
* czas wykonywania poszczególnych rozkazów emulowanego Z80 ma niewiele wspólnego z tymże czasem na &amp;quot;prawdziwym&amp;quot; CPU: emulator wykonuje rozkazy tak szybko, jak potrafi, ale nie zachowuje np. ich wzajemnych zależności czasowych&lt;br /&gt;
&lt;br /&gt;
To ostatnie powoduje słyszalne kłopoty w przypadku np. gier odtwarzających muzykę na beeperze, w której długości i częstotliwości nut mierzone są przez pętle opóźniające. Z tego samego powodu trudno jest dokładnie ocenić wydajność emulacji Z80, bo emulator różne zestawy rozkazów może wykonywać z różną szybkością - ale średnio wychodzi ok. 100% oryginału na 65C816 pracującym z częstotliwością 20 MHz.&lt;br /&gt;
&lt;br /&gt;
Pod emulatorem bardzo szybkie są rozkazy przesłań blokowych Z80 (np. LDIR), bo program używa rozkazów przesłań blokowych 65C816 (MVN i MVP), które przy zegarze 20 MHz są ok. 17x szybsze niż ich odpowiedniki z Z80/3,5 MHz. Z tego powodu istnieje przynajmniej jeden program, który pod emulatorem działa zupełnie dobrze już przy 7 MHz, a przy wyższych częstotliwościach zegara jest po prostu za szybki - jest to gra &amp;#039;&amp;#039;Jet Set Willy&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Na nieco szybszy od oryginału wygląda też Sinclair BASIC (aczkolwiek do pomiarów, z braku oryginału, użyto emulatora [https://en.wikipedia.org/wiki/Fuse_(emulator) Fuse]):&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Program&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Fuse (PC)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Let&amp;#039;s Emu!&amp;lt;br /&amp;gt;(Rapidus, 20 MHz)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Let&amp;#039;s Emu!&amp;lt;br /&amp;gt;(Altirra 2.50, 21,27 MHz)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Let&amp;#039;s Emu!&amp;lt;br /&amp;gt;([[XL14]], 14,32 MHz)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
10 FOR x=1 TO 1000&lt;br /&gt;
20 PRINT AT 10,10;x&lt;br /&gt;
30 NEXT x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| 19 sek.&lt;br /&gt;
| 17 sek.&lt;br /&gt;
| 16 sek.&lt;br /&gt;
| 35,9 sek.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
10 FOR x=1 TO 10000&lt;br /&gt;
20 NEXT x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| 43 sek.&lt;br /&gt;
| 34 sek.&lt;br /&gt;
| 34 sek.&lt;br /&gt;
| 77,3 sek.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
10 FOR x=1 TO 6&lt;br /&gt;
20 BEEP 10,0&lt;br /&gt;
30 NEXT x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| 60 sek.&lt;br /&gt;
| 66 sek.&lt;br /&gt;
| 64 sek.&lt;br /&gt;
| 143,5 sek.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogólnie, pomijając skrajności, wydajność emulacji Z80 to około 17-18% oryginału.&lt;br /&gt;
&lt;br /&gt;
== Obsługiwane formaty plików ==&lt;br /&gt;
&lt;br /&gt;
Emulator umie załadować programy w następujących formatach:&lt;br /&gt;
&lt;br /&gt;
* plik ROM: &amp;quot;kartridż&amp;quot; o wielkości 8 lub 16k zastępujący oryginalny ROM ZX Spectrum&lt;br /&gt;
* plik SNA: nieskompresowany zrzut 48k pamięci&lt;br /&gt;
* plik Z80: skompresowany zrzut 48k pamięci (obsługiwane są wersje formatu v1, v2 i v3)&lt;br /&gt;
* plik TAP: zawartość standardowej taśmy z programem dla ZX Spectrum (od wersji 0.9.2).&lt;br /&gt;
&lt;br /&gt;
Bieżącą zawartość pamięci emulatora można też zapisać do pliku w formacie Z80 (v2).&lt;br /&gt;
&lt;br /&gt;
== Klawiszologia ==&lt;br /&gt;
&lt;br /&gt;
Program obsługiwany jest z menu widocznego na obrazku. Poza tym, w czasie pracy emulatora, pewne funkcje sterujące przypisane są do klawiszy konsoli:&lt;br /&gt;
&lt;br /&gt;
* START przerywa emulację i powoduje powrót do menu (lub do DOS-u, jeśli program uruchomiono w trybie &amp;quot;automatycznym&amp;quot;, tzn. z parametrem /A w wierszu poleceń)&lt;br /&gt;
* OPTION powoduje odwrócenie kolorów INK i PAPER (tylko wtedy, kiedy VBXE jest nieaktywne)&lt;br /&gt;
* HELP wyświetla ściągę z układem klawiatury ZX Spectrum&lt;br /&gt;
&lt;br /&gt;
Funkcje głównej klawiatury przypisano następująco:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ZX Spectrum&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Atari&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| Break&lt;br /&gt;
| Shift/Space&lt;br /&gt;
|-&lt;br /&gt;
| Caps&lt;br /&gt;
| Caps&lt;br /&gt;
|-&lt;br /&gt;
| Caps Shift&lt;br /&gt;
| Shift&lt;br /&gt;
|-&lt;br /&gt;
| Delete&lt;br /&gt;
| Bk Sp&lt;br /&gt;
|-&lt;br /&gt;
| Enter&lt;br /&gt;
| Return&lt;br /&gt;
|-&lt;br /&gt;
| Extended Mode&lt;br /&gt;
| Esc (lub Shift/SELECT)&lt;br /&gt;
|-&lt;br /&gt;
| Inverse video&lt;br /&gt;
| Inverse&lt;br /&gt;
|-&lt;br /&gt;
| Symbol Shift&lt;br /&gt;
| Control (lub SELECT)&lt;br /&gt;
|-&lt;br /&gt;
| True video&lt;br /&gt;
| Shift/Inverse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dla ułatwienia korzystania z klawiatury, znaki &amp;lt;code&amp;gt;,./;+*-=&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt; oraz &amp;lt;code&amp;gt;?:_^&amp;lt;/code&amp;gt;, a także funkcje przesuwania kursora można wywoływać na dwa sposoby: albo przy użyciu odpowiednich kombinacji klawiszy ZX Spectrum, albo wciskając klawisz bądź kombinację klawiszy, którymi wywołuje się daną funkcję (lub dany znak) z klawiatury Atari.&lt;br /&gt;
&lt;br /&gt;
Np. znak zapytania (?) znajduje się na klawiaturze ZX Spectrum pod klawiszem [C]: żeby go wywołać na ekran, trzeba wcisnąć kombinację klawiszy [Symbol Shift]+[C] - czyli, na klawiaturze Atari, odpowiednio [Control]+[C] lub [SELECT]+[C]. Ale tak poza tym można go również wywołać &amp;quot;metodą atarowską&amp;quot;, tj. przez wciśnięcie klawiszy [Shift]+[?].&lt;br /&gt;
&lt;br /&gt;
== Ciekawostki ==&lt;br /&gt;
&lt;br /&gt;
* Program napisano na Atari, początkowo z kartą [[F7]] (10,62 MHz), potem z rozszerzeniem [[SIMMius 4 MB]] (1,77 MHz), na końcu z kartą [[Rapidus Accelerator|Rapidus]] (początkowo 16, potem 20 MHz). Wykorzystano [[MAE]] jako edytor, a kod źródłowy został zasemblowany (nieopublikowanym) asemblerem [[N16]] autorstwa KMK. Cały proces kompilacji &amp;#039;&amp;#039;Let&amp;#039;s Emu!&amp;#039;&amp;#039; wymaga też SpartaDOS X w wersji co najmniej 4.47.&lt;br /&gt;
&lt;br /&gt;
* Konwersja atrybutów koloru robiona jest blitterem VBXE, z tego względu w praktyce nie zajmuje czasu CPU.&lt;br /&gt;
&lt;br /&gt;
* Objętość kodu programu emulacji całego ZX Spectrum 48k wynosi tylko nieco ponad 34 KB.&lt;br /&gt;
&lt;br /&gt;
== Przykładowe gry ==&lt;br /&gt;
&lt;br /&gt;
[[File:Letsemu 3weeks1.png]]&lt;br /&gt;
[[File:Letsemu 3weeks2.png]]&lt;br /&gt;
[[File:Letsemu boulder.png]]&lt;br /&gt;
[[File:Letsemu crap.png]]&lt;br /&gt;
[[File:Letsemu cyber1.png]]&lt;br /&gt;
[[File:Letsemu elite.png]]&lt;br /&gt;
[[File:Letsemu fairlight1.png]]&lt;br /&gt;
[[File:Letsemu jsw.png]]&lt;br /&gt;
[[File:Letsemu knightlore.png]]&lt;br /&gt;
[[File:Letsemu paperboy.png]]&lt;br /&gt;
[[File:Letsemu rick.png]]&lt;br /&gt;
[[File:Letsemu trapdoor.png]]&lt;br /&gt;
&lt;br /&gt;
Snapszoty zrzucono z emulatora Altirra.&lt;br /&gt;
&lt;br /&gt;
== Do ściągnięcia ==&lt;br /&gt;
&lt;br /&gt;
* [http://drac030.krap.pl/pl-acc-pliki.php Ze strony autora]&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
&lt;br /&gt;
* [[ZXEmulator|zXEmulator]]&lt;br /&gt;
&lt;br /&gt;
== Odnośniki zewnętrzne ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=0TpQC7afQDo Film prezentujący działanie emulatora].&lt;br /&gt;
* [http://drac030.krap.pl/shiru_restless_fighter.flac &amp;quot;Let&amp;#039;s Emu!&amp;quot; gra (na Pokeyu) utwór &amp;quot;Restless Fighter&amp;quot;] (skomponowany przez Shiru na beeper). Dla porównania, oryginału można posłuchać [http://battleofthebits.org/arena/Entry/Restless+Fighter/4548/ tutaj].&lt;br /&gt;
* [http://drac030.krap.pl/wapniak-2012.flac &amp;quot;Let&amp;#039;s Emu!&amp;quot; gra (na Evie) utwór z inwitra na Wapniaka 2012] (skomponowany przez [[Yerzmyey|Yerzmyeya]] na [[PSG]]).&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Akceleratory]]&lt;br /&gt;
[[Kategoria:VBXE]]&lt;br /&gt;
[[Kategoria:Programy użytkowe]]&lt;br /&gt;
[[Kategoria:Polskie programy]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>