Oznámení

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

Assembler - všeobecná logika

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts
    DJM
    D.T.A. Software Studio

  • DJM
    odpověděl
    O: Assembler - všeobecná logika

    Copper mas jednoduchy. Vytvoris si copperlist (program, ktory bude copper vykonavat automaticky), zapises jeho adresu do napr. COP1LC a odstartujes ho zapisom do COPJMP1.
    Copper mozes pouzivat napr. na nastavenie obrazovky (registre DIWSTRT, DIWSTOP, DDFSTRT, DDFSTOP, BPL1MOD, BPL2MOD, FMODE, BPLCON0, BPLCON1, BPLCON3, BPL1-8LPTH/PTL), dalej na zmenu farby na "efekt" oblohy,kde sa meni jedna farba (napr. 0),atd..

    Copper dokaze zmenit farbu kazdych 8 bodov aj to len pri maximalne 3-4 bitplanoch, pri viac uz nestiha menit kazdych 8 bodov. Vo vacsine hier a diem sa pouziva na zmenu farby po riadkoch na vytvorenie oblohy (napr. Oscar,Turrican a vlastne skoro vsetky behacky).. V deme State of the Art sa pouziva napr. na stvorcove farebne pozadie. Cele demo Gagrakacka je robene pomocou copperu. Dalej sa da copper vyuzit na tzv. copper chunky mod (nemeni len 1 farbu, ale viac farieb) pouzity vo vela demach (iducich vacsinou na "holych" A1200). Pouzivaju ho aj hry napr. Fears,Gloom,Alien Breed 3D - vsetky robene pomocou copper chunky modu. Cize o zobrazovanie sa stara copper a cpu maju volne pre ine vypocty narozdiel od pouzitia chunkytoplanar rutiny, kde sa vyzuziva procesor, ale to uz vacsinou na amigach s 030 a vyssie + fastram. S pouzitim copperu je cpu volne a stiha to aj na holej A1200, ale je to zas na ukor kvality (3x3 body). Vsetky spomenute veci su len co ma narychlo napadli,samozrejme ze je toho ovela viac...

    Pri HW programovani sa praci s copperom nevyhnes a urcite je dobre zacat s nim ako s prvym pre jeho jednoduchost.


    https://www.google.cz/search?q=amiga...q=amiga+copper

    PS: Kym som toto dopisal, tak sem boli vlozene 2 prispevky...
    DJM
    D.T.A. Software Studio
    Naposledy upravil DJM; 04.03.2016, 23:31:29.

    Vložit komentář:


  • ObiWanKen
    odpověděl
    O: Assembler - všeobecná logika

    Copper je velmi jednoduchy, ma len tri "prikazy" ja osobne pouzivam len dva (Move a Wait). V podstate vie presuvat (Move) hodnoty do HW registrov, ktore zacinaju na adrese $DFF000 a potom pockat (Wait) na riadok a stlpec az tam "nepride" el. luc.
    Napriklad zapis
    dc.w $0180,$0000
    presunie hodnotu $0000 na adresu $dff180. Co je zmena farby pozadia na ciernu.
    Zajtra ti sem hodim nejaky priklad.

    Vložit komentář:


  • IDEfix
    odpověděl
    O: Assembler - všeobecná logika

    Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
    Kvůli příkladům k asm, které jsou jen na disketě bych potřeboval obsahy celkově 3 disket, které byly k časopisu Amiga Review a to obsah diskety z čísla 17,18-19 a 20.

    Díky!
    http://www.amigaportal.cz/extra/amiga-review-pd-diskety

    Vložit komentář:


  • Lisiak4
    odpověděl
    O: Assembler - všeobecná logika

    Som z toho COPPERu zatiaľ trochu jeleň a potreboval by som byt skor tou líškou. Predpokladám, že by mi tie príklady pomohly. Viem, že mi Obi dával příklad, kde je COPPER použitý. Mám rád učebnicovo dané veci. Pokúšam sa pochopiť priame pristupovanie k WH, COPPER je v AR ako prvý. Takže potrebujem pochopiť len COPPER, všetko ostatné je pre mňa rušivé. Dobre keď poviem blbosť tak pardón, takže COPPER dokáže odsledovať polohu elektrónového paprsku. Má 1 DMA kanál na prenos, vďaka ktorému dokáže pracovať spolu s procesorom. OK COOPER odľahčí procesoru, je písané, ako sa používa, ale skutočná podstata mi uniká. Asi COOPER dokáže urobiť nejaké operácie v konkrétnej časti obrazovky, keď tam dojde elektrónový paprsok. OK je teda na prácu s grafikou a mám viac ako 1 teóriu, k čomu by to mohlo byť dobré. Takže ma zaujíma praktické využitie tohoto obvodu aby ma mohlo baviť ho skúsiť použiť... .

    Vložit komentář:


  • Lisiak4
    odpověděl
    O: Assembler - všeobecná logika

    Kvůli příkladům k asm, které jsou jen na disketě bych potřeboval obsahy celkově 3 disket, které byly k časopisu Amiga Review a to obsah diskety z čísla 17,18-19 a 20.

    Díky!

    Vložit komentář:

  • DJM
    D.T.A. Software Studio

  • DJM
    odpověděl
    O: Assembler - všeobecná logika

    Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
    Hneď 2. lekcia sa venuje vkladaniu obrázkou, preto som hneď začal s tou hudbou v rámci Octamedu,
    Zvlastna suvislost...

    Vložit komentář:


  • Lisiak4
    odpověděl
    O: Assembler - všeobecná logika

    OK, díky za info, kuknem na to nesystémové programovanie v rámci Amiga Review, možno sa tam o tom niečo bude písať. Hneď 2. lekcia sa venuje vkladaniu obrázkou, preto som hneď začal s tou hudbou v rámci Octamedu, ale jednoducho nestíhačka. Nechcem prebiehať, ale u toho asm sa zatiaľ bavím viacej jako u Pythonu. Na tom precvičovaciom príklade čo som uviedol som sa pobavil hneď 2 krát. Najskor som asi 30 minut ako idiot pozeral načo je tam tá inštrukcia BEQ, však poznánky sú blbosť nie? Jednoducho som tak nejak pozabudol na tú nulu na konci textu . No a potom ešte druhá situácia, nechcem to presne popisovať, aby som si zbytočne nezvyšoval skoré za napísanie nezmyslu, ale při tom teste ma pozdravila guru hláška. 3 krát chyba, 1 krát ma to vyhodilo hneď do WB . No a keď sme už při tom mojom vtipkovaní, keď som si len tak letmo svetom pozeral tú PDF verziu knihy o asm, tak som tam pokiaľ sa nemýlim narazil na inštrukciu, ktorá zastavuje činnost procesoru až do prerušenia .

    Dúfam, že sa z toho nesystémového programovania neposeriem, lebo to možem zabaliť

    Ámen

    Vložit komentář:

  • DJM
    D.T.A. Software Studio

  • DJM
    odpověděl
    O: Assembler - všeobecná logika

    Pamat si mozes alokovat pomocou sys funkcii este nez odstavis system...

    Vložit komentář:


  • Lisiak4
    odpověděl
    O: Assembler - všeobecná logika

    Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
    ...a možem ísť nabudúce na alokáciu pamati .
    A, to je systémové prideľovanie pamati, ako to tak vyzerá, Amiga Review 8,9,10,11 možem zatiaľ preskočiť .

    Vložit komentář:


  • Lisiak4
    odpověděl
    O: Assembler - všeobecná logika

    Super díky obom, Obi skúsim neskor. Už mi je to jasné. Najvačší problém bola pitomosť, že RTS na konci programu musí ukončovať celý program a tak som nezklamal a opat to vyriešil mojou zvrátenou logikou . Preto som si RTS pod BSR pridružil k BSR aj keď som si vravel, že by mal byť na konci celého podprogramu, ale tam bolo RTS pre mňa ukončujúce celý program a tak som to pochopil zle. To bola taká posledná vec ktorú som z tohoto príkladu chcel pochopiť. Príkladu teda rozumiem k mojej spokojnosti a možem ísť nabudúce na alokáciu pamati .

    Vložit komentář:


  • ObiWanKen
    odpověděl
    O: Assembler - všeobecná logika

    Ak velmi tuzis po .b .w tak si spusti optimalizaciu prikazom AO z prikazoveho riadku.

    Vložit komentář:

  • DJM
    D.T.A. Software Studio

  • DJM
    odpověděl
    O: Assembler - všeobecná logika

    Ked si to odkrokujes, tak by si to mal zbadat.

    Tu mas priebeh toho programu:
    1. krok - do a0 sa nastavi adresa retazca1 (lea)
    2. skoci sa na podprogram NajdiA (bsr), z ktoreho sa vrati vdaka rts na konci tohto podprogramu
    3. program pokracuje dalej za bsr, co je v tomto pripade rts a teda ukonci program

    Cize odpoved na tvoju otazku je nie. RTS za BSR NajdiA sa vykona ako posledne v celom programe.

    Vložit komentář:


  • Lisiak4
    odpověděl
    O: Assembler - všeobecná logika

    Code:
    ;=========================
    ;Tohle si taky odkrokujte v debuggeru 
    ;=========================
    
                  SECTION prg,CODE
    START         LEA retezec1(pc),a0
                  BSR NajdiA ;tím že neuvedu u bsr ".s" nebo ".w" nechám prostor assembleru aby to udělal sám (nebo mi vynadal)
                  RTS ;teď ve v D0 výsledek
    ;tady je testovací text ve kterém se hledá první "A" všimněte si že řetězce (stringy) se ukončují nulou
    retezec1      DC.b "To jsem zvedav jestli to tady"
                  DC.b " to A vubec najde!",0
                  CNOP 0,4 ;nezapomeňte udržovat začátky rutin aligned
    ;Tato rutinka chce jako parametr adresu stringu v A0 a vrátí v D0 adresu prvního znaku "A" (velké A) v tomto stringu nebo nulu pokud žádný nenajde.
    NajdiA          MOVE.l a0,-(sp) ;schovat původní A0
    .smycka       MOVE.b (a0)+,d0 ;načtu si znak, Z bude nastaven pokud načtu 0, která označuje konec stringu
                   BEQ .nenasel ;byla to nula - nenašel jsem A
                   CMP.b #"A",d0 ;bylo to "A"?
                   BNE .smycka ;nebylo-zkus další znak
                   SUBQ.l #1 ,a0 ;a0 teď ukazuje hned ZA A - spravit
                   MOVE.l a0,d0 ;do D0 adresu "A"
                   BRA.s .konec ;pokračuj ke konci
    .nenasel        MOVEQ #0,d0 ;nenašel - vracím nulu
    .konec          MOVE.l (sp)+,a0
                   RTS
    To RTS za BSR NajdiA se vykoná před RTS na konci programu?
    Naposledy upravil Lisiak4; 25.02.2016, 18:43:33.

    Vložit komentář:


  • Lisiak4
    odpověděl
    O: Assembler - všeobecná logika

    No, som detailista. V rámci asm okrem toho S je len zatiaľ 1 vec ktorej nerozumiem. Ale to beriem ako fakt, že tak tá vec funguje a nemám potrebu ju riešiť. Takže okrem toho S nemám čo riešiť. Ja si zatiaľ B,W,L budem určovať pevne, neviem, prečo by som asm mal dávať v tomto voľnú ruku. Pri relatívných skokoch to vobec neni treba.

    Som z programovaia v asm lamer. V rámci napríklad vás dvoch z asm najhorší a úplne na začiatku. Ale názor mať možem. Python ma dosť naučil. Programovanie je exaktná vec. Kompromisy možu byť pri zdokonaľovaní sa. Potom už píšeš veci buď najlepšie, alebo horšie. Tam neni niečo ako toto je blbosť a nemusíš to vedieť. Tam buď vieš, alebo nevieš. A ten kto vie je lepší. Sú to presne stanovené pravidlá. A všetky tieto pravidlá sú podriadené schopnostiam programátora. A presne to je vec, kvoli ktorej se progrmovaniu venujem aj naďalej. Mám rád presne stanovené veci. Samozrejme na tie presne stanoveneé veci je sa treba pozerať s nadhľadom. Može byť aj niekoľko veľmi dobrých riešení a každé z nich može mať svoje + a -. Ty si veberieš svoje riešenie a pokúsiš sa ho urobiť najlepšie ako vieš.

    Píšem veci tak ako ich vidím teraz. Zajtrajšok je pre mna budúcnosť. Neviem, ako dlho ma bude programovanie baviť. Motivácia tam ale stále jednozančne je.Jeden z faktorov motivácie je, že si určite niekto myslí, že na to nemám. No a ja to tiež chcem zistiť, či tento člověk má pravdu. Zatiaľ nemám chuť nechať niekoho takého vyhrať, lebo chuť po tom to dokázať je vačšia, ako chuť potom opustit bojisko . Týmto by som chcel poďakovať všetkým, čo mi neveria .

    Vložit komentář:

  • DJM
    D.T.A. Software Studio

  • DJM
    odpověděl
    O: Assembler - všeobecná logika

    Ja som zas toho nazoru, ze bra.s znamena pre niektore (slabsie) kompilery, aby dal co najmensiu hodnotu (.b .w .l) podla potreby, lebo bez zadania dlzky sa da v kompileroch dlzka nastavit napr. aby tam daval word, cize ked napisem move d0,d1 tak to podla nastavenia kompilera prelozi ako move.w d0,d1. Pri takom nastaveni ked dam bra skok , tak by to kompiler mohol chapat ako bra.w skok a pre to sa tam pise .s. Ale slusny kompiler by to mal upravit. Moj nazor, kazdopadne som bra.s v zivote nepouzil a ani nepouzijem...

    PS: A zase tu riesime taku zbytocnost...
    DJM
    D.T.A. Software Studio
    Naposledy upravil DJM; 12.02.2016, 18:55:41.

    Vložit komentář:

Zpracovávám...
X