Oznámení

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

Assembler - všeobecná logika

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

  • Lisiak
    odpověděl
    U meho programu, ktery hraje par MODu z me hudebni rutiny jsem zavedl preruseni pro CIA casovac. Preruseni jsem dal na 2 mista. Pred inicializaci LDOSu a pred inicializaci nastaveni CIA casovani pro mou hudebni rutinu. Tim jsme vyresil problem a LDOS se mi jiz inicializuje a tedy soubory mi dohrava tak jak potrebuji. MODy maji velikosti v rozsahu 160 az 190 KB. Pak hraju 1 MOD cely a po nem se nahraje a zacne hrat MOD co ma 395 KB. MODy co zazneji jsou od Poison-a. Jen druha dekompilace je pomalejsi, pak jiz je to sviznejsi. LDOS by mel umoznovat nahravat data i prubezne za behu, jeste uvidim jestli se to pokusim pouzit. Ja ted hlavne procistil kod, jak jsem se pokousel rozbehat LDOS do soucasneho stavu (jeste jsem neni u konce, ale jiz to opet nejak vypada). Jednou mi MOD nezacal hrat, ale jeste par veci casem v programu udelam a vseobecnou logiku si jeste projdu.

    Pardon za ten prach na notebooku, ja mam na nem pripojenou externi klavesnici, na ktere mam alespon o 5 procent mene prachu

    Video s LDOSem v akci pracujicim s formatem ADF, myslim ze to umi i HDD... .

    EDIT: jak se vracim v ramci nacteni predesle skladby, to vrneni hlavicky je proste boží...


    Naposledy upravil Lisiak; 28.10.2024, 12:51:39.

    Vložit komentář:


  • Lisiak
    odpověděl
    Tak postup od Soundy-ho pro zprovozneni nahravani 2. a dalsi skladby nezafungoval. Kdyz jsem pouzil CIA-A tak mi sel LDOS do chyby i pri prvni skladbe, ktera se jinak normalne nahraje a hraje. Nicmene pri pouziti CIA-A je jiny postup pri pouzivani LDOSu pokud tomu dobre rozumim dle toho co Soundy psal. Tak jsem sel do zdrojoveho kodu LDOSu jak psal i Defor. Videl jsem cely podprogram pro praci CIA a cely jsem ho zkopiroval do meho kodu pred inicializaci LDOSu pro hrani druhe skladby. To zafungovalo a LDOS se mi konecne inicializoval a skladbu nahral. Skladbu mi jen hral ve spatnem tempu. Pochopil jsem ze se mi nastaveni meho casovace v hudebni rutine "neprevezme" tak jsme si z LDOSu vzal predpokladane preruseni a dal neco pred a neco za casovac me hudebni rutiny stejne jako to mel LDOS. To zafungovalo a jiz se mi i druha skladba hraje casovacem me hudebni rutiny a ne casovacem samotneho LDOSu. Asi tam mam nejake casti kodu i navic, priste se na to opet podivam, nicmene hlavni problem dle vseho vyresen. Tak jsem si opet v ASM zablbnul a mam radost ze se to povedlo

    Vložit komentář:


  • Lisiak
    odpověděl
    Soundy-ho postup, já se k tomu dostanu později...

    Code:
    Hi Martin,
    
    Good to read you're back to code!
    So you're right, LDOS needs the CIA to update itself. If you stop the CIA, LDOS won't update automatically. You have 2 options:
    
    Option 1: Make sure CIA is enabled (CIA + Disk DMA)
    move.w #$8000|(1<<13),$dff09a ; CIA interrupt enabled
    move.w #$c000|(1<<1),$dff09a ; Enable Disk DMA Int
    move.w #$8000|(1<<4),$dff096 ; Enable DMA Disk
    
    Option 2 (if you need CIA-A off, or linked to something else): Call LDOS_TRACKLOADER_FRAME_TICK at every VBL so that LDOS does not need the CIA to update itself (make sure DMA Disk is enabled though).​

    Vložit komentář:


  • Lisiak
    odpověděl
    Mně již Soundy (The Deadliners) napsal postup, ale když se k tomu dostanu tak asi až přes víkend. Se Soundym jsem si již ohledně LDOSu pár krát psal. Je velice ochotný, tedy supr

    Vložit komentář:


  • Defor
    odpověděl
    Podívej se do zdrojáků LDOSu. Nejspíš používá CIA časovač. Podle toho, co jsi uvedl, používáš timer CIAB ($bfdX00) obvodu. Pokud to koliduje s LDOS, můžeš využít CIAA ($bfeX01).
    Naposledy upravil Defor; 21.08.2024, 01:28:52.

    Vložit komentář:


  • Lisiak
    odpověděl
    ...ono to vypadá, ze casovac CIA budu muset odstavit dostatecne dopredu pokud budu chtit nacist dalsi skladbu. Kdyz kod casovace v kodu mam aktivni, ale preskakuji ho pomoci BRA, tak se mi druha skladba pomoci LDOS nacita.

    Vložit komentář:


  • Lisiak
    odpověděl
    Pri pouziti soboroveho manazeru LDOS mam problem nacist druhou a dalsi skladbu. Zjistil jsem, ze mu vadi pritomnost CIA casovani. Kdyz dam kod s CIA do poznamky, LDOS mi nacte i druhou skladbu. Zatim se pokousim neuspesne odstavit CIA casovac v mem programu, kdyz chci pouzit LDOS pro nacteni dalsi skladby.
    V D0 mam hodnotu pro casovac. Muj casovac:

    Code:
                           move.b  #$00,$bfde00   ;CIA primary timer, 2000=1/100 second
                           move.b  #$7f,$bfdd00 ;
                           move.w  d0,$bfd500 ;
                           move.b  #$09,$bfde00 ;
    
    primaryTimer  
                           btst.b #0,$bfdd00 ;
                           beq primaryTimer ;


    EDIT: nemuze byt pouzit ani jen 1 kterykoliv radek z casovace co pracuje s nejakym registrem, jakmile je pouzit, LDOS nenacte druhou skladbu. Jedinou vyjimku tvori radek s BTST. S tim mi LDOS druhou skladbu nacte.
    Naposledy upravil Lisiak; 17.08.2024, 20:58:49.

    Vložit komentář:


  • Lisiak
    odpověděl
    LDOS, programovani, poznamkovy blok pro psani kodu - pouze info

    Od doby co se hraju s LDOS-em pouzivam na upravu kodu klasicky poznamkovy blok pod Win. Je to pouzitelnejsi, nez jsem si puvodne myslel. Mírně hůře prehledny (2 barvy a ASM-pro mám ve 3 barvách - nechci tam vic barev), u poznamkoveho bloku celkem hledam, kde mam kurzor (tenka carka), ASM-pro ma neprehlednutelny ctverec / obdelnik. Minimalne u ladeni pro LDOS je poznamkovy blok fajn kombinace, veskerou kompilaci kodu dela jiz program LDOSu a k dispozici mate klasicke chybove hlasky co se tyce chyb v kodu. Poznamkovy blok ma pak pro mne jeden dost dulezity bonus, ukazuje vam, jestli byla v kodu udelana nejaka zmena od jeho posledniho ulozeni, to je vec, ktera mi v ASM-pro vyslovene chybi. Nevyhodu u poznamkoveho bloku vnimam, ze vyhledavani textu v kodu odlisuje, jestli hledame velike nebo male pismena, pokud se tedy spleteme ve velikosti pismena hledaneho textu, vysledek nebude nalezen. Samozrejme vyhodou ASM-pro je debuger a jeho moznost trasovani programu u ktereho si muzeme overit funkci nejake instrukce, nebo vyhledavat slozitejsi chybu.

    V posledni dobe ted resim u LDOSu jeste 1 věc. Nedari se mi nacist 2.skladbu po hrani prvni skladby. Druhou skladbu muzu zacit hrat, pokud ji zacnu hrat nejdrive, ale pokud hraju prvni skladbu a pak chci nacist tu druhou, LDOS tak zatim neudela. Psal jsem uživateli Soundy-mu (autor pdf navodu k LDOSu), se kterym resim me problemy s LDOS-em. Napsal mi, ze dle vseho nemam celkove ukoncenou mou hudebi rutinu po tom co chci s LDOS-em pracovat. To se mi potvrdilo, vadi mu ma hudeni rutina, ze je aktivni. Celkem jsem se hudebni rutinu snazil ruzne odstavit, udelat LDOS-u čas na to, aby se mohl inicializovat, ale nepovedlo se zatim.

    Zjistil jsem v me hudebni rutine chybu. 1 situaci jsem nemel odchycenou, to jsem vcera vyresil. Spolu s tim jsem udelal snad spravnejsi ukonceni hrani MODu u me hudebni rutiny, kdy jsem misto primeho skoku v kodu hudebni rutine podstrcil stav, ze prave hraje posledni pattern ze skladby, co je si myslim asi lepsi a dle vseho to funguje spravne.

    Zkusim ted opet par veci, jak mou hudebni rutinu odstavit, nebo pak zacnu odstavovat jednotlive casti kodu v hudebni rutine, aby jsem zjistil, co LDOS-u vadí

    Vložit komentář:


  • Defor
    odpověděl
    Autorem citovaného textu je Lisiak Přejít na původní příspěvek
    Rychlost nahrání 170 KB MODu...
    Tak gratuluji, že to nakonec celé funguje. Taky asi někdy LDOS použiju.

    Vložit komentář:


  • Lisiak
    odpověděl
    Rychlost nahrání 170 KB MODu z diskety. ADF vytvořeno LDOSem, který MOD zpakoval na 100 KB
    Na nahrání MODu do paměti byla použita funkce LDOSu "LDOS_LOAD_BINARY_BLOB"

    Vložit komentář:


  • Lisiak
    odpověděl
    Napsal jsem to včera i Soundy-mu.

    Dáme si krátký jazykový okénko

    ​​​​​​
    Le ven. 10 mai 2024 à 23:00, Martin a écrit :
    A teď již v citaci odpověď od Soundy-ho:
    ha! A1 was definitely overwritten by LDOS
    ok no 🙂 ​

    Vložit komentář:


  • Lisiak
    odpověděl
    LDOS.... problem s pameti odstranen

    ono vas souvislosti vetsinou spravne smeruji k tomu, aby se problem vyresil. Mne to nedalo a zkompiloal jsem si zpet LDOS tak, aby mi pracoval i s OTHER RAM a ne jen s primym zapisem vseho do CHIP RAM. Overil jsem si, ze hudebni MOD kopiruji do CHIP RAM spravne. To kopiruji, tak jsem sel dal. Chyba poukazovala na pointer MODu v CHIP RAM. Reseni je, ze pokud se nacita pointer na MOD do adresoveho registru a pouzije se direktiva "LDOS_LOAD_BINARY_BLOB", tak se nacteni pointeru na MOD musi zadat za touhle direktivou LDOSu. Já pro pointer na MOD pouzil adresovy registr A1, ten minimalne v ramci vystupu a vstupu direktiva LDOSu nepouziva. Ted jiz se mi MOD zacne prehravat s 512 KB CHIP RAM a ne az s 1 MB CHIP RAM jak to bylo predtim. Ja ale zatim i tak budu pouzivat prime nahravani vseho do CHIP RAM, tedy s drobnou upravou LDOSu jak mi poradil Soundy (autor PDF navodu a dle vseho dobry hudebnik a koder), ale ted jiz vim, kde byl problem...

    Vložit komentář:


  • Lisiak
    odpověděl
    Dnes jsem napsal Soundy-mu a o pul 12 v noci (je v nasem casovem pasmu) odepsal:

    Hi Martin,


    I know you mentioned you directly loaded the BLOB to CHIP mem, but I don't know how you do it.
    LDOS_LOAD_BINARY_BLOB will alloc randomly CHIP or FAST RAM. There are chances that with a default config, it loads to (fake) FAST, but if you increase CHIP, you increase the chances to load to CHIP RAM. Maybe that's why it runs with 1MB CHIP.

    If it's the case, you can either :
    Solution 1:
    declare a bss_c zone and copy with the CPU your loaded blob to that zone
    Solution 2:
    Change the LDOS code: In kernel.asm, locate function "nextEXEDoAlloc" and replace "bsr allocAnyMem" by "bsr allocChipMem". That way, your blobs will be loaded directly to CHIP.
    To recompile LDOS, execute LDOS\ldos\src\build.cmd

    Hope it helps!
    Ja tak nejak tusil, ze se mi to dava spatne do chip mem. Sekci BSS_C jsem mel zadanou. Kopiroval jsem data do chip-mem po bytech od pointru v chip-mem. Vratil jsem se SUBem (SUB je jistejsi) o pocet bytu, co ma skladba aby jsem ji mohl zacit hrat. Vse fungovalo ale az od 1 MB CHIP. Udelal jsem tedy jednoduchou upravu primo v kodu jak pise Soundy. Ted se jiz nemusi nic kopirovat. Rovnou ctu od pointru na MOD, ktery mi vrati funkce "LDOS_LOAD_BINARY_BLOB". MOD mi zacne hrat v zakladni konfiguraci 512 KB CHIP + 512 KB dalsi pameti tak supr!
    Naposledy upravil Lisiak; 08.05.2024, 01:45:42.

    Vložit komentář:


  • Lisiak
    odpověděl
    LDOS....info

    Pokud zabalim EXE soubor do BIN LDOSu - spusti se mi exe (ma hudebni rutina + MOD) na nejnizsi konfiguraci 512 CHIP RAM + 512 dalsi RAM. To by jsem ale musel nacitat hudbu postupne a nemohl si tedy urcovat, kterou presne kdy zahrat. Zaroven bych musel mit ke kazdemu MODu zabalenou i mou hudebni rutinu, ale ta nema vic nez 5 KB.

    Pokud bych chtel urcovat, ktera skladba se mi pomoci LDOSu zahraje, musi se pouzit direktiva
    LDOS_LOAD_BINARY_BLOB

    a i kdyz ma vse dohromady, tedy hudebni rutina a kratky MOD tak 15 KB, hudba mi zacne hrat, az kdyz se pouzije alepson 1 MB CHIP RAM. Pri pouzivani LDOSu jsem si vsiml ze pametovim naroku pomaha prubezne nakopirovani vzdy pouze 1 MODu do CHIP RAM, U direktivy:
    LDOS_LOAD_BINARY_BLOB
    jsem mel problem data MODu prenest do CHIP RAM a z ni ji pak zahrat. Nakonec se mi to myslim povedlo. Ale ani tenhle postup nesnizil pametove naroky na spusteni MODu a porad to potrebovalo alespon 1 MB CHIP RAM.

    Je dost mozny, ze jsem neco prehlidl, ale i kdyz by mela byt minimalni konfigurace 1 MB CHIP RAM je to s tim, co nabizi LDOS jiz pro mne zajimave. Pokud je tohle vlastnost LDOSu, tak to treba jeho pristi verze bude resit, jak jsem psal, melo by se pracovat na verzi LDOSu, kde jiz postupne nacitani EXE souboru za sebou dle vseho nebude muset byt.

    Vložit komentář:


  • Lisiak
    odpověděl
    LDOS....

    Ke dnešnímu postu jen dopíšu, ze jsem nahral do ADFka pouze ten 88 KB MOD a porad to potrebuje 1 MB CHIP RAM. Tyhle naroky (1 MB CHIP RAM místo 512 KB CHIP RAM + 512 KB dalsí ram) jsou tedy neni zpusobeny LDOSem... .

    Vložit komentář:

Zpracovávám...
X