atarionline.pl Turbo Basic Compiler - 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.  
    Jak będę pisał kompilator C to pewnie zrobię go właśnie w składni C ;-)
    • 2:
       
      CommentAuthormgr_inz_rafal
    • CommentTime12 Apr 2017 zmieniony
     
    Czy PROC musi być na początku linii?

    Poniższy program zgłasza błąd składni w TBXL, natomiast mój kompilator poprawnie to kompiluje i zastanawiam się, czy nie zostawić tego jako "extension" :)

    6 EXEC STANIK
    7 EXEC BERET
    9 GOTO 9
    10 PROC BERET:PRINT 1:ENDPROC:PRINT 2:PROC STANIK:PRINT 2:ENDPROC
    • 3: CommentAuthorpirx
    • CommentTime13 Apr 2017 zmieniony
     
    Koniecznie zostaw, świetne do 10 liners. PROC bardzo traci przez to, że musi być od nowego wiersza.
    Trza by to dodać to TB :)

    Pewnie TB tego nie łyka, bo PROC to jakiś syntactic sugar do GOSUB...
    • 4: CommentAuthormono
    • CommentTime13 Apr 2017
     
    Pewnie musi być od nowego wiersza, żeby wcięcia ładnie działały :)
    • 5: CommentAuthormav
    • CommentTime13 Apr 2017
     
    Co to będzie za 10liner, skoro przed kompilacją będzie można wywalić formatowanie?
    To tak jakby powiedzieć, że np. jquery to oneliner :D
  2.  
    OK, dzięki - wszystko jasne. Zostawiam tak jak jest.

    Jak jeszcze numery linii zrobię opcjonalne, to będzie można pisać one-linery, bo nie ma limitu na długość wiersza ;)
    • 7: CommentAuthorpirx
    • CommentTime14 Apr 2017
     
    I O TO CHODZI!!! :))))))
    • 8: CommentAuthorpin
    • CommentTime14 Apr 2017
     
    Zróbcie wersję na Atari, albo choć jeden pacz, by oryginalny kompiler pobierał z linii poleceń parametr z plikiem do kompilacji. Niejednokrotnie oszczędziło by mi to dużo czasu...
    • 9:
       
      CommentAuthormgr_inz_rafal
    • CommentTime7 May 2017 zmieniony
     
    Dobra, uporządkowałem trochę kod, popisałem CMejki i zrobiłem, żeby kompilowało się też na linuchu. Zara wrzucę na GitHubę.

    Tak to wygląda na Miętosiu:



    Testy też się kompilują, ale nie zadziałają, bo musiałbym całość jeszcze spiąć z atari800 (nie-Win) oraz z Madsem pod Linuxa zapewne poprzez Wine. Nie chce mi się :)



    Link: ->link<-
    • 10:
       
      CommentAuthorbocianu
    • CommentTime7 May 2017
     
    mads pod linuxa jest natywny - nie trzeba wine ;)
  3.  
    Zacnie...
    Ale i tak mi się nie chce ;-)
    • 12: CommentAuthorgreblus
    • CommentTime7 May 2017
     
    Hej wrzuć na github-a. Akurat wyjeżdżam do kalifatu niemieckiego, ale jak wrócę w przyszłą sobotę i zostanie mi choć jedna żywa szara komórka, to chętnie potestuję na Linuksie ;).
    • 13:
       
      CommentAuthormgr_inz_rafal
    • CommentTime14 May 2017 zmieniony
     
    Kolega grablus sprawił, że linuxowe toole są już w projekcie i nawet działają :)

    Dzięki!

  4.  
    Mam pytanie: jeśli robię
    PRINT 1,2

    To co właściwie jest drukowane w miejscu przecinka? Jak obliczyć tę odległość do następnej kolumny?
    • 15: CommentAuthormono
    • CommentTime17 May 2017
     
    A to nie jest kompatybilne z AtariBASIC-em?
  5.  
    Masz rację.

    I nawet już mi to tłumaczyłeś: ->link<-

    Ogólnie w tym starym wątku jest masa wiedzy, która znowu mi się przyda.
    • 17: CommentAuthorantrykot
    • CommentTime18 May 2017
     
    SOUND jest źle zaimplementowane.

    Inicjalizując POKEYa zakładasz że pierwsze SOUND które wystąpi w programie, będzie również wykonane jako pierwsze, a tak przecież nie musi być.

    Rzecz w tym że w ogóle nie powinieneś resetować POKEYa przez zapis 0 do SKCTL, gdyż jest to tutaj zbędne (choć są inne sytuacje w których jest to użyteczne).

    Za to powinieneś za każdym razem gdy wykonywana jest instrukcja SOUND zapisywać 0 do AUDCTL i 3 do SKCTL, jeżeli zależy Ci na kompatybilności.
  6.  
    Masz rację, SOUND nie brzmiało mi za dobrze przy testach, nawet wpisałem ten fakt w readme.

    Dzięki za wskazówki; przyjdzie czas na poprawki i w tym zakresie.
    • 19:
       
      CommentAuthormgr_inz_rafal
    • CommentTime2 Jun 2017 zmieniony
     
    Przecinek chyba już działa dobrze. Mono, dopiero po latach zrozumiałem Twój przykładowy kod w Pytonie :)

    10 PRINT 1,2;3;4;
    20 PRINT ,6,7;7;7;8;6,
    30 PRINT 123;
    40 PRINT 1,22,333,1000,20000,3,22,345,6543




    I teścik:

    • 20:
       
      CommentAuthormgr_inz_rafal
    • CommentTime12 Jun 2017 zmieniony
     
    Do gry wkraczają tablice :)



    • 21: CommentAuthorgreblus
    • CommentTime12 Jun 2017
     
    Takiego mam problema i nie wiem o co kaman:

    In file included from /home/greblus/build/tubac/tests/src/tests.cpp:35:0:
    /home/greblus/build/tubac/tests/src/tests.cpp: In function ‘void ____C_A_T_C_H____T_E_S_T____279()’:
    /home/greblus/build/tubac/tests/src/tests.cpp:272:3: error: redeclaration of ‘Catch::ScopedMessage scopedMessage291’
    INFO(FILENAME) \
    ^
    /home/greblus/build/tubac/tests/src/tests.cpp:289:5: note: in expansion of macro ‘RUN_AND_CHECK’
    RUN_AND_CHECK(
    ^
    /home/greblus/build/tubac/tests/src/tests.cpp:271:3: note: ‘Catch::ScopedMessage scopedMessage291’ previously declared here
    INFO(listing) \
    ^
    /home/greblus/build/tubac/tests/src/tests.cpp:289:5: note: in expansion of macro ‘RUN_AND_CHECK’
    RUN_AND_CHECK(
    ^
    make[2]: *** [CMakeFiles/tubac_tests.dir/build.make:111: CMakeFiles/tubac_tests.dir/src/tests.cpp.o] Błąd 1
    make[1]: *** [CMakeFiles/Makefile2:68: CMakeFiles/tubac_tests.dir/all] Błąd 2
    • 22: CommentAuthorantrykot
    • CommentTime12 Jun 2017
     
    Jakiego kompilatora używasz? Wygląda na to że nie implementuje makra __COUNTER__.
    • 23: CommentAuthorgreblus
    • CommentTime12 Jun 2017 zmieniony
     
    gcc 7.1.
    • 24: CommentAuthorantrykot
    • CommentTime13 Jun 2017 zmieniony
     
    Z jakiegoś powodu Catch nie wykrywa poprawnie wersji gcc, można dodać
    #define CATCH_CONFIG_COUNTER
    przed
    #include <catch.hpp>
    żeby to naprawić.
    • 25: CommentAuthorgreblus
    • CommentTime13 Jun 2017
     
    Działa, dzięki! :)
  7.  
    7.1? O kurna, może za świeży :)
    Ja przed chwilą jechałem bodajże 5.4 i nie było problemu.
    • 27: CommentAuthorgreblus
    • CommentTime13 Jun 2017
     
    W Archu takie dają :) A swoją drogą twórcy gcc bawią się chyba ostatnio w wojnę numerkową.
    • 28:
       
      CommentAuthormgr_inz_rafal
    • CommentTime16 Jun 2017 zmieniony
     
    Pierwsze zastosowanie typowo naukowe - sortowanie bąbelkowe :)

    Na dwa baty, tzn. na dwie kolumny...

    10 COM ARR(1,10)
    20 EXEC INIT
    25 FOR COLUMN=0 TO 1
    30 EXEC SORT
    35 NEXT COLUMN
    40 EXEC SHOW
    50 GOTO 50
    1000 PROC INIT
    1005 FOR I = 0 TO 10
    1010 ARR(0,I)=RND:ARR(1,I)=RND
    1015 NEXT I
    1100 ENDPROC
    2000 PROC SHOW
    2005 FOR I = 0 TO 10
    2010 PRINT ARR(0,I),ARR(1,I)
    2015 NEXT I
    2100 ENDPROC
    3000 PROC SORT
    3005 GOTO 3013
    3010 IF SORTED = 1 THEN GOTO 3100
    3013 SORTED = 1
    3015 FOR I = 0 TO 9
    3020 IF ARR(COLUMN,I) > ARR(COLUMN,I+1)
    3025 TMP = ARR(COLUMN,I)
    3030 ARR(COLUMN,I) = ARR(COLUMN,I+1)
    3035 ARR(COLUMN,I+1) = TMP
    3040 SORTED = 0
    3045 ENDIF
    3050 NEXT I
    3055 GOTO 3010
    3100 ENDPROC


    • 29:
       
      CommentAuthormgr_inz_rafal
    • CommentTime7 dni temu zmieniony
     
    Z okazji, że zła pogoda, dorzucam jeszcze trochę operatorów logicznych i binarnych:

    10 PRINT 1234 ! 45432
    20 PRINT 54332 & 130
    30 PRINT $BABA AND 0
    40 PRINT $BABA OR 0
    50 PRINT $CEED EXOR $77BB


    • 30: CommentAuthorgreblus
    • CommentTime7 dni temu
     
    Brak komentarzy oznacza, że wszystko działa. Ja w kazdym razie będę krzyczał jak coś mi nie zadziała :)
    • 31: CommentAuthorgorgh
    • CommentTime7 dni temu
     
    ciekawy bardzo projekt
    • 32: CommentAuthorQTZ
    • CommentTime7 dni temu
     
    Właśnie pomyślałem, że taka pogoda, to zajrzę na forum... i pewnie zastanę zero nowych postów... :)

    OT: Nazwy zmiennych typowe, kiedyś na uczelnię robiłem projekt i bazowałem na krótkim przykładzie, w którym podobnie były nazwane pliki, po modyfikacjach z przykładu nie zostało prawie nic, poza tymi nazwami, które przed oddaniem wypadało zmienić, niestety zrobiłem to w ostatniej chwili i przy ocenie zapomniałem jakie są te nowe... Ledwo dostałem tróję, a mało brakowało, a byłbym posądzony o kradzież cudzej pracy... Dodatkowym argumentem na moją niekorzyść było zbytnie rozbudowanie funkcjonalności... które w 100% było mojego autorstwa... :)

    Generalnie ciekawy projekt, zaglądam tu od czasu do czasu :)