atarionline.pl Action!, MAD Pascal, C - 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: CommentAuthorilmenit
    • CommentTime16 Apr 2020
     
    @tebe - super! wrzuciłbyś dla takich struktur?
    • 2: CommentAuthortebe
    • CommentTime16 Apr 2020 zmieniony
     
    jest jakiś błąd na końcu, wyciął za dużo :eax które daje wynik mnożenia, nie widzi też tej tablicy jako nie przekraczającej strony, powinien zrezygnować z obliczania adresu 'mva (:TMP),y :bp2'

    mva #$00 I
    l_0054
    lda I
    cmp #$10
    jcs l_0062

    lda #$00
    sta :STACKORIGIN+STACKWIDTH+9
    lda I
    asl @
    rol :STACKORIGIN+STACKWIDTH+9
    add MONSTER
    sta :TMP
    lda MONSTER+1
    adc :STACKORIGIN+STACKWIDTH+9
    sta :TMP+1
    ldy #$00
    mva (:TMP),y :bp2
    iny
    mva (:TMP),y :bp2+1
    ldy #$00
    lda I
    sta (:bp2),y

    sta :STACKORIGIN+9
    lda #$00
    asl :STACKORIGIN+9
    rol @
    sta :STACKORIGIN+STACKWIDTH+9
    lda I
    asl @
    lda MONSTER
    add :STACKORIGIN+9
    sta :TMP
    lda MONSTER+1
    adc :STACKORIGIN+STACKWIDTH+9
    sta :TMP+1
    mva (:TMP),y :bp2
    iny
    mva (:TMP),y :bp2+1
    iny
    lda :eax
    sta (:bp2),y

    inc I

    jne l_0054
    l_0062


    źródło
    type
    monsters = record x,y: byte end;
    var
    monster: array [0..15] of ^monsters;
    i: byte;
    begin

    for i:=0 to High(monster) do begin

    monster[i].x := i;
    monster[i].y := i * 2;

    end;

    end.
    • 3: CommentAuthorzbyti
    • CommentTime16 Apr 2020 zmieniony
     
    Tak tylko wspomnę, że ten wątek (tytuł) zaczyna się od Action! :]

    Jakiś śmiałek wrzuci wynik kompilacji takich przykładów przez Actioin!?

    @TDC deklarował szybkość na poziomie ASM tego co pisze w Action! więc chętnie bym zobaczył co potrafi w tym temacie.

    EDIT: mógłbym napisać to w Action! ale by tak szybko latało jak w ASM to nie ;) dlatego czekam na @TDC.
    • 4: CommentAuthorilmenit
    • CommentTime16 Apr 2020
     
    @zbyti - Action!, o ile się nie mylę, nie ma złożonych typów danych, więc pewnie się porównania w tym nie zrobi.
    • 5: CommentAuthorzbyti
    • CommentTime16 Apr 2020 zmieniony
     
    @ilmenit pierwszy przykład z rom-sum zrobisz, a drugi przykład "być może" zrobisz ;)

    W Action! masz RECORD, więc kto wie? Tylko tablice muszą być typu podstawowego, więc trzeba by kombinować.

    TYPE date=[BYTE day,month CARD year]
    date term
    term.year = 1989
    term.month = 8
    term.day = 1

    Ale mi głownie chodzi o "sprawdzam" na panu @TDC ;)
    • 6: CommentAuthorilmenit
    • CommentTime16 Apr 2020
     
    a, nie wiedziałem, że są recordy :) Człowiek się czegoś wciąż uczy na tym forum :)
    • 7:
       
      CommentAuthorcrrn
    • CommentTime16 Apr 2020
     
    Hej Panowie
    Zrobiłem pierwszy filmik z Kick C
    I już widzę że to co ja (nie-koder) uznałem za optymalizacje wy pewnie wyśmiejecie ;) ale obejrzyjcie, a ja siadam do robienia kolejnego odcinka.
    do artykułu
    ->link<- do artykuły na portalu
    • 8: CommentAuthorzbyti
    • CommentTime16 Apr 2020 zmieniony
     
    @crrn życzę zapału, odcinek obejrzałem, art. przeczytałem.

    Jeżeli mogę ci coś polecić to może zakoduje sobie wcześniej odpowiedni fragment gry a później na live (niekoniecznie online) sklejaj gotowca albo zrób screencast z tego co już masz objaśniając odpowiednie fragmenty kodu całości, wtedy te 45 min spokojnie upchniesz w 15 min.

    Chyba, że Twoi widzowie tak lubią i piszą razem z Tobą, albo podczas pisania dajesz dużo wiedzy około platformowej to też może być 45 min.

    Ja wolą krótszy materiał a w trudniejszych momentach daję pauzę na zastanowienie.

    Jak pisał @laoo czas to dla facetów w kwiecie wieku ;) najcenniejsza waluta :D
    • 9:
       
      CommentAuthorcrrn
    • CommentTime16 Apr 2020
     
    @zbyti
    no to jest ten dylemat... nagrać na żywca czy przygotować a'la Adam Słodowy i powklejać. Z jednej strony mogę po prostu gadać i nie muszę za bardzo obcinać film a drugiej strony materiał jest krótszy i bardziej przystępny dla odbiorcy. Ja tam np oglądam całe streamy i zapisy u Jelcynka... po prostu leci sobie w tle a jak uwagę przykuje jakieś jego słowo to przełączam i słucham... jak kto woli. Ale dzięki ze feedback - może zastosuję ;) W zasadzie z grą jestem już dużo dalej i mam w zasadzie gotowce, - tak szybko mi się w tym pisze
    ale będę dawkował bo muszę mieć co publikować na portalu ;)
    • 10: CommentAuthorzbyti
    • CommentTime16 Apr 2020
     

    crrn:

    po prostu leci sobie w tle a jak uwagę przykuje jakieś jego słowo to przełączam i słucham...

    No to może źle podszedłem do materiału. Włączyłem z nastawieniem na jakiś instruktaż a Ty stawiasz akcent na jedną z form spędzania czasu ;)

    To ok, skoro można słuchać "jednym uchem" to niech będzie jak jest :]
    • 11: CommentAuthortebe
    • CommentTime16 Apr 2020
     
    poprawny program realizujący adresowanie tablicy struktur w MP, wymagane pośredniczenie przez dodatkową zmienną (tutaj TMP) inaczej zaadresować nie można
    type
    monsters = record x,y: byte end;
    var
    monster: array [0..15] of ^monsters;

    i: byte;

    tmp: ^monsters;
    begin

    for i:=0 to High(monster) do begin

    tmp:=monster[i];

    tmp.x := i;
    tmp.y := i * 2;

    end;


    generuje taki kod
    lda I
    cmp #$10
    jcs l_007A

    asl @
    tay
    lda adr.MONSTER,y
    sta TMP
    lda adr.MONSTER+1,y
    sta TMP+1

    mwa TMP :bp2
    ldy #TMP.X-DATAORIGIN
    lda I
    sta (:bp2),y

    lda #$00
    sta :eax+1
    lda I
    asl @
    rol :eax+1
    ldy #TMP.Y-DATAORIGIN
    sta (:bp2),y

    inc I

    jne l_006C
    l_007A
    • 12: CommentAuthorzbyti
    • CommentTime16 Apr 2020
     
    @tebe wow, połowa poprzedniego kodu! :]
    • 13:
       
      CommentAuthorcrrn
    • CommentTime17 Apr 2020 zmieniony
     
    Przykład struktury tablic w Kick C po kompilacji daje takie coś:
    Jak dla mnie jest nieźle i nawet o jedno TXA za dużo.
    Aha nie kompilowało się z #pragma'mi więc je wywaliłem, ale doczytam jak ustawić zmienne na ZP.

    set_monsters: {
    ldx #0
    __b1:
    cpx #NO_MONSTERS
    bcc __b2
    rts
    __b2:
    txa
    sta monsters,x
    txa
    asl
    sta monsters+OFFSET_STRUCT_MONSTER_Y,x
    inx
    jmp __b1
    }

    monsters: .fill SIZEOF_STRUCT_MONSTER, 0
    • 14: CommentAuthorzbyti
    • CommentTime17 Apr 2020 zmieniony
     

    crrn:

    Aha nie kompilowało się z #pragma'mi więc je wywaliłem, ale doczytam jak ustawić zmienne na ZP.

    Wróć do register.
    • 15: CommentAuthorilmenit
    • CommentTime17 Apr 2020
     
    Dobry ten kickc
    • 16:
       
      CommentAuthorcrrn
    • CommentTime19 Apr 2020
     
    niezły, niezły, ale zauważam że dość powoli kompiluje a kod nad którym pracuję nie jest jakiś super rozbudowany.
    Nie chciałbym zaśmiecać wątku, ale jak już raz wkleiłem to wkleję jeszcze raz. tym razem 2 odcinek pisania gierki a'la Jelcynek - o sprajtach. Dajcie znać jeśli się z tym za bardzo narzucam.


    ->link<-
    • 17: CommentAuthorilmenit
    • CommentTime19 Apr 2020
     
    Spoko, pisz. To narzedzie w przyszlosci i dla Atari ;-) Czas kompilacji ma rzeczywiscie dlugi.
    • 18: CommentAuthorzbyti
    • CommentTime19 Apr 2020
     
    @crrn tym razem odcinek mi się podobał! Czekam na więcej! :]
    • 19:
       
      CommentAuthorKaz
    • CommentTime19 Apr 2020
     
    Jeżeli filmiki podajecie z linkiem w formie skróconej youtu.be to na forum pojawi się tylko link. Aby był podgląd filmiku należy podawać w formacie www.youtube.com/watch?v= :

    • 20: CommentAuthorzbyti
    • CommentTime20 Apr 2020
     
    @ilmenit 2:26:41 chyba KK mógłby się czegoś od Ciebie dowiedzieć o optymalizacji CC65 - tak wnoszę po ostatnich postach w tym wątku ;)

    • 21: CommentAuthorilmenit
    • CommentTime20 Apr 2020 zmieniony
     
    Napiszę artka w wolniejszej chwili, obiecuję :)
    • 22: CommentAuthorzbyti
    • CommentTime20 Apr 2020 zmieniony
     
    @ilmenit a zdążyłeś obejrzeć materiał? ktoś zniknął ten film :[

    Video unavailable
    This video is private.
    • 23: CommentAuthorilmenit
    • CommentTime20 Apr 2020
     
    tak, rano jeszcze działał
    • 24:
       
      CommentAuthorlaoo
    • CommentTime20 Apr 2020
     
    a co tam było?
    • 25: CommentAuthorzbyti
    • CommentTime20 Apr 2020 zmieniony
     
    @astrofor pisałem do ciebie na priv w tym wątki ale nie czytasz ;P

    @Kaz lub @asrofor możecie zmienić kategorię tego wątku na związany z programowaniem i dać spację w nazwie wątku po pierwszym przecinku?

    Nie wiem dlaczego ale drażni mnie to jak @Kaza pionowy pasek ;)

    @laoo najlepiej odsłuchać jak się znów materiał pojawi.
    • 26:
       
      CommentAuthorKaz
    • CommentTime20 Apr 2020
     
    Filmik został przypadkiem włączony (jakubd?). Planowo pojawi się w środę rano.

    Tytuł poprawiłem.
    • 27:
       
      CommentAuthorKaz
    • CommentTime20 Apr 2020
     
    Dodałem opis filmiku, więc można go było teraz odpalić. Już działa.
    • 28: CommentAuthorastrofor
    • CommentTime20 Apr 2020 zmieniony
     
    @zbyti: Podaj nazwe wątku to zmienię na jaką chcesz.
    Edit: A nie nic nie zmienię bo się chyba nie da.
    • 29: CommentAuthorzbyti
    • CommentTime20 Apr 2020 zmieniony
     
    @astrofor ten wątek w którym pisałem czyli ten :D

    @Kaz już zmienił, ale jeżeli możesz to po tym jak panowie zaczęli wrzucać kod wynikowy etc. to zmienił bym kategorię z "Utils" na "Programowanie" ;)

    Edytujesz pierwszy post wątku.
    • 30: CommentAuthorastrofor
    • CommentTime20 Apr 2020
     
    No tak. Ale bieorąc pod uwagę że nie rozumiem 85% kodu publikowanego na aolu, to nie ośmieliłem się wrzucać nowego wątku do kategorii programowanie. ;)
    • 31: CommentAuthorzbyti
    • CommentTime22 Apr 2020 zmieniony
     
    Action!
    BYTE RTCLOCK=$14

    PROC WAIT(BYTE FRAMES)
    FRAMES==+RTCLOCK
    WHILE FRAMES<>RTCLOCK DO OD
    RETURN

    Wygenerowany ASM dla procedury wygląda tak:
    20CE: EA        NOP
    20CF: 4C D2 20 JMP $20D2
    20D2: 8D CE 20 STA $20CE
    20D5: 18 CLC
    20D6: AD CE 20 LDA $20CE
    20D9: 65 14 ADC $14 ;RTCLOK+2
    20DB: 8D CE 20 STA $20CE
    20DE: AD CE 20 LDA $20CE
    20E1: 45 14 EOR $14 ;RTCLOK+2
    20E3: D0 03 BNE $20E8
    20E5: 4C EB 20 JMP $20EB
    20E8: 4C DE 20 JMP $20DE
    20EB: 60 RTS

    oczywiście STA $20CE wrzuca wartość ustawioną przez BYTE FRAMES.

    Jak wspominał @jhusak najlepsze procedury w Action! są takie które przyjmują tyle parametrów by można było ich wartości obsłużyć jednorazowo za pomocą rejestrów A,X,Y.

    Zaczynam się przekonywać do tego Action! ;) chociaż nie rozumiem po co jest ten JMP $20D2.

    Zobaczę jak podobną procedurę przerobi Mad Pascal :]
    • 32: CommentAuthorzbyti
    • CommentTime22 Apr 2020 zmieniony
     
    Mad Pascal
    program test;
    uses crt;

    var rtClock: byte absolute 20;

    procedure Wait(frames: byte);
    begin
    Inc(frames,rtClock);
    while frames <> rtClock do;
    end;

    begin
    Wait(10);
    ReadKey;
    end.

    Wywołanie procedury i procedura w ASM wygląda tak:

    206C: E8        INX
    206D: A9 0A LDA #$0A
    206F: 95 9A STA $9A,X ;MVFA+1
    2071: 20 55 20 JSR $2055

    2055: B5 9A LDA $9A,X ;MVFA+1
    2057: 8D 99 20 STA $2099
    205A: CA DEX
    205B: AD 99 20 LDA $2099
    205E: 18 CLC
    205F: 65 14 ADC $14 ;RTCLOK+2
    2061: 8D 99 20 STA $2099
    2064: AD 99 20 LDA $2099
    2067: C5 14 CMP $14 ;RTCLOK+2
    2069: D0 F9 BNE $2064
    206B: 60 RTS

    Mad Pascal wygenerował "ładniejszy" kod procedury. Okiem laika ten kod musi być też szybszy bo ma mniej skoków.

    EDIT: po uważnym przyjrzeniu się to niezły z tego Action! bałaganiarz, nawet przy tak niewielkim kodzie ;)
    • 33:
       
      CommentAuthorKaz
    • CommentTime22 Apr 2020
     
    Można też napisać translator programów w Action! na MP :)
    • 34: CommentAuthorzbyti
    • CommentTime22 Apr 2020 zmieniony
     
    Raczej optymalizator skompilowanego kodu Action! w MP ;)

    Bo translacja Action! na Mad Pascal to Effectus ;)

    EDIT: tak nawiasem chyba powyższy "test porównawczy" winku kompilacji MP i Action! poniekąd wyjaśnia, różnicę osiągów w benchmarku Yosh Plus. Action! ma dwa JMP które można by opuścić.
    • 35: CommentAuthorzbyti
    • CommentTime23 Apr 2020 zmieniony
     
    Wczoraj na KWAS-ie @jakubd przypuszczał, że Action! wykonuje BNE do JMP ze względu na to, że kompilator może być przygotowany tylko na wariant dwu-bajtowego iteratora/warunku pętli.

    Mad Pascal uwzględnia przypadek posługiwania się BYTE i generuje lepszy kod.

    Sprawdziłem jaki kod wynikowy Action! wygeneruje gdy w użyciu będzie CARD.

    Action! CWAIT.ACT
    SET $E=$2000
    SET $491=$2000

    BYTE RTC2=$14,RTC1=$13

    CARD FUNC GET_TIME()
    CARD TIME
    TIME=RTC1*256+RTC2
    RETURN(TIME)

    PROC WAIT(CARD FRAMES)
    FRAMES==+GET_TIME()
    WHILE FRAMES<>GET_TIME() DO OD
    RETURN

    PROC MAIN()
    WAIT(1000)
    RETURN

    2000: 00        BRK
    2001: 00 BRK
    2002: 4C 05 20 JMP $2005 ;GET_TIME
    2005: A9 01 LDA #$01
    2007: 85 85 STA $85 ;VNTD+1
    2009: A9 00 LDA #$00
    200B: 85 84 STA $84 ;VNTD
    200D: A5 13 LDA $13 ;RTCLOK+1
    200F: A2 00 LDX #$00
    2011: 20 37 9D JSR $9D37
    2014: 85 AE STA $AE ;LELNUM+1
    2016: 8A TXA
    2017: 85 AF STA $AF ;STENUM
    2019: 18 CLC
    201A: A5 AE LDA $AE ;LELNUM+1
    201C: 65 14 ADC $14 ;RTCLOK+2
    201E: 8D 00 20 STA $2000
    2021: A5 AF LDA $AF ;STENUM
    2023: 69 00 ADC #$00
    2025: 8D 01 20 STA $2001
    2028: AD 01 20 LDA $2001
    202B: 85 A1 STA $A1 ;TSLNUM+1
    202D: AD 00 20 LDA $2000
    2030: 85 A0 STA $A0 ;TSLNUM
    2032: 60 RTS
    2033: 00 BRK
    2034: 00 BRK
    2035: 4C 38 20 JMP $2038 ;WAIT
    2038: 8E 34 20 STX $2034
    203B: 8D 33 20 STA $2033
    203E: 20 02 20 JSR $2002
    2041: 18 CLC
    2042: AD 33 20 LDA $2033
    2045: 65 A0 ADC $A0 ;TSLNUM
    2047: 8D 33 20 STA $2033
    204A: AD 34 20 LDA $2034
    204D: 65 A1 ADC $A1 ;TSLNUM+1
    204F: 8D 34 20 STA $2034
    2052: 20 02 20 JSR $2002
    2055: AD 33 20 LDA $2033
    2058: 45 A0 EOR $A0 ;TSLNUM
    205A: D0 05 BNE $2061
    205C: 0D 34 20 ORA $2034
    205F: 45 A1 EOR $A1 ;TSLNUM+1
    2061: D0 03 BNE $2066
    2063: 4C 69 20 JMP $2069
    2066: 4C 52 20 JMP $2052
    2069: 60 RTS
    206A: 4C 6D 20 JMP $206D ;MAIN
    206D: A2 03 LDX #$03
    206F: A9 E8 LDA #$E8
    2071: 20 35 20 JSR $2035
    2074: 60 RTS
    2075: 60 RTS
    • 36: CommentAuthorzbyti
    • CommentTime23 Apr 2020 zmieniony
     
    Nie mogę znaleźć na AOL wątku dedykowanego Effectus-owi to wklejam tutaj, pojawiła się nowa wersja 0.4 Demo R4 ->link<-

    Co ciekawe czytam, że gałąź 0.4 to:

    Gury:

    This is new version of Effectus, done from scratch. It is very different from previous versions, because I took new approach to generate code. It is kind of a new branch of Effectus. Currently only Windows platform is supported, but other platforms will be supported later.

    (...)

    The steps are as follows:
    - Action! code is parsed and appropriate Mad Pascal source code listing is generated
    - Mad Pascal compiles this code to *.a65 file prepared for compilation by Mad Assembler
    - Mad Assembler compiles *.a65 file to final binary code (*.obx)
    • 37: CommentAuthortebe
    • CommentTime23 Apr 2020
     
    :) ciekawe podejście, Action! -> Pascal -> ASM -> XEX
    • 38: CommentAuthorzbyti
    • CommentTime23 Apr 2020
     
    @tebe jedyne logiczne jeżeli chce się skorzystać z ogromu Twojej doskonałej pracy jaką włożyłeś w kompilator MP :]

    Ciekawe jestem jak to wyjdzie Guremu ale muszę poczekać na wersją dla Linuxa.

    Wersja 3.x była ciut szybsza od Action! w tym co udało mi się tam przetestować, ale wciąż pisanie od razu w Mad Pascalu dawało wyraźną przewagę.
    • 39: CommentAuthorilmenit
    • CommentTime26 Apr 2020
     
    Znany z Amigi kompilator vbcc (zgodny ze standardem C99), dostał generację kodu dla 6502:
    ->link<-
    Aktualnie runtime jest podstawowy i dla C64.
    • 40:
       
      CommentAuthorxorcerer
    • CommentTime28 Apr 2020 zmieniony
     
    Bardzo ciekawy ten wątek z Effectusem/Action - jak oglądam przykładowe źródła to mi to mocno przypomina antyczną makro-nakładkę na C pod tytułem "Clipper", projekt który umarł w konsekwencji śmierci Borlanda / Borland C / Delphi.

    Kodu w Clipperze ludzie natrzaskali tyle i jest w użyciu w tylu krytycznych miejscach, że Clipper wskrzeszono pod postacią Harbour. Równolegle ktoś wpadł na to, że skoro coś community ponownie wskrzesiło (bo Clipper to była głównie inicjatywa community zanim ktoś to opakował i sprzedał) to może da się to jeszcze raz opakować i sprzedać. Więc jest i wersja komercyjna.

    Konwencje składni Action jako żywo przypominają mi Clippera, ale może to moje skrzywienie.

    Wiem, że to offtopik ale może twórca Effectusa pokusi się o pójście dalej niż oryginalny Action w zestawie komend/podstawowych procedur? Sugestia wynika stąd, że Atari zawsze szczyciło się tym, że było to trochę więcej niż tylko maszynka do gier.
    • 41:
       
      CommentAuthorcrrn
    • CommentTime29 Apr 2020
     
    @ilmenit
    Oooo fajny news z tym vbcc. Używałem go podczas pisania demka na Amigę.
    Zerknę dzisiaj wieczorem.
    Dzięki
    • 42: CommentAuthorilmenit
    • CommentTime29 Apr 2020
     
    daj potem znać czy generuje sensowny kod i ewentualnie jak się ma do CC65.
    • 43: CommentAuthorastrofor
    • CommentTime29 Apr 2020 zmieniony
     
    Nie wiem po co generować kod mad pascala z Action!, Składnia Action! jest o wiele mniej czytelna, jedyne co mi przychodzi do głowy to konwersja starych gier. Przerabianie kodu c na pascala,brzmi sensowniej, choć z tego co widziałem to pascal pod atari ma więcej rzeczy wysoko - poziomowych - obiekty itd, ale takie konwertery są chyba w świecie poza-atarowskim, parę widziałem na githubie, ale nie mam pojęcia jaka jest jakość działania.
    Edit: Czy ktoś - (@Zbyti ;) ) mógłby wskazać jakąś zalete Action! - składnia, jakieś inne rozwiązania, której nie posiada mad pascal ? Mi przychodzi do głowy ten monitor Action! w którym pokazujemy na szybko zawartość wybranych komórek pamięci, ale to raczej zaleta tego że to jest wbudowane w atari natywnie.
    • 44: CommentAuthorxxl
    • CommentTime29 Apr 2020
     
    ja nie umiem wskazac zalet Action! w porownaniu z tymi dwoma kompilatorami, moim zdaniem jesli ktos odnajduje przyjemnosc w byciu retroprogramista, chce rozpoczac zabawe na atari i decyduje sie na ten jezyk to albo przez pomylke (brak doswiadczenia) albo jest nekro-retroproramista co w sumie nie jest niczym zlym ;)

    porownywanie Action do tych dwoch kompilatorow powoduje tylko zamieszanie i wprowadza ludzi w blad ze to sa w miare rownorzedne narzedzia.

    nie ma porownania
    • 45: CommentAuthorzbyti
    • CommentTime29 Apr 2020 zmieniony
     
    @astrofor przypominam Ci, że to TY założyłeś ten wątek o takiej nazwie :P Miej pretensje do siebie.

    A co do reszty to porównania są dlatego, że guru-voodo @tdc od wielu lat głosi zalety Action!.

    Jakbyście się wczoraj urodzili tak gadacie ;)
    • 46: CommentAuthorastrofor
    • CommentTime29 Apr 2020 zmieniony
     
    To znaczy liczyłem na jakiś fajny syntaxowy cukierek np: ['a','b'].forEach(v)=>[...arr,v] którego nie ma w mad pascalu. To są chyba pierwsze warsztaty na atari mówiące o display listach, spritach itd, w dodatku z prowadzącym o dużej cierpliwości, zacięciu, wiedzy i kulturze osobistej. a w Action! się po prostu piszę... Pewnie jakby ten kod byłby większy, to byłby problem.

    ps: Bocianu na kwasie obiecał że zrobi warsztaty z mad pascala. Pamiętamy!
    • 47: CommentAuthorzbyti
    • CommentTime29 Apr 2020 zmieniony
     
    Pamiętamy! :]

    A co to wyboru języka...

    Programowanie w ML na A8 to dla mnie coraz bardziej oczywisty wybór. Zaczynam się skłaniać ku K65 coraz bardziej. Jak tylko zakończę poznawanie A8 za pomocą Action! i naukę ML za pomocą Action! (przepiszą parę programików z KIM-1) to ostatecznie idę w jakiś ASM.

    Action! można polecić do nauki Atari bo samego języka można się szybko nauczyć i zacząć eksperymentować.

    EDIT: jako "drugi" a może czasem "pierwszy" język chcę mieć Effectusa :]
    • 48: CommentAuthorxxl
    • CommentTime29 Apr 2020
     
    to sa jakies tajne albo platne komplety? czy moze sa gdzies dostepne na video?
    • 49: CommentAuthorzbyti
    • CommentTime29 Apr 2020 zmieniony
     
    @xxl codziennie możesz wyjeść na live. Czy będzie dostępny zapis to jeszcze @tdc nie zadecydował.
    • 50:
       
      CommentAuthorxorcerer
    • CommentTime29 Apr 2020 zmieniony
     
    Świetny do początków w asmie na a8 wydaje mi się MAC/65 w wersji kartrydżowej chyba v 1.cośtam, bo ma zintegrowany debugger i całość pakietu jest reseto-odporna. Świetny dlatego - że bardzo przypomina w obsłudze Basic. Czyli jak chcesz zobaczyć tęczę albo inne efekty na przerwaniach Display List / Vertical Blank, które mieszczą się w kilkudziesięciu, może dwustu (chyba max sensowny) linijkach, to akurat.

    Potem to już zdecydowanie lepiej korzystać z jakiegoś porządnego kombo właśnie w stylu MADS/WUDSN(czyli eclipse z wtyczką ->link<- )/(Altirra jak dla mnie najlepszy emulator z debuggerem wbudowanym do testowania).

    Czy K65 to skrót od KickAssembler? Kickasm jest konfigurowalny i integrowalny do WUDSN.

    aaa.. nie, już widzę K65 -> ->link<- <- nie znam, ciekawe obejrzę to.

    PS. rozumiem, że z tym wyborem K65 chodzi o super prostotę narzędzia, która nie poraża ilością opcji, możliwości i wodotrysków?