Emulator kalkulatora MK-90
Program emuluje mikroprocesor kompatybilny z PDP-11 oraz używa oryginalnej zawartości pamięci ROM kalkulatora, dzięki czemu zachowuje się prawie dokładnie jak oryginał.
Wymaga komputera PC z systemem Windows.
Wersja programu 07, ostatnie uaktualnienie 2008/02/11
mk90emsr.zip - teksty źródłowe programu w
Delphi, rozmiar pliku: 68kB
mk90emex.zip - skompilowana wersja programu,
rozmiar pliku: 232kB
Sposób użycia: rozpakować pliki do pustego katalogu a następnie uruchomić program MK90.exe
mk90ro10.zip - zawartość pamięci ROM
wcześniejszej wersji komputera z BASIC V1.0
Sposób użycia: zamienić plik rom.bin
Uwaga: po zmianie pamięci ROM należy na nowo sformatować zewnętrzne moduły pamięci za pomocą komendy INIT.


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..$3FFE dla obszaru RAM, oraz $4000..$FEFE dla obszaru ROM.
Nowa wartość musi być potwierdzona klawiszem Enter.
- Dostęp do przestrzeni adresowej $E800..EBFE przeznaczonej dla urządzeń wejścia-wyjścia może zakłócić komunikację z modułami pamięci SMP.
- 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.
Błędy są sygnalizowane czerwonym znakiem zapytania.
Po zakończeniu programu zmiany nie są zapamiętywane.
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 tym trybie ignorowane są zgłoszenia przerwań.
- W celu wykonania określonej ilości rozkazów maszynowych należy wpisać żądaną ilość kroków (dziesiętnie) do pola Count of steps a następnie wcisnąć przyporządkowany klawisz [Run].
- 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 MK90.ini za pomocą dowolnego edytora tekstowego.
Opis zawartości tego pliku:
CpuSpeed = 1000
- Ta wartość wpływa na prędkość emulowanego procesora.
W celu usunięcia emulatora wystarczy skasować podkatalog w którym został zainstalowany.
Program nie dokonuje w systemie żadnych zmian poza swoim podkatalogiem.
- 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.
- Emulowany jest mikroprocesor KA1806VM2, który może się trochę różnić od zastosowanego w mikrokomputerze MK-90.
Dotyczy to zwłaszcza systemu przerwań i specjalnych trybów pracy.
- Dźwięk nie jest jeszcze obsługiwany.
- Nie wiem w jaki sposób przesyłana jest zawartość pamięci obrazu do wyświetlacza LCD (prawdopodobnie przy użyciu DMA).
Emulator pomija ten fragment systemu i po prostu kopiuje na ekran zawartość pamięci RAM wskazywanej przez rejestr $E800.
- Ograniczona emulacja urządzeń peryferyjnych, przede wszystkim z powodu braku informacji o nich.
- Mała pamięć RAM podtrzymywana baterią jest celowo emulowana jako ulotna.
- BASIC V1.0 - moduły pamięci SMP nie przechodzą przez test.
Problem nie jest spowodowany przez emulator, ale przez błąd w oryginalnym oprogramowaniu systemowym.
Pod adresem $EEF8 powinna być instrukcja DEC 33CA.
mk90util.zip - rozmiar pliku: 19kB, teksty źródłowe i kody wykonywalne, DOS lub Windows (w okienku DOS)
Archiwum zawiera dwa osobne programy dla każdej wersji BASIC:
tosmp10.com - dla wersji BASIC 1.0
tosmp20.com - dla wersji BASIC 2.0
Program kopiuje listę programów BASIC w formacie ASCII (rosyjskie czcionki kodowane w Windows-1251) podaną w wierszu komend do obrazu pamięci modułu RAM.
Przykład:
tosmp10.com prog1.bas [prog2.bas prog3.bas ...]
Rezultatem pracy programu jest plik wyjściowy SMP0.BIN, którego można użyć w emulatorze lub zapisać do prawdziwego modułu pamięci.
W wersji BASIC 2.0 do wczytywania programów należy używać komendy LOAD z parametrem A, na przykład:
LOAD "PROG1.BAS",A