atarionline.pl
atarionline.pl Atari
Login:
Hasło:
Zapamiętaj mnie
Translate to RSS RSS
Pędź Mietku, pędź! z 2024-10-10 12:44 (38)
ATASCII Compo - 4. edycja z 2024-10-06 19:12 (16)
Gra "Dangerous City" uwolniona! z 2024-10-03 15:49 (22)
Miniaturowe Atari #2 z 2024-09-30 19:15 (13)
Wkrótce "Bubble Bobble" na Atari z 2024-09-27 10:34 (52)
Pokłosie KWAS #34 - Projektowanie cartów Atari z 2024-09-26 20:28 (9)
Nocne Retro Granie w Poznaniu z 2024-09-24 20:35 (1)
O kodowaniu efektów dema na Atari STE z 2024-09-22 15:58 (27)
Co nowego dla Atari Portfolio? z 2024-09-19 19:43 (0)
Najmniejsze Atari cz. II z 2024-09-17 21:07 (4)
Nadlatuje polski sokół! z 2024-09-12 18:44 (16)
Atarowskie maleństwo po raz piąty! z 2024-09-09 18:58 (2)
Pamiętniczek dinozaurowych koderów z 2024-09-05 14:01 (12)
"Mafia" - od zera do supergangstera z 2024-09-03 23:55 (20)
Wkrótce spotkania z 2024-09-02 20:38 (5)
Ankieta dla zainteresowanych efektami w demie z 2024-08-30 17:54 (22)
Autorzy o demie "The Coders' Guide to the Demoscene" z 2024-08-26 14:29 (35)
Przejście gry "Auf Wiedersehen Monty" z 2024-08-26 14:23 (9)
Autorzy "Technical Difficulties" z 2024-08-25 16:58 (9)
Autorzy o "Auf Wiedersehen Monty" z 2024-08-23 20:56 (13)
«« nowszestarsze »»

Pomocnik/Helper
Gry/Games

Katalog gier (konwencja TOSEC)

Opisy gier
"Old Towers" (Atari ST) opisał Misza (19)
Submarine Commander opisał Kaz (35)
Frogs opisał Xeen (0)
Choplifter! opisał Urborg (0)
Joust opisał Urborg (16)
Commando opisał Urborg (35)
Mario Bros opisał Urborg (13)
Xenophobe opisał Urborg (36)
Robbo Forever opisał tbxx (16)
Kolony 2106 opisał tbxx (3)
Archon II: Adept opisał Urborg/TDC (9)
Spitfire Ace/Hellcat Ace opisał Farscape (8)
Wyspa opisał Kaz (9)
Archon opisał Urborg/TDC (16)
The Last Starfighter opisał TDC (30)
Dwie Wieże opisał Muffy (19)
Basil The Great Mouse Detective opisał Charlie Cherry (125)
Inny Świat opisał Charlie Cherry (17)
Inspektor opisał Charlie Cherry (19)
Grand Prix Simulator opisał Charlie Cherry (16)
«« nowszestarsze »»

Katalog gier (konwencja Kaz)
Aktualizacja: 2024-10-07
Liczba katalogów: 8477, liczba plików: 37049
Zmian katalogów: 66, zmian plików: 100

0-9 A B C D
E F G H I
J K L M N
O P Q R S
T U V W X
Y Z inne
zipCałość 2933 MB


Wewnętrzne/Internals



   Nowinki tworzone dzięki CuteNews
FAQ o języku LogForth
Poniższe informacje zostały przygotowane przez Pawła "Cosi" Piątkowskiego, który jest jednocześnie autorem programu - mieszanki Logo i Forth - pod nazwą "LogForth":

1. Co to jest LogForth?

LogFORTH jest biblioteką języka Logo, umożliwiającą programiście korzystanie z konstrukcji języka Forth w środowisku Logo.

2. Z czego się składa LogForth?

Na dysku znajduja sie nastepujace pliki:

  • DOS.SYS
  • CP.SYS - pliki systemowe DOSa
  • AUTORUN.SYS - interpreter Logo
  • LOGFORTH - biblioteka LogFORTH
  • LIBCOSI - biblioteka libcosi
  • BENCH - biblioteka benchmark
  • CZYTAJ.DOC - ta dokumentacja

Po uruchomieniu interpretera należy wpisać:
LOAD "D:LOGFORTH



3. Lista funkcji

  • OPER lista

    Wykonuje podaną listę działań Forth-a. Dostepnę operacje:
    liczba rzeczywista - wrzuca podana liczbe na stos
    + - * / - wykonuje odpowiednie działanie, zgodnie z konwencja RPN (odwrotna notacja polska)
    . - ściąga liczbę ze stosu i wypisuje na ekran
    SWAP - zamienia miejscami dwa górne elementy stosu
    DUP - kopiuje górny element stosu
    DROP - usuwa górny element ze stosu
    :procedura - wykonuje zdefiniowaną w Logo procedurę o podanej nazwie.

    Przykład:
    OPER [2 4 * .]
    wykonuje działanie 2*4 i wypisuje wynik na ekran.

  • DOLOOP lista

    Wykonuje pętlę zgodnie z konwencją Fortha. Dwa górne elementy stosu oznaczają kolejno początkowy i końcowy stan licznika. Lista działań jak w funkcji OPER, dodatkowo I wrzuca na stos aktualną wartość licznika. Przykład:
    OPER [11 1] DOLOOP [I 2 * .]
    wyświetla 10 kolejnych liczb parzystych.

  • S?

    Zwraca wartość górnego elementu stosu, jednocześnie ściągając go. Przykład:
    OPER [2 4 *] PRINT S?
    wyświetla wynik mnożenia 2*4 (jak w pierwszym przykładzie).

  • S! element

    Wrzuca na stos podany element. Przykład:
    S! FIRST RL OPER [DUP * .]
    pobiera z klawiatury liczbę, a następnie wyświetla kwadrat tej liczby.

    Biblioteka libcosi

    Zawiera kilka dodatkowych funkcji, rozszerzajacych mozliwosci Logo. Nie jest wymagana przez "LogFORTH". Bibliotekę wczytujemy wpisując:
    LOAD "D:LIBCOSI

    Funkcje:

    # komentarz

    Komentarz.

    @ "zmienna wartosc

    Synonim dla MAKE.

    ASM adres kod

    Umieszcza w podanym miejscu w pamięci kod maszynowy. Przykład:
    ASM 709 [10 80 126 50]

    $ lista

    Zwraca podaną listę jako słowo. Przykład:
    SHOW $ [ALA MA KOTA]

    FOR "zmienna od do blok
    Iteruje blok po zmiennej, od wartości "od" do wartości "do". Przykład:
    FOR "T 1 10 [PR :T]

    FOREACH lista "zmienna blok

    Wykonuje podany blok dla każdego klucza listy, przekazując ten klucz do zmiennej. Przykład:
    FOREACH [1 2 A] "T [PR :T]

    LGET "lista
    Zwraca ostatni element z listy, usuwając go jednocześnie z tej listy. Przykład:
    @ "LI [A B C D]
    PR LGET "LI
    SHOW :LI

    FGET "lista

    Jak wyżej, z tym że pobiera pierwszy element listy.

    SLICE lista n

    Zwraca n-ty element listy. Przykład:

    PR SLICE [A B C D] 3

    SETSLICE "lista n wartosc

    Ustawia wartosc n-tego elementu listy. Przykład:
    @ "LI [1 2 3 4]
    SETSLICE "LI 2 "X
    SHOW :LI

    INC "zmienna

    Zwiększa o 1 wartość zmiennej liczbowej.

    DEC "zmienna

    Zmniejsza wartość zmiennej.

    Biblioteka bench

    Zawiera tylko jedną funkcję, pozwalająca na testowanie czasu wykonania procedur. Aby ją wczytać, należy wpisać:
    LOAD "D:BENCH
    Wywołanie:
    TEST [polecenie]
    Po zakończeniu działania procedury funkcja wyświetla czas jej wykonania.

    4. Jak korzystać?

    W trybie bezpośrednim Fortha wpisujemy dane i słowa oddzielone spacjami. Jeżeli wpiszemy liczbę, wskakuje na stos; jeżeli operator matematyczny, ze stosu pobierane są dwie liczby, a następnie wrzucany wynik. Jeżeli wpiszemy:

    5 4 + 3 * .

    to Forth wrzuci na stos dwie liczby (5 i 4), doda to siebie, wynik pomnoży przez 3, a następnie wyświetli wynik (kropka).

    Liczbami na stosie można operować za pomocą słów DUP, DROP i SWAP. Pierwsze kopiuje liczbę znajdującą się na szczycie stosu, drugie usuwa górną liczbę ze stosu, a trzecie zamienia miejscami dwie górne liczby. W LogFORTHcie to samo uzyskujemy za pomocą funkcji OPER. Poprzedni przykład można zapisać jako:

    OPER [5 4 + 3 * .]

    5. Różnice w stosunku do Fortha

  • dostępny jest tylko tryb bezpośredni; odpowiednikiem trybu kompilowanego są deklaracje procedur w Logo
  • LogFORTH operuje na liczbach rzeczywistych (fig-FORTH na całkowitych)
  • nie ma możliwości zagnieżdżania pętli DOLOOP (trzeba zamiast tego użyć polecenia REPEAT)

    6. Wady i niedociągnięcia (bo przecież jakieś muszą być!)

  • WYDAJNOŚĆ!!! chciałbym powiedzieć, że LogFORTH łączy elastyczność Logo z szybkością Fortha, ale tak nie jest. Kiepska wydajność Logo to jest najsłabsze ogniwo we wszystkich projektach związanych z tym językiem
  • wpisanie "nielegalnych" słów w instrukcji OPER nie powoduje wyświetlenia błędu; zamiast tego program ignoruje błędny fragment (a tak nie powinno być)

    7. Wstawki maszynowe w Logo

    To jest chyba jedyny sposób, żeby poprawić wydajność programów, nie przepisując przy tym od nowa interpretera Logo. Niestety, albo i stety, nie w całej pamięci można pisać. Według książki "Języki Atari XL/XE" wersja kartridżowa zostawia dla użytkownika obszar od $600 do $7FFF. W przypadku wersji dyskowej trzeba od tego odjąć jeszcze miejsce na DOS-a. Zostaje powiedzmy obszar $1E00-$7FFF, KTÓRY JEST PRZEZNACZONY NA DANE I PROGRAMY, tak więc na przykład zadeklarowanie nowej zmiennej może nam skasować wstawkę maszynową, jak również wstawka maszynowa może nadpisać kod w Logo (co zazwyczaj powoduje zwis).

    Jak widać, sytuacja nie jest za ciekawa. Bez problemów można pisać po obszarze rejestrów i Display List - można w ten sposób nawet ingerować w obszar grafiki żółwi. Natomiast nie udało mi się wymyślić, gdzie można bezpiecznie umieścić kod maszynowy. Pewnym rozwiązaniem jest oczywiście pilnowanie zużycia pamięci i liczenie po cichu na to, że nasz kod nie zostanie zamazany, ale Logo ma tak nieszczęśliwie rozwiązany mechanizm garbage collection, że po krótszym lub dłuższym czasie i tak zmienne wejdą w obszar, gdzie jest wstawka.

    Mam nadzieję, że teraz, kiedy udało się wywołać pewne zainteresowanie językiem Logo, ktoś bardziej obeznany z mapą pamięci Atari odkryje, gdzie można umieszczać procedury maszynowe. A to dałoby nam już połączenie Logo, Fortha i języka maszynowego :-D

    8. Sztuczki w Logo

    Programowanie na piecu przyzwyczaja człowieka do pewnych rzeczy, bez których trudno się potem obejść. Twórcy Logo nie przewidzieli ich wykorzystania, ale można je uzyskać okrężną drogą:

  • Pętle WHILE
    Logo niestety jest pozbawione podstawowych elementów programowania strukturalnego, jakimi są pętle. Zamiast tego zalecana jest rekurencja (pomijam fakt, jakie to nieoptymalne). W ten sposób łatwo zaprojektować pętlę:

    TO FUNKCJA
    MAKE "N 10
    PR [START]
    WHILE
    PR [KONIEC]
    END
    TO WHILE
    IF :N>0 [PR :N MAKE "N :N-1] [STOP]
    WHILE
    END


  • Funkcje o zmiennej liczbie parametrów
    Baardzo przydatna rzecz. Można ją zrealizować, przekazując do funkcji parametry w formie listy (tak jak to jest robione w Perlu):

    TO FUNKCJA :LISTA
    IF EMPTYP :LISTA [STOP]
    MAKE "PARAM FIRST :LISTA
    ...
    FUNKCJA BF :LISTA
    END


  • Tablice asocjacyjne
    Kolejna fajna rzecz z Perla :)

    MAKE "LISTA [[IMIE JAN] [NAZWISKO NOWAK] [WIEK 37]]
    FIRST SLICE :LISTA numer (tak uzyskujemy klucz)
    LAST SLICE :LISTA numer (a tak wartość)

    (SLICE jest funkcją z biblioteki libcosi)

  • Odwołanie do zmiennej przez nazwę (referencje)
    To nie jest żadna sztuczka, tylko normalny element języka. Ale spróbujcie mi pokazać atarowski język, który to umożliwia ;)

    MAKE "REF1 "REF2
    MAKE "REF2 "X
    MAKE "X 10
    PR THING THING THING "REF1
    albo
    PR THING THING :REF1

    (to taka mocno zagnieżdżona referencja)

  • Pseudostałe
    Logo nie obsługuje stałych. Ale:

    TO PI
    OP 3.14159
    END
    MAKE "S PI*:R*:R


  • Zmienne lokalne
    Tego też niby nie ma w Logo. Można to prosto zrealizować, wykorzystując fakt, że parametry funkcji są lokalne:

    MAKE "X 10
    TO FUNKCJA :X
    MAKE "X 20
    PR :X
    END
    FUNKCJA 0
    PR :X


  • Tablice n-wymiarowe (Bajtek 5/87)
    Bardzo ciekawy sposób, w dodatku pozwalający na zakładanie bardzo dużych tablic bez obciążania pamięci. Wykorzystuje zwykłe zmienne o odpowiednich nazwach, w tym przypadku tablica#i,j:

    TO TAB :NAZWA :I :J
    OP (WORD :NAZWA "# :I ", :J)
    END
    MAKE (TAB "A 5 4) "ABC (tworzy "komórkę" A[5,4])
    PR THING (TAB "A 5 4)
    albo
    PR :A#5,4 (wypisuje zawartość komórki)


    2009-06-23 17:47 by Kaz
    komentarzy: 2
  • wawrzyn @2010-10-08 00:08:55
    Ciekawe, ze wybor padl wlasnie na Forth i Logo. Obydwa jezyki sa godne uwagi i niedoceniane. Forth ma nalepke archaicznego, Logo jezyka dla dzieci (choc projekt Starlogo temu skutecznie zaprzecza). Wracajac do Fortha - jego tworca, Chuck Moore, to niesamowicie ciekawa osoba. Przy okazji, ciekawe, czy powyzszy projekt to taka sztuka dla sztuki, czy autor zamierza do czegos go uzyc?
    Kaz @2010-10-08 02:55:50
    Wawrzyn - na forum latwiej widac takie pytania, posty o LogForth sa tutaj:

    http://atarionline.pl/forum/comments.php...
    nickname
    e-mail / website (opcjonalnie)
    Aktualne tematy
    Konkurs na grafikę ATASCII (131)
    ostatni: 15-10-2024 00:21, Adam
    Porównanie Atari Falcon vs A1200 (126)
    ostatni: 14-10-2024 23:27, mrroman
    Kupię sprawną SN-360 z zasilaczem (14)
    ostatni: 14-10-2024 23:17, pigula
    Time Wizard - gra na ABBUC Softwa... (270)
    ostatni: 14-10-2024 21:59, mav
    Gra "TONY" (426)
    ostatni: 14-10-2024 20:09, Kaz
    Mobygames - co to jest? (10)
    ostatni: 14-10-2024 19:52, Kaz
    Silly Venture 2024WE - 35th ATARI... (41)
    ostatni: 14-10-2024 18:38, greymsb
    Ciekawostki (5580)
    ostatni: 14-10-2024 16:22, bruno_j
    Stare kasety z grami do zgrania? (16)
    ostatni: 14-10-2024 15:33, Kaz
    Aleja Pamięci / Avenue of Memories (89)
    ostatni: 14-10-2024 14:50, Kaz
    Łysy z giełdy wrocławskiej (9)
    ostatni: 14-10-2024 12:29, Kaz
    KWAS (342)
    ostatni: 14-10-2024 12:08, Kaz
    Gry w GTIA (65)
    ostatni: 14-10-2024 09:17, Kaz
    RMT hacking (248)
    ostatni: 14-10-2024 06:18, rosomak
    AI Wars (5)
    ostatni: 13-10-2024 18:13, CharlieChaplin

    Kategorie Forum Atarum

    Użytkowników: 2835
    Ostatnio zarejestrowany: QPbmCRVM
    Postów ostatniej doby: 65

    Spotkania i zloty / Meetings & Parties

    Najbliższe imprezy
    link do naszych spotkań online, zapraszamy do odwiedzenia kanału zoom również przez kod QR:

    KWAS

    Kalendarz AOL


    Społeczność/Community


    Rozmawiali
    Wywiad z Mariuszem Jaroszem i Kaz (13)
    Wywiad Dracona z Mr. Bacardim i Kaz (15)
    Tomasz Dajczak i Kaz (22)
    Lech Bąk i "Świat Młodych" i Kaz (26)
    Michał "Mike" Jaskuła i Kaz (30)
    F#READY i Dracon (22)
    Daniel „Arctus” Kowalski i Dracon (25)
    KATOD i TDC (15)
    Mariusz Wojcieszek i "Adam" (17)
    Romuald Bacza i Ramos (16)
    Śledzenie Amentesa i Larek (9)
    Leszek Łuciów i Charlie Cherry (17)
    TO JUŻ ZA TOBĄ: rozmowa z Bobem Pape i cpt. Misumaru Tenchi (39)
    Rob Jaeger i Emu (53)
    Jacek "Tabu" Grad i Dracon (0)
    Alexander "Koma" Schön i Kaz (0)
    Maciej Ślifirczyk i Charlie Cherry (0)
    Jarek "Odyniec1" Wyszyński i Kaz (0)
    Marek Bojarski i Kaz (0)
    Olgierd Niemyjski i Ramos (0)
    «« nowszestarsze »»

    Stragan
    Nowe, pojemniejsze RAM-Carty oferuje Kaz (21)
    "mouSTer" czyli myszka ST oferuje Kaz (30)
    Atari USBJoy Adapter oferuje Jakub Husak (0)
    Programy: Kolony 2106 oferuje Kaz (7)
    Sprzęt: rozszerzenia oferuje Lotharek (87)
    Gadżety: naklejki, pocztówki oferuje Sikor (11)
    Sprzęt: cartridge RAM-CART oferuje Zenon (7)
    Miejsce na drobne ogłoszenia kupna/sprzedaży oferuje Kaz (58)
    Sprzęt: interfejs SIO2IDE oferuje Piguła (0)
    Sprzęt: interfejs SIO2SD oferuje Piguła (50)

    Użytki/Utils
    Sprzęt/Hardware

    Wynalazki
    Atari i Bluetooth napisał Kaz (34)
    SIO2PC-USB napisał Larek (45)
    Nowe SIO2SD napisał Larek (0)
    SIO2SD w CA12 napisał Urborg (12)
    Ratowanie ATMEL-ów napisał Yoohaas (12)
    Projektowanie cartów napisał Zenon (12)
    Joystick do Atari napisał Larek (54)
    Tygrys Turbo napisał Kaz (11)
    Testowałem "Simple Stereo" napisał Zaxon (5)
    Rozszerzenie 1MB napisał Asal (20)
    Joystick trzyprzyciskowy napisał Sikor (18)
    Moje MyIDE oraz SIO2PC na USB napisał Zaxon (16)
    Jak wykonać płytkę drukowaną? napisał Zaxon (26)
    Rozszerzenie 576kB napisał Asal (36)
    Soczyste kolory napisał scalak (29)
    XEGS Box napisał Zaxon (13)
    Atari w różnych rolach napisał Różyk (9)
    SIO2IDE w pudełku napisał Kaz (5)
    Atari steruje tokarką napisał Kaz (15)
    DarkMouse napisał Kaz (7)
    «« nowszestarsze »»