Całkiem niedawno ukazało się wznowienie książki Jana Ruszczyca "Poznajemy FORTH". Pierwsze wydanie miało miejsce jeszcze w czasach PRL, w roku 1987, w okresie szalonej popularności ośmiobitowych Atari, które dopiero co pojawiły się w Pewexie (jesień 1985). Użytkownicy dostali sprzęt, za czym szło ogromne zapotrzebowanie na oprogramowanie i wiedzę o sprzęcie. Pisma komputerowe zaczęły się rozpisywać o Atari, a i rynek księgarski nie próżnował. Warszawskie wydawnictwo SOETO aktywnie szukało potencjalnych autorów, nawet z oczywistych względów takich, którzy dotychczas nie napisali żadnego podręcznika czy skryptu. Stawiano im niewielkie wymagania, o czym wspominali Wojtek Zientara i Klaudiusz Dybowski, z którymi przeprowadziłem wywiady - "żeby było o komputerach". Nakłady tych publikacji nie były wysokie jak na ówczesne czasy, bo maksymalnie kilka tysięcy sztuk, ale trzeba pamiętać, że nie obowiązywał wtedy rachunek ekonomiczny (im większe zapotrzebowanie tym większy nakład), a odgórnie ustalane limity przydziału papieru na druk danej książki. Nie wiadomo więc, jakie było faktyczne zapotrzebowanie na temat FORTH-a. Jak wiemy po latach, językiem tym interesowało się znacznie mniej osób niż asemblerem 6502, o którym Jan Ruszczyc również napisał książkę. Ale w świadomości społecznej, w tym wydawców i czytelników, było wrażenie, że FORTH to język stosunkowo popularny, wydajny i nawet przyszłościowy. Jak było naprawdę i skąd się wzięło to przeświadczenie?
O tym możecie poczytać we wstępie do reedycji tej książki. Bo jak zwykle właściciel wydawnictwa Retronics.eu, Jerzy Dudek nie poprzestał na wydrukowaniu oczyszczonej z błędów kopii tekstu z 1987 roku, ale aktywnie poszukiwał dodatków, o które można by książkę wzbogacić. Ponieważ poprosił mnie o napisanie czegoś, naświetliłem historię FORTH-a w polskiej prasie komputerowej, nieudaną próbę jego popularyzacji, a także powody, dla których książka "Poznajemy FORTH", teoretycznie przeznaczona dla użytkowników Atari, szeroko dostępna w niskiej cenie, tylko w bardzo znikomym stopniu przyczyniła się do powstania rodzimego oprogramowania dla naszej platformy.
Zaprosiliśmy też Bartka Gołdę, który na AtariOnline.pl wykazywał osamotnione zainteresowanie FORTH-em, do przedstawienia swojej wiedzy o praktycznym użytkowaniu atarowskiej implementacji tego języka. Bartek postanowił szczegółowo i systematycznie przebadać wszystko, co na naszych komputerach miało wspólnego z FORTH. Okazało się, że w kwestii FORTH na Atari panuje ogromny bałagan, krąży w sieci mnóstwo niesprawdzonych i nieprawdziwych informacji, a dostępne są wersje oprogramowania bez dokumentacji, dyskietki kalekie, popsute, a niektórych rzeczy po prostu nie ma, zaginęły zarówno one, jak i wiedza o nich. Bartek wykonał gigantyczną pracę archeologiczną i systematyzującą, którą prowadzimy i propagujemy w Polskim Towarzystwie Ochrony Dziedzictwa Technicznego (ptodt.org.pl), a której efektem jest znakomity i praktyczny dodatek do książki o implementacjach FORTH dla ośmiobitowego Atari. Praktyczny, ponieważ Bartek używał FORTH na Atari i poznał prawdziwe bolączki stworzenia sobie środowiska programistycznego, dzieli się nimi i ich rozwiązaniami z czytelnikami. Bartek w reedycji poprawił te listingi, które nie miały prawa działać, a nawet odkrył, analizując egzotyczne podręczniki FORTH z lat 80., że książka pana Jana nie jest w pełni oryginalna, udało się odnaleźć zapożyczenia.
Mniejszy objętościowo jest dodatek o kompilatorze Forth. Nazywa się foco65, a jego autorem jest Piotr Wiszowaty, który udzielił zgody na wykorzystanie w książce. Pierwotny tekst w języku angielskim został przez Bartka przetłumaczony z pomocą Piotra Fusika, a instrukcję uzupełnił krótkim opisem uruchamiania. Wisienką na tym książkowym torcie jest wywiad, który Bartek przeprowadził z Rolandem Pantołą, polskim twórcą gier w FORTH, a także autorem pamiętnego kursu FORTH, publikowanego w "Tajemnicach Atari".
To jest ta wartość dodana, o której zapominają albo której nie doceniają niektórzy komentatorzy, zadając pytanie "po co mam kupować książkę, skoro PDF jest za darmo w necie?". Faktycznie, jest nawet w naszej Bibliotece Atarowca tutaj. To nieco poprawiona wersja w stosunku do oryginalnej książki (o ile dobrze pamiętam, poprawki dokonał kolega Supaplex w 2009 roku). Ale wersja Retronics ma się tak do oryginału jak Porsche do Trabanta. Wersja SOETO to miałki papier, fatalny skład z błędami - utrudniające czytanie; niepoprawne listingi i braki, które poniekąd przekreślają sens dydaktyczny. W nowej wersji te wszystkie wady zostały wyeliminowane, a przejrzyste tabele, listingi, kolorowe ilustracje i wspomniane dodatki sprawiają, że jest to kompendium niezbędne każdemu, kto naprawdę chciałby na Atari stworzyć oprogramowanie w FORTH i ominąć zdradzieckie rafy, które czyhają na początkujących śmiałków. Bartek zbadał dla nas te odmęty, oznaczył na mapie niebezpieczne miejsca, dzięki współczesnemu wydaniu łatwiej będzie nawigować w świecie ciekawego, choć zapomnianego języka FORTH.
To nie koniec niespodzianek od Bartka i Retronics.eu. Jako ekstra dodatek do książki lub osobno można zakupić dyskietkę 5.25 cala (dwustronna, z jednej strony zabezpieczona przed zapisem, z drugiej odbezpieczona do pracy użytkownika). Bartek przygotował ją pod kątem programistów chcących się zmierzyć z tematem FORTH. Poniżej publikuję treść towarzyszącej jej ulotki, bo doskonale ilustruje, jaką uwagę Bartek przykłada do szczegółów i ile pracy wymagało przygotowanie wszystkiego. To nie jest dzieło robione na chybcika, byle jak. Ładnie sformatowany PDF jest dostępny u autora tutaj, a poniżej wersja www:
"Ta dyskietka zawiera źródła programów w Forth z książki "Poznajemy Forth" Jana Ruszczyca, przetestowane przy użyciu wersji języka "APX Extended fig-Forth Rev. 2". Na drugiej stronie (zabezpieczonej przed zapisem) znajduje się kopia zapasowa. Dobrym pomysłem jest wykonanie jeszcze jednej, dodatkowej, kopii. Trzeba do tego jednak wykorzystać właściwy kopier sektorowy. Sprawdzono, że prawidłowo zadziała m. in. aplikacja DISKCOPY oraz sprzętowa modyfikacja Atari "QMEG 4.0.4". Większość innych programów do kopiowania sektorowego nie poradzi sobie z tym zadaniem - format dyskietek fig-Forth nie jest zgodny z Atari DOS. Oprócz źródeł z samej książki (oraz powiązanych “ciekawostek”, w tym erraty do zastosowania FENCE/FORGET z rozdziału 7.3) załączono kod kilku programów, opublikowanych w czasopismach z lat 80. i 90. - są to m. in.:
świetne narzędzie SEARCH do wyszukiwania ciągów znaków na dyskietce (definicji słów, komentarzy itp.),
podzbiór edytora fig-Forth z usprawnieniami, np. zmianą koloru ramki po poleceniu HEX; podzbiór ten pozwala na dokonywanie typowych, drobnych zmian poleceniami “P”, “E”, “CLEAR”, “COPY” itp.,
polecenie .CC, wyświetlające nazwy aktualnych słowników CONTEXT i CURRENT,
rekurencyjny dekompilator Goes Into (alternatywa dla DECOMP),
EDYTOR-FORTH autorstwa Rolanda Pantoły (wraz z wymaganym "Ragsdale Assembler"), świetnie przemyślany edytor ekranów fig-Forth na Atari; opis w “Tajemnicach Atari”, nr 11-12/92 oraz 1-2/93,
EDIT autorstwa Mike'a Dougherty (z moimi usprawnieniami) - inny edytor, nieco wolniejszy, lecz łatwy do modyfikacji; pomoc została umieszczona na ekranie 59; uwaga, program potrzebuje niezabezpieczonej dyskietki, nie zawsze też zapisuje kod zmieniony na “drugiej połowie” ekranu (zachęcam do naprawy tej usterki); jest bardzo wygodnym narzędziem do przeglądania kodu i (ostrożnej, potrafi sam zapisać zmiany) edycji,
przykład użycia wstawki asemblerowej (miganie kursora; wymaga asemblera z "fabrycznej" dyskietki Forth i ekranu 39),
przykład użycia techniki "vectored execution", użytecznej do przekazywania parametrów lub zmiany funkcjonalności słowa w trakcie wykonywania programu;
Początkowe ekrany są puste - jest to celowe, można tam zapisać (poleceniem SAVE) jądro Forth - również nieco rozszerzone, np. o słowa debuggera i "ulubiony" edytor. Ekrany 16 i 17 są "spisem treści", więc 16 LIST oraz 17 LIST pozwolą na dokładne zapoznanie się z zawartością dyskietki. Spis ten (nieco dziwaczny w formie, próbowałem bowiem “upchnąć” w nim jak najwięcej informacji) zawiera:
numer pierwszego ekranu z programem, np. #18 - kod załadujemy wykonując 18 LOAD,
nazwę programu i/lub opis zawartości grupy ekranów - często są to po prostu słowa, opisane w książce, np. "KOT, NAPIS, KWADRATY",
ilość ekranów - pozwala zgrubnie ocenić wielkość kodu (a więc również czas kompilacji), np. [1] oznacza, że cały kod przykładu lub programu zajmuje tylko jeden ekran; ostatni kod grupy ekranów wywołuje program lub zawiera słowo uruchamiające,
“miejsce pochodzenia” kodu wraz z ewentualnym numerem rozdziału/czasopisma/etc. ("pf" to "Poznajemy Forth", "apx" to "fabryczna" dyskietka Forth, "ta" to "Tajemnice Atari", "fd" to "Forth Dimension", "comp!" to "Compute!", “micro” to "Micro"),
informację o wymaganym kodzie ("prerequisites"), np.: ◦ DEBUG - słowa debuggera z "fabrycznego" FORTH, od ekranu 21 (21 LOAD), ◦ asmPM - słowa asemblera z "fabrycznego" FORTH (autor asemblera: P. Mullarky), od ekranu 39 (39 LOAD), ◦ asmWR - słowa asemblera z "fabrycznego" FORTH (autor asemblera: W. Ragsdale), od ekranu 75 (75 LOAD); ten sam kod zamieszczono również na TEJ dyskietce, od ekranu 70 (70 LOAD), dzięki temu łatwiej jest załadować program EDYTOR-FORTH.
Część przykładów uruchamia się automatycznie po załadowaniu i kompilacji (np. TABLICZKA, ERATOS, HANOI), inne wymagają wywołania - zgodnie z instrukcjami, zawartymi w książce oraz w załączonym kodzie. Bardzo często na dyskietce umieszczone są przykłady zastosowania oraz dodatkowe komentarze, warto więc "eksplorować" ekrany z kodem przy pomocy LIST lub któregoś edytora. Numery ekranów mogą być inne niż te, opisane w książce (głównie dotyczy to programu PSY), czasem też kod jest ułożony w nieco innej kolejności. Nawet pobieżna lektura książki i dodatków znacząco ułatwi korzystanie z tych materiałów.
Więcej informacji o dodatkowym kodzie (np. spis czasopism, w których został oryginalnie opublikowany), nowe wersje TEJ dyskietki i/lub dodatkowe informacje będą umieszczane w repozytorium https://github.com/BartGo/POZNAJEMY. Nazwa obrazu TEJ dyskietki to fantazyjne "PoznajemyFORTH (E6B43BB4-399559F-F62A4B40).ATR". Znajdziemy tam również skrypty, użyte do generowania obrazu dyskietki - kod można więc wykorzystać w emulatorze lub przenieść do własnego programu.
Niezbędny do skorzystania z TEJ dyskietki jest oczywiście sam APX Forth. Najbardziej oficjalnym źródłem jest https://www.atariarchives.org/APX/showinfo.php?cat=20029 - można ściągnąć plik DCM (ATR jest uszkodzony!), skonwertować do poprawnego ATR i przenieść na Atari... Szybszym rozwiązaniem będzie ściągnięcie już poprawionego ATR (nazwijmy go “fabrycznym”, bo zapewne odpowiada oryginalnej dyskietce) z jednej z poniższych lokalizacji:
Poprawny plik z obrazem Extended Fig-Forth będzie miał sumę kontrolną CRC-32 F64B50DA lub E6B43BB4. Do weryfikacji możemy użyć programu 7zip lub zrobić to online (wpisując w ulubioną wyszukiwarkę “online crc32 file check” i wgrywając lub upuszczając plik na jedną z wynikowych stron). Ten cenny plik wgrywamy na kartę SD lub w inny sposób "przekazujemy do Atari" i jego stacji D1: - poprzez SIO2SD, SIO2USB, SDRIVE Micro, Fujinet... Kiedy już Forth się uruchomi z D1: a dyskietka ze źródłami będzie umieszczona w stacji D2:, możemy przełączać się między nimi przy pomocy poleceń DR0 (dla D1:) i DR1 (dla D2:) i do woli korzystać z LIST, LOAD itd.
Niezłym pomysłem jest skopiowanie Extended Fig-Forth na dodatkową fizyczną dyskietkę przy pomocy aplikacji DISKCOPY lub QMEG (może też zadziałać fortowe słowo DISKCOPY z “fabrycznych” ekranów 36-37 - żeby nie było łatwo, nie jest to wcześniej wspomniana aplikacja o tej samej nazwie). Łatwo dzięki temu będzie można korzystać z kodu z “fabrycznej” dyskietki Forth oraz uzupełnić dyskietkę ze źródłami przynajmniej o podstawowe jądro Forth. Uwaga - niezbędne polecenie SAVE działa tylko dla dyskietki D1: (DR0). Kopię dyskietki zabezpieczajmy ale egzemplarz do bieżącego użytku pozostawmy odbezpieczony - lub w przypadku błędów zapisu używajmy polecenia “EMPTY-BUFFERS”.
Życzę wspaniałej przygody z językiem FORTH – “May the FORTH be with you!”
P.S. Słowa do obsługi liczb podwójnych (rozdziały 9.2-9.3 oraz ekrany 31-32) nie działają zgodnie z oczekiwaniami i opisem z książki. Wyniki różnią się od przewidywanych. Przyczyny tego zjawiska są bardzo tajemnicze, pozostawiam analizę i naprawę tego defektu Czytelnikom!"
Brawo Bartku za kawał dobrej roboty! Szkoda, ze w epoce nie powstawały takie książki.
Jaret @2024-04-11 13:21:34
Jakie gry są np napisane w FORTH ?- chciałbym zobaczyć jak to chodzi...
mgr_inz_rafal @2024-04-11 13:45:56
Roland Pantoła pisał w Forth, np. "AD. 2044" albo "Władcy Ciemności".
mono @2024-04-11 14:14:11
Podobno RAMbrandt był napisany w Forth. @bartgo: Potężny kawał dobrej roboty!
BartGo @2024-04-11 15:28:24
W dodatku wymieniam kilkadziesiąt aplikacji napisanych w Forth z podziałem na wersje (tam, gdzie jest to wiadome), jest też mini-galeria. Największe osiągnięcia na Atari w tym języku to zapewne A.D./Klątwa/Władcy (zmodyfikowany APX Extended Fig-Forth), Synfile+ (pns Forth) oraz RAMBrandt (ValForth, do czegoś też autor używał wersji pns i QS) - ale jest sporo smaczków i ciekawostek o innych produkcjach.
Łatwo można dać sie ponieść fantazji więc opieram się na wywiadach z autorami gier, własnym grzebaniu po obrazach dyskietek i na instrukcjach. Wszystkie użyte źródła są w przypisach, można to eksplorować tygodniami.
To jest taka "nisza w niszy nisz" ale czasem warto się zagłębić w egzotykę.
mono @2024-04-11 17:46:31
Jak w kodzie wynikowym jest gdzieś "ALLOT" to było pisane we Forth :)
docent Maximilian Forth @2024-04-11 20:21:57
A ja zapytam, kiedy powstanie książka o Action! napisana przez naszego forumowego kolegę TeDeCa? Z niecierpliwością na nią czekam.
zbyti @2024-04-11 23:14:47
mam jedną książkę z TeDeCe-m, ten wywiad rzeka i jestem rozczarowany, chociaż z biegiem czasu coraz mniej bo coraz bardziej dostrzegam ponadczasowość książki, chociaż niekoniecznie chodzi mi o wartość merytoryczną.
książkę TeDeCa o Action! brałbym w ciemno i gdyby była merytoryczna to wtedy bym był rozczarowany. gdyby jednak było w niej to co TeDeC zawsze mówi o Acion! to czytał bym ją sobie w pochmurne dni i błogosławił autora :]
VLX @2024-04-12 08:34:20
@mono: Dzięki, przydatna informacja. :)
BartGo @2024-04-12 09:28:22
@mono, @vlx - szkoda tylko, że nieprawdziwa :P
George @2024-04-14 23:42:42
Też bym rozgryzał!
Pytanie na śniadanie @2024-04-15 22:34:24
A kiedy będzie książka Dżordża o azemblerze?
George @2024-04-17 21:07:59
Chciałbym, ale to chyba będzie Gorgha książka :)
@Gorgh - Twoją ksywę czyta się [gorg] czy [dżorg]?
Jak się czyta ksywę Gorgha @2024-04-17 23:27:04
Moim zdaniem Żorż, z takim francuskim akcentem.
George Sand @2024-04-18 17:31:45
Nie sądzę. Jak na byt powołany tylko do jednego, to słaby jesteś z wymowy.