OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 29.03.2024, 16:39

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 87 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6  Další
Autor Zpráva
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 04.04.2016, 06:59 
Offline
Kecálek
Uživatelský avatar

Registrován: 13.05.2013, 06:28
Příspěvky: 231
Bydliště: Handlova
Has thanked: 118 times
Been thanked: 44 times
V prvom rade ziadne userstate,sysstack,prerusenia. Neviem kde si sa toto docital.
Ale toto ta len dopletie.


Obnova copperu je uplne jednoducha.

V prvom riadku sa zapise bazova adresa do A6 (napríklad $10000).

V druhom riadku zapise do A1 hodnotu ktora je v A6 + $9C ($1009C), teda nie hodnotu $1009C ale obsah tejto pamatovej adresy.

V tretom riadku zase zapise do $DFF080 hodnotu ktora je v A1 + $26.


Nastuduj si vsetky varianty instrukcie MOVE. Toto je najzakladnejsia instrukcia a bez nej sa dalej nepohnes.
Cely assembler je v podstate len presuvanie a porovnavanie pamate.

_________________
MiST | Amiga 600 Furia II | Amiga 1200 ACA1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 04.04.2016, 07:04 
Offline
Kecálek
Uživatelský avatar

Registrován: 13.05.2013, 06:28
Příspěvky: 231
Bydliště: Handlova
Has thanked: 118 times
Been thanked: 44 times
Citace:
teda by sa A1 mohol vynechať a ušetriť tak 1 riadok?


Nemozes nic vynechat, ved obsah A1 pouzivas hned v nasledujúcom riadku. MOVE.L 26(A1),DFF080

_________________
MiST | Amiga 600 Furia II | Amiga 1200 ACA1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 04.04.2016, 21:21 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2280
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
To u mna není o studovani si istrukcie MOVE, jednoducho robím stupidné začiatnočnícke kraviny. To je u mňa normálne, dostanem to do krvi používaním. Díky za vysvetlenie - moja blbosť. Ja sa snažím ku všetkému dohľadať nejaké info. Aby som to mohol nejako pochopiť čo a ako je keď sa teda dá, keď sa nedá, tak nedá ale vždy to skúsim. A $9c je v HW registroch pomenované ako som napísal.

Obnovenie Copper listu sa skrátiť nedá, ale zápis Copper listu áno, teda tak to robí programátor z Amiga Review, možno že to robí zle ale podľa mna to tak može byť, pokiaľ je splnená podmienka, že začiatok Copper listu je aj jeho samotnou adresou... . Inak by to asi nefungovalo a musela by sa inštrukcia LEA použiť.

Teda...

Kód:
move.l MyCopper1,$dff080

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 04.04.2016, 21:45 
Offline
Kecálek
Uživatelský avatar

Registrován: 13.05.2013, 06:28
Příspěvky: 231
Bydliště: Handlova
Has thanked: 118 times
Been thanked: 44 times
Ano $9C je v HW adresa INTREQ ale je to len taky "offset" od zakladnej HW adresy $DFF000.

Takze ak chces pracovat s INTREQ tak musis pracovat s $DFF09C.

http://amiga-dev.wikidot.com/information:hardware

V priklade RestoreCopper ale nemas ziadnu pracu s $DFF000.
Prave naopak, pracuje s bazovou adresou a tak tam nehladaj spojenie s HW.
Tiez je tam praca s $26 ale to neznamena ze ide o DSKDAT.

_________________
MiST | Amiga 600 Furia II | Amiga 1200 ACA1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 06.04.2016, 09:17 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2280
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
zde je chyba:
Lisiak4 píše:
Kód:
move.l MyCopper1,$dff080

oprava:
Kód:
move.l #MyCopper1,$dff080

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 07.04.2016, 08:09 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2280
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
ObiWanKen píše:
V priklade RestoreCopper ale nemas ziadnu pracu s $DFF000.
Prave naopak, pracuje s bazovou adresou a tak tam nehladaj spojenie s HW.
Tiez je tam praca s $26 ale to neznamena ze ide o DSKDAT.

Nehľadal som spojenie s HW, ale so systémovou knižnicou Execu.
A tam je pod Exec / interrupts:
156 $ff64 -$009c UserState(sysStack)(d0)

Chcel som dať do "[code]" textový súbor s LVO čo doma používám a tento editor na mňa spustil, že moja správa obsahuje 55025 znakov a dovolených je 17 tisíc znakov :)

Tak tu je:
Příloha:
baseAmigaNEMAZAT.txt [54.42 KiB]
582 krát


Inak to, čo mi zposobuje v niektorých prípadoch nezobrazenie výsledku COPPERu je naozaj program Copper Demon, ktorý sa s mojím programom "bije". Nepomohlo ani jeho vypnutie pomocou klasického setupu samotného programu. Musel som ho odobrať z jeho načítania pri štartu samotného systému. Až potom mi "moj" program začal výsledok COPPERu zobrazovať vždy správne a nie len niekedy. Zatiaľ ma nenapadá ako to vyriešit. Ne internetu som sa zatiaľ k riešeniu nedopracoval. Nechám zatiaľ teda program Copper Demon vyhodený zo štartu systému a pokusim sa konečne začat hrať so samotným COPPERom.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 12.04.2016, 17:02 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2280
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
Tak len také moje myšlienky. Vraví sa, že počet bitplanov určuje počet farieb, ktoré možeme použiť. Samotný program na začiatku tohoto vlákna ale ukazuje, že to neni až taká pravda. Pri nepoužití bitplanu sa može meniť farba priamo v registru. V programe sa mení register 0, teda farba pozadia. Farebných registrov máme 32. Vďaka príkazu WAIT sa možeme dostať k jemnej grafike v rámci možností samotného COPPERa. Teda 1 bod by mal mať velikosť 3x3 pixelov. Tým, že meníme farbu priamo v registry máme ale prístup k celej palete. Keby som to prehnal, mohol by som do farbového registru číslo 0 postupne zapísať farbu akú by som chcel z kompletnej palety a pomocou príkazu WAIT takto postupne vykresliť obrázok v plnej palete 4096 farieb. Zaujímavý pixel art :?:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 12.04.2016, 17:27 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2280
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
Pre lepšiu názornosť tu je výsledok programu čo je na začiatku vlákna. Biela sa kryje s bielou (aspoň u mňa). Správna šírka je ohraničená čiernou farbou. Po čiernej sa smerom dole pokračuje farbou bielou. Na bielom pozadí je červená čiara.
Příloha:
obrCopper.jpg
obrCopper.jpg [ 29.33 KiB | Zobrazeno 11995 krát ]

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 12.04.2016, 19:53 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 377
Has thanked: 28 times
Been thanked: 120 times
S Copperom sa chlapci pekne vyhrali tu: http://www.pouet.net/prod.php?which=58476

Lisiak4 píše:
Tak len také moje myšlienky. Vraví sa, že počet bitplanov určuje počet farieb, ktoré možeme použiť. Samotný program na začiatku tohoto vlákna ale ukazuje, že to neni až taká pravda. Pri nepoužití bitplanu sa može meniť farba priamo v registru. V programe sa mení register 0, teda farba pozadia.

Takže nepoužívaš viac farieb, ale len jednu.


Lisiak4 píše:
Farebných registrov máme 32.

No a na AGA Amigách ich máme 512.


Lisiak4 píše:
Vďaka príkazu WAIT sa možeme dostať k jemnej grafike v rámci možností samotného COPPERa. Teda 1 bod by mal mať velikosť 3x3 pixelov.

Copper vykoná jednu inštrukciu CMOVE za 8 pixlov v LoRes, ale pri väčšom počte bitplánov to občas nestihne a trvá to 16 pixlov.
Veľkosť bodu 3x3 pixle sa dosiahne 320/3=106 farebnými pruhmi v bitplánoch a zmenou palety v registroch 1 - 106 (AGA), ktorá sa musí stihnúť počas 3 scanlines.
Tu je jasne, že zmena 320/2=160 paliet sa za 2 scanlines nedá stihnúť a preto sa veľkosť bodu 2x2 pixle používa len v menších oknách. Viď AB3D 2x2/3x3, Fears je tuším v 3x2 a perličkou je jedno demo od Embassy ktoré je v 2,5x3 !

Lisiak4 píše:
Tým, že meníme farbu priamo v registry máme ale prístup k celej palete. Keby som to prehnal, mohol by som do farbového registru číslo 0 postupne zapísať farbu akú by som chcel z kompletnej palety a pomocou príkazu WAIT takto postupne vykresliť obrázok v plnej palete 4096 farieb. Zaujímavý pixel art :?:

Veľkosť bodu 8x1 pixel? To radšej HAM alebo HiResHAM.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 14.04.2016, 09:12 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 20:32
Příspěvky: 457
Bydliště: Kladno
Has thanked: 46 times
Been thanked: 118 times
Antony/DTA píše:
No a na AGA Amigách ich máme 512.

Nie, pouze 256 ;)

_________________
>>eLeMeNt, MB03+, Amiga 1200, ZX Spectrum 128 +2A, ZX Spectrum+, Didaktik Gama, LnxSpectrum, LnxTracker, LnxAmigaImageConvertor, https://www.ilnx.cz <<


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 14.04.2016, 18:42 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 377
Has thanked: 28 times
Been thanked: 120 times
Lanex píše:
Antony/DTA píše:
No a na AGA Amigách ich máme 512.

Nie, pouze 256 ;)

Tak 8 baniek po 32 farieb rozdelených na ECS časť a AGA časť = 8*32*2=512 registrov pre 256 farieb.
Pozor zápis do ECS zložky automaticky kopíruje ECS zložku aj do AGA zložky (spätná kompatibilita),
takže pre nastavenie AGA farby (24bit) musíme najprv zapísať ECS a až potom AGA zložku.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 15.04.2016, 18:20 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2280
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
Tak pre ucelenie príklad na Copper, ktorý je na začiatku po úprave viz toto vlákno. Koniec programu chýba, ale ten je rovnaký. Komenty sa mi písať nechcú, sú tam len nejaké z povodnej časti programu ale nič prevratného sa v novej časti kódu i tak nedeje.
Příloha:
copper2.jpg
copper2.jpg [ 76.39 KiB | Zobrazeno 11866 krát ]

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 15.04.2016, 18:29 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2280
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
Další príklad na použitie bitplanov. Je rozdelený na 3 časti. V emulácii sa mi to nejako nepodarilo odfotiť, tak som si to postupne vytiahol takto.
Příloha:
bitplan1z3.jpg
bitplan1z3.jpg [ 89.45 KiB | Zobrazeno 11861 krát ]

Příloha:
bitplan2z3.jpg
bitplan2z3.jpg [ 56.81 KiB | Zobrazeno 11861 krát ]

Příloha:
bitplan3z3.jpg
bitplan3z3.jpg [ 73.17 KiB | Zobrazeno 11861 krát ]

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 16.04.2016, 21:25 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2280
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
ok, tak dnes som sa pozrel na začiatok programu a skončil som na podprograme "nextplane" (obr. č.1). Z tohoto podprogramu snaď nerozumiem 1 inštrukcii, prečo tam je. Jedná sa o:
Kód:
addq.l #8,a0

V registry a0 máme predsa pri 1. kroku nové obidve adresy 1.bitplanu navýšené o 6 bitov (používajú sa 3 bitplany). Tak prečo tam potom ešte prirátáváme tých 8 bitov? Pokiaľ som napísal niekde blbosť tak sa ospravedlňujem!

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 18.04.2016, 11:58 
Offline
Kecálek
Uživatelský avatar

Registrován: 13.05.2013, 06:28
Příspěvky: 231
Bydliště: Handlova
Has thanked: 118 times
Been thanked: 44 times
V prvom rade su tu bytes (bajty) a nie bity.

V A0 je adresa na pointre bitplanov v copper liste.
To znamena ze pri prvom prechode A0 ukazuje na BP navestie v copper liste kde je hodnota $00E0.
Potom sa prenasa WORD za tuto hodnotu, to je na 02(a0).
Dalej sa SWAPne D0 aby si ziskal "horny" WORD a ten je zase ulozeny na 06(a0).
Co je Word za $00e2. Tymto je nastaveny ukazatel na prvy bitplan.
Takze pripocitanim $08 k A0 sa prejde na dalsi pointer bitplanu v copper liste.

Velmi blbo napisane:
Na zaciatku A0 ukazuje na dc.w $00e0.
potom pripocitas 8 k A0 a ukazuje na dc.w $00e4
a ked v poslednom "cykle" pripocitas dalsich $08 tak ukazuje na dc.w $00e8.

Skus pouzivat Trace a sleduj.

_________________
MiST | Amiga 600 Furia II | Amiga 1200 ACA1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 87 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 5 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz