Emulator kalkulatora Elektronika MK-85
Program emuluje mikroprocesor kompatybilny z PDP-11 oraz używa oryginalnej zawartości pamięci ROM kalkulatora.
Dzięki temu zachowuje się prawie dokładnie jak oryginał, łącznie ze wszystkimi błędami oraz możliwością programowania w języku maszynowym.
Wymaga komputera PC z systemem Windows.
Wersja programu 49, ostatnie uaktualnienie 2019/09/07
mk85emsr.zip - teksty źródłowe programu w Delphi
mk85emex.zip - skompilowana wersja programu
Sposób użycia: rozpakować pliki do pustego katalogu a następnie uruchomić program mk85m.exe
mk85emsl.zip - wersja dla środowiska Lazarus
![Zrzut ekranu emulatora MK-85](mk85emu3.png)
![Okno debugera emulatora MK-85](mk85emu2.png)
Panel deasemblera
- Przy wywołaniu okna debugera początkowy adres deasemblacji jest zgodny z zawartością rejestru Program Counter.
Można go zmienić klikając na adres w pierwszym wierszu i wpisując nową wartość.
Dozwolony zakres: $0000..$7FFE dla obszaru ROM, oraz $8000..$7FFE+RamSize dla obszaru RAM.
Nowa wartość musi być potwierdzona klawiszem Enter.
- Po kliknięciu na zdeasemblowaną instrukcję można wpisać nową.
Podobnie jak w przypadku adresu, konieczne jest wciśnięcie klawisza Enter żeby zmiany zostały przyjęte.
Po zakończeniu programu zapamiętywane są tylko modyfikacje zawartości pamięci RAM, natomiast wszelkie zmiany dokonane w obszarze ROM są utracone.
Panel edytora binarnego
- Edytor binarny pozwala na przeglądanie/edycję zawartości pamięci RAM.
- Można zmienić adres początkowy oraz zawartość pamięci klikając na nie i wpisując nową wartość.
Zmiany muszą być potwierdzone klawiszem Enter.
Panel rejestrów
- Kliknięcie na zawartość rejestru umożliwia wpisanie nowej wartości.
Zmiany muszą być potwierdzone klawiszem Enter.
- Ostatni wiersz pokazuje stan bitów TNZVC rejestru PSW.
Sterowanie programem
- Zamknięcie okna debugera wznawia wykonywanie programu bez żadnego śledzenia.
- Wciśnięcie klawisza [Run] w grupie Single step powoduje wykonanie jednego rozkazu maszynowego.
- W celu wykonania określonej ilości rozkazów maszynowych należy wpisać żądaną wartość (dziesiętnie) do pola Number of steps a następnie wcisnąć przyporządkowany klawisz [Run].
Uwaga: przejście do debugera gdy symulowany mikrokomputer jest bezczynny zwykle trafia w adres PC=$014A, gdzie oscylator jest
zatrzymany a procesor oczekuje na przerwanie z klawiatury.
Próba pracy krokowej w tym stanie nie przynosi żadnych efektów.
- Panel Breakpoint umożliwia zdefiniowanie pułapki, tzn. wartości licznika programu, której osiągnięcie powoduje wstrzymanie wykonywania programu i ponowne wywołanie okna debugera.
Niektóre parametry emulatora można dostosować do indywidualnych potrzeb modyfikując plik mk85m.ini za pomocą dowolnego edytora tekstowego.
Opis zawartości tego pliku:
CpuSpeed=250
- Ta wartość określa prędkość emulowanego procesora (ilość instrukcji wykonywanych co 10ms).
RamSize=2048
- Ta wartość definiuje fizyczny rozmiar emulowanej pamięci RAM.
Typowe wartości to 2048 dla modelu MK85 z 2kB pamięci RAM, oraz 6144 dla modelu MK85M z 6kB pamięci RAM.
Po każdej zmianie konieczne jest skasowanie pliku ram.bin (w celu uniknięcia ostrzeżenia o próbie odczytu poza końcem pliku) oraz inicjalizacja pamięci za pomocą klawisza F8 lub komendy TEST.
Radix=16
- Ta wartość określa podstawę systemu liczbowego używaną przez debuger (16 dla szesnastkowego, 8 dla oktalnego).
W celu usunięcia emulatora wystarczy skasować podkatalog w którym został zainstalowany.
Program nie dokonuje w systemie żadnych zmian poza swoim podkatalogiem.
- Program jest rozwinięciem niezakończonego projektu emulatora MK-85, którego autorem jest Aleksei Akatov (Arigato Software).
- Znaczna część kodu jest oparta o projekt emulatora PDP-11/03, którego autorem jest Ovsienko V.A.
- Disassembler powstał na podstawie programu pinst.c, którego autorem jest Martin Minow.
- W programie użyty został darmowy komponent ThreadedTimer, którego autorem jest Carlos Barbosa.
mk85emut.zip - rozmiar pliku: 31kB, teksty źródłowe i kody wykonywalne, DOS lub Windows (w okienku DOS)
BAS2RAM
Ten program dokonuje konwersji listy programów BASIC w formacie ASCII na obraz pamięci RAM mikrokomputera MK-85.
Sposób użycia:
bas2ram.com program1.bas [program2.bas program3.bas ...]
- Program tworzy plik wyjściowy RAM.BIN, który może być wykorzystany przez emulator.
Jeżeli kod wynikowy mieści się w 2kB, plik ma organizację pamięci MK-85 z 2kB RAM, w przeciwnym razie przyjęta jest organizacja pamięci MK-85M z 6kB RAM.
- Program oczekuje rosyjskich czcionek kodowanych w Windows-1251.
- Operatory relacji <>, <= oraz >= są zamieniane na odpowiednie kody MK-85: 0x5C, 0x5F, 0x7E.
Akceptowane są również formy ><, =< oraz =>.
- Stałe numeryczne w postaci wykładniczej można zapisać jako 1.23E5 lub 5.67E-8, przy czym łańcuchy E i E- są zastępowane odpowiednimi kodami MK-85: 0x7B i 0x7D.
- Łańcuch PI jest zastępowany kodem MK-85: 0x7C.
RAM2BAS
Ten program dokonuje przeciwnej operacji, tzn. wyświetla programy BASIC z pliku obrazu pamięci RAM o nazwie podanej w wierszu komend.
Sposób użycia: ram2bas.com infile.bin
- Rosyjskie czcionki są kodowane w Windows-1251.
- Wyjście można przekierować do pliku lub drukarki.
RAM2VARS
Funkcja zbliżona do poprzedniego, ale wyświetla listę zmiennych zamiast programów.