Oznámení

Sbalit
Aktuálně žádná oznámení.

Assembler - všeobecná logika

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

    Autorem citovaného textu je Defor Přejít na původní příspěvek
    K dispozici je celkem nedávný systém od Leonarda - LDOS. https://github.com/arnaud-carre/ldos
    Systém je hlavně udělán k tomu, aby načítal separátní exáče (opět bez přispění OS), rozbalil je, naalokoval paměť (udělal relokaci) a spustil. Ale myslím, že v něm je možnost i načítat datové soubory (víc https://github.com/arnaud-carre/ldos...dos/kernel.inc). Ale myslím, že neumí používat žádný stávající file-system, takže image diskety se musí nejdřív vytvořit v nějakém jeho toolu.
    LDOS - pouze mé postřehy

    Postupne se prokousavam tim LDOSem. Vypada to zatim dobre, jen si to je treba osahat. Jo, vyslednim ADF nebude klasicky amiga format, tedy to z diskety pujde spustit, ale jinak se nebude dat nacist tak, aby jsme viděli na ni klasicke soubory. LDOS by mel mit minimalni naroky 512 KB CHIP RAM + 512 nejake dalsi RAM. Ja se zatim zameruji na disketu, ale mel by mit i zavadec na HDD. LDOS obsahuje i hudebni prehravac. Je reprezentovany jako nejrychlejsi hudebni prehravac na Amize co by mohlo byt, ale neco za neco. Neprehrava klasicke MODy. Hudebni MOD si LDOS prevede do nejakeho sveho specifickeho formatu, Pri spravnem nastaveni by se tohle melo udelat automaticky, ten prevod pri vytvareni ADF / HDD verze. Ja tohle obejdu a dnes se mi povedlo udelat format LDOSu BIN. Jsou v nem binarni data, se kterym vas zdrojovy kod v assembleru pracuje. Ja si jako tyhle data urcil samotny MOD. Kazda skladba bude jeden BIN, tim docilim toho ze se budou MODy nacitavat do pameti postupne, Jako BIN muzete mit i jina data se kterymi potrebuje pracovat. Na to aby jste BIN mohli vytvorit potrebujete mit v adresari krome zdrojoveho kodu a MODu taky soubory LDOSu "M" a "VC". V souboru M si pomoci editace urcite cestu a nazev zdrojoveho kodu v ASM a nazev samotneho BIN, ktery se vam jeste jen vytvori. Ja mam ve zdrojovem kodu pouze INCBIN na konkretni MOD. Kazdy zdrojovy kod musi jeste nelepe někde na zacatku obsahovat i direktivu INCLUDE "kernel.inc". To je soubor LDOSu. Pokud je vse OK a spustite soubor M, LDOS vam vytvori soubor BIN. Ten si pak jiz nactete ve zdrojovem kodu. Tedy priprava ADFka by se dle vseho mela delat na dvakrat. Pripravite si BINy, ktere uvedete ve zdrojovem kodu a pak samotne vytvoreni ADFka. Dle vseho az tim krokem, jak se bude vytvaret ADF / HDD by se mela ucinit i samotna komprimace, kterou LDOS podporuje a tedy na disketu date vice dat. LDOS je dle vseho dost komplexni system, jde tam hodne veci nastavovat. Lze napriklad nastavit, aby se po nacitani dat a spusteni programu zacali nacitat hned dalsi data ktere jsou potreba. Tohle se muze a nemusi vyuzit dle potreby. Programator Leonard je jeden z dalsich expertu v ramci programovani. Jednoduse Oxygene . Ja v jednu dobu dost šlapal na hudebnim disku Amigatari, ktereho je koder Leonard a pouziva LDOS. System LDOS obsahuje i navod, ja pouzivam navod v kombinaci s ukazkovym kodem / soubory pro ADF. Samotny navod by mi nestacil, ale v kombinaci to zatim celkem jde. Tak zatim jen takove me postrehy a snad se zadaří
    Naposledy upravil Lisiak; 12.04.2024, 23:48:56.
    Amiga - PMD 85

    Komentovat


      Kodér Leonard a pak popis 1 problému, co mám s LDOSem

      Drobátko teď OT, ale standardně mně to pobavilo a myslím, že jsem nalezl jednu z možných příčin, proč mi tvůrce LDOSu zatím neodepsal

      Info z Twitteru:



      @leonard_coder

      Apr 6
      hey twitter's friends! Soon is my first family trip to Japan (10 to 20 April), visiting Osaka, Kyoto, Tokyo and Hakone. Is there anything we should definitely see/do? #Japan
      ·

      U LDOSu řeším ještě 1 věc. Nedaří se mi z hudby MOD udělat jeho BIN soubor, neboli ho udělám, ale kód ho nenačte a hudba tedy nehraje. Pokud do ADF zpracované LDOSem vložím klasický MOD, tak mi hudba hraje. Tedy pomocí LDOSu mám vše ok kromě toho MODu a já ten BIN potřebuji, aby se ty MODy načítali postupně a ne naraz, čím bych měl snžit pamětovou náročnost. Vytvoreny BIN soubor meho programu je ok. U MODu postupuji stejně. Já vlastně ten MOD jen zabalím do BIN. Ta spojitost v kodu je pak nasledovná:

      načtu BIN do A1 (návěstí Mod0) a dole v kódu mám INCBIN:
      Code:
      Mod0 lea ModScr0,a1
      
      ModScr0 incbin "ModMediev.bin"

      ve druhém souboru mám (první řádek je direktiva LDOSU, ve druhém jen načítám samotný MOD):
      Code:
      include "../../ldos/kernel.inc"
      
      incbin "mediev.MOD"
      Druhý soubor dle postupu zabalím do BIN souboru a soubor BIN se mi pak vytvoří. Soubor BIN pak načítám místo MODU, aby mi s ním LDOS uměl pracovat. Pak vytvorim BIN i z meho kodu soucasne s ADF souborem. Hudba mi vsak nezacne hrat.

      Pokud pouziju v kodu

      ModScr0 incbin "Mediev.MOD"
      místo:
      ModScr0 incbin "ModMediev.bin"

      a použiju LDOS, který mi vytbori BIN soubor z meho kodu a soubezne se mi vytvori ADF, ktereho je BIN z meho kodu soucasti, hudba z takhle vytvoreneho ADF mi hraje a vse je ok.

      Tak za chvíli se vraci koder LDOSu Leonard z Japonka, třeba prohodíme pár vět, pokud se to nevyřeší...
      Naposledy upravil Lisiak; 17.04.2024, 13:43:54.
      Amiga - PMD 85

      Komentovat


        Ještě dnes druhý příspěvek, pouze info.

        Ještě předtím, než jsem zacal resit vyse popsany problem jsem resil 1 chybove hlaseni LDOSu. Bylo to neco jako, ze nemuze najit soubor s indexem 0001. Leonard popisuje pouze problem, pokud je pamět preplněna, jak se to pokusit resit. Ten problem mam taky, ale to jsem docasne vyresil tim, ze nacitavam zatim pouze 2 MODy. Ve vysledku se ten problem s indexem souboru 0001 vyresil tim, ze jsem odstavil / vymazal cely kod od Photona, co mi odstavuje system. Domnívám ze, ze LDOS ma takovyhle kod svuj. Asi mu nesedelo 2 krat po sobe odstavovat system, popripade neco z Photonova kodu, co odstavuje system. To je jen ma domnenka. Po odstaveni Photonova kodu se chybova hlaska prestala zobrazoat a ja i dle chovani predpokladal, ze se mi jiz spustil muj kod i kdyz v te dobe bez hudby a ja pokacoval v bádání dál
        Naposledy upravil Lisiak; 17.04.2024, 14:32:13.
        Amiga - PMD 85

        Komentovat


          LDOS - pouze info

          Tak poslední 3 dny jsem si nasel cas na LDOS a pred chvili jsem zaznamenal uspech. Jeden francouz, co sepsal strucny navod na LDOS mne nasmeroval spravnym smerem. V navode se neresi co jsem potreboval a i kdyz mi napsal vseobecny postup, tak jsem si na par veci prisel sam. Ono je to o tom, ze LDOS si dela svou vlastni kompilaci a clovek presne nevi co se tam deje a jak to pracuje a ze zdrojovych kodu jsem pro mne potrebne veci nevycetl, nebo je tam nenasel. Co byla moje prvni chyba bylo to, ze jsem si udelal potrebne struktury a pak se snazil MOD nacist jiz klasicky pomoci assembleru s tim ze pri kompilaci LDOSem se potrebne veci jiz udelaji. Chyba. Je treba pouzit dal specificky pristup LDOSu. Na to mne nasmeroval ten francouz co sepsal navod. I tak jsem mel problem zahrat MOD. Tak jsem samotny MOD nezpracoval LDOSem na soubor BIN, ale dal jsem ho do struktury primo (čistý MOD) s tim, ze jsem ho nacetl pomoci LDOSu. MOD se mi spustil. Zatim ho pro jednoduchost mam primo v CHIP RAM. Samotny nazev MODu uvadim tedy i v souborech LDOSu, ktere mi pouzite subory slinkuji. V zaveru jsem zkusil samotne nacteni MODu ani neuvest v kodu. I tohle funguje. Samotny LDOS ho pri slinkovani priradi do ADFka. Je tam nevyhoda, ze si nemuzete urcit, do jake pameti se MOD nakopiruje. Myslim, ze by to melo byt do te, se kterou se pracuje v kodu, kde se s LDOSem nacita samotny soubor.

          Jak jsem koukal na kod LDOSu, tak jsem zatim nic lepsiho nevidel. Strasne "tvrdy kod". Skoda ze prace s LDOSem neni lepe popsana.

          Mel bych jit spat....
          Naposledy upravil Lisiak; 29.04.2024, 12:00:26.
          Amiga - PMD 85

          Komentovat


            LDOS - pouze info

            Šlo mi o to, jestli se zpakovava MOD, pokud z nej nedelam LDOSacky BIN a zpakovava, Takhle nejak vypada kompilace, kde davam jeden MOD primo do CHIP RAM. Skladbu mi to da z nejakych 170 KB na 100 KB.

            Windows-ácká kompilace LDOSu na ADF:

            Klikni pro plné zobrazení obrázku

Jméno: LDOS.jpg
Počet zobrazení: 0
Velikost: 283,9 KB
ID: 167449
            Amiga - PMD 85

            Komentovat


              Myslel jsem, že LDOS jen vezme konfigurační soubor, který obsahuje cesty k binárním souborům, a vygeneruje obsah diskety (ADF). Soubory můžou být buď jakékoliv obecné binárky a nebo amigácké EXE soubory. LDOS umí obojí podle potřeby načíst při běhu (po nabootování z diskety) do paměti. Pokud jsou EXE soubory v pořádku, obsahují podporované HUNK sekce (viz. dokumentace k AmigaDOS), tak by je měl umět správně načíst -- tedy rozpoznat co je HUNK s kódem, co je HUNK s relokační tabulkou a co jsou HUNKy s daty nebo BSS (tedy jen s informací o alokaci paměti). Myslel jsem si, že by to mělo být celkem snadné k používání. Pokud chce uživatel načíst nějaká vlastní data (a tedy je nedávat do EXE), tak to LDOS myslím taky umožňuje. LDOS automacky všechna data na disketu zabalí ARJ7 kompresním algoritmem a dekomprese je "zadarmo", protože běží ve stejný čas, kdy se další data načítají z pomalé diskety.

              Ve tvém případě by mělo stačit udělat si jeden exáč, ve kterém do datové sekce (section data_c) dáš svůj modul a do kódové sekce (section code) dáš jeho přehrávání. Prostě normální exáč. Akorát tam už nemusíš psát odstavování systému, protože to za tebe už předem udělá LDOS. Tento exáč dáš do konfiguračního souboru a vytvoříš LDOS utilitou disketu (ADF). Disketa bude mít LDOS boot-block, který asi načítá nějaký dodatečný LDOS kód (pokud se to autorovi celé nevlezlo do boot-blocku) a ten pak načte tvůj "exáč" a spustí. Mělo by to fungovat. Aspoň jsem si to myslel.
              Ta "genialita" LDOSu podle mne spočívá právě v tom, že uživatel dělá normální Amiga exáče (v jakémkoliv assembleru, nebo klidně i v jiném programovacím jazyce) a ze svého kódu pak jen LDOSu říká, jaký exáč má načíst a spustit (když se produkce skládá z více částí).
              Naposledy upravil Defor; 01.05.2024, 22:33:22.

              Komentovat

              Zpracovávám...
              X