Oznámení

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

Assembler - všeobecná logika

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

    Textro 20.zip Klikni pro plné zobrazení obrázku

Jméno: Textro 20 OBRAZEK.png
Počet zobrazení: 382
Velikost: 8,0 KB
ID: 154044

    Optimalizace kódu pro vypsání textu, obraz již stabilní vůči předešlé verzi. Ještě není vše ve finále ale hlavní snad hotovo. Přidáno návěstí TEXTLOOP2, kdy za stavu, kdy se nezobrazuje písmeno není nutné načíst již načtené 2 adresy. Doplněné komentáře u všeho kromě nově použitých registrů pro Copper a na to se ještě podívám. Taky není ideálně komentovaná část kolem načtení grafické knihovny zatím. Na práci s rozsahy B,W,L se taky asi ještě podívám. A ještě mně něco napadá ale až příště. Dole v kódu je malá legenda pro mé komentáře.

    v příloze EXE, KÓD, OBRÁZEK (i zde)
    Amiga - PMD 85

    Komentovat


      Další verze, asi předposlední. Dal jsem rozsahy u registrů na menší, když to umožňovala situace a nejednalo se o ADD Dx,Ax, kde jsem nechal Long. U ADD #x,Ax jsem použil Word. Nebyl jsem zvyklý používat rozsahy u podmínek BEQ a jiných ani u skoku BRA a dalších ale ok a ponechal jsem. Původně byly použité 2 různé adresové registry pro pointer na bitplan, to jsem sjednotil, nic mne to nestálo. Taky jsem použil D0 jako pomocnou proměnnou v jednom případě, čím je D0 použita na 2 místech a ničemu to nevadí, tedy jsem uvolnil D6. Původní kód myslím nejdříve nuloval D0 a nim se pak nuloval pomocí MOVE register D5 na 2 místech, to bylo i zavádějící, tak nuluji D5 přímo pomocí rychlejšího MOVEQ. Taky se báze execu načítala 2 krát i když jsme register kde ji máme nijak nepřepisovali, tak snad ničemu nevadí když jí dávám do D6 jen na začátku a nenacitam bázi execu i těsně před ukončením programu a jen program ukončím. Zpřesnil jsem některé komentáře. To tak v kostce co jsem posledně udělal. Ještě se pak podívám na ty registre na návěstí SPRADR. V italské verzi na assembler je o tom nějaký pokec. Snad registre pro sprity a taky ještě 2 registre něco s bitplany. A za mně bude hotovo. U změn v kódu jsem ponechal v poznámce i původní kód, ale to bude vidět i na stejných komentářech. Taková má záloha zatím radši.

      Asi to pak vrazim do mé hudební rutiny, nahodim nějakou primitivní melodii i ručně než udělám převodník na můj hudební format.

      Vím že se řešil nějaký příznak BOM kvůli A1000 nebo A500 nějaké první verze. Budu to potřebovat při nesystémovém programování aby byl můj program korektní?

      Jen poznámka pro mne, ještě hlasitost do 2.byte v registrech

      V příloze KÓD, EXE, jen přejmenovaný obrázek PNG, stručný popis v TXT co je v registrech, jak jsem v tom trochu dělal pořádek, a posledně jsem zapomněl přiložit soubor=obrázek RAW, ze kterého se načítají písmena na obrazovku pomocí Copperu, tak ten je již taky.
      Přiložené soubory
      Naposledy upravil Lisiak; 03.01.2022, 23:16:54.
      Amiga - PMD 85

      Komentovat


        Dnes jsem si zkusit v Copper listu prohodit zapisy do registrů dle jejich pořadí dffxxx a celkem jsem narazil. V ASM-pro to bylo ok, ale EXE již nepracovalo, nejčastěji mi to hodilo jen čistě modrou obrazovku, co je jedna ze 2 barev se kterou pracuji. Ve výsledku jsem nepřesunul nic nikam a nechávám Copper list bez změn v pořadí. Naskýtá se dotaz, proč adresy dffxxx nejsou nějak logicky za sebou jak se to vyžaduje. Jediné co mně napadá je, že byly upřednostněny návaznosti spíše hardvérové než softvérové a to by bylo samozřejmě v pořádku 🙂
        Amiga - PMD 85

        Komentovat


          Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
          Vím že se řešil nějaký příznak BOM kvůli A1000 nebo A500 nějaké první verze. Budu to potřebovat při nesystémovém programování aby byl můj program korektní?
          Vím, že u nejstarších revizí (nebo jen té úplně první veřejné?) byla chyba v Agnus, kdy se špatně nastavoval příznak ukončení práce Blitteru. Ale detaily si už nepamatuju. Určitě se to dá dohledat na EAB (hledal bych něco jako "bugs in early revisions" a tak podobně). Myslím, že různých chyb v čipsetu bylo hodně, ale tato byla v běžné praxi asi jedna z těch závažnějších. Ale co si tak vybavuju, tak se tahle chyba stejně moc neřešila. Těch starých Agnus čipů asi v oběhu nebylo tak moc, aby to stálo tvůrcům nesystémových věcí za pozornost.

          Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
          Dnes jsem si zkusit v Copper listu prohodit zapisy do registrů dle jejich pořadí...
          Zápisy do registrů v copper-listu mohou být obvykle v libovolném pořadí. Samozřejmě se můžou naskytnou situace, kdy na pořadí záleží. Extrémním případem by mohlo být ovládání Blitteru přímo Copperem. Velikost manipulované oblasti (BLTSIZE) se musí zapisovat jako poslední, protože se tím Blitter odstartuje (před tím ale CPU musí povolit Copperu přístup k BLTxxx registrům). Také při manipulaci se sprajty do určité míry záleží na pořadí zápisu (více například zde: http://coppershade.org/articles/AMIG...e_Programming/). Ale to jsou hodně speciální případy. Takové to klasické nastavení adresy bitplánů BPLxPT, modula BPLxMOD, barevné palety, DMA fetch start/stop DDFSTR/DDFSTOP a umístění zobrazování pro Denisu DIWSTRT/DIWSTOP se mohou dělat v libovolném pořadí. Ale samozřejmě dostatečně včas před samotným zobrazováním. Obvykle se to dělá na začátku, hned po vertical blank. Dokonce se tyhle věci vůbec ani nemusejí nastavovat opakovaně. Vlastně je to zbytečné plýtvání často velmi cennými DMA sloty (přístupy na chip-ram sběrnici). Takže hodně věcí (BPLxMOD, BPLCONx, DDFSTRT/DDFSTOP. DIWSTRT/DIWSTOP, COLORxx) se daji nastavit jen jednou (v nějakém pomocném copper-listu, nebo pomocí CPU, když je jisté, že to něco nezmění), a pak přepnout na copper-list, který v každém frejmu nastavuje už jen potřebné věci (např. BPLxPT).
          Takže tvůj problém asi bude v něčem jiném.
          Naposledy upravil Defor; 08.01.2022, 17:21:55.

          Komentovat


            Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
            Naskýtá se dotaz, proč adresy dffxxx nejsou nějak logicky za sebou jak se to vyžaduje.
            Nevím, jak to přesně myslíš. Registry jsou v čipsetu umístěny logicky. Tabulka http://amigadev.elowar.com/read/ADCD.../node0060.html
            ukazuje, že od $000 do $03E jsou umístěny registry, ke kterým se nesmí dostat Copper. Od adresy $040 do $07e jsou umístěny registry, kam se Copper dostane pokud mu to CPU povolí. A na vyšších adresách je vše vždy Copperu dostupné. Od toho se odvíjí logika umístění. Registry v rámci možností tvoří skupiny podle své funkčnosti (kontrola generování obrazu, bitplány, sprajty, blitter, audio, barevná paleta, ...).

            Komentovat


              Já jen prohodil řádky programu pouze v Copper listu nic víc, chtěl jsem si je seřadit dle hodnot samotných registrů opět zdůrazňuji pouze v rozsahu programu pro Copper. Jakmile jsem tak učinil, přestal mi program zobrazovat text.
              Amiga - PMD 85

              Komentovat


                Beru zpět, chová se to stejně jako DMA na Paule. Jednoduše mi Copper běžel v ASM-pro a pak se již EXE správně nepustilo 🙂
                Amiga - PMD 85

                Komentovat


                  Ještě to píšu a zapomněl jsem zeditoval tenhle příspěvek tak smůla a je to níže 🙂
                  Naposledy upravil Lisiak; 27.01.2022, 14:26:25.
                  Amiga - PMD 85

                  Komentovat


                    Hodil jsem si program textro k mé hudební rutině, přízpusobil registre a snažil se to s nima držet na podlaze, aby jich bylo potřeba co nejméně vždy v daný moment. Bylo to nestabilní, tak jsem si program s úpravami hodil samostatně, i tak to bylo nestabilní dá se říci nefunkční. Začal jsem laborovat kde je problem. Hrálo se to na moc věcí s různou stabilitou. Postupně čím dál více zpřesňoval místo chyby, pracoval jsem již i s možností více chyb. Nakonec to byl register kde je pointer na obrázek. Dle všeho s tím Amiga pracuje snad i na pozadí a když do něj dám něco jiného tak se program sekne/guru/nezobrazí správně grafiku anebo třeba i zobrazí ale jen při prvním spuštění a sekne se to při druhém spuštění. Tak mám opět program stabilní a příště jej zkusím hodit k mé hudební rutině opět. Dnes jsem šel spát ve 4 ráno, ale dorazil jsem to až po spánku, co více si přát 🙂
                    Amiga - PMD 85

                    Komentovat


                      Jednou se mi seklo WinUAE tak, že nešlo zavřít ani přes křížek. Až po tak 4 minutách se PC vzpamatovalo v době kdy jsem se jo již chystal restartovat. To taky pobavilo. Chudák PC 😁
                      Amiga - PMD 85

                      Komentovat


                        Dvě kouzelná slova: Task Manager
                        "Venku leje. Naimpregnuju si hlavu pivem." (Červ, 2023)

                        Komentovat


                          Definice programátora:

                          Programátor je člověk, který zcela nepochopitelným způsobem řeší problémy, o jejichž existenci vy nemáte ani potuchy

                          Amiga 1200, Blizzard 1230 / 50MHz, 32MB Fast RAM, CF 8GB, OS 3.2

                          Komentovat


                            Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
                            Jednou se mi seklo WinUAE tak, že nešlo zavřít ani přes křížek. Až po tak 4 minutách se PC vzpamatovalo v době kdy jsem se jo již chystal restartovat. To taky pobavilo. Chudák PC 😁
                            A zkoušel si to vypnout a zapnout...?




                            Jo, takhle to má pípat....

                            Komentovat


                              Autorem citovaného textu je IDEfix Přejít na původní příspěvek

                              A zkoušel si to vypnout a zapnout...?




                              Jo, takhle to má pípat....
                              Ne, pardon, to mne nenapadlo. Tak já to zkusím 🙂
                              Amiga - PMD 85

                              Komentovat


                                Autorem citovaného textu je IDEfix Přejít na původní příspěvek

                                A zkoušel si to vypnout a zapnout...?




                                Jo, takhle to má pípat....
                                Taky koukáš na IT Crowd?
                                Amiga 600, Fúria EC020 OS 3.1.4, eX601, Indivision ECS, Powerbook G4, 1.67GHz, MOS3.15, Asus UX32VD Xubuntu 21.04

                                Komentovat

                                Zpracovávám...
                                X