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
     
    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
     
    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
     
    Please describe Your system configuration (screens, photos etc).
    • 4: CommentAuthorw1k
    • CommentTime12 May 2010
     
    what do you mean screens, photos?:)
    • 5: CommentAuthorw1k
    • CommentTime12 May 2010
     
    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
     
    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 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
     
    thanks, i solved it.. :)
    how would I do this in Action! ?


    • 9: CommentAuthorw1k
    • CommentTime16 May 2010 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 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
     
    ERROR 135..
    • 12: CommentAuthorilr
    • CommentTime16 May 2010 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 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
     
    hmm, interesting, today i must learn it :)
    • 15: CommentAuthorilr
    • CommentTime17 May 2010 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
     
    Ilr - off topic: do cytowania kogos najlepiej uzywac znacznikow [ quote ] i [ / quote ].
    • 17: CommentAuthorw1k
    • CommentTime14 Aug 2010
     
    kupie actiona na cartu, jest?
    • 18:
       
      CommentAuthorKaz
    • CommentTime14 Aug 2010
     
    Ale chodzi Ci o oryginal? Bo takich z Artax-u to mam chyba ze dwie sztuki.
    • 19: CommentAuthorw1k
    • CommentTime29 Aug 2010
     
    ; 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 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 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
     
    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
     
    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 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 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
     
    pfffff, programowanie obiektowe, stara historia. teraz się programuje funkcyjnie :)))))
    • 27:
       
      CommentAuthorjhusak
    • CommentTime26 Jan 2016 zmieniony
     
    @pirx, znam człowieka :D
    • 28:
       
      CommentAuthortdc
    • CommentTime28 Jan 2016
     
    @pirx - jest jakiś język funkcyjny na Atari? Ja nie znam.
    • 29: CommentAuthorWaldow
    • CommentTime28 Jan 2016
     
    Datasoft INTER-LISP/65
    ->link<-
    • 30:
       
      CommentAuthorpirx
    • CommentTime28 Jan 2016
     
    o no proszę. o dziwo jest jeszcze kilka innych programów umożliwiających przetwarzanie danych funkcyjnie ;]]]]]]