CommentTime23 Jan 2026 18:52 (1 godzinę temu) zmieniony
Dostępna jest - sklecona przeze mnie - zaawansowana modyfikacja APX Extended fig-Forth na ośmiobitowe Atari.
Forth uzyskał wbudowaną pomoc oraz polecenia ułatwiające naukę i pracę!
Można to potraktować jako antologię procedur i rozszerzeń, publikowanych w latach 80-tych w różnych czasopismach. Autorów rozszerzeń jest co najmniej kilkunastu, są wymienieni w komentarzach wraz z informacją o czasopiśmie lub innym źródle (patrz mój GitHub i plik źródłowy APXFORTH-IDE.4TH). Kilka rozszerzeń jest moich, musiałem również wyeliminować konflikty nazw itp.
Jak uruchomić? - bootujemy plik IDE-BOOT.ATR pod emulatorem Atari (Basic wyłączony, ROM XL/XE) - plik załączam pod artykułem, jest również dostępny na https://github.com/BartGo/forth-atari/tree/main/spin-offs (wszelkie poprawki będą tam wrzucane) - po uruchomieniu wpisujemy HELP, czytamy, działamy i świetnie się bawimy
Poza poleceniem HELP możemy sobie pomagać: - instrukcją do oryginalnej wersji (https://archive.org/details/atarifigforth) - książką “Poznajemy Forth” J. Ruszczyca (skan na Atari Online, reedycja od Retronics) - podstawy, przykłady zastosowania i różne techniki programistyczne - kursem R. Pantoły z “Tajemnic Atari”, od numeru 1/92 (https://tajemnice.atari8.info/) - od zupełnych podstaw do asemblera Forth - książką “Język Forth” J. Bieleckiego - bardzo systematyczny opis języka, omówiona wewnętrzna budowa języka i kod wybranych “słów” - Youtube - Thom Cherryhomes: https://www.youtube.com/watch?v=JaNn1cnvBAI&list=PL709B28D4D95CCD13 - Youtube - Mike Miller: https://www.youtube.com/@mmille10
Co oferuje ta antologia rozszerzeń i atrakcji? - po starcie tło jest nieco przyciemnione w stosunku do standardowego, wyświetla się numer wersji, ilość wolnej pamięci, aktualny numer “ekranu” oraz przypomnienie o nowym, wspaniałym poleceniu: HELP - tak jest, HELP - mamy bowiem wbudowany system pomocy: - polecenia HELP i ED-HELP, wyświetlają najważniejsze (w tym nowe) polecenia, wraz z krótkim opisem - ED-HELP to osobna pomoc - do edytora kodu (jakoś też mi się tam zaplątały wywołania QMEG’a) - polecenie EVLIST (Enhanced VLIST) wyświetla listę “słów” i dodatkowo pokazuje flagi Smudge oraz Immediate, adresy pól słowa (tzw. CFA, LFA, PFA, NFA) oraz “niby-typ słowa” (wskazywany przez pole CFA) - czy jest to stała, zmienna, “słowo” skompilowane w Forth, skompilowane w asemblerze itp. - polecenie /? - wyświetlające nagłówek “słowa” (podobnie jak EVLIST), oraz dekompilat “słów” Fortha; tutaj też się dowiemy, czy “słowo” jest stałą, zmienną czy czymś innym; poniżej widzimy, że SPACES jest zdefiniowane jako “COLON definition”, czyli składa się z kodu w Forth - który od razu możemy obejrzeć (widzę tu błąd w rozpoznawaniu flag Smudge oraz Immediate, poprawię!) - polecenie VER - informujące o wykorzystanej wersji Fortha, najważniejszych modułach oraz wersji całej paczki (obecnie 1.1e7) - edytor kodu (o którym później) zawiera stronę z opisem wszystkich skrótów klawiaturowych - polecenie STACK włącza i wyłącza wyświetlanie stanu stosu po każdej operacji, świetna rzecz do nauki operacji na stosie - wbudowane są dwa dekompilatory “słów” Fortha (DECOMP z APX Fortha oraz rekurencyjny GOESINTO z Forth Dimensions)
Dołączony edytor “EDIT” nieco zmodyfikowałem, tutaj też wbudowany jest help i kilka “bajerów”, program jest nieco powolny, ale wygodny do drobnych zmian i przeglądania kodu, działa tak:
- polecenie E. uruchomi ten edytor na aktualnym “ekranie” np. na domyślnym po starcie systemu #80 - polecenie n EDIT uruchomi edytor na ekranie o numerze n (np. 83 EDIT) - od razu widać, jak uruchomić pomoc i jak wyjść z edytora! - wyświetlana jest informacja, czy wykonane w kodzie zmiany są zapisane czy nie (+ lub - przy numerze “ekranu”) - kolumny 32-64 każdej linii są traktowane jak komentarz do kolumn 0-31 i wyświetlane na osobnym ekranie z dokumentacją (“shadow screen”) oraz (pojedyncza linia) w sekcji na dole; może to powodować kłopoty z przejrzystością kodu który nie korzysta z tej konwencji, mam nadzieję wkrótce ulepszyć to, dodając do edytora przełącznik wyświetlania połówek ekranów (lewo-prawo lub góra-dół) - pozostawiłem elementy edytora wierszowego “put” (P) i “erase” (E) - nazwałem je tylko & oraz XX oraz umieściłem w głównym słowniku FORTH; dostępne są też polecenia L. (wylistuj aktualny ekran), N. (następny) oraz P. (poprzedni)
Dodatkowo: - dodałem polecenia D1:, D2: oraz DIR, co prawda nie operujące na plikach ale nieco ułatwiające oswajanie “ekranów” (irytowały mnie wbudowane polecenia DR0, DR1 i INDEX) - podgląd buforów dyskowych (.BUFS) pomaga w zrozumieniu, jak działa komunikacja z dyskiem - które “ekrany” są w buforach i co zostało zmienione - ramka zmienia kolor w zależności od systemu liczbowego (koncepcja pożyczona z Team Atari Forth) - działa to dla każdej podstawy ale w szczególności jest: czarna dla systemu dziesiętnego (domyślna), szara dla dwójkowego i ciemnoczerwona dla szesnastkowego - wystąpienie błędu, np. wywołanie polecenia LOAD, oczekującego parametru, przy pustym stosie - zamiga ekranem na czerwono - można włączyć szczegóły błędów: UNRAVEL-ON wyświetli razem z komunikatem błędu raport “śladu po stosie powrotów”, być może pozwalając na dokładniejsze namierzenie miejsca wystąpienia błędu - dodatkowe polecenia debuggera pozwalają na przerwanie wykonywania kodu (breakpoints, w tym uruchamiane warunkowo) i analizę zmiennych oraz stosu - komunikaty błędów przeniesiono do pamięci (nie muszą być już zapisane na dysku ani nie musimy zerować zmiennej WARNING) - wbudowane są proste zmienne lokalne (bardziej złożone użycie jest w trakcie testów, na razie nie są opisane w helpie)