Emulator kalkulatora PB-2000C
Program emuluje mikroprocesor HD61700 oraz używa obrazu odczytanej zawartości pamięci ROM kalkulatora.
Wymaga komputera PC z systemem Windows.
Wersja programu 27, ostatnie uaktualnienie 2023/12/15
pb2000es.zip - teksty źródłowe programu w Delphi 5
pb2000em.zip - skompilowana wersja programu
Sposób użycia: rozpakować pliki do pustego katalogu a następnie uruchomić program pb2000c.exe
ai1000em.zip - wersja japońska AI-1000 programowana w języku Lisp
Sposób użycia: Zastąpić pliki face.bmp i rom1.bin w katalogu w którym został zainstalowany program.
Obrazy pamięci ROM z innymi językami programowania
om51p.zip - karta pamięci OM-51P z językiem Prolog
om53b.zip - karta pamięci OM-53B z językiem BASIC
om54a.zip - karta pamięci OM-54A z językiem CASL
pb_casl.zip - karta pamięci z językami BASIC+CASL (jest to karta OM-53B z dodanym asemblerem CASL i symulatorem COMET adaptowanym z kalkulatora PB-1000C)
Sposób użycia: Umieścić pliki rom2.bin oraz overlay.bmp w katalogu w którym został zainstalowany program.
W celu powrócenia do interpretera języka C należy skasować plik rom2.bin i przywrócić poprzedni plik overlay.bmp.
- Następujące pliki zawierają obrazy pamięci i są załadowywane przy starcie programu:
rom0.bin - wewnętrzna pamięć procesora ROM 6kB
rom1.bin - zewnętrzna pamięć ROM 64kB
charset.bin - wewnętrzna pamięć ROM sterownika LCD o rozmiarze 1.5kB
ram0.bin - pamięć RAM 64kB na stronie 1
ram1.bin - dodatkowa pamięć RAM 32kB na stronie 2
register.bin - wewnętrzne rejestry procesora
rom2.bin - opcjonalna główna pamięć ROM 64kB w karcie
rom3.bin - opcjonalna druga pamięć ROM 64kB w karcie
- Po zakończeniu programu są zapisywane na dysk zaktualizowane wersje plików
ram0.bin
, ram1.bin
i register.bin
.
Brakujące pliki są odtwarzane, ale muszą wtedy zostać zainicjowane przyciskiem New All (F8).
- Jeżeli któryś z plików
rom2.bin
lub rom3.bin
jest obecny, to emulowany komputerek przyjmuje, że włożona jest do gniazda karta pamięci (obecność lub brak tych plików wpływa na stan portu P1).
- Emulator może być obsługiwany myszą lub z klawiatury.
Specjalne funkcje klawiszy:
Page Up: czerwone S
Page Down: CAPS
Esc: BRK
Insert: INS
Backspace: BS
Delete: DEL
Enter: EXE
F2: nakładka na klawiaturę
F3: wstrzymuje wykonywanie programu i wywołuje okno debugera
F8: New All
F9: Reset
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
- argumentem skoków względnych może być tylko adres absolutny, nie przesunięcie
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 czterech 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 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 pb2000c.ini za pomocą dowolnego edytora tekstowego.
Opis zawartości tego pliku:
OscFreq = 912
- Ta wartość definiuje częstotliwość zegara emulowanego procesora.
OptionCode=255
- Ta wartość definiuje Option Code podłaczonego urządzenia peryferyjengo.
Powinna być równa 255 (dla samodzielnej pracy kalkulatora, bez urządzeń peryferyjnych) lub 85 (do wspólpracy z emulatorem stacji dysków MD-100).
Wybór wartości 85 bez uruchomionego emulatora MD-100 bardzo spowalnia pracę programu!
Address=127.0.0.1
- Ta wartość definiuje adres IP hosta serwera udostępniającego emulowaną stację dysków (FDD).
Zwykle jest to lokalny komputer.
Port=7420
- Ta wartość definiuje port serwera FDD z którego kalkulator ma korzystać.
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.
- Dźwięk nie jest jeszcze obsługiwany.
- 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.
pb2000et.zip - teksty źródłowe i kody wykonywalne, DOS lub Windows (w okienku DOS)
Oba poniższe programy modyfikują zawartość pliku ram0.bin
(obraz pamięci RAM) znajdującego się w tym samym katalogu.
Program przesyłający pliki pomiędzy komputerem PC i obszarem ramdysku w obrazie pamięci RAM używanym przez emulator.
Akceptuje te same komendy i parametry jak program RAMTRANS dla PB-1000, z wyjątkiem obsługi większej ilości typów danych.
- Tekstowe typy plików
- S - Ogólne pliki tekstowe, tzn. rekordy MEMO, skrypty źródłowe programów Pascal, pliki przesyłane przez RS-232C oraz programy BASIC zapisane za pomocą
SAVE,A
- C - Skrypty źródłowe programów w języku C
- L - Skrypty źródłowe programów w języku Lisp
- P - Skrypty źródłowe programów w języku Prolog
- Binarne typy plików
- M - Ogólne pliki binarne (np. zapisane za pomocą
BSAVE
)
- B - Programy BASIC w wewnętrznym formacie
- E - Pascal (E)xecutable (wykonywalne)
- T - Pascal (T)yped
- U - Pascal (U)nit
Jest to adaptacja programu md100, którego autorem jest Marcus von Cube (podobna funkcja, ale działa z dyskietkami zapisanymi przez stację dysków MD-100 lub ich obrazami).
Ten program jest kompilatorem skrośnym języka C generującym kod dla PB-2000C.
Nie ma żadnej przewagi nad oryginalną komendą LOAD, wygenerowany P-kod i struktury danych są dokładnie takie same.
Został napisany w języku C z zamiarem jak najdokładniejszego zachowania struktury i algorytmów oryginału w celu ich lepszego zrozumienia.
Sposób użycia:
compiler.com source.c
Skompilowany kod uruchamia się komendą RUN, tak jak zwykle.
Udoskonalone rozwinięcie tego projektu z emulacją portu szeregowego RS-232C i zdalnym sterowaniem (oparte na protokole TCP).