atarionline.pl Rzeczy które chciałbyś w MADSie ale boisz się poprosić :) - 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: CommentAuthortebe
      • CommentTime3 Jun 2023 21:06
       
      poprawione ->link<-

      dta 'text'^*,"text"*^
      • 2: CommentAuthormono
      • CommentTime4 Jun 2023 11:06
       
      Dzięki, działa pięknie.
      • 3: CommentAuthorVagant
      • CommentTime7 Jun 2023 23:06 zmieniony
       
      Witam i mam pytanie. Dopiero zaczynam zabawę z MADS i przesiadam się z kickassemblera z c64. Występują tam wygodne dyrektywy .fill a zwłaszcza .lohifill opisane tutaj ->link<-
      Czy jest jakiś odpowiednik w MADS?
      • 4: CommentAuthormono
      • CommentTime8 Jun 2023 00:06 zmieniony
       
      W mads masz:
      - iterator :n ->link<-
      - dyrektywę .rept ->link<-
      Do .lohifill musisz używać osobnych konstrukcji typu:
      lo:
      :$100 .byte <[40*#]
      hi:
      :$100 .byte >[40*#]

      albo też .reptów.
      Nie wiem czy jest w dokumentacji, ale dzięki temu że do .repta przekazuje się też parametry, to można .repty zagnieżdżać np.
      .rept 2
      .rept 3,#
      .byte #,:1
      .endr
      .endr
      • 5:
         
        CommentAuthorpirx
      • CommentTime8 Jun 2023 00:06 zmieniony
       
      hej,

      .fill może być zastąpiona skrótem

      :N

      nie potrzeba oddzielnych wersji dla word itp.

      np.

      :4 .byte 0

      (cztery zera)

      :4 .word 0

      (osiem zer)

      .fillword 5,i*$80

      to będzie

      :5 .word #*$80


      ->link<-

      Jeśli chodzi o .lohifill, to ni ma, a w sumie to by się przydało. Można emulnąć makrem. Może nawet zrobię, by nam się kod o 1000 linii skrócił :]

      >>> hehe za wolno klikalem, mono jak zawsze wygrywa :)
      • 6: CommentAuthormono
      • CommentTime8 Jun 2023 00:06
       
      Wszystko to wina smarkzabawek - ja piszę na prawdziwym komputrze :)

      sin i cos też jest w madsie, ale ja nie umiem używać i generuję sobie sam tablice pythongiem ale zawsze mam projekt z makefilem.
      • 7: CommentAuthortebe
      • CommentTime8 Jun 2023 08:06
       
      bez przesady z tym skracaniem kodu, bo przestaje być to czytelne

      już .lohifill może być mylące, czy chodzi o lo(x), hi(x), lo(x)...
      czy lo(x), lo(x)..... hi(x), hi(x)....

      w xasm skracanie rejestrów przez ^ też wg mnie jest za daleko posuniętym skracaniem kodu

      jeśli czytanie kodu wymaga zatrzymania się i zastanawiania tzn. że jest nieczytelny
      • 8: CommentAuthorVagant
      • CommentTime8 Jun 2023 10:06
       
      Dzięki!
      • 9:
         
        CommentAuthormiker
      • CommentTime8 Jun 2023 11:06
       
      Taka prośba od Świętego, może da radę:
      "Szukam czegoś - może mads ma takie coś (...) które jest w stanie zrobić listę zmiennych używanych przez daną procedurę od np etykiety, sprawdzając wszystkie podskoki typu jsr, rozgałęzienia itp".
      • 10: CommentAuthormono
      • CommentTime8 Jun 2023 12:06
       
      @tebe: Podpisuję się pod tym obydwoma ręcami.
      • 11: CommentAuthortebe
      • CommentTime8 Jun 2023 12:06
       
      jeśli mają jakąś systematyczną nazwę, np. skp0, skp1, skp2 ...

      to .ifdef je wyłuska

      .rept 100,#
      .ifdef skp:1
      .print skp:1
      .endif
      .endr
      • 12:
         
        CommentAuthormiker
      • CommentTime8 Jun 2023 16:06
       
      A co jeżeli nie mają?
      • 13:
         
        CommentAuthorpirx
      • CommentTime8 Jun 2023 16:06
       
      @tebe
      bez przesady z tym skracaniem kodu, bo przestaje być to czytelne


      Zgoda, w dodatku ni ma etykiety lo i hi i potem trzeba się odwoływać do jakiegoś "etykieta+(etykieta_end-etykieta)/2"
      i się trzeba zastanowić, czy dać +1, czy nie ;)
      • 14: CommentAuthortebe
      • CommentTime8 Jun 2023 17:06
       
      miker: można przełącznikiem -t podejrzeć wszystkie etykiety

      -t[:filename] Generate ".lab" labels file
      • 15:
         
        CommentAuthorpirx
      • CommentTime15 Feb 2024 00:02
       
      Hej tebe. Akurat przetarłem oponkę w kurwecie 150 mil od domu, lewarek padł i czekam na pomoc drogową, więc mam chwilę, żeby zapytać o ficzur, który by mi się przydał.
      Czy byłoby możliwe zrobienie wypustu z madsa, który byłby czystym asemblerem? Już tłumaczę, o co mi chodzi. Mam skomplikowany projekt w madsie. Taki kod jest trudny do maszynowej analizy.
      Szukam buga bisekcją komitów, podejrzewam problem z asemblacją. Oglądanie źródła nic nie daje. Więc zaczynam analizować binarki starą i nową. Coś widzę, ale przełożenie tego na źródło niezbyt łatwe. Więc odpalam disassembler i anizuję własny disasemblat jakimś vimdiffem. Sukces.
      Byłoby wiele godzin szybciej, jakbym mógł wypuścić z madsa jeden plik, coś jak .lst, ale bez pominięć i skrótów. Oczywiście to by się dało zrobić w miarę łatwo, jakbyś miał taką formę pośrednią gdzieś po drodze.
      Inny pryklad - chcialbym automagicznie przetlomaczyc źródło na inny procek czy coś. Czysty kod, coś jak atari assembler/edytor to w miarę proste zadanie. Żywy mads znacznie trudniejszy, bo by trzeba było wszystkie konstrukcje języka przetwarzać.

      W skrócie - wpust z madsa wyglądający jak z dissassemblera, tylko z dobrymi labelkami, itp. Czy możliwy?

      Pomóc drogowa właśnie odwołała pryjazd, niestety gafam tylko z robotami. Szykuje się długa noc...
      • 16:
         
        CommentAuthorjhusak
      • CommentTime15 Feb 2024 14:02 zmieniony
       
      @Pirx, trzymamy kciuki! A z robotami jest taki myk, że powtarzasz w kółko "proszę z konsultantem". I robot Cię w końcu przełączy.

      A taki ficzer z raw asemblerem byłby gites.

      Chociaż nie jest to łatwe, duużo poprawek potrzeba i sporo testów.
      • 17: CommentAuthorCuzz
      • CommentTime16 Mar 2024 13:03 zmieniony
       
      ja się boje madsa włączać , brakuje mi książek na komendy, chyba kaz ma na stronie jakąś książke, czasami czułem się jakbym walił się w ściane. Dopiero jak zainstalowałem bios incorporated w moich laptopach, wszystko zaczęło chodzić, przesiadłem sie na linuksa, zrobiłem sieć z komputerów i mi wszystko działa. Nie wiem czy mads teraz działa, jak napisałem pierwszą grę to troche się boje tego madsa, on ma chyba jakiś translator.
      • 18:
         
        CommentAuthorMaW
      • CommentTime17 Mar 2024 22:03
       
      Cuzz, a tu: ->link<- byłeś?
      • 19:
         
        CommentAuthorPecus
      • CommentTime18 Mar 2024 11:03 zmieniony
       
      @Pirx @jhusak
      A czy nie uważacie że wystarczyłby (no powiedzmy, że lekko obrobiony, żeby lepiej wyglądał) plik taki jak obecnie generowany .lst ale z nazwami etykiet podmienionymi na te z pliku .lab ?

      O.K. Nie pomyślałem o rozwinięciu pseudorozkazów :) bo już makra są ładnie w pliku .lst porozwijane.
      • 20:
         
        CommentAuthorpirx
      • CommentTime18 Mar 2024 14:03
       
      tak, dykłydnie tAKIEgo pełnego .lst bym chciał, nawet nie musi być specjalnie ładny, tylko żeby tam wszystko było rozwiniętę do poszczególnych rozkazów 65o2
      • 21:
         
        CommentAuthorPecus
      • CommentTime18 Mar 2024 14:03
       
      No to to nie powinno być szczególnie trudne/kłopotliwe do dodania - tak myślę, ale nie znam się :)

      Rozwinięcia pseudorozkazów i rozszerzone etykiety (takie jak w pliku .lab).
      • 22:
         
        CommentAuthorjhusak
      • CommentTime18 Mar 2024 22:03
       
      Niestety, dodać to w kodzie to mocne rzeźbienie, ale myślę, że tebe da radę, jak go będziemy prosić.

      Więc tebe prosimy!
      • 23: CommentAuthortebe
      • CommentTime19 Mar 2024 13:03
       
      Mono poprawiał już Mads-a kilkakrotnie
      • 24:
         
        CommentAuthorPecus
      • CommentTime2 May 2024 23:05 zmieniony
       
      Przeczytałem dziś dokładnie (tak myślę) cały manual do MADSa i nie znalazłem instrukcji umożliwiającej sprawdzenie jakiego typu jest parametr przekazywany do makra.
      Chciałbym by makro mogło przyjąć jako jeden z parametrów string lub bajt/słowo i w zależności od tego jakiego typu jest ten parametr kompilowało się na różne sposoby.....
      No i jak już mamy ten string, to dobrze byłoby móc sprawdzić jego długość (choć to mogę inaczej załatwić).

      Może jest coś co umożliwia takie sprawdzenie, ale w instrukcji nie znalazłem.

      Ogólnie to widzę, że MAC65 ma chyba jednak większe możliwości konstruowania makr niż MADS :)
      Próbuję przerzucić bibliotekę CIO (IOMAC.M65) na MADSa i cóż... będzie musiała być prymitywniejsza... bez takich udogodnień jak w MAC65.
      Przykładowo w MAC65 możemy np. wywołać macro OPEN tak:
      OPEN 1,4,0,"D:PLIK"
      albo
      OPEN 1,4,0,adres_nazwy

      i jedno i drugie zadziała.
      Pierwsza wersja "wkompluje" po prostu dodatkowe BYTE "D:PLIK",0 , wyznaczy jego adres, zapisze ten adres do odpowiednich komórek i ominie tekst skokiem.

      W zasadzie to całą obsługę I/O przez CIO można wtedy programować jak w BASICu, a kompilator, dzięki takim możliwościom w programowaniu makr, skompiluje to zawsze w najbardziej optymalny sposób.

      Chciałbym mieć takie możliwości w MADSie :)

      Aaaaa, możliwość sprawdzenia typu, o której wspomniałem na początku, pomoże tylko w "obejściu" tego we w miarę kulturalny sposób, bo MAC65 robi to i tak inaczej :)
      • 25:
         
        CommentAuthorpirx
      • CommentTime3 May 2024 05:05 zmieniony
       
      próbowałem i poległem
      w starym chip-8 miałem wszystko na mac65owych makrach
      ->link<- .
      próbowałem użyć tych makr i/o z paczki madsa, potem przenieść macowe do madsa, ale w końcu naklepałem openy i klosy z palca :(

      Może by się wszystko dało zrobić madsowymi makrami, ale by trzeba te istniejące doprowadzić to takiego stanu, w jakim były te z Mac/65 - cut miut malyna od profeszonal deweloper, a nie moja patodeweloperka :))))

      oczywiście nie dałoby się idealnie 1-1, bo brak takiej obsługi parametrów, jak w Mac65, ale możnaby zrobić kilka makr, np. opens do stringa i openw do adresu czy coś.