Hírek | Archívum | Fórum | IRC | Amiga | AmigaOS | FAQ | RSS

 - Fórumok - Regisztráció - Keresés - Statisztika - Szabályzat - Pegasos.hu fórum
forum.amigaspirit.hu / Fejlesztés / Motorola 68000 Assembly kezdőknek
. 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . >>
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... ;)

. 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . >>
forum.amigaspirit.hu / Fejlesztés / Motorola 68000 Assembly kezdőknek
 
 

Powered by simple bulletin board miniBB™ © 2001-2019