atarionline.pl Kod źródłowy Action! - 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: CommentAuthorgreblus
    • CommentTime25 Feb 2014
     
    Wygląda na to, że ktoś go ma:

    ->link<-

    I to z cross-assemblerem, którym był budowany. Może kiedyś uda się uzyskać zgodę na upublicznienie...

    Choćby po to, żeby zobaczyć jak bardzo kod jest skomplikowany :)
    • 2:
       
      CommentAuthortdc
    • CommentTime25 Feb 2014
     
    Fajnie!

    A ja właśnie przeszedłem rozmowę z pewnym koderem aby zrobił narzędzie dla Action! który by analizował kod generowany przez Action! na zasadzie inżynierii wstecznej. Natomiast proste modyfikacje kodu źródłowego sporo by ułatwiły pracę nad grami...
    • 3:
       
      CommentAuthorjhusak
    • CommentTime25 Feb 2014 zmieniony
     
    Czyli taki dekompiler :)
    Nie powinno być to trudne zbytnio, z dokładnością do określania typu zmiennych po kodzie.
    • 4: CommentAuthorgreblus
    • CommentTime25 Feb 2014
     
    Jakby dalo się oddzielić kompilator Action! od edytora (choć wiem, że edytor jest lubiany przez wielu :)) to o wiele łatwiej możnaby zorganizować toolchain na PC.

    Inna sprawa, ciekawe jaki wpływ na rozwój effectusa miałaby dostępność oryginalnych źródeł.
    • 5:
       
      CommentAuthorjhusak
    • CommentTime25 Feb 2014 zmieniony
     
    Effectus to ślepy zaułek, niestety. Nie ma wielu rzeczy, a to dlatego, że trudno je dorobić w istniejącym kodzie.

    Otwarty na świat jest Action Compiler, gdyby Jim Patchel go kontynuował... ma w planach dorobić linker, a to oznacza, że nieprędko będzie. Na razie jest wersja prawie prawie.

    Co do toochaina na PC, to ja o tym cały czas myślę ...
    • 6: CommentAuthorgreblus
    • CommentTime26 Feb 2014
     
    Muszę przetestować Action Compiler, bo po Effectusie straciłem motywację i używam carta w emulatorze :)

    Gdyby kompilator był dostępny oddzielnie od edytora, to lekko zmodyfikowany atari800 umożliwiłby odpalanie go z Makefile. Wybiegając trochę myślami, tak na prawdę wystarczyłaby jedna, na stałe odpalona instancja atari800 i uruchamianie kompilacji przez jakąkolwiek formę IPC (dbus, rurkę/socket, czy nawet jeszcze prościej, sprytną obsługę SIGHUP). Gdyby :)
    • 7:
       
      CommentAuthorjhusak
    • CommentTime26 Feb 2014 zmieniony
     
    To nie jest takie awykonalne, na jakie wygląda :)
    Trzeba tylko:
    - zapisać plik na dysku H6
    - uruchomić spreparowany emulator z prędkością unlimited :)
    - mamy plik skompilowany :)

    A spreparowany emulator to stan emulatora z wpisaną linią kompilacji w linii monitora, wpisujemy do 764 kod return i w tym momencie zapisujemy stan. Po odczytaniu stanu enter się wykona i skompiluje nam program.

    Niestety chyba trudno jest trafić w odpowiedni moment, dlatego trzeba by zmodyfikować plik zapisu stanu.

    Można też zrobić to przy pomocy jakiegoś programiku, co wpisze to, co trzeba do pamięci i uruchomi kompilator przez odpowiedni skok :) wtedy nawet nie trzeba okienka otwierać, wystarczy tryb BASIC.

    --edit--

    OMG!
    Ale jazda!
    Odpalamy:
    atari800 -cart Action\!.rom -cart-type 15 -record tmp

    wykonujemy, klikamy, kompilujemy, wychodzimy.
    następnie:
    atari800 -cart Action\!.rom -cart-type 15 -playback tmp -turbo

    i samo się robi :D

    Więc rozwiązałem problem Toolchaina!

    Kurka wystarczyło opcje przejrzeć :D

    Można połączyć to z zapisem stanu i tylko RETURN nagrać.
    • 8: CommentAuthorgreblus
    • CommentTime26 Feb 2014 zmieniony
     
    Teraz tylko zmapować to pod vimem :). I o ile dobrze pamiętam, obraz wcale nie musiał w atari800 iść przez SDL, jutro przekompiluje i sprawdzę. Ciekawe czy playback zadziałałby na takiej "terminalowej" wersji :)
    • 9:
       
      CommentAuthorjhusak
    • CommentTime26 Feb 2014
     
    Obawiam się, że edytor i monitor Action ma mało wspólnego z urządzeniem E: . Co innego podczas wykonywania programu, ale to nas nie dotyczy.

    Na pewno trzeba zmapować dysk twardy i używać H6.
    • 10: CommentAuthorgreblus
    • CommentTime26 Feb 2014 zmieniony
     
    Chodzi mi oczywiście o odpalenie emulatora bez wyświetlania obrazu przez SDL, co chyba jest możliwe i będzie sporo szybsze :).

    Update: się nie da. Playback nagrania z SDL działa tylko z SDL, w ncurses/bez wyjścia wideo nie. Ale i tak metoda sprytna i przydatna. Atari800 ma mały apetyt na zasoby.
    • 11:
       
      CommentAuthorpirx
    • CommentTime26 Feb 2014 zmieniony
     
    ja sobie kiedyś myślałem, żeby to oprzeć o wersję plikową Action! - wolna jak dyabli, ale po włączeniu turbo to tak nie będzie bolało. dodatkowo łatwiej jakieś zmiany wprowadzić.

    btw - "They said it couldn't be done." - napatrzyłem się na ten napis :)

    Ale soluszon Kuby jest first klass!
    • 12:
       
      CommentAuthortdc
    • CommentTime27 Feb 2014
     
    He he fajne;)


    Co do źródeł to tak sobie myślę, że ja w swoich grach wykorzystuję tylko pewną część języka Action! nawet z wielu typów danych i struktur nie korzystam. Myślę że spokojnie można by wywalić z Action! sporą część kodu i pozostawić to co najistotniejsze (w końcu mój runtime zajmuje jedynie kilkaset bajtów, a Action! obecnie wiele KiB). A w to miejsce dodać coś ciekawego, nowego np. szybkie funkcje trygonometryczne itp. szybkie procedury dla duszków, coś do przerwań itp. Praktycznych, przydatnych rzeczy jest masa.
    Po czymś takim powstałby naprawdę unikalny język do pisania szybkich, multimedialnych programów jak gry czy demka.

    Jeśli kiedyś dostanę te źródła to być może się za taką robotę pewnego dnia zabiorę.
    • 13:
       
      CommentAuthorjhusak
    • CommentTime27 Feb 2014
     
    @pirx, wersja plikowa zajmuje dodatkowe 8kb (czy nawet 16?) z przestrzeni na ewentualny kompilat, niestety.

    A tak nawiasem mówiąc to taką wersję plikową można zrobić w godzinę wraz z testami. Wiem, bo robiłem wersję na SIC!, w bodajże 3 miejscach trzeba wykonać jsr i "się przepisuje!".

    Co prawda przy użyciu DIS6502 dość szybko można zrobić szybką (tak jak kartridż) wersję plikową, trzeba tylko wszystkie labelki przenumerować i przeasemblować pod inne adresy; wersję, która zajmie dodatkowo 8kb. Ale czy jest sens?