Jedną z wielkich zalet współczesnej technologii jest możliwość odtworzenia działania starych systemów z wysoką precyzją. Dwa klasyczne i powracające przykłady to maszyna Enigma i moduł nawigacyjny Apollo, ale dziś wspomnimy o jeszcze bardziej ekstremalnym przypadku. David Given, lepiej znany jako Hjalfi na YouTube i Twitterze, postanowił stworzyć symulator komputera z lat 60. wykorzystywanego w kilku projektach kosmicznych, a co najbardziej imponujące – podzielił się swoją pracą w ośmiogodzinnym i pół filmie…
OBP, czyli On-Board Processor, został zaprojektowany pierwotnie w 1968 roku i używany w różnych projektach kosmicznych. Jednym z najważniejszych był teleskop OAO-3 Copernicus, najbardziej udany z całej serii OAO (Orbiting Astronomical Observatory), z misją trwającą od sierpnia 1972 do lutego 1981.
David Given, znany również jako Hjalfi, udostępnił bardzo interesujące szczegóły techniczne na swojej oficjalnej stronie: 18 bitów, architektura Von Neumanna, dane i kod współdzielące tę samą przestrzeń adresową, ochrona pamięci, DMA… w skrócie, system bardzo przyjemny w pracy. Przy częstotliwości 250 KHz OBP ma poważne ograniczenia prędkości, ale David nie poprzestał na powierzchownej analizie i postanowił stworzyć symulator… od początku do końca:
Symulator OBP, komputera z lat 60.
Twoje oczy Cię nie mylą: film trwa osiem i pół godziny, co odpowiada trzem dniom pracy. Wstęp zajmuje pięć minut, ale asembler zajmuje ponad godzinę, a reszta skupia się na symulatorze. Jednym z najciekawszych szczegółów asemblera jest to, że zgodnie z oryginalną dokumentacją miał być programowany w języku naturalnym. W rzeczywistości asembler nie „rozumie” słów w dosłownym sensie, ale pewne kluczowe frazy są powiązane z konkretnymi instrukcjami.
To dowodzi, że programowanie w języku naturalnym jest czymś, co badamy od dziesięcioleci, ale nigdy nie zdobyło popularności. David wyjaśnia, że język angielski jest zasadniczo niejednoznaczny i zależny od kontekstu, podczas gdy języki programowania są dokładnym przeciwieństwem. Być może język jest łatwy do czytania i interpretacji dla nas, ale też łatwo, żeby asembler się pogubił. W obliczu możliwości błędów wygodniej jest programiście wyeliminować wszelkie źródła niejednoznaczności i pisać instrukcje bezpośrednio.
Chcesz wiedzieć więcej? Link poniżej!
Oficjalna strona: Kliknij tutaj
Źródło: Hackaday