atarionline.pl Turbo BASIC XL - podręcznik - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthorBluki
      • CommentTime14 Apr 2013 01:04 zmieniony
       
      Zastanowiło mnie, że chociaż Turbo BASIC XL jest najpopularniejszą odmianą BASIC-a, to jakoś nie doczekał się przyzwoitej instrukcji w języku polskim. Wszystkie podręczniki mają większe lub mniejsze błędy. W takiej sytuacji nie pozostało mi nic innego, jak samemu coś skrobnąć.

      Najobszerniej ten temat poruszył Wojciech Zientara w książce „Języki ATARI XL/XE cz.1”. Niestety roi się tam od błędów, niektóre są nawet wielkości mamuta :). Nie mogłem więc oprzeć się na tym źródle. Teraz lepiej rozumiem dlaczego Wojciech Zientara w udzielonym wywiadzie tak niechętnie wspominał czasy Atari. Zapewne ma świadomość jaką tandetną chałturę wówczas odwalał...

      Co było, to było. Wróćmy do TBXL. Na szczęście są bogate źródła wiedzy na temat tego języka np. oryginalny materiał zamieszczony przez przez twórcę TBXL, Franka Ostrowskiego na łamach czasopisma „Happy Computer”.



      To co widać na zdjęciu powyżej, to niestety nie jest okładka TEGO numeru „HC”, w którym zamieszczono opis TBXL, choć jest to też okładka numeru specjalnego poświęconego Atari. Tej właściwej nie udało mi się znaleźć, choć przyznaję, że zbyt głęboko nie „kopałem”.

      Materiał, który przygotowałem, jest dość obszerny. Starałem się uniknąć błędów, ale czy czy to się udało? Chciałbym, aby wreszcie powstał pierwszy opis bez błędów, dlatego ta obecna wersja podręcznika jest na razie „wersją beta”.
      Jeżeli ktoś zauważy jakieś błędy, przeoczenia, czy cokolwiek niepokojącego, proszę o uwagi w tym wątku. Czekam na nie do 5.05.2013, po czym przygotuję wersję finalną – również w formacie PDF. A na razie miłej lektury!

      Do właściwego wyświetlenia dokumentu potrzebne są czcionki Consolas i Atari Classic Chunky. W razie potrzeby pierwszą można pobrać stąd: ->link<- , a drugą (ATARCC_) stąd: ->link<- .

      Dodatkowo dla zainteresowanych oryginalny artykuł z miesięcznika „Happy Computer”: ->link<-

      - - - - - - - - - - - - - - - -
      Aktualizacja, 16.05.2013

      Wersję finalną podręcznika „Turbo-BASIC XL 1.5. Nowe polecenia z przykładami” można pobrać w formacie PDF i ODT z Biblioteki Atarowca - Materiały książkowe.
      • 2: CommentAuthorBluki
      • CommentTime20 Apr 2013 14:04
       
      Wpłynęła pierwsza uwaga, od Sikora, dotycząca polecenia PAUSE. W opisie pominąłem fakt, że w NTSC jednostką czasu jest 1/60 sekundy, przyjmując za domyślny obowiązujący u nas standard analogowy PAL 50 Hz.
      Ponieważ są jednak w Polsce użytkownicy sprzętu NTSC 60 Hz dodaję do polecenia PAUSE dodatkową informację:

      „Jeśli jesteś użytkownikiem Atari NTSC 60Hz (USA) to zauważ, że w takim przypadku jednostką jest 1/60 sekundy, czyli PAUSE 60 to jedna sekunda”.
      • 3: CommentAuthorQTZ
      • CommentTime20 Apr 2013 17:04 zmieniony
       
      Ja ocr-owałem listingi TB z HC, są gdzieś tutaj :)
      Do ich konwersji napisałem Ampel decoder (dzięki podpowiedziom na forum) - może się jeszcze do czegoś przyda?
      (Listingi są dołączone jako przykład do programu.)

      A z tymi literówkami to jako ciekawostkę powiem, że miałem takiego wykładowcę, który dawał do nauki skrypt pełen literówek, błędów, a nawet błędów logicznych i generealnie nieprawdziwych informacji... a kto znalazł ich najwięcej dostawał dodatkowe punkty :) - Później jak tłumaczył błędy mówił "wpuściłem was w maliny" ;) Była to świetna metoda, tylko jak ktoś przegapił wyjaśnienie, a sam nie zauważył "zonka", to niestety później miał problemy... więc dodatkowo była to motywacja, żeby nie opuścić żadnego wykładu...

      Edit: dodałem linka do programu wraz z listingami.
      • 4:
         
        CommentAuthorMaW
      • CommentTime24 Apr 2013 09:04
       
      CZy obecna wersja nadaje się już do "druku" ?
      • 5: CommentAuthorBluki
      • CommentTime24 Apr 2013 15:04
       
      Jeszcze nie. Do 5 maja czekam na uwagi. Dopiero potem przygotuję wersję "oficjalną". Powinno to nastąpić około 8 maja, ale to będzie zależało od ilości zgłoszonych uwag (na razie jest jedna) i oczywiście mojego wolnego czasu.
      • 6:
         
        CommentAuthorlarek
      • CommentTime24 Apr 2013 23:04 zmieniony
       
      Bluki, chciałeś, to masz :p

      Oto moje uwagi:

      I - drobnostki
      - jakoś tak od razu rzucił mi się w oczy brak cudzysłowu w drugim zdaniu rozdziału „Operacje dyskowe” [zamiast „D1:nazwa, piszemy D:nazwa] oraz w pierwszym przykładzie zastosowania instrukcji BLOAD [BLOAD”D:ABC.TXT].
      Co ciekawe, brak znaku [”] na końcu jest dopuszczalny i Basic poprawnie zinterpretuje polecenie, ale skoro w całym opracowaniu używane są znaki na początku i na końcu, to wypada się trzymać takiego rozwiązania.

      - jak już przy każdej instrukcji przedstawiany jest jej skrót, to tu też wypada być konsekwentnym i prezentować skróty do wszystkich instrukcji. Brak skrótów do np. BRUN [BR.],PROC [PRO.], MOVE [M.], PAINT [PAI.], TEXT [TE.], i wielu innych.


      II - dziwne
      - w rozdziale „Operacje dyskowe” przy niektórych instrukcjach znajdujemy opis typu: odpowiada to poleceniu „L” DOS-a (tak jest w BLOAD, BRUN, DELETE, i innych). Hmm… używam DOS II+/D i żadnego polecenia „L”, „D”, „F” i innych tam nie ma, więc o co chodzi? Spoko, ja wiem, że chodzi o polecenia DOS 2.5 i podobnych, ale wywoływanie tu tych poleceń uważam za zupełnie niepotrzebne. Można oczywiście na początku wspomnieć, że dotyczy to jakiegoś konkretnego systemu, ale po co? Wygląda mi to na przeniesienie „na siłę” tych informacji z tego niemieckiego opracowania. Tyle, że wówczas nie rozumiem, czemu pominięto informację o odpowiedniku w instrukcji XIO, co jest chyba dla programisty dużo ciekawsze.

      III - wprowadzające w błąd
      - w tym samym rozdziale o operacjach dyskowych cały czas dowiadujemy się, że użycie „D:” bez numeru lub użycie instrukcji bez parametrów (np. DIR) oznacza stację numer 1. Nie jest to do końca prawdą. Proszę sobie uruchomić Turbo-Basic XL używając MyDos-a i zmienić bieżący katalog na „D2:” . O dziwo, instrukcja DIR (bez parametrów) lub DIR ”D:” spowoduje odczyt katalogu dyskietki ze stacji numer 2, a nie 1. Tym samym ”D:” oznacza generalnie bieżący napęd, a nie napęd numer 1.


      IV - czy lepsze?
      - z opisu EXIT dowiadujemy się, że jest to prostsze (dla mnie to brzmi jak „lepsze”) rozwiązanie znanego z Atari BASIC-a POP: GOTO n. Fakt, jest prostsze, bo umożliwia wyjście z pętli do kolejnej instrukcji. Para POP: GOTO n natomiast umożliwia skok do dowolnej linii. Nie wiem, czy autor TBXL planował EXIT z podaniem numeru linii, czy też nie. W książce Zientary jest opisane, że po EXIT można podać numer linii. To niestety nie działa (a szkoda), ale TBXL nie sygnalizuje błędu po wpisaniu EXIT z numerem linii! Czy to błąd twórcy TBXL?


      V - zastanawiające
      - zastanawiam się, czy podział opracowania na rozdziały w takiej formie jest dobrym rozwiązaniem. Może by było, gdyby nie powstał rozdział „Usprawnienia”. Wygląda mi to na rozdział-śmietnik, w którym umieszczono wszystko, co nie pasowało do innych działów. Skoro dano tu CLOSE bez parametrów, to dlaczego nie ma tu RND bez parametru? Dlaczego nie ma SOUND bez parametrów?


      VI - alfabetycznie?
      - na początku mamy alfabetyczny spis poleceń. Analizując jakiś program w TBXL natknąłem się na instrukcję UNTIL. Chciałem sprawdzić, co oznacza. Szukam w okolicach literki „U”, szukam, i szukam, i jest - znajduję w alfabetycznym spisie poleceń instrukcję UNTIL pod „R”! A jakże, dla zmyły jest ukryta wraz z REPEAT ;). Moim zdaniem alfabetyczny spis poleceń powinien być alfabetyczny od A do Ż. W tym przypadku nie musimy edukować czytelnika, że UNTIL występuje w parze z REPEAT - tu chodzi o szybkie odnalezienie właściwego słowa i przerzucenie się na właściwą stronę. I tyle. Oczywiście dotyczy to również pozostałych „par”: DO-LOOP, PROC-ENDPROC i WHILE-WEND

      VII - najważniejsze
      - całe opracowanie nosi tytuł „TURBO-BASIC XL 1.5. Opis poleceń z przykładami”. I gdzie są te polecenia TBXL? Tu niestety znajdziemy tylko to, czym rożni się TBXL od Atari BASIC-a. Normalnie klops… Wszystkie instrukcje Turbo-BASIC-a XL, które pokrywają się z instrukcjami Atari BASIC-a i działają w identyczny sposób - zostały pominięte. Szukaj sobie Drogi Czytelniku opisu Atari BASIC-a gdzie indziej. A jak już go znajdziesz i pojmiesz, to wróć do mnie…
      Ja bym chyba już nie wrócił. Opracowanie Wojtka Zientary zawiera błędy, ale za to jest kompletne!

      ---------

      Bluki, mam nadzieję, że się nie obrazisz. To tylko moja skromna opinia. Mogę się mylić. Mogę nie mieć racji… Generalnie łatwiej się krytykuje, trudniej coś zrobić (dobrze) samemu. Doceniam, że Ci się chciało! Ale również chciałbym, żeby to opracowanie było jeszcze lepsze. I jest to do zrobienia. Wierzę, że Ci się uda :)
      Powodzenia!
      • 7:
         
        CommentAuthorMaW
      • CommentTime25 Apr 2013 08:04 zmieniony
       
      Larek, ten zamęt z "nie po kolei" wprowadza podział na grupy tematyczne np. "operacje tekstowe", a potem jest "sterowanie przebiegiem programu". IMHO podział wg tych grup powinien być osobną częścią opracowania, gdzie by była tylko informacja skrócona - co, z czym, w jaki sposób współpracuje. Na przykład:
      OPERACJE TEKSTOWE

      INKEY$ - pobiera kod(ATASCII) ostatnio naciśniętego klawisza; nie zatrzymuje programu. Pokrewne: INPUT$
      INSTR(tekst1,tekst2,n) – szuka tekstu tekst1 w tekst2 od pozycji n (piewszy znak: n=1). Pokrewne:UINSTR
      UINSTR(tekst1,tekst2,n) – szuka tekstu tekst1 w tekst2 od pozycji n (piewszy znak: n=1) ignorując wielkość liter i inwers.
      TEXT X,Y,tekst – umieszcza "tekst" na ekranie graficznym od punktu X,Y. Nie "zawija" tekstu (nie przenosi do następnej linii). Pokrewne: PRINT w trybie tekstowym.

      STEROWANIE PRZEBIEGIEM PROGRAMU

      *B{znak} - przechwytywanie BREAK: '+' (lub brak znaku) - przechwytuje użycie BREAK przez TRAP
      EXIT - natychmiastowe opuszczenie dowolnej pętli. Pokrewne: NEXT, RETURN, POP.
      *F{znak} - decyduje o momencie sprawdzenia warunku: '+' (lub brak znaku) - warunek sprawdzany przed kolejną iteracją; "-" - po iteracji (jak w Atari BASIC)
      PAUSE n - zatrzymuje wykonywanie programu na czas określony parametrem n, czas przerwy: n*20ms (czyli 1 sekunda to n=50)
      • 8: CommentAuthorBluki
      • CommentTime27 Apr 2013 01:04
       
      Ad I – drobnostki
      Brak zamknięcia cudzysłowu to moje przeoczenie. Zostanie poprawione.
      Jeśli chodzi o skróty, to przyjąłem zasadę, że skrót – z definicji – powinien coś skracać. A co skraca „PRO.” (PROC)? Tu i tu są cztery znaki. W takim przypadku można mówić o „innej formie polecenia”, a nie o skrócie. Przyjąłem założenie podawania skrótu tylko wtedy, gdy następuje skrócenie słowa o przynajmniej dwa znaki. Jeśli ktoś jeszcze uważa, że należy podawać wszystkie skróty, nawet jeśli nie mają logicznego uzasadnienia, to mogę je wprowadzić. M.[OVE] to moje przeoczenie, podobnie jak L.[IST] i CL.[OSE]. Poprawię.

      Ad II – dziwne
      Zdanie „Odpowiada to poleceniu … DOS-a” ma na celu:
      1) Poinformowanie, że są to komendy powiązane z DOS-em, a nie jakieś niezależne procedury.
      2) Ułatwienie zapamiętania co robi polecenie (i jego formatu) poprzez skojarzenie z odpowiednią opcją DOS-a.
      Gdy nie podano o jaki DOS chodzi i nie wynika to z kontekstu, to domyślnie przyjmuje się, że chodzi o DOS 2.5. Jak widać Larek z Twojej wypowiedzi, to działa :). Trudno jest przecież zamieszczać komentarze z uwzględnieniem specyfiki różnych (i licznych) DOS-ów. Dodam jednak wyjaśnienie na początku rozdziału:

      W opisie założono, że TBXL będzie pracował pod DOS-em 2.5. W przypadku użycia innego DOS-a mogą wystąpić różnice w działaniu niektórych niżej opisanych poleceń.

      Mam nadzieję, że to wystarczy (chyba, że są inne propozycje).
      Odnośniki do DOS-a zostawiam. Prawdę powiedziawszy, występują w takiej lub podobnej formie (również u Zientary) w każdym opisie TBXL jaki widziałem, więc czemu nie tu? A zaczerpnięte zostały z tego opracowania. Jeśli nie pomagają, to też nie przeszkadzają. XIO jest ciekawsze, ale tylko wtedy, gdy nie ma poleceń BASIC-a. Po co używać XIO, skoro jest odpowiednie polecenie?

      Ad III – wprowadzające w błąd
      To prawda z MyDOS-em. Jeśli jednak użytkownik przeczytał instrukcję MyDOS-a, to tam jest wyjaśniona ta różnica w stosunku do DOS-a 2.5, a dodanie uwagi (z ad II) myślę, że załatwia sprawę.

      Ad IV – czy lepsze?

      larek:

      (dla mnie to brzmi jak „lepsze”)

      No bez przesady, prostszy w żadnym przypadku nie jest synonimem lepszego. W pierwotnej wersji opisu EXIT umieściłem informację o różnicy między POP:GOTO, ale potem ją usunąłem. Wydawało mi się, że użytkownik łatwo ową różnicę wychwyci. Skoro jednak ten szczegół wzbudził kontrowersję, to przywracam jako trzecią uwagę pod opisem EXIT:

      EXIT nie umożliwia skoku w dowolne miejsce programu, dlatego nie w pełni może zastąpić polecenie POP:GO#nazwa (POP:GOTO nr_linii).

      Rzeczywiście, Zientara w „Językach programowania cz.1” podaje EXIT z parametrem. Jest to jednak jeden z licznych błędów w jego opisie.
      Hm. Dlaczego nie jest sygnalizowany błąd? Może rzeczywiście pierwotnie miała to być instrukcja z parametrem. Jak jednak zrealizować to w takiej sytuacji:

      100 PROC ABC
      110 DO
      200 REPEAT
      300 EXIT 1000
      310 UNTIL X=10
      400 LOOP
      500 ENDPROC
      600 ------------------------------
      1000 REM [COS TAM]


      A może chodziło o wyeliminowanie takich karkołomnych konstrukcji? Jak było naprawdę, trzeba by zapytać Franka Ostrowskiego. Tak czy inaczej aktualne EXIT wystarcza w co najmniej 95% przypadków.

      Ad V – zastanawiające
      Kiedy uczyłem się TBXL i chciałem znaleźć instrukcję, która robi to co jest mi potrzebne, ale nie pamiętałem jej nazwy, irytowała mnie konieczność przeszukiwania niemal całej instrukcji, czasami dwa, trzy razy, bo jeśli nie wie się czego dokładnie się szuka, to łatwo to przeoczyć. Stąd podział tematyczny. „Aha, potrzebuję pętli z warunkiem na końcu” albo „jak nazywa się ta pętla bez końca” - więc patrzę do działu PROCEDURY I PĘTLE, zamiast wertować od początku całość.
      A gdyby rozdział zamiast „Usprawnienia” nazywał się „Inne” albo „Pozostałe” to takiego problemu już by nie było? Tylko, że wtedy byłby to rozdział o nic nie znaczącej nazwie.
      W pewnym sensie ten rozdział jest „śmietnikiem”. Trafiły tam polecenia samotne, nie mające bezpośrednich powiązań z poleceniami w innych działach. Nie ma tam SOUND, bo ma „krewnych” w dziale „Dźwięk” i RND, bo ma „krewniaka” RAND w „Funkcjach...”.
      Czy ten podział tematyczny jest doskonały? Pewnie nie, ale czy taki może być? Gdyby zapytać kilka osób pewnie miałyby różne zdania na ten temat. Wydaje mi się jednak, że nie można mu zarzucić braku spójności logicznej. W podziale tematycznym zawsze będą polecenia, które można przypisać do dwóch różnych działów. I to może budzić kontrowersje. Ja przyjąłem w takim przypadku zasadę „bliższego pokrewieństwa”. Spis alfabetyczny, choć najprostszy, też ma wady. W spisie W. Zientary proste polecenie IF-ELSE-ENDIF rozrzucone jest po trzech miejscach. O innej wadzie wspomniałem na początku (ad V).

      Ad VI – alfabetycznie?
      Spis zrobiłem według występujących w tekście nagłówków. Trzeba się jednak zgodzić, że jeśli ktoś zagląda do takiego spisu, to wie czego szuka, ale nie wie gdzie to jest. Tak więc wprowadzę odpowiednie zmiany.

      Ad VII – najważniejsze
      Ooo! Nie czytało się „Wprowadzenia”... to zacytuję odpowiedni fragment:

      Niżej opisane zostaną tylko polecenia i funkcje charakterystyczne dla TBXL. Jeśli, czytelniku, teraz zaczynasz przygodę z BASIC-em, to zanim przejdziesz do dalszej części opisu, powinieneś zapoznać się z jednym z licznych podręczników podstaw programowania w Atari BASIC-u.

      Cóż, ta książeczka nie jest produkcją komercyjną, takie rzeczy robi się w wolnym czasie, którego zawsze brakuje. Tym bardziej trzeba sobie zadać pytanie „po co?”.
      Jeżeli miałby to być spis wszystkich poleceń, podobny do wspomnianego tu już kilka razy podręcznika W. Zientary, to dla osoby znającej Atari BASIC będzie to tylko niepotrzebne zamulanie treściami doskonale znanymi. Natomiast dla osoby nie mającej pojęcia o BASIC-u – to za mało aby się nauczyć programować. W takim przypadku potrzebny byłby podręcznik od podstaw. Tylko po co powielać kilkadziesiąt stron tekstu, skoro już to napisano i to dobrze napisano (np.„Atari Basic” W. Miguta lub „Atari Basic. Język programowania i obsługa mikrokomputera Atari” [praca zbiorowa]). Pewnie, że dobrze byłoby mieć choćby taki podręcznik jak „ABBUC Turbo Basic XL 1.5 Handbuch”, ale... czas to pieniądz, a pieniądz to czas :)
      Można to traktować tak: Podręcznik Atari BASIC-a to tom 1, a niniejsza książeczka to tom 2.
      Chyba można to uznać za „rozsądny kompromis”, zwłaszcza, że celem było opisanie bez błędów „nowych” poleceń, bo do tej pory takiego opisu (bez błędów) nie było.

      larek:

      Bluki, mam nadzieję, że się nie obrazisz. To tylko moja skromna opinia. Mogę się mylić. Mogę nie mieć racji… Generalnie łatwiej się krytykuje, trudniej coś zrobić (dobrze) samemu. Doceniam, że Ci się chciało! Ale również chciałbym, żeby to opracowanie było jeszcze lepsze. I jest to do zrobienia. Wierzę, że Ci się uda :)
      Powodzenia!

      Ha! Ha! Metoda kija i marchewki :D.
      Dziękuję, że zadałeś sobie trud przeczytania oraz za cenne uwagi, które już uczyniły ten podręcznik lepszym :).

      @MaW, w pewnym sensie już coś takiego jest. Na stronie turbobasicxlandaction. Aby jednak nie ganiać zainteresowanych daleko, dodaję też tu, w załączniku.

      Ale wyszło potężne pościsko! Jeśli ktoś zasnął w trakcie czytania, to przepraszam :)
      • 9:
         
        CommentAuthorlarek
      • CommentTime27 Apr 2013 01:04 zmieniony
       

      Bluki:

      Ooo! Nie czytało się „Wprowadzenia”...

      Czytało się, czytało. Czytałem również tytuł pracy, który nie brzmiał "Turbo-Basic XL 1.5. Opis niektórych poleceń z przykładami", tylko sugerował, że zawiera wszystkie polecenia. Oczywiście już na wstępie zostało to brutalnie sprostowane ;)
      • 10: CommentAuthorBluki
      • CommentTime28 Apr 2013 21:04
       
      Aha. Czyli lepszy byłby tytuł: "TURBO-BASIC XL 1.5. Opis wybranych poleceń".
      • 11:
         
        CommentAuthorlarek
      • CommentTime28 Apr 2013 21:04
       
      Lepiej to będzie, gdy opracowanie będzie zawierać wszystkie polecenia ;P
      • 12: CommentAuthorBluki
      • CommentTime28 Apr 2013 22:04
       
      Kto wie, może za jakiś czas i za to się wezmę, chyba że ktoś mnie uprzedzi :).
      • 13: CommentAuthorBluki
      • CommentTime1 May 2013 00:05
       
      Pozwolę sobie przypomnieć, że na zgłaszanie uwag zostało już tylko 5 dni!
      • 14: CommentAuthorBluki
      • CommentTime16 May 2013 01:05 zmieniony
       


      Trochę to trwało, bo trzeba było uwzględnić sporo uwag, ale wersja finalna podręcznika jest już gotowa. Linki do formatu ODT i PDF znajdują się w zaktualizowanym poście #1. Zapraszam do lektury.
      • 15: CommentAuthorLex
      • CommentTime16 May 2013 23:05
       
      Wydanie faktycznie ładne, ale do co składu... proszę, popoprawiajcie te sieroty, to aż takie trudne nie jest :(

      ->link<-
      • 16: CommentAuthorBluki
      • CommentTime17 May 2013 00:05 zmieniony
       
      A prosiłem o uwagi. Były na to trzy tygodnie! Edytor posiada kontrolę sierot, ale nie jest włączona, bo nie widziałem problemu.

      Na szczęście jest to dokument techniczny, a nie literatura piękna, więc aż tak źle nie jest :)
    1.  
      Hehe, pamiętam ile śmiechu wzbudzała w Wordzie opcja o wdzięcznej nazwie "kontrola bękartów i wdów". Gotowe hasło do jakiejś doktryny politycznej :)
      • 18: CommentAuthorLex
      • CommentTime18 May 2013 05:05 zmieniony
       
      No trudno. Trzy tygodnie to może i dużo czasu, ale np. ja nie zaglądam na stronę "aż tak często" - wiadomości nie są tu publikowane codziennie, a ja wolę mieć więcej tematów do poczytania. Poza tym na początku nie było PDFa do wglądu, jedynie plik z tym drugim rozszerzeniem.