1

Udostępniam pierwszą publiczną wersję emulatora Atari Portfolio, jest to efekt kilkumiesięcznej pracy. Działa w przeglądarce, bez instalowania czegokolwiek - https://portfoliator.atari.org.pl

Emulator nie zawiera plików z ROM. Są własnością Atari i DIP, więc przed uruchomieniem trzeba je znaleźć we własnym zakresie. Potrzebne są cztery pliki: ROM aplikacji, BIOS z DIP-DOS-em, generator znaków LCD i wewnętrzny generator znaków HD61830. Pliki można wrzucić na okno strony. Emulator czyta je tylko na Twoim komputerze i zapamiętuje w przeglądarce, niczego nie wysyła. Rozpoznaje je po zawartości, więc nazwy i kolejność nie mają znaczenia. Przyjmie też sklejony zrzut 256 KB. Sprawdzona rewizja to DIP-DOS 2.11 z ROM v1.072. Inne rewizje uruchomi, ale oznaczy jako nieznane.

Przetestowane pliki ROM:
- c101782-007.u4 - ROM aplikacji, 128 KB
  CRC32 C9852766, SHA-256 82ceb9b0a3541191525d87c04c2fe832905fad71bffd162f960b59c0dfb649e6
- c101781-007.u3 - BIOS i DIP-DOS, 128 KB
  CRC32 B8FB730D, SHA-256 3fd92628ca0f8960149b20700f486c4109eb4a9c0ae7d5a857eb13e9f440c223
- c101783-001a-01.u3 - generator znaków LCD, 32 KB
  CRC32 61FDAFF1, SHA-256 60a971516b85b160fb343141b12811af4e627423b8e4e1dc33ef16f19e542cd9
- hd61830.bin - wewnętrzny generator znaków HD61830, 1472 B
  CRC32 06A934DA, SHA-256 8738511c6a2f02b0ef1be2cde90898458b4517151cb473ff28ae212dbd1c1737

Krótka charakterystyka:

- Rdzeń 8088 to przeniesienie rdzenia z MartyPC. Symuluje jednostkę magistrali, czterobajtową kolejkę rozkazów i mikrokod mnożenia i dzielenia. Sprawdziłem go na dwa sposoby:
- na ponad 3 mln rozkazów nagranych z prawdziwego 8088 rejestry, znaczniki i pamięć zgadzają się w 100%, a liczba taktów i stan magistrali w 97.5%;
- wobec 647 pomiarów zrobionych na prawdziwym Portfolio (samemu, tymy rencamy i z testerami) średni błąd wynosi 0.17%. W 568 przypadkach emulator daje dokładnie ten sam licznik co sprzęt.
- Sterownik HD61830 razem z jego czasami, rejestr kontrastu, bezwładność matrycy (cztery kształty narastania do wyboru), grid i grafika obudowy w czterech rozmiarach.
- Dźwięk PCD3311T, łącznie z wybieraniem tonowym DTMF.
- Karty pamięci w slocie A: oraz w slocie B: z rozszerzeniem HPC-104. Kartę można tworzyć, wgrywać, pobierać i edytować plik po pliku ze strony.
- HPC-101 (port równoległy) obsługuje drukowanie do pliku i protokół przesyłania plików Portfolio.
- HPC-102 (port szeregowy) obsługuje: terminal, prawdziwy port RS-232 komputera przez Web Serial (Chrome lub Edge), wirtualny modem z wybieraniem tonowym; telnet idzie przez mały przekaźnik w Node, do pobrania ze strony, null-modem między dwiema kartami przeglądarki.
- Stan maszyny. Są trzy gniazda zrzutów i plik .pofostate. Zrzut obejmuje całą maszynę, łącznie z procesorem, kartami i podłączonym sprzętem. Pamięć podtrzymywana bateryjnie, w tym dysk C:, zapisuje się sama.
- Inspektor: rejestry, deasembler, podgląd pamięci, dziennik portów, pułapki na adresy i porty, krokowanie. Do tego podgląd PERMDATA.DAT, czyli tego, co Portfolio pamięta o sobie.
- Interfejs po polsku i po angielsku, przełączany w locie.

Obsługiwane przeglądarki

Chrome lub Edge 80+ (także Opera, Brave i inne pochodne), Safari 15+ (także iOS) i Firefox 114+. Port szeregowy przez Web Serial działa tylko w Chrome i Edge.

Źródła: https://github.com/delysio/portfoliator - licencja BSD-3-Clause.

- Czysty JavaScript i moduły ES, bez budowania i bez kodu po stronie serwera. Żeby postawić własną kopię, wystarczy skopiować pliki na dowolny serwer WWW.
- Dokumentację (README po polsku i angielsku) można traktować też jako opis sprzętu: mapa pamięci i I/O, przerwania, zarządzanie energią, czasy LCD, sposób mierzenia na Portfolio.
- Zestaw testów uruchamia się z Node. Rdzeń emulatora działa też bez przeglądarki jako headless - może się przydać do pisania i debugowania własnego softu.
- Model sprzętu odtworzyłem na podstawie źródeł MAME (BSD-3-Clause), a rdzeń procesora pochodzi z MartyPC (MIT). Szczegóły są w pliku LICENSE.

Emulator testowali: Peri Noid, spkr/sfmx, MKM/Lamers, Cosi i tr1x/Agenda. Ich testy, zgłoszenia i porównania z oryginalnym Portfolio wskazały rzeczy, których sam z pewnością bym nie znalazł. Bardzo dziękuję za pomoc w rozwoju tego programu.

Uwagi i błędy chętnie przyjmę tutaj albo na GitHubie jako issues. Disklajmer: do stworzenia używałem LLM.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.