atarionline.pl 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:
         
        CommentAuthortdc
      • CommentTime11 May 2010 19:05
       
      in monitor usually w "d1:test.obj" ;)

      Please check Your system configuration, for example in emulator (if ?) "read only" for D1: and others.
      • 2: CommentAuthorw1k
      • CommentTime11 May 2010 19:05
       
      yes, now its works.. but i have no text on screen and emulator crash?
      i first insert dos, then attach action! cart.. hm
      • 3:
         
        CommentAuthortdc
      • CommentTime12 May 2010 02:05
       
      Please describe Your system configuration (screens, photos etc).
      • 4: CommentAuthorw1k
      • CommentTime12 May 2010 07:05
       
      what do you mean screens, photos?:)
      • 5: CommentAuthorw1k
      • CommentTime12 May 2010 10:05
       
      what i doing wrong?
      i compile file, save it, but obj file cant open - emul crash.. i have action!(v3) from atarionline database.
      action!(1) is that same
      • 6:
         
        CommentAuthorjhusak
      • CommentTime16 May 2010 01:05
       
      I do not understand.

      When I compile your example and save it to the disk, running it from the disk I get:

      TESTTEST

      :/

      investigation in progress ...
      • 7:
         
        CommentAuthorjhusak
      • CommentTime16 May 2010 02:05 zmieniony
       
      This is the bug in DOS64 I am using. When typing the name of the exec, it inits it from init address and by default runs at the load address.

      So the prog is executed TWICE.

      Under DOS64 when

      LOA TEST.EXE

      runs correctly (only init)
      • 8: CommentAuthorw1k
      • CommentTime16 May 2010 10:05
       
      thanks, i solved it.. :)
      how would I do this in Action! ?


      • 9: CommentAuthorw1k
      • CommentTime16 May 2010 12:05 zmieniony
       
      hm, next question
      I have a program in basic to make and change the color of the rainbow. I tried to overwrite to action!

      10 GRAPHICS 9
      20 P=0:C=0
      30 FOR X=0 TO 79
      40 COLOR C:PLOT X,0:DRAWTO X,191
      45 P=P+1": IF P=5 THEN P=0: C=C+1
      50 NEXT X
      60 FOR B=0 TO 15
      70 POKE 712,B+16
      80 FOR D=1 TO 300:NEXT 300
      90 NEXT B:GOTO 60


      ACTION!:
      BYTE P=0
      BYTE C=0
      BYTE X,B,D

      PROC DEMO(
      GRAPHICS(9)
      FOR X=0 TO 79
      DO
      COLOR=C PLOT(X,0) DRAWTO(X,191)
      P==+1
      IF P=5 THEN P=0
      C==+1
      FI
      OD
      X=79
      FOR B=0 TO 15
      DO
      POKE (712,B*16)
      FOR D=1 TO 300
      DO
      OD
      D=300
      OD
      B=15
      RETURN


      eweryhing is OK, but how i make loop which change colors?
      • 10: CommentAuthorilr
      • CommentTime16 May 2010 21:05 zmieniony
       
      Maybe like this:

      BYTE X,B
      BYTE P=[0],C=[0] ; INITIALIZE P AND C WITH 0
      BYTE RTCLOCK=20,COLOR4=712 ; SET ADDRESSES OF RTCLOCK AND COLOR0


      PROC DEMO()

      GRAPHICS(9)

      FOR X=0 TO 79 DO
      COLOR=C
      PLOT(X,0) DRAWTO(X,191)
      P==+1
      IF P=5 THEN
      P=0
      C==+1
      FI
      OD

      DO ; START OF INFINITY LOOP
      FOR B=0 TO 15 DO
      COLOR4=B LSH 4 ; SAME AS POKE 712,B*16 IN BASIC
      RTCLOCK=0 ; SAME AS POKE 20,0
      WHILE RTCLOCK < 50 DO OD ; WAIT 1 SEC. (IN PAL SYSTEM)
      OD
      OD
      RETURN
      • 11: CommentAuthorw1k
      • CommentTime16 May 2010 22:05
       
      ERROR 135..
      • 12: CommentAuthorilr
      • CommentTime16 May 2010 23:05 zmieniony
       
      It is OS error: 135 Attempted to write to a read-only device

      I've compiled this source on atari800 emulator without errors.
      • 13:
         
        CommentAuthortdc
      • CommentTime17 May 2010 05:05 zmieniony
       
      w1k:

      FOR D=1 TO 300
      DO
      OD


      "D" is byte !
      and this loop is too fast in action! You must use other solution (for example ilr solution or simple plot() in loop etc.).

      D=300

      For what ?
      and how in byte ;)


      ilr:
      COLOR4=B LSH 4 ; SAME AS POKE 712,B*16 IN BASIC

      Nice but LSH in Action! is very slow :-/ like multiplication :(
      • 14: CommentAuthorw1k
      • CommentTime17 May 2010 07:05
       
      hmm, interesting, today i must learn it :)
      • 15: CommentAuthorilr
      • CommentTime17 May 2010 11:05 zmieniony
       
      TDC:
      Nice but LSH in Action! is very slow :-/ like multiplication :(


      Yea, but it looks nice. :)
      So, let's speed up this.
      BYTE X,B
      BYTE P=[0],C=[0] ; INITIALIZE P AND C WITH 0
      BYTE RTCLOCK=20,COLOR4=712 ; SET ADDRESSES OF RTCLOCK AND COLOR0


      PROC DEMO()

      GRAPHICS(9)

      FOR X=0 TO 79 DO
      COLOR=C
      PLOT(X,0) DRAWTO(X,191)
      P==+1
      IF P=5 THEN
      P=0
      C==+1
      FI
      OD

      DO ; START OF INFINITY LOOP
      FOR B=0 TO 15 DO

      ; COLOR4=B LSH 4 ; SAME AS POKE 712,B*16 IN BASIC

      ; Below this same in ML
      [$AD B ; LDA B
      $0A ; ASL
      $0A ; ASL
      $0A ; ASL
      $0A ; ASL
      $8D COLOR4] ; STA COLOR4

      RTCLOCK=0 ; SAME AS POKE 20,0
      WHILE RTCLOCK < 50 DO OD ; WAIT 1 SEC. (IN PAL SYSTEM)
      OD
      OD
      RETURN


      EDIT:
      Dzięki Kaz, palec mi się omsknął. :)
      • 16:
         
        CommentAuthorKaz
      • CommentTime17 May 2010 11:05
       
      Ilr - off topic: do cytowania kogos najlepiej uzywac znacznikow [ quote ] i [ / quote ].
      • 17: CommentAuthorw1k
      • CommentTime14 Aug 2010 12:08
       
      kupie actiona na cartu, jest?
      • 18:
         
        CommentAuthorKaz
      • CommentTime14 Aug 2010 23:08
       
      Ale chodzi Ci o oryginal? Bo takich z Artax-u to mam chyba ze dwie sztuki.
      • 19: CommentAuthorw1k
      • CommentTime29 Aug 2010 21:08
       
      ; butterfly  by michael mitchell
      ; 01/20/85
      PROC DEMO2()
      CARD A,B,C,D,X,Y,J,K,COL,I,Q
      Graphics(11)

      Poke(710,0)
      Color=00
      A=1 B=1 C=1 D=1
      X=Rand(70)+1
      Y=Rand(190)+1
      J=Rand(50)+1
      K=Rand(190)+1

      For I=1 TO 9400
      DO
      Plot(X,Y)
      Drawto(J,K)
      Plot(J,Y)
      Drawto(X,K)
      X==+A
      Y==+B
      J==+C
      K==+D

      Q=Rand(50)
      IF Q>40 THEN
      COL==+1
      FI
      IF COL>14 THEN
      COL=1
      FI

      COLOR=COL

      IF X>=79 THEN A=-A X==+A FI
      IF J>=79 THEN C=-C J==+C FI
      IF J<=0 THEN C=-C J==+C FI
      IF X<=0 THEN A=-A X==+A FI
      IF Y>=191 THEN B=-B Y==+B FI
      IF K>=191 THEN D=-D K==+D FI
      IF K<=0 THEN D=-D K==+D FI
      IF Y<=0 THEN B=-B Y==+B FI

      OD
      RETURN


      this code totaly crash effectus.. :/
      • 20:
         
        CommentAuthorjhusak
      • CommentTime7 Sep 2014 22:09 zmieniony
       
      ->link<-

      Na podstawie postu 6 i 14 mogę z całą pewnością stwierdzić, że oba obrazy kartridży Action! to obrazy wersji 3.6.

      Szalę przechyla post 14, gdzie autor własnoręcznie zrobił dump kartridża i wszystko się w nim zgadza, zarówno wersja, jak i data kompilacji jest zgodna z fragmentami źródeł Action z wątku:

      ->link<-

      cytowanymi w poście 10

      Czyli jeśli wierzyć autorowi postu 14 z pierwszego przytoczonego wątku (a czegóżby nie?), prawdopodobieństwo, że te dwa obrazy to Action 3.6 wynosi niemal (lub) 100%.

      Wszelkie inne napisy, typu (C) 1986 występujące w innych dumpach/kartridżach są zmienione przez osoby trzecie w celu najprawdopodobniej odświeżenia sprzedaży na przełomie lat 980/990 ubiegłego tysiąclecia.

      Sprawa wydaje mi się rozwiązana; osobną rzeczą jest znaleźć kartridże z wcześniejszymi wersjami Action!.

      Proponuję umieścić link:

      ->link<-

      jako oryginalną, dwuczipową, nie zmienianą wersję kartridża Action w wersji 3.6.

      Zaś do oryginalnego dumpu kartridża jednoczipowego w wersji 3.6 prowadzi pośrednio link ->link<-

      a bezpośrednio attachment:)
      • 21: CommentAuthorszary
      • CommentTime8 Nov 2015 13:11 zmieniony
       
      Odgruzuję nieco nieśmiało pytając... ;-)

      Nie wykonałby ktoś takowego carta za odpowiednią opłatą..?
      Dostępność na rynku wtórnym jest od bardzo długiego czasu "zerowa".
      Może też jacyś inni chętni by się znaleźli?
      • 22: CommentAuthorDUCATI
      • CommentTime25 Jan 2016 20:01
       
      JA TEZ MAM...

      1. CO MA ACTIONN, CZEGO BY NIE MAIL NP. GFA BASIC ?

      2. CO DAJE PROGRAMOWANIE OBIEKTOWE ? NAJLEPIEJ NA PROSTYCH PRZYKLADACH... BO ZATRZYMALEM SIE NA "PROCEDURALNYM"... :)
      • 23: CommentAuthorbob_er
      • CommentTime25 Jan 2016 21:01
       
      1. Działa na XE. Ma dobry kompilator - można przerwania w nim pisać (na 6502).
      2. Programowanie obiektowe sprawia, że program jest bardziej poukładany wewnętrznie. Łatwiej go utrzymywać. Tylko mała uwaga (bo pewnie zaraz się dyskusja zacznie) - to, że ktoś użyje słówka 'class' nie oznacza programowania obiektowego. Ja obiektowo programuję w assemblerach. Kernel linuxa jest napisany w gołym C, i sporo obiektówki (czyli dziedziczenia, wspólnych interface'ów, metod prywatnych, ...) ma.

      Przy okazji - można prosić o wyłączenie caps locka? Na sieci dużymi literami się krzyczy.
      • 24:
         
        CommentAuthortdc
      • CommentTime26 Jan 2016 02:01 zmieniony
       
      ...ja na początku lat 90. krzyczałem do pecetowego kompilatora Turbo Pascala - nie obraził się kompilował jak trzeba ;):)


      --update:
      "kompilował jak trzeba ;):)" = (wygenerowany kod wykonywał się) tak wolno jak tylko się da :P :>
      • 25:
         
        CommentAuthortdc
      • CommentTime26 Jan 2016 03:01 zmieniony
       

      DUCATI:

      1. CO MA ACTIONN, CZEGO BY NIE MAIL NP. GFA BASIC ?

      1. Action! to język jedynie dla Atari i jedynie dla 8bit.
      GFA Basic to język dla dużych Atari (w tym wypadku tylko dla dużych, więc nie dla 8bit).

      2. Podstawową różnicą jest to że Action! jest kompilatorem, a GFA Basic jest interpreterem. Dlatego Action! jest dużo szybszy, GFA BASIC również jest szybki i na tle innych języków programowania dla dużego Atari wypada bardzo dobrze, ale nie może się w żadnym wypadku równać z Action! (relatywnie oczywiście bo nawet CPU jest inne).
      Tę wadę GFA BASIC rozwiązuje kompilator zewnętrzny, ale nie sprawdzałem jak z jego wydajnością, z innych programów, które w GFA BASIC powstały - wnoszę że nie szokuje wydajnością (czyli możliwe że z Action! równać się nie może).

      3. Założenie, Action! miał być językiem do tworzenia gier i dem, GFA Basic raczej nie miał takich celów, a jeśli to nie zostały one osiągnięte w takiej mierze jak w Action! (robiłem kiedyś szkice gier w GFA BASICu i jest on ciut za wolny do gier takich jak na np. ST).

      4. Filozofię konstrukcji języka, która ponownie wiąże się z tym że jeden jest kompilatorem drugi interpreterem. W skrócie w Action! można robić fajne rzeczy jak w asemblerze (choć używając języka tak łatwego jak BASIC), Bob_er wspominał np. o przerwaniach itp. W GFA Basicu nie stawiano sobie takich celów i nie są one możliwe do zrealizowania w tak piękny sposób.

      5. W Action! mamy bardzo dużą wydajność, wiele zamysłów i konstrukcji tego języka za to odpowiada, że faktycznie działa to bardzo ładnie na tle innych języków. W GFA BASICu popełniono wiele błędów związanych z optymalizacją wykonywania kodu i są one typowe dla interpreterów. Przykładowo w pewnym momencie zauważyłem że pętla mi słabo działa, po sprawdzeniu okazało się że:
      IF A and B and C and... THEN

      przy A=false sprawdzane są kolejne warunki...
      (natomiast sam IF działał na tyle wolno, że przeszkadzało mi to)


      6. Jeśli dobrze pamiętam GFA Basic nie ma możliwości otwierania okienek i pracy nad dwoma niezależnymi źródłami (lub innymi plikami, danymi itp. np. dir dysku itp.). Action! ma taką możliwość i jest oczywiście bardzo przydatna.


      7. Dalej należałoby się zagłębiać w różne szczegóły, niuanse, konstrukcje, mechanizmy (np. przesyłania parametrów do procedur itp.) czego robić nie będę, jednak widać wyraźnie że języki te się mocno różnią, jednak w swoich klasach oba są liderami.

      8. Dodać jeszcze można, że popularność Action! u programistów była niewielka, GFA BASIC na ST bił rekordy popularności, bardzo dużo (i to czasami dobrego) softu w nim powstało co świadczy samo za siebie. Mała popularność Action! w znacznym stopniu była spowodowana tym że język ten dostępny był wyłącznie jako cartridge (kiedyś w PRLu byliśmy bardzo biedni więc koszt był zaporowy, nawet dla pirackiego carta) - miało to swoje zalety język był cały czas pod ręką, a nie trzeba też było czekać aż się wczyta (co wtedy było dość istotne).
      GFA Basic rozpowszechniał się zawrotnie w pirackich (i innych) kopiach, więc to jeszcze zwiększało jego popularność.

      DUCATI:

      2. CO DAJE PROGRAMOWANIE OBIEKTOWE ? NAJLEPIEJ NA PROSTYCH PRZYKLADACH... BO ZATRZYMALEM SIE NA "PROCEDURALNYM"... :)

      Ja bym zapytał o to czego programowanie obiektowe nie daje;)

      1. Nie daje wydajności, która jest kluczowa na komputerach 8 i 32/16 bitowych. Używanie mechanizmów obiektowych wiąże się z pewnym obciążeniem, które w przypadku komputerów 8bitowych jest zbyt dużym problemem (na szybszych platformach jest to problem najczęściej pomijany). (chodzi o obciążenie pamięci oraz CPU, a w komputerach 8bitowch mamy walkę często o każdy bajt pamięci, Bob_er mógłby tutaj przytoczyć kilka ciekawych przykładów (których nie przytoczy programista GFA BASIC - he he:P )).

      Przykład: program napisany zgodnie z metodyką obiektową opiera się o dynamikę, np. przydzielanie pamięci. W takim kodzie takie przydzielanie i zwalnianie odbywa się w bardzo dużych ilościach. Każda taka operacja to skok do systemu (który coś sobie robi - czytaj marnuje cenny czas CPU :P), powrót, a następnie kod, który sprawdza czy operacja ta się powiodła (zajmuje niepotrzebnie miejsce w pamięci). To wszystko nie może mieć miejsca w kodzie, który ma się zmieścić w 64 kb RAM. Ze względu na wydajność podobnie, skoro dla wielu asembler jest zbyt wolny to z jakiej racji jeszcze sobie zwalniać kod?? (SOS to lubi - nadużywa NOPów - widocznie jego Commodore jest zbyt szybkie :P)


      2. Dodatkowo nie daje szybkiego pisania kodu (nieznacznie)

      3. nie daje wygody dla Ciebie, gdyż dla osoby przyzwyczajonej do programowania strukturalnego przeskoczenie na obiektowe wymaga sporego wysiłku i odwrócenia sobie wielu rzeczy w głowie, które na początkowym etapie wywołują okrzyki:
      - Po co mi to??
      - no fajne, ale na nic mi się to nie przyda, kodowałem do tej pory i jakoś sobie bez tego radziłem itp.
      ;-)
      • 26:
         
        CommentAuthorpirx
      • CommentTime26 Jan 2016 12:01
       
      pfffff, programowanie obiektowe, stara historia. teraz się programuje funkcyjnie :)))))
      • 27:
         
        CommentAuthorjhusak
      • CommentTime26 Jan 2016 13:01 zmieniony
       
      @pirx, znam człowieka :D
      • 28:
         
        CommentAuthortdc
      • CommentTime28 Jan 2016 03:01
       
      @pirx - jest jakiś język funkcyjny na Atari? Ja nie znam.
      • 29: CommentAuthorWaldow
      • CommentTime28 Jan 2016 09:01
       
      Datasoft INTER-LISP/65
      ->link<-
      • 30:
         
        CommentAuthorpirx
      • CommentTime28 Jan 2016 10:01
       
      o no proszę. o dziwo jest jeszcze kilka innych programów umożliwiających przetwarzanie danych funkcyjnie ;]]]]]]