<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mera400.pl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amo</id>
	<title>MERA 400 wiki - Wkład użytkownika [pl]</title>
	<link rel="self" type="application/atom+xml" href="https://mera400.pl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amo"/>
	<link rel="alternate" type="text/html" href="https://mera400.pl/Specjalna:Wk%C5%82ad/Amo"/>
	<updated>2026-09-13T05:04:27Z</updated>
	<subtitle>Wkład użytkownika</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3366</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3366"/>
		<updated>2026-08-30T15:25:25Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* ferrytowa pamięć Elwro (bloki po 32 ksłowa) oraz półprzewodnikowa [[pamięć MEGA]] [[Amepol]]-u (bloki po 64 ksłowa)&lt;br /&gt;
* kanał znakowy z terminalem znakowym, pamięcią SP45DE (napęd dyskietek 8&amp;quot;) oraz [[Zegar czasu rzeczywistego Amepolu|zegarem czasu rzeczywistego]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]] z dyskiem [[Winchester|Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - uruchamianie|Uruchamianie]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - graficzny interfejs użytkownika|Graficzny interfejs użytkownika]]&lt;br /&gt;
* [[EM400 - tekstowy interfejs użytkownika|Tekstowy interfejs użytkownika]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3365</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3365"/>
		<updated>2026-08-30T15:25:15Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* ferrytowa pamięć Elwro (bloki po 32ksłowa) oraz półprzewodnikowa [[pamięć MEGA]] [[Amepol]]-u (bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy z terminalem znakowym, pamięcią SP45DE (napęd dyskietek 8&amp;quot;) oraz [[Zegar czasu rzeczywistego Amepolu|zegarem czasu rzeczywistego]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]] z dyskiem [[Winchester|Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - uruchamianie|Uruchamianie]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - graficzny interfejs użytkownika|Graficzny interfejs użytkownika]]&lt;br /&gt;
* [[EM400 - tekstowy interfejs użytkownika|Tekstowy interfejs użytkownika]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3364</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3364"/>
		<updated>2026-08-30T15:22:29Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* pamięć Elwro (ferromagnetyczna, bloki po 32ksłowa)&lt;br /&gt;
* [[Pamięć MEGA]] [[Amepol]]-u (półprzewodnikowa, bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy&lt;br /&gt;
** terminal znakowy&lt;br /&gt;
** pamięć SP45DE - napęd dyskietek 8&amp;quot;&lt;br /&gt;
** [[Zegar czasu rzeczywistego Amepolu]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]]&lt;br /&gt;
** dysk [[Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - uruchamianie|Uruchamianie]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - graficzny interfejs użytkownika|Graficzny interfejs użytkownika]]&lt;br /&gt;
* [[EM400 - tekstowy interfejs użytkownika|Tekstowy interfejs użytkownika]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3363</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3363"/>
		<updated>2026-08-30T15:21:44Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* pamięć Elwro (ferromagnetyczna, bloki po 32ksłowa)&lt;br /&gt;
* [[Pamięć MEGA]] [[Amepol]]-u (półprzewodnikowa, bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy&lt;br /&gt;
** terminal znakowy&lt;br /&gt;
** pamięć SP45DE - napęd dyskietek 8&amp;quot;&lt;br /&gt;
** [[Zegar czasu rzeczywistego Amepolu]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]]&lt;br /&gt;
** dysk [[Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - uruchamianie|Uruchamianie]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - graficzny interfejs użytkownika|Graficzny interfejs użytkownika]]&lt;br /&gt;
* [[EM400 - tekstowy interfejs użytkownika|Tekstowy interfejs użytkownika]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jakubfi?tab=repositories Repozytoria źródeł emulatora i narzędzi]&lt;br /&gt;
* [[Wydajność EM400|Wydajność]] (pomiary wydajności nie są już prowadzone)&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=CROOK-5_-_obraz_dysku&amp;diff=3362</id>
		<title>CROOK-5 - obraz dysku</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=CROOK-5_-_obraz_dysku&amp;diff=3362"/>
		<updated>2026-08-30T15:16:52Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Za zgodą autorów systemu [[CROOK]] - [[Zbigniew Czerniak|Zbigniewa Czerniaka]] i [[Marek Nikodemski|Marka Nikodemskiego]], udostępniony został obraz dysku z zainstalowanym systemem operacyjnym [[CROOK|CROOK-5]], narzędziami systemowymi, oprogramowaniem użytkowym i oryginalną dokumentacją. Sposób uruchomienia [[CROOK|CROOK-5]] w emulatorze [[EM400]] opisuje dokument: [[CROOK-5 w EM400]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pobierz obraz: [https://mera400.pl/img/crook5-p8f-1.1.1.zip CROOK-5 8/15 dla MX-16]&#039;&#039;&#039; (1707651 bajtów, MD5: a19c1fe436926ad76a181d23d238d95e)&lt;br /&gt;
&lt;br /&gt;
= Zawartość obrazu =&lt;br /&gt;
&lt;br /&gt;
Na obszarze dyskowym &#039;&#039;&#039;S&#039;&#039;&#039; (SYSTEM):&lt;br /&gt;
* system operacyjny [[CROOK|CROOK-5]] w wersji 8/15 dla maszyny przerobionej (procesor MX-16)&lt;br /&gt;
* interpreter OSL wraz z poleceniami zewnętrznymi&lt;br /&gt;
* narzędzia systemowe i administracyjne&lt;br /&gt;
* języki: [[Język symboliczny (assembler) ASSM|ASSM]], ASSK, GASS, BASIC, Pascal, Fortran, C, RAL, CEMMA&lt;br /&gt;
* inne programy użytkowe&lt;br /&gt;
&lt;br /&gt;
Na obszarze danych &#039;&#039;&#039;D&#039;&#039;&#039; (DATA):&lt;br /&gt;
* w skorowidzu &#039;&#039;&#039;OPISY&#039;&#039;&#039; - opisy narzędzi: [[EXM]], CSL-CROOK, DOSF, C, LISP, ALGOL-1204M, ASSM, CROOK-4, [[CROOK|CROOK-5]], FORTRAN-CROOK, MODULA-2, PASCAL 400, RAL, EDI, RED, REP&lt;br /&gt;
* w skorowidzu &#039;&#039;&#039;MULOPI&#039;&#039;&#039; - opisy MULTIX-a, PLIX-a, systemu testowego AMETES, pamięci MEGA&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Uwaga:&#039;&#039;&#039; obraz dysku przygotowany został wyłącznie do celów edukacyjnych, z zamiarem zachowania i zaprezentowania historii polskiej informatyki. Jeśli uważasz, że któreś komponenty nie powinny być elemententami obrazu, proszę o kontakt pod adresem: jakubf (małpa) mera400 (kropka) pl&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=CROOK-5_-_obraz_dysku&amp;diff=3361</id>
		<title>CROOK-5 - obraz dysku</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=CROOK-5_-_obraz_dysku&amp;diff=3361"/>
		<updated>2026-08-30T15:16:13Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Za zgodą autorów systemu [[CROOK]] - [[Zbigniew Czerniak|Zbigniewa Czerniaka]] i [[Marek Nikodemski|Marka Nikodemskiego]], udostępniony został obraz dysku z zainstalowanym systemem operacyjnym [[CROOK|CROOK-5]], narzędziami systemowymi, oprogramowaniem użytkowym i oryginalną dokumentacją:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pobierz obraz: [https://mera400.pl/img/crook5-p8f-1.1.1.zip CROOK-5 8/15 dla MX-16]&#039;&#039;&#039; (1707651 bajtów, MD5: a19c1fe436926ad76a181d23d238d95e)&lt;br /&gt;
&lt;br /&gt;
Sposób uruchomienia [[CROOK|CROOK-5]] w emulatorze [[EM400]] opisuje dokument: [[CROOK-5 w EM400]].&lt;br /&gt;
&lt;br /&gt;
= Zawartość obrazu =&lt;br /&gt;
&lt;br /&gt;
Na obszarze dyskowym &#039;&#039;&#039;S&#039;&#039;&#039; (SYSTEM):&lt;br /&gt;
* system operacyjny [[CROOK|CROOK-5]] w wersji 8/15 dla maszyny przerobionej (procesor MX-16)&lt;br /&gt;
* interpreter OSL wraz z poleceniami zewnętrznymi&lt;br /&gt;
* narzędzia systemowe i administracyjne&lt;br /&gt;
* języki: [[Język symboliczny (assembler) ASSM|ASSM]], ASSK, GASS, BASIC, Pascal, Fortran, C, RAL, CEMMA&lt;br /&gt;
* inne programy użytkowe&lt;br /&gt;
&lt;br /&gt;
Na obszarze danych &#039;&#039;&#039;D&#039;&#039;&#039; (DATA):&lt;br /&gt;
* w skorowidzu &#039;&#039;&#039;OPISY&#039;&#039;&#039; - opisy narzędzi: [[EXM]], CSL-CROOK, DOSF, C, LISP, ALGOL-1204M, ASSM, CROOK-4, [[CROOK|CROOK-5]], FORTRAN-CROOK, MODULA-2, PASCAL 400, RAL, EDI, RED, REP&lt;br /&gt;
* w skorowidzu &#039;&#039;&#039;MULOPI&#039;&#039;&#039; - opisy MULTIX-a, PLIX-a, systemu testowego AMETES, pamięci MEGA&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Uwaga:&#039;&#039;&#039; obraz dysku przygotowany został wyłącznie do celów edukacyjnych, z zamiarem zachowania i zaprezentowania historii polskiej informatyki. Jeśli uważasz, że któreś komponenty nie powinny być elemententami obrazu, proszę o kontakt pod adresem: jakubf (małpa) mera400 (kropka) pl&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=CROOK-5_-_obraz_dysku&amp;diff=3360</id>
		<title>CROOK-5 - obraz dysku</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=CROOK-5_-_obraz_dysku&amp;diff=3360"/>
		<updated>2026-08-30T15:15:45Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Za zgodą autorów systemu [[CROOK]] - [[Zbigniew Czerniak|Zbigniewa Czerniaka]] i [[Marek Nikodemski|Marka Nikodemskiego]], udostępniony został obraz dysku z zainstalowanym systemem operacyjnym [[CROOK|CROOK-5]], narzędziami systemowymi, oprogramowaniem użytkowym i oryginalną dokumentacją:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pobierz obraz: [https://mera400.pl/img/crook5-p8f-1.1.1.zip CROOK-5 8/15 dla MX-16]&#039;&#039;&#039; (1707651 bajtów, MD5: a19c1fe436926ad76a181d23d238d95e)&lt;br /&gt;
&lt;br /&gt;
Sposób uruchomienia [[CROOK|CROOK-5]] w emulatorze [[EM400]] opisuje dokument: [[CROOK-5 w EM400]].&lt;br /&gt;
&lt;br /&gt;
Obraz zawiera:&lt;br /&gt;
&lt;br /&gt;
Na obszarze dyskowym &#039;&#039;&#039;S&#039;&#039;&#039; (SYSTEM):&lt;br /&gt;
* system operacyjny [[CROOK|CROOK-5]] w wersji 8/15 dla maszyny przerobionej (procesor MX-16)&lt;br /&gt;
* interpreter OSL wraz z poleceniami zewnętrznymi&lt;br /&gt;
* narzędzia systemowe i administracyjne&lt;br /&gt;
* języki: [[Język symboliczny (assembler) ASSM|ASSM]], ASSK, GASS, BASIC, Pascal, Fortran, C, RAL, CEMMA&lt;br /&gt;
* inne programy użytkowe&lt;br /&gt;
&lt;br /&gt;
Na obszarze danych &#039;&#039;&#039;D&#039;&#039;&#039; (DATA):&lt;br /&gt;
* w skorowidzu &#039;&#039;&#039;OPISY&#039;&#039;&#039; - opisy narzędzi: [[EXM]], CSL-CROOK, DOSF, C, LISP, ALGOL-1204M, ASSM, CROOK-4, [[CROOK|CROOK-5]], FORTRAN-CROOK, MODULA-2, PASCAL 400, RAL, EDI, RED, REP&lt;br /&gt;
* w skorowidzu &#039;&#039;&#039;MULOPI&#039;&#039;&#039; - opisy MULTIX-a, PLIX-a, systemu testowego AMETES, pamięci MEGA&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Uwaga:&#039;&#039;&#039; obraz dysku przygotowany został wyłącznie do celów edukacyjnych, z zamiarem zachowania i zaprezentowania historii polskiej informatyki. Jeśli uważasz, że któreś komponenty nie powinny być elemententami obrazu, proszę o kontakt pod adresem: jakubf (małpa) mera400 (kropka) pl&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=CROOK-5_w_EM400&amp;diff=3359</id>
		<title>CROOK-5 w EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=CROOK-5_w_EM400&amp;diff=3359"/>
		<updated>2026-08-30T15:10:55Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Aby uruchomić system operacyjny [[CROOK|CROOK-5]] w emulatorze [[EM400]] należy:&lt;br /&gt;
&lt;br /&gt;
* Pobrać [[CROOK-5 - obraz dysku|obraz dysku z systemem CROOK-5]] i rozpakować pobrane archiwum zip.&lt;br /&gt;
* Uruchomić emulator&lt;br /&gt;
* Jako aktywną maszynę wybrać MX-16 (z menu kontekstowego pulpitu lub w oknie ustawień, w sekcji konfiguracji maszyn)&lt;br /&gt;
* Z menu &amp;quot;Urządzenia&amp;quot; załadować pobrany obraz .img jako Winchester 1:28&lt;br /&gt;
* Włączyć maszynę kluczykiem&lt;br /&gt;
* Z menu &amp;quot;Urządzenia&amp;quot; otworzyć terminal 15:4 (kanał znakowy numer 15, urządzenie 4)&lt;br /&gt;
* Podnieść klucze START i CLOCK&lt;br /&gt;
&lt;br /&gt;
Po chwili na ekranie zgłosi się proces INI i pojawi się zachęta logowania. Dostępni są jedynie domyślni użytkownicy systemowi LIBRAR i BOSS (bez haseł). Wpisanie się do systemu poprawną nazwą użytkownika spowoduje uruchomienie interpretera zleceń OSL i wyświetlenie jego znaku zachęty:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt; INI-22F &amp;gt;&lt;br /&gt;
 I&#039;M CROOK-5 AND WHO ARE YOU ? boss&lt;br /&gt;
 &lt;br /&gt;
 OSL-45Q     (CROOK-5 MP8/15)&lt;br /&gt;
 `&lt;br /&gt;
&lt;br /&gt;
A co dalej, to już w [[System Operacyjny CROOK-5|podręczniku CROOK-5]]!&lt;br /&gt;
&lt;br /&gt;
= Warto wiedzieć =&lt;br /&gt;
&lt;br /&gt;
# W oknie nieaktywnego terminala, lub po wypisaniu się z systemu można ponownie aktywować zachętę logowania klawiszem &#039;&#039;&#039;DEL&#039;&#039;&#039; lub &#039;&#039;&#039;Ctrl-backspace&#039;&#039;&#039;&lt;br /&gt;
# CROOK-5 jako znaku końca wejścia (czasami będącego też poleceniem opuszczenia programu) używa kombinacji &#039;&#039;&#039;Ctrl-t&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=CROOK-5_w_EM400&amp;diff=3358</id>
		<title>CROOK-5 w EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=CROOK-5_w_EM400&amp;diff=3358"/>
		<updated>2026-08-30T15:10:42Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Aby uruchomić system operacyjny [[CROOK|CROOK-5]] w emulatorze [[EM400]] należy:&lt;br /&gt;
&lt;br /&gt;
* Pobrać [[CROOK-5 - obraz dysku|obraz dysku z systemem CROOK-5]] i rozpakować pobrane archiwum zip.&lt;br /&gt;
* Uruchomić emulator&lt;br /&gt;
* Jako aktywną maszynę wybrać MX-16 (z menu kontekstowego pulpitu lub w oknie ustawień, w sekcji konfiguracji maszyn)&lt;br /&gt;
* Z menu &amp;quot;Urządzenia&amp;quot; załadować pobrany obraz .img jako Winchester 1:28&lt;br /&gt;
* Włączyć maszynę kluczykiem&lt;br /&gt;
* Z menu &amp;quot;Urządzenia&amp;quot; otworzyć terminal 15:4 (kanał znakowy numer 15, urządzenie 4)&lt;br /&gt;
* Podnieść klucze START i CLOCK&lt;br /&gt;
&lt;br /&gt;
Po chwili a ekranie zgłosi się proces INI i pojawi się zachęta logowania. Dostępni są jedynie domyślni użytkownicy systemowi LIBRAR i BOSS (bez haseł). Wpisanie się do systemu poprawną nazwą użytkownika spowoduje uruchomienie interpretera zleceń OSL i wyświetlenie jego znaku zachęty:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt; INI-22F &amp;gt;&lt;br /&gt;
 I&#039;M CROOK-5 AND WHO ARE YOU ? boss&lt;br /&gt;
 &lt;br /&gt;
 OSL-45Q     (CROOK-5 MP8/15)&lt;br /&gt;
 `&lt;br /&gt;
&lt;br /&gt;
A co dalej, to już w [[System Operacyjny CROOK-5|podręczniku CROOK-5]]!&lt;br /&gt;
&lt;br /&gt;
= Warto wiedzieć =&lt;br /&gt;
&lt;br /&gt;
# W oknie nieaktywnego terminala, lub po wypisaniu się z systemu można ponownie aktywować zachętę logowania klawiszem &#039;&#039;&#039;DEL&#039;&#039;&#039; lub &#039;&#039;&#039;Ctrl-backspace&#039;&#039;&#039;&lt;br /&gt;
# CROOK-5 jako znaku końca wejścia (czasami będącego też poleceniem opuszczenia programu) używa kombinacji &#039;&#039;&#039;Ctrl-t&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=CROOK-5_w_EM400&amp;diff=3357</id>
		<title>CROOK-5 w EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=CROOK-5_w_EM400&amp;diff=3357"/>
		<updated>2026-08-30T15:10:32Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Aby uruchomić system operacyjny [[CROOK|CROOK-5]] w emulatorze [[EM400]] należy:&lt;br /&gt;
&lt;br /&gt;
* Pobrać [[CROOK-5 - obraz dysku|obraz dysku z systemem CROOK-5]] i rozpakować pobrane archiwum zip.&lt;br /&gt;
* Uruchomić emulator&lt;br /&gt;
* Jako aktywną maszynę wybrać MX-16 (z menu kontekstowego pulpitu lub w oknie ustawień, w sekcji konfiguracji maszyn)&lt;br /&gt;
* Z menu &amp;quot;Urządzenia&amp;quot; załadować pobrany obraz .img do Winchestera 1:28&lt;br /&gt;
* Włączyć maszynę kluczykiem&lt;br /&gt;
* Z menu &amp;quot;Urządzenia&amp;quot; otworzyć terminal 15:4 (kanał znakowy numer 15, urządzenie 4)&lt;br /&gt;
* Podnieść klucze START i CLOCK&lt;br /&gt;
&lt;br /&gt;
Po chwili a ekranie zgłosi się proces INI i pojawi się zachęta logowania. Dostępni są jedynie domyślni użytkownicy systemowi LIBRAR i BOSS (bez haseł). Wpisanie się do systemu poprawną nazwą użytkownika spowoduje uruchomienie interpretera zleceń OSL i wyświetlenie jego znaku zachęty:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt; INI-22F &amp;gt;&lt;br /&gt;
 I&#039;M CROOK-5 AND WHO ARE YOU ? boss&lt;br /&gt;
 &lt;br /&gt;
 OSL-45Q     (CROOK-5 MP8/15)&lt;br /&gt;
 `&lt;br /&gt;
&lt;br /&gt;
A co dalej, to już w [[System Operacyjny CROOK-5|podręczniku CROOK-5]]!&lt;br /&gt;
&lt;br /&gt;
= Warto wiedzieć =&lt;br /&gt;
&lt;br /&gt;
# W oknie nieaktywnego terminala, lub po wypisaniu się z systemu można ponownie aktywować zachętę logowania klawiszem &#039;&#039;&#039;DEL&#039;&#039;&#039; lub &#039;&#039;&#039;Ctrl-backspace&#039;&#039;&#039;&lt;br /&gt;
# CROOK-5 jako znaku końca wejścia (czasami będącego też poleceniem opuszczenia programu) używa kombinacji &#039;&#039;&#039;Ctrl-t&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=CROOK-5_w_EM400&amp;diff=3356</id>
		<title>CROOK-5 w EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=CROOK-5_w_EM400&amp;diff=3356"/>
		<updated>2026-08-30T15:10:25Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Aby uruchomić system operacyjny [[CROOK|CROOK-5]] w emulatorze [[EM400]] należy:&lt;br /&gt;
&lt;br /&gt;
* Pobrać [[CROOK-5 - obraz dysku|obraz dysku z systemem CROOK-5]] i rozpakować pobrane archiwum zip.&lt;br /&gt;
* Uruchomić emulator&lt;br /&gt;
* Jako aktywną maszynę wybrać MX-16 (z menu kontekstowego pulpitu lub w oknie ustawień, w sekcji konfiguracji maszyn)&lt;br /&gt;
* Z menu &amp;quot;Urządzenia&amp;quot; załadować pobrany obraz .img dla Winchestera 1:28&lt;br /&gt;
* Włączyć maszynę kluczykiem&lt;br /&gt;
* Z menu &amp;quot;Urządzenia&amp;quot; otworzyć terminal 15:4 (kanał znakowy numer 15, urządzenie 4)&lt;br /&gt;
* Podnieść klucze START i CLOCK&lt;br /&gt;
&lt;br /&gt;
Po chwili a ekranie zgłosi się proces INI i pojawi się zachęta logowania. Dostępni są jedynie domyślni użytkownicy systemowi LIBRAR i BOSS (bez haseł). Wpisanie się do systemu poprawną nazwą użytkownika spowoduje uruchomienie interpretera zleceń OSL i wyświetlenie jego znaku zachęty:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt; INI-22F &amp;gt;&lt;br /&gt;
 I&#039;M CROOK-5 AND WHO ARE YOU ? boss&lt;br /&gt;
 &lt;br /&gt;
 OSL-45Q     (CROOK-5 MP8/15)&lt;br /&gt;
 `&lt;br /&gt;
&lt;br /&gt;
A co dalej, to już w [[System Operacyjny CROOK-5|podręczniku CROOK-5]]!&lt;br /&gt;
&lt;br /&gt;
= Warto wiedzieć =&lt;br /&gt;
&lt;br /&gt;
# W oknie nieaktywnego terminala, lub po wypisaniu się z systemu można ponownie aktywować zachętę logowania klawiszem &#039;&#039;&#039;DEL&#039;&#039;&#039; lub &#039;&#039;&#039;Ctrl-backspace&#039;&#039;&#039;&lt;br /&gt;
# CROOK-5 jako znaku końca wejścia (czasami będącego też poleceniem opuszczenia programu) używa kombinacji &#039;&#039;&#039;Ctrl-t&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=CROOK-5_w_EM400&amp;diff=3355</id>
		<title>CROOK-5 w EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=CROOK-5_w_EM400&amp;diff=3355"/>
		<updated>2026-08-30T15:10:07Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Aby uruchomić system operacyjny [[CROOK|CROOK-5]] w emulatorze [[EM400]] należy:&lt;br /&gt;
&lt;br /&gt;
* Pobrać [[CROOK-5 - obraz dysku|obraz dysku z systemem CROOK-5]] i rozpakować pobrane archiwum zip.&lt;br /&gt;
* Uruchomić emulator&lt;br /&gt;
* Jako aktywną maszynę wybrać MX-16 (z menu kontekstowego pulpitu lub w oknie ustawień, w sekcji konfiguracji maszyn)&lt;br /&gt;
* Z menu &amp;quot;Urządzenia&amp;quot; załadować pobrany obraz dla Winchestera 1:28&lt;br /&gt;
* Włączyć maszynę kluczykiem&lt;br /&gt;
* Z menu &amp;quot;Urządzenia&amp;quot; otworzyć terminal 15:4 (kanał znakowy numer 15, urządzenie 4)&lt;br /&gt;
* Podnieść klucze START i CLOCK&lt;br /&gt;
&lt;br /&gt;
Po chwili a ekranie zgłosi się proces INI i pojawi się zachęta logowania. Dostępni są jedynie domyślni użytkownicy systemowi LIBRAR i BOSS (bez haseł). Wpisanie się do systemu poprawną nazwą użytkownika spowoduje uruchomienie interpretera zleceń OSL i wyświetlenie jego znaku zachęty:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt; INI-22F &amp;gt;&lt;br /&gt;
 I&#039;M CROOK-5 AND WHO ARE YOU ? boss&lt;br /&gt;
 &lt;br /&gt;
 OSL-45Q     (CROOK-5 MP8/15)&lt;br /&gt;
 `&lt;br /&gt;
&lt;br /&gt;
A co dalej, to już w [[System Operacyjny CROOK-5|podręczniku CROOK-5]]!&lt;br /&gt;
&lt;br /&gt;
= Warto wiedzieć =&lt;br /&gt;
&lt;br /&gt;
# W oknie nieaktywnego terminala, lub po wypisaniu się z systemu można ponownie aktywować zachętę logowania klawiszem &#039;&#039;&#039;DEL&#039;&#039;&#039; lub &#039;&#039;&#039;Ctrl-backspace&#039;&#039;&#039;&lt;br /&gt;
# CROOK-5 jako znaku końca wejścia (czasami będącego też poleceniem opuszczenia programu) używa kombinacji &#039;&#039;&#039;Ctrl-t&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_uruchamianie&amp;diff=3353</id>
		<title>EM400 - uruchamianie</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_uruchamianie&amp;diff=3353"/>
		<updated>2026-08-30T14:52:56Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Uruchamiając EM400 z linii poleceń można użyć następujących przełączników:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;-h&#039;&#039;&#039; - wyświetl pomoc&lt;br /&gt;
* &#039;&#039;&#039;-c config&#039;&#039;&#039; - użyj podanego pliku konfiguracyjnego. Jeśli nie zostanie podeny, domyślnie emulator próbuje załadować:&lt;br /&gt;
** w systemach Linux, kolejno: &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039; lub &#039;&#039;&#039;.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
** w systemach Windows: &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;-m machine&#039;&#039;&#039; - wybierz maszynę o podanym identyfikatorze.&lt;br /&gt;
* &#039;&#039;&#039;-p program&#039;&#039;&#039; - po uruchomieniu załaduj podany program od adresu 0 w segmencie 0 pamięci.&lt;br /&gt;
* &#039;&#039;&#039;-l komponent,komponent,...&#039;&#039;&#039; - włącz logowanie dla podanych komponentów ([https://mera400.pl/EM400_-_konfiguracja#Logowanie opis komponentów]). Poprzedź komponent znakiem minus (&amp;quot;-&amp;quot;) aby go wyłączyć, np.: &#039;&#039;&#039;&amp;quot;all,-cpu&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;-L&#039;&#039;&#039; - wyłącz całkowicie logowanie&lt;br /&gt;
* &#039;&#039;&#039;-u ui&#039;&#039;&#039; - uruchom emulator z wybranym UI:&lt;br /&gt;
** qt - [[EM400 - graficzny interfejs użytkownika|graficzny interfejs Qt]] (domyślny)&lt;br /&gt;
** cmd - [[EM400 - tekstowy interfejs użytkownika|prosty interfejs tekstowy]]&lt;br /&gt;
* &#039;&#039;&#039;-O sekcja:klucz=wartość&#039;&#039;&#039; - uruchom emulator nadpisując klucz w danej sekcji konfiguracji podaną wartością&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3352</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3352"/>
		<updated>2026-08-30T14:47:21Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* pamięć Elwro (ferromagnetyczna, bloki po 32ksłowa)&lt;br /&gt;
* [[Pamięć MEGA]] [[Amepol]]-u (półprzewodnikowa, bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy&lt;br /&gt;
** terminal znakowy&lt;br /&gt;
** pamięć SP45DE - napęd dyskietek 8&amp;quot;&lt;br /&gt;
** [[Zegar czasu rzeczywistego Amepolu]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]]&lt;br /&gt;
** dysk [[Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - uruchamianie|Uruchamianie]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - graficzny interfejs użytkownika|Graficzny interfejs użytkownika]]&lt;br /&gt;
* [[EM400 - tekstowy interfejs użytkownika|Tekstowy interfejs użytkownika]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
* [[EM400 - uruchamianie programów]]&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jakubfi?tab=repositories Repozytoria źródeł emulatora i narzędzi]&lt;br /&gt;
* [[Wydajność EM400|Wydajność]] (pomiary wydajności nie są już prowadzone)&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3351</id>
		<title>EM400 - konfiguracja</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3351"/>
		<updated>2026-08-30T14:45:06Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Konfiguracja emulatora dostępna jest z menu &#039;&#039;&#039;Emulator &amp;amp;rarr; Ustawienia&#039;&#039;&#039; i zorganizowana jest w sekcje:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Maszyna&#039;&#039;&#039; - konfiguracje sprzętowe emulowanego komputera&lt;br /&gt;
# &#039;&#039;&#039;Ogólne&#039;&#039;&#039; - ustawienia emulacji i interfejsu użytkownika&lt;br /&gt;
# &#039;&#039;&#039;Dźwięk&#039;&#039;&#039; - ustawienia dźwięków interfejsu użytkownika i głośniczka CPU&lt;br /&gt;
# &#039;&#039;&#039;Logowanie&#039;&#039;&#039; - konfiguracja logowania&lt;br /&gt;
&lt;br /&gt;
= Maszyna =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-maszyna.png|thumb|500px|Konfiguracja: Maszyna (procesor)]]&lt;br /&gt;
&lt;br /&gt;
EM400 pozwala przygotować wiele konfiguracji minikomputera i przełączać się nimi w zależności od potrzeb.&lt;br /&gt;
&lt;br /&gt;
Przy pierwszym uruchomieniu, EM400 tworzy dwie domyślne maszyny:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MERA-400&#039;&#039;&#039; - prosta konfiguracja z dwoma modułami pamięci Elwro i stacją dysków SP45DE&lt;br /&gt;
* &#039;&#039;&#039;MX-16&#039;&#039;&#039; - przeznaczona do uruchamiania systemu operacyjnego CROOK-5, z pamięcią MEGA Amepolu, procesorem peryferyjnym MULTIX i dyskiem Winchester&lt;br /&gt;
&lt;br /&gt;
Zarządzanie maszynami umożliwiają następujące opcje:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aktywna maszyna&#039;&#039;&#039; - wybór aktualnie edytowanej konfiguracji minikomputera&lt;br /&gt;
* &#039;&#039;&#039;Dodaj...&#039;&#039;&#039; - dodawanie nowej maszyny. Otwiera okienko pozwalające wpisać jej nazwę. Identyfikator maszyny wywodzony jest z podanej nazwy&lt;br /&gt;
* &#039;&#039;&#039;Powiel...&#039;&#039;&#039; - robi kopię aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuwa aktualnie wybraną maszynę&lt;br /&gt;
* &#039;&#039;&#039;Nazwa&#039;&#039;&#039; - nazwa aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Identyfikator&#039;&#039;&#039; - identyfikator wybranej maszyny. Używa się go jako parametr opci &#039;&#039;&#039;-m&#039;&#039;&#039; przy wywoływaniu emulatora z linii poleceń&lt;br /&gt;
&lt;br /&gt;
Konfiguracja maszyny podzielona jest na trzy zakładki opisane w kolejnych sekcjach.&lt;br /&gt;
&lt;br /&gt;
== Procesor ==&lt;br /&gt;
&lt;br /&gt;
Można zmienić następujące właściwości procesora&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Jednostka zmiennoprzecinkowa (AWP)&#039;&#039;&#039; - czy zainstalowany jest Arytmometr Wielokrotnej Precyzji&lt;br /&gt;
* &#039;&#039;&#039;Modyfikacje procesora&#039;&#039;&#039; - czy obecne są modyfikacje procesora wprowadzone w MX-16&lt;br /&gt;
* &#039;&#039;&#039;Instrukcje we/wy niedozwolone w trybie użytkownika&#039;&#039;&#039; - czy instrukcje IN oraz OU są niedozwolone w trybie użytkownika&lt;br /&gt;
* &#039;&#039;&#039;Zatrzymaj przy braku pamięci&#039;&#039;&#039; - czy procesor zatrzymuje się, jeśli w segmencie pamięci dla systemu operacyjnego nastąpiło odwołanie do nieskonfigurowanej pamięci&lt;br /&gt;
* &#039;&#039;&#039;Okres zegara&#039;&#039;&#039; - co jaki czas zgłaszane są przerwania zegarowe (z wewnętrznego timera CPU)&lt;br /&gt;
&lt;br /&gt;
== Pamięć ==&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-pamiec.png|thumb|500px|Konfiguracja: Maszyna (pamięć)]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Moduły Elwro&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci ferrytowej Elwro (po 32 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Moduły MEGA&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci półprzewodnikowej MEGA Amepolu (po 64 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Strony systemowe (sprzętowe)&#039;&#039;&#039; - ilość stron pamięci skonfigurowanych sprzętowo dla systemu operacyjnego w segmencie 0&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM MEGA&#039;&#039;&#039; - obraz pamięci PROM (EPROM) w pamięci MEGA, który zastąpi domyślny&lt;br /&gt;
* &#039;&#039;&#039;Wstępnie ładowany program&#039;&#039;&#039; - program, który zostanie automatycznie załadowany do segmentu 0 po włączeniu maszyny&lt;br /&gt;
&lt;br /&gt;
== Wejście/wyjście ==&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-wewy.png|thumb|500px|Konfiguracja: Maszyna (kanały i urządzenia)]]&lt;br /&gt;
&lt;br /&gt;
W tej zakładce konfigurowane są kanały wejścia/wyjścia i podłączone do nich urządzenia:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dodaj kanał&#039;&#039;&#039; - dodanie nowego kanału wejścia/wyjścia (max 16)&lt;br /&gt;
* &#039;&#039;&#039;Dodaj urządzenie&#039;&#039;&#039; - dodanie nowego kurządzenia w kanale (ich ilość zależy od kanału)&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuń wybrane z listy urządzenie lub kanał&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodając nowy kanał należy wybrać jego numer oraz typ. Aktualnie obsługiwane kanały:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Znakowy&#039;&#039;&#039; - kanał znakowy minikomputera, do podłączanie wolnych urządzeń znakowych&lt;br /&gt;
* &#039;&#039;&#039;MULTIX&#039;&#039;&#039; - procesor peryferynjy MULTIX Amepolu&lt;br /&gt;
* &#039;&#039;&#039;Tester we/wy&#039;&#039;&#039; - do testów komunikacji, używany przez testy emulatora&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie urządzeń do kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodanie nowego urządzenia wymaga wybrania jego numeru i typu, oraz ustalenia opcji, które są zależne od typu urządzenia. Dostępne typy urządzeń zależą od tego, w jakim kanale jest ono dodawane.&lt;br /&gt;
&lt;br /&gt;
==== Terminal ====&lt;br /&gt;
&lt;br /&gt;
Dostępny w kanale znakowym i MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; Terminal w MULTIX-ie nie działa w obecnej wersji emulatora.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Port TCP&#039;&#039;&#039; - port TCP na którym słucha emulacja terminala.&lt;br /&gt;
* &#039;&#039;&#039;Prędkość&#039;&#039;&#039; - emulowana prędkość działania emulacji terminala. Domyślnie 9600 bodów.&lt;br /&gt;
&lt;br /&gt;
==== Pamięć SP45DE ====&lt;br /&gt;
&lt;br /&gt;
Dostępna tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obrazy dyskietek&#039;&#039;&#039; - pliki zawierające obrazy dyskietek 8&amp;quot; o geometrii: 1 strona (głowica), 77 ścieżek, 26 sektorów na ścieżkę, 128 bajtów na sektor = 256256 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Zegar czasu rzeczywistego Amepolu ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM&#039;&#039;&#039; - alternatywna zawartość pamięci PROM zegara (256 bajtów). Zastępuje domyślną. &lt;br /&gt;
&lt;br /&gt;
==== Winchester ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz dysku&#039;&#039;&#039; - plik zawierający obraz dysku o geometrii: 4 strony (głowice), 615 ścieżek, 16 sektorów na ścieżkę, 512 bajtów na sektor = 20152320 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Napęd dyskietek 5.25&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; aktualnie nie obsługiwany.&lt;br /&gt;
&lt;br /&gt;
= Ogólne =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-ogolne.png|thumb|500px|Konfiguracja: Ogólne]]&lt;br /&gt;
&lt;br /&gt;
== Emulacja ==&lt;br /&gt;
&lt;br /&gt;
Ustawienia dotyczące sposobu realizacji emulacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Emulowane czasy&#039;&#039;&#039; określają to, jak wiernie emulator oddaje prawdziwą MERĘ-400 jeśli chodzi o prędkość pracy systemu. Możliwe są trzy poziomy:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; - Aktywne są wszystkie czasy, które są zaimplementowane w emulatorze. EM400 oddaje MERĘ-400 tak wiernie, jak tylko potrafi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum&#039;&#039;&#039; - Aktywne są tylko czasy, które są wymagane do poprawnego działania oprogramowania MERY-400. Ogólna interakcja z emulowanym minikomputerem jest znacznie szybsza, niż z prawdziwym sprzętem.&lt;br /&gt;
* &#039;&#039;&#039;Żadne&#039;&#039;&#039; - &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; w tym trybie oprogramowanie może działać niepoprawnie z wielu przyczyn. Emulacja działa tak szybko, jak to możliwe. Nie są zachowane niemal żadne czasy działania prwawdziwego komputera. Przeznaczony do testowania, debugowania i w innych, szczególnych przypadkach.&lt;br /&gt;
&lt;br /&gt;
W miarę rozwoju emulatora w opcji &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; uwzględnianych będzie coraz więcej aspektów pracy MERY-400.&lt;br /&gt;
&lt;br /&gt;
== Interfejs użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Język&#039;&#039;&#039; - język interfejsu. Pozwala wybrać jeden z języków lub honorować ustawienia systemu.&lt;br /&gt;
* &#039;&#039;&#039;Uruchom z włączoną maszyną&#039;&#039;&#039; - emulator uruchamia się z wybraną maszyną i włączonym zasilaniem (nie trzeba przekręcać kluczyka, żeby włączyć maszynę)&lt;br /&gt;
* &#039;&#039;&#039;Motyw pulpitu&#039;&#039;&#039; - GUI EM400 używa własnego motywu. Wyłączenie opcji powoduje, że używany jest motyw systemowy.&lt;br /&gt;
* &#039;&#039;&#039;Mały pulpit techniczny&#039;&#039;&#039; - grafika pulpitu technicznego skadrowana jest do interaktywnych elementów.&lt;br /&gt;
* &#039;&#039;&#039;Terminal&#039;&#039;&#039; - określa, czy emulator używa wbudowanej emulacji terminala, czy zewnętrznego terminala konfigurowanego w następnej opcji&lt;br /&gt;
* &#039;&#039;&#039;Polecenie terminala&#039;&#039;&#039; - polecenie, które uruchamiane jest, gdy użytkownik otwiera terminal, a opcja &#039;&#039;&#039;Terminal&#039;&#039;&#039; powyżej ustawiona jest na &#039;&#039;&#039;Zewnętrzny&#039;&#039;&#039;. Pomocnicze polecenie &#039;&#039;&#039;emterm&#039;&#039;&#039; instalowane jest wraz z emulatorem i zapewnia poprawne połączenie z emulatorem.&lt;br /&gt;
* &#039;&#039;&#039;Czcionka debugera&#039;&#039;&#039; - czcionka używana w interfejsie debugera&lt;br /&gt;
* &#039;&#039;&#039;Czcionka terminala&#039;&#039;&#039; - czcionka używana we wbudowanym terminalu&lt;br /&gt;
&lt;br /&gt;
= Dźwięk =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-dzwiek.png|thumb|500px|Konfiguracja: Dźwięk]]&lt;br /&gt;
&lt;br /&gt;
Dźwięk w emulatorze to dwa osobne tory audio:&lt;br /&gt;
&lt;br /&gt;
* dźwięki interfejsu - pstrykanie kluczy, dźwięk pokrętła rejestrów, etc.&lt;br /&gt;
* dźwięk głośniczka CPU - generowany przez samą emulację&lt;br /&gt;
&lt;br /&gt;
== Dźwięki interfejsu ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność dźwięków interfejsu&lt;br /&gt;
* &#039;&#039;&#039;Uwielbiam gdy cewki piszczą&#039;&#039;&#039; - sprawdź sam ;-)&lt;br /&gt;
&lt;br /&gt;
== Głośniczek CPU ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wyjście dźwięku włączone&#039;&#039;&#039; - włączenie dźwięku CPU&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność głośniczka CPU&lt;br /&gt;
* &#039;&#039;&#039;Częstotliwość próbkowania&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Długość bufora&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Opóźnienie&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Podsystem audio&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Urządzenie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logowanie =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-logowanie.png|thumb|500px|Konfiguracja: Logowanie]]&lt;br /&gt;
&lt;br /&gt;
Umożliwia logowanie pracy emulatora do pliku.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logowanie włączone&#039;&#039;&#039; - aktywuje logowanie&lt;br /&gt;
* &#039;&#039;&#039;Komponenty&#039;&#039;&#039; - jakie komponenty emulacji zapisują swoje akcje do pliku logu&lt;br /&gt;
* &#039;&#039;&#039;Plik logu&#039;&#039;&#039; - plik, to którego log jest zapisywany&lt;br /&gt;
* &#039;&#039;&#039;Buforowanie liniowe&#039;&#039;&#039; - zapis do pliku odbywa się po każdej linii. W przeciwnym wypadku zapisy są buforowane do większych zapisów (wydajniejsze, ale można stracić fragment loga)&lt;br /&gt;
&lt;br /&gt;
Dostępne komponenty:&lt;br /&gt;
&lt;br /&gt;
* LIB - komunikaty biblioteki libem400&lt;br /&gt;
* APP - komunikaty aplikacji używającej biblioteki em400&lt;br /&gt;
* CRK5 - procesy i wywołania systemowe CROOK-5&lt;br /&gt;
* MEM - konfiguracja i zdarzenia w pamięci&lt;br /&gt;
* CPU - praca procesora &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; włączenie tej opcji loguje każdą wykonywaną instrukcję. Może to spowolnić emulację i generować pliki o rozmiarze wielu GB&lt;br /&gt;
* OP - szczegóły wybranych instrukcji CPU&lt;br /&gt;
* INT - przerwania&lt;br /&gt;
* IO - podsystem wejścia/wyjścia&lt;br /&gt;
* MX - MULTIX&lt;br /&gt;
* CCHR - kanał znakowy&lt;br /&gt;
* CMEM - kanał pamięciowy&lt;br /&gt;
* UZDAT - port szeregowy w kanale znakowym&lt;br /&gt;
* UZFX - kontroler stacji dysków SP45DE&lt;br /&gt;
* MECLO - zegar czasu rzeczywistego Amepolu&lt;br /&gt;
* TERM - terminal&lt;br /&gt;
* 9425 - dysk MERA 9425&lt;br /&gt;
* WNCH - dysk Winchester&lt;br /&gt;
* FLOP - stacja dysków&lt;br /&gt;
* PNCH - dziurkarka taśmy papierowej&lt;br /&gt;
* PNRD - czytnik taśmy papierowej&lt;br /&gt;
* TAPE - taśma magnetyczna&lt;br /&gt;
&lt;br /&gt;
= Plik konfiguracyjny =&lt;br /&gt;
&lt;br /&gt;
Konfiguracja określona w oknie ustawień emulatora zapisywana jest do tekstowego pliku konfiguracyjnego. EM400 odnajduje go w następujący sposób:&lt;br /&gt;
&lt;br /&gt;
# Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika &#039;&#039;&#039;-c&#039;&#039;&#039;), zostanie on użyty.&lt;br /&gt;
# Jeśli nie, domyślnie używany jest plik:&lt;br /&gt;
#* w systemach Linux, kolejno:&lt;br /&gt;
#** &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#** &#039;&#039;&#039;$HOME/.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#* w systemach Windows:&lt;br /&gt;
#** &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
# Jeśli plik konfiguracyjny nie istnieje, tworzony jest domyślny.&lt;br /&gt;
&lt;br /&gt;
Aktualny opis pliku konfiguracyjnego wraz z przykładami znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini tutaj]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3350</id>
		<title>EM400 - konfiguracja</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3350"/>
		<updated>2026-08-30T14:44:53Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Konfiguracja emulatora dostępna jest z menu &#039;&#039;&#039;Emulator &amp;amp;rarr; Ustawienia&#039;&#039;&#039; i zorganizowana jest w sekcje:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Maszyna&#039;&#039;&#039; - konfiguracje sprzętowe emulowanego komputera&lt;br /&gt;
# &#039;&#039;&#039;Ogólne&#039;&#039;&#039; - ustawienia emulacji i interfejsu użytkownika&lt;br /&gt;
# &#039;&#039;&#039;Dźwięk&#039;&#039;&#039; - ustawienia dźwięków interfejsu użytkownika i głośniczka CPU&lt;br /&gt;
# &#039;&#039;&#039;Logowanie&#039;&#039;&#039; - konfiguracja logowania&lt;br /&gt;
&lt;br /&gt;
= Maszyna =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-maszyna.png|thumb|500px|Konfiguracja: Maszyna (procesor)]]&lt;br /&gt;
&lt;br /&gt;
EM400 pozwala przygotować wiele konfiguracji minikomputera i przełączać się nimi w zależności od potrzeb.&lt;br /&gt;
&lt;br /&gt;
Przy pierwszym uruchomieniu, EM400 tworzy dwie domyślne maszyny:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MERA-400&#039;&#039;&#039; - prosta konfiguracja z dwoma modułami pamięci Elwro i stacją dysków SP45DE&lt;br /&gt;
* &#039;&#039;&#039;MX-16&#039;&#039;&#039; - przeznaczona do uruchamiania systemu operacyjnego CROOK-5, z pamięcią MEGA Amepolu, procesorem peryferyjnym MULTIX i dyskiem Winchester&lt;br /&gt;
&lt;br /&gt;
Zarządzanie maszynami umożliwiają następujące opcje:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aktywna maszyna&#039;&#039;&#039; - wybór aktualnie edytowanej konfiguracji minikomputera&lt;br /&gt;
* &#039;&#039;&#039;Dodaj...&#039;&#039;&#039; - dodawanie nowej maszyny. Otwiera okienko pozwalające wpisać jej nazwę. Identyfikator maszyny wywodzony jest z podanej nazwy&lt;br /&gt;
* &#039;&#039;&#039;Powiel...&#039;&#039;&#039; - robi kopię aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuwa aktualnie wybraną maszynę&lt;br /&gt;
* &#039;&#039;&#039;Nazwa&#039;&#039;&#039; - nazwa aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Identyfikator&#039;&#039;&#039; - identyfikator wybranej maszyny. Używa się go jako parametr opci &#039;&#039;&#039;-m&#039;&#039;&#039; przy wywoływaniu emulatora z linii poleceń&lt;br /&gt;
&lt;br /&gt;
Konfiguracja maszyny podzielona jest na trzy zakładki opisane w kolejnych sekcjach.&lt;br /&gt;
&lt;br /&gt;
== Procesor ==&lt;br /&gt;
&lt;br /&gt;
Można zmienić następujące właściwości procesora&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Jednostka zmiennoprzecinkowa (AWP)&#039;&#039;&#039; - czy zainstalowany jest Arytmometr Wielokrotnej Precyzji&lt;br /&gt;
* &#039;&#039;&#039;Modyfikacje procesora&#039;&#039;&#039; - czy obecne są modyfikacje procesora wprowadzone w MX-16&lt;br /&gt;
* &#039;&#039;&#039;Instrukcje we/wy niedozwolone w trybie użytkownika&#039;&#039;&#039; - czy instrukcje IN oraz OU są niedozwolone w trybie użytkownika&lt;br /&gt;
* &#039;&#039;&#039;Zatrzymaj przy braku pamięci&#039;&#039;&#039; - czy procesor zatrzymuje się, jeśli w segmencie pamięci dla systemu operacyjnego nastąpiło odwołanie do nieskonfigurowanej pamięci&lt;br /&gt;
* &#039;&#039;&#039;Okres zegara&#039;&#039;&#039; - co jaki czas zgłaszane są przerwania zegarowe (z wewnętrznego timera CPU)&lt;br /&gt;
&lt;br /&gt;
== Pamięć ==&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-pamiec.png|thumb|500px|Konfiguracja: Maszyna (pamięć)]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Moduły Elwro&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci ferrytowej Elwro (po 32 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Moduły MEGA&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci półprzewodnikowej MEGA Amepolu (po 64 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Strony systemowe (sprzętowe)&#039;&#039;&#039; - ilość stron pamięci skonfigurowanych sprzętowo dla systemu operacyjnego w segmencie 0&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM MEGA&#039;&#039;&#039; - obraz pamięci PROM (EPROM) w pamięci MEGA, który zastąpi domyślny&lt;br /&gt;
* &#039;&#039;&#039;Wstępnie ładowany program&#039;&#039;&#039; - program, który zostanie automatycznie załadowany do segmentu 0 po włączeniu maszyny&lt;br /&gt;
&lt;br /&gt;
== Wejście/wyjście ==&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-wewy.png|thumb|500px|Konfiguracja: Mszyna (kanały i urządzenia)]]&lt;br /&gt;
&lt;br /&gt;
W tej zakładce konfigurowane są kanały wejścia/wyjścia i podłączone do nich urządzenia:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dodaj kanał&#039;&#039;&#039; - dodanie nowego kanału wejścia/wyjścia (max 16)&lt;br /&gt;
* &#039;&#039;&#039;Dodaj urządzenie&#039;&#039;&#039; - dodanie nowego kurządzenia w kanale (ich ilość zależy od kanału)&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuń wybrane z listy urządzenie lub kanał&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodając nowy kanał należy wybrać jego numer oraz typ. Aktualnie obsługiwane kanały:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Znakowy&#039;&#039;&#039; - kanał znakowy minikomputera, do podłączanie wolnych urządzeń znakowych&lt;br /&gt;
* &#039;&#039;&#039;MULTIX&#039;&#039;&#039; - procesor peryferynjy MULTIX Amepolu&lt;br /&gt;
* &#039;&#039;&#039;Tester we/wy&#039;&#039;&#039; - do testów komunikacji, używany przez testy emulatora&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie urządzeń do kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodanie nowego urządzenia wymaga wybrania jego numeru i typu, oraz ustalenia opcji, które są zależne od typu urządzenia. Dostępne typy urządzeń zależą od tego, w jakim kanale jest ono dodawane.&lt;br /&gt;
&lt;br /&gt;
==== Terminal ====&lt;br /&gt;
&lt;br /&gt;
Dostępny w kanale znakowym i MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; Terminal w MULTIX-ie nie działa w obecnej wersji emulatora.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Port TCP&#039;&#039;&#039; - port TCP na którym słucha emulacja terminala.&lt;br /&gt;
* &#039;&#039;&#039;Prędkość&#039;&#039;&#039; - emulowana prędkość działania emulacji terminala. Domyślnie 9600 bodów.&lt;br /&gt;
&lt;br /&gt;
==== Pamięć SP45DE ====&lt;br /&gt;
&lt;br /&gt;
Dostępna tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obrazy dyskietek&#039;&#039;&#039; - pliki zawierające obrazy dyskietek 8&amp;quot; o geometrii: 1 strona (głowica), 77 ścieżek, 26 sektorów na ścieżkę, 128 bajtów na sektor = 256256 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Zegar czasu rzeczywistego Amepolu ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM&#039;&#039;&#039; - alternatywna zawartość pamięci PROM zegara (256 bajtów). Zastępuje domyślną. &lt;br /&gt;
&lt;br /&gt;
==== Winchester ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz dysku&#039;&#039;&#039; - plik zawierający obraz dysku o geometrii: 4 strony (głowice), 615 ścieżek, 16 sektorów na ścieżkę, 512 bajtów na sektor = 20152320 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Napęd dyskietek 5.25&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; aktualnie nie obsługiwany.&lt;br /&gt;
&lt;br /&gt;
= Ogólne =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-ogolne.png|thumb|500px|Konfiguracja: Ogólne]]&lt;br /&gt;
&lt;br /&gt;
== Emulacja ==&lt;br /&gt;
&lt;br /&gt;
Ustawienia dotyczące sposobu realizacji emulacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Emulowane czasy&#039;&#039;&#039; określają to, jak wiernie emulator oddaje prawdziwą MERĘ-400 jeśli chodzi o prędkość pracy systemu. Możliwe są trzy poziomy:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; - Aktywne są wszystkie czasy, które są zaimplementowane w emulatorze. EM400 oddaje MERĘ-400 tak wiernie, jak tylko potrafi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum&#039;&#039;&#039; - Aktywne są tylko czasy, które są wymagane do poprawnego działania oprogramowania MERY-400. Ogólna interakcja z emulowanym minikomputerem jest znacznie szybsza, niż z prawdziwym sprzętem.&lt;br /&gt;
* &#039;&#039;&#039;Żadne&#039;&#039;&#039; - &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; w tym trybie oprogramowanie może działać niepoprawnie z wielu przyczyn. Emulacja działa tak szybko, jak to możliwe. Nie są zachowane niemal żadne czasy działania prwawdziwego komputera. Przeznaczony do testowania, debugowania i w innych, szczególnych przypadkach.&lt;br /&gt;
&lt;br /&gt;
W miarę rozwoju emulatora w opcji &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; uwzględnianych będzie coraz więcej aspektów pracy MERY-400.&lt;br /&gt;
&lt;br /&gt;
== Interfejs użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Język&#039;&#039;&#039; - język interfejsu. Pozwala wybrać jeden z języków lub honorować ustawienia systemu.&lt;br /&gt;
* &#039;&#039;&#039;Uruchom z włączoną maszyną&#039;&#039;&#039; - emulator uruchamia się z wybraną maszyną i włączonym zasilaniem (nie trzeba przekręcać kluczyka, żeby włączyć maszynę)&lt;br /&gt;
* &#039;&#039;&#039;Motyw pulpitu&#039;&#039;&#039; - GUI EM400 używa własnego motywu. Wyłączenie opcji powoduje, że używany jest motyw systemowy.&lt;br /&gt;
* &#039;&#039;&#039;Mały pulpit techniczny&#039;&#039;&#039; - grafika pulpitu technicznego skadrowana jest do interaktywnych elementów.&lt;br /&gt;
* &#039;&#039;&#039;Terminal&#039;&#039;&#039; - określa, czy emulator używa wbudowanej emulacji terminala, czy zewnętrznego terminala konfigurowanego w następnej opcji&lt;br /&gt;
* &#039;&#039;&#039;Polecenie terminala&#039;&#039;&#039; - polecenie, które uruchamiane jest, gdy użytkownik otwiera terminal, a opcja &#039;&#039;&#039;Terminal&#039;&#039;&#039; powyżej ustawiona jest na &#039;&#039;&#039;Zewnętrzny&#039;&#039;&#039;. Pomocnicze polecenie &#039;&#039;&#039;emterm&#039;&#039;&#039; instalowane jest wraz z emulatorem i zapewnia poprawne połączenie z emulatorem.&lt;br /&gt;
* &#039;&#039;&#039;Czcionka debugera&#039;&#039;&#039; - czcionka używana w interfejsie debugera&lt;br /&gt;
* &#039;&#039;&#039;Czcionka terminala&#039;&#039;&#039; - czcionka używana we wbudowanym terminalu&lt;br /&gt;
&lt;br /&gt;
= Dźwięk =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-dzwiek.png|thumb|500px|Konfiguracja: Dźwięk]]&lt;br /&gt;
&lt;br /&gt;
Dźwięk w emulatorze to dwa osobne tory audio:&lt;br /&gt;
&lt;br /&gt;
* dźwięki interfejsu - pstrykanie kluczy, dźwięk pokrętła rejestrów, etc.&lt;br /&gt;
* dźwięk głośniczka CPU - generowany przez samą emulację&lt;br /&gt;
&lt;br /&gt;
== Dźwięki interfejsu ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność dźwięków interfejsu&lt;br /&gt;
* &#039;&#039;&#039;Uwielbiam gdy cewki piszczą&#039;&#039;&#039; - sprawdź sam ;-)&lt;br /&gt;
&lt;br /&gt;
== Głośniczek CPU ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wyjście dźwięku włączone&#039;&#039;&#039; - włączenie dźwięku CPU&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność głośniczka CPU&lt;br /&gt;
* &#039;&#039;&#039;Częstotliwość próbkowania&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Długość bufora&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Opóźnienie&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Podsystem audio&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Urządzenie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logowanie =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-logowanie.png|thumb|500px|Konfiguracja: Logowanie]]&lt;br /&gt;
&lt;br /&gt;
Umożliwia logowanie pracy emulatora do pliku.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logowanie włączone&#039;&#039;&#039; - aktywuje logowanie&lt;br /&gt;
* &#039;&#039;&#039;Komponenty&#039;&#039;&#039; - jakie komponenty emulacji zapisują swoje akcje do pliku logu&lt;br /&gt;
* &#039;&#039;&#039;Plik logu&#039;&#039;&#039; - plik, to którego log jest zapisywany&lt;br /&gt;
* &#039;&#039;&#039;Buforowanie liniowe&#039;&#039;&#039; - zapis do pliku odbywa się po każdej linii. W przeciwnym wypadku zapisy są buforowane do większych zapisów (wydajniejsze, ale można stracić fragment loga)&lt;br /&gt;
&lt;br /&gt;
Dostępne komponenty:&lt;br /&gt;
&lt;br /&gt;
* LIB - komunikaty biblioteki libem400&lt;br /&gt;
* APP - komunikaty aplikacji używającej biblioteki em400&lt;br /&gt;
* CRK5 - procesy i wywołania systemowe CROOK-5&lt;br /&gt;
* MEM - konfiguracja i zdarzenia w pamięci&lt;br /&gt;
* CPU - praca procesora &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; włączenie tej opcji loguje każdą wykonywaną instrukcję. Może to spowolnić emulację i generować pliki o rozmiarze wielu GB&lt;br /&gt;
* OP - szczegóły wybranych instrukcji CPU&lt;br /&gt;
* INT - przerwania&lt;br /&gt;
* IO - podsystem wejścia/wyjścia&lt;br /&gt;
* MX - MULTIX&lt;br /&gt;
* CCHR - kanał znakowy&lt;br /&gt;
* CMEM - kanał pamięciowy&lt;br /&gt;
* UZDAT - port szeregowy w kanale znakowym&lt;br /&gt;
* UZFX - kontroler stacji dysków SP45DE&lt;br /&gt;
* MECLO - zegar czasu rzeczywistego Amepolu&lt;br /&gt;
* TERM - terminal&lt;br /&gt;
* 9425 - dysk MERA 9425&lt;br /&gt;
* WNCH - dysk Winchester&lt;br /&gt;
* FLOP - stacja dysków&lt;br /&gt;
* PNCH - dziurkarka taśmy papierowej&lt;br /&gt;
* PNRD - czytnik taśmy papierowej&lt;br /&gt;
* TAPE - taśma magnetyczna&lt;br /&gt;
&lt;br /&gt;
= Plik konfiguracyjny =&lt;br /&gt;
&lt;br /&gt;
Konfiguracja określona w oknie ustawień emulatora zapisywana jest do tekstowego pliku konfiguracyjnego. EM400 odnajduje go w następujący sposób:&lt;br /&gt;
&lt;br /&gt;
# Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika &#039;&#039;&#039;-c&#039;&#039;&#039;), zostanie on użyty.&lt;br /&gt;
# Jeśli nie, domyślnie używany jest plik:&lt;br /&gt;
#* w systemach Linux, kolejno:&lt;br /&gt;
#** &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#** &#039;&#039;&#039;$HOME/.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#* w systemach Windows:&lt;br /&gt;
#** &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
# Jeśli plik konfiguracyjny nie istnieje, tworzony jest domyślny.&lt;br /&gt;
&lt;br /&gt;
Aktualny opis pliku konfiguracyjnego wraz z przykładami znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini tutaj]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=Plik:Konfiguracja-dzwiek.png&amp;diff=3349</id>
		<title>Plik:Konfiguracja-dzwiek.png</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=Plik:Konfiguracja-dzwiek.png&amp;diff=3349"/>
		<updated>2026-08-30T14:44:01Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3348</id>
		<title>EM400 - konfiguracja</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3348"/>
		<updated>2026-08-30T14:43:21Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Konfiguracja emulatora dostępna jest z menu &#039;&#039;&#039;Emulator &amp;amp;rarr; Ustawienia&#039;&#039;&#039; i zorganizowana jest w sekcje:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Maszyna&#039;&#039;&#039; - konfiguracje sprzętowe emulowanego komputera&lt;br /&gt;
# &#039;&#039;&#039;Ogólne&#039;&#039;&#039; - ustawienia emulacji i interfejsu użytkownika&lt;br /&gt;
# &#039;&#039;&#039;Dźwięk&#039;&#039;&#039; - ustawienia dźwięków interfejsu użytkownika i głośniczka CPU&lt;br /&gt;
# &#039;&#039;&#039;Logowanie&#039;&#039;&#039; - konfiguracja logowania&lt;br /&gt;
&lt;br /&gt;
= Maszyna =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-maszyna.png|thumb|500px|Konfiguracja: procesor maszyny]]&lt;br /&gt;
&lt;br /&gt;
EM400 pozwala przygotować wiele konfiguracji minikomputera i przełączać się nimi w zależności od potrzeb.&lt;br /&gt;
&lt;br /&gt;
Przy pierwszym uruchomieniu, EM400 tworzy dwie domyślne maszyny:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MERA-400&#039;&#039;&#039; - prosta konfiguracja z dwoma modułami pamięci Elwro i stacją dysków SP45DE&lt;br /&gt;
* &#039;&#039;&#039;MX-16&#039;&#039;&#039; - przeznaczona do uruchamiania systemu operacyjnego CROOK-5, z pamięcią MEGA Amepolu, procesorem peryferyjnym MULTIX i dyskiem Winchester&lt;br /&gt;
&lt;br /&gt;
Zarządzanie maszynami umożliwiają następujące opcje:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aktywna maszyna&#039;&#039;&#039; - wybór aktualnie edytowanej konfiguracji minikomputera&lt;br /&gt;
* &#039;&#039;&#039;Dodaj...&#039;&#039;&#039; - dodawanie nowej maszyny. Otwiera okienko pozwalające wpisać jej nazwę. Identyfikator maszyny wywodzony jest z podanej nazwy&lt;br /&gt;
* &#039;&#039;&#039;Powiel...&#039;&#039;&#039; - robi kopię aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuwa aktualnie wybraną maszynę&lt;br /&gt;
* &#039;&#039;&#039;Nazwa&#039;&#039;&#039; - nazwa aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Identyfikator&#039;&#039;&#039; - identyfikator wybranej maszyny. Używa się go jako parametr opci &#039;&#039;&#039;-m&#039;&#039;&#039; przy wywoływaniu emulatora z linii poleceń&lt;br /&gt;
&lt;br /&gt;
Konfiguracja maszyny podzielona jest na trzy zakładki opisane w kolejnych sekcjach.&lt;br /&gt;
&lt;br /&gt;
== Procesor ==&lt;br /&gt;
&lt;br /&gt;
Można zmienić następujące właściwości procesora&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Jednostka zmiennoprzecinkowa (AWP)&#039;&#039;&#039; - czy zainstalowany jest Arytmometr Wielokrotnej Precyzji&lt;br /&gt;
* &#039;&#039;&#039;Modyfikacje procesora&#039;&#039;&#039; - czy obecne są modyfikacje procesora wprowadzone w MX-16&lt;br /&gt;
* &#039;&#039;&#039;Instrukcje we/wy niedozwolone w trybie użytkownika&#039;&#039;&#039; - czy instrukcje IN oraz OU są niedozwolone w trybie użytkownika&lt;br /&gt;
* &#039;&#039;&#039;Zatrzymaj przy braku pamięci&#039;&#039;&#039; - czy procesor zatrzymuje się, jeśli w segmencie pamięci dla systemu operacyjnego nastąpiło odwołanie do nieskonfigurowanej pamięci&lt;br /&gt;
* &#039;&#039;&#039;Okres zegara&#039;&#039;&#039; - co jaki czas zgłaszane są przerwania zegarowe (z wewnętrznego timera CPU)&lt;br /&gt;
&lt;br /&gt;
== Pamięć ==&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-pamiec.png|thumb|500px|Konfiguracja: pamięć maszyny]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Moduły Elwro&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci ferrytowej Elwro (po 32 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Moduły MEGA&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci półprzewodnikowej MEGA Amepolu (po 64 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Strony systemowe (sprzętowe)&#039;&#039;&#039; - ilość stron pamięci skonfigurowanych sprzętowo dla systemu operacyjnego w segmencie 0&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM MEGA&#039;&#039;&#039; - obraz pamięci PROM (EPROM) w pamięci MEGA, który zastąpi domyślny&lt;br /&gt;
* &#039;&#039;&#039;Wstępnie ładowany program&#039;&#039;&#039; - program, który zostanie automatycznie załadowany do segmentu 0 po włączeniu maszyny&lt;br /&gt;
&lt;br /&gt;
== Wejście/wyjście ==&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-wewy.png|thumb|500px|Konfiguracja: kanały i urządzenia maszyny]]&lt;br /&gt;
&lt;br /&gt;
W tej zakładce konfigurowane są kanały wejścia/wyjścia i podłączone do nich urządzenia:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dodaj kanał&#039;&#039;&#039; - dodanie nowego kanału wejścia/wyjścia (max 16)&lt;br /&gt;
* &#039;&#039;&#039;Dodaj urządzenie&#039;&#039;&#039; - dodanie nowego kurządzenia w kanale (ich ilość zależy od kanału)&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuń wybrane z listy urządzenie lub kanał&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodając nowy kanał należy wybrać jego numer oraz typ. Aktualnie obsługiwane kanały:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Znakowy&#039;&#039;&#039; - kanał znakowy minikomputera, do podłączanie wolnych urządzeń znakowych&lt;br /&gt;
* &#039;&#039;&#039;MULTIX&#039;&#039;&#039; - procesor peryferynjy MULTIX Amepolu&lt;br /&gt;
* &#039;&#039;&#039;Tester we/wy&#039;&#039;&#039; - do testów komunikacji, używany przez testy emulatora&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie urządzeń do kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodanie nowego urządzenia wymaga wybrania jego numeru i typu, oraz ustalenia opcji, które są zależne od typu urządzenia. Dostępne typy urządzeń zależą od tego, w jakim kanale jest ono dodawane.&lt;br /&gt;
&lt;br /&gt;
==== Terminal ====&lt;br /&gt;
&lt;br /&gt;
Dostępny w kanale znakowym i MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; Terminal w MULTIX-ie nie działa w obecnej wersji emulatora.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Port TCP&#039;&#039;&#039; - port TCP na którym słucha emulacja terminala.&lt;br /&gt;
* &#039;&#039;&#039;Prędkość&#039;&#039;&#039; - emulowana prędkość działania emulacji terminala. Domyślnie 9600 bodów.&lt;br /&gt;
&lt;br /&gt;
==== Pamięć SP45DE ====&lt;br /&gt;
&lt;br /&gt;
Dostępna tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obrazy dyskietek&#039;&#039;&#039; - pliki zawierające obrazy dyskietek 8&amp;quot; o geometrii: 1 strona (głowica), 77 ścieżek, 26 sektorów na ścieżkę, 128 bajtów na sektor = 256256 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Zegar czasu rzeczywistego Amepolu ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM&#039;&#039;&#039; - alternatywna zawartość pamięci PROM zegara (256 bajtów). Zastępuje domyślną. &lt;br /&gt;
&lt;br /&gt;
==== Winchester ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz dysku&#039;&#039;&#039; - plik zawierający obraz dysku o geometrii: 4 strony (głowice), 615 ścieżek, 16 sektorów na ścieżkę, 512 bajtów na sektor = 20152320 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Napęd dyskietek 5.25&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; aktualnie nie obsługiwany.&lt;br /&gt;
&lt;br /&gt;
= Ogólne =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-ogolne.png|thumb|500px|Konfiguracja: Ogólne]]&lt;br /&gt;
&lt;br /&gt;
== Emulacja ==&lt;br /&gt;
&lt;br /&gt;
Ustawienia dotyczące sposobu realizacji emulacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Emulowane czasy&#039;&#039;&#039; określają to, jak wiernie emulator oddaje prawdziwą MERĘ-400 jeśli chodzi o prędkość pracy systemu. Możliwe są trzy poziomy:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; - Aktywne są wszystkie czasy, które są zaimplementowane w emulatorze. EM400 oddaje MERĘ-400 tak wiernie, jak tylko potrafi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum&#039;&#039;&#039; - Aktywne są tylko czasy, które są wymagane do poprawnego działania oprogramowania MERY-400. Ogólna interakcja z emulowanym minikomputerem jest znacznie szybsza, niż z prawdziwym sprzętem.&lt;br /&gt;
* &#039;&#039;&#039;Żadne&#039;&#039;&#039; - &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; w tym trybie oprogramowanie może działać niepoprawnie z wielu przyczyn. Emulacja działa tak szybko, jak to możliwe. Nie są zachowane niemal żadne czasy działania prwawdziwego komputera. Przeznaczony do testowania, debugowania i w innych, szczególnych przypadkach.&lt;br /&gt;
&lt;br /&gt;
W miarę rozwoju emulatora w opcji &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; uwzględnianych będzie coraz więcej aspektów pracy MERY-400.&lt;br /&gt;
&lt;br /&gt;
== Interfejs użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Język&#039;&#039;&#039; - język interfejsu. Pozwala wybrać jeden z języków lub honorować ustawienia systemu.&lt;br /&gt;
* &#039;&#039;&#039;Uruchom z włączoną maszyną&#039;&#039;&#039; - emulator uruchamia się z wybraną maszyną i włączonym zasilaniem (nie trzeba przekręcać kluczyka, żeby włączyć maszynę)&lt;br /&gt;
* &#039;&#039;&#039;Motyw pulpitu&#039;&#039;&#039; - GUI EM400 używa własnego motywu. Wyłączenie opcji powoduje, że używany jest motyw systemowy.&lt;br /&gt;
* &#039;&#039;&#039;Mały pulpit techniczny&#039;&#039;&#039; - grafika pulpitu technicznego skadrowana jest do interaktywnych elementów.&lt;br /&gt;
* &#039;&#039;&#039;Terminal&#039;&#039;&#039; - określa, czy emulator używa wbudowanej emulacji terminala, czy zewnętrznego terminala konfigurowanego w następnej opcji&lt;br /&gt;
* &#039;&#039;&#039;Polecenie terminala&#039;&#039;&#039; - polecenie, które uruchamiane jest, gdy użytkownik otwiera terminal, a opcja &#039;&#039;&#039;Terminal&#039;&#039;&#039; powyżej ustawiona jest na &#039;&#039;&#039;Zewnętrzny&#039;&#039;&#039;. Pomocnicze polecenie &#039;&#039;&#039;emterm&#039;&#039;&#039; instalowane jest wraz z emulatorem i zapewnia poprawne połączenie z emulatorem.&lt;br /&gt;
* &#039;&#039;&#039;Czcionka debugera&#039;&#039;&#039; - czcionka używana w interfejsie debugera&lt;br /&gt;
* &#039;&#039;&#039;Czcionka terminala&#039;&#039;&#039; - czcionka używana we wbudowanym terminalu&lt;br /&gt;
&lt;br /&gt;
= Dźwięk =&lt;br /&gt;
&lt;br /&gt;
Dźwięk w emulatorze to dwa osobne tory audio:&lt;br /&gt;
&lt;br /&gt;
* dźwięki interfejsu - pstrykanie kluczy, dźwięk pokrętła rejestrów, etc.&lt;br /&gt;
* dźwięk głośniczka CPU - generowany przez samą emulację&lt;br /&gt;
&lt;br /&gt;
== Dźwięki interfejsu ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność dźwięków interfejsu&lt;br /&gt;
* &#039;&#039;&#039;Uwielbiam gdy cewki piszczą&#039;&#039;&#039; - sprawdź sam ;-)&lt;br /&gt;
&lt;br /&gt;
== Głośniczek CPU ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wyjście dźwięku włączone&#039;&#039;&#039; - włączenie dźwięku CPU&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność głośniczka CPU&lt;br /&gt;
* &#039;&#039;&#039;Częstotliwość próbkowania&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Długość bufora&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Opóźnienie&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Podsystem audio&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Urządzenie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logowanie =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-logowanie.png|thumb|500px|Konfiguracja: Logowanie]]&lt;br /&gt;
&lt;br /&gt;
Umożliwia logowanie pracy emulatora do pliku.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logowanie włączone&#039;&#039;&#039; - aktywuje logowanie&lt;br /&gt;
* &#039;&#039;&#039;Komponenty&#039;&#039;&#039; - jakie komponenty emulacji zapisują swoje akcje do pliku logu&lt;br /&gt;
* &#039;&#039;&#039;Plik logu&#039;&#039;&#039; - plik, to którego log jest zapisywany&lt;br /&gt;
* &#039;&#039;&#039;Buforowanie liniowe&#039;&#039;&#039; - zapis do pliku odbywa się po każdej linii. W przeciwnym wypadku zapisy są buforowane do większych zapisów (wydajniejsze, ale można stracić fragment loga)&lt;br /&gt;
&lt;br /&gt;
Dostępne komponenty:&lt;br /&gt;
&lt;br /&gt;
* LIB - komunikaty biblioteki libem400&lt;br /&gt;
* APP - komunikaty aplikacji używającej biblioteki em400&lt;br /&gt;
* CRK5 - procesy i wywołania systemowe CROOK-5&lt;br /&gt;
* MEM - konfiguracja i zdarzenia w pamięci&lt;br /&gt;
* CPU - praca procesora &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; włączenie tej opcji loguje każdą wykonywaną instrukcję. Może to spowolnić emulację i generować pliki o rozmiarze wielu GB&lt;br /&gt;
* OP - szczegóły wybranych instrukcji CPU&lt;br /&gt;
* INT - przerwania&lt;br /&gt;
* IO - podsystem wejścia/wyjścia&lt;br /&gt;
* MX - MULTIX&lt;br /&gt;
* CCHR - kanał znakowy&lt;br /&gt;
* CMEM - kanał pamięciowy&lt;br /&gt;
* UZDAT - port szeregowy w kanale znakowym&lt;br /&gt;
* UZFX - kontroler stacji dysków SP45DE&lt;br /&gt;
* MECLO - zegar czasu rzeczywistego Amepolu&lt;br /&gt;
* TERM - terminal&lt;br /&gt;
* 9425 - dysk MERA 9425&lt;br /&gt;
* WNCH - dysk Winchester&lt;br /&gt;
* FLOP - stacja dysków&lt;br /&gt;
* PNCH - dziurkarka taśmy papierowej&lt;br /&gt;
* PNRD - czytnik taśmy papierowej&lt;br /&gt;
* TAPE - taśma magnetyczna&lt;br /&gt;
&lt;br /&gt;
= Plik konfiguracyjny =&lt;br /&gt;
&lt;br /&gt;
Konfiguracja określona w oknie ustawień emulatora zapisywana jest do tekstowego pliku konfiguracyjnego. EM400 odnajduje go w następujący sposób:&lt;br /&gt;
&lt;br /&gt;
# Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika &#039;&#039;&#039;-c&#039;&#039;&#039;), zostanie on użyty.&lt;br /&gt;
# Jeśli nie, domyślnie używany jest plik:&lt;br /&gt;
#* w systemach Linux, kolejno:&lt;br /&gt;
#** &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#** &#039;&#039;&#039;$HOME/.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#* w systemach Windows:&lt;br /&gt;
#** &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
# Jeśli plik konfiguracyjny nie istnieje, tworzony jest domyślny.&lt;br /&gt;
&lt;br /&gt;
Aktualny opis pliku konfiguracyjnego wraz z przykładami znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini tutaj]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3347</id>
		<title>EM400 - konfiguracja</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3347"/>
		<updated>2026-08-30T14:42:59Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Konfiguracja emulatora dostępna jest z menu &#039;&#039;&#039;Emulator &amp;amp;rarr; Ustawienia&#039;&#039;&#039; i zorganizowana jest w sekcje:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Maszyna&#039;&#039;&#039; - konfiguracje sprzętowe emulowanego komputera&lt;br /&gt;
# &#039;&#039;&#039;Ogólne&#039;&#039;&#039; - ustawienia emulacji i interfejsu użytkownika&lt;br /&gt;
# &#039;&#039;&#039;Dźwięk&#039;&#039;&#039; - ustawienia dźwięków interfejsu użytkownika i głośniczka CPU&lt;br /&gt;
# &#039;&#039;&#039;Logowanie&#039;&#039;&#039; - konfiguracja logowania&lt;br /&gt;
&lt;br /&gt;
= Maszyna =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-maszyna.png|thumb|500px|Konfiguracja: pamięć maszyny]]&lt;br /&gt;
&lt;br /&gt;
EM400 pozwala przygotować wiele konfiguracji minikomputera i przełączać się nimi w zależności od potrzeb.&lt;br /&gt;
&lt;br /&gt;
Przy pierwszym uruchomieniu, EM400 tworzy dwie domyślne maszyny:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MERA-400&#039;&#039;&#039; - prosta konfiguracja z dwoma modułami pamięci Elwro i stacją dysków SP45DE&lt;br /&gt;
* &#039;&#039;&#039;MX-16&#039;&#039;&#039; - przeznaczona do uruchamiania systemu operacyjnego CROOK-5, z pamięcią MEGA Amepolu, procesorem peryferyjnym MULTIX i dyskiem Winchester&lt;br /&gt;
&lt;br /&gt;
Zarządzanie maszynami umożliwiają następujące opcje:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aktywna maszyna&#039;&#039;&#039; - wybór aktualnie edytowanej konfiguracji minikomputera&lt;br /&gt;
* &#039;&#039;&#039;Dodaj...&#039;&#039;&#039; - dodawanie nowej maszyny. Otwiera okienko pozwalające wpisać jej nazwę. Identyfikator maszyny wywodzony jest z podanej nazwy&lt;br /&gt;
* &#039;&#039;&#039;Powiel...&#039;&#039;&#039; - robi kopię aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuwa aktualnie wybraną maszynę&lt;br /&gt;
* &#039;&#039;&#039;Nazwa&#039;&#039;&#039; - nazwa aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Identyfikator&#039;&#039;&#039; - identyfikator wybranej maszyny. Używa się go jako parametr opci &#039;&#039;&#039;-m&#039;&#039;&#039; przy wywoływaniu emulatora z linii poleceń&lt;br /&gt;
&lt;br /&gt;
Konfiguracja maszyny podzielona jest na trzy zakładki opisane w kolejnych sekcjach.&lt;br /&gt;
&lt;br /&gt;
== Procesor ==&lt;br /&gt;
&lt;br /&gt;
Można zmienić następujące właściwości procesora&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Jednostka zmiennoprzecinkowa (AWP)&#039;&#039;&#039; - czy zainstalowany jest Arytmometr Wielokrotnej Precyzji&lt;br /&gt;
* &#039;&#039;&#039;Modyfikacje procesora&#039;&#039;&#039; - czy obecne są modyfikacje procesora wprowadzone w MX-16&lt;br /&gt;
* &#039;&#039;&#039;Instrukcje we/wy niedozwolone w trybie użytkownika&#039;&#039;&#039; - czy instrukcje IN oraz OU są niedozwolone w trybie użytkownika&lt;br /&gt;
* &#039;&#039;&#039;Zatrzymaj przy braku pamięci&#039;&#039;&#039; - czy procesor zatrzymuje się, jeśli w segmencie pamięci dla systemu operacyjnego nastąpiło odwołanie do nieskonfigurowanej pamięci&lt;br /&gt;
* &#039;&#039;&#039;Okres zegara&#039;&#039;&#039; - co jaki czas zgłaszane są przerwania zegarowe (z wewnętrznego timera CPU)&lt;br /&gt;
&lt;br /&gt;
== Pamięć ==&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-pamiec.png|thumb|500px|Konfiguracja: pamięć maszyny]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Moduły Elwro&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci ferrytowej Elwro (po 32 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Moduły MEGA&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci półprzewodnikowej MEGA Amepolu (po 64 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Strony systemowe (sprzętowe)&#039;&#039;&#039; - ilość stron pamięci skonfigurowanych sprzętowo dla systemu operacyjnego w segmencie 0&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM MEGA&#039;&#039;&#039; - obraz pamięci PROM (EPROM) w pamięci MEGA, który zastąpi domyślny&lt;br /&gt;
* &#039;&#039;&#039;Wstępnie ładowany program&#039;&#039;&#039; - program, który zostanie automatycznie załadowany do segmentu 0 po włączeniu maszyny&lt;br /&gt;
&lt;br /&gt;
== Wejście/wyjście ==&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-wewy.png|thumb|500px|Konfiguracja: kanały i urządzenia maszyny]]&lt;br /&gt;
&lt;br /&gt;
W tej zakładce konfigurowane są kanały wejścia/wyjścia i podłączone do nich urządzenia:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dodaj kanał&#039;&#039;&#039; - dodanie nowego kanału wejścia/wyjścia (max 16)&lt;br /&gt;
* &#039;&#039;&#039;Dodaj urządzenie&#039;&#039;&#039; - dodanie nowego kurządzenia w kanale (ich ilość zależy od kanału)&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuń wybrane z listy urządzenie lub kanał&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodając nowy kanał należy wybrać jego numer oraz typ. Aktualnie obsługiwane kanały:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Znakowy&#039;&#039;&#039; - kanał znakowy minikomputera, do podłączanie wolnych urządzeń znakowych&lt;br /&gt;
* &#039;&#039;&#039;MULTIX&#039;&#039;&#039; - procesor peryferynjy MULTIX Amepolu&lt;br /&gt;
* &#039;&#039;&#039;Tester we/wy&#039;&#039;&#039; - do testów komunikacji, używany przez testy emulatora&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie urządzeń do kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodanie nowego urządzenia wymaga wybrania jego numeru i typu, oraz ustalenia opcji, które są zależne od typu urządzenia. Dostępne typy urządzeń zależą od tego, w jakim kanale jest ono dodawane.&lt;br /&gt;
&lt;br /&gt;
==== Terminal ====&lt;br /&gt;
&lt;br /&gt;
Dostępny w kanale znakowym i MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; Terminal w MULTIX-ie nie działa w obecnej wersji emulatora.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Port TCP&#039;&#039;&#039; - port TCP na którym słucha emulacja terminala.&lt;br /&gt;
* &#039;&#039;&#039;Prędkość&#039;&#039;&#039; - emulowana prędkość działania emulacji terminala. Domyślnie 9600 bodów.&lt;br /&gt;
&lt;br /&gt;
==== Pamięć SP45DE ====&lt;br /&gt;
&lt;br /&gt;
Dostępna tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obrazy dyskietek&#039;&#039;&#039; - pliki zawierające obrazy dyskietek 8&amp;quot; o geometrii: 1 strona (głowica), 77 ścieżek, 26 sektorów na ścieżkę, 128 bajtów na sektor = 256256 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Zegar czasu rzeczywistego Amepolu ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM&#039;&#039;&#039; - alternatywna zawartość pamięci PROM zegara (256 bajtów). Zastępuje domyślną. &lt;br /&gt;
&lt;br /&gt;
==== Winchester ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz dysku&#039;&#039;&#039; - plik zawierający obraz dysku o geometrii: 4 strony (głowice), 615 ścieżek, 16 sektorów na ścieżkę, 512 bajtów na sektor = 20152320 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Napęd dyskietek 5.25&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; aktualnie nie obsługiwany.&lt;br /&gt;
&lt;br /&gt;
= Ogólne =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-ogolne.png|thumb|500px|Konfiguracja: Ogólne]]&lt;br /&gt;
&lt;br /&gt;
== Emulacja ==&lt;br /&gt;
&lt;br /&gt;
Ustawienia dotyczące sposobu realizacji emulacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Emulowane czasy&#039;&#039;&#039; określają to, jak wiernie emulator oddaje prawdziwą MERĘ-400 jeśli chodzi o prędkość pracy systemu. Możliwe są trzy poziomy:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; - Aktywne są wszystkie czasy, które są zaimplementowane w emulatorze. EM400 oddaje MERĘ-400 tak wiernie, jak tylko potrafi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum&#039;&#039;&#039; - Aktywne są tylko czasy, które są wymagane do poprawnego działania oprogramowania MERY-400. Ogólna interakcja z emulowanym minikomputerem jest znacznie szybsza, niż z prawdziwym sprzętem.&lt;br /&gt;
* &#039;&#039;&#039;Żadne&#039;&#039;&#039; - &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; w tym trybie oprogramowanie może działać niepoprawnie z wielu przyczyn. Emulacja działa tak szybko, jak to możliwe. Nie są zachowane niemal żadne czasy działania prwawdziwego komputera. Przeznaczony do testowania, debugowania i w innych, szczególnych przypadkach.&lt;br /&gt;
&lt;br /&gt;
W miarę rozwoju emulatora w opcji &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; uwzględnianych będzie coraz więcej aspektów pracy MERY-400.&lt;br /&gt;
&lt;br /&gt;
== Interfejs użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Język&#039;&#039;&#039; - język interfejsu. Pozwala wybrać jeden z języków lub honorować ustawienia systemu.&lt;br /&gt;
* &#039;&#039;&#039;Uruchom z włączoną maszyną&#039;&#039;&#039; - emulator uruchamia się z wybraną maszyną i włączonym zasilaniem (nie trzeba przekręcać kluczyka, żeby włączyć maszynę)&lt;br /&gt;
* &#039;&#039;&#039;Motyw pulpitu&#039;&#039;&#039; - GUI EM400 używa własnego motywu. Wyłączenie opcji powoduje, że używany jest motyw systemowy.&lt;br /&gt;
* &#039;&#039;&#039;Mały pulpit techniczny&#039;&#039;&#039; - grafika pulpitu technicznego skadrowana jest do interaktywnych elementów.&lt;br /&gt;
* &#039;&#039;&#039;Terminal&#039;&#039;&#039; - określa, czy emulator używa wbudowanej emulacji terminala, czy zewnętrznego terminala konfigurowanego w następnej opcji&lt;br /&gt;
* &#039;&#039;&#039;Polecenie terminala&#039;&#039;&#039; - polecenie, które uruchamiane jest, gdy użytkownik otwiera terminal, a opcja &#039;&#039;&#039;Terminal&#039;&#039;&#039; powyżej ustawiona jest na &#039;&#039;&#039;Zewnętrzny&#039;&#039;&#039;. Pomocnicze polecenie &#039;&#039;&#039;emterm&#039;&#039;&#039; instalowane jest wraz z emulatorem i zapewnia poprawne połączenie z emulatorem.&lt;br /&gt;
* &#039;&#039;&#039;Czcionka debugera&#039;&#039;&#039; - czcionka używana w interfejsie debugera&lt;br /&gt;
* &#039;&#039;&#039;Czcionka terminala&#039;&#039;&#039; - czcionka używana we wbudowanym terminalu&lt;br /&gt;
&lt;br /&gt;
= Dźwięk =&lt;br /&gt;
&lt;br /&gt;
Dźwięk w emulatorze to dwa osobne tory audio:&lt;br /&gt;
&lt;br /&gt;
* dźwięki interfejsu - pstrykanie kluczy, dźwięk pokrętła rejestrów, etc.&lt;br /&gt;
* dźwięk głośniczka CPU - generowany przez samą emulację&lt;br /&gt;
&lt;br /&gt;
== Dźwięki interfejsu ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność dźwięków interfejsu&lt;br /&gt;
* &#039;&#039;&#039;Uwielbiam gdy cewki piszczą&#039;&#039;&#039; - sprawdź sam ;-)&lt;br /&gt;
&lt;br /&gt;
== Głośniczek CPU ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wyjście dźwięku włączone&#039;&#039;&#039; - włączenie dźwięku CPU&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność głośniczka CPU&lt;br /&gt;
* &#039;&#039;&#039;Częstotliwość próbkowania&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Długość bufora&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Opóźnienie&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Podsystem audio&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Urządzenie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logowanie =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-logowanie.png|thumb|500px|Konfiguracja: Logowanie]]&lt;br /&gt;
&lt;br /&gt;
Umożliwia logowanie pracy emulatora do pliku.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logowanie włączone&#039;&#039;&#039; - aktywuje logowanie&lt;br /&gt;
* &#039;&#039;&#039;Komponenty&#039;&#039;&#039; - jakie komponenty emulacji zapisują swoje akcje do pliku logu&lt;br /&gt;
* &#039;&#039;&#039;Plik logu&#039;&#039;&#039; - plik, to którego log jest zapisywany&lt;br /&gt;
* &#039;&#039;&#039;Buforowanie liniowe&#039;&#039;&#039; - zapis do pliku odbywa się po każdej linii. W przeciwnym wypadku zapisy są buforowane do większych zapisów (wydajniejsze, ale można stracić fragment loga)&lt;br /&gt;
&lt;br /&gt;
Dostępne komponenty:&lt;br /&gt;
&lt;br /&gt;
* LIB - komunikaty biblioteki libem400&lt;br /&gt;
* APP - komunikaty aplikacji używającej biblioteki em400&lt;br /&gt;
* CRK5 - procesy i wywołania systemowe CROOK-5&lt;br /&gt;
* MEM - konfiguracja i zdarzenia w pamięci&lt;br /&gt;
* CPU - praca procesora &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; włączenie tej opcji loguje każdą wykonywaną instrukcję. Może to spowolnić emulację i generować pliki o rozmiarze wielu GB&lt;br /&gt;
* OP - szczegóły wybranych instrukcji CPU&lt;br /&gt;
* INT - przerwania&lt;br /&gt;
* IO - podsystem wejścia/wyjścia&lt;br /&gt;
* MX - MULTIX&lt;br /&gt;
* CCHR - kanał znakowy&lt;br /&gt;
* CMEM - kanał pamięciowy&lt;br /&gt;
* UZDAT - port szeregowy w kanale znakowym&lt;br /&gt;
* UZFX - kontroler stacji dysków SP45DE&lt;br /&gt;
* MECLO - zegar czasu rzeczywistego Amepolu&lt;br /&gt;
* TERM - terminal&lt;br /&gt;
* 9425 - dysk MERA 9425&lt;br /&gt;
* WNCH - dysk Winchester&lt;br /&gt;
* FLOP - stacja dysków&lt;br /&gt;
* PNCH - dziurkarka taśmy papierowej&lt;br /&gt;
* PNRD - czytnik taśmy papierowej&lt;br /&gt;
* TAPE - taśma magnetyczna&lt;br /&gt;
&lt;br /&gt;
= Plik konfiguracyjny =&lt;br /&gt;
&lt;br /&gt;
Konfiguracja określona w oknie ustawień emulatora zapisywana jest do tekstowego pliku konfiguracyjnego. EM400 odnajduje go w następujący sposób:&lt;br /&gt;
&lt;br /&gt;
# Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika &#039;&#039;&#039;-c&#039;&#039;&#039;), zostanie on użyty.&lt;br /&gt;
# Jeśli nie, domyślnie używany jest plik:&lt;br /&gt;
#* w systemach Linux, kolejno:&lt;br /&gt;
#** &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#** &#039;&#039;&#039;$HOME/.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#* w systemach Windows:&lt;br /&gt;
#** &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
# Jeśli plik konfiguracyjny nie istnieje, tworzony jest domyślny.&lt;br /&gt;
&lt;br /&gt;
Aktualny opis pliku konfiguracyjnego wraz z przykładami znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini tutaj]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=Plik:Konfiguracja-logowanie.png&amp;diff=3346</id>
		<title>Plik:Konfiguracja-logowanie.png</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=Plik:Konfiguracja-logowanie.png&amp;diff=3346"/>
		<updated>2026-08-30T14:42:41Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=Plik:Konfiguracja-ogolne.png&amp;diff=3345</id>
		<title>Plik:Konfiguracja-ogolne.png</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=Plik:Konfiguracja-ogolne.png&amp;diff=3345"/>
		<updated>2026-08-30T14:42:02Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3344</id>
		<title>EM400 - konfiguracja</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3344"/>
		<updated>2026-08-30T14:41:43Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Konfiguracja emulatora dostępna jest z menu &#039;&#039;&#039;Emulator &amp;amp;rarr; Ustawienia&#039;&#039;&#039; i zorganizowana jest w sekcje:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Maszyna&#039;&#039;&#039; - konfiguracje sprzętowe emulowanego komputera&lt;br /&gt;
# &#039;&#039;&#039;Ogólne&#039;&#039;&#039; - ustawienia emulacji i interfejsu użytkownika&lt;br /&gt;
# &#039;&#039;&#039;Dźwięk&#039;&#039;&#039; - ustawienia dźwięków interfejsu użytkownika i głośniczka CPU&lt;br /&gt;
# &#039;&#039;&#039;Logowanie&#039;&#039;&#039; - konfiguracja logowania&lt;br /&gt;
&lt;br /&gt;
= Maszyna =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-maszyna.png|thumb|500px|Konfiguracja: pamięć maszyny]]&lt;br /&gt;
&lt;br /&gt;
EM400 pozwala przygotować wiele konfiguracji minikomputera i przełączać się nimi w zależności od potrzeb.&lt;br /&gt;
&lt;br /&gt;
Przy pierwszym uruchomieniu, EM400 tworzy dwie domyślne maszyny:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MERA-400&#039;&#039;&#039; - prosta konfiguracja z dwoma modułami pamięci Elwro i stacją dysków SP45DE&lt;br /&gt;
* &#039;&#039;&#039;MX-16&#039;&#039;&#039; - przeznaczona do uruchamiania systemu operacyjnego CROOK-5, z pamięcią MEGA Amepolu, procesorem peryferyjnym MULTIX i dyskiem Winchester&lt;br /&gt;
&lt;br /&gt;
Zarządzanie maszynami umożliwiają następujące opcje:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aktywna maszyna&#039;&#039;&#039; - wybór aktualnie edytowanej konfiguracji minikomputera&lt;br /&gt;
* &#039;&#039;&#039;Dodaj...&#039;&#039;&#039; - dodawanie nowej maszyny. Otwiera okienko pozwalające wpisać jej nazwę. Identyfikator maszyny wywodzony jest z podanej nazwy&lt;br /&gt;
* &#039;&#039;&#039;Powiel...&#039;&#039;&#039; - robi kopię aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuwa aktualnie wybraną maszynę&lt;br /&gt;
* &#039;&#039;&#039;Nazwa&#039;&#039;&#039; - nazwa aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Identyfikator&#039;&#039;&#039; - identyfikator wybranej maszyny. Używa się go jako parametr opci &#039;&#039;&#039;-m&#039;&#039;&#039; przy wywoływaniu emulatora z linii poleceń&lt;br /&gt;
&lt;br /&gt;
Konfiguracja maszyny podzielona jest na trzy zakładki opisane w kolejnych sekcjach.&lt;br /&gt;
&lt;br /&gt;
== Procesor ==&lt;br /&gt;
&lt;br /&gt;
Można zmienić następujące właściwości procesora&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Jednostka zmiennoprzecinkowa (AWP)&#039;&#039;&#039; - czy zainstalowany jest Arytmometr Wielokrotnej Precyzji&lt;br /&gt;
* &#039;&#039;&#039;Modyfikacje procesora&#039;&#039;&#039; - czy obecne są modyfikacje procesora wprowadzone w MX-16&lt;br /&gt;
* &#039;&#039;&#039;Instrukcje we/wy niedozwolone w trybie użytkownika&#039;&#039;&#039; - czy instrukcje IN oraz OU są niedozwolone w trybie użytkownika&lt;br /&gt;
* &#039;&#039;&#039;Zatrzymaj przy braku pamięci&#039;&#039;&#039; - czy procesor zatrzymuje się, jeśli w segmencie pamięci dla systemu operacyjnego nastąpiło odwołanie do nieskonfigurowanej pamięci&lt;br /&gt;
* &#039;&#039;&#039;Okres zegara&#039;&#039;&#039; - co jaki czas zgłaszane są przerwania zegarowe (z wewnętrznego timera CPU)&lt;br /&gt;
&lt;br /&gt;
== Pamięć ==&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-pamiec.png|thumb|500px|Konfiguracja: pamięć maszyny]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Moduły Elwro&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci ferrytowej Elwro (po 32 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Moduły MEGA&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci półprzewodnikowej MEGA Amepolu (po 64 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Strony systemowe (sprzętowe)&#039;&#039;&#039; - ilość stron pamięci skonfigurowanych sprzętowo dla systemu operacyjnego w segmencie 0&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM MEGA&#039;&#039;&#039; - obraz pamięci PROM (EPROM) w pamięci MEGA, który zastąpi domyślny&lt;br /&gt;
* &#039;&#039;&#039;Wstępnie ładowany program&#039;&#039;&#039; - program, który zostanie automatycznie załadowany do segmentu 0 po włączeniu maszyny&lt;br /&gt;
&lt;br /&gt;
== Wejście/wyjście ==&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-wewy.png|thumb|500px|Konfiguracja: kanały i urządzenia maszyny]]&lt;br /&gt;
&lt;br /&gt;
W tej zakładce konfigurowane są kanały wejścia/wyjścia i podłączone do nich urządzenia:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dodaj kanał&#039;&#039;&#039; - dodanie nowego kanału wejścia/wyjścia (max 16)&lt;br /&gt;
* &#039;&#039;&#039;Dodaj urządzenie&#039;&#039;&#039; - dodanie nowego kurządzenia w kanale (ich ilość zależy od kanału)&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuń wybrane z listy urządzenie lub kanał&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodając nowy kanał należy wybrać jego numer oraz typ. Aktualnie obsługiwane kanały:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Znakowy&#039;&#039;&#039; - kanał znakowy minikomputera, do podłączanie wolnych urządzeń znakowych&lt;br /&gt;
* &#039;&#039;&#039;MULTIX&#039;&#039;&#039; - procesor peryferynjy MULTIX Amepolu&lt;br /&gt;
* &#039;&#039;&#039;Tester we/wy&#039;&#039;&#039; - do testów komunikacji, używany przez testy emulatora&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie urządzeń do kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodanie nowego urządzenia wymaga wybrania jego numeru i typu, oraz ustalenia opcji, które są zależne od typu urządzenia. Dostępne typy urządzeń zależą od tego, w jakim kanale jest ono dodawane.&lt;br /&gt;
&lt;br /&gt;
==== Terminal ====&lt;br /&gt;
&lt;br /&gt;
Dostępny w kanale znakowym i MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; Terminal w MULTIX-ie nie działa w obecnej wersji emulatora.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Port TCP&#039;&#039;&#039; - port TCP na którym słucha emulacja terminala.&lt;br /&gt;
* &#039;&#039;&#039;Prędkość&#039;&#039;&#039; - emulowana prędkość działania emulacji terminala. Domyślnie 9600 bodów.&lt;br /&gt;
&lt;br /&gt;
==== Pamięć SP45DE ====&lt;br /&gt;
&lt;br /&gt;
Dostępna tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obrazy dyskietek&#039;&#039;&#039; - pliki zawierające obrazy dyskietek 8&amp;quot; o geometrii: 1 strona (głowica), 77 ścieżek, 26 sektorów na ścieżkę, 128 bajtów na sektor = 256256 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Zegar czasu rzeczywistego Amepolu ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM&#039;&#039;&#039; - alternatywna zawartość pamięci PROM zegara (256 bajtów). Zastępuje domyślną. &lt;br /&gt;
&lt;br /&gt;
==== Winchester ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz dysku&#039;&#039;&#039; - plik zawierający obraz dysku o geometrii: 4 strony (głowice), 615 ścieżek, 16 sektorów na ścieżkę, 512 bajtów na sektor = 20152320 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Napęd dyskietek 5.25&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; aktualnie nie obsługiwany.&lt;br /&gt;
&lt;br /&gt;
= Ogólne =&lt;br /&gt;
&lt;br /&gt;
== Emulacja ==&lt;br /&gt;
&lt;br /&gt;
Ustawienia dotyczące sposobu realizacji emulacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Emulowane czasy&#039;&#039;&#039; określają to, jak wiernie emulator oddaje prawdziwą MERĘ-400 jeśli chodzi o prędkość pracy systemu. Możliwe są trzy poziomy:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; - Aktywne są wszystkie czasy, które są zaimplementowane w emulatorze. EM400 oddaje MERĘ-400 tak wiernie, jak tylko potrafi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum&#039;&#039;&#039; - Aktywne są tylko czasy, które są wymagane do poprawnego działania oprogramowania MERY-400. Ogólna interakcja z emulowanym minikomputerem jest znacznie szybsza, niż z prawdziwym sprzętem.&lt;br /&gt;
* &#039;&#039;&#039;Żadne&#039;&#039;&#039; - &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; w tym trybie oprogramowanie może działać niepoprawnie z wielu przyczyn. Emulacja działa tak szybko, jak to możliwe. Nie są zachowane niemal żadne czasy działania prwawdziwego komputera. Przeznaczony do testowania, debugowania i w innych, szczególnych przypadkach.&lt;br /&gt;
&lt;br /&gt;
W miarę rozwoju emulatora w opcji &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; uwzględnianych będzie coraz więcej aspektów pracy MERY-400.&lt;br /&gt;
&lt;br /&gt;
== Interfejs użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Język&#039;&#039;&#039; - język interfejsu. Pozwala wybrać jeden z języków lub honorować ustawienia systemu.&lt;br /&gt;
* &#039;&#039;&#039;Uruchom z włączoną maszyną&#039;&#039;&#039; - emulator uruchamia się z wybraną maszyną i włączonym zasilaniem (nie trzeba przekręcać kluczyka, żeby włączyć maszynę)&lt;br /&gt;
* &#039;&#039;&#039;Motyw pulpitu&#039;&#039;&#039; - GUI EM400 używa własnego motywu. Wyłączenie opcji powoduje, że używany jest motyw systemowy.&lt;br /&gt;
* &#039;&#039;&#039;Mały pulpit techniczny&#039;&#039;&#039; - grafika pulpitu technicznego skadrowana jest do interaktywnych elementów.&lt;br /&gt;
* &#039;&#039;&#039;Terminal&#039;&#039;&#039; - określa, czy emulator używa wbudowanej emulacji terminala, czy zewnętrznego terminala konfigurowanego w następnej opcji&lt;br /&gt;
* &#039;&#039;&#039;Polecenie terminala&#039;&#039;&#039; - polecenie, które uruchamiane jest, gdy użytkownik otwiera terminal, a opcja &#039;&#039;&#039;Terminal&#039;&#039;&#039; powyżej ustawiona jest na &#039;&#039;&#039;Zewnętrzny&#039;&#039;&#039;. Pomocnicze polecenie &#039;&#039;&#039;emterm&#039;&#039;&#039; instalowane jest wraz z emulatorem i zapewnia poprawne połączenie z emulatorem.&lt;br /&gt;
* &#039;&#039;&#039;Czcionka debugera&#039;&#039;&#039; - czcionka używana w interfejsie debugera&lt;br /&gt;
* &#039;&#039;&#039;Czcionka terminala&#039;&#039;&#039; - czcionka używana we wbudowanym terminalu&lt;br /&gt;
&lt;br /&gt;
= Dźwięk =&lt;br /&gt;
&lt;br /&gt;
Dźwięk w emulatorze to dwa osobne tory audio:&lt;br /&gt;
&lt;br /&gt;
* dźwięki interfejsu - pstrykanie kluczy, dźwięk pokrętła rejestrów, etc.&lt;br /&gt;
* dźwięk głośniczka CPU - generowany przez samą emulację&lt;br /&gt;
&lt;br /&gt;
== Dźwięki interfejsu ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność dźwięków interfejsu&lt;br /&gt;
* &#039;&#039;&#039;Uwielbiam gdy cewki piszczą&#039;&#039;&#039; - sprawdź sam ;-)&lt;br /&gt;
&lt;br /&gt;
== Głośniczek CPU ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wyjście dźwięku włączone&#039;&#039;&#039; - włączenie dźwięku CPU&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność głośniczka CPU&lt;br /&gt;
* &#039;&#039;&#039;Częstotliwość próbkowania&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Długość bufora&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Opóźnienie&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Podsystem audio&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Urządzenie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logowanie =&lt;br /&gt;
&lt;br /&gt;
Umożliwia logowanie pracy emulatora do pliku.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logowanie włączone&#039;&#039;&#039; - aktywuje logowanie&lt;br /&gt;
* &#039;&#039;&#039;Komponenty&#039;&#039;&#039; - jakie komponenty emulacji zapisują swoje akcje do pliku logu&lt;br /&gt;
* &#039;&#039;&#039;Plik logu&#039;&#039;&#039; - plik, to którego log jest zapisywany&lt;br /&gt;
* &#039;&#039;&#039;Buforowanie liniowe&#039;&#039;&#039; - zapis do pliku odbywa się po każdej linii. W przeciwnym wypadku zapisy są buforowane do większych zapisów (wydajniejsze, ale można stracić fragment loga)&lt;br /&gt;
&lt;br /&gt;
Dostępne komponenty:&lt;br /&gt;
&lt;br /&gt;
* LIB - komunikaty biblioteki libem400&lt;br /&gt;
* APP - komunikaty aplikacji używającej biblioteki em400&lt;br /&gt;
* CRK5 - procesy i wywołania systemowe CROOK-5&lt;br /&gt;
* MEM - konfiguracja i zdarzenia w pamięci&lt;br /&gt;
* CPU - praca procesora &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; włączenie tej opcji loguje każdą wykonywaną instrukcję. Może to spowolnić emulację i generować pliki o rozmiarze wielu GB&lt;br /&gt;
* OP - szczegóły wybranych instrukcji CPU&lt;br /&gt;
* INT - przerwania&lt;br /&gt;
* IO - podsystem wejścia/wyjścia&lt;br /&gt;
* MX - MULTIX&lt;br /&gt;
* CCHR - kanał znakowy&lt;br /&gt;
* CMEM - kanał pamięciowy&lt;br /&gt;
* UZDAT - port szeregowy w kanale znakowym&lt;br /&gt;
* UZFX - kontroler stacji dysków SP45DE&lt;br /&gt;
* MECLO - zegar czasu rzeczywistego Amepolu&lt;br /&gt;
* TERM - terminal&lt;br /&gt;
* 9425 - dysk MERA 9425&lt;br /&gt;
* WNCH - dysk Winchester&lt;br /&gt;
* FLOP - stacja dysków&lt;br /&gt;
* PNCH - dziurkarka taśmy papierowej&lt;br /&gt;
* PNRD - czytnik taśmy papierowej&lt;br /&gt;
* TAPE - taśma magnetyczna&lt;br /&gt;
&lt;br /&gt;
= Plik konfiguracyjny =&lt;br /&gt;
&lt;br /&gt;
Konfiguracja określona w oknie ustawień emulatora zapisywana jest do tekstowego pliku konfiguracyjnego. EM400 odnajduje go w następujący sposób:&lt;br /&gt;
&lt;br /&gt;
# Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika &#039;&#039;&#039;-c&#039;&#039;&#039;), zostanie on użyty.&lt;br /&gt;
# Jeśli nie, domyślnie używany jest plik:&lt;br /&gt;
#* w systemach Linux, kolejno:&lt;br /&gt;
#** &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#** &#039;&#039;&#039;$HOME/.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#* w systemach Windows:&lt;br /&gt;
#** &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
# Jeśli plik konfiguracyjny nie istnieje, tworzony jest domyślny.&lt;br /&gt;
&lt;br /&gt;
Aktualny opis pliku konfiguracyjnego wraz z przykładami znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini tutaj]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=Plik:Konfiguracja-wewy.png&amp;diff=3343</id>
		<title>Plik:Konfiguracja-wewy.png</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=Plik:Konfiguracja-wewy.png&amp;diff=3343"/>
		<updated>2026-08-30T14:41:18Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=Plik:Konfiguracja-pamiec.png&amp;diff=3342</id>
		<title>Plik:Konfiguracja-pamiec.png</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=Plik:Konfiguracja-pamiec.png&amp;diff=3342"/>
		<updated>2026-08-30T14:40:22Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3341</id>
		<title>EM400 - konfiguracja</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3341"/>
		<updated>2026-08-30T14:40:08Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Konfiguracja emulatora dostępna jest z menu &#039;&#039;&#039;Emulator &amp;amp;rarr; Ustawienia&#039;&#039;&#039; i zorganizowana jest w sekcje:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Maszyna&#039;&#039;&#039; - konfiguracje sprzętowe emulowanego komputera&lt;br /&gt;
# &#039;&#039;&#039;Ogólne&#039;&#039;&#039; - ustawienia emulacji i interfejsu użytkownika&lt;br /&gt;
# &#039;&#039;&#039;Dźwięk&#039;&#039;&#039; - ustawienia dźwięków interfejsu użytkownika i głośniczka CPU&lt;br /&gt;
# &#039;&#039;&#039;Logowanie&#039;&#039;&#039; - konfiguracja logowania&lt;br /&gt;
&lt;br /&gt;
= Maszyna =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-maszyna.png|thumb|500px|Konfiguracja: maszyna]]&lt;br /&gt;
&lt;br /&gt;
EM400 pozwala przygotować wiele konfiguracji minikomputera i przełączać się nimi w zależności od potrzeb.&lt;br /&gt;
&lt;br /&gt;
Przy pierwszym uruchomieniu, EM400 tworzy dwie domyślne maszyny:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MERA-400&#039;&#039;&#039; - prosta konfiguracja z dwoma modułami pamięci Elwro i stacją dysków SP45DE&lt;br /&gt;
* &#039;&#039;&#039;MX-16&#039;&#039;&#039; - przeznaczona do uruchamiania systemu operacyjnego CROOK-5, z pamięcią MEGA Amepolu, procesorem peryferyjnym MULTIX i dyskiem Winchester&lt;br /&gt;
&lt;br /&gt;
Zarządzanie maszynami umożliwiają następujące opcje:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aktywna maszyna&#039;&#039;&#039; - wybór aktualnie edytowanej konfiguracji minikomputera&lt;br /&gt;
* &#039;&#039;&#039;Dodaj...&#039;&#039;&#039; - dodawanie nowej maszyny. Otwiera okienko pozwalające wpisać jej nazwę. Identyfikator maszyny wywodzony jest z podanej nazwy&lt;br /&gt;
* &#039;&#039;&#039;Powiel...&#039;&#039;&#039; - robi kopię aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuwa aktualnie wybraną maszynę&lt;br /&gt;
* &#039;&#039;&#039;Nazwa&#039;&#039;&#039; - nazwa aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Identyfikator&#039;&#039;&#039; - identyfikator wybranej maszyny. Używa się go jako parametr opci &#039;&#039;&#039;-m&#039;&#039;&#039; przy wywoływaniu emulatora z linii poleceń&lt;br /&gt;
&lt;br /&gt;
Konfiguracja maszyny podzielona jest na trzy zakładki opisane w kolejnych sekcjach.&lt;br /&gt;
&lt;br /&gt;
== Procesor ==&lt;br /&gt;
&lt;br /&gt;
Można zmienić następujące właściwości procesora&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Jednostka zmiennoprzecinkowa (AWP)&#039;&#039;&#039; - czy zainstalowany jest Arytmometr Wielokrotnej Precyzji&lt;br /&gt;
* &#039;&#039;&#039;Modyfikacje procesora&#039;&#039;&#039; - czy obecne są modyfikacje procesora wprowadzone w MX-16&lt;br /&gt;
* &#039;&#039;&#039;Instrukcje we/wy niedozwolone w trybie użytkownika&#039;&#039;&#039; - czy instrukcje IN oraz OU są niedozwolone w trybie użytkownika&lt;br /&gt;
* &#039;&#039;&#039;Zatrzymaj przy braku pamięci&#039;&#039;&#039; - czy procesor zatrzymuje się, jeśli w segmencie pamięci dla systemu operacyjnego nastąpiło odwołanie do nieskonfigurowanej pamięci&lt;br /&gt;
* &#039;&#039;&#039;Okres zegara&#039;&#039;&#039; - co jaki czas zgłaszane są przerwania zegarowe (z wewnętrznego timera CPU)&lt;br /&gt;
&lt;br /&gt;
== Pamięć ==&lt;br /&gt;
[[File:Konfiguracja-pamiec.png|thumb|500px|Konfiguracja: pamięć maszyny]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Moduły Elwro&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci ferrytowej Elwro (po 32 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Moduły MEGA&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci półprzewodnikowej MEGA Amepolu (po 64 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Strony systemowe (sprzętowe)&#039;&#039;&#039; - ilość stron pamięci skonfigurowanych sprzętowo dla systemu operacyjnego w segmencie 0&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM MEGA&#039;&#039;&#039; - obraz pamięci PROM (EPROM) w pamięci MEGA, który zastąpi domyślny&lt;br /&gt;
* &#039;&#039;&#039;Wstępnie ładowany program&#039;&#039;&#039; - program, który zostanie automatycznie załadowany do segmentu 0 po włączeniu maszyny&lt;br /&gt;
&lt;br /&gt;
== Wejście/wyjście ==&lt;br /&gt;
&lt;br /&gt;
W tej zakładce konfigurowane są kanały wejścia/wyjścia i podłączone do nich urządzenia:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dodaj kanał&#039;&#039;&#039; - dodanie nowego kanału wejścia/wyjścia (max 16)&lt;br /&gt;
* &#039;&#039;&#039;Dodaj urządzenie&#039;&#039;&#039; - dodanie nowego kurządzenia w kanale (ich ilość zależy od kanału)&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuń wybrane z listy urządzenie lub kanał&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodając nowy kanał należy wybrać jego numer oraz typ. Aktualnie obsługiwane kanały:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Znakowy&#039;&#039;&#039; - kanał znakowy minikomputera, do podłączanie wolnych urządzeń znakowych&lt;br /&gt;
* &#039;&#039;&#039;MULTIX&#039;&#039;&#039; - procesor peryferynjy MULTIX Amepolu&lt;br /&gt;
* &#039;&#039;&#039;Tester we/wy&#039;&#039;&#039; - do testów komunikacji, używany przez testy emulatora&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie urządzeń do kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodanie nowego urządzenia wymaga wybrania jego numeru i typu, oraz ustalenia opcji, które są zależne od typu urządzenia. Dostępne typy urządzeń zależą od tego, w jakim kanale jest ono dodawane.&lt;br /&gt;
&lt;br /&gt;
==== Terminal ====&lt;br /&gt;
&lt;br /&gt;
Dostępny w kanale znakowym i MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; Terminal w MULTIX-ie nie działa w obecnej wersji emulatora.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Port TCP&#039;&#039;&#039; - port TCP na którym słucha emulacja terminala.&lt;br /&gt;
* &#039;&#039;&#039;Prędkość&#039;&#039;&#039; - emulowana prędkość działania emulacji terminala. Domyślnie 9600 bodów.&lt;br /&gt;
&lt;br /&gt;
==== Pamięć SP45DE ====&lt;br /&gt;
&lt;br /&gt;
Dostępna tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obrazy dyskietek&#039;&#039;&#039; - pliki zawierające obrazy dyskietek 8&amp;quot; o geometrii: 1 strona (głowica), 77 ścieżek, 26 sektorów na ścieżkę, 128 bajtów na sektor = 256256 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Zegar czasu rzeczywistego Amepolu ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM&#039;&#039;&#039; - alternatywna zawartość pamięci PROM zegara (256 bajtów). Zastępuje domyślną. &lt;br /&gt;
&lt;br /&gt;
==== Winchester ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz dysku&#039;&#039;&#039; - plik zawierający obraz dysku o geometrii: 4 strony (głowice), 615 ścieżek, 16 sektorów na ścieżkę, 512 bajtów na sektor = 20152320 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Napęd dyskietek 5.25&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; aktualnie nie obsługiwany.&lt;br /&gt;
&lt;br /&gt;
= Ogólne =&lt;br /&gt;
&lt;br /&gt;
== Emulacja ==&lt;br /&gt;
&lt;br /&gt;
Ustawienia dotyczące sposobu realizacji emulacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Emulowane czasy&#039;&#039;&#039; określają to, jak wiernie emulator oddaje prawdziwą MERĘ-400 jeśli chodzi o prędkość pracy systemu. Możliwe są trzy poziomy:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; - Aktywne są wszystkie czasy, które są zaimplementowane w emulatorze. EM400 oddaje MERĘ-400 tak wiernie, jak tylko potrafi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum&#039;&#039;&#039; - Aktywne są tylko czasy, które są wymagane do poprawnego działania oprogramowania MERY-400. Ogólna interakcja z emulowanym minikomputerem jest znacznie szybsza, niż z prawdziwym sprzętem.&lt;br /&gt;
* &#039;&#039;&#039;Żadne&#039;&#039;&#039; - &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; w tym trybie oprogramowanie może działać niepoprawnie z wielu przyczyn. Emulacja działa tak szybko, jak to możliwe. Nie są zachowane niemal żadne czasy działania prwawdziwego komputera. Przeznaczony do testowania, debugowania i w innych, szczególnych przypadkach.&lt;br /&gt;
&lt;br /&gt;
W miarę rozwoju emulatora w opcji &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; uwzględnianych będzie coraz więcej aspektów pracy MERY-400.&lt;br /&gt;
&lt;br /&gt;
== Interfejs użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Język&#039;&#039;&#039; - język interfejsu. Pozwala wybrać jeden z języków lub honorować ustawienia systemu.&lt;br /&gt;
* &#039;&#039;&#039;Uruchom z włączoną maszyną&#039;&#039;&#039; - emulator uruchamia się z wybraną maszyną i włączonym zasilaniem (nie trzeba przekręcać kluczyka, żeby włączyć maszynę)&lt;br /&gt;
* &#039;&#039;&#039;Motyw pulpitu&#039;&#039;&#039; - GUI EM400 używa własnego motywu. Wyłączenie opcji powoduje, że używany jest motyw systemowy.&lt;br /&gt;
* &#039;&#039;&#039;Mały pulpit techniczny&#039;&#039;&#039; - grafika pulpitu technicznego skadrowana jest do interaktywnych elementów.&lt;br /&gt;
* &#039;&#039;&#039;Terminal&#039;&#039;&#039; - określa, czy emulator używa wbudowanej emulacji terminala, czy zewnętrznego terminala konfigurowanego w następnej opcji&lt;br /&gt;
* &#039;&#039;&#039;Polecenie terminala&#039;&#039;&#039; - polecenie, które uruchamiane jest, gdy użytkownik otwiera terminal, a opcja &#039;&#039;&#039;Terminal&#039;&#039;&#039; powyżej ustawiona jest na &#039;&#039;&#039;Zewnętrzny&#039;&#039;&#039;. Pomocnicze polecenie &#039;&#039;&#039;emterm&#039;&#039;&#039; instalowane jest wraz z emulatorem i zapewnia poprawne połączenie z emulatorem.&lt;br /&gt;
* &#039;&#039;&#039;Czcionka debugera&#039;&#039;&#039; - czcionka używana w interfejsie debugera&lt;br /&gt;
* &#039;&#039;&#039;Czcionka terminala&#039;&#039;&#039; - czcionka używana we wbudowanym terminalu&lt;br /&gt;
&lt;br /&gt;
= Dźwięk =&lt;br /&gt;
&lt;br /&gt;
Dźwięk w emulatorze to dwa osobne tory audio:&lt;br /&gt;
&lt;br /&gt;
* dźwięki interfejsu - pstrykanie kluczy, dźwięk pokrętła rejestrów, etc.&lt;br /&gt;
* dźwięk głośniczka CPU - generowany przez samą emulację&lt;br /&gt;
&lt;br /&gt;
== Dźwięki interfejsu ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność dźwięków interfejsu&lt;br /&gt;
* &#039;&#039;&#039;Uwielbiam gdy cewki piszczą&#039;&#039;&#039; - sprawdź sam ;-)&lt;br /&gt;
&lt;br /&gt;
== Głośniczek CPU ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wyjście dźwięku włączone&#039;&#039;&#039; - włączenie dźwięku CPU&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność głośniczka CPU&lt;br /&gt;
* &#039;&#039;&#039;Częstotliwość próbkowania&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Długość bufora&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Opóźnienie&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Podsystem audio&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Urządzenie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logowanie =&lt;br /&gt;
&lt;br /&gt;
Umożliwia logowanie pracy emulatora do pliku.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logowanie włączone&#039;&#039;&#039; - aktywuje logowanie&lt;br /&gt;
* &#039;&#039;&#039;Komponenty&#039;&#039;&#039; - jakie komponenty emulacji zapisują swoje akcje do pliku logu&lt;br /&gt;
* &#039;&#039;&#039;Plik logu&#039;&#039;&#039; - plik, to którego log jest zapisywany&lt;br /&gt;
* &#039;&#039;&#039;Buforowanie liniowe&#039;&#039;&#039; - zapis do pliku odbywa się po każdej linii. W przeciwnym wypadku zapisy są buforowane do większych zapisów (wydajniejsze, ale można stracić fragment loga)&lt;br /&gt;
&lt;br /&gt;
Dostępne komponenty:&lt;br /&gt;
&lt;br /&gt;
* LIB - komunikaty biblioteki libem400&lt;br /&gt;
* APP - komunikaty aplikacji używającej biblioteki em400&lt;br /&gt;
* CRK5 - procesy i wywołania systemowe CROOK-5&lt;br /&gt;
* MEM - konfiguracja i zdarzenia w pamięci&lt;br /&gt;
* CPU - praca procesora &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; włączenie tej opcji loguje każdą wykonywaną instrukcję. Może to spowolnić emulację i generować pliki o rozmiarze wielu GB&lt;br /&gt;
* OP - szczegóły wybranych instrukcji CPU&lt;br /&gt;
* INT - przerwania&lt;br /&gt;
* IO - podsystem wejścia/wyjścia&lt;br /&gt;
* MX - MULTIX&lt;br /&gt;
* CCHR - kanał znakowy&lt;br /&gt;
* CMEM - kanał pamięciowy&lt;br /&gt;
* UZDAT - port szeregowy w kanale znakowym&lt;br /&gt;
* UZFX - kontroler stacji dysków SP45DE&lt;br /&gt;
* MECLO - zegar czasu rzeczywistego Amepolu&lt;br /&gt;
* TERM - terminal&lt;br /&gt;
* 9425 - dysk MERA 9425&lt;br /&gt;
* WNCH - dysk Winchester&lt;br /&gt;
* FLOP - stacja dysków&lt;br /&gt;
* PNCH - dziurkarka taśmy papierowej&lt;br /&gt;
* PNRD - czytnik taśmy papierowej&lt;br /&gt;
* TAPE - taśma magnetyczna&lt;br /&gt;
&lt;br /&gt;
= Plik konfiguracyjny =&lt;br /&gt;
&lt;br /&gt;
Konfiguracja określona w oknie ustawień emulatora zapisywana jest do tekstowego pliku konfiguracyjnego. EM400 odnajduje go w następujący sposób:&lt;br /&gt;
&lt;br /&gt;
# Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika &#039;&#039;&#039;-c&#039;&#039;&#039;), zostanie on użyty.&lt;br /&gt;
# Jeśli nie, domyślnie używany jest plik:&lt;br /&gt;
#* w systemach Linux, kolejno:&lt;br /&gt;
#** &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#** &#039;&#039;&#039;$HOME/.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#* w systemach Windows:&lt;br /&gt;
#** &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
# Jeśli plik konfiguracyjny nie istnieje, tworzony jest domyślny.&lt;br /&gt;
&lt;br /&gt;
Aktualny opis pliku konfiguracyjnego wraz z przykładami znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini tutaj]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3340</id>
		<title>EM400 - konfiguracja</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3340"/>
		<updated>2026-08-30T14:38:39Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Konfiguracja emulatora dostępna jest z menu &#039;&#039;&#039;Emulator &amp;amp;rarr; Ustawienia&#039;&#039;&#039; i zorganizowana jest w sekcje:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Maszyna&#039;&#039;&#039; - konfiguracje sprzętowe emulowanego komputera&lt;br /&gt;
# &#039;&#039;&#039;Ogólne&#039;&#039;&#039; - ustawienia emulacji i interfejsu użytkownika&lt;br /&gt;
# &#039;&#039;&#039;Dźwięk&#039;&#039;&#039; - ustawienia dźwięków interfejsu użytkownika i głośniczka CPU&lt;br /&gt;
# &#039;&#039;&#039;Logowanie&#039;&#039;&#039; - konfiguracja logowania&lt;br /&gt;
&lt;br /&gt;
= Maszyna =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-maszyna.png|thumb|500px|Konfiguracja: maszyna]]&lt;br /&gt;
&lt;br /&gt;
EM400 pozwala przygotować wiele konfiguracji minikomputera i przełączać się nimi w zależności od potrzeb.&lt;br /&gt;
&lt;br /&gt;
Przy pierwszym uruchomieniu, EM400 tworzy dwie domyślne maszyny:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MERA-400&#039;&#039;&#039; - prosta konfiguracja z dwoma modułami pamięci Elwro i stacją dysków SP45DE&lt;br /&gt;
* &#039;&#039;&#039;MX-16&#039;&#039;&#039; - przeznaczona do uruchamiania systemu operacyjnego CROOK-5, z pamięcią MEGA Amepolu, procesorem peryferyjnym MULTIX i dyskiem Winchester&lt;br /&gt;
&lt;br /&gt;
Zarządzanie maszynami umożliwiają następujące opcje:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aktywna maszyna&#039;&#039;&#039; - wybór aktualnie edytowanej konfiguracji minikomputera&lt;br /&gt;
* &#039;&#039;&#039;Dodaj...&#039;&#039;&#039; - dodawanie nowej maszyny. Otwiera okienko pozwalające wpisać jej nazwę. Identyfikator maszyny wywodzony jest z podanej nazwy&lt;br /&gt;
* &#039;&#039;&#039;Powiel...&#039;&#039;&#039; - robi kopię aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuwa aktualnie wybraną maszynę&lt;br /&gt;
* &#039;&#039;&#039;Nazwa&#039;&#039;&#039; - nazwa aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Identyfikator&#039;&#039;&#039; - identyfikator wybranej maszyny. Używa się go jako parametr opci &#039;&#039;&#039;-m&#039;&#039;&#039; przy wywoływaniu emulatora z linii poleceń&lt;br /&gt;
&lt;br /&gt;
Konfiguracja maszyny podzielona jest na trzy zakładki opisane w kolejnych sekcjach.&lt;br /&gt;
&lt;br /&gt;
== Procesor ==&lt;br /&gt;
&lt;br /&gt;
Można zmienić następujące właściwości procesora&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Jednostka zmiennoprzecinkowa (AWP)&#039;&#039;&#039; - czy zainstalowany jest Arytmometr Wielokrotnej Precyzji&lt;br /&gt;
* &#039;&#039;&#039;Modyfikacje procesora&#039;&#039;&#039; - czy obecne są modyfikacje procesora wprowadzone w MX-16&lt;br /&gt;
* &#039;&#039;&#039;Instrukcje we/wy niedozwolone w trybie użytkownika&#039;&#039;&#039; - czy instrukcje IN oraz OU są niedozwolone w trybie użytkownika&lt;br /&gt;
* &#039;&#039;&#039;Zatrzymaj przy braku pamięci&#039;&#039;&#039; - czy procesor zatrzymuje się, jeśli w segmencie pamięci dla systemu operacyjnego nastąpiło odwołanie do nieskonfigurowanej pamięci&lt;br /&gt;
* &#039;&#039;&#039;Okres zegara&#039;&#039;&#039; - co jaki czas zgłaszane są przerwania zegarowe (z wewnętrznego timera CPU)&lt;br /&gt;
&lt;br /&gt;
== Pamięć ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Moduły Elwro&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci ferrytowej Elwro (po 32 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Moduły MEGA&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci półprzewodnikowej MEGA Amepolu (po 64 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Strony systemowe (sprzętowe)&#039;&#039;&#039; - ilość stron pamięci skonfigurowanych sprzętowo dla systemu operacyjnego w segmencie 0&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM MEGA&#039;&#039;&#039; - obraz pamięci PROM (EPROM) w pamięci MEGA, który zastąpi domyślny&lt;br /&gt;
* &#039;&#039;&#039;Wstępnie ładowany program&#039;&#039;&#039; - program, który zostanie automatycznie załadowany do segmentu 0 po włączeniu maszyny&lt;br /&gt;
&lt;br /&gt;
== Wejście/wyjście ==&lt;br /&gt;
&lt;br /&gt;
W tej zakładce konfigurowane są kanały wejścia/wyjścia i podłączone do nich urządzenia:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dodaj kanał&#039;&#039;&#039; - dodanie nowego kanału wejścia/wyjścia (max 16)&lt;br /&gt;
* &#039;&#039;&#039;Dodaj urządzenie&#039;&#039;&#039; - dodanie nowego kurządzenia w kanale (ich ilość zależy od kanału)&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuń wybrane z listy urządzenie lub kanał&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodając nowy kanał należy wybrać jego numer oraz typ. Aktualnie obsługiwane kanały:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Znakowy&#039;&#039;&#039; - kanał znakowy minikomputera, do podłączanie wolnych urządzeń znakowych&lt;br /&gt;
* &#039;&#039;&#039;MULTIX&#039;&#039;&#039; - procesor peryferynjy MULTIX Amepolu&lt;br /&gt;
* &#039;&#039;&#039;Tester we/wy&#039;&#039;&#039; - do testów komunikacji, używany przez testy emulatora&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie urządzeń do kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodanie nowego urządzenia wymaga wybrania jego numeru i typu, oraz ustalenia opcji, które są zależne od typu urządzenia. Dostępne typy urządzeń zależą od tego, w jakim kanale jest ono dodawane.&lt;br /&gt;
&lt;br /&gt;
==== Terminal ====&lt;br /&gt;
&lt;br /&gt;
Dostępny w kanale znakowym i MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; Terminal w MULTIX-ie nie działa w obecnej wersji emulatora.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Port TCP&#039;&#039;&#039; - port TCP na którym słucha emulacja terminala.&lt;br /&gt;
* &#039;&#039;&#039;Prędkość&#039;&#039;&#039; - emulowana prędkość działania emulacji terminala. Domyślnie 9600 bodów.&lt;br /&gt;
&lt;br /&gt;
==== Pamięć SP45DE ====&lt;br /&gt;
&lt;br /&gt;
Dostępna tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obrazy dyskietek&#039;&#039;&#039; - pliki zawierające obrazy dyskietek 8&amp;quot; o geometrii: 1 strona (głowica), 77 ścieżek, 26 sektorów na ścieżkę, 128 bajtów na sektor = 256256 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Zegar czasu rzeczywistego Amepolu ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM&#039;&#039;&#039; - alternatywna zawartość pamięci PROM zegara (256 bajtów). Zastępuje domyślną. &lt;br /&gt;
&lt;br /&gt;
==== Winchester ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz dysku&#039;&#039;&#039; - plik zawierający obraz dysku o geometrii: 4 strony (głowice), 615 ścieżek, 16 sektorów na ścieżkę, 512 bajtów na sektor = 20152320 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Napęd dyskietek 5.25&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; aktualnie nie obsługiwany.&lt;br /&gt;
&lt;br /&gt;
= Ogólne =&lt;br /&gt;
&lt;br /&gt;
== Emulacja ==&lt;br /&gt;
&lt;br /&gt;
Ustawienia dotyczące sposobu realizacji emulacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Emulowane czasy&#039;&#039;&#039; określają to, jak wiernie emulator oddaje prawdziwą MERĘ-400 jeśli chodzi o prędkość pracy systemu. Możliwe są trzy poziomy:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; - Aktywne są wszystkie czasy, które są zaimplementowane w emulatorze. EM400 oddaje MERĘ-400 tak wiernie, jak tylko potrafi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum&#039;&#039;&#039; - Aktywne są tylko czasy, które są wymagane do poprawnego działania oprogramowania MERY-400. Ogólna interakcja z emulowanym minikomputerem jest znacznie szybsza, niż z prawdziwym sprzętem.&lt;br /&gt;
* &#039;&#039;&#039;Żadne&#039;&#039;&#039; - &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; w tym trybie oprogramowanie może działać niepoprawnie z wielu przyczyn. Emulacja działa tak szybko, jak to możliwe. Nie są zachowane niemal żadne czasy działania prwawdziwego komputera. Przeznaczony do testowania, debugowania i w innych, szczególnych przypadkach.&lt;br /&gt;
&lt;br /&gt;
W miarę rozwoju emulatora w opcji &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; uwzględnianych będzie coraz więcej aspektów pracy MERY-400.&lt;br /&gt;
&lt;br /&gt;
== Interfejs użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Język&#039;&#039;&#039; - język interfejsu. Pozwala wybrać jeden z języków lub honorować ustawienia systemu.&lt;br /&gt;
* &#039;&#039;&#039;Uruchom z włączoną maszyną&#039;&#039;&#039; - emulator uruchamia się z wybraną maszyną i włączonym zasilaniem (nie trzeba przekręcać kluczyka, żeby włączyć maszynę)&lt;br /&gt;
* &#039;&#039;&#039;Motyw pulpitu&#039;&#039;&#039; - GUI EM400 używa własnego motywu. Wyłączenie opcji powoduje, że używany jest motyw systemowy.&lt;br /&gt;
* &#039;&#039;&#039;Mały pulpit techniczny&#039;&#039;&#039; - grafika pulpitu technicznego skadrowana jest do interaktywnych elementów.&lt;br /&gt;
* &#039;&#039;&#039;Terminal&#039;&#039;&#039; - określa, czy emulator używa wbudowanej emulacji terminala, czy zewnętrznego terminala konfigurowanego w następnej opcji&lt;br /&gt;
* &#039;&#039;&#039;Polecenie terminala&#039;&#039;&#039; - polecenie, które uruchamiane jest, gdy użytkownik otwiera terminal, a opcja &#039;&#039;&#039;Terminal&#039;&#039;&#039; powyżej ustawiona jest na &#039;&#039;&#039;Zewnętrzny&#039;&#039;&#039;. Pomocnicze polecenie &#039;&#039;&#039;emterm&#039;&#039;&#039; instalowane jest wraz z emulatorem i zapewnia poprawne połączenie z emulatorem.&lt;br /&gt;
* &#039;&#039;&#039;Czcionka debugera&#039;&#039;&#039; - czcionka używana w interfejsie debugera&lt;br /&gt;
* &#039;&#039;&#039;Czcionka terminala&#039;&#039;&#039; - czcionka używana we wbudowanym terminalu&lt;br /&gt;
&lt;br /&gt;
= Dźwięk =&lt;br /&gt;
&lt;br /&gt;
Dźwięk w emulatorze to dwa osobne tory audio:&lt;br /&gt;
&lt;br /&gt;
* dźwięki interfejsu - pstrykanie kluczy, dźwięk pokrętła rejestrów, etc.&lt;br /&gt;
* dźwięk głośniczka CPU - generowany przez samą emulację&lt;br /&gt;
&lt;br /&gt;
== Dźwięki interfejsu ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność dźwięków interfejsu&lt;br /&gt;
* &#039;&#039;&#039;Uwielbiam gdy cewki piszczą&#039;&#039;&#039; - sprawdź sam ;-)&lt;br /&gt;
&lt;br /&gt;
== Głośniczek CPU ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wyjście dźwięku włączone&#039;&#039;&#039; - włączenie dźwięku CPU&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność głośniczka CPU&lt;br /&gt;
* &#039;&#039;&#039;Częstotliwość próbkowania&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Długość bufora&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Opóźnienie&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Podsystem audio&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Urządzenie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logowanie =&lt;br /&gt;
&lt;br /&gt;
Umożliwia logowanie pracy emulatora do pliku.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logowanie włączone&#039;&#039;&#039; - aktywuje logowanie&lt;br /&gt;
* &#039;&#039;&#039;Komponenty&#039;&#039;&#039; - jakie komponenty emulacji zapisują swoje akcje do pliku logu&lt;br /&gt;
* &#039;&#039;&#039;Plik logu&#039;&#039;&#039; - plik, to którego log jest zapisywany&lt;br /&gt;
* &#039;&#039;&#039;Buforowanie liniowe&#039;&#039;&#039; - zapis do pliku odbywa się po każdej linii. W przeciwnym wypadku zapisy są buforowane do większych zapisów (wydajniejsze, ale można stracić fragment loga)&lt;br /&gt;
&lt;br /&gt;
Dostępne komponenty:&lt;br /&gt;
&lt;br /&gt;
* LIB - komunikaty biblioteki libem400&lt;br /&gt;
* APP - komunikaty aplikacji używającej biblioteki em400&lt;br /&gt;
* CRK5 - procesy i wywołania systemowe CROOK-5&lt;br /&gt;
* MEM - konfiguracja i zdarzenia w pamięci&lt;br /&gt;
* CPU - praca procesora &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; włączenie tej opcji loguje każdą wykonywaną instrukcję. Może to spowolnić emulację i generować pliki o rozmiarze wielu GB&lt;br /&gt;
* OP - szczegóły wybranych instrukcji CPU&lt;br /&gt;
* INT - przerwania&lt;br /&gt;
* IO - podsystem wejścia/wyjścia&lt;br /&gt;
* MX - MULTIX&lt;br /&gt;
* CCHR - kanał znakowy&lt;br /&gt;
* CMEM - kanał pamięciowy&lt;br /&gt;
* UZDAT - port szeregowy w kanale znakowym&lt;br /&gt;
* UZFX - kontroler stacji dysków SP45DE&lt;br /&gt;
* MECLO - zegar czasu rzeczywistego Amepolu&lt;br /&gt;
* TERM - terminal&lt;br /&gt;
* 9425 - dysk MERA 9425&lt;br /&gt;
* WNCH - dysk Winchester&lt;br /&gt;
* FLOP - stacja dysków&lt;br /&gt;
* PNCH - dziurkarka taśmy papierowej&lt;br /&gt;
* PNRD - czytnik taśmy papierowej&lt;br /&gt;
* TAPE - taśma magnetyczna&lt;br /&gt;
&lt;br /&gt;
= Plik konfiguracyjny =&lt;br /&gt;
&lt;br /&gt;
Konfiguracja określona w oknie ustawień emulatora zapisywana jest do tekstowego pliku konfiguracyjnego. EM400 odnajduje go w następujący sposób:&lt;br /&gt;
&lt;br /&gt;
# Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika &#039;&#039;&#039;-c&#039;&#039;&#039;), zostanie on użyty.&lt;br /&gt;
# Jeśli nie, domyślnie używany jest plik:&lt;br /&gt;
#* w systemach Linux, kolejno:&lt;br /&gt;
#** &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#** &#039;&#039;&#039;$HOME/.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#* w systemach Windows:&lt;br /&gt;
#** &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
# Jeśli plik konfiguracyjny nie istnieje, tworzony jest domyślny.&lt;br /&gt;
&lt;br /&gt;
Aktualny opis pliku konfiguracyjnego wraz z przykładami znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini tutaj]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3339</id>
		<title>EM400 - konfiguracja</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3339"/>
		<updated>2026-08-30T14:37:57Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Konfiguracja emulatora dostępna jest z menu &#039;&#039;&#039;Emulator &amp;amp;rarr; Ustawienia&#039;&#039;&#039; i zorganizowana jest w sekcje:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Maszyna&#039;&#039;&#039; - konfiguracje sprzętowe emulowanego komputera&lt;br /&gt;
# &#039;&#039;&#039;Ogólne&#039;&#039;&#039; - ustawienia emulacji i interfejsu użytkownika&lt;br /&gt;
# &#039;&#039;&#039;Dźwięk&#039;&#039;&#039; - ustawienia dźwięków interfejsu użytkownika i głośniczka CPU&lt;br /&gt;
# &#039;&#039;&#039;Logowanie&#039;&#039;&#039; - konfiguracja logowania&lt;br /&gt;
&lt;br /&gt;
= Maszyna =&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguracja-maszyna.png|thumb|500px|Konfiguracja: maszyna]]&lt;br /&gt;
&lt;br /&gt;
EM400 pozwala przygotować wiele konfiguracji minikomputera i przełączać się nimi w zależności od potrzeb.&lt;br /&gt;
&lt;br /&gt;
Przy pierwszym uruchomieniu, EM400 tworzy dwie domyślne maszyny:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MERA-400&#039;&#039;&#039; - prosta konfiguracja z dwoma modułami pamięci Elwro i stacją dysków SP45DE&lt;br /&gt;
* &#039;&#039;&#039;MX-16&#039;&#039;&#039; - przeznaczona do uruchamiania systemu operacyjnego CROOK-5, z pamięcią MEGA Amepolu, procesorem peryferyjnym MULTIX i dyskiem Winchester&lt;br /&gt;
&lt;br /&gt;
Zarządzanie maszynami umożliwiają następujące opcje:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aktywna maszyna&#039;&#039;&#039; - wybór aktualnie edytowanej konfiguracji minikomputera&lt;br /&gt;
* &#039;&#039;&#039;Dodaj...&#039;&#039;&#039; - dodawanie nowej maszyny. Otwiera okienko pozwalające wpisać jej nazwę. Identyfikator maszyny wywodzony jest z podanej nazwy&lt;br /&gt;
* &#039;&#039;&#039;Powiel...&#039;&#039;&#039; - robi kopię aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuwa aktualnie wybraną maszynę&lt;br /&gt;
* &#039;&#039;&#039;Nazwa&#039;&#039;&#039; - nazwa aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Identyfikator&#039;&#039;&#039; - identyfikator wybranej maszyny. Używa się go jako parametr opci &#039;&#039;&#039;-m&#039;&#039;&#039; przy wywoływaniu emulatora z linii poleceń&lt;br /&gt;
&lt;br /&gt;
Konfiguracja maszyny podzielona jest na trzy zakładki opisane w kolejnych sekcjach.&lt;br /&gt;
&lt;br /&gt;
== Procesor ==&lt;br /&gt;
&lt;br /&gt;
Można zmienić następujące właściwości procesora&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Jednostka zmiennoprzecinkowa (AWP)&#039;&#039;&#039; - czy zainstalowany jest Arytmometr Wielokrotnej Precyzji&lt;br /&gt;
* &#039;&#039;&#039;Modyfikacje procesora&#039;&#039;&#039; - czy obecne są modyfikacje procesora wprowadzone w MX-16&lt;br /&gt;
* &#039;&#039;&#039;Instrukcje we/wy niedozwolone w trybie użytkownika&#039;&#039;&#039; - czy instrukcje IN oraz OU są niedozwolone w trybie użytkownika&lt;br /&gt;
* &#039;&#039;&#039;Zatrzymaj przy braku pamięci&#039;&#039;&#039; - czy procesor zatrzymuje się, jeśli w segmencie pamięci dla systemu operacyjnego nastąpiło odwołanie do nieskonfigurowanej pamięci&lt;br /&gt;
* &#039;&#039;&#039;Okres zegara&#039;&#039;&#039; - co jaki czas zgłaszane są przerwania zegarowe (z wewnętrznego timera CPU)&lt;br /&gt;
&lt;br /&gt;
== Pamięć ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Moduły Elwro&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci ferrytowej Elwro (po 32 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Moduły MEGA&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci półprzewodnikowej MEGA Amepolu (po 64 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Strony systemowe (sprzętowe)&#039;&#039;&#039; - ilość stron pamięci skonfigurowanych sprzętowo dla systemu operacyjnego w segmencie 0&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM MEGA&#039;&#039;&#039; - obraz pamięci PROM (EPROM) w pamięci MEGA, który zastąpi domyślny&lt;br /&gt;
* &#039;&#039;&#039;Wstępnie ładowany program&#039;&#039;&#039; - program, który zostanie automatycznie załadowany do segmentu 0 po włączeniu maszyny&lt;br /&gt;
&lt;br /&gt;
== Wejście/wyjście ==&lt;br /&gt;
&lt;br /&gt;
W tej zakładce konfigurowane są kanały wejścia/wyjścia i podłączone do nich urządzenia:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dodaj kanał&#039;&#039;&#039; - dodanie nowego kanału wejścia/wyjścia (max 16)&lt;br /&gt;
* &#039;&#039;&#039;Dodaj urządzenie&#039;&#039;&#039; - dodanie nowego kurządzenia w kanale (ich ilość zależy od kanału)&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuń wybrane z listy urządzenie lub kanał&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodając nowy kanał należy wybrać jego numer oraz typ. Aktualnie obsługiwane kanały:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Znakowy&#039;&#039;&#039; - kanał znakowy minikomputera, do podłączanie wolnych urządzeń znakowych&lt;br /&gt;
* &#039;&#039;&#039;MULTIX&#039;&#039;&#039; - procesor peryferynjy MULTIX Amepolu&lt;br /&gt;
* &#039;&#039;&#039;Tester we/wy&#039;&#039;&#039; - do testów komunikacji, używany przez testy emulatora&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie urządzeń do kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodanie nowego urządzenia wymaga wybrania jego numeru i typu, oraz ustalenia opcji, które są zależne od typu urządzenia. Dostępne typy urządzeń zależą od tego, w jakim kanale jest ono dodawane.&lt;br /&gt;
&lt;br /&gt;
==== Terminal ====&lt;br /&gt;
&lt;br /&gt;
Dostępny w kanale znakowym i MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; Terminal w MULTIX-ie nie działa w obecnej wersji emulatora.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Port TCP&#039;&#039;&#039; - port TCP na którym słucha emulacja terminala.&lt;br /&gt;
* &#039;&#039;&#039;Prędkość&#039;&#039;&#039; - emulowana prędkość działania emulacji terminala. Domyślnie 9600 bodów.&lt;br /&gt;
&lt;br /&gt;
==== Pamięć SP45DE ====&lt;br /&gt;
&lt;br /&gt;
Dostępna tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obrazy dyskietek&#039;&#039;&#039; - pliki zawierające obrazy dyskietek 8&amp;quot; o geometrii: 1 strona (głowica), 77 ścieżek, 26 sektorów na ścieżkę, 128 bajtów na sektor = 256256 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Zegar czasu rzeczywistego Amepolu ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM&#039;&#039;&#039; - alternatywna zawartość pamięci PROM zegara (256 bajtów). Zastępuje domyślną. &lt;br /&gt;
&lt;br /&gt;
==== Winchester ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz dysku&#039;&#039;&#039; - plik zawierający obraz dysku o geometrii: 4 strony (głowice), 615 ścieżek, 16 sektorów na ścieżkę, 512 bajtów na sektor = 20152320 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Napęd dyskietek 5.25&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; aktualnie nie obsługiwany.&lt;br /&gt;
&lt;br /&gt;
= Ogólne =&lt;br /&gt;
&lt;br /&gt;
== Emulacja ==&lt;br /&gt;
&lt;br /&gt;
Ustawienia dotyczące sposobu realizacji emulacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Emulowane czasy&#039;&#039;&#039; określają to, jak wiernie emulator oddaje prawdziwą MERĘ-400 jeśli chodzi o prędkość pracy systemu. Możliwe są trzy poziomy:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; - Aktywne są wszystkie czasy, które są zaimplementowane w emulatorze. EM400 oddaje MERĘ-400 tak wiernie, jak tylko potrafi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum&#039;&#039;&#039; - Aktywne są tylko czasy, które są wymagane do poprawnego działania oprogramowania MERY-400. Ogólna interakcja z emulowanym minikomputerem jest znacznie szybsza, niż z prawdziwym sprzętem.&lt;br /&gt;
* &#039;&#039;&#039;Żadne&#039;&#039;&#039; - &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; w tym trybie oprogramowanie może działać niepoprawnie z wielu przyczyn. Emulacja działa tak szybko, jak to możliwe. Nie są zachowane niemal żadne czasy działania prwawdziwego komputera. Przeznaczony do testowania, debugowania i w innych, szczególnych przypadkach.&lt;br /&gt;
&lt;br /&gt;
W miarę rozwoju emulatora w opcji &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; uwzględnianych będzie coraz więcej aspektów pracy MERY-400.&lt;br /&gt;
&lt;br /&gt;
== Interfejs użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Język&#039;&#039;&#039; - język interfejsu. Pozwala wybrać jeden z języków lub honorować ustawienia systemu.&lt;br /&gt;
* &#039;&#039;&#039;Uruchom z włączoną maszyną&#039;&#039;&#039; - emulator uruchamia się z wybraną maszyną i włączonym zasilaniem (nie trzeba przekręcać kluczyka, żeby włączyć maszynę)&lt;br /&gt;
* &#039;&#039;&#039;Motyw pulpitu&#039;&#039;&#039; - GUI EM400 używa własnego motywu. Wyłączenie opcji powoduje, że używany jest motyw systemowy.&lt;br /&gt;
* &#039;&#039;&#039;Mały pulpit techniczny&#039;&#039;&#039; - grafika pulpitu technicznego skadrowana jest do interaktywnych elementów.&lt;br /&gt;
* &#039;&#039;&#039;Terminal&#039;&#039;&#039; - określa, czy emulator używa wbudowanej emulacji terminala, czy zewnętrznego terminala konfigurowanego w następnej opcji&lt;br /&gt;
* &#039;&#039;&#039;Polecenie terminala&#039;&#039;&#039; - polecenie, które uruchamiane jest, gdy użytkownik otwiera terminal, a opcja &#039;&#039;&#039;Terminal&#039;&#039;&#039; powyżej ustawiona jest na &#039;&#039;&#039;Zewnętrzny&#039;&#039;&#039;. Pomocnicze polecenie &#039;&#039;&#039;emterm&#039;&#039;&#039; instalowane jest wraz z emulatorem i zapewnia poprawne połączenie z emulatorem.&lt;br /&gt;
* &#039;&#039;&#039;Czcionka debugera&#039;&#039;&#039; - czcionka używana w interfejsie debugera&lt;br /&gt;
* &#039;&#039;&#039;Czcionka terminala&#039;&#039;&#039; - czcionka używana we wbudowanym terminalu&lt;br /&gt;
&lt;br /&gt;
= Dźwięk =&lt;br /&gt;
&lt;br /&gt;
Dźwięk w emulatorze to dwa osobne tory audio:&lt;br /&gt;
&lt;br /&gt;
* dźwięki interfejsu - pstrykanie kluczy, dźwięk pokrętła rejestrów, etc.&lt;br /&gt;
* dźwięk głośniczka CPU - generowany przez samą emulację&lt;br /&gt;
&lt;br /&gt;
== Dźwięki interfejsu ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność dźwięków interfejsu&lt;br /&gt;
* &#039;&#039;&#039;Uwielbiam gdy cewki piszczą&#039;&#039;&#039; - sprawdź sam ;-)&lt;br /&gt;
&lt;br /&gt;
== Głośniczek CPU ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wyjście dźwięku włączone&#039;&#039;&#039; - włączenie dźwięku CPU&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność głośniczka CPU&lt;br /&gt;
* &#039;&#039;&#039;Częstotliwość próbkowania&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Długość bufora&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Opóźnienie&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Podsystem audio&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Urządzenie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logowanie =&lt;br /&gt;
&lt;br /&gt;
Umożliwia logowanie pracy emulatora do pliku.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logowanie włączone&#039;&#039;&#039; - aktywuje logowanie&lt;br /&gt;
* &#039;&#039;&#039;Komponenty&#039;&#039;&#039; - jakie komponenty emulacji zapisują swoje akcje do pliku logu&lt;br /&gt;
* &#039;&#039;&#039;Plik logu&#039;&#039;&#039; - plik, to którego log jest zapisywany&lt;br /&gt;
* &#039;&#039;&#039;Buforowanie liniowe&#039;&#039;&#039; - zapis do pliku odbywa się po każdej linii. W przeciwnym wypadku zapisy są buforowane do większych zapisów (wydajniejsze, ale można stracić fragment loga)&lt;br /&gt;
&lt;br /&gt;
Dostępne komponenty:&lt;br /&gt;
&lt;br /&gt;
* LIB - komunikaty biblioteki libem400&lt;br /&gt;
* APP - komunikaty aplikacji używającej biblioteki em400&lt;br /&gt;
* CRK5 - procesy i wywołania systemowe CROOK-5&lt;br /&gt;
* MEM - konfiguracja i zdarzenia w pamięci&lt;br /&gt;
* CPU - praca procesora &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; włączenie tej opcji loguje każdą wykonywaną instrukcję. Może to spowolnić emulację i generować pliki o rozmiarze wielu GB&lt;br /&gt;
* OP - szczegóły wybranych instrukcji CPU&lt;br /&gt;
* INT - przerwania&lt;br /&gt;
* IO - podsystem wejścia/wyjścia&lt;br /&gt;
* MX - MULTIX&lt;br /&gt;
* CCHR - kanał znakowy&lt;br /&gt;
* CMEM - kanał pamięciowy&lt;br /&gt;
* UZDAT - port szeregowy w kanale znakowym&lt;br /&gt;
* UZFX - kontroler stacji dysków SP45DE&lt;br /&gt;
* MECLO - zegar czasu rzeczywistego Amepolu&lt;br /&gt;
* TERM - terminal&lt;br /&gt;
* 9425 - dysk MERA 9425&lt;br /&gt;
* WNCH - dysk Winchester&lt;br /&gt;
* FLOP - stacja dysków&lt;br /&gt;
* PNCH - dziurkarka taśmy papierowej&lt;br /&gt;
* PNRD - czytnik taśmy papierowej&lt;br /&gt;
* TAPE - taśma magnetyczna&lt;br /&gt;
&lt;br /&gt;
= Plik konfiguracyjny =&lt;br /&gt;
&lt;br /&gt;
Konfiguracja określona w oknie ustawień emulatora zapisywana jest do tekstowego pliku konfiguracyjnego. EM400 odnajduje go w następujący sposób:&lt;br /&gt;
&lt;br /&gt;
# Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika &#039;&#039;&#039;-c&#039;&#039;&#039;), zostanie on użyty.&lt;br /&gt;
# Jeśli nie, domyślnie używany jest plik:&lt;br /&gt;
#* w systemach Linux, kolejno:&lt;br /&gt;
#** &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#** &#039;&#039;&#039;$HOME/.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#* w systemach Windows:&lt;br /&gt;
#** &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
# Jeśli plik konfiguracyjny nie istnieje, tworzony jest domyślny.&lt;br /&gt;
&lt;br /&gt;
Aktualny opis pliku konfiguracyjnego wraz z przykładami znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini tutaj]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=Plik:Konfiguracja-maszyna.png&amp;diff=3338</id>
		<title>Plik:Konfiguracja-maszyna.png</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=Plik:Konfiguracja-maszyna.png&amp;diff=3338"/>
		<updated>2026-08-30T14:37:20Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=Odczyt_Winchestera&amp;diff=3337</id>
		<title>Odczyt Winchestera</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=Odczyt_Winchestera&amp;diff=3337"/>
		<updated>2026-08-30T13:17:45Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Mera-winchester.jpg|thumb|Winchester w zewnętrznej obudowie]]&lt;br /&gt;
Jednym z nośników danych zapisanych na MERZE-400, które przetrwały do dziś, jest dysk [[Winchester]] zamontowany w minikomputerze znajdującym się w [http://www.muzeumtechniki.warszawa.pl/ Muzeum Techniki] w Warszawie. [[MERA-400 w Muzeum Techniki|Minikomputer ten]] wypożyczony został Muzeum przez Politechnikę Gdańską, gdzie działał w Instytucie Okrętowym jako maszyna, na której m.in. zespół rozwijający [[CROOK|CROOK-a]] pracował nad swoim systemem. Sam fakt, że dysk zawiera dane zapisane na MERZE-400 czyni go interesującym, a źródło pochodzenia wartość nośnika tylko podnosi, dając nadzieję na pozyskanie niezwykle cennych danych.&lt;br /&gt;
&lt;br /&gt;
Muzeum umożliwiło dostęp do dysku i przeprowadzenie prób odczytu jego zawartości, za co autor składa podziękowania. Cieszy fakt, że rola Muzeum nie ogranicza się jedynie do gromadzenia zbiorów, a częścią misji jest również ich udostępnianie do prac, które mają na celu choć częściowe przywrócenie eksponatów do życia.&lt;br /&gt;
&lt;br /&gt;
= Nośnik danych =&lt;br /&gt;
&lt;br /&gt;
[[File:Nec-mera.jpg|thumb|NEC D5126]]&lt;br /&gt;
Nośnik danych to dysk [http://support.necam.com/Legacy/Harddrives/D5126.cfm NEC D5126] z interfejsem [http://en.wikipedia.org/wiki/ST-506 ST-506]. Jego podstawowe parametry to:&lt;br /&gt;
* 20 MB pojemności po sformatowaniu&lt;br /&gt;
* 2 talerze&lt;br /&gt;
* 4 głowice w zespole poruszanym za pomocą silnika krokowego&lt;br /&gt;
* 615 cylindrów&lt;br /&gt;
* 16 sektorów/ścieżkę&lt;br /&gt;
* brak autoparkowania (ścieżka parkingowa: 664)&lt;br /&gt;
* transfer: 5Mbit/s&lt;br /&gt;
Dysk znajduje się w [[:File:Mt_plix.jpg|zewnętrznej 19&amp;quot; obudowie]], która oprócz niego zawiera również napęd dysków elastycznych 5,25&amp;quot;. Elementy te podłączone są osobnymi kablami sygnałowymi do odpowiednich kontrolerów procesora peryferyjnego [[MULTIX]]. Poza nimi, w obudowie zamontowany jest jedynie zasilacz +5/+12V oraz duży wentylator z tyłu obudowy.&lt;br /&gt;
&lt;br /&gt;
[[:File:ME-WDC-506-front.jpg|Kontroler dysku]] zbudowany przez Amepol opiera się na układzie Intel C82062 zaprojektowanym dla rodziny komputerów z procesorami 80186. Realizuje on zapis i odczyt danych w standardzie MFM, używanym na początku istnienia interfejsu ST-506, zastąpionym później przez RLL.&lt;br /&gt;
&lt;br /&gt;
= Pierwsze próby odczytu =&lt;br /&gt;
&lt;br /&gt;
[[File:Wd1006v-mm1.jpg|thumb|Kontroler MFM WD1006V-MM1]]&lt;br /&gt;
[[Amepol]] używał w swoich konstrukcjach standardowych komponentów, używanych również w początkach ery komputerów PC. Pierwszym nasuwającym się sposobem odczytu zawartości dysku było więc użycie odpowiedniego kontrolera dla PC/XT lub AT. Takie komponenty są wciąż dostępne, wymagają jedynie komputera wyposażonego w szynę ISA (8 lub 16-bit, w zależności od typu kontrolera). Złącza ISA obecne są jeszcze w stosunkowo nowych płytach głównych, co pozwala na użycie w miarę współczesnego komputera PC. Zarówno kontrolery MFM jak i dyski tego typu są wciąż obsługiwane przez system operacyjny GNU/Linux, tak więc zbudowanie kompletnego środowiska uruchomieniowego było jak najbardziej możliwe.&lt;br /&gt;
&lt;br /&gt;
Próba odczytu dysku przy użyciu takiego właśnie zestawu z kontrolerem MFM Western Digital WD1006V-MM1 zakończyła się niepowodzeniem. Dysk okazał się być sprawny mechanicznie i elektrycznie, ale kontroler raportował jedynie błędy odczytu.&lt;br /&gt;
&lt;br /&gt;
Początkowo nie był znany układ, którego użył [[Amepol]] do konstrukcji interfejsu dla Winchestera, istniało więc prawdopodobieństwo, że układ ten realizował zapis w standardzie RLL. Przeprowadzone zostały więc próby odczytu z dwoma różnymi kontrolerami RLL: Western Digital WD1002A-27X oraz WD1003-RA2, zakończone również niepowodzeniem.&lt;br /&gt;
&lt;br /&gt;
= Uniwersalny czytnik dysków Winchester =&lt;br /&gt;
&lt;br /&gt;
Ponieważ próby odczytu za pomocą kontrolera MFM WD1006V-MM1 nie przyniosły pozytywnego rezultatu, należało założyć, że format zapisu danych jest inny od standardu MFM dla dysków ST-506 obsługiwanych przez użyty kontroler. Jest to prawdopodobne, ponieważ na początku ery tego interfejsu kontrolery różnych producentów nie zawsze były ze sobą w pełni kompatybilne. Poszukiwanie odpowiedniego, kompatybilnego kontrolera mogłoby okazać się zadaniem trwającym wieczność, potrzebne więc było alternatywne rozwiązanie, które pozwoliłoby odczytać dane niezależnie od:&lt;br /&gt;
* użytej metody zapisu,&lt;br /&gt;
* formatu ścieżki i sektora,&lt;br /&gt;
* stanu danych (ewentualne uszkodzenia sektorów).&lt;br /&gt;
&lt;br /&gt;
Takie rozwiązanie istnieje dzięki temu, że interfejs ST-506 pozwala na dostęp do danych zapisanych na powierzchni nośnika na bardzo niskim poziomie. Sygnał danych wyprowadzony z dysku jest niemalże wprost sygnałem pochodzącym z głowic, bez żadnej obróbki logicznej. Można więc przeprowadzić procedurę, która polegałaby na:&lt;br /&gt;
# Zarejestrowaniu na nośniku zewnętrznym sygnału z głowic dysku (kolejno dla każdej ścieżki i głowicy).&lt;br /&gt;
# Analizie zapisu i odczytaniu z niego właściwych danych bajtowych.&lt;br /&gt;
&lt;br /&gt;
Praktyczna realizacja zadania polega na:&lt;br /&gt;
# Zbudowaniu urządzenia, które będzie potrafiło:&lt;br /&gt;
#* zgodnie ze specyfikacją ST-506 sterować dyskiem (pozycjonować i wybierać głowice, odczytywać stan dysku)&lt;br /&gt;
#* próbkować sygnał danych z odpowiednio wysoką częstotliwością&lt;br /&gt;
#* komunikować się z komputerem PC (otrzymywać polecenia, raportować stan dysku, przesyłać próbkowane dane)&lt;br /&gt;
# Napisaniu oprogramowania (firmware) takiego urządzenia&lt;br /&gt;
# Napisaniu oprogramowania realizującego proces obrazowania całego dysku&lt;br /&gt;
# Przeanalizowaniu otrzymanego zapisu w poszukiwaniu sposobu i formatu zapisu danych&lt;br /&gt;
# Napisaniu oprogramowania analizującego fizyczny obraz dysku i przygotowującego bajtowy obraz wynikowy&lt;br /&gt;
&lt;br /&gt;
== Realizacja ==&lt;br /&gt;
&lt;br /&gt;
[[File:Czytnik_winchester.jpg|thumb|&amp;quot;Czytnik&amp;quot; dysków Winchester]]&lt;br /&gt;
Dyski z [http://en.wikipedia.org/wiki/ST-506 interfejsem ST-506] wyposażone są w dwa złącze krawędziowe: jedno służy do przesyłania sygnałów sterujących, drugie do przesyłania danych. Wszystkie sygnały sterujące zrealizowane są w standardzie TTL z logiką ujemną (aktywne 0). Sygnały na liniach danych, zarówno odczytu jak i zapisu, to różnicowonapięciowy [http://en.wikipedia.org/wiki/RS-422 RS-422].&lt;br /&gt;
&lt;br /&gt;
Urządzenie zostało zaimplementowane w oparciu o cztery główne elementy:&lt;br /&gt;
* [http://www.atmel.com/devices/atmega162.aspx AVR/Atmega162] z zewnętrznym oscylatorem 16MHz w roli kontrolera dysku&lt;br /&gt;
* [http://www.ti.com/product/sn75176b Texas Instruments SN75176BP] użyty do konwersji sygnału [http://en.wikipedia.org/wiki/RS-422 RS-422] do poziomów TTL&lt;br /&gt;
* Programowalny analizator stanów logicznych użyty jako sampler sygnału danych pracujący z częstotliwością 100MHz&lt;br /&gt;
* [http://www.ftdichip.com/Products/ICs/FT232R.htm FTDI FT232RL] jako interfejs USB dla kontrolera, do komunikacji z PC&lt;br /&gt;
&lt;br /&gt;
[[File:Wdc-schemat.png|center|Schemat blokowy &amp;quot;czytnika&amp;quot; dysków Winchester]]&lt;br /&gt;
&lt;br /&gt;
Zarówno kontroler jak i sampler podłączone są do komputera PC za pomocą złącz USB. Kontroler widziany jest jako urządzenie za portem szeregowym, sampler używa własnego protokołu transmisji i jest dostępny dzięki bibliotece dostarczonej przez producenta. W całym systemie są trzy elementy programowe:&lt;br /&gt;
# &#039;&#039;&#039;WDC&#039;&#039;&#039; (Winchester Disk Controller, C) - oprogramowanie mikrokontrolera AVR, tłumaczące komendy odbierane z portu szeregowego na sekwencje sygnałów sterujących dyskiem i zapewniające jego obsługę zgodnie z wymaganiami standardu&lt;br /&gt;
# &#039;&#039;&#039;WDS&#039;&#039;&#039; (Winchester Data Sampler, C++) - oprogramowanie automatyzujące proces obrazowania dysku, realizuje dwie funkcje:&lt;br /&gt;
#* komunikuje się kontrolerem w celu wybrania dysku, ustalenia pozycji głowic, wybrania głowicy i odczytu stanu napędu&lt;br /&gt;
#* komunikuje się z samplerem inicjalizując proces obrazowania ścieżki i zapisuje obrazy kolejnych ścieżek na dysk komputera&lt;br /&gt;
# &#039;&#039;&#039;WDA&#039;&#039;&#039; (Winchester Data Analyzer, Python) - umożliwia przeprowadzenie analizy fizycznego obrazu dysku i zapisuje bajtowy obraz danych&lt;br /&gt;
&lt;br /&gt;
= Odczyt dysku =&lt;br /&gt;
&lt;br /&gt;
Proces obrazowania dysku odbył się w Muzeum Techniki i tym razem zakończył powodzeniem. Wykonanie pełnego obrazu dysku trwało około 10 minut i dawało w wyniku około 500MB danych z zapisem sygnału na wszystkich ścieżkach dysku. Tak duży rozmiar (w porównaniu do 20 MB pojemności dysku) wynika z trzech faktów:&lt;br /&gt;
* 20 MB to powierzchnia dysku po jego sformatowaniu. Rzeczywista ilość danych na ścieżce jest powiększona o nagłówki sektorów i inne struktury organizujące zapis&lt;br /&gt;
* Jeden bit danych zapisywany jest za pomocą dwóch bitów zapisu MFM (zegar i dane)&lt;br /&gt;
* Sygnał próbkowany był z częstotliwością dziesięciokrotnie wyższą, niż zegar użyty do zapisu MFM&lt;br /&gt;
&lt;br /&gt;
Operacja obrazowania została powtórzona kilkunastokrotnie, dając w sumie prawie 7 GB danych do późniejszej analizy. Podczas kolejnych powtórzeń zmieniały się warunki odczytu, co zwiększało prawdopodobieństwo uzyskania poprawnego obrazu:&lt;br /&gt;
* pierwszy odczyt robiony był na &amp;quot;zimnym&amp;quot; dysku, kolejne na coraz bardziej &amp;quot;rozgrzanym&amp;quot; (zmiany temperatury mogą mieć wpływ zarówno na mechanikę jak i elektronikę napędu),&lt;br /&gt;
* następujące po sobie sesje były przeprowadzane przy ruchu głowic naprzemiennie do wewnątrz i na zewnątrz powierzchni dysku (nieprecyzyjności pozycjonowania głowicy mogły dać lepsze rezultaty w jednym bądź drugim przypadku),&lt;br /&gt;
* część odczytów została wykonana po serii gwałtownych zmian pozycjonowania głowicy (pozycja zmieniana o kilkaset cylindrów w przód i w tył, powody jak wyżej).&lt;br /&gt;
&lt;br /&gt;
Następnym krokiem było poznanie sposobu zapisu oraz formatu ścieżki i sektora, użytych przez Amepol. Krok ten ułatwił graficzny analizator zapisu, pokazujący spróbkowany sygnał z nałożonymi na niego wynikami działania algorytmów analizujących jego przebieg.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Wda.png|center|700px|Graficzny interfejs analizatora zapisu MFM]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Z jego pomocą możliwe było dobranie optymalnych parametrów pracy algorytmów (dających później poprawne wyniki analizy dla wszystkich ścieżek). Analiza pokazała, że na dysku użyty został zapis MFM zgodny ze standardem używanym w napędach ST-506. Powody, dla których nie udała się pierwsza próba odczytu były dwa, z których pierwszy był pewną przyczyną niepowodzenia:&lt;br /&gt;
# Amepol sformatował dysk używając 16 sektorów na ścieżkę, a nie 17, jak mówi specyfikacja dysku.&lt;br /&gt;
# Układ Intel C82062 użyty przez Amepol korzysta z 16-bit CRC do liczenia zarówno sum kontrolnych nagłówków sektorów, jak i danych w sektorze. Kontroler WD1006V-MM1 używał 16-bit CRC dla nagłówków, ale dane były już zabezpieczane 32-bit CRC.&lt;br /&gt;
&lt;br /&gt;
Po skonfigurowaniu analizatora (WDA), przeprowadzona została kompletna analiza obrazu, której kroki obejmowały (w nawiasie podane odpowiednie elementy widoczne na powyższym rysunku):&lt;br /&gt;
* odtworzenie zegara, który został użyty przy zapisie (jasnoniebieskie znaczniki pod przebiegiem),&lt;br /&gt;
* odnalezienie znaczników MFM (fragment sygnału oznaczony fioletowym tłem),&lt;br /&gt;
* określenie położenia nagłówka sektora i danych zapisanych w sektorze (rysunek przedstawia kompletny nagłówek sektora)&lt;br /&gt;
* pogrupowanie bitów sygnału MFM w pary [zegar, dane] (jasno- i ciemnoszare tło pod przebiegiem)&lt;br /&gt;
* rozkodowanie sygnału MFM do bitów i bajtów stanowiących treść struktury sektora (&amp;quot;0&amp;quot; i &amp;quot;1&amp;quot; małą czcionką oznaczają kolejne bity zegara i danych MFM, &amp;quot;0&amp;quot; i &amp;quot;1&amp;quot; dużą czcionką bity danych, złożone niżej w bajty o podanej dużą czcionką wartości i odpowiadających im znakach ASCII)&lt;br /&gt;
* odczytanie nagłówków sektorów, zweryfikowanie sum kontrolnych nagłówków, określenie ich adresów (dwie pionowe zielone linie oznaczają zgodną 16-bit sumę CRC)&lt;br /&gt;
* odczytanie danych zapisanych w sektorach, zweryfikowanie sum kontrolnych&lt;br /&gt;
* złożenie zawartości sektorów w bajtowy obraz ścieżki&lt;br /&gt;
* złożenie bajtowych obrazów ścieżek w kompletny obraz dysku&lt;br /&gt;
&lt;br /&gt;
= Zawartość dysku =&lt;br /&gt;
&lt;br /&gt;
Dysk zawiera trzy obszary danych:&lt;br /&gt;
# Pierwszy cylinder (4*16 sektorów) jest niedostępny dla systemu MERA-400. Używa go wyłącznie procesor peryferyjny jako obszar do relokacji danych z uszkodzonych sektorów.&lt;br /&gt;
# Pozostała przestrzeń dostępna jest dla minikomuptera i zawiera dwa obszary dyskowe zorganizowane przez system operacyjny [[CROOK-5]]:&lt;br /&gt;
#* Etykieta &amp;quot;A&amp;quot; (5 MB) - obszar systemowy&lt;br /&gt;
#* Etykieta &amp;quot;C&amp;quot; (15 MB) - obszar roboczy dla użytkowników systemu&lt;br /&gt;
&lt;br /&gt;
== Obszar &amp;quot;A&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Obszar zawiera 332 zbiory, przede wszystkim binaria dla MERY-400:&lt;br /&gt;
* zbiory BOOT i BOOTL - dwa podstawowe elementy procesu [[Ładowanie systemu operacyjnego|ładowania systemu operacyjnego]]&lt;br /&gt;
* jądra systemu operacyjnego [[CROOK|CROOK-5]] w kilku [[Wersje systemu CROOK-5|wersjach]]: 62F, N8D, P8E, P8F&lt;br /&gt;
* kilkadziesiąt narzędzi dla systemu [[CROOK]]&lt;br /&gt;
* assemblery: ASSK, ASSM, GASS&lt;br /&gt;
* interpreter BASIC-a&lt;br /&gt;
* kompilator C&lt;br /&gt;
* FORTRAN&lt;br /&gt;
* PASCAL&lt;br /&gt;
* Modula-2&lt;br /&gt;
* translator CEMMA&lt;br /&gt;
* symulator systemu operacyjnego SOM-3&lt;br /&gt;
&lt;br /&gt;
== Obszar &amp;quot;C&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Obszar zawiera 1243 zbiory użytkowników, które można podzielić na kilka grup. Poniższa lista nie jest kompletna, pokazuje tylko zakres danych, które dzięki odczytaniu dysku stały się dostępne:&lt;br /&gt;
# Binaria&lt;br /&gt;
#* system testowy AMETEX Amepolu&lt;br /&gt;
#* konfigurator CROOK-5 - ostatni program napisany przez zespół rozwijający CROOK-a&lt;br /&gt;
#* niektóre narzędzia systemu UNIX w wersji dla MERY-400&lt;br /&gt;
# Dokumentacja&lt;br /&gt;
#* opisy systemu operacyjnego [[CROOK]]&lt;br /&gt;
#* opisy narzędzi systemowych&lt;br /&gt;
#* podręczniki programowania w językach LISP, ALGOL, C, ASSM, FORTRAN, ModRAL, PASCAL&lt;br /&gt;
#* opis dBASE III PLUS&lt;br /&gt;
#* opis procesorów [[MULTIX]] i [[PLIX]]: instrukcje instalacji, styk z MERĄ-400, opisy protokołów komunikacji&lt;br /&gt;
# Teksty różnych autorów traktujące o rozwoju CROOK-a i MERY-400, m.in.:&lt;br /&gt;
#* &#039;&#039;&amp;quot;Kierunki rozwoju systemu operacyjnego CROOK dla minikomputera MERA-400&amp;quot;&#039;&#039; – Z. Czerniak, W.J. Martin, M. Nikodemski&lt;br /&gt;
#* &#039;&#039;&amp;quot;Szybkie łącze dla lokalnej sieci minikomputerów MERA-400&amp;quot;&#039;&#039; – K. Anzelewicz, W. Bojarski, Z. Czerniak&lt;br /&gt;
#* &#039;&#039;&amp;quot;Systemy operacyjne CROOK-4 i CROOK-5 dla minikomputera MERA-400&amp;quot;&#039;&#039; – Z. Czerniak&lt;br /&gt;
#* &#039;&#039;&amp;quot;Łącze międzykomputerowe oparte na interface V24 dla minikomputera MX-16 (MERA-400)&amp;quot;&#039;&#039; – Z. Czerniak, M. Nikodemski&lt;br /&gt;
#* &#039;&#039;&amp;quot;Urządzenie sprzęgające minikomputery MERA-400&amp;quot;&#039;&#039; – Z. Czerniak&lt;br /&gt;
#* &#039;&#039;&amp;quot;System operacyjny sterujący lokalną siecią minikomputerów MERA-400&amp;quot;&#039;&#039; – W. Bojarski, Z. Czerniak&lt;br /&gt;
# Źródła&lt;br /&gt;
#* biblioteki fortranowe&lt;br /&gt;
#* biblioteki C&lt;br /&gt;
#* źródła narzędzi UNIX-a (C)&lt;br /&gt;
#* źródła narzędzi systemowych CROOK-5 (assembler)&lt;br /&gt;
#* źródła oprogramowania procesorów [[MULTIX]] i [[PLIX]] (firmware) (assembler 8085)&lt;br /&gt;
#* źródła systemu [[CROOK|CROOK-5]] w [[Wersje systemu CROOK-5|wersjach N76 i N8F]] oraz zbiory poprawek do wersji P76 i P8F (assembler)&lt;br /&gt;
&lt;br /&gt;
{{source|title=Opracowanie własne}}&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_graficzny_interfejs_u%C5%BCytkownika&amp;diff=3336</id>
		<title>EM400 - graficzny interfejs użytkownika</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_graficzny_interfejs_u%C5%BCytkownika&amp;diff=3336"/>
		<updated>2026-08-30T12:33:37Z</updated>

		<summary type="html">&lt;p&gt;Amo: UWAGA! Usunięcie treści (strona pozostała pusta)!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_tekstowy_interfejs_u%C5%BCytkownika&amp;diff=3335</id>
		<title>EM400 - tekstowy interfejs użytkownika</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_tekstowy_interfejs_u%C5%BCytkownika&amp;diff=3335"/>
		<updated>2026-08-30T12:33:02Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EM400 poza interfejsem graficznym Qt6 udostępnia prosty interfejs tekstowy, przeznaczony przede wszystkim do sterowania emulatorem przez inny program. Używają go na przykład testy emulatora. Jego konstrukcja umożliwia również sterowanie emulatorem przez użytkowników potrzebujących instalacji &amp;quot;headless&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Uruchomienie =&lt;br /&gt;
&lt;br /&gt;
 em400 -u cmd&lt;br /&gt;
&lt;br /&gt;
Interfejs działa wówczas na standardowym wejściu/wyjściu procesu.&lt;br /&gt;
&lt;br /&gt;
 em400 -u cmd:&amp;lt;port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Interfejs nasłuchuje na wskazanym porcie TCP na interfejsie loopback (127.0.0.1).&lt;br /&gt;
&lt;br /&gt;
= Protokół =&lt;br /&gt;
&lt;br /&gt;
Komunikacja odbywa się tekstowo. Każda komenda to linia zakończona znakiem nowej linii. Każda odpowiedź to równiż jedna linia, zaczynająca się od statusu:&lt;br /&gt;
&lt;br /&gt;
 OK: &amp;lt;wynik&amp;gt;&lt;br /&gt;
 ERR: &amp;lt;opis błędu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uwagi:&lt;br /&gt;
&lt;br /&gt;
* Nazwy komend nie rozróżniają wielkości liter.&lt;br /&gt;
* Argumenty rozdziela dowolny biały znak.&lt;br /&gt;
* Maksymalna długość linii wejściowej to 65536 bajtów. Dłuższa linia jest odrzucana w całości z błędem.&lt;br /&gt;
&lt;br /&gt;
== Format liczb ==&lt;br /&gt;
&lt;br /&gt;
Argumenty liczbowe są interpretowane według prefiksu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Podstawa !! Przykład&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x...&amp;lt;/code&amp;gt; || szesnastkowo || &amp;lt;code&amp;gt;0x40&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0...&amp;lt;/code&amp;gt; || ósemkowo || &amp;lt;code&amp;gt;0100&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| pozostałe || dziesiętnie || &amp;lt;code&amp;gt;64&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dopuszczalny zakres to -32768..65535. Wartość jest obcinana do 16 bitów.&lt;br /&gt;
&lt;br /&gt;
Argumenty typu włącz/wyłącz przyjmują wyłącznie &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Lista komend =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Komenda !! Argumenty !! Opis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;help&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[komenda]&amp;lt;/code&amp;gt; || Lista komend lub opis wskazanej komendy&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;info&amp;lt;/code&amp;gt; || || Wersja emulatora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; || || Stan procesora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;reg&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[nazwa [wartość]]&amp;lt;/code&amp;gt; || Odczyt/zapis rejestrów&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[numer]&amp;lt;/code&amp;gt; || Odczyt rejestru RZ lub zgłoszenie przerwania&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mem&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg adres liczba_komórek&amp;lt;/code&amp;gt; || Odczyt pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;memw&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;&amp;lt;seg&amp;gt; &amp;lt;adres&amp;gt; &amp;lt;wartość&amp;gt; ...&amp;lt;/code&amp;gt; || Zapis pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;memmap&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg&amp;lt;/code&amp;gt; || Mapa alokacji dla segmentu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg adres plik&amp;lt;/code&amp;gt; || Załadowanie pliku do pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;wyrażenie&amp;lt;/code&amp;gt; || Obliczenie wyrażenia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;brk&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;wyrażenie&amp;lt;/code&amp;gt; || Dodanie pułapki&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;brkdel&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; || Usunięcie pułapki&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; || || uruchomienie procesora (podniesienie klucza START)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stop&amp;lt;/code&amp;gt; || || zatrzymanie procesora (opuszczenie klucza START)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cycle&amp;lt;/code&amp;gt; || || Wykonanie jednego cyklu (klucz CYCLE)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt; || || zerowanie, reset (klucz CLEAR)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bin&amp;lt;/code&amp;gt; || || start ładowania binarnego (klucz BIN)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;oprq&amp;lt;/code&amp;gt; || || zgłoszenie operatora (klucz OPRQ)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;clock&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[on|off]&amp;lt;/code&amp;gt; || Stan zegara lub jego włączenie/wyączenie (klucz CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ips&amp;lt;/code&amp;gt; || || Średnia liczba instrukcji na sekundę&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;log&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[on|off]&amp;lt;/code&amp;gt; || Stan logowania lub jego włączenie/wyłączenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;logc&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[komponent [stan]]&amp;lt;/code&amp;gt; || Stan komponentów logowania lub ich włączenie/wyłączenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;quit&amp;lt;/code&amp;gt; || || Zakończenie pracy emulatora&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Opis komend =&lt;br /&gt;
&lt;br /&gt;
== state ==&lt;br /&gt;
&lt;br /&gt;
Zwraca bieżący stan procesora.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; state&lt;br /&gt;
 OK: STOP&lt;br /&gt;
&lt;br /&gt;
== reg ==&lt;br /&gt;
&lt;br /&gt;
Bez argumentów wypisuje wszystkie rejestry:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; reg&lt;br /&gt;
 OK: R0=0x0000 R1=0x0000 R2=0x0000 R3=0x0000 R4=0x0000 R5=0x0000 R6=0x0000 R7=0x0000 IC=0x0040 AC=0x0000 AR=0x0000 IR=0x0000 SR=0x0000 RZ=0x0000 KB=0x0000&lt;br /&gt;
&lt;br /&gt;
Podanie nazwy rejestru pokazuje zawartość wybranego rejestru, a nazwy i wartości powoduje jej zapis do rejestru:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; reg ic&lt;br /&gt;
 OK: 0x0040&lt;br /&gt;
 &amp;gt; reg ic 0x70&lt;br /&gt;
 OK: 0x0070&lt;br /&gt;
&lt;br /&gt;
Dostępne rejestry: R0-R7, IC, AC, AR, IR, SR, RZ, KB (klucze binarne pulpitu)&lt;br /&gt;
&lt;br /&gt;
== int ==&lt;br /&gt;
&lt;br /&gt;
Bez argumentu zwraca 32-bitowy rejestr zgłoszeń RZ. Z argumentem (0..31) zgłasza przerwanie o podanym numerze i zwraca RZ po zgłoszeniu.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; int&lt;br /&gt;
 OK: 0x00000000&lt;br /&gt;
 &amp;gt; int 5&lt;br /&gt;
 OK: 0x04000000&lt;br /&gt;
&lt;br /&gt;
== mem ==&lt;br /&gt;
&lt;br /&gt;
Odczytuje wymaganą liczbę słów z danego segmentu począwszy od podanego adresu. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt; mem 0 0x40 4&lt;br /&gt;
 OK: 0x0000 0x0000 0x0000 0x0000&lt;br /&gt;
&lt;br /&gt;
== memw ==&lt;br /&gt;
&lt;br /&gt;
Zapisuje kolejne słowa począwszy od podanego adresu. Liczba wartości jest&lt;br /&gt;
dowolna (do rozmiaru segmentu).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; memw 0 0x40 0x1234 0x5678&lt;br /&gt;
 OK: 2 words written&lt;br /&gt;
&lt;br /&gt;
== memmap ==&lt;br /&gt;
&lt;br /&gt;
Zwraca mapę zajętości segmentu jako 16-bitową maskę stron.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; memmap 0&lt;br /&gt;
 OK: 0x000f&lt;br /&gt;
&lt;br /&gt;
== load ==&lt;br /&gt;
&lt;br /&gt;
Ładuje plik do pamięci.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; load 0 0 test.bin&lt;br /&gt;
 OK: 1024 words loaded from file test.bin&lt;br /&gt;
&lt;br /&gt;
== eval ==&lt;br /&gt;
&lt;br /&gt;
Oblicza wyrażenie w kontekście bieżącego stanu maszyny i zwraca wynik dziesiętnie.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; eval r0 + 1&lt;br /&gt;
 OK: 5&lt;br /&gt;
 &amp;gt; eval [0:0x40]&lt;br /&gt;
 OK: 4660&lt;br /&gt;
&lt;br /&gt;
W przypadku błędu składni zwracany jest komunikat wraz z pozycją w tekście:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; eval r0 +&lt;br /&gt;
 ERR: syntax error, unexpected end of file (at 6-6)&lt;br /&gt;
&lt;br /&gt;
== brk / brkdel ==&lt;br /&gt;
&lt;br /&gt;
Pozwala dodać pułapkę. Pułapka jest wyrażeniem obliczanym przed każdą instrukcją. Gdy wynik jest niezerowy, procesor jest zatrzymywany. Zwracany jest numer&lt;br /&gt;
pułapki, służący później do jej usunięcia.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; brk ic == 0x100 &amp;amp;&amp;amp; r1 &amp;gt; 0&lt;br /&gt;
 OK: Added breakpoint: 0&lt;br /&gt;
 &amp;gt; brkdel 0&lt;br /&gt;
 OK: Removed breakpoint: 0&lt;br /&gt;
&lt;br /&gt;
== clock ==&lt;br /&gt;
&lt;br /&gt;
Zwraca stan lub włącza/wyłącza zegar (timer zgłaszający przerwanie zegarowe).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; clock&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; clock off&lt;br /&gt;
 OK: 0&lt;br /&gt;
&lt;br /&gt;
== ips ==&lt;br /&gt;
&lt;br /&gt;
Średnia liczba wykonanych instrukcji na sekundę od poprzedniego wywołania.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; ips&lt;br /&gt;
 OK: 1934281&lt;br /&gt;
&lt;br /&gt;
== log / logc ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;log&amp;lt;/code&amp;gt; włącza i wyłącza logowanie jako całość, &amp;lt;code&amp;gt;logc&amp;lt;/code&amp;gt; zarządza poszczególnymi komponentami logowania.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; log on&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; logc&lt;br /&gt;
 OK: LIB APP CPU&lt;br /&gt;
 &amp;gt; logc mx 1&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; logc mx&lt;br /&gt;
 OK: 1&lt;br /&gt;
&lt;br /&gt;
Opis komponentów można znaleźć [https://mera400.pl/EM400_-_konfiguracja#Logowanie tutaj]&lt;br /&gt;
&lt;br /&gt;
== quit ==&lt;br /&gt;
&lt;br /&gt;
Kończy pracę emulatora.&lt;br /&gt;
&lt;br /&gt;
= Składnia wyrażeń dla brk i eval =&lt;br /&gt;
&lt;br /&gt;
Ta sama składnia obowiązuje w komendach &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;brk&amp;lt;/code&amp;gt;. Wielkość liter nie ma znaczenia.&lt;br /&gt;
&lt;br /&gt;
= Literały =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Znaczenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;123&amp;lt;/code&amp;gt; || dziesiętnie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1f&amp;lt;/code&amp;gt; || szesnastkowo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;017&amp;lt;/code&amp;gt; || ósemkowo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b1010&amp;lt;/code&amp;gt; || dwójkowo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Elementy stanu maszyny =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Znaczenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r0..r7&amp;lt;/code&amp;gt; || rejestry ogólnego przeznaczenia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ic, ac, ar, ir, sr, kb&amp;lt;/code&amp;gt; || rejestry systemowe&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;z m v c l e g y x&amp;lt;/code&amp;gt; || flagi (bity rejestru R0)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rz&amp;lt;/code&amp;gt; || rejestr zgłoszeń przerwań&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rz[n]&amp;lt;/code&amp;gt; || pojedynczy bit rejestru zgłoszeń&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;alarm&amp;lt;/code&amp;gt; || stan ALARM&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mc&amp;lt;/code&amp;gt; || licznik pre-modyfikacji&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rm, q, bs, nb&amp;lt;/code&amp;gt; || pola rejestru SR&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[adres]&amp;lt;/code&amp;gt; || słowo pamięci w bieżącym bloku&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[blok:adres]&amp;lt;/code&amp;gt; || słowo pamięci w podanym bloku&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@ramka:segment&amp;lt;/code&amp;gt; || fizyczne położenie segmentu&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Operatory =&lt;br /&gt;
&lt;br /&gt;
Od najwyższego priorytetu:&lt;br /&gt;
&lt;br /&gt;
 [ ]&lt;br /&gt;
 ~ !&lt;br /&gt;
 * /&lt;br /&gt;
 + -&lt;br /&gt;
 &amp;lt;&amp;lt;&lt;br /&gt;
 &amp;gt;&amp;gt;&lt;br /&gt;
 &amp;lt;  &amp;gt;  &amp;lt;=  &amp;gt;=&lt;br /&gt;
 !=  &amp;lt;&amp;gt;&lt;br /&gt;
 ==&lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 ^&lt;br /&gt;
 |&lt;br /&gt;
 &amp;amp;&amp;amp;&lt;br /&gt;
 ||&lt;br /&gt;
&lt;br /&gt;
Dostępny jest także jednoargumentowy minus oraz nawiasy okrągłe.&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_tekstowy_interfejs_u%C5%BCytkownika&amp;diff=3334</id>
		<title>EM400 - tekstowy interfejs użytkownika</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_tekstowy_interfejs_u%C5%BCytkownika&amp;diff=3334"/>
		<updated>2026-08-30T12:32:05Z</updated>

		<summary type="html">&lt;p&gt;Amo: /* Lista komend */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EM400 poza interfejsem graficznym Qt6 udostępnia prosty interfejs tekstowy, przeznaczony przede wszystkim do sterowania emulatorem przez inny program. Używają go na przykład testy emulatora. Jego konstrukcja umożliwia również sterowanie emulatorem przez użytkowników potrzebujących instalacji &amp;quot;headless&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Uruchomienie =&lt;br /&gt;
&lt;br /&gt;
 em400 -u cmd&lt;br /&gt;
&lt;br /&gt;
Interfejs działa wówczas na standardowym wejściu/wyjściu procesu.&lt;br /&gt;
&lt;br /&gt;
 em400 -u cmd:&amp;lt;port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Interfejs nasłuchuje na wskazanym porcie TCP na interfejsie loopback (127.0.0.1).&lt;br /&gt;
&lt;br /&gt;
= Protokół =&lt;br /&gt;
&lt;br /&gt;
Komunikacja odbywa się tekstowo. Każda komenda to linia zakończona znakiem nowej linii. Każda odpowiedź to równiż jedna linia, zaczynająca się od statusu:&lt;br /&gt;
&lt;br /&gt;
 OK: &amp;lt;wynik&amp;gt;&lt;br /&gt;
 ERR: &amp;lt;opis błędu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uwagi:&lt;br /&gt;
&lt;br /&gt;
* Nazwy komend nie rozróżniają wielkości liter.&lt;br /&gt;
* Argumenty rozdziela dowolny biały znak.&lt;br /&gt;
* Maksymalna długość linii wejściowej to 65536 bajtów. Dłuższa linia jest odrzucana w całości z błędem.&lt;br /&gt;
&lt;br /&gt;
== Format liczb ==&lt;br /&gt;
&lt;br /&gt;
Argumenty liczbowe są interpretowane według prefiksu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Podstawa !! Przykład&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x...&amp;lt;/code&amp;gt; || szesnastkowo || &amp;lt;code&amp;gt;0x40&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0...&amp;lt;/code&amp;gt; || ósemkowo || &amp;lt;code&amp;gt;0100&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| pozostałe || dziesiętnie || &amp;lt;code&amp;gt;64&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dopuszczalny zakres to -32768..65535. Wartość jest obcinana do 16 bitów.&lt;br /&gt;
&lt;br /&gt;
Argumenty typu włącz/wyłącz przyjmują wyłącznie &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Lista komend =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Komenda !! Argumenty !! Opis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;help&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[komenda]&amp;lt;/code&amp;gt; || Lista komend lub opis wskazanej komendy&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;info&amp;lt;/code&amp;gt; || || Wersja emulatora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; || || Stan procesora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;reg&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[nazwa [wartość]]&amp;lt;/code&amp;gt; || Odczyt/zapis rejestrów&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[numer]&amp;lt;/code&amp;gt; || Odczyt rejestru RZ lub zgłoszenie przerwania&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mem&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg adres liczba_komórek&amp;lt;/code&amp;gt; || Odczyt pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;memw&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;&amp;lt;seg&amp;gt; &amp;lt;adres&amp;gt; &amp;lt;wartość&amp;gt; ...&amp;lt;/code&amp;gt; || Zapis pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;memmap&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg&amp;lt;/code&amp;gt; || Mapa alokacji dla segmentu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg adres plik&amp;lt;/code&amp;gt; || Załadowanie pliku do pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;wyrażenie&amp;lt;/code&amp;gt; || Obliczenie wyrażenia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;brk&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;wyrażenie&amp;lt;/code&amp;gt; || Dodanie pułapki&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;brkdel&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; || Usunięcie pułapki&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; || || uruchomienie procesora (podniesienie klucza START)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stop&amp;lt;/code&amp;gt; || || zatrzymanie procesora (opuszczenie klucza START)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cycle&amp;lt;/code&amp;gt; || || Wykonanie jednego cyklu (klucz CYCLE)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt; || || zerowanie, reset (klucz CLEAR)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bin&amp;lt;/code&amp;gt; || || start ładowania binarnego (klucz BIN)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;oprq&amp;lt;/code&amp;gt; || || zgłoszenie operatora (klucz OPRQ)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;clock&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[on|off]&amp;lt;/code&amp;gt; || Stan zegara lub jego włączenie/wyączenie (klucz CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ips&amp;lt;/code&amp;gt; || || Średnia liczba instrukcji na sekundę&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;log&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[on|off]&amp;lt;/code&amp;gt; || Stan logowania lub jego włączenie/wyłączenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;logc&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[komponent [stan]]&amp;lt;/code&amp;gt; || Stan komponentów logowania lub ich włączenie/wyłączenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;quit&amp;lt;/code&amp;gt; || || Zakończenie pracy emulatora&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Opis komend =&lt;br /&gt;
&lt;br /&gt;
== state ==&lt;br /&gt;
&lt;br /&gt;
Zwraca bieżący stan procesora.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; state&lt;br /&gt;
 OK: STOP&lt;br /&gt;
&lt;br /&gt;
== reg ==&lt;br /&gt;
&lt;br /&gt;
Bez argumentów wypisuje wszystkie rejestry:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; reg&lt;br /&gt;
 OK: R0=0x0000 R1=0x0000 R2=0x0000 R3=0x0000 R4=0x0000 R5=0x0000 R6=0x0000 R7=0x0000 IC=0x0040 AC=0x0000 AR=0x0000 IR=0x0000 SR=0x0000 RZ=0x0000 KB=0x0000&lt;br /&gt;
&lt;br /&gt;
Podanie nazwy rejestru pokazuje zawartość wybranego rejestru, a nazwy i wartości powoduje jej zapis do rejestru:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; reg ic&lt;br /&gt;
 OK: 0x0040&lt;br /&gt;
 &amp;gt; reg ic 0x70&lt;br /&gt;
 OK: 0x0070&lt;br /&gt;
&lt;br /&gt;
Dostępne rejestry: R0-R7, IC, AC, AR, IR, SR, RZ, KB (klucze binarne pulpitu)&lt;br /&gt;
&lt;br /&gt;
== int ==&lt;br /&gt;
&lt;br /&gt;
Bez argumentu zwraca 32-bitowy rejestr zgłoszeń RZ. Z argumentem (0..31) zgłasza przerwanie o podanym numerze i zwraca RZ po zgłoszeniu.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; int&lt;br /&gt;
 OK: 0x00000000&lt;br /&gt;
 &amp;gt; int 5&lt;br /&gt;
 OK: 0x04000000&lt;br /&gt;
&lt;br /&gt;
== mem ==&lt;br /&gt;
&lt;br /&gt;
Odczytuje wymaganą liczbę słów z danego segmentu począwszy od podanego adresu. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt; mem 0 0x40 4&lt;br /&gt;
 OK: 0x0000 0x0000 0x0000 0x0000&lt;br /&gt;
&lt;br /&gt;
== memw ==&lt;br /&gt;
&lt;br /&gt;
Zapisuje kolejne słowa począwszy od podanego adresu. Liczba wartości jest&lt;br /&gt;
dowolna (do rozmiaru segmentu).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; memw 0 0x40 0x1234 0x5678&lt;br /&gt;
 OK: 2 words written&lt;br /&gt;
&lt;br /&gt;
== memmap ==&lt;br /&gt;
&lt;br /&gt;
Zwraca mapę zajętości segmentu jako 16-bitową maskę stron.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; memmap 0&lt;br /&gt;
 OK: 0x000f&lt;br /&gt;
&lt;br /&gt;
== load ==&lt;br /&gt;
&lt;br /&gt;
Ładuje plik do pamięci.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; load 0 0 test.bin&lt;br /&gt;
 OK: 1024 words loaded from file test.bin&lt;br /&gt;
&lt;br /&gt;
== eval ==&lt;br /&gt;
&lt;br /&gt;
Oblicza wyrażenie w kontekście bieżącego stanu maszyny i zwraca wynik dziesiętnie.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; eval r0 + 1&lt;br /&gt;
 OK: 5&lt;br /&gt;
 &amp;gt; eval [0:0x40]&lt;br /&gt;
 OK: 4660&lt;br /&gt;
&lt;br /&gt;
W przypadku błędu składni zwracany jest komunikat wraz z pozycją w tekście:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; eval r0 +&lt;br /&gt;
 ERR: syntax error, unexpected end of file (at 6-6)&lt;br /&gt;
&lt;br /&gt;
== brk / brkdel ==&lt;br /&gt;
&lt;br /&gt;
Pozwala dodać pułapkę. Pułapka jest wyrażeniem obliczanym przed każdą instrukcją. Gdy wynik jest niezerowy, procesor jest zatrzymywany. Zwracany jest numer&lt;br /&gt;
pułapki, służący później do jej usunięcia.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; brk ic == 0x100 &amp;amp;&amp;amp; r1 &amp;gt; 0&lt;br /&gt;
 OK: Added breakpoint: 0&lt;br /&gt;
 &amp;gt; brkdel 0&lt;br /&gt;
 OK: Removed breakpoint: 0&lt;br /&gt;
&lt;br /&gt;
== clock ==&lt;br /&gt;
&lt;br /&gt;
Zwraca stan lub włącza/wyłącza zegar (timer zgłaszający przerwanie zegarowe).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; clock&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; clock off&lt;br /&gt;
 OK: 0&lt;br /&gt;
&lt;br /&gt;
== ips ==&lt;br /&gt;
&lt;br /&gt;
Średnia liczba wykonanych instrukcji na sekundę od poprzedniego wywołania.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; ips&lt;br /&gt;
 OK: 1934281&lt;br /&gt;
&lt;br /&gt;
== log / logc ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;log&amp;lt;/code&amp;gt; włącza i wyłącza logowanie jako całość, &amp;lt;code&amp;gt;logc&amp;lt;/code&amp;gt; zarządza poszczególnymi komponentami logowania.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; log on&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; logc&lt;br /&gt;
 OK: LIB APP CPU&lt;br /&gt;
 &amp;gt; logc mx 1&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; logc mx&lt;br /&gt;
 OK: 1&lt;br /&gt;
&lt;br /&gt;
Opis komponentów można znaleźć [https://mera400.pl/EM400_-_konfiguracja#Logowanie tutaj]&lt;br /&gt;
&lt;br /&gt;
== quit ==&lt;br /&gt;
&lt;br /&gt;
Kończy pracę emulatora.&lt;br /&gt;
&lt;br /&gt;
= Składnia wyrażeń dla brk i eval =&lt;br /&gt;
&lt;br /&gt;
Ta sama składnia obowiązuje w komendach &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;brk&amp;lt;/code&amp;gt;. Wielkość liter nie ma znaczenia.&lt;br /&gt;
&lt;br /&gt;
= Literały =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Znaczenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;123&amp;lt;/code&amp;gt; || dziesiętnie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1f&amp;lt;/code&amp;gt; || szesnastkowo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;017&amp;lt;/code&amp;gt; || ósemkowo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b1010&amp;lt;/code&amp;gt; || dwójkowo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Elementy stanu maszyny =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Znaczenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r0..r7&amp;lt;/code&amp;gt; || rejestry ogólnego przeznaczenia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ic, ac, ar, ir, sr, kb&amp;lt;/code&amp;gt; || rejestry systemowe&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;z m v c l e g y x&amp;lt;/code&amp;gt; || flagi (bity rejestru R0)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rz&amp;lt;/code&amp;gt; || rejestr zgłoszeń przerwań&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rz[n]&amp;lt;/code&amp;gt; || pojedynczy bit rejestru zgłoszeń&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;alarm&amp;lt;/code&amp;gt; || stan ALARM&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mc&amp;lt;/code&amp;gt; || licznik pre-modyfikacji&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rm, q, bs, nb&amp;lt;/code&amp;gt; || pola rejestru SR&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[adres]&amp;lt;/code&amp;gt; || słowo pamięci w bieżącym bloku&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[blok:adres]&amp;lt;/code&amp;gt; || słowo pamięci w podanym bloku&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@ramka:segment&amp;lt;/code&amp;gt; || fizyczne położenie segmentu&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Operatory =&lt;br /&gt;
&lt;br /&gt;
Od najwyższego priorytetu:&lt;br /&gt;
&lt;br /&gt;
 [ ]&lt;br /&gt;
 ~ !&lt;br /&gt;
 * /&lt;br /&gt;
 + -&lt;br /&gt;
 &amp;lt;&amp;lt;&lt;br /&gt;
 &amp;gt;&amp;gt;&lt;br /&gt;
 &amp;lt;  &amp;gt;  &amp;lt;=  &amp;gt;=&lt;br /&gt;
 !=  &amp;lt;&amp;gt;&lt;br /&gt;
 ==&lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 ^&lt;br /&gt;
 |&lt;br /&gt;
 &amp;amp;&amp;amp;&lt;br /&gt;
 ||&lt;br /&gt;
&lt;br /&gt;
Dostępny jest także jednoargumentowy minus oraz nawiasy okrągłe.&lt;br /&gt;
&lt;br /&gt;
= Przykład sesji =&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; info&lt;br /&gt;
 OK: EM400 1.0.0&lt;br /&gt;
 &amp;gt; memw 0 0x40 0x0501 0x0080&lt;br /&gt;
 OK: 2 words written&lt;br /&gt;
 &amp;gt; reg ic 0x40&lt;br /&gt;
 OK: 0x0040&lt;br /&gt;
 &amp;gt; brk ic == 0x42&lt;br /&gt;
 OK: Added breakpoint: 0&lt;br /&gt;
 &amp;gt; start&lt;br /&gt;
 OK: START&lt;br /&gt;
 &amp;gt; state&lt;br /&gt;
 OK: STOP&lt;br /&gt;
 &amp;gt; reg r1&lt;br /&gt;
 OK: 0x0080&lt;br /&gt;
 &amp;gt; quit&lt;br /&gt;
 OK: QUIT&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_tekstowy_interfejs_u%C5%BCytkownika&amp;diff=3333</id>
		<title>EM400 - tekstowy interfejs użytkownika</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_tekstowy_interfejs_u%C5%BCytkownika&amp;diff=3333"/>
		<updated>2026-08-30T12:27:16Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EM400 poza interfejsem graficznym Qt6 udostępnia prosty interfejs tekstowy, przeznaczony przede wszystkim do sterowania emulatorem przez inny program. Używają go na przykład testy emulatora. Jego konstrukcja umożliwia również sterowanie emulatorem przez użytkowników potrzebujących instalacji &amp;quot;headless&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Uruchomienie =&lt;br /&gt;
&lt;br /&gt;
 em400 -u cmd&lt;br /&gt;
&lt;br /&gt;
Interfejs działa wówczas na standardowym wejściu/wyjściu procesu.&lt;br /&gt;
&lt;br /&gt;
 em400 -u cmd:&amp;lt;port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Interfejs nasłuchuje na wskazanym porcie TCP na interfejsie loopback (127.0.0.1).&lt;br /&gt;
&lt;br /&gt;
= Protokół =&lt;br /&gt;
&lt;br /&gt;
Komunikacja odbywa się tekstowo. Każda komenda to linia zakończona znakiem nowej linii. Każda odpowiedź to równiż jedna linia, zaczynająca się od statusu:&lt;br /&gt;
&lt;br /&gt;
 OK: &amp;lt;wynik&amp;gt;&lt;br /&gt;
 ERR: &amp;lt;opis błędu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uwagi:&lt;br /&gt;
&lt;br /&gt;
* Nazwy komend nie rozróżniają wielkości liter.&lt;br /&gt;
* Argumenty rozdziela dowolny biały znak.&lt;br /&gt;
* Maksymalna długość linii wejściowej to 65536 bajtów. Dłuższa linia jest odrzucana w całości z błędem.&lt;br /&gt;
&lt;br /&gt;
== Format liczb ==&lt;br /&gt;
&lt;br /&gt;
Argumenty liczbowe są interpretowane według prefiksu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Podstawa !! Przykład&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x...&amp;lt;/code&amp;gt; || szesnastkowo || &amp;lt;code&amp;gt;0x40&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0...&amp;lt;/code&amp;gt; || ósemkowo || &amp;lt;code&amp;gt;0100&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| pozostałe || dziesiętnie || &amp;lt;code&amp;gt;64&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dopuszczalny zakres to -32768..65535. Wartość jest obcinana do 16 bitów.&lt;br /&gt;
&lt;br /&gt;
Argumenty typu włącz/wyłącz przyjmują wyłącznie &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Lista komend =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Komenda !! Argumenty !! Opis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;help&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[komenda]&amp;lt;/code&amp;gt; || Lista komend lub opis wskazanej komendy&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;info&amp;lt;/code&amp;gt; || || Wersja emulatora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; || || Stan procesora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;reg&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[nazwa [wartość]]&amp;lt;/code&amp;gt; || Odczyt/zapis rejestrów&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[numer]&amp;lt;/code&amp;gt; || Odczyt rejestru RZ lub zgłoszenie przerwania&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mem&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg adres liczba_komórek&amp;lt;/code&amp;gt; || Odczyt pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;memw&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;&amp;lt;seg&amp;gt; &amp;lt;adres&amp;gt; &amp;lt;wartość&amp;gt; ...&amp;lt;/code&amp;gt; || Zapis pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;memmap&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg&amp;lt;/code&amp;gt; || Mapa alokacji dla segmentu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg adres plik&amp;lt;/code&amp;gt; || Załadowanie pliku do pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;wyrażenie&amp;lt;/code&amp;gt; || Obliczenie wyrażenia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;brk&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;wyrażenie&amp;lt;/code&amp;gt; || Dodanie pułapki&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;brkdel&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; || Usunięcie pułapki&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; || || uruchomienie procesora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stop&amp;lt;/code&amp;gt; || || zatrzymanie procesora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cycle&amp;lt;/code&amp;gt; || || Wykonanie jednego cyklu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt; || || zerowanie (reset)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bin&amp;lt;/code&amp;gt; || || start ładowania binarnego&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;oprq&amp;lt;/code&amp;gt; || || OPRQ — zgłoszenie operatora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;clock&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[on|off]&amp;lt;/code&amp;gt; || Stan zegara lub jego włączenie/wyączenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ips&amp;lt;/code&amp;gt; || || Średnia liczba instrukcji na sekundę&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;log&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[on|off]&amp;lt;/code&amp;gt; || Stan logowania lub jego włączenie/wyłączenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;logc&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[komponent [stan]]&amp;lt;/code&amp;gt; || Stan komponentów logowania lub ich włączenie/wyłączenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;quit&amp;lt;/code&amp;gt; || || Zakończenie pracy emulatora&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Opis komend =&lt;br /&gt;
&lt;br /&gt;
== state ==&lt;br /&gt;
&lt;br /&gt;
Zwraca bieżący stan procesora.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; state&lt;br /&gt;
 OK: STOP&lt;br /&gt;
&lt;br /&gt;
== reg ==&lt;br /&gt;
&lt;br /&gt;
Bez argumentów wypisuje wszystkie rejestry:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; reg&lt;br /&gt;
 OK: R0=0x0000 R1=0x0000 R2=0x0000 R3=0x0000 R4=0x0000 R5=0x0000 R6=0x0000 R7=0x0000 IC=0x0040 AC=0x0000 AR=0x0000 IR=0x0000 SR=0x0000 RZ=0x0000 KB=0x0000&lt;br /&gt;
&lt;br /&gt;
Podanie nazwy rejestru pokazuje zawartość wybranego rejestru, a nazwy i wartości powoduje jej zapis do rejestru:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; reg ic&lt;br /&gt;
 OK: 0x0040&lt;br /&gt;
 &amp;gt; reg ic 0x70&lt;br /&gt;
 OK: 0x0070&lt;br /&gt;
&lt;br /&gt;
Dostępne rejestry: R0-R7, IC, AC, AR, IR, SR, RZ, KB (klucze binarne pulpitu)&lt;br /&gt;
&lt;br /&gt;
== int ==&lt;br /&gt;
&lt;br /&gt;
Bez argumentu zwraca 32-bitowy rejestr zgłoszeń RZ. Z argumentem (0..31) zgłasza przerwanie o podanym numerze i zwraca RZ po zgłoszeniu.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; int&lt;br /&gt;
 OK: 0x00000000&lt;br /&gt;
 &amp;gt; int 5&lt;br /&gt;
 OK: 0x04000000&lt;br /&gt;
&lt;br /&gt;
== mem ==&lt;br /&gt;
&lt;br /&gt;
Odczytuje wymaganą liczbę słów z danego segmentu począwszy od podanego adresu. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt; mem 0 0x40 4&lt;br /&gt;
 OK: 0x0000 0x0000 0x0000 0x0000&lt;br /&gt;
&lt;br /&gt;
== memw ==&lt;br /&gt;
&lt;br /&gt;
Zapisuje kolejne słowa począwszy od podanego adresu. Liczba wartości jest&lt;br /&gt;
dowolna (do rozmiaru segmentu).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; memw 0 0x40 0x1234 0x5678&lt;br /&gt;
 OK: 2 words written&lt;br /&gt;
&lt;br /&gt;
== memmap ==&lt;br /&gt;
&lt;br /&gt;
Zwraca mapę zajętości segmentu jako 16-bitową maskę stron.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; memmap 0&lt;br /&gt;
 OK: 0x000f&lt;br /&gt;
&lt;br /&gt;
== load ==&lt;br /&gt;
&lt;br /&gt;
Ładuje plik do pamięci.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; load 0 0 test.bin&lt;br /&gt;
 OK: 1024 words loaded from file test.bin&lt;br /&gt;
&lt;br /&gt;
== eval ==&lt;br /&gt;
&lt;br /&gt;
Oblicza wyrażenie w kontekście bieżącego stanu maszyny i zwraca wynik dziesiętnie.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; eval r0 + 1&lt;br /&gt;
 OK: 5&lt;br /&gt;
 &amp;gt; eval [0:0x40]&lt;br /&gt;
 OK: 4660&lt;br /&gt;
&lt;br /&gt;
W przypadku błędu składni zwracany jest komunikat wraz z pozycją w tekście:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; eval r0 +&lt;br /&gt;
 ERR: syntax error, unexpected end of file (at 6-6)&lt;br /&gt;
&lt;br /&gt;
== brk / brkdel ==&lt;br /&gt;
&lt;br /&gt;
Pozwala dodać pułapkę. Pułapka jest wyrażeniem obliczanym przed każdą instrukcją. Gdy wynik jest niezerowy, procesor jest zatrzymywany. Zwracany jest numer&lt;br /&gt;
pułapki, służący później do jej usunięcia.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; brk ic == 0x100 &amp;amp;&amp;amp; r1 &amp;gt; 0&lt;br /&gt;
 OK: Added breakpoint: 0&lt;br /&gt;
 &amp;gt; brkdel 0&lt;br /&gt;
 OK: Removed breakpoint: 0&lt;br /&gt;
&lt;br /&gt;
== clock ==&lt;br /&gt;
&lt;br /&gt;
Zwraca stan lub włącza/wyłącza zegar (timer zgłaszający przerwanie zegarowe).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; clock&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; clock off&lt;br /&gt;
 OK: 0&lt;br /&gt;
&lt;br /&gt;
== ips ==&lt;br /&gt;
&lt;br /&gt;
Średnia liczba wykonanych instrukcji na sekundę od poprzedniego wywołania.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; ips&lt;br /&gt;
 OK: 1934281&lt;br /&gt;
&lt;br /&gt;
== log / logc ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;log&amp;lt;/code&amp;gt; włącza i wyłącza logowanie jako całość, &amp;lt;code&amp;gt;logc&amp;lt;/code&amp;gt; zarządza poszczególnymi komponentami logowania.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; log on&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; logc&lt;br /&gt;
 OK: LIB APP CPU&lt;br /&gt;
 &amp;gt; logc mx 1&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; logc mx&lt;br /&gt;
 OK: 1&lt;br /&gt;
&lt;br /&gt;
Opis komponentów można znaleźć [https://mera400.pl/EM400_-_konfiguracja#Logowanie tutaj]&lt;br /&gt;
&lt;br /&gt;
== quit ==&lt;br /&gt;
&lt;br /&gt;
Kończy pracę emulatora.&lt;br /&gt;
&lt;br /&gt;
= Składnia wyrażeń dla brk i eval =&lt;br /&gt;
&lt;br /&gt;
Ta sama składnia obowiązuje w komendach &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;brk&amp;lt;/code&amp;gt;. Wielkość liter nie ma znaczenia.&lt;br /&gt;
&lt;br /&gt;
= Literały =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Znaczenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;123&amp;lt;/code&amp;gt; || dziesiętnie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1f&amp;lt;/code&amp;gt; || szesnastkowo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;017&amp;lt;/code&amp;gt; || ósemkowo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b1010&amp;lt;/code&amp;gt; || dwójkowo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Elementy stanu maszyny =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Znaczenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r0..r7&amp;lt;/code&amp;gt; || rejestry ogólnego przeznaczenia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ic, ac, ar, ir, sr, kb&amp;lt;/code&amp;gt; || rejestry systemowe&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;z m v c l e g y x&amp;lt;/code&amp;gt; || flagi (bity rejestru R0)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rz&amp;lt;/code&amp;gt; || rejestr zgłoszeń przerwań&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rz[n]&amp;lt;/code&amp;gt; || pojedynczy bit rejestru zgłoszeń&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;alarm&amp;lt;/code&amp;gt; || stan ALARM&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mc&amp;lt;/code&amp;gt; || licznik pre-modyfikacji&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rm, q, bs, nb&amp;lt;/code&amp;gt; || pola rejestru SR&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[adres]&amp;lt;/code&amp;gt; || słowo pamięci w bieżącym bloku&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[blok:adres]&amp;lt;/code&amp;gt; || słowo pamięci w podanym bloku&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@ramka:segment&amp;lt;/code&amp;gt; || fizyczne położenie segmentu&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Operatory =&lt;br /&gt;
&lt;br /&gt;
Od najwyższego priorytetu:&lt;br /&gt;
&lt;br /&gt;
 [ ]&lt;br /&gt;
 ~ !&lt;br /&gt;
 * /&lt;br /&gt;
 + -&lt;br /&gt;
 &amp;lt;&amp;lt;&lt;br /&gt;
 &amp;gt;&amp;gt;&lt;br /&gt;
 &amp;lt;  &amp;gt;  &amp;lt;=  &amp;gt;=&lt;br /&gt;
 !=  &amp;lt;&amp;gt;&lt;br /&gt;
 ==&lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 ^&lt;br /&gt;
 |&lt;br /&gt;
 &amp;amp;&amp;amp;&lt;br /&gt;
 ||&lt;br /&gt;
&lt;br /&gt;
Dostępny jest także jednoargumentowy minus oraz nawiasy okrągłe.&lt;br /&gt;
&lt;br /&gt;
= Przykład sesji =&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; info&lt;br /&gt;
 OK: EM400 1.0.0&lt;br /&gt;
 &amp;gt; memw 0 0x40 0x0501 0x0080&lt;br /&gt;
 OK: 2 words written&lt;br /&gt;
 &amp;gt; reg ic 0x40&lt;br /&gt;
 OK: 0x0040&lt;br /&gt;
 &amp;gt; brk ic == 0x42&lt;br /&gt;
 OK: Added breakpoint: 0&lt;br /&gt;
 &amp;gt; start&lt;br /&gt;
 OK: START&lt;br /&gt;
 &amp;gt; state&lt;br /&gt;
 OK: STOP&lt;br /&gt;
 &amp;gt; reg r1&lt;br /&gt;
 OK: 0x0080&lt;br /&gt;
 &amp;gt; quit&lt;br /&gt;
 OK: QUIT&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_tekstowy_interfejs_u%C5%BCytkownika&amp;diff=3332</id>
		<title>EM400 - tekstowy interfejs użytkownika</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_tekstowy_interfejs_u%C5%BCytkownika&amp;diff=3332"/>
		<updated>2026-08-30T12:24:34Z</updated>

		<summary type="html">&lt;p&gt;Amo: Utworzono nową stronę &amp;quot;EM400 poza interfejsem graficznym Qt6 udostępnia prosty interfejs tekstowy, przeznaczony przede wszystkim do sterowania emulatorem przez inny program. Używają go na przykład testy emulatora. Jego konstrukcja umożliwia również sterowanie emulatorem przez użytkowników potrzebujących instalacji &amp;quot;headless&amp;quot;.  = Uruchomienie =   em400 -u cmd  Interfejs działa wówczas na standardowym wejściu/wyjściu procesu.   em400 -u cmd:&amp;lt;port&amp;gt;  Interfejs nasłuchuje na ws…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EM400 poza interfejsem graficznym Qt6 udostępnia prosty interfejs tekstowy, przeznaczony przede wszystkim do sterowania emulatorem przez inny program. Używają go na przykład testy emulatora. Jego konstrukcja umożliwia również sterowanie emulatorem przez użytkowników potrzebujących instalacji &amp;quot;headless&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Uruchomienie =&lt;br /&gt;
&lt;br /&gt;
 em400 -u cmd&lt;br /&gt;
&lt;br /&gt;
Interfejs działa wówczas na standardowym wejściu/wyjściu procesu.&lt;br /&gt;
&lt;br /&gt;
 em400 -u cmd:&amp;lt;port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Interfejs nasłuchuje na wskazanym porcie TCP na interfejsie loopback (127.0.0.1).&lt;br /&gt;
&lt;br /&gt;
=== Protokół ===&lt;br /&gt;
&lt;br /&gt;
Komunikacja odbywa się tekstowo. Każda komenda to linia zakończona znakiem nowej linii. Każda odpowiedź to równiż jedna linia, zaczynająca się od statusu:&lt;br /&gt;
&lt;br /&gt;
 OK: &amp;lt;wynik&amp;gt;&lt;br /&gt;
 ERR: &amp;lt;opis błędu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uwagi:&lt;br /&gt;
&lt;br /&gt;
* Nazwy komend nie rozróżniają wielkości liter.&lt;br /&gt;
* Argumenty rozdziela dowolny biały znak.&lt;br /&gt;
* Maksymalna długość linii wejściowej to 65536 bajtów. Dłuższa linia jest odrzucana w całości z błędem.&lt;br /&gt;
&lt;br /&gt;
==== Format liczb ====&lt;br /&gt;
&lt;br /&gt;
Argumenty liczbowe są interpretowane według prefiksu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Podstawa !! Przykład&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x...&amp;lt;/code&amp;gt; || szesnastkowo || &amp;lt;code&amp;gt;0x40&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0...&amp;lt;/code&amp;gt; || ósemkowo || &amp;lt;code&amp;gt;0100&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| pozostałe || dziesiętnie || &amp;lt;code&amp;gt;64&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dopuszczalny zakres to -32768..65535. Wartość jest obcinana do 16 bitów.&lt;br /&gt;
&lt;br /&gt;
Argumenty typu włącz/wyłącz przyjmują wyłącznie &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Lista komend ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Komenda !! Argumenty !! Opis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;help&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[komenda]&amp;lt;/code&amp;gt; || Lista komend lub opis wskazanej komendy&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;info&amp;lt;/code&amp;gt; || || Wersja emulatora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; || || Stan procesora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;reg&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[nazwa [wartość]]&amp;lt;/code&amp;gt; || Odczyt/zapis rejestrów&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[numer]&amp;lt;/code&amp;gt; || Odczyt rejestru RZ lub zgłoszenie przerwania&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mem&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg adres liczba_komórek&amp;lt;/code&amp;gt; || Odczyt pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;memw&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;&amp;lt;seg&amp;gt; &amp;lt;adres&amp;gt; &amp;lt;wartość&amp;gt; ...&amp;lt;/code&amp;gt; || Zapis pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;memmap&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg&amp;lt;/code&amp;gt; || Mapa alokacji dla segmentu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;seg adres plik&amp;lt;/code&amp;gt; || Załadowanie pliku do pamięci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;wyrażenie&amp;lt;/code&amp;gt; || Obliczenie wyrażenia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;brk&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;wyrażenie&amp;lt;/code&amp;gt; || Dodanie pułapki&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;brkdel&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; || Usunięcie pułapki&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; || || uruchomienie procesora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stop&amp;lt;/code&amp;gt; || || zatrzymanie procesora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cycle&amp;lt;/code&amp;gt; || || Wykonanie jednego cyklu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt; || || zerowanie (reset)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bin&amp;lt;/code&amp;gt; || || start ładowania binarnego&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;oprq&amp;lt;/code&amp;gt; || || OPRQ — zgłoszenie operatora&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;clock&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[on|off]&amp;lt;/code&amp;gt; || Stan zegara lub jego włączenie/wyączenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ips&amp;lt;/code&amp;gt; || || Średnia liczba instrukcji na sekundę&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;log&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[on|off]&amp;lt;/code&amp;gt; || Stan logowania lub jego włączenie/wyłączenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;logc&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[komponent [stan]]&amp;lt;/code&amp;gt; || Stan komponentów logowania lub ich włączenie/wyłączenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;quit&amp;lt;/code&amp;gt; || || Zakończenie pracy emulatora&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Opis komend ===&lt;br /&gt;
&lt;br /&gt;
==== state ====&lt;br /&gt;
&lt;br /&gt;
Zwraca bieżący stan procesora.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; state&lt;br /&gt;
 OK: STOP&lt;br /&gt;
&lt;br /&gt;
==== reg ====&lt;br /&gt;
&lt;br /&gt;
Bez argumentów wypisuje wszystkie rejestry:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; reg&lt;br /&gt;
 OK: R0=0x0000 R1=0x0000 R2=0x0000 R3=0x0000 R4=0x0000 R5=0x0000 R6=0x0000 R7=0x0000 IC=0x0040 AC=0x0000 AR=0x0000 IR=0x0000 SR=0x0000 RZ=0x0000 KB=0x0000&lt;br /&gt;
&lt;br /&gt;
Podanie nazwy rejestru pokazuje zawartość wybranego rejestru, a nazwy i wartości powoduje jej zapis do rejestru:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; reg ic&lt;br /&gt;
 OK: 0x0040&lt;br /&gt;
 &amp;gt; reg ic 0x70&lt;br /&gt;
 OK: 0x0070&lt;br /&gt;
&lt;br /&gt;
Dostępne rejestry: R0-R7, IC, AC, AR, IR, SR, RZ, KB (klucze binarne pulpitu)&lt;br /&gt;
&lt;br /&gt;
==== int ====&lt;br /&gt;
&lt;br /&gt;
Bez argumentu zwraca 32-bitowy rejestr zgłoszeń RZ. Z argumentem (0..31) zgłasza przerwanie o podanym numerze i zwraca RZ po zgłoszeniu.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; int&lt;br /&gt;
 OK: 0x00000000&lt;br /&gt;
 &amp;gt; int 5&lt;br /&gt;
 OK: 0x04000000&lt;br /&gt;
&lt;br /&gt;
==== mem ====&lt;br /&gt;
&lt;br /&gt;
Odczytuje wymaganą liczbę słów z danego segmentu począwszy od podanego adresu. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt; mem 0 0x40 4&lt;br /&gt;
 OK: 0x0000 0x0000 0x0000 0x0000&lt;br /&gt;
&lt;br /&gt;
==== memw ====&lt;br /&gt;
&lt;br /&gt;
Zapisuje kolejne słowa począwszy od podanego adresu. Liczba wartości jest&lt;br /&gt;
dowolna (do rozmiaru segmentu).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; memw 0 0x40 0x1234 0x5678&lt;br /&gt;
 OK: 2 words written&lt;br /&gt;
&lt;br /&gt;
==== memmap ====&lt;br /&gt;
&lt;br /&gt;
Zwraca mapę zajętości segmentu jako 16-bitową maskę stron.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; memmap 0&lt;br /&gt;
 OK: 0x000f&lt;br /&gt;
&lt;br /&gt;
==== load ====&lt;br /&gt;
&lt;br /&gt;
Ładuje plik do pamięci.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; load 0 0 test.bin&lt;br /&gt;
 OK: 1024 words loaded from file test.bin&lt;br /&gt;
&lt;br /&gt;
==== eval ====&lt;br /&gt;
&lt;br /&gt;
Oblicza wyrażenie w kontekście bieżącego stanu maszyny i zwraca wynik dziesiętnie.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; eval r0 + 1&lt;br /&gt;
 OK: 5&lt;br /&gt;
 &amp;gt; eval [0:0x40]&lt;br /&gt;
 OK: 4660&lt;br /&gt;
&lt;br /&gt;
W przypadku błędu składni zwracany jest komunikat wraz z pozycją w tekście:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; eval r0 +&lt;br /&gt;
 ERR: syntax error, unexpected end of file (at 6-6)&lt;br /&gt;
&lt;br /&gt;
==== brk / brkdel ====&lt;br /&gt;
&lt;br /&gt;
Pozwala dodać pułapkę. Pułapka jest wyrażeniem obliczanym przed każdą instrukcją. Gdy wynik jest niezerowy, procesor jest zatrzymywany. Zwracany jest numer&lt;br /&gt;
pułapki, służący później do jej usunięcia.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; brk ic == 0x100 &amp;amp;&amp;amp; r1 &amp;gt; 0&lt;br /&gt;
 OK: Added breakpoint: 0&lt;br /&gt;
 &amp;gt; brkdel 0&lt;br /&gt;
 OK: Removed breakpoint: 0&lt;br /&gt;
&lt;br /&gt;
==== clock ====&lt;br /&gt;
&lt;br /&gt;
Zwraca stan lub włącza/wyłącza zegar (timer zgłaszający przerwanie zegarowe).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; clock&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; clock off&lt;br /&gt;
 OK: 0&lt;br /&gt;
&lt;br /&gt;
==== ips ====&lt;br /&gt;
&lt;br /&gt;
Średnia liczba wykonanych instrukcji na sekundę od poprzedniego wywołania.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; ips&lt;br /&gt;
 OK: 1934281&lt;br /&gt;
&lt;br /&gt;
==== log / logc ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;log&amp;lt;/code&amp;gt; włącza i wyłącza logowanie jako całość, &amp;lt;code&amp;gt;logc&amp;lt;/code&amp;gt; zarządza poszczególnymi komponentami logowania.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; log on&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; logc&lt;br /&gt;
 OK: LIB APP CPU&lt;br /&gt;
 &amp;gt; logc mx 1&lt;br /&gt;
 OK: 1&lt;br /&gt;
 &amp;gt; logc mx&lt;br /&gt;
 OK: 1&lt;br /&gt;
&lt;br /&gt;
Opis komponentów można znaleźć [https://mera400.pl/EM400_-_konfiguracja#Logowanie tutaj]&lt;br /&gt;
&lt;br /&gt;
==== quit ====&lt;br /&gt;
&lt;br /&gt;
Kończy pracę emulatora.&lt;br /&gt;
&lt;br /&gt;
=== Składnia wyrażeń dla brk i eval ===&lt;br /&gt;
&lt;br /&gt;
Ta sama składnia obowiązuje w komendach &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;brk&amp;lt;/code&amp;gt;. Wielkość liter nie ma znaczenia.&lt;br /&gt;
&lt;br /&gt;
==== Literały ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Znaczenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;123&amp;lt;/code&amp;gt; || dziesiętnie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1f&amp;lt;/code&amp;gt; || szesnastkowo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;017&amp;lt;/code&amp;gt; || ósemkowo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b1010&amp;lt;/code&amp;gt; || dwójkowo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Elementy stanu maszyny ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zapis !! Znaczenie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r0..r7&amp;lt;/code&amp;gt; || rejestry ogólnego przeznaczenia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ic, ac, ar, ir, sr, kb&amp;lt;/code&amp;gt; || rejestry systemowe&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;z m v c l e g y x&amp;lt;/code&amp;gt; || flagi (bity rejestru R0)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rz&amp;lt;/code&amp;gt; || rejestr zgłoszeń przerwań&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rz[n]&amp;lt;/code&amp;gt; || pojedynczy bit rejestru zgłoszeń&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;alarm&amp;lt;/code&amp;gt; || stan ALARM&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mc&amp;lt;/code&amp;gt; || licznik pre-modyfikacji&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rm, q, bs, nb&amp;lt;/code&amp;gt; || pola rejestru SR&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[adres]&amp;lt;/code&amp;gt; || słowo pamięci w bieżącym bloku&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[blok:adres]&amp;lt;/code&amp;gt; || słowo pamięci w podanym bloku&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@ramka:segment&amp;lt;/code&amp;gt; || fizyczne położenie segmentu&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Operatory ====&lt;br /&gt;
&lt;br /&gt;
Od najwyższego priorytetu:&lt;br /&gt;
&lt;br /&gt;
 [ ]&lt;br /&gt;
 ~ !&lt;br /&gt;
 * /&lt;br /&gt;
 + -&lt;br /&gt;
 &amp;lt;&amp;lt;&lt;br /&gt;
 &amp;gt;&amp;gt;&lt;br /&gt;
 &amp;lt;  &amp;gt;  &amp;lt;=  &amp;gt;=&lt;br /&gt;
 !=  &amp;lt;&amp;gt;&lt;br /&gt;
 ==&lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 ^&lt;br /&gt;
 |&lt;br /&gt;
 &amp;amp;&amp;amp;&lt;br /&gt;
 ||&lt;br /&gt;
&lt;br /&gt;
Dostępny jest także jednoargumentowy minus oraz nawiasy okrągłe.&lt;br /&gt;
&lt;br /&gt;
=== Przykład sesji ===&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; info&lt;br /&gt;
 OK: EM400 1.0.0&lt;br /&gt;
 &amp;gt; memw 0 0x40 0x0501 0x0080&lt;br /&gt;
 OK: 2 words written&lt;br /&gt;
 &amp;gt; reg ic 0x40&lt;br /&gt;
 OK: 0x0040&lt;br /&gt;
 &amp;gt; brk ic == 0x42&lt;br /&gt;
 OK: Added breakpoint: 0&lt;br /&gt;
 &amp;gt; start&lt;br /&gt;
 OK: START&lt;br /&gt;
 &amp;gt; state&lt;br /&gt;
 OK: STOP&lt;br /&gt;
 &amp;gt; reg r1&lt;br /&gt;
 OK: 0x0080&lt;br /&gt;
 &amp;gt; quit&lt;br /&gt;
 OK: QUIT&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3331</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3331"/>
		<updated>2026-08-30T11:14:49Z</updated>

		<summary type="html">&lt;p&gt;Amo: /* Dokumentacja użytkownika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* pamięć Elwro (ferromagnetyczna, bloki po 32ksłowa)&lt;br /&gt;
* [[Pamięć MEGA]] [[Amepol]]-u (półprzewodnikowa, bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy&lt;br /&gt;
** terminal znakowy&lt;br /&gt;
** pamięć SP45DE - napęd dyskietek 8&amp;quot;&lt;br /&gt;
** [[Zegar czasu rzeczywistego Amepolu]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]]&lt;br /&gt;
** dysk [[Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - uruchamianie|Uruchamianie]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - graficzny interfejs użytkownika|Graficzny interfejs użytkownika]]&lt;br /&gt;
* [[EM400 - tekstowy interfejs użytkownika|Tekstowy interfejs użytkownika]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
* [[EM400 - uruchamianie programów]]&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jakubfi?tab=repositories Repozytoria źródeł emulatora i narzędzi]&lt;br /&gt;
* [[Wydajność EM400|Wydajność]] (pomiary wydajności nie są już prowadzone)&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3330</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3330"/>
		<updated>2026-08-30T11:13:49Z</updated>

		<summary type="html">&lt;p&gt;Amo: /* Dokumentacja użytkownika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* pamięć Elwro (ferromagnetyczna, bloki po 32ksłowa)&lt;br /&gt;
* [[Pamięć MEGA]] [[Amepol]]-u (półprzewodnikowa, bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy&lt;br /&gt;
** terminal znakowy&lt;br /&gt;
** pamięć SP45DE - napęd dyskietek 8&amp;quot;&lt;br /&gt;
** [[Zegar czasu rzeczywistego Amepolu]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]]&lt;br /&gt;
** dysk [[Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - uruchamianie|Uruchamianie]]&lt;br /&gt;
* [[EM400 - graficzny interfejs użytkownika|Graficzny interfejs użytkownika]]&lt;br /&gt;
* [[EM400 - tekstowy interfejs użytkownika|Tekstowy interfejs użytkownika]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
* [[EM400 - uruchamianie programów]]&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jakubfi?tab=repositories Repozytoria źródeł emulatora i narzędzi]&lt;br /&gt;
* [[Wydajność EM400|Wydajność]] (pomiary wydajności nie są już prowadzone)&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_graficzny_interfejs_u%C5%BCytkownika&amp;diff=3329</id>
		<title>EM400 - graficzny interfejs użytkownika</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_graficzny_interfejs_u%C5%BCytkownika&amp;diff=3329"/>
		<updated>2026-08-30T11:13:02Z</updated>

		<summary type="html">&lt;p&gt;Amo: Amo przeniósł(-osła) stronę EM400 - graficzny interfeis użytkownika do EM400 - graficzny interfejs użytkownika, bez pozostawienia przekierowania pod starym tytułem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debugger emulatora EM400 pozwala śledzić i kontrolować stan emulowanej maszyny.&lt;br /&gt;
&lt;br /&gt;
W linii poleceń debuggera można używać następujących konstrukcji:&lt;br /&gt;
&lt;br /&gt;
= Polecenia =&lt;br /&gt;
&lt;br /&gt;
Polecenia służą do sterowania pracą emulatora i debuggera oraz wyświetlania informacji o stanie emulowanej maszyny.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;quit&#039;&#039;&#039; - Zakończ pracę emulatora&lt;br /&gt;
* &#039;&#039;&#039;cycle&#039;&#039;&#039; - Wykonaj instrukcję wskazaną przez licznik rozkazów.&lt;br /&gt;
* &#039;&#039;&#039;start&#039;&#039;&#039; - Kontynuuj emulację aż do napotkania kolejnej pułapki&lt;br /&gt;
* &#039;&#039;&#039;load &amp;lt;plik&amp;gt;&#039;&#039;&#039; - Załaduj zawartość pliku do bloku pamięci numer 0.&lt;br /&gt;
* &#039;&#039;&#039;help [&#039;&#039;cmd&#039;&#039;]&#039;&#039;&#039; - Wyświetl pomoc. Jeśli opcjonalny parametr &#039;&#039;cmd&#039;&#039; jest obecny, wyświetl pomoc na temat komendy &#039;&#039;cmd&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;regs&#039;&#039;&#039; - Wyświetl zawartość rejestrów R1-R7&lt;br /&gt;
* &#039;&#039;&#039;sregs&#039;&#039;&#039; - Wyświetl zawartość rejestrów R0, IR, IC, SR&lt;br /&gt;
* &#039;&#039;&#039;clear&#039;&#039;&#039; - Zresetuj emulowaną maszynę. Wpisuje &#039;&#039;0&#039;&#039; do wszystkich rejestrów i wskaźników.&lt;br /&gt;
* &#039;&#039;&#039;dasm [[&#039;&#039;addr&#039;&#039;] &#039;&#039;n&#039;&#039;]&#039;&#039;&#039; - Wyświetl deasemblację zawartości pamięci. Jeśli żaden parametr nie został podany, deasemblowana jest instrukcja wskazana przez licznik rozkazów. Jeśli podany jest opcjonalny parametr &#039;&#039;n&#039;&#039; deasemblowanych jest &#039;&#039;n&#039;&#039; kolejnych instrukcji. Jeśli podano również parametr &#039;&#039;addr&#039;&#039;, deasemblacja rozpoczynana jest od adresu &#039;&#039;addr&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mem [&#039;&#039;blok&#039;&#039;:] &#039;&#039;&amp;lt;start&amp;gt;&#039;&#039; &#039;&#039;[ilość]&#039;&#039;&#039;&#039;&#039; - Wyświetl &#039;&#039;ilość&#039;&#039; słów pamięci od adresu &#039;&#039;start&#039;&#039;. Jeśli nie podano bloku pamięci &#039;&#039;blok&#039;&#039; wyświetlana jest zawartość bloku wskazanego przez &#039;&#039;Q&#039;&#039; i &#039;&#039;NB&#039;&#039;. Jeśli nie podano &#039;&#039;długości&#039;&#039;, przyjmowana jest wartość 16.&lt;br /&gt;
* &#039;&#039;&#039;memcfg&#039;&#039;&#039; - Pokaż sprzętową i programową konfigurację pamięci&lt;br /&gt;
* &#039;&#039;&#039;memdump &amp;lt;blok&amp;gt; &amp;lt;plik&amp;gt;&#039;&#039;&#039; - zrzuć do pliku zawartość bloku pamięci&lt;br /&gt;
* &#039;&#039;&#039;stk&#039;&#039;&#039; - Pokaż stos&lt;br /&gt;
* &#039;&#039;&#039;watch&#039;&#039;&#039; - Śledzenie wartości wyrażeń&lt;br /&gt;
** &#039;&#039;&#039;watch&#039;&#039;&#039; - wyświetl śledzone wyrażenia&lt;br /&gt;
** &#039;&#039;&#039;watch add &amp;lt;wyrażenie&amp;gt;&#039;&#039;&#039; - dodaj wyrażenie do śledzonych&lt;br /&gt;
** &#039;&#039;&#039;watch del &amp;lt;numer&amp;gt;&#039;&#039;&#039; - usuń wyrażenie o numerze ze śledzonych&lt;br /&gt;
* &#039;&#039;&#039;decode&#039;&#039;&#039; - Dekodowanie struktur danych&lt;br /&gt;
** &#039;&#039;&#039;decode&#039;&#039;&#039; - wyświetl istniejące dekodery&lt;br /&gt;
** &#039;&#039;&#039;decode &amp;lt;dekoder&amp;gt; &amp;lt;adres&amp;gt;&#039;&#039;&#039; - zdekoduj strukturę pod danym adresem używając danego dekodera&lt;br /&gt;
* &#039;&#039;&#039;brk&#039;&#039;&#039; - Operowanie pułapkami (breakpointami):&lt;br /&gt;
** &#039;&#039;&#039;brk&#039;&#039;&#039; - wyświetlenie ustawionych pułapek&lt;br /&gt;
** &#039;&#039;&#039;brk add &amp;lt;wyrażenie&amp;gt;&#039;&#039;&#039; - dodanie nowej pułapki, która jest aktywowana, gdy &#039;&#039;wyrażenie&#039;&#039; jest spełnione (różne od zera)&lt;br /&gt;
** &#039;&#039;&#039;brk del &amp;lt;numer&amp;gt;&#039;&#039;&#039; - usunięcie pułapki o danym numerze&lt;br /&gt;
** &#039;&#039;&#039;brk off &amp;lt;numer&amp;gt;&#039;&#039;&#039; - tymczasowe wyłączenie pułapki&lt;br /&gt;
** &#039;&#039;&#039;brk on &amp;lt;numer&amp;gt;&#039;&#039;&#039; - ponowne włączenie pułapki&lt;br /&gt;
** &#039;&#039;&#039;brk off&#039;&#039;&#039; - tymczasowe wyłączenie wszystkich pułapek&lt;br /&gt;
** &#039;&#039;&#039;brk on&#039;&#039;&#039; - ponowne włączenie wszystkich pułapek&lt;br /&gt;
* &#039;&#039;&#039;log&#039;&#039;&#039; - logowanie operacji emulatora do pliku&lt;br /&gt;
** &#039;&#039;&#039;log&#039;&#039;&#039; - wyświetlenie bieżących ustawień logowania&lt;br /&gt;
** &#039;&#039;&#039;log on&#039;&#039;&#039; - włączenie logowania&lt;br /&gt;
** &#039;&#039;&#039;log off&#039;&#039;&#039; - wyłączenie logowania&lt;br /&gt;
** &#039;&#039;&#039;log &amp;lt;komponent&amp;gt;&#039;&#039;&#039; - włączenie logowania dla danego komponentu. Dostępne komponenty to:&lt;br /&gt;
*** reg - operacje na rejestrach&lt;br /&gt;
*** mem - operacje na pamięci&lt;br /&gt;
*** cpu - operacje wykonywane przez CPU&lt;br /&gt;
*** op - szczegóły wykonania rozkazu&lt;br /&gt;
*** int - operacje związane z przerwaniami&lt;br /&gt;
*** io - operacje wejścia/wyjścia&lt;br /&gt;
*** mx - [[MULTIX]]&lt;br /&gt;
*** px - [[PLIX]]&lt;br /&gt;
*** cchr - kanał znakowy&lt;br /&gt;
*** cmem - kanał pamięciowy&lt;br /&gt;
*** term - terminale&lt;br /&gt;
*** wnch - winchestery&lt;br /&gt;
*** 9425 - dyski MERA-9425&lt;br /&gt;
*** flop - stacje dyskietek&lt;br /&gt;
*** pnch - dzirkarka taśmy&lt;br /&gt;
*** pnrd - czytnik taśmy dziurkowanej&lt;br /&gt;
*** crk5 - system operacyjny [[CROOK|CROOK-5]]&lt;br /&gt;
*** em4h - emulator&lt;br /&gt;
*** all - wszystkie&lt;br /&gt;
* &#039;&#039;&#039;clock&#039;&#039;&#039; - kontrola zegara czasu rzeczywistego&lt;br /&gt;
** &#039;&#039;&#039;clock on&#039;&#039;&#039; - włączenie timera&lt;br /&gt;
** &#039;&#039;&#039;clock off&#039;&#039;&#039; - wyłączenie timera&lt;br /&gt;
* &#039;&#039;&#039;find &amp;lt;blok&amp;gt; &amp;lt;wartość&amp;gt;&#039;&#039;&#039; - wyszukiwanie wartości w bloku pamięci&lt;br /&gt;
* &#039;&#039;&#039;binload &amp;lt;adres&amp;gt;&#039;&#039;&#039; - inicjalizacja ładowania binarnego pod zadany adres&lt;br /&gt;
&lt;br /&gt;
= Wyrażenia =&lt;br /&gt;
&lt;br /&gt;
Wyrażenia pozwalają w linii poleceń debuggera przeprowadzać obliczenia oraz manipulować zawartością rejestrów, pamięci i zmiennych. Rezultat wyrażenia wyświetlany jest również w linii poleceń, natychmiast po jego obliczeniu. Elementem każdego wyrażenia mogą być:&lt;br /&gt;
&lt;br /&gt;
* Liczba w systemie dziesiętnym, ósemkowym, szesnastkowym lub binarnym (np.: &#039;&#039;&#039;15&#039;&#039;&#039;, &#039;&#039;&#039;0177&#039;&#039;&#039;, &#039;&#039;&#039;0xffa8&#039;&#039;&#039;, &#039;&#039;&#039;0b1011100111011110&#039;&#039;&#039;)&lt;br /&gt;
* Rejestry: &#039;&#039;&#039;R0&#039;&#039;&#039;-&#039;&#039;&#039;R7&#039;&#039;&#039;, &#039;&#039;&#039;IC&#039;&#039;&#039;, &#039;&#039;&#039;IR&#039;&#039;&#039;, &#039;&#039;&#039;SR&#039;&#039;&#039;, &#039;&#039;&#039;KB&#039;&#039;&#039; oraz pseudo-rejestr &#039;&#039;&#039;MOD&#039;&#039;&#039; zawierający bieżącą wartość modyfikatora&lt;br /&gt;
* Stan przerwania w rejestrze przerwań &#039;&#039;&#039;RZ&#039;&#039;&#039; dostępny jako &#039;&#039;&#039;RZ[numer_przerwania]&#039;&#039;&#039; (np.: &#039;&#039;&#039;RZ[6]&#039;&#039;&#039;, &#039;&#039;&#039;RZ[zmienna+1]&#039;&#039;&#039;)&lt;br /&gt;
* Zawartość komórki pamięci, adresowane jako &#039;&#039;&#039;[&#039;&#039;adres&#039;&#039;]&#039;&#039;&#039; lub &#039;&#039;&#039;[&#039;&#039;blok:adres&#039;&#039;]&#039;&#039;&#039;&lt;br /&gt;
* Zmienne: debugger pozwala na użycie dowolnej zmiennej, której nazwa nie jest słowem kluczowym (poleceniem), np: &#039;&#039;&#039;a&#039;&#039;&#039;, &#039;&#039;&#039;adres&#039;&#039;&#039;, &#039;&#039;&#039;zmienna3&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Domyślnie, liczby w linii poleceń debuggera wyświetlane są jako liczby szesnastkowe bez znaku. Możliwa jest jednak konwersja do innego zapisu:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;uint(&#039;&#039;&#039;&#039;&#039;wyrażenie&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039; - wartość wyrażenia zostanie potraktowana jako 16-bitowa liczba bez znaku i wyświetlona w systemie dziesiętnym&lt;br /&gt;
* &#039;&#039;&#039;int(&#039;&#039;&#039;&#039;&#039;wyrażenie&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039; - wartość wyrażenia zostanie wyświetlona w systemie dziesiętnym, ze znakiem&lt;br /&gt;
* &#039;&#039;&#039;hex(&#039;&#039;&#039;&#039;&#039;wyrażenie&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039; - wartość wyrażenia zostanie wyświetlona w systemie szesnastkowym&lt;br /&gt;
* &#039;&#039;&#039;oct(&#039;&#039;&#039;&#039;&#039;wyrażenie&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039; - wartość wyrażenia zostanie wyświetlona w systemie ósemkowym&lt;br /&gt;
* &#039;&#039;&#039;bin(&#039;&#039;&#039;&#039;&#039;wyrażenie&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039; - wartość wyrażenia zostanie wyświetlona w systemie dwójkowym&lt;br /&gt;
&lt;br /&gt;
W wyrażeniach dozwolone są następujące operatory:&lt;br /&gt;
&lt;br /&gt;
* arytmetyczne: &#039;&#039;&#039;+, -, *&#039;&#039;&#039;&lt;br /&gt;
* logiczne: &#039;&#039;&#039;&amp;amp;&amp;amp;, ||, !&#039;&#039;&#039;&lt;br /&gt;
* bitowe: &#039;&#039;&#039;&amp;amp;, |, ^, ~&#039;&#039;&#039;&lt;br /&gt;
* przesunięć bitowych: &#039;&#039;&#039;&amp;lt;&amp;lt;, &amp;gt;&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* porównań: &#039;&#039;&#039;==, !=, &amp;lt;=, &amp;gt;=, &amp;gt;, &amp;lt;&#039;&#039;&#039;&lt;br /&gt;
* przypisania: &#039;&#039;&#039;=&#039;&#039;&#039; (lewa strona wyrażenia musi być rejestrem, zmienną, komórką pamięci lub pozycją rejestru &#039;&#039;&#039;RZ&#039;&#039;&#039;)&lt;br /&gt;
* wyłuskiwania bitów: &#039;&#039;&#039;[b]&#039;&#039;&#039; i &#039;&#039;&#039;[b-e]&#039;&#039;&#039;. Wyłuskiwanie bitów pozwala na &amp;quot;wycięcie&amp;quot; z 16-bitowego słowa dowolnego ciągu bitów i użycie go jako nowej wartości, np:&lt;br /&gt;
** &#039;&#039;&#039;1[0]&#039;&#039;&#039; - najstarszy bit liczby 1 (ponieważ operacja wykonywana jest na 16-bitowej liczbie, wynikiem będzie 0)&lt;br /&gt;
** &#039;&#039;&#039;r1[3]&#039;&#039;&#039; - trzeci bit rejestru r1&lt;br /&gt;
** &#039;&#039;&#039;[0x7a][2-9]&#039;&#039;&#039; - bity od 2 do 9 słowa znajdującego się w bieżącym bloku pamięci pod adresem 0x7a&lt;br /&gt;
** &#039;&#039;&#039;zmienna[15]&#039;&#039;&#039; - najmłodszy bit zmiennej &#039;&#039;zmienna&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Debugger pozwala na obliczenie wartości wielu wyrażeń w jednej linii polecenia i wyświetlenie wyników również w jednej linii odpowiedzi. Można to zrobić podając kolejne wyrażenia oddzielone przecinkami, np:&lt;br /&gt;
 em400&amp;gt; 1+2, oct(12+[9]), dec(r1-1), a=12, [a], [a]=1, [a]&lt;br /&gt;
 0x3 033 -1 0xc 0x0 0x1 0x1&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3328</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3328"/>
		<updated>2026-08-30T11:12:15Z</updated>

		<summary type="html">&lt;p&gt;Amo: /* Dokumentacja użytkownika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* pamięć Elwro (ferromagnetyczna, bloki po 32ksłowa)&lt;br /&gt;
* [[Pamięć MEGA]] [[Amepol]]-u (półprzewodnikowa, bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy&lt;br /&gt;
** terminal znakowy&lt;br /&gt;
** pamięć SP45DE - napęd dyskietek 8&amp;quot;&lt;br /&gt;
** [[Zegar czasu rzeczywistego Amepolu]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]]&lt;br /&gt;
** dysk [[Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - uruchamianie|Uruchamianie]]&lt;br /&gt;
* [[EM400 - graficzny interfejs użytkownika|Interfejs użytkownika]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
* [[EM400 - uruchamianie programów]]&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jakubfi?tab=repositories Repozytoria źródeł emulatora i narzędzi]&lt;br /&gt;
* [[Wydajność EM400|Wydajność]] (pomiary wydajności nie są już prowadzone)&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=Debugger_EM400&amp;diff=3327</id>
		<title>Debugger EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=Debugger_EM400&amp;diff=3327"/>
		<updated>2026-08-30T11:11:52Z</updated>

		<summary type="html">&lt;p&gt;Amo: Amo przeniósł(-osła) stronę Debugger EM400 do EM400 - graficzny interfeis użytkownika&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#PATRZ [[EM400 - graficzny interfeis użytkownika]]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_graficzny_interfejs_u%C5%BCytkownika&amp;diff=3326</id>
		<title>EM400 - graficzny interfejs użytkownika</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_graficzny_interfejs_u%C5%BCytkownika&amp;diff=3326"/>
		<updated>2026-08-30T11:11:52Z</updated>

		<summary type="html">&lt;p&gt;Amo: Amo przeniósł(-osła) stronę Debugger EM400 do EM400 - graficzny interfeis użytkownika&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debugger emulatora EM400 pozwala śledzić i kontrolować stan emulowanej maszyny.&lt;br /&gt;
&lt;br /&gt;
W linii poleceń debuggera można używać następujących konstrukcji:&lt;br /&gt;
&lt;br /&gt;
= Polecenia =&lt;br /&gt;
&lt;br /&gt;
Polecenia służą do sterowania pracą emulatora i debuggera oraz wyświetlania informacji o stanie emulowanej maszyny.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;quit&#039;&#039;&#039; - Zakończ pracę emulatora&lt;br /&gt;
* &#039;&#039;&#039;cycle&#039;&#039;&#039; - Wykonaj instrukcję wskazaną przez licznik rozkazów.&lt;br /&gt;
* &#039;&#039;&#039;start&#039;&#039;&#039; - Kontynuuj emulację aż do napotkania kolejnej pułapki&lt;br /&gt;
* &#039;&#039;&#039;load &amp;lt;plik&amp;gt;&#039;&#039;&#039; - Załaduj zawartość pliku do bloku pamięci numer 0.&lt;br /&gt;
* &#039;&#039;&#039;help [&#039;&#039;cmd&#039;&#039;]&#039;&#039;&#039; - Wyświetl pomoc. Jeśli opcjonalny parametr &#039;&#039;cmd&#039;&#039; jest obecny, wyświetl pomoc na temat komendy &#039;&#039;cmd&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;regs&#039;&#039;&#039; - Wyświetl zawartość rejestrów R1-R7&lt;br /&gt;
* &#039;&#039;&#039;sregs&#039;&#039;&#039; - Wyświetl zawartość rejestrów R0, IR, IC, SR&lt;br /&gt;
* &#039;&#039;&#039;clear&#039;&#039;&#039; - Zresetuj emulowaną maszynę. Wpisuje &#039;&#039;0&#039;&#039; do wszystkich rejestrów i wskaźników.&lt;br /&gt;
* &#039;&#039;&#039;dasm [[&#039;&#039;addr&#039;&#039;] &#039;&#039;n&#039;&#039;]&#039;&#039;&#039; - Wyświetl deasemblację zawartości pamięci. Jeśli żaden parametr nie został podany, deasemblowana jest instrukcja wskazana przez licznik rozkazów. Jeśli podany jest opcjonalny parametr &#039;&#039;n&#039;&#039; deasemblowanych jest &#039;&#039;n&#039;&#039; kolejnych instrukcji. Jeśli podano również parametr &#039;&#039;addr&#039;&#039;, deasemblacja rozpoczynana jest od adresu &#039;&#039;addr&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mem [&#039;&#039;blok&#039;&#039;:] &#039;&#039;&amp;lt;start&amp;gt;&#039;&#039; &#039;&#039;[ilość]&#039;&#039;&#039;&#039;&#039; - Wyświetl &#039;&#039;ilość&#039;&#039; słów pamięci od adresu &#039;&#039;start&#039;&#039;. Jeśli nie podano bloku pamięci &#039;&#039;blok&#039;&#039; wyświetlana jest zawartość bloku wskazanego przez &#039;&#039;Q&#039;&#039; i &#039;&#039;NB&#039;&#039;. Jeśli nie podano &#039;&#039;długości&#039;&#039;, przyjmowana jest wartość 16.&lt;br /&gt;
* &#039;&#039;&#039;memcfg&#039;&#039;&#039; - Pokaż sprzętową i programową konfigurację pamięci&lt;br /&gt;
* &#039;&#039;&#039;memdump &amp;lt;blok&amp;gt; &amp;lt;plik&amp;gt;&#039;&#039;&#039; - zrzuć do pliku zawartość bloku pamięci&lt;br /&gt;
* &#039;&#039;&#039;stk&#039;&#039;&#039; - Pokaż stos&lt;br /&gt;
* &#039;&#039;&#039;watch&#039;&#039;&#039; - Śledzenie wartości wyrażeń&lt;br /&gt;
** &#039;&#039;&#039;watch&#039;&#039;&#039; - wyświetl śledzone wyrażenia&lt;br /&gt;
** &#039;&#039;&#039;watch add &amp;lt;wyrażenie&amp;gt;&#039;&#039;&#039; - dodaj wyrażenie do śledzonych&lt;br /&gt;
** &#039;&#039;&#039;watch del &amp;lt;numer&amp;gt;&#039;&#039;&#039; - usuń wyrażenie o numerze ze śledzonych&lt;br /&gt;
* &#039;&#039;&#039;decode&#039;&#039;&#039; - Dekodowanie struktur danych&lt;br /&gt;
** &#039;&#039;&#039;decode&#039;&#039;&#039; - wyświetl istniejące dekodery&lt;br /&gt;
** &#039;&#039;&#039;decode &amp;lt;dekoder&amp;gt; &amp;lt;adres&amp;gt;&#039;&#039;&#039; - zdekoduj strukturę pod danym adresem używając danego dekodera&lt;br /&gt;
* &#039;&#039;&#039;brk&#039;&#039;&#039; - Operowanie pułapkami (breakpointami):&lt;br /&gt;
** &#039;&#039;&#039;brk&#039;&#039;&#039; - wyświetlenie ustawionych pułapek&lt;br /&gt;
** &#039;&#039;&#039;brk add &amp;lt;wyrażenie&amp;gt;&#039;&#039;&#039; - dodanie nowej pułapki, która jest aktywowana, gdy &#039;&#039;wyrażenie&#039;&#039; jest spełnione (różne od zera)&lt;br /&gt;
** &#039;&#039;&#039;brk del &amp;lt;numer&amp;gt;&#039;&#039;&#039; - usunięcie pułapki o danym numerze&lt;br /&gt;
** &#039;&#039;&#039;brk off &amp;lt;numer&amp;gt;&#039;&#039;&#039; - tymczasowe wyłączenie pułapki&lt;br /&gt;
** &#039;&#039;&#039;brk on &amp;lt;numer&amp;gt;&#039;&#039;&#039; - ponowne włączenie pułapki&lt;br /&gt;
** &#039;&#039;&#039;brk off&#039;&#039;&#039; - tymczasowe wyłączenie wszystkich pułapek&lt;br /&gt;
** &#039;&#039;&#039;brk on&#039;&#039;&#039; - ponowne włączenie wszystkich pułapek&lt;br /&gt;
* &#039;&#039;&#039;log&#039;&#039;&#039; - logowanie operacji emulatora do pliku&lt;br /&gt;
** &#039;&#039;&#039;log&#039;&#039;&#039; - wyświetlenie bieżących ustawień logowania&lt;br /&gt;
** &#039;&#039;&#039;log on&#039;&#039;&#039; - włączenie logowania&lt;br /&gt;
** &#039;&#039;&#039;log off&#039;&#039;&#039; - wyłączenie logowania&lt;br /&gt;
** &#039;&#039;&#039;log &amp;lt;komponent&amp;gt;&#039;&#039;&#039; - włączenie logowania dla danego komponentu. Dostępne komponenty to:&lt;br /&gt;
*** reg - operacje na rejestrach&lt;br /&gt;
*** mem - operacje na pamięci&lt;br /&gt;
*** cpu - operacje wykonywane przez CPU&lt;br /&gt;
*** op - szczegóły wykonania rozkazu&lt;br /&gt;
*** int - operacje związane z przerwaniami&lt;br /&gt;
*** io - operacje wejścia/wyjścia&lt;br /&gt;
*** mx - [[MULTIX]]&lt;br /&gt;
*** px - [[PLIX]]&lt;br /&gt;
*** cchr - kanał znakowy&lt;br /&gt;
*** cmem - kanał pamięciowy&lt;br /&gt;
*** term - terminale&lt;br /&gt;
*** wnch - winchestery&lt;br /&gt;
*** 9425 - dyski MERA-9425&lt;br /&gt;
*** flop - stacje dyskietek&lt;br /&gt;
*** pnch - dzirkarka taśmy&lt;br /&gt;
*** pnrd - czytnik taśmy dziurkowanej&lt;br /&gt;
*** crk5 - system operacyjny [[CROOK|CROOK-5]]&lt;br /&gt;
*** em4h - emulator&lt;br /&gt;
*** all - wszystkie&lt;br /&gt;
* &#039;&#039;&#039;clock&#039;&#039;&#039; - kontrola zegara czasu rzeczywistego&lt;br /&gt;
** &#039;&#039;&#039;clock on&#039;&#039;&#039; - włączenie timera&lt;br /&gt;
** &#039;&#039;&#039;clock off&#039;&#039;&#039; - wyłączenie timera&lt;br /&gt;
* &#039;&#039;&#039;find &amp;lt;blok&amp;gt; &amp;lt;wartość&amp;gt;&#039;&#039;&#039; - wyszukiwanie wartości w bloku pamięci&lt;br /&gt;
* &#039;&#039;&#039;binload &amp;lt;adres&amp;gt;&#039;&#039;&#039; - inicjalizacja ładowania binarnego pod zadany adres&lt;br /&gt;
&lt;br /&gt;
= Wyrażenia =&lt;br /&gt;
&lt;br /&gt;
Wyrażenia pozwalają w linii poleceń debuggera przeprowadzać obliczenia oraz manipulować zawartością rejestrów, pamięci i zmiennych. Rezultat wyrażenia wyświetlany jest również w linii poleceń, natychmiast po jego obliczeniu. Elementem każdego wyrażenia mogą być:&lt;br /&gt;
&lt;br /&gt;
* Liczba w systemie dziesiętnym, ósemkowym, szesnastkowym lub binarnym (np.: &#039;&#039;&#039;15&#039;&#039;&#039;, &#039;&#039;&#039;0177&#039;&#039;&#039;, &#039;&#039;&#039;0xffa8&#039;&#039;&#039;, &#039;&#039;&#039;0b1011100111011110&#039;&#039;&#039;)&lt;br /&gt;
* Rejestry: &#039;&#039;&#039;R0&#039;&#039;&#039;-&#039;&#039;&#039;R7&#039;&#039;&#039;, &#039;&#039;&#039;IC&#039;&#039;&#039;, &#039;&#039;&#039;IR&#039;&#039;&#039;, &#039;&#039;&#039;SR&#039;&#039;&#039;, &#039;&#039;&#039;KB&#039;&#039;&#039; oraz pseudo-rejestr &#039;&#039;&#039;MOD&#039;&#039;&#039; zawierający bieżącą wartość modyfikatora&lt;br /&gt;
* Stan przerwania w rejestrze przerwań &#039;&#039;&#039;RZ&#039;&#039;&#039; dostępny jako &#039;&#039;&#039;RZ[numer_przerwania]&#039;&#039;&#039; (np.: &#039;&#039;&#039;RZ[6]&#039;&#039;&#039;, &#039;&#039;&#039;RZ[zmienna+1]&#039;&#039;&#039;)&lt;br /&gt;
* Zawartość komórki pamięci, adresowane jako &#039;&#039;&#039;[&#039;&#039;adres&#039;&#039;]&#039;&#039;&#039; lub &#039;&#039;&#039;[&#039;&#039;blok:adres&#039;&#039;]&#039;&#039;&#039;&lt;br /&gt;
* Zmienne: debugger pozwala na użycie dowolnej zmiennej, której nazwa nie jest słowem kluczowym (poleceniem), np: &#039;&#039;&#039;a&#039;&#039;&#039;, &#039;&#039;&#039;adres&#039;&#039;&#039;, &#039;&#039;&#039;zmienna3&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Domyślnie, liczby w linii poleceń debuggera wyświetlane są jako liczby szesnastkowe bez znaku. Możliwa jest jednak konwersja do innego zapisu:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;uint(&#039;&#039;&#039;&#039;&#039;wyrażenie&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039; - wartość wyrażenia zostanie potraktowana jako 16-bitowa liczba bez znaku i wyświetlona w systemie dziesiętnym&lt;br /&gt;
* &#039;&#039;&#039;int(&#039;&#039;&#039;&#039;&#039;wyrażenie&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039; - wartość wyrażenia zostanie wyświetlona w systemie dziesiętnym, ze znakiem&lt;br /&gt;
* &#039;&#039;&#039;hex(&#039;&#039;&#039;&#039;&#039;wyrażenie&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039; - wartość wyrażenia zostanie wyświetlona w systemie szesnastkowym&lt;br /&gt;
* &#039;&#039;&#039;oct(&#039;&#039;&#039;&#039;&#039;wyrażenie&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039; - wartość wyrażenia zostanie wyświetlona w systemie ósemkowym&lt;br /&gt;
* &#039;&#039;&#039;bin(&#039;&#039;&#039;&#039;&#039;wyrażenie&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039; - wartość wyrażenia zostanie wyświetlona w systemie dwójkowym&lt;br /&gt;
&lt;br /&gt;
W wyrażeniach dozwolone są następujące operatory:&lt;br /&gt;
&lt;br /&gt;
* arytmetyczne: &#039;&#039;&#039;+, -, *&#039;&#039;&#039;&lt;br /&gt;
* logiczne: &#039;&#039;&#039;&amp;amp;&amp;amp;, ||, !&#039;&#039;&#039;&lt;br /&gt;
* bitowe: &#039;&#039;&#039;&amp;amp;, |, ^, ~&#039;&#039;&#039;&lt;br /&gt;
* przesunięć bitowych: &#039;&#039;&#039;&amp;lt;&amp;lt;, &amp;gt;&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* porównań: &#039;&#039;&#039;==, !=, &amp;lt;=, &amp;gt;=, &amp;gt;, &amp;lt;&#039;&#039;&#039;&lt;br /&gt;
* przypisania: &#039;&#039;&#039;=&#039;&#039;&#039; (lewa strona wyrażenia musi być rejestrem, zmienną, komórką pamięci lub pozycją rejestru &#039;&#039;&#039;RZ&#039;&#039;&#039;)&lt;br /&gt;
* wyłuskiwania bitów: &#039;&#039;&#039;[b]&#039;&#039;&#039; i &#039;&#039;&#039;[b-e]&#039;&#039;&#039;. Wyłuskiwanie bitów pozwala na &amp;quot;wycięcie&amp;quot; z 16-bitowego słowa dowolnego ciągu bitów i użycie go jako nowej wartości, np:&lt;br /&gt;
** &#039;&#039;&#039;1[0]&#039;&#039;&#039; - najstarszy bit liczby 1 (ponieważ operacja wykonywana jest na 16-bitowej liczbie, wynikiem będzie 0)&lt;br /&gt;
** &#039;&#039;&#039;r1[3]&#039;&#039;&#039; - trzeci bit rejestru r1&lt;br /&gt;
** &#039;&#039;&#039;[0x7a][2-9]&#039;&#039;&#039; - bity od 2 do 9 słowa znajdującego się w bieżącym bloku pamięci pod adresem 0x7a&lt;br /&gt;
** &#039;&#039;&#039;zmienna[15]&#039;&#039;&#039; - najmłodszy bit zmiennej &#039;&#039;zmienna&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Debugger pozwala na obliczenie wartości wielu wyrażeń w jednej linii polecenia i wyświetlenie wyników również w jednej linii odpowiedzi. Można to zrobić podając kolejne wyrażenia oddzielone przecinkami, np:&lt;br /&gt;
 em400&amp;gt; 1+2, oct(12+[9]), dec(r1-1), a=12, [a], [a]=1, [a]&lt;br /&gt;
 0x3 033 -1 0xc 0x0 0x1 0x1&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3325</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3325"/>
		<updated>2026-08-30T11:11:17Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* pamięć Elwro (ferromagnetyczna, bloki po 32ksłowa)&lt;br /&gt;
* [[Pamięć MEGA]] [[Amepol]]-u (półprzewodnikowa, bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy&lt;br /&gt;
** terminal znakowy&lt;br /&gt;
** pamięć SP45DE - napęd dyskietek 8&amp;quot;&lt;br /&gt;
** [[Zegar czasu rzeczywistego Amepolu]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]]&lt;br /&gt;
** dysk [[Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - uruchamianie|Uruchamianie]]&lt;br /&gt;
* [[Debugger EM400|Debugger]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
* [[EM400 - uruchamianie programów]]&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jakubfi?tab=repositories Repozytoria źródeł emulatora i narzędzi]&lt;br /&gt;
* [[Wydajność EM400|Wydajność]] (pomiary wydajności nie są już prowadzone)&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_linia_polece%C5%84&amp;diff=3324</id>
		<title>EM400 - linia poleceń</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_linia_polece%C5%84&amp;diff=3324"/>
		<updated>2026-08-30T11:11:06Z</updated>

		<summary type="html">&lt;p&gt;Amo: Amo przeniósł(-osła) stronę EM400 - linia poleceń do EM400 - uruchamianie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#PATRZ [[EM400 - uruchamianie]]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_uruchamianie&amp;diff=3323</id>
		<title>EM400 - uruchamianie</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_uruchamianie&amp;diff=3323"/>
		<updated>2026-08-30T11:11:06Z</updated>

		<summary type="html">&lt;p&gt;Amo: Amo przeniósł(-osła) stronę EM400 - linia poleceń do EM400 - uruchamianie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Uruchamiając EM400 z linii poleceń można użyć następujących przełączników:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;-h&#039;&#039;&#039; - wyświetl pomoc&lt;br /&gt;
* &#039;&#039;&#039;-c config&#039;&#039;&#039; - użyj podanego pliku konfiguracyjnego. Domyślnie emulator próbuje załadować &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039; lub &#039;&#039;&#039;.config/em400/em400.ini&#039;&#039;&#039; w systemach Linux, albo &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039; w systemach Windows)&lt;br /&gt;
* &#039;&#039;&#039;-m machine&#039;&#039;&#039; - wybierz maszynę o podanym identyfikatorze.&lt;br /&gt;
* &#039;&#039;&#039;-p program&#039;&#039;&#039; - po uruchomieniu załaduj podany program od adresu 0 w segmencie 0 pamięci.&lt;br /&gt;
* &#039;&#039;&#039;-l komponent,komponent,...&#039;&#039;&#039; - włącz logowanie dla podanych komponentów ([[https://mera400.pl/EM400_-_konfiguracja#Logowanie|opis komponentów]]). Poprzedź komponent &amp;quot;-&amp;quot; aby go wyłączyć, np.: &amp;quot;all,-cpu&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;-L&#039;&#039;&#039; - wyłącz całkowicie logowanie&lt;br /&gt;
* &#039;&#039;&#039;-u ui&#039;&#039;&#039; - uruchom emulator z wybranym UI (dostępne UI to: qt, cmd)&lt;br /&gt;
* &#039;&#039;&#039;-O sekcja:klucz=wartość&#039;&#039;&#039; - uruchom emulator nadpisując klucz w danej sekcji konfiguracji podaną wartością&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3322</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3322"/>
		<updated>2026-08-30T11:10:42Z</updated>

		<summary type="html">&lt;p&gt;Amo: /* Dokumentacja użytkownika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* pamięć Elwro (ferromagnetyczna, bloki po 32ksłowa)&lt;br /&gt;
* [[Pamięć MEGA]] [[Amepol]]-u (półprzewodnikowa, bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy&lt;br /&gt;
** terminal znakowy&lt;br /&gt;
** pamięć SP45DE - napęd dyskietek 8&amp;quot;&lt;br /&gt;
** [[Zegar czasu rzeczywistego Amepolu]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]]&lt;br /&gt;
** dysk [[Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - linia poleceń|Uruchamianie]]&lt;br /&gt;
* [[Debugger EM400|Debugger]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
* [[EM400 - uruchamianie programów]]&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jakubfi?tab=repositories Repozytoria źródeł emulatora i narzędzi]&lt;br /&gt;
* [[Wydajność EM400|Wydajność]] (pomiary wydajności nie są już prowadzone)&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3321</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3321"/>
		<updated>2026-08-30T11:10:24Z</updated>

		<summary type="html">&lt;p&gt;Amo: /* Dokumentacja użytkownika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* pamięć Elwro (ferromagnetyczna, bloki po 32ksłowa)&lt;br /&gt;
* [[Pamięć MEGA]] [[Amepol]]-u (półprzewodnikowa, bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy&lt;br /&gt;
** terminal znakowy&lt;br /&gt;
** pamięć SP45DE - napęd dyskietek 8&amp;quot;&lt;br /&gt;
** [[Zegar czasu rzeczywistego Amepolu]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]]&lt;br /&gt;
** dysk [[Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - Linia poleceń|Uruchamianie]]&lt;br /&gt;
* [[Debugger EM400|Debugger]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
* [[EM400 - uruchamianie programów]]&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jakubfi?tab=repositories Repozytoria źródeł emulatora i narzędzi]&lt;br /&gt;
* [[Wydajność EM400|Wydajność]] (pomiary wydajności nie są już prowadzone)&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400&amp;diff=3320</id>
		<title>EM400</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400&amp;diff=3320"/>
		<updated>2026-08-30T11:09:31Z</updated>

		<summary type="html">&lt;p&gt;Amo: /* Dokumentacja użytkownika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Em400-pulpit.png|thumb|500px|Emulator EM400]]&lt;br /&gt;
[[File:Em400-debuger.png|thumb|500px|Emulator EM400 z włączonym debugerem]]&lt;br /&gt;
EM400 (https://em400.pl) jest emulatorem systemu MERA-400. Pozwala na uruchamianie dowolnego oprogramowania minikomputera, m.in. systemu operacyjnego [[CROOK]]. Emulowane elementy systemu to:&lt;br /&gt;
* procesor (zarówno MERY-400 jak i z [[Modyfikacje sprzętowe procesora|przeróbkami]] wprowadzonymi w [[MX-16]])&lt;br /&gt;
* [[Arytmometr Wielokrotnej Precyzji]]&lt;br /&gt;
* pamięć Elwro (ferromagnetyczna, bloki po 32ksłowa)&lt;br /&gt;
* [[Pamięć MEGA]] [[Amepol]]-u (półprzewodnikowa, bloki po 64ksłowa)&lt;br /&gt;
* kanał znakowy&lt;br /&gt;
** terminal znakowy&lt;br /&gt;
** pamięć SP45DE - napęd dyskietek 8&amp;quot;&lt;br /&gt;
** [[Zegar czasu rzeczywistego Amepolu]]&lt;br /&gt;
* procesor peryferyjny [[MULTIX]]&lt;br /&gt;
** dysk [[Winchester]]&lt;br /&gt;
&lt;br /&gt;
== Nośniki danych ==&lt;br /&gt;
&lt;br /&gt;
* [https://mera400.pl/img/tp-t8k.img TP/T8K (obraz dyskietki 8&amp;quot;)] - test procesora i pamięci systemu&lt;br /&gt;
* [[CROOK-5 - obraz dysku]]&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* [[EM400 - Instalacja|Instalacja]]&lt;br /&gt;
* [[EM400 - konfiguracja|Konfiguracja]]&lt;br /&gt;
* [[EM400 - Uruchomienie|Wywołanie z linii poleceń]]&lt;br /&gt;
* [[Debugger EM400|Debugger]]&lt;br /&gt;
* [[CROOK-5 w EM400]]&lt;br /&gt;
* [[EM400 - uruchamianie programów]]&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jakubfi?tab=repositories Repozytoria źródeł emulatora i narzędzi]&lt;br /&gt;
* [[Wydajność EM400|Wydajność]] (pomiary wydajności nie są już prowadzone)&lt;br /&gt;
&lt;br /&gt;
== Narzędzia pomocnicze ==&lt;br /&gt;
* [[EMAS]] - assembler skrośny dla MERY-400 używający współczesnej składni&lt;br /&gt;
* [[EMDAS]] - deassembler binariów MERY-400&lt;br /&gt;
* [[EMAWP]] - biblioteka realizująca operacje na liczbach długich i zmiennoprzecinkowych w standardzie MERY-400&lt;br /&gt;
* [[EMCRK]] - biblioteka i narzędzia wspomagające obsługę struktur danych systemu [[CROOK-5]]&lt;br /&gt;
* [[ASSEM]] - assembler skrośny używający takiej samej składni jak [[Język_symboliczny_(assembler)_ASSM|ASSM]] i ASSK&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_uruchamianie&amp;diff=3319</id>
		<title>EM400 - uruchamianie</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_uruchamianie&amp;diff=3319"/>
		<updated>2026-08-30T11:08:48Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Uruchamiając EM400 z linii poleceń można użyć następujących przełączników:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;-h&#039;&#039;&#039; - wyświetl pomoc&lt;br /&gt;
* &#039;&#039;&#039;-c config&#039;&#039;&#039; - użyj podanego pliku konfiguracyjnego. Domyślnie emulator próbuje załadować &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039; lub &#039;&#039;&#039;.config/em400/em400.ini&#039;&#039;&#039; w systemach Linux, albo &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039; w systemach Windows)&lt;br /&gt;
* &#039;&#039;&#039;-m machine&#039;&#039;&#039; - wybierz maszynę o podanym identyfikatorze.&lt;br /&gt;
* &#039;&#039;&#039;-p program&#039;&#039;&#039; - po uruchomieniu załaduj podany program od adresu 0 w segmencie 0 pamięci.&lt;br /&gt;
* &#039;&#039;&#039;-l komponent,komponent,...&#039;&#039;&#039; - włącz logowanie dla podanych komponentów ([[https://mera400.pl/EM400_-_konfiguracja#Logowanie|opis komponentów]]). Poprzedź komponent &amp;quot;-&amp;quot; aby go wyłączyć, np.: &amp;quot;all,-cpu&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;-L&#039;&#039;&#039; - wyłącz całkowicie logowanie&lt;br /&gt;
* &#039;&#039;&#039;-u ui&#039;&#039;&#039; - uruchom emulator z wybranym UI (dostępne UI to: qt, cmd)&lt;br /&gt;
* &#039;&#039;&#039;-O sekcja:klucz=wartość&#039;&#039;&#039; - uruchom emulator nadpisując klucz w danej sekcji konfiguracji podaną wartością&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_uruchamianie&amp;diff=3318</id>
		<title>EM400 - uruchamianie</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_uruchamianie&amp;diff=3318"/>
		<updated>2026-08-30T11:07:48Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Uruchamiając EM400 z linii poleceń można użyć następujących przełączników:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;-h&#039;&#039;&#039; - wyświetl pomoc&lt;br /&gt;
* &#039;&#039;&#039;-c config&#039;&#039;&#039; - użyj podanego pliku konfiguracyjnego &#039;&#039;&#039;config&#039;&#039;&#039; (domyślnie emulator próbuje załadować &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039; lub &#039;&#039;&#039;.config/em400/em400.ini&#039;&#039;&#039; w systemach Linux albo &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039; w systemach Windows)&lt;br /&gt;
* &#039;&#039;&#039;-m machine&#039;&#039;&#039; - wybierz maszynę o identyfikatorze &#039;&#039;&#039;machine&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;-p program&#039;&#039;&#039; - po uruchomieniu załaduj &#039;&#039;&#039;program&#039;&#039;&#039; od adresu 0 w segmencie 0 pamięci.&lt;br /&gt;
* &#039;&#039;&#039;-l komponent,komponent,...&#039;&#039;&#039; - włącz logowanie dla podanych komponentów ([[https://mera400.pl/EM400_-_konfiguracja#Logowanie|opis komponentów]]). Poprzedź komponent &amp;quot;-&amp;quot; aby go wyłączyć, np.: &amp;quot;all,-cpu&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;-L&#039;&#039;&#039; - wyłącz całkowicie logowanie&lt;br /&gt;
* &#039;&#039;&#039;-u ui&#039;&#039;&#039; - uruchom emulator z wybranym UI (dostępne UI to: qt, cmd)&lt;br /&gt;
* &#039;&#039;&#039;-F&#039;&#039;&#039; - uruchom emulator używając sprzętowej implementacji CPU w FPGA&lt;br /&gt;
* &#039;&#039;&#039;-O sekcja:klucz=wartość&#039;&#039;&#039; - uruchom emulator nadpisując klucz w danej sekcji konfiguracji podaną wartością&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3317</id>
		<title>EM400 - konfiguracja</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3317"/>
		<updated>2026-08-30T09:41:32Z</updated>

		<summary type="html">&lt;p&gt;Amo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Konfiguracja emulatora dostępna jest z menu &#039;&#039;&#039;Emulator &amp;amp;rarr; Ustawienia&#039;&#039;&#039; i zorganizowana jest w sekcje:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Maszyna&#039;&#039;&#039; - konfiguracje sprzętowe emulowanego komputera&lt;br /&gt;
# &#039;&#039;&#039;Ogólne&#039;&#039;&#039; - ustawienia emulacji i interfejsu użytkownika&lt;br /&gt;
# &#039;&#039;&#039;Dźwięk&#039;&#039;&#039; - ustawienia dźwięków interfejsu użytkownika i głośniczka CPU&lt;br /&gt;
# &#039;&#039;&#039;Logowanie&#039;&#039;&#039; - konfiguracja logowania&lt;br /&gt;
&lt;br /&gt;
= Maszyna =&lt;br /&gt;
&lt;br /&gt;
EM400 pozwala przygotować wiele konfiguracji minikomputera i przełączać się nimi w zależności od potrzeb.&lt;br /&gt;
&lt;br /&gt;
Przy pierwszym uruchomieniu, EM400 tworzy dwie domyślne maszyny:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MERA-400&#039;&#039;&#039; - prosta konfiguracja z dwoma modułami pamięci Elwro i stacją dysków SP45DE&lt;br /&gt;
* &#039;&#039;&#039;MX-16&#039;&#039;&#039; - przeznaczona do uruchamiania systemu operacyjnego CROOK-5, z pamięcią MEGA Amepolu, procesorem peryferyjnym MULTIX i dyskiem Winchester&lt;br /&gt;
&lt;br /&gt;
Zarządzanie maszynami umożliwiają następujące opcje:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aktywna maszyna&#039;&#039;&#039; - wybór aktualnie edytowanej konfiguracji minikomputera&lt;br /&gt;
* &#039;&#039;&#039;Dodaj...&#039;&#039;&#039; - dodawanie nowej maszyny. Otwiera okienko pozwalające wpisać jej nazwę. Identyfikator maszyny wywodzony jest z podanej nazwy&lt;br /&gt;
* &#039;&#039;&#039;Powiel...&#039;&#039;&#039; - robi kopię aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuwa aktualnie wybraną maszynę&lt;br /&gt;
* &#039;&#039;&#039;Nazwa&#039;&#039;&#039; - nazwa aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Identyfikator&#039;&#039;&#039; - identyfikator wybranej maszyny. Używa się go jako parametr opci &#039;&#039;&#039;-m&#039;&#039;&#039; przy wywoływaniu emulatora z linii poleceń&lt;br /&gt;
&lt;br /&gt;
Konfiguracja maszyny podzielona jest na trzy zakładki opisane w kolejnych sekcjach.&lt;br /&gt;
&lt;br /&gt;
== Procesor ==&lt;br /&gt;
&lt;br /&gt;
Można zmienić następujące właściwości procesora&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Jednostka zmiennoprzecinkowa (AWP)&#039;&#039;&#039; - czy zainstalowany jest Arytmometr Wielokrotnej Precyzji&lt;br /&gt;
* &#039;&#039;&#039;Modyfikacje procesora&#039;&#039;&#039; - czy obecne są modyfikacje procesora wprowadzone w MX-16&lt;br /&gt;
* &#039;&#039;&#039;Instrukcje we/wy niedozwolone w trybie użytkownika&#039;&#039;&#039; - czy instrukcje IN oraz OU są niedozwolone w trybie użytkownika&lt;br /&gt;
* &#039;&#039;&#039;Zatrzymaj przy braku pamięci&#039;&#039;&#039; - czy procesor zatrzymuje się, jeśli w segmencie pamięci dla systemu operacyjnego nastąpiło odwołanie do nieskonfigurowanej pamięci&lt;br /&gt;
* &#039;&#039;&#039;Okres zegara&#039;&#039;&#039; - co jaki czas zgłaszane są przerwania zegarowe (z wewnętrznego timera CPU)&lt;br /&gt;
&lt;br /&gt;
== Pamięć ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Moduły Elwro&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci ferrytowej Elwro (po 32 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Moduły MEGA&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci półprzewodnikowej MEGA Amepolu (po 64 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Strony systemowe (sprzętowe)&#039;&#039;&#039; - ilość stron pamięci skonfigurowanych sprzętowo dla systemu operacyjnego w segmencie 0&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM MEGA&#039;&#039;&#039; - obraz pamięci PROM (EPROM) w pamięci MEGA, który zastąpi domyślny&lt;br /&gt;
* &#039;&#039;&#039;Wstępnie ładowany program&#039;&#039;&#039; - program, który zostanie automatycznie załadowany do segmentu 0 po włączeniu maszyny&lt;br /&gt;
&lt;br /&gt;
== Wejście/wyjście ==&lt;br /&gt;
&lt;br /&gt;
W tej zakładce konfigurowane są kanały wejścia/wyjścia i podłączone do nich urządzenia:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dodaj kanał&#039;&#039;&#039; - dodanie nowego kanału wejścia/wyjścia (max 16)&lt;br /&gt;
* &#039;&#039;&#039;Dodaj urządzenie&#039;&#039;&#039; - dodanie nowego kurządzenia w kanale (ich ilość zależy od kanału)&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuń wybrane z listy urządzenie lub kanał&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodając nowy kanał należy wybrać jego numer oraz typ. Aktualnie obsługiwane kanały:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Znakowy&#039;&#039;&#039; - kanał znakowy minikomputera, do podłączanie wolnych urządzeń znakowych&lt;br /&gt;
* &#039;&#039;&#039;MULTIX&#039;&#039;&#039; - procesor peryferynjy MULTIX Amepolu&lt;br /&gt;
* &#039;&#039;&#039;Tester we/wy&#039;&#039;&#039; - do testów komunikacji, używany przez testy emulatora&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie urządzeń do kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodanie nowego urządzenia wymaga wybrania jego numeru i typu, oraz ustalenia opcji, które są zależne od typu urządzenia. Dostępne typy urządzeń zależą od tego, w jakim kanale jest ono dodawane.&lt;br /&gt;
&lt;br /&gt;
==== Terminal ====&lt;br /&gt;
&lt;br /&gt;
Dostępny w kanale znakowym i MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; Terminal w MULTIX-ie nie działa w obecnej wersji emulatora.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Port TCP&#039;&#039;&#039; - port TCP na którym słucha emulacja terminala.&lt;br /&gt;
* &#039;&#039;&#039;Prędkość&#039;&#039;&#039; - emulowana prędkość działania emulacji terminala. Domyślnie 9600 bodów.&lt;br /&gt;
&lt;br /&gt;
==== Pamięć SP45DE ====&lt;br /&gt;
&lt;br /&gt;
Dostępna tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obrazy dyskietek&#039;&#039;&#039; - pliki zawierające obrazy dyskietek 8&amp;quot; o geometrii: 1 strona (głowica), 77 ścieżek, 26 sektorów na ścieżkę, 128 bajtów na sektor = 256256 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Zegar czasu rzeczywistego Amepolu ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM&#039;&#039;&#039; - alternatywna zawartość pamięci PROM zegara (256 bajtów). Zastępuje domyślną. &lt;br /&gt;
&lt;br /&gt;
==== Winchester ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz dysku&#039;&#039;&#039; - plik zawierający obraz dysku o geometrii: 4 strony (głowice), 615 ścieżek, 16 sektorów na ścieżkę, 512 bajtów na sektor = 20152320 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Napęd dyskietek 5.25&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; aktualnie nie obsługiwany.&lt;br /&gt;
&lt;br /&gt;
= Ogólne =&lt;br /&gt;
&lt;br /&gt;
== Emulacja ==&lt;br /&gt;
&lt;br /&gt;
Ustawienia dotyczące sposobu realizacji emulacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Emulowane czasy&#039;&#039;&#039; określają to, jak wiernie emulator oddaje prawdziwą MERĘ-400 jeśli chodzi o prędkość pracy systemu. Możliwe są trzy poziomy:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; - Aktywne są wszystkie czasy, które są zaimplementowane w emulatorze. EM400 oddaje MERĘ-400 tak wiernie, jak tylko potrafi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum&#039;&#039;&#039; - Aktywne są tylko czasy, które są wymagane do poprawnego działania oprogramowania MERY-400. Ogólna interakcja z emulowanym minikomputerem jest znacznie szybsza, niż z prawdziwym sprzętem.&lt;br /&gt;
* &#039;&#039;&#039;Żadne&#039;&#039;&#039; - &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; w tym trybie oprogramowanie może działać niepoprawnie z wielu przyczyn. Emulacja działa tak szybko, jak to możliwe. Nie są zachowane niemal żadne czasy działania prwawdziwego komputera. Przeznaczony do testowania, debugowania i w innych, szczególnych przypadkach.&lt;br /&gt;
&lt;br /&gt;
W miarę rozwoju emulatora w opcji &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; uwzględnianych będzie coraz więcej aspektów pracy MERY-400.&lt;br /&gt;
&lt;br /&gt;
== Interfejs użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Język&#039;&#039;&#039; - język interfejsu. Pozwala wybrać jeden z języków lub honorować ustawienia systemu.&lt;br /&gt;
* &#039;&#039;&#039;Uruchom z włączoną maszyną&#039;&#039;&#039; - emulator uruchamia się z wybraną maszyną i włączonym zasilaniem (nie trzeba przekręcać kluczyka, żeby włączyć maszynę)&lt;br /&gt;
* &#039;&#039;&#039;Motyw pulpitu&#039;&#039;&#039; - GUI EM400 używa własnego motywu. Wyłączenie opcji powoduje, że używany jest motyw systemowy.&lt;br /&gt;
* &#039;&#039;&#039;Mały pulpit techniczny&#039;&#039;&#039; - grafika pulpitu technicznego skadrowana jest do interaktywnych elementów.&lt;br /&gt;
* &#039;&#039;&#039;Terminal&#039;&#039;&#039; - określa, czy emulator używa wbudowanej emulacji terminala, czy zewnętrznego terminala konfigurowanego w następnej opcji&lt;br /&gt;
* &#039;&#039;&#039;Polecenie terminala&#039;&#039;&#039; - polecenie, które uruchamiane jest, gdy użytkownik otwiera terminal, a opcja &#039;&#039;&#039;Terminal&#039;&#039;&#039; powyżej ustawiona jest na &#039;&#039;&#039;Zewnętrzny&#039;&#039;&#039;. Pomocnicze polecenie &#039;&#039;&#039;emterm&#039;&#039;&#039; instalowane jest wraz z emulatorem i zapewnia poprawne połączenie z emulatorem.&lt;br /&gt;
* &#039;&#039;&#039;Czcionka debugera&#039;&#039;&#039; - czcionka używana w interfejsie debugera&lt;br /&gt;
* &#039;&#039;&#039;Czcionka terminala&#039;&#039;&#039; - czcionka używana we wbudowanym terminalu&lt;br /&gt;
&lt;br /&gt;
= Dźwięk =&lt;br /&gt;
&lt;br /&gt;
Dźwięk w emulatorze to dwa osobne tory audio:&lt;br /&gt;
&lt;br /&gt;
* dźwięki interfejsu - pstrykanie kluczy, dźwięk pokrętła rejestrów, etc.&lt;br /&gt;
* dźwięk głośniczka CPU - generowany przez samą emulację&lt;br /&gt;
&lt;br /&gt;
== Dźwięki interfejsu ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność dźwięków interfejsu&lt;br /&gt;
* &#039;&#039;&#039;Uwielbiam gdy cewki piszczą&#039;&#039;&#039; - sprawdź sam ;-)&lt;br /&gt;
&lt;br /&gt;
== Głośniczek CPU ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wyjście dźwięku włączone&#039;&#039;&#039; - włączenie dźwięku CPU&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność głośniczka CPU&lt;br /&gt;
* &#039;&#039;&#039;Częstotliwość próbkowania&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Długość bufora&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Opóźnienie&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Podsystem audio&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Urządzenie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logowanie =&lt;br /&gt;
&lt;br /&gt;
Umożliwia logowanie pracy emulatora do pliku.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logowanie włączone&#039;&#039;&#039; - aktywuje logowanie&lt;br /&gt;
* &#039;&#039;&#039;Komponenty&#039;&#039;&#039; - jakie komponenty emulacji zapisują swoje akcje do pliku logu&lt;br /&gt;
* &#039;&#039;&#039;Plik logu&#039;&#039;&#039; - plik, to którego log jest zapisywany&lt;br /&gt;
* &#039;&#039;&#039;Buforowanie liniowe&#039;&#039;&#039; - zapis do pliku odbywa się po każdej linii. W przeciwnym wypadku zapisy są buforowane do większych zapisów (wydajniejsze, ale można stracić fragment loga)&lt;br /&gt;
&lt;br /&gt;
Dostępne komponenty:&lt;br /&gt;
&lt;br /&gt;
* LIB - komunikaty biblioteki libem400&lt;br /&gt;
* APP - komunikaty aplikacji używającej biblioteki em400&lt;br /&gt;
* CRK5 - procesy i wywołania systemowe CROOK-5&lt;br /&gt;
* MEM - konfiguracja i zdarzenia w pamięci&lt;br /&gt;
* CPU - praca procesora &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; włączenie tej opcji loguje każdą wykonywaną instrukcję. Może to spowolnić emulację i generować pliki o rozmiarze wielu GB&lt;br /&gt;
* OP - szczegóły wybranych instrukcji CPU&lt;br /&gt;
* INT - przerwania&lt;br /&gt;
* IO - podsystem wejścia/wyjścia&lt;br /&gt;
* MX - MULTIX&lt;br /&gt;
* CCHR - kanał znakowy&lt;br /&gt;
* CMEM - kanał pamięciowy&lt;br /&gt;
* UZDAT - port szeregowy w kanale znakowym&lt;br /&gt;
* UZFX - kontroler stacji dysków SP45DE&lt;br /&gt;
* MECLO - zegar czasu rzeczywistego Amepolu&lt;br /&gt;
* TERM - terminal&lt;br /&gt;
* 9425 - dysk MERA 9425&lt;br /&gt;
* WNCH - dysk Winchester&lt;br /&gt;
* FLOP - stacja dysków&lt;br /&gt;
* PNCH - dziurkarka taśmy papierowej&lt;br /&gt;
* PNRD - czytnik taśmy papierowej&lt;br /&gt;
* TAPE - taśma magnetyczna&lt;br /&gt;
&lt;br /&gt;
= Plik konfiguracyjny =&lt;br /&gt;
&lt;br /&gt;
Konfiguracja określona w oknie ustawień emulatora zapisywana jest do tekstowego pliku konfiguracyjnego. EM400 odnajduje go w następujący sposób:&lt;br /&gt;
&lt;br /&gt;
# Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika &#039;&#039;&#039;-c&#039;&#039;&#039;), zostanie on użyty.&lt;br /&gt;
# Jeśli nie, domyślnie używany jest plik:&lt;br /&gt;
#* w systemach Linux, kolejno:&lt;br /&gt;
#** &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#** &#039;&#039;&#039;$HOME/.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#* w systemach Windows:&lt;br /&gt;
#** &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
# Jeśli plik konfiguracyjny nie istnieje, tworzony jest domyślny.&lt;br /&gt;
&lt;br /&gt;
Aktualny opis pliku konfiguracyjnego wraz z przykładami znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini tutaj]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
	<entry>
		<id>https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3316</id>
		<title>EM400 - konfiguracja</title>
		<link rel="alternate" type="text/html" href="https://mera400.pl/index.php?title=EM400_-_konfiguracja&amp;diff=3316"/>
		<updated>2026-08-30T09:40:56Z</updated>

		<summary type="html">&lt;p&gt;Amo: /* Logowanie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Konfiguracja emulatora dostępna jest z menu &#039;&#039;&#039;Emulator &amp;amp;rarr; Ustawienia&#039;&#039;&#039; i zorganizowana jest w sekcje:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Maszyna&#039;&#039;&#039; - konfiguracje sprzętowe emulowanego komputera&lt;br /&gt;
# &#039;&#039;&#039;Ogólne&#039;&#039;&#039; - ustawienia emulacji i interfejsu użytkownika&lt;br /&gt;
# &#039;&#039;&#039;Dźwięk&#039;&#039;&#039; - ustawienia dźwięków interfejsu użytkownika i głośniczka CPU&lt;br /&gt;
# &#039;&#039;&#039;Logowanie&#039;&#039;&#039; - konfiguracja logowania&lt;br /&gt;
&lt;br /&gt;
= Maszyna =&lt;br /&gt;
&lt;br /&gt;
EM400 pozwala przygotować wiele konfiguracji minikomputera i przełączać się nimi w zależności od potrzeb.&lt;br /&gt;
&lt;br /&gt;
Przy pierwszym uruchomieniu, EM400 tworzy dwie domyślne maszyny:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MERA-400&#039;&#039;&#039; - prosta konfiguracja z dwoma modułami pamięci Elwro i stacją dysków SP45DE&lt;br /&gt;
* &#039;&#039;&#039;MX-16&#039;&#039;&#039; - przeznaczona do uruchamiania systemu operacyjnego CROOK-5, z pamięcią MEGA Amepolu, procesorem peryferyjnym MULTIX i dyskiem Winchester&lt;br /&gt;
&lt;br /&gt;
Zarządzanie maszynami umożliwiają następujące opcje:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aktywna maszyna&#039;&#039;&#039; - wybór aktualnie edytowanej konfiguracji minikomputera&lt;br /&gt;
* &#039;&#039;&#039;Dodaj...&#039;&#039;&#039; - dodawanie nowej maszyny. Otwiera okienko pozwalające wpisać jej nazwę. Identyfikator maszyny wywodzony jest z podanej nazwy&lt;br /&gt;
* &#039;&#039;&#039;Powiel...&#039;&#039;&#039; - robi kopię aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuwa aktualnie wybraną maszynę&lt;br /&gt;
* &#039;&#039;&#039;Nazwa&#039;&#039;&#039; - nazwa aktualnie wybranej maszyny&lt;br /&gt;
* &#039;&#039;&#039;Identyfikator&#039;&#039;&#039; - identyfikator wybranej maszyny. Używa się go jako parametr opci &#039;&#039;&#039;-m&#039;&#039;&#039; przy wywoływaniu emulatora z linii poleceń&lt;br /&gt;
&lt;br /&gt;
Konfiguracja maszyny podzielona jest na trzy zakładki opisane w kolejnych sekcjach.&lt;br /&gt;
&lt;br /&gt;
== Procesor ==&lt;br /&gt;
&lt;br /&gt;
Można zmienić następujące właściwości procesora&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Jednostka zmiennoprzecinkowa (AWP)&#039;&#039;&#039; - czy zainstalowany jest Arytmometr Wielokrotnej Precyzji&lt;br /&gt;
* &#039;&#039;&#039;Modyfikacje procesora&#039;&#039;&#039; - czy obecne są modyfikacje procesora wprowadzone w MX-16&lt;br /&gt;
* &#039;&#039;&#039;Instrukcje we/wy niedozwolone w trybie użytkownika&#039;&#039;&#039; - czy instrukcje IN oraz OU są niedozwolone w trybie użytkownika&lt;br /&gt;
* &#039;&#039;&#039;Zatrzymaj przy braku pamięci&#039;&#039;&#039; - czy procesor zatrzymuje się, jeśli w segmencie pamięci dla systemu operacyjnego nastąpiło odwołanie do nieskonfigurowanej pamięci&lt;br /&gt;
* &#039;&#039;&#039;Okres zegara&#039;&#039;&#039; - co jaki czas zgłaszane są przerwania zegarowe (z wewnętrznego timera CPU)&lt;br /&gt;
&lt;br /&gt;
== Pamięć ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Moduły Elwro&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci ferrytowej Elwro (po 32 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Moduły MEGA&#039;&#039;&#039; - ilość zainstalowanych modułów pamięci półprzewodnikowej MEGA Amepolu (po 64 ksłów każdy)&lt;br /&gt;
* &#039;&#039;&#039;Strony systemowe (sprzętowe)&#039;&#039;&#039; - ilość stron pamięci skonfigurowanych sprzętowo dla systemu operacyjnego w segmencie 0&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM MEGA&#039;&#039;&#039; - obraz pamięci PROM (EPROM) w pamięci MEGA, który zastąpi domyślny&lt;br /&gt;
* &#039;&#039;&#039;Wstępnie ładowany program&#039;&#039;&#039; - program, który zostanie automatycznie załadowany do segmentu 0 po włączeniu maszyny&lt;br /&gt;
&lt;br /&gt;
== Wejście/wyjście ==&lt;br /&gt;
&lt;br /&gt;
W tej zakładce konfigurowane są kanały wejścia/wyjścia i podłączone do nich urządzenia:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dodaj kanał&#039;&#039;&#039; - dodanie nowego kanału wejścia/wyjścia (max 16)&lt;br /&gt;
* &#039;&#039;&#039;Dodaj urządzenie&#039;&#039;&#039; - dodanie nowego kurządzenia w kanale (ich ilość zależy od kanału)&lt;br /&gt;
* &#039;&#039;&#039;Usuń&#039;&#039;&#039; - usuń wybrane z listy urządzenie lub kanał&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodając nowy kanał należy wybrać jego numer oraz typ. Aktualnie obsługiwane kanały:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Znakowy&#039;&#039;&#039; - kanał znakowy minikomputera, do podłączanie wolnych urządzeń znakowych&lt;br /&gt;
* &#039;&#039;&#039;MULTIX&#039;&#039;&#039; - procesor peryferynjy MULTIX Amepolu&lt;br /&gt;
* &#039;&#039;&#039;Tester we/wy&#039;&#039;&#039; - do testów komunikacji, używany przez testy emulatora&lt;br /&gt;
&lt;br /&gt;
=== Dodawanie urządzeń do kanału ===&lt;br /&gt;
&lt;br /&gt;
Dodanie nowego urządzenia wymaga wybrania jego numeru i typu, oraz ustalenia opcji, które są zależne od typu urządzenia. Dostępne typy urządzeń zależą od tego, w jakim kanale jest ono dodawane.&lt;br /&gt;
&lt;br /&gt;
==== Terminal ====&lt;br /&gt;
&lt;br /&gt;
Dostępny w kanale znakowym i MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; Terminal w MULTIX-ie nie działa w obecnej wersji emulatora.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Port TCP&#039;&#039;&#039; - port TCP na którym słucha emulacja terminala.&lt;br /&gt;
* &#039;&#039;&#039;Prędkość&#039;&#039;&#039; - emulowana prędkość działania emulacji terminala. Domyślnie 9600 bodów.&lt;br /&gt;
&lt;br /&gt;
==== Pamięć SP45DE ====&lt;br /&gt;
&lt;br /&gt;
Dostępna tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obrazy dyskietek&#039;&#039;&#039; - pliki zawierające obrazy dyskietek 8&amp;quot; o geometrii: 1 strona (głowica), 77 ścieżek, 26 sektorów na ścieżkę, 128 bajtów na sektor = 256256 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Zegar czasu rzeczywistego Amepolu ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w kanale znakowym.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz PROM&#039;&#039;&#039; - alternatywna zawartość pamięci PROM zegara (256 bajtów). Zastępuje domyślną. &lt;br /&gt;
&lt;br /&gt;
==== Winchester ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Obraz dysku&#039;&#039;&#039; - plik zawierający obraz dysku o geometrii: 4 strony (głowice), 615 ścieżek, 16 sektorów na ścieżkę, 512 bajtów na sektor = 20152320 bajtów.&lt;br /&gt;
&lt;br /&gt;
==== Napęd dyskietek 5.25&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Dostępny tylko w MULTIX-ie. &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; aktualnie nie obsługiwany.&lt;br /&gt;
&lt;br /&gt;
= Ogólne =&lt;br /&gt;
&lt;br /&gt;
== Emulacja ==&lt;br /&gt;
&lt;br /&gt;
Ustawienia dotyczące sposobu realizacji emulacji.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Emulowane czasy&#039;&#039;&#039; określają to, jak wiernie emulator oddaje prawdziwą MERĘ-400 jeśli chodzi o prędkość pracy systemu. Możliwe są trzy poziomy:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; - Aktywne są wszystkie czasy, które są zaimplementowane w emulatorze. EM400 oddaje MERĘ-400 tak wiernie, jak tylko potrafi.&lt;br /&gt;
* &#039;&#039;&#039;Minimum&#039;&#039;&#039; - Aktywne są tylko czasy, które są wymagane do poprawnego działania oprogramowania MERY-400. Ogólna interakcja z emulowanym minikomputerem jest znacznie szybsza, niż z prawdziwym sprzętem.&lt;br /&gt;
* &#039;&#039;&#039;Żadne&#039;&#039;&#039; - &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; w tym trybie oprogramowanie może działać niepoprawnie z wielu przyczyn. Emulacja działa tak szybko, jak to możliwe. Nie są zachowane niemal żadne czasy działania prwawdziwego komputera. Przeznaczony do testowania, debugowania i w innych, szczególnych przypadkach.&lt;br /&gt;
&lt;br /&gt;
W miarę rozwoju emulatora w opcji &#039;&#039;&#039;Wszystkie&#039;&#039;&#039; uwzględnianych będzie coraz więcej aspektów pracy MERY-400.&lt;br /&gt;
&lt;br /&gt;
== Interfejs użytkownika ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Język&#039;&#039;&#039; - język interfejsu. Pozwala wybrać jeden z języków lub honorować ustawienia systemu.&lt;br /&gt;
* &#039;&#039;&#039;Uruchom z włączoną maszyną&#039;&#039;&#039; - emulator uruchamia się z wybraną maszyną i włączonym zasilaniem (nie trzeba przekręcać kluczyka, żeby włączyć maszynę)&lt;br /&gt;
* &#039;&#039;&#039;Motyw pulpitu&#039;&#039;&#039; - GUI EM400 używa własnego motywu. Wyłączenie opcji powoduje, że używany jest motyw systemowy.&lt;br /&gt;
* &#039;&#039;&#039;Mały pulpit techniczny&#039;&#039;&#039; - grafika pulpitu technicznego skadrowana jest do interaktywnych elementów.&lt;br /&gt;
* &#039;&#039;&#039;Terminal&#039;&#039;&#039; - określa, czy emulator używa wbudowanej emulacji terminala, czy zewnętrznego terminala konfigurowanego w następnej opcji&lt;br /&gt;
* &#039;&#039;&#039;Polecenie terminala&#039;&#039;&#039; - polecenie, które uruchamiane jest, gdy użytkownik otwiera terminal, a opcja &#039;&#039;&#039;Terminal&#039;&#039;&#039; powyżej ustawiona jest na &#039;&#039;&#039;Zewnętrzny&#039;&#039;&#039;. Pomocnicze polecenie &#039;&#039;&#039;emterm&#039;&#039;&#039; instalowane jest wraz z emulatorem i zapewnia poprawne połączenie z emulatorem.&lt;br /&gt;
* &#039;&#039;&#039;Czcionka debugera&#039;&#039;&#039; - czcionka używana w interfejsie debugera&lt;br /&gt;
* &#039;&#039;&#039;Czcionka terminala&#039;&#039;&#039; - czcionka używana we wbudowanym terminalu&lt;br /&gt;
&lt;br /&gt;
= Dźwięk =&lt;br /&gt;
&lt;br /&gt;
Dźwięk w emulatorze to dwa osobne tory audio:&lt;br /&gt;
&lt;br /&gt;
* dźwięki interfejsu - pstrykanie kluczy, dźwięk pokrętła rejestrów, etc.&lt;br /&gt;
* dźwięk głośniczka CPU - generowany przez samą emulację&lt;br /&gt;
&lt;br /&gt;
== Dźwięki interfejsu ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność dźwięków interfejsu&lt;br /&gt;
* &#039;&#039;&#039;Uwielbiam gdy cewki piszczą&#039;&#039;&#039; - sprawdź sam ;-)&lt;br /&gt;
&lt;br /&gt;
== Głośniczek CPU ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wyjście dźwięku włączone&#039;&#039;&#039; - włączenie dźwięku CPU&lt;br /&gt;
* &#039;&#039;&#039;Głośność&#039;&#039;&#039; - głośność głośniczka CPU&lt;br /&gt;
* &#039;&#039;&#039;Częstotliwość próbkowania&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Długość bufora&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Opóźnienie&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Podsystem audio&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Urządzenie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logowanie =&lt;br /&gt;
&lt;br /&gt;
Umożliwia logowanie pracy emulatora do pliku.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logowanie włączone&#039;&#039;&#039; - aktywuje logowanie&lt;br /&gt;
* &#039;&#039;&#039;Komponenty&#039;&#039;&#039; - jakie komponenty emulacji zapisują swoje akcje do pliku logu&lt;br /&gt;
* &#039;&#039;&#039;Plik logu&#039;&#039;&#039; - plik, to którego log jest zapisywany&lt;br /&gt;
* &#039;&#039;&#039;Buforowanie liniowe&#039;&#039;&#039; - zapis do pliku odbywa się po każdej linii. W przeciwnym wypadku zapisy są buforowane do większych zapisów (wydajniejsze, ale można stracić fragment loga)&lt;br /&gt;
&lt;br /&gt;
Dostępne komponenty:&lt;br /&gt;
&lt;br /&gt;
* LIB - komunikaty biblioteki libem400&lt;br /&gt;
* APP - komunikaty aplikacji używającej biblioteki em400&lt;br /&gt;
* CRK5 - procesy i wywołania systemowe CROOK-5&lt;br /&gt;
* MEM - konfiguracja i zdarzenia w pamięci&lt;br /&gt;
* CPU - praca procesora &#039;&#039;&#039;UWAGA:&#039;&#039;&#039; włączenie tej opcji loguje każdą wykonywaną instrukcję. Może to spowolnić emulację i generować pliki o rozmiarze wielu GB&lt;br /&gt;
* OP - szczegóły wybranych instrukcji CPU&lt;br /&gt;
* INT - przerwania&lt;br /&gt;
* IO - podsystem wejścia/wyjścia&lt;br /&gt;
* MX - MULTIX&lt;br /&gt;
* CCHR - kanał znakowy&lt;br /&gt;
* CMEM - kanał pamięciowy&lt;br /&gt;
* UZDAT - port szeregowy w kanale znakowym&lt;br /&gt;
* UZFX - kontroler stacji dysków SP45DE&lt;br /&gt;
* MECLO - zegar czasu rzeczywistego Amepolu&lt;br /&gt;
* TERM - terminal&lt;br /&gt;
* 9425 - dysk MERA 9425&lt;br /&gt;
* WNCH - dysk Winchester&lt;br /&gt;
* FLOP - stacja dysków&lt;br /&gt;
* PNCH - dziurkarka taśmy papierowej&lt;br /&gt;
* PNRD - czytnik taśmy papierowej&lt;br /&gt;
* TAPE - taśma magnetyczna&lt;br /&gt;
&lt;br /&gt;
= Plik konfiguracyjny =&lt;br /&gt;
&lt;br /&gt;
Konfiguracja określona w oknie ustawień emulatora zapisywana jest do tekstowego pliku konfiguracyjnego. EM400 odnajduje go w następujący sposób:&lt;br /&gt;
&lt;br /&gt;
# Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika &#039;&#039;&#039;-c&#039;&#039;&#039;), zostanie on użyty.&lt;br /&gt;
# Jeśli nie, domyślnie używany jest plik:&lt;br /&gt;
#* w systemach Linux, kolejno:&lt;br /&gt;
#** &#039;&#039;&#039;$XDG_CONFIG_HOME/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#** &#039;&#039;&#039;$HOME/.config/em400/em400.ini&#039;&#039;&#039;&lt;br /&gt;
#* w systemach Windows:&lt;br /&gt;
#** &#039;&#039;&#039;%APPDATA%\em400\em400.ini&#039;&#039;&#039;&lt;br /&gt;
# Jeśli plik konfiguracyjny nie istnieje, tworzony jest domyślny.&lt;br /&gt;
&lt;br /&gt;
Aktualny opis pliku konfiguracyjnego wraz z przykładami znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini tutaj]&lt;/div&gt;</summary>
		<author><name>Amo</name></author>
	</entry>
</feed>