OldComp.cz

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


Právě je 29.03.2024, 09:50

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 1, 2, 3, 4, 5, 6  Další
Autor Zpráva
 Předmět příspěvku: Amiga Assembler 68000/020
PříspěvekNapsal: 20.03.2016, 15:00 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2279
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
Já mám portál spíše jako poznámky toho co aktuálně řeším. Z mé strany teď zatím žádný dotaz. Stručně řečeno je na pořadí odstavení multitaskingu v rámci systému. Kvůli pozadí ClassicWB mi COPPER nepracuje jak má, snad odstavení multitaskingu pomůže. Bude to můj 1. samostatný krok v rámci asm, krom příkladů, kterým jsem zatím porozuměl tedy jsem sám zvědav, jestli to budu umět. Tohle vlákno jsem založil na základě výpadků AP.

Příloha:
copper.jpg
copper.jpg [ 77.8 KiB | Zobrazeno 17931 krát ]

exec.library:
Library Vector Offset:
-132 Forbid()()
-138 Permit()()

_________________
Amiga - PMD 85


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2279
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
Tak jsem zkusil odstavit multitasking. Buď jsem ho odstavil špatně, nebo to správnému fungování COPPERu nepomohlo. COPPER mi zobrazí správně jen někdy a zatím jsem nepřišel na to na co se to hraje. Když mi zobrazí špatně, mám obrazovku jen v barvě černé, ale nezobrazí další změny, které jsou v programu taky uvedeny.

Po tom, co jsem dle mne odstavil v systému multitasking se mi systém někdy opravdu sekl :). Tak jsem zkoumal, na co se to hraje a přišel jsem na to, že po tom, co spustím program z paměti se po systému můžu bez problému pohybovat a když jsem v editoru assembleru tak v něm se taky můžu pohybovat, no když kliknu v editoru asm myší na nějaké místo, tak až tehdy jde systém do kolen a musím provést restart. To může mít samozřejmě souvislost s návratovou částí programu, kdy se po kliku myší vracíme z programu spět do systému. Z vektorů funkcí (LVO) jsem zatím použil jen jeden. Na odstavení systému nepotřebuji dle všeho otevírat nějákou knižnici, protože vektor funkce pro odstavení systému je součástí báze samotného execu, který jsem si zpřístupnil tím, že jsem ho z adresy 4 nakopíroval do A6. Zatím pracuji jen se základem cvičného programu pro COOPER. Tedy COPPER zatím nevracím systému, jak mi poradil ObiWanKen na bývalém portálu pro Amigu (bývalém AM, tedy starém AP který od 1.4. taky funguje :) ). Pracuji opravdu se základem programu, kdy předpokládám, že při správném fungování i samotného základu minimálně alespoň jednou a to při prvním spuštění programu z paměti mi COPPER zobrazí vždy správně a ne jen někdy. To co jsem do programu doplnil je dáno do poznámky (horní část programu), aby to bylo vidět (při spuštění programu tu část opravdu v poznámce nemám :) ).

Používám v emulaci systém: ClassicWB, co může být samozřejmě problém. Použití klasického WB ale neřeší problém, když si někdo další spustí program právě z ClassicWB... .


Přílohy:
odstaveniSystemu.jpg
odstaveniSystemu.jpg [ 96.56 KiB | Zobrazeno 17831 krát ]

_________________
Amiga - PMD 85
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.04.2016, 10:02 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10111
Bydliště: Praha
Has thanked: 1953 times
Been thanked: 1517 times
No vemu to podle laického náhledu AMOSáka :-), protože ASM mi nic neříká. Budeš si muset najít, kam se v paměti nahraje ten prográmek, co vytváří copper efect a vykopnout ho ručně. Pochybuji, že má co dočinění se systémem (vlastně jen zavíráš obrazovku s WB, hodnoty v copperu zůstávají).

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2279
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
Misticku nevím, jestli si zcela rozumíme, já nepotřebuji něco likvidovat, já potřebuji, aby mi program pro COPPER fungoval na 100 procent a ne na 5 procent. Tedy aby se mi program zobrazil po grafické stránce na obrazovce vždy a ne jen někdy. Mé lamerské podezření padalo právě na multitasking, tak jsem se ho pokusil odstranit. Na AP/AM nebo jak se to jmenuje (:)) jsem psal, že mám podezření na práci s barvou pozadí. I když jsem přistupoval pomocí escape sekvencí přes AmigaPython na barvu pozadí ve Workbenchi, něměl jsem k barvě pozadí přístup i když jsem barvu pozadí měnil. Vždy mi ve WB zůstávala původní barva pozadí z ClassicWB a ne barva, kterou jsem vybral. K ostatním barvám jsem přístup měl. COPPER pokud se nepletu zde pracuje právě s barvou pozadí. Teď mne napadá že zkusím přejít na práci s jinou barvou než barvou pozadí. Ale i když to již bude fungovat, tak by to tenhle problém chtělo vyřešit.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.04.2016, 10:39 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10111
Bydliště: Praha
Has thanked: 1953 times
Been thanked: 1517 times
Copper efekt můžeš mít v jakékoliv barvě. Dokonce můžeš namixovat z těch "barev" několik copper efektů naráz. Nicméně to, že killneš WB, neznamená, že ti v paměti už nic jiného (co si natáhl při nabíhání CWB) neběží. Dle mého vpodstatě provádíš zápis nových hodnot do registru, který využívá i Copper Demon z CWB (a ten běží na pozadí i po zavření Workbenche). Ten se je pak zase pokusí přepsat zpět na své a tím se to tluče. Ostatně sami autoři píšou:
Copper Demon can cause compatibility problems with certain programs.
Proto píšu, aby sis našel adresu, na které v systému běží (měl by to umět vypsat SnoopDOS) a killnout ještě jeho. Pak by měl problém vymizet.

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.04.2016, 14:46 
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
Ked na zaciatku programu zakazes/vypnes Multitasking tak na konci ho musis zase povolit/zapnut.
Ak ho odstavis a pred skoncenim zase nepovolis tak je jasne ze system spadne. To plati aj pre prerusenia.
Musis po sebe upratat !!! :)
Este ti odporucam odstavit prerusenia cez _LVODisable a _LVOEnable.

Jednoducho napisane:

Start:
JSR _LVOForbid
JSR _LVODisable

TvojProgramTu:

JSR _LVOEnable
JSR _LVOPermit
RTS

_________________
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: 02.04.2016, 14:55 
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
A pozrel by som sa este smerom ktory napisal Mistic o Copper demon.
Ak je pravda ze tento program bezi aj po vypnuti WB tak potom tento program bezi v preruseni
a to je problem. Ako pise Mistic :box: sa (biju sa).

_________________
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: 02.04.2016, 15:09 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2279
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
Tak SnoopDOS se na to nechytá, nezobrazuje mi žádné akce a to jsem mu v nastaveních nastavil, aby zobrazoval vše co umí. No nic ono to nějak pude :). Napadlo mne, že pracuji s pamětí, tak jsem program zkompiloval. Třeba by pak SnoopDOS něco ukázal. Program nereaguje na stisk myši, tedy se mi nevráti do systému. Podotýkám, že před kompilací jsem odstranil likvidaci multitaskingu. Pod WB3.1 program COPPER zobrazil hned správně. Ale ani pod WB3.1 se pak po stisku myši nevrátím do systému. Tak je na řade asi to OBIho vrácení COPPERu systému, třeba se mu to moc nelíbí :).

_________________
Amiga - PMD 85


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2279
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
OBI, ja teraz riešim správne zobrazenie COPPERu. Je mi jasné, že musím potom multitasking povolit, čo som zatiaľ neurobil, lebo mi to správne nezobrazil. Vracia sa multitasking aj tak až po kliku myši, no ale najskor nech pred klikom myši správne zobrazí, snad si nemyslíš, že budem potom další krok takto zbytočne programovať :mrgreen:

_________________
Amiga - PMD 85


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2279
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
OK ten _LVODisable skúsim, ten _LVOEnable dostane program až za odmenu :lol:.

_________________
Amiga - PMD 85


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2279
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
A ešte COPPER som ochotný systému vrátiť keď sa to naučím, čo je asi na rade. Nejako bolo a nejako bude :). Díky za rady OBI! Neboj, všetko potom pozapínam... .

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.04.2016, 15:42 
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
Na vrateni systémového copperu nieje nic na naucenie. Su to tusim tri riadky kodu.
Dalej si vsimni ze menis aj nastavenia DMA kanalov. Povolujes len DMA copperu (odstavujes vsetky ostatne).
Toto musis tiez vratit na poriadok.

_________________
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: 03.04.2016, 15:19 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2279
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
OK, zatiaľ som pred koncom programu povolil multitasking a prerušenie (ktoré som tiež odstavil). A zapol som COPPERu všetkých 9 DMA kanálov. Výsledok snaženia je, že mi COPPER zobrazuje správne s pravdepodobnosťou niekde medzi 50 až 80 percentami, čo je výrazné potlačenie chyby nezobrazenia sa obrazovky. Dosť pomohlo to prerušenie a mám za to, že dosť pomohlo aj to zapnutie všetkých DMA kanálov na konci, ale to už nemá logiku, tak si to asi len namýšlam... .

Nabudúce sa pokúsim vrátiť COPPER systému.

_________________
Amiga - PMD 85


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2279
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
Obiho kód z AM (AP):


Přílohy:
obnovCopper.jpg
obnovCopper.jpg [ 65.66 KiB | Zobrazeno 17704 krát ]

_________________
Amiga - PMD 85
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 03.04.2016, 23:42 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2279
Bydliště: Brno
Has thanked: 843 times
Been thanked: 302 times
Szukałem długo :lol:

Ta polská kniha je zatím to nejlepší co jsem našel :)

Příloha:
obnoveniSysCopperu.jpg
obnoveniSysCopperu.jpg [ 70.98 KiB | Zobrazeno 17666 krát ]


OK Obi potrebujem rozobrať příklad obnovenia, ale nachvíľu len aj o spustení (SetCopper), predpokladám, že je to ukážkový príklad, najskor som si myslel, že to cez A1 ženieš, aby sa to z neho obnovilo, to tam ale nevidím, teda by sa A1 mohol vynechať a ušetriť tak 1 riadok?

RestoreCopper:
1.riadok execu je jasný.
2.riadok - povedzme, že potrebujeme dostať adresu funkcie:
UserState(sysStack)(d0) = $9c do A1
3.riadok už budem naozaj strielat od boku. Našiel som na netu v poznámke, že na tejto adrese ($26) je uložený starý COPPER LIST. To sa k tejto adrese dostaneme len pomocou adresy UserState ($9c)?, čo je nejaké prerušenie.
To že výsledná adresa je adresa systémového COPPER LISTu, ktorú zapíšeme do $DFF080 je jasné.

Sorry za tie blbosti, ktoré som tu napísal a prosím uveď veci na správnu mieru.

_________________
Amiga - PMD 85


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 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 4 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:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz