Szerző |
Üzenet |
TCH
Tag
|
# Elküldve: 2007. Okt. 01. 19:22
Üdv, Amigók.
Hát én arra gondoltam, hogy itt lehetne ilyen "oktatást" tartani a hozzám hasonló kezdő 68k-soknak, feltenni kérdéseket, hogy ezt meg azt hogyan lehet, vagy hogyan célszerű leprogramozni.
Előbb utóbb úgyis betéved valaki, aki tudja és megválaszolja. :)
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Okt. 01. 19:23
Ja. Most mar csak az kene, hogy kerdezzel valamit? :D
|
TCH
Tag
|
# Elküldve: 2007. Okt. 01. 19:31
Semmi akadálya. :)
Először is a képernyőkezeléssel kapcsolatban kéne vmi tömörebb és használhatóbb megoldás, mert a neten csak agyonbonyolított példákat találtam. (persze lehet, hogy csak bénán kerestem :P)
Szóval: - Képernyőnyitás, zárás á la OCS, ECS, AGA. - Palettakezelés. - Sprite és Blitter Object kirajzolása.
Így első nekifutásra.
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Okt. 01. 19:38 - Szerkesztve: charlie
Szerintem ezek olyan temak, amik majd egy-egy wiki cikknek adnak jo apropot... Igy forumba tul nagy lelegzetvetelu lenne, szerintem.
|
TCH
Tag
|
# Elküldve: 2007. Okt. 01. 19:54
Jó, csak majd a "végeredményben" ne bonyolítsd túl a kódot. :) Vagy copyzd be a lényeget. :P
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Okt. 01. 20:16 - Szerkesztve: charlie
Sok a bajod nem? :P Amugy, full asmban nemtom hogy nekiallnek-e ma barminek, Amigara. Legalabb a program vazat, fajlkezelest, rendszerinterfeszt erdemes peldaul C-ben - vagy ha valaki ragaszkodik vmi Amigas nyelvhez amit egyszeru illeszteni assemblyhez akkor E-ben - irni szerintem.
Es ez nem negalja azt, hogy az idokritikus meg hardverkozeli reszeket viszont tenyleg erdemes szenne optimalizalni asmban. Kiveve persze ha mondjuk 4k introt akarsz csinalni, de indulasnak nem ajanlanam... :)
|
TCH
Tag
|
# Elküldve: 2007. Okt. 01. 20:36
Hát nem introt, csak vmi egyszerűbb cuccot, ami kirak pár spritet/bobot a képernyőre és mozgatja.
|
rachy
Tag
|
# Elküldve: 2007. Okt. 01. 21:06
Szerintem ehhez teljesen felesleges az assembly, sot...
|
neongod
Alapító Tag
|
# Elküldve: 2007. Okt. 01. 21:10
Mivel tudtommal TCH asm-et tanul a foiskolan/egyetemen, ezert erdekli a 68k asm. De javits ki TCH ha tevedek :)
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Okt. 01. 21:16
Jahogy... :)
|
TCH
Tag
|
# Elküldve: 2007. Okt. 01. 21:18
Hát azt is, de sajnos csak intelt, azt meg nagyon nem szeretem. De érdekes, a könyvtárban van 68xxx, 65xx sőt Z80 is. :)
|
Artlace
Tag
|
# Elküldve: 2007. Okt. 01. 21:20
a "hogyan programozd fel az Amiga chipseteket" es a 68K Asm kozott ugyan van osszefugges, kulonosen ha az egesz kodbol nem latunk mast mint chip regiszterekbe firkalast.
Esetleg kiegyezhetunk egy "hogyan adjunk at strukturakat asm-ban oprendszer fuggvenyeknek" akkor talan kozelebb jutunk a temahoz.
De javitsatok ki ha tevedek.... :)
|
TCH
Tag
|
# Elküldve: 2007. Okt. 01. 21:26
Nekem úgy is jó, csak asmben szeretném látni, hogy hogy működik. :)
|
rachy
Tag
|
# Elküldve: 2007. Okt. 02. 09:12
TCH: nem igazan ertem most mire is vagy kivancsi. Hogyan kell felparameterezni es meghivni egy rendszerrutint? Vagy hardvert direktben hasznalni?
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Okt. 02. 09:22
Szerintem pont az a baj, hogy nagyon az alapoktol kene kezdeni. Mondjuk onnan, hogy ketfele modszer van a fenti kerdesekre, lehet HW banging, meg OS-friendly. Plusz, ugye 1.3-on (hogyha mondjuk mennie kell minden gepen), tok mashogy kell rendszerrel kepernyot nyitni mint 2.x+-on, mert amennyire emlekszem 1.3-on nincsenek taglistak (se). Es akkor meg itt az, hogy most milyen nyelven irjuk, be se jott a kepbe. :P
|
TCH
Tag
|
# Elküldve: 2007. Okt. 02. 09:51 - Szerkesztve: TCH
Nekem teljesen mindegy, hogy most a rendszerfüggvényt paraméterezitek, vagy a hardwareregiszterekbe írogattok, a lényeg, hogy képernyő/paletta/sprite/bob kezelés 68000-ben, OCS-től AGA-ig.
Amelyiket jobbnak látjátok. Vagy akár mindkettő. :D
|
Artlace
Tag
|
# Elküldve: 2007. Okt. 02. 12:01
Oke, en talan elkezdem a sort a latszolag legegyszerubbel:
Amiga rendszereken ma mar nem indokolt a HW banging, ha tobbi rendszeren is akarjuk hogy mukodjon a kod. A500 idokben ez maskepp nezett ki mert sem eroforrasbol se gepbol nem volt tobb, igy C64-hez hasonloan ami A500-on mukodott, az masik A500-on is.
Ahogy az A500+ meg az elso fastram/slowram kartyak elkeszultek, egyertelmuve valt hogy vagy az oprendszerre bizzuk a dolgok egy reszet, vagy figyelemmel vagyunk a lehetseges elteresekre.
A mas oprendszerekben elterjedt shared library az Amiga rendszeren sincs maskepp, bar sokkal atgondoltabb es eroforrastakarekosabb, szerintem.
Az egesz a library base address-sel (rovidebben libbase) kezdodik amit a legtobb oprendszer fuggveny kovetel is maganak. Ez a "kanyha" amitol el lehet indulni egy library hasznalata soran.
Tehat, a screen-ek es ablakok kezelese az intuition.library feladata, igy az elso dolog ennek a megnyitasa. Amigan az assemblerek is birnak include file-okkal, igy a library megnyitasahoz szukseges ertekek mar megvannak.
Tehat a minimalis include-k igy nezhetnek ki:
include "exec/types.i" include "exec/funcdef.i" include "exec/exec.i" include "intuition/screens.i"
Az intuition library feltehetoleg nyitva is van, de tobbszor megnyitas is lehetseges a shared mivolta miatt:
movea.l #IntuitionName,a1 ;library neve a1-ben move.l #0,d0 ;verzioszam d0-ban movea.l ExecBase,a6 ;execbase a6-ban jsr OpenLibrary(a6) ;OpenLibrary( ) meghivasa move.l d0, IntuitionBase ;IntuitionBase elmentese kesobbi celra beq.s Abort2 ;ha nem sikerulne
movea.l #MyNewWindow,a0 ; NewWindow struktura a0-ban move.l IntuitionBase,a6 ;IntuitionBase a6-ban jsr OpenWindow(a6) ;OpenWindow( ) move.l d0,MyWindow ;megnyilt ablakra mutato pointer beq.s Abort1 ;ha nem sikerulne
<... Innentol johet maga az erdemi kod, amiert az ablak megnyilt. ...>
Abort1: move.l IntuitionBase,a1 movea.l ExecBase,a6 jsr CloseLibrary(a6)
Abort2: clr.l d0 rts
SECTION data,DATA
MyNewWindow: dc.w 0,12 dc.w 200,100 dc.b -1,-1 dc.l CLOSEWINDOW dc.l WINDOWCLOSE|WINDOWDEPTH|WINDOWDRAG|WINDOWSIZING|ACTIVATE dc.l 0 dc.l 0 dc.l WindowTitle dc.l 0 dc.l 0 dc.w 80,24 dc.w -1,-1 dc.w WBENCHSCREEN
IntuitionName: dc.b 'intuition.library',0 ;Library neve a megnyitashoz WindowTitle: dc.b 'Close Me',0 ; A szoveg az ablak fejleceben
SECTION mem,BSS
_IntuitionBase: ds.l l ; IntuitionBase helye MyWindow ds.l l ; Window pointer helye
a DATA es a MEM section tartalmazza az strukturakat es adatokat, amelyek a binaris megfelelo reszeibe (hunk-jaiba) kerulnek majd. A strukturak es a fuggvenyek megfelelo hivasi rendje (hogy mikor melyik regiszterbe melyik parameter kerul) azaz calling convention az RKM - Rom Kernel Manual-ban van felsorolva, a fenti pelda mindegyikre igaz. Valojaban ez a parameter/struktura gyartas az OS alatti asm programozas lenyege.
A NewWindow struktura amit az OpenWindow fuggveny fogad, is az RKM-ben van felsorolva, hogy melyik tag mit jelent. Elegge beszedesek, persze ebben a listazasban semmitmondoak hiszen nem latni hogy az elso ket word micsoda, aztan melyik longword melyik parametert jelenti.
Igy kezdetnek ennyi, ehhez mar hozza lehet szolni, lehet otleteket, bevalt gyakorlatokat es javaslatokat mondani.
Ahogy latszik (meg ahogy az elottem hozzaszolok irtak is), nem igazan 68K ASM-hanem Amiga-specifikus.
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Okt. 02. 12:15
Artlace: Ez taglistas modszer, ami nem megy 1.3-on peldaul, szerintem. :)
|
Artlace
Tag
|
# Elküldve: 2007. Okt. 02. 12:17
Chain-Q : Valoban nem, hozzatartozik akkor hogy csak Kick 2.x felett mukodik. De mindenkepp valami amire mar tehet fel kerdeseket TCH. :)
|
TCH
Tag
|
# Elküldve: 2007. Okt. 02. 16:09
Tippelnék. :)
Hát az első 4 word szerintem a top, left, width, height akar lenni, az utána következő -1, -1 nem tudom mi, de szerintem valamit True értékre állít, mondjuk a window.visible és window.enabled értékeket. Az utána következő longwordok szerintem konstans értékek, amik logikai vagy kapcsolatban vannak egymással, egyszóval flagek. A 80,24 fingom sincs mi, a rá következő két db -1 megint True akar lenni, a WBENCHSCREEN pedig a parent window.
Na, lehet értékelni, mit nem sikerült kitalálnom. :)
|
Artlace
Tag
|
# Elküldve: 2007. Okt. 02. 17:01 - Szerkesztve: Artlace
Itt jon az hogy nem talaloskerdes.
os-include/intuition/intuition.h -bol reszlet:
struct NewWindow { WORD LeftEdge, TopEdge; WORD Width, Height;
UBYTE DetailPen, BlockPen; ULONG IDCMPFlags; ULONG Flags; struct Gadget *FirstGadget;
struct Image *CheckMark;
UBYTE *Title; struct Screen *Screen; struct BitMap *BitMap;
WORD MinWidth, MinHeight; UWORD MaxWidth, MaxHeight;
UWORD Type; };
Bovebb magyarazat itt
|
TCH
Tag
|
# Elküldve: 2007. Okt. 02. 17:05
Kösz a linket, meg a kódokat is. Ki fogom próbálni.
|
cyborg
Tag
|
# Elküldve: 2007. Okt. 04. 21:00
minek asmba irni bármit? pláne ilyen gagyi procin,cca nem nyer az ember semmit a c-hez képest, különben is a 16 regiszter locsöcs
|
Emeric SH
Tag
|
# Elküldve: 2007. Okt. 04. 23:20
Pedig pont a gagyi procikon nyersz sokat a C-hez képest. Már elnézést :)
|
TCH
Tag
|
# Elküldve: 2007. Okt. 05. 16:09
Gagyi proci??? A M68k? És wtf, hogy a 16 regiszter lócsöcs? Miért, a kurwa intelben mennyi van? 4?
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Okt. 05. 16:24 - Szerkesztve: charlie
Cyborg: elso es utolso figyelmeztetes: itt nem kezdesz Amiga, M68k, stb fikaba, es Playstation rulezbe mint Amiga.hu-n. Ha nincs erdemi hozzaszolasod a temahoz, akkor gyozd le a postolasi kenyszered. Koszi.
TCH: Provokaciora nem reagalunk, koszi. :)
|
TCH
Tag
|
# Elküldve: 2007. Okt. 05. 16:27 - Szerkesztve: TCH
Jó, az előbb még nem tudtam, hogy agent provocateur, azt hittem valami futóbolond.
|
cyborg
Tag
|
# Elküldve: 2007. Okt. 05. 22:05
Chain-Q : provokácio az hogy egy 20 éves processzort legagyizok? mikor ma a legocskább microkontroller is lenyomja? ne fáraszd magad a törölgetéssel többet ugysem nézem meg az oldalt mert leszarom az amigat :)
|
Artlace
Tag
|
# Elküldve: 2007. Okt. 06. 11:39
Oke, kerdes megoldodott. Aki tovabbra is erdekel a tervezoceg altal ma is egyik legsurubben(!) hasznalt processzor architektura programozasa, varjuk a hozzaszolasat.
|
rachy
Tag
|
# Elküldve: 2007. Okt. 07. 10:46 - Szerkesztve: rachy
Egy kis segitseg:
Motorla 680X0 Programmer's reference manual - kotelezo olvasmany 68k asm programozashoz. A magyarul megjelent szakirodalmat nyugodtan felejtsetek el, annyi hiba van mindegyikben. (En mar csak tudom... ;)
|