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 22, ostatnie uaktualnienie 2022/02/01
mk90emsr.zip - teksty źródłowe programu w Delphi
mk90emex.zip - skompilowana wersja programu
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.
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ą wartość (dziesiętnie) do pola Number 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.
RamSize=16384
- Ta wartość definiuje fizyczny rozmiar emulowanej pamięci RAM.
Przewidziana jest tylko do testów!
Domyślna wartość nie powinna być zmieniana, ponieważ system obsługuje tylko stały rozmiar 16kB.
Cała przestrzeń adresowa jest już zajęta, zatem dodatkowo przydzielona pamięć RAM zasłania pamięć ROM z procedurami testowymi.
Radix=16
- Ta wartość określa podstawę systemu liczbowego używaną przez debuger (16 dla szesnastkowego, 8 dla oktalnego).
SaveRom=0
- Wartość różna od 0 wywołuje przy wyjściu z programu okno dialogowe umożliwiające zapis na dysk zmodyfikowanego pliku obrazu pamięci ROM.
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 1806ВМ2, 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.
- Ustawienia szybkości transmisji szeregowej są ignorowane.
- 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