atarionline.pl Nocne BASIC'owanie - 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:
         
        CommentAuthorgolem14
      • CommentTime12 Mar 2009 23:03 zmieniony
       
      Ponieważ nieśmiało zabieram się za moją gierkę pt. roboczym "pięć kropek w linii", oczywiście w Turbo Basicu, mam 2 pytanka do Sz. Kolegów AND/OR Koleżanek:
      1. Czy do edycji w Basicu jest jakiś lepszy edytor, coś na kształt edytora MSQbasic'owego, notatnika lub nawet vima ;-)
      2. Ewentualnie - czy można wymienić standardowe teksty (listingi) pomiędzy emulatorem Atari800Win a piecem (gdybym np. pisał listingi w notatniku)?
      Z poważaniem!
      • 2:
         
        CommentAuthorKaz
      • CommentTime13 Mar 2009 00:03
       
      ad 1. Przy pracach nad "Kolony2106" kolega Urborg zastosowal metode "na Notepadzie" i swietnie mu to szlo. Ja tez do Dratewki uzywalem Notepada. Po prostu wygodniej pisac, kopiowac elementy (control-c, control-v) i samo to juz wystarcza, zeby znacznie ulatwic i przyspieszyc prace. Oczywiscie Notepad (czyli Notatnik) nie jest wyspecjalizowany do pisania programow, wiec to taka ograniczona wygoda, ale sie nadaje, szczegolnie do krotkich programow.

      W Notatniku oczywiscie nie bedziesz widzial znakow semigrafiki czy innych typowo atarowskich znaczkow. Ale ich kody zostana zapisane.

      ad 2. Oczywiscie, ze mozna. W emulatorze Atari mozesz dowolny katalog na pececie ustawic sobie jako twardy dysk "H:" i tam trzymac listing, zapisywac go i odczytywac.

      Mnie zalezalo na trzymaniu programu na dysku ATR, wiec uzywalem innej metody: zapisany plik txt programem AtrUtil wrzucalem na dyskietke i stamtad byl wczytywany do Turbobeja. Wszelkie zmiany zapisywalem na dyskietce, potem AtrUtil i ekstraktacja pliku txt na peceta.

      W Turbo Basicu taki plik txt odczytuje sie oczywiscie przez ENTER, a nie LOAD. Zapisuje LIST, nie SAVE.

      PS.
      Acha, byly jeszcze dwa edytory na peceta dedykowane Atari, pokazujace semigrafike. Daj mi chwile to postaram sie je znalezc.
      • 3:
         
        CommentAuthorKaz
      • CommentTime13 Mar 2009 00:03
       
      Juz znalezione. Pisalem o obu programach w czerwcu 2006 roku:

      ->link<-

      "Memo Pad" Erica Perenta:

      ->link<-

      oraz "ATASCIIView" Lee Hankena:

      ->link<-

      oczywiscie oba programy sa tez w katalogu uzytkow:

      ->link<-

      Szkoda, ze autorzy nie posuneli sie dalej - do edycji.
      • 4:
         
        CommentAuthorKaz
      • CommentTime13 Mar 2009 00:03
       
      No i wersja online, tez moze sie przydac czasem:

      ->link<-
      • 5:
         
        CommentAuthorsikor
      • CommentTime13 Mar 2009 06:03
       
      Kaz napisał: W Notatniku oczywiscie nie bedziesz widzial znakow semigrafiki czy innych typowo atarowskich znaczkow. Ale ich kody zostana zapisane.

      Sikor odpowiada (choć nie pisze na PC): użyj fontów z memopada (trzeba je przegrać do katalogu FONTS w katalogu WINDOWS) i podepnij pod notatnik - będziesz miał też semigrafikę Atari ;)
      • 6:
         
        CommentAuthorgolem14
      • CommentTime13 Mar 2009 09:03
       
      O dzięki! Na razie nie przewiduje żadnych znaków semigraficznych, czysty GR.8. Zobaczę, jak się spisze Notepad++ w roli edytora.
      • 7:
         
        CommentAuthortdc
      • CommentTime13 Mar 2009 09:03
       
      golem14: ad 2 jest jeszcze jedna możliwość w emulatorze jest opcja: Atari > Settings > "Enable P: patch for printer device, to jest co prawda jednostronne, ale powoduje możliwość przeniesienia listingu z Atari wprost do np. notatnika. Jest to przydatne jeśli otwarcie pliku Atari na pececie nie daje czytelnego kodu (a to raczej częste).
      • 8:
         
        CommentAuthorlarek
      • CommentTime13 Mar 2009 10:03
       
      A moim zdaniem programy w basicu najlepiej pisze się na Atari. Żaden notatnik na pececie nie sprawdzi błędów składniowych przy pisaniu, co w edytorze Atari jest normalką.
      • 9:
         
        CommentAuthorgolem14
      • CommentTime13 Mar 2009 10:03
       
      @larek: de gustibus non est disputandum

      Atr'ka z TurboBasicem i AtrUtil na razie się spisuje. Ok THX.
      • 10:
         
        CommentAuthorlarek
      • CommentTime13 Mar 2009 11:03
       
      oczywiście
      • 11:
         
        CommentAuthorsikor
      • CommentTime13 Mar 2009 12:03
       
      I ja się zgodzę z larkiem. Ja zasadniczo na PC nie potrafię pisać programów w TB. A edytor standardowy wbrew pozorom nie jest taki zły... ;)
      • 12:
         
        CommentAuthorKaz
      • CommentTime13 Mar 2009 12:03 zmieniony
       
      tdc - kod jest nieczytelny na pececie, jesli byl na Atari stokenizowany. Jezeli to efekt zapisu przez LIST to jest to zwykly, czytelny listing.

      Golem - nie zapomnij sie podzielic wrazeniami.

      Larek - zgadza sie, ostatecznie i tak ten program trzeba uruchomic na Atari :D. To przypomina troche prace z jezykami kompilowanymi - edytujemy sobie bez sprawdzania skladni, a uruchamiamy w "kompilatorze" zglaszajacym bledy czyli na Atari.

      Sikor - doceniam Twoja role w propagowaniu uzywania prawdziwego Atari. Niemniej jednak gdy komus, kto przychodzi z przyzwyczajeniami pecetowskimi nakazemy kompletnie zmienic przyzwyczajenia co do klawiatury i ukladu klawiszy to raczej go zniechecimy do pisania w ogole. Mnie osobiscie edytor Atari, chociaz bardzo elastyczny, nie pasowal nawet w starych czasach i dopiero w GFA Basic na ST odnalazlem wlasciwie proporcje parametrow pracy, ktore skutkowaly niesamowita wygoda i szybkoscia pracy. Na pececie tez ich znalezc nie moge, edytory takie jak Notepad sa za proste, a wiekszosc edytorow dla programistow - niepotrzebnie skomplikowanych.
      • 13:
         
        CommentAuthorgolem14
      • CommentTime13 Mar 2009 20:03
       
      Z prosbą o pomoc ponownie.
      Szukam jakiejś szybkiej procedury obsługi Joysticka i klawiatury w Basicu. Tzn program działa w pętli nasłuchując czy naciśnięty jest klawisz kierunkowy bądź wychylony Joystick (i/lub naciśnięty strzał), po czym następuje skok do jakiejś procedury. Ma ktoś na podorędziu? O ile pamiętam, to Joya chyba się przez PEEK robiło...
      • 14:
         
        CommentAuthoradiblol
      • CommentTime13 Mar 2009 21:03
       
      ->link<- - na PORTA jest stan joysticka.

      ->link<- - mechanizm "trzymania" wyzwalania
      • 15:
         
        CommentAuthorlarek
      • CommentTime14 Mar 2009 00:03 zmieniony
       
      Jeśli piszesz w Turbo Basicu XL:

      100 POKE 764,255
      110 WHILE INKEY$="" AND STICK(0)=15 AND STRIG(0): WEND
      120 REM DALSZA CZĘŚĆ PROGRAMU

      Instrukcje WHILE warunek : WEND nie muszą być w jednej linii. Po ich rozdzieleniu, pomiędzy nimi może być wstawiony kod programu, np.:

      100 POKE 764,255
      110 WHILE INKEY$="" AND STICK(0)=15 AND STRIG(0)
      120 REM TU MOŻNA UMIEŚCIĆ SWÓJ PROGRAM
      130 ? PEEK(20);
      140 WEND
      150 REM DALSZA CZĘŚĆ

      Jest też podobna para instrukcji: REPEAT: ..... : UNTIL warunek
      W tym przypadku warunek sprawdzany jest na końcu, a nie na początku.

      Ewentualnie:

      100 REM JAKIŚ PROGRAM
      110 IF INKEY$<>"" OR STRIG(0)<>15 OR NOT STRIG(0) THEN EXEC PROCEDURA
      120 REM JAKIŚ PROGRAM

      Tu po naciśnięciu klawisza lub wychyleniu joya lub wciśnięciu fire nastąpi skok do procedury "PROCEDURA". Po THEN możesz oczywiście skoczyć, gdzie tylko chcesz.
      • 16:
         
        CommentAuthorgolem14
      • CommentTime15 Mar 2009 20:03 zmieniony
       
      Autostart programów?
      Prośba techniczna.
      Mam obraz dyskietki z MyDOS 4.53, na niej tbasic2.com i za każdym razem muszę go ręcznie wklepać by ruszył (a jak testuje mój program to tego sporo jest). Da się coś zrobić aby ten plik uruchamiał się automatycznie przy starcie maszyny?

      BTW. larek thx. za porady. Przetestowałem podane rozwiązania (procedury obsługi Joya pewnie się przydadzą). Na razie skorzystałem z rozwiązania podanego w Tajemnicach Atari, przy okazji krótkiego wprowadzenia do Turbo Basic, i jadę na klawiszach.
      • 17:
         
        CommentAuthorlarek
      • CommentTime15 Mar 2009 22:03
       
      Zmień COM na AR0
      "0" jak zero.
      • 18:
         
        CommentAuthorgolem14
      • CommentTime15 Mar 2009 22:03
       
      @larek
      Kłaniam się w pas!
      • 19:
         
        CommentAuthorKaz
      • CommentTime18 Mar 2009 12:03
       
      Jak juz bedziesz mial jakies widoczne efekty to referuj! :)

      PS. Szykujesz sie na Grzybsoniade?
      • 20:
         
        CommentAuthorgolem14
      • CommentTime18 Mar 2009 14:03 zmieniony
       
      Po dwóch dniach odcięcia od sieci...
      Gra weszła w fazę 0.2 tzn. dorobiła się działającego międzymordzia tj. procedur rysujących planszę (gr.8), ruchomego kursora, działającego zaznaczania punktów. Do tego trzeba jeszcze dodać obsługę błędów (tzn. gdy kursor wychodzi poza ekran). Część druga, trudniejsza, to "rdzeń" sprawdzający i zliczający wszystkie zmienne "matematyczne". Muszę przypomnieć sobie jeszcze podstawy rachunku wektorów (dokładnie jak oblicza się długość wektora).
      Nie szykuje się na nic! Zacząłem ten projekt 15 lat temu i chcę go skończyć chociażby po to, by sobie pograć bez ręcznego liczenia wyników. Ponadto mam nadzieję, że może pomysł się komuś spodoba i go poprawi.
      • 21:
         
        CommentAuthorKaz
      • CommentTime18 Mar 2009 14:03
       
      Kiedys tez myslalem o przeniesieniu tej gry na komputer, nawet gdzies sobie rozrysowalem jak to ma wygladac.
      • 22:
         
        CommentAuthoradiblol
      • CommentTime18 Mar 2009 14:03
       
      Liczenie wektorów jest bardzo proste:
      Długość wektora:

      len = sqrt(x*x + y*y)


      Odległość między wektorami:

      dx = x1-x2
      dy = y1-y2
      dist = sqrt(dx*dx + dy*dy)


      Ten kod chyba będzie można nawet w BASIC'u wykorzystać (tak mi się wydaje).
      • 23:
         
        CommentAuthorKaz
      • CommentTime18 Mar 2009 21:03
       
      Golem - a w ktorym trybie graficznym/tekstowym chcesz to zrobic?
      • 24:
         
        CommentAuthorgolem14
      • CommentTime19 Mar 2009 08:03
       
      gr.8+16
      • 25:
         
        CommentAuthorKaz
      • CommentTime19 Mar 2009 12:03 zmieniony
       
      A to fajnie, bo juz sobie przygotowalem obrazek (w rolach glownych: panowie Floyd i Steinberg :). Jak skonczysz pisac gre i ja skompilujesz, to ja sobie zrobie prywatna wersje, z obrazkiem tytulowym...

      To oczywiscie wersja robocza, bo napis bedzie dopasowany do rodzaju kropek, ktore uzyjesz w grze, no i bedzie wzmianka o autorze gry:



      Edit: ewentualnie wersja kolor:

      • 26:
         
        CommentAuthorgolem14
      • CommentTime19 Mar 2009 14:03
       
      Ok. ładne (tzn czarno-szare ładniejsze). Myślę, że pewne rzeczy ruszę dopiero w weekend. "Dużo, za dużo sytuacji, które nużą" ;-)
      Mam zresztą jedne pomysł, o którym na prv.
      • 27:
         
        CommentAuthorKaz
      • CommentTime7 Apr 2012 15:04
       
      Golem, jak Ci idzie praca nad gra? :D
      • 28: CommentAuthorat0mic
      • CommentTime11 Apr 2012 13:04
       
      atari basic można wyłączyć przez POKE 1016,1 i wciśnięcie reset - jak to działa?
      czy jakoś do PORTB jest przepisywane ?

      czy w podobny sposób można wyłączyć np generator znaków a basic zostawić ?

      druga część pytania to czy można modyfikować obszar na program w basic:

      początek to $1702 a koniec to $9c1f czyli wolnego jest 34077 bajtów, a ?fre(0) pokazuje że 37881 <- z czego to jest brane ?

      jak zrobić np: żeby program w basic się lokował od np: $2000?
      • 29: CommentAuthorBluki
      • CommentTime11 Apr 2012 16:04
       
      LOMEM dla programu w BASIC-u znajduje się pod adresem 128/129. Od ustawionej tam wartości będzie się ładował program.
      Ilość wolnego RAM-u (FREE) zależy od użytego DOS-a lub jego braku, np.:
      37902 bez DOS-a
      31525 MyDOS 4.50T.
      • 30: CommentAuthorat0mic
      • CommentTime12 Apr 2012 10:04 zmieniony
       
      dzięki!

      czemu na Atari np:
      print 7 or 11

      daje 1

      podczas gdy na ZX Spectrum128/Amstrad/Commodore daje 15


      jak realizować operacje na bitach w atari basic ?
      • 31:
         
        CommentAuthorMaW
      • CommentTime12 Apr 2012 12:04
       
      a
      ? 0 or 0
      ?
      ...bo musisz się przenieść na TiBeja :P
      • 32: CommentAuthorBluki
      • CommentTime12 Apr 2012 15:04
       
      Czemu 7 OR 11 daje 1? Nie mam pojęcia :)
      Trzeba by poszukać w szczegółowej literaturze traktującej o Atari BASIC-u. Jeśli chcesz aby 7 OR 11 = 15 to musisz użyć Microsoft BASCI-a I lub II.

      Atari BASIC nie ma operacji na bitach. Musisz napisać własną procedurę. Łatwo to można zrobić używając potęgowania, ale Atari BASIC jest za wolny na takie działania.
      • 33: CommentAuthorBluki
      • CommentTime12 Apr 2012 20:04
       
      Dodam jeszcze, że działania na liczbach binarnych posiada Advan BASIC.
      • 34: CommentAuthorat0mic
      • CommentTime12 Apr 2012 22:04
       
      dzięki - trochę za trudny ten advan!

      z innej beczki:

      1 GR.8+16
      2 POKE559,33

      ??? co wpisać żeby plot działało prawidłowo?
      • 35: CommentAuthorBluki
      • CommentTime12 Apr 2012 22:04 zmieniony
       
      Edytor BASIC-a uznaje tylko standardowy ekran i ignoruje zmianę szerokości. Nie wspominając o procedurach rysowania. O ile dobrze pamiętam, to chyba tylko Advan radzi sobie z tym problemem (ale pewności nie mam).

      Rzeczywiście, Advan BASIC jest najtrudniejszym BASIC-em, ale bez przesady. Za to ma największe możliwości, no i jest to "formuła 1" wśród BASIC-ów na ATARI, jeśli chodzi o szybkość działania.
      • 36: CommentAuthormono
      • CommentTime13 Apr 2012 00:04
       
      Argumenty funkcji logicznych (OR, AND i NOT) w AB są traktowane, jako wartości logiczne - 0 to fałsz, niezero to prawda. Wynikiem funkcji logicznej będzie zawsze albo 0, albo 1.
      Funkcje bitowe można najszybciej USRem:
      X=USR(xor,a,b)
      xor: pla
      pla
      sta $cc
      pla
      sta $cb
      pla
      eor $cc
      sta $d5
      pla
      eor $cb
      sta $d4
      rts

      X=USR(and,a,b)
      xor: pla
      pla
      sta $cc
      pla
      sta $cb
      pla
      and $cc
      sta $d5
      pla
      and $cb
      sta $d4
      rts

      X=USR(or,a,b)
      or: pla
      pla
      sta $cc
      pla
      sta $cb
      pla
      ora $cc
      sta $d5
      pla
      ora $cb
      sta $d4
      rts