Emulator kalkulatora FX-8000G
Program wymaga komputera PC z systemem Windows.
Wersja programu 09, ostatnie uaktualnienie 2021/02/06
fx8000es.zip - teksty źródłowe programu w Delphi
fx8000em.zip - skompilowana wersja programu
Sposób użycia: rozpakować pliki do pustego katalogu a następnie uruchomić program fx8000g.exe
fx8000el.zip - wersja dla środowiska Lazarus (wypróbowana pod Ubuntu Linux oraz Windows)
![Zrzut ekranu emulatora FX-8000G](fx8000g3.png)
![Okno debugera emulatora FX-8000G](fx8000g4.png)
- Następujące pliki zawierają obrazy pamięci i są załadowywane przy starcie programu:
rom0.bin - wewnętrzna pamięć procesora ROM 18kB
rom1.bin - zewnętrzna pamięć ROM 32kB
charset.bin - wewnętrzna pamięć ROM sterownika LCD o rozmiarze 1.5kB
ram.bin - pamięć RAM 8kB
register.bin - wewnętrzne rejestry procesora
- Po zakończeniu programu są zapisywane na dysk zaktualizowane wersje plików
ram.bin
i register.bin
.
Brakujące pliki są odtwarzane, ale muszą wtedy zostać zainicjowane przyciskiem F8.
- Emulator może być obsługiwany myszą lub z klawiatury.
Specjalne funkcje klawiszy:
Home: SHIFT
End: ALPHA
Esc: AC
Delete: DEL
Enter: EXE
F3: wstrzymuje wykonywanie programu i wywołuje okno debugera
F8: inicjowanie zawartości pamięci RAM (odpowiada przyciskowi z tyłu)
Funkcjonują również klawisze sterujące kursorem.
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ść, która 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.
Uwagi:
- nie można używać etykiet ani wyrażeń arytmetycznych
- akceptowane są liczby szesnastkowe (poprzedzone prefiksem &H) oraz dziesiętne
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.
- Pierwszy wiersz pokazuje stan sześciu najbardziej znaczących bitów rejestru Flag.
Ich stan można również modyfikować.
Panel rejestrów głównych (main register file)
- Kliknięcie na zawartość rejestru umożliwia wpisanie nowej wartości.
Zmiany muszą być potwierdzone klawiszem Enter.
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].
- 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 fx8000g.ini za pomocą dowolnego edytora tekstowego.
Opis zawartości tego pliku:
OscFreq=910
- Ta wartość definiuje częstotliwość zegara emulowanego procesora.
SelfTest=0
- Ta wartość definiuje czas trwania zwarcia styków TEST na płytce drukowanej od momentu startu aplikacji (jednostką czasu jest ok. 30-60ms).
Dla normalnej pracy należy wpisać wartość 0.
Dla uruchomienia wbudowanej procedury diagnostycznej zalecana jest wartość 20.
W celu usunięcia emulatora wystarczy skasować podkatalog w którym został zainstalowany.
Program nie dokonuje w systemie żadnych zmian poza swoim podkatalogiem.
- W programie użyty został darmowy komponent ThreadedTimer, którego autorem jest Carlos Barbosa.
- Obraz pamięci ROM
rom0.bin
musiał zostać zmodyfikowany (zamiana miejscami rozkazów pod adresami &H02C6 i &H02C7) z powodu jakiejś nierozpoznanej właściwości portu klawiatury.
- Nie są emulowane dziwactwa instrukcji RODM, SWPM, XCHSM, XCLSM (odejmowanie bitu Carry).
- Nie jest obsługiwana funkcja przewijania komendy $8 sterownika LCD.
- Mogą być błędy w wyniku niedokładności rekonstrukcji zawartości wewnętrznej pamięci ROM.