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 15:04
       
      @tebe - super! wrzuciłbyś dla takich struktur?
      • 2: CommentAuthortebe
      • CommentTime16 Apr 2020 15:04 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 15:04 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 15:04
       
      @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 15:04 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 16:04
       
      a, nie wiedziałem, że są recordy :) Człowiek się czegoś wciąż uczy na tym forum :)
      • 7:
         
        CommentAuthorcrrn
      • CommentTime16 Apr 2020 18:04
       
      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 18:04 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 19:04
       
      @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 20:04
       

      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 23:04
       
      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 23:04
       
      @tebe wow, połowa poprzedniego kodu! :]
      • 13:
         
        CommentAuthorcrrn
      • CommentTime17 Apr 2020 18:04 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 19:04 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 21:04
       
      Dobry ten kickc
      • 16:
         
        CommentAuthorcrrn
      • CommentTime19 Apr 2020 13:04
       
      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.


      • 17: CommentAuthorilmenit
      • CommentTime19 Apr 2020 14:04
       
      Spoko, pisz. To narzedzie w przyszlosci i dla Atari ;-) Czas kompilacji ma rzeczywiscie dlugi.
      • 18: CommentAuthorzbyti
      • CommentTime19 Apr 2020 14:04
       
      @crrn tym razem odcinek mi się podobał! Czekam na więcej! :]
      • 19:
         
        CommentAuthorKaz
      • CommentTime19 Apr 2020 18:04
       
      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 01:04
       
      @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 06:04 zmieniony
       
      Napiszę artka w wolniejszej chwili, obiecuję :)
      • 22: CommentAuthorzbyti
      • CommentTime20 Apr 2020 07:04 zmieniony
       
      @ilmenit a zdążyłeś obejrzeć materiał? ktoś zniknął ten film :[

      Video unavailable
      This video is private.
      • 23: CommentAuthorilmenit
      • CommentTime20 Apr 2020 07:04
       
      tak, rano jeszcze działał
      • 24:
         
        CommentAuthorlaoo
      • CommentTime20 Apr 2020 08:04
       
      a co tam było?
      • 25: CommentAuthorzbyti
      • CommentTime20 Apr 2020 08:04 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 09:04
       
      Filmik został przypadkiem włączony (jakubd?). Planowo pojawi się w środę rano.

      Tytuł poprawiłem.
      • 27:
         
        CommentAuthorKaz
      • CommentTime20 Apr 2020 10:04
       
      Dodałem opis filmiku, więc można go było teraz odpalić. Już działa.
      • 28: CommentAuthorastrofor
      • CommentTime20 Apr 2020 11:04 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 11:04 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 12:04
       
      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 12:04 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 13:04 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 15:04
       
      Można też napisać translator programów w Action! na MP :)
      • 34: CommentAuthorzbyti
      • CommentTime22 Apr 2020 15:04 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 09:04 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 15:04 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 19:04
       
      :) ciekawe podejście, Action! -> Pascal -> ASM -> XEX
      • 38: CommentAuthorzbyti
      • CommentTime23 Apr 2020 19:04
       
      @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 19:04
       
      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 19:04 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 13:04
       
      @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 13:04
       
      daj potem znać czy generuje sensowny kod i ewentualnie jak się ma do CC65.
      • 43: CommentAuthorastrofor
      • CommentTime29 Apr 2020 14:04 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 15:04
       
      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 15:04 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 15:04 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 16:04 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 16:04
       
      to sa jakies tajne albo platne komplety? czy moze sa gdzies dostepne na video?
      • 49: CommentAuthorzbyti
      • CommentTime29 Apr 2020 16:04 zmieniony
       
      @xxl codziennie możesz wyjeść na live. Czy będzie dostępny zapis to jeszcze @tdc nie zadecydował.
      • 50:
         
        CommentAuthorxorcerer
      • CommentTime29 Apr 2020 18:04 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?