Maszyna Z
Projektant | Infokom |
---|---|
Bity | 16 |
wprowadzony | 1979 |
Wersja | 1.1 (2014) |
Projekt | CISC |
endianizm | Duży |
otwarty | Tak |
Z -machine to maszyna wirtualna opracowana przez Joela Bereza i Marca Blanka w 1979 roku i używana przez firmę Infocom w tekstowych grach przygodowych . Infocom skompilował kod gry do plików zawierających instrukcje Z-machine (zwanych plikami fabularnymi lub plikami Z-code) i dlatego mógł przenieść swoje przygody tekstowe na nową platformę, po prostu pisząc implementację Z-machine dla tej platformy. Biorąc pod uwagę dużą liczbę niekompatybilnych domowych systemów komputerowych używanych w tamtym czasie, była to ważna zaleta w porównaniu z używaniem kodu natywnego lub tworzeniem kompilatora dla każdego systemu.
Historia
„Z” w Z-machine oznacza Zork , pierwszą grę przygodową firmy Infocom. Pliki Z-code mają zwykle nazwy kończące się na .z1, .z2, .z3, .z4, .z5, .z6, .z7 lub .z8, gdzie liczba to numer wersji maszyny Z, na której plik ma być uruchamiany, jak podaje pierwszy bajt pliku opowieści.
Jest to jednak współczesna konwencja. Sam Infocom używał rozszerzeń .dat (Data) i .zip (ZIP = Z-machine Interpreter Program), ale ten ostatni kolidował z powszechnym używaniem .zip dla plików archiwów zgodnych z PKZIP , począwszy od lat 90., po zamknięciu Infocom przez Activision . Infocom wyprodukował sześć wersji maszyny Z. Pliki korzystające z wersji 1 i 2 są bardzo rzadkie. Wiadomo, że Infocom wydał tylko dwa pliki w wersji 1 i tylko dwa z wersji 2. Wersja 3 obejmuje większość gier wydanych przez Infocom. Późniejsze wersje miały więcej możliwości, których kulminacją była obsługa grafiki w wersji 6.
Kompilator (zwany Zilch), którego Infocom używał do tworzenia swoich plików fabularnych, nigdy nie został wydany, chociaż dokumentacja używanego języka ( ZIL , język z rodziny Lisp podobny do MDL ) nadal istnieje, a zamiennik „ZILF” o otwartym kodzie źródłowym ma zostało napisane. Po tym, jak Mediagenic przeniósł Infocom do Kalifornii w 1989 roku, Computer Gaming World stwierdził, że „ZIL… jest funkcjonalnie martwy” i zgłosił plotki o „całkowicie nowym parserze, którego nigdy nie można użyć”. W maju 1993 roku Graham Nelson wydał pierwszą wersję swojego kompilatora Inform , który również generuje pliki fabularne Z-machine jako dane wyjściowe, mimo że język źródłowy Inform jest zupełnie inny niż ZIL.
Inform stał się popularny w interaktywnej społeczności fikcji . Duża część interaktywnej fikcji ma postać plików fabularnych Z-machine. Zapotrzebowanie na możliwość tworzenia większych plików gry skłoniło Nelsona do określenia wersji 7 i 8 maszyny Z, chociaż wersja 7 jest rzadko używana. Ze względu na sposób obsługi adresów plik historii w wersji 3 może mieć długość do 128 KB, historia w wersji 5 może mieć długość do 256 KB, a historia w wersji 8 może mieć długość do 512 KB. Chociaż te rozmiary mogą wydawać się małe według dzisiejszych standardów obliczeniowych, w przypadku przygód zawierających tylko tekst są one wystarczająco duże dla rozbudowanych gier.
W latach 90. Graham Nelson opracował standard Z-Machine na podstawie szczegółowych badań istniejących plików Infocom. Standard zawiera również rozszerzenia używane przez jego nowsze wersje, a także linki do formatu zasobów „ Blorb ” używanego przez Infocom oraz formatu pliku zapisu „ Quetzal ”. W 2006 roku Nelson rozszerzył Z-machine do 32-bitowego Glulx dla Inform 7. Fundacja Interactive Fiction Technology Foundation , założona w 2016 roku, zarządza wszystkimi tymi standardami.
ZIL (język implementacji Zork)
ZIL jest oparty na MDL z MIT. Oto jak wygląda definicja mosiężnej latarni Zork I:
<OBIEKT LATARNIA ( LOC SALON ) ( SYNONIM LAMPA LATARNIA ) ( PRZYMIOTNIK MOSIĄDZ ) ( DESC "latarnia mosiężna" ) ( FLAGS TAKEBIT LIGHTBIT ) ( ACTION LANTERN-F ) ( FDESC "Latarnia zasilana bateryjnie jest na walizce z trofeami . ) ( LDESC
„Tutaj jest mosiężna latarnia (na baterie).” ) ( ROZMIAR 15 ) >
Bardziej złożony przykład dotyczący walki, wraz z jej odpowiednikiem MDL Zork, został przedstawiony w poście na blogu z 2019 roku autorstwa Andrew Plotkina. Warto zauważyć, że Z-machine nie obsługuje wyrzucania elementów bezużytecznych , a ZIL nie ma koncepcji systemu list Lispa.
Tłumacze ustni
Interpretery plików Z-code są dostępne na wielu różnych platformach. Witryna Inform zawiera listę linków do swobodnie dostępnych interpreterów dla 15 systemów operacyjnych dla komputerów stacjonarnych (w tym 8-bitowych mikrokomputerów z lat 80., takich jak Apple II , TRS-80 i ZX Spectrum , oraz grupowanie „Unix” i „Windows” po jednym) , 10 mobilnych systemów operacyjnych (w tym Palm OS i Game Boy ) oraz cztery platformy interpreterów (Emacs, Java, JavaScript i Scratch). Według Nelsona jest to „prawdopodobnie najbardziej przenośna maszyna wirtualna, jaką kiedykolwiek stworzono”.
Popularnymi tłumaczami są Nitfol i Frotz. Nitfol korzysta z Glk API i obsługuje wersje od 1 do 8 Z-machine, w tym graficzną wersję 6 Z-machine. Pliki zapisu są przechowywane w standardowym Quetzal . Pliki binarne są dostępne dla kilku różnych systemów operacyjnych , w tym klasycznego Mac OS , systemów uniksopodobnych , DOS i Windows .
Frotz został napisany w C przez Stefana Jokischa w 1995 roku dla DOS. Z biegiem czasu został przeniesiony na inne platformy, takie jak systemy uniksopodobne , RISC OS i iOS . Efekty dźwiękowe i grafika były obsługiwane w różnym stopniu. W 2002 roku rozwój utknął w martwym punkcie, a program został przejęty przez Davida Griffitha. Baza kodu została podzielona między maszynę wirtualną i interfejs użytkownika części w taki sposób, że maszyna wirtualna uniezależniła się od jakiegokolwiek interfejsu użytkownika. Pozwoliło to na większą różnorodność w przenoszeniu Frotza. Jeden z dziwniejszych portów jest również jednym z najprostszych: bot do obsługi wiadomości błyskawicznych jest owinięty wokół wersji Frotza z minimalną funkcjonalnością I/O, tworząc bota, za pomocą którego można grać w większość gier Z-machine za pomocą klienta komunikatora.
Innym popularnym klientem dla systemu macOS i innych systemów uniksopodobnych jest Zoom. Obsługuje ten sam Quetzal , ale opakowanie struktury plików jest inne.
Zobacz też
- Glulx – podobny do Z-machine, ale usuwa kilka starszych ograniczeń
- Inform - język komputerowy, który może tworzyć programy Z-machine
- SCUMM – narzędzie do tworzenia skryptów dla Maniac Mansion firmy - LucasArts , podobny system graficzny do Z machine
- TADS – Podobnie jak Glulx, stworzony w celu rozwiązania niektórych jego ograniczeń
- Seria Motorola 68000 — podstawowa architektura wykorzystywana w maszynach wirtualnych w grach przygodowych firmy Magnetic Scrolls
Linki zewnętrzne
- Dokument standardów Z-Machine
- Learning ZIL at the Wayback Machine (archiwum 7 sierpnia 2010) (PDF) to podręcznik Infocom ZIL z 1989 roku
- Opis ZIP w Wayback Machine (archiwum 9 marca 2012 r.) (PDF) program tłumacza języka Z (dokument wewnętrzny Infocom) z 1989 r.
- Tłumacze ustni
- Jak zmieścić duży program w małej maszynie opisuje tworzenie i projektowanie maszyny-Z