ZX Spectrum > EMULATORY
Integracja między emulatorami i systemem
Abrimaal:
Potrzeba jest... wynalazku chyba jeszcze nie ma.
W jakim emulatorze mogę dokonać takiego cudu:
Potrzebuję zapisać kilkadziesiąt screenów wygenerowanych przez ZX Spectrum.
Każdy screen jest inny, a jego kompozycja bazuje na podanej zmiennej A$
Nazwa zmiennej A$ ma być jednocześnie nazwą zapisanego pliku w formacie .png lub .bmp
Podobny temat poruszyłem na facebook, w grupie ZesarUX, emulatora.
Dostałem dwie odpowiedzi:
esxdos i ZXI
Nie znam tych wynalazków. Zapoznałem się z informacjami na stronach, ale i tak nie wiem,
Czy to są karty rozszerzenia funkcjonalności realnego ZX?
Czy pluginy dla emulatorów?
Czy za pomocą nich mogę przesyłać dane między emulowanym ZX, emulatorem i głównym systemem?
Dołączam 2 screeny z dyskusji.
steev:
Czy to jest do wykonania jednorazowo, czy jest to coś co chcesz wykonywać cały czas regularnie?
Lub wręcz to ma być funkcjonalność jakiegoś programu/systemu?
Abrimaal:
Ogólnie funkcjonalność systemów, komunikacja między nimi.
Tutaj emulowany system ZX jest najsłabszy, więc przez port OUT / IN przekazuje komendy i dane do emulatora. W tym przypadku, że emulator ma zapisać screenshot o nazwie pliku przesłanej przez ZX.
Emulator cały czas śledzi port i wykonuje polecenia przesłane przez ZX. Zacznijmy od tych najprostszych.
Program na ZX "mówi" do emulatora:
Zapisz screen o nazwie (tu ciąg znaków, a dokładniej ich kody)
Podaj mi dysk part2.trd (nazwa też przesłana jako kody ASCII). Sama nazwa bez ścieżki mówi, że part2 znajduje się w ostatnio otwartym przez emulator folderze.
ZX może oczywiście zmienić ją, gdy poda mu levels\level12.tap lub http://speccy.pl/intro.tzx
Przesyłam Ci ciąg liczb, podaj go dalej do calc.exe, bo mi by to zajęło godziny. Niech calc wykona wszystkie obliczenia. Odczytaj wynik i podaj mi.
Podaj mi aktualną datę i czas, ja (ZX) odczytam ją z portu IN
Prześlij mój RAM od 16384 do 65535 do programu hexplorer.exe, w nim użytkownik szybciej znajdzie sane, których szuka.
I tak można, a nawet trzeba iść dalej, pod warunkiem że każdy inny program także komunikuje się z otoczeniem, zapisując dane wyników do plików .txt, .log .bin czy innych, gdyby ZX potrzebował powiedzmy...
Zmienną A$ przesłaną do systemowego syntezatora mowy, zapisaną jako 1-bitowy sample, przesłany przez emulator do ZX RAM pod adres 32768.
Ile razy zdarzyło nam się otworzyć stronę internetową na smartfonie i chcemy otworzyć ją natychmiast na naszym PC, bez wysyłania linku mailem, przez Messenger czy inny Dropbox. Widzimy w menu "open desktop site" i czekamy na otwarcie jej na ekranie PC, a nie wersji desktopowej strony na smartfonie.
Czy też włączamy video na smartfonie i "graj to przez mój sprzęt HiFi, nie przez swój ekranik i głośniczek"...
Na tym polegać ma taka integracja w jednej sieci jednego użytkownika, który jest zawsze zalogowany na wszystkich swoich urządzeniach i systemach i nigdy więcej poza pierwszym razem nie jest pytany o login, hasło, pin, bo komputer "zapomniał" jak się nazywa jego admin.
A tymczasem taki Windows 10 z 2020 ma nawet problem z zapamiętaniem, żeby program do oglądania video otwierał zawsze na ekranie TV, chyba że jest on wyłączony. Wtedy jednorazowo otwórz video na monitorze i wróć do TV następnym razem.
steev:
OK. Czyli technicznie mówiąc, chcesz dodać do emulatora wirtualny interface dla ZX Spectrum, do którego mogą się odwoływać programy działające na ZX (w basicu bądź assemblerze) a który to 'interface' będzie tak naprawdę serwerem usług.
Gelip:
Może komunikacja przez port szeregowy np. przez ZX Interface 1? Przez port COM można wysyłać/odbierać różne dane pomiędzy emulatorem a PC, między dwoma emulatorami lub między emulatorem a prawdziwym ZX Spectrum. Ja bawiłem się w komunikację między emulatorem a systemem Windows - chat (przesyłanie tekstu) - ZX Chat
Przez port RS232 można przesyłać też dane binarne - wystarczy zmienić kanał z "t" na "b" - szczegóły od strony 35 w dokumentacji ZX Interface 1: ZXInterface1_Microdrive_Manual.pdf lub https://worldofspectrum.org/archive/books/microdrive-and-interface-1-manual#36
Nawigacja
[#] Następna strona
Idź do wersji pełnej