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

 - Fórumok - 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: 2011. Nov. 03. 19:32


Nem saját programról beszélgetünk, hanem egy trackloaderes játékot hekkeltem át hd-ről futtathatóvá. Muszáj fix címről futtatnom.

dino
Kék troll

# Elküldve: 2011. Nov. 03. 19:52


Quoting: TCH
hanem egy trackloaderes játékot hekkeltem át hd-ről futtathatóvá.

Na, ez most mar engem is erdekel. Melyik ez a gama?:)

Chain-Q
Divatamigás

# Elküldve: 2011. Nov. 03. 20:28


@TCH:
Muszáj fix címről futtatnom.

Bazmeg tenyleg mindenhez nekem kell ertenem. exec.library/AllocAbs()...? Es olvasd el a Notes reszet is, kulonosen az elso 8 byterol szolo meset, maskepp szopsz. Az igy foglalt memoriat elvileg siman FreeMem()-mel tudod felszabaditani.

TCH
Tag

# Elküldve: 2011. Nov. 03. 20:33 - Szerkesztve: TCH


dino
Think Twice
Csalódás mi? ;)
A játék már fut, csak nem épp optimális, ahogy elindul.

Miután Csárli felhomályosított, a bootblockban található számok alapján sikerült kiszednem a játék kódját a megfelelő lemezblokkokból. Disassembláltam és további betöltéseket találtam benne (szám szerint hatot), ezeket is kiszedtem.
Utána végignéztem az elhelyezkedés sorrendjét és kiderült, hogy a hét blokk pontosan 384k-t foglal el, amit 128k-tól címez, úgyhogy fogtam és összefűztem őket.

Ezután fogtam egy hexaeditort és a DoIO() meghívásokat kicseréltem NOP utasításokra, lévén már nincs floppy.
Utána HS Pascalban és assemblyben írtam egy szar betöltőrutint, ami semmi mást nem csinál, mint berántja a $20000-es címre az egész szart, majd odaugrik.

Működött is, csak a kép esett szét. Gondoltam hátha az a baj, hogy trackloaderes lévén nem tűri a konkurrens képernyőket.
Betettem startup-sequencébe, hogy ne nyíljon WB screen és máris működött perfektó.

Ezután több cucc kipróbálása után az Aminetről leszedhető WBScreen használatával sikerült elérni, hogy csak ráklikkel az ember az ikonra és fut.

Annyi a hátulütője a dolognak, hogy a HS Pascalos loader nem a chipramba tölti be magát, vagyis ha nincs akármilyen másik fajta ramból (fast, slow, mb, akármi) még ~28k akkor nem megy.

Végeredményben így is jó, ha minden kötél szakad, de én szeretném, ha egy fájlban lenne az egész és nem lenne loader, meg külön wbcloser, hanem alapból oda tölti be az Amiga ahova kell, így simán megy csak chiprammal és mivel az első százvalahány byte úgyis feleslegessé vált, így oda be lehetne rakni a workbench close rutint is.

Sz*rk:
Hopp, Csárli alámpostolt.
Köszi Csárli, ez is már egy fokkal jobb, így nincs memcpy 24k-ként, hanem simán oda töltöm be, ahova allokáltam.

Sz*rk2: A legnagyobb vicc egyébként, hogy emulátorban mindenféle CPU alatt vígan megy, énnálam az A500+ alatt meg csak 68000 fallback módban, mert ha 68030 van, akkor a játék betöltődik, zenél, stb, de rányomok a start gombra és GURU.

TCH
Tag

# Elküldve: 2011. Nov. 04. 16:33


http://oscomp.hu/?details/Think_Twice_HD_version_Amiga_1395
Itt van a cucc.
Elvileg fut 1.2-től 3.1-ig és 68000-tól 68060-ig mindenütt, legalábbis winuae-ben mindenütt ment, az én gépemen csak 68000 fallback módban, lehet valamit nem szeret a kártyámon. :P
Kell neki az A500 alap 512k chip ramja, meg 32k egyéb (akármilyen, csak nem chip).

Chain-Q
Divatamigás

# Elküldve: 2011. Nov. 04. 16:51


Told már ide azt a HSPascalos loadert, ennyire nem lehetsz láma, hogy nem bírod megoldani h. ne kelljen neki más RAM... :P Amigán vagyunk baszki!

dino
Kék troll

# Elküldve: 2011. Nov. 04. 20:22


Ha megcsinaltatok kuldjetek at nekem is,(de csak a gamat) mer en ataludtam a matekorakat...
Szal a vegeredmeny nagyon erdekelne :D

TCH
Tag

# Elküldve: 2011. Nov. 04. 20:56


charlie
http://vizilou.uw.hu/tt.pas

dino
Már ott van az előző postban, már működik.

Chain-Q
Divatamigás

# Elküldve: 2011. Nov. 04. 23:29


Namost en nem ertek a HS Pascalhoz, meg respect, hogy megcsinaltad, de ez a kod sok szempontbol is facepalm... Valoszinuleg mindossze annyi a baja, es azert kell neki Fast RAM, mert globalis valtozoba foglaltad le tombot, ahova betoltod a szart, es ezt a HS Pascal runtime libje mindenkeppen a Fast RAM-ba akarja foglalni. Masreszt meg azert kell 16 lepesben betolteni, mivel 32K-nal nem lehet tobb static valtozo, mivel a 68k ennyit tud base regiszterhez kepest megcimezni. :) O gyasz... Ha megirom BARMIBEN, ugy, hogy ne kelljen hozza Fast RAM, beleteszed a 'releasebe'? Mert potyara nem szopok vele, csak ha ertelme is van.

Egyebkent szerintem Pascalban is meg tudnam irni olyanra, hogy egybol a Chip RAM-ba BlockRead()-elje a megfelelo helyre, de valszeg ez azon nem segit, hogy a HS Pascalnak mindenkeppen kell Fast RAM a globalis szarjaihoz.

TCH
Tag

# Elküldve: 2011. Nov. 05. 00:06


Quoting: charlie
de ez a kod sok szempontbol is facepalm...
Most csinálom először. A HS Pascalnak meg nem volt manualja, amit rtfm, a gugli meg szokás szerint szart se ér.
Quoting: charlie
Valoszinuleg mindossze annyi a baja, es azert kell neki Fast RAM, mert globalis valtozoba foglaltad le tombot, ahova betoltod a szart, es ezt a HS Pascal runtime libje mindenkeppen a Fast RAM-ba akarja foglalni.
Miért, ha betenném az egészet egy procedurába és azt hívnám meg a begin után, akkor azt a chip ramba rakná? Mert szerintem mindenképpen kell neki fast ram. Hacsak nincs valami compiler directive, de én olyat nem találtam.
Quoting: charlie
Masreszt meg azert kell 16 lepesben betolteni, mivel 32K-nal nem lehet tobb static valtozo, mivel a 68k ennyit tud base regiszterhez kepest megcimezni. :)
Ezért tud a blockread csak 32k-t beolvasni egyszerre?
Quoting: charlie
Ha megirom BARMIBEN, ugy, hogy ne kelljen hozza Fast RAM, beleteszed a 'releasebe'?
Nyilván. De az igazi az lenne, ha a csomagban lévő tt.prg elé be tudnánk tenni egy Amiga hunk fejlécet, ami kapásból $20000-re tölti be az egészet.
Quoting: charlie
Egyebkent szerintem Pascalban is meg tudnam irni olyanra, hogy egybol a Chip RAM-ba BlockRead()-elje a megfelelo helyre
Azt én is próbáltam, hogy
var Ptr: Pointer;
...
Ptr := Pointer($20000);
...
BlockRead(F, Ptr^, 24576);
Ptr := Pointer(Integer(Ptr) + 24576);
de felborult tőle a rendszer, miután teleszemetelte a képernyőt.
De még ha így is nézne ki, akkor is kellene neki 4k fast vagy slow ram. Az egész programot a fast (vagy slow) ramba húzza.

Chain-Q
Divatamigás

# Elküldve: 2011. Nov. 05. 01:10


Na, mivel nincs HSPascalom, meg mar keso van csak igy par tipp elsore:

1., Ha betenned a proceduraba, akkor lokalis valtozo lenne, amit a stacken foglalna le. A hatranya ennek, hogy Amigan alapbol csak 4K stack van, szoval ezt hagyjuk. En a dinamikus memoriafoglalasra gondoltam. Pascalban GetMem(), de meginkabb AllocMem(), MEMF_CHIP flaggel. Es nem veletlenul mondtam az exec.library/AllocAbs()-ot sem, amivel kb. le lehet foglalni a kivant cimet (ha szabad).

2., Ezt a HUNK fejlecbol fix cimre dolgot szerintem felejtsuk el. Meglepne, ha Amigan lenne erre tamogatas az exeformatumban. Mert ugye, mivan akkor, ha az a cim, ahova az exe toltodni akar, az mar foglalt? Elfailel a vegrehajtas? Felulirja a mar ott talalhato adatot? Csunya abuzalasokat lehetne ezzel vegrehajtani... Szoval szerintem ilyen nincs.

3., Biztos, hogy a BlockRead egyszerre csak 32K-t tud olvasni? Regen mintha TP-ben tenyleg igy lett volna (vagy 64K volt a limit?), de Amigan az egvilagon semmi ertelme sem lenne ilyen limitnek, leven a BlockRead() alatt mukod AmigaDOS hivasban sincs ilyen limit.

4., A Pointermagia amit csinaltal, az majdnem jo, csak ott csuszik el, hogy szerintem az Integer() az 16 bites ertek, es foleg signed, igy ha Integer()-re castolod a Pointert, akkor elveszik a felso 16 bitje ill. negativ lesz. Ami egyben meg is magyarazza, hogy mitol trashelte el a Chip RAM legelejen levo WB kepernyot, meg a nullaslapot (procivektorok!), amely utobbi mulvelettol meg kapasbol el is fagyott a picsaba.

YADA
Tag

# Elküldve: 2011. Nov. 05. 01:40


Nemazert de asm (vagy C) alatt tuti egyszerubb lenne. Szinte faj latni hogy ilyen piszlicsare kod kedveert ekkora keverest muveltek. Szerintem meg tutorialban is van kesz kod mindegyik nyelven, pl.: "buffered file read" cimen

par amigas programozasi segedlet kezdoknek:
http://www.pcguru.plus.com/tutorial/file_io.html
http://gulasoft.uw.hu/AmigaDoc/AmigaAsmTutorial.txt
http://eab.abime.net/showthread.php?t=45654&page=4
http://www.lysator.liu.se/amiga/code/guide/howtocode/text/

Chain-Q
Divatamigás

# Elküldve: 2011. Nov. 05. 01:43


YADA: Igen, az volt a terv, hogy C-ben vagy asmban irok masikat, de most lusta vagyok (meg nincs keznel classic gep). Szoval neveljuk a gyereket cimszoval a meglevo koddal foglalkoztam inkabb. Amugy velemenyem szerint meg az is elofordulhat, hogy egy budos sort sem kell irni hozza, mert valami exetomorito tud fix cimre kitomoriteni, oszt akkor azzal, oszt kesz. :) De most ahhoz is a classicom kene, hogy megnezzem, ami nincs itt.

dh1
Mr. DTP

# Elküldve: 2011. Nov. 05. 09:21


Nincs keznel Classic gep? Mi van az A1200 es A2000 comboval? Eladtad?

Chain-Q
Divatamigás

# Elküldve: 2011. Nov. 05. 09:51


Azt mondtam, hogy nincs keznel, nem azt, hogy nincs. :) Az egyik A1200-am a melohelyen van soros debug stationnak, a masik lent van a Csokiban, vasarnapra keszulve, az A2000 meg szet van szedve, ezen kivul felujitjuk a szobat, ahol altalaban ossze van rakva. A Pegasosom sem megy napok ota. Ha nem lenne a cegnel a Mac mini, elvonasi tuneteim lennenek. :P

TCH
Tag

# Elküldve: 2011. Nov. 05. 11:15


charlie

1. Az a baj, hogy maga a program is a fastramba töltődik be. Nem az allokálással van a baj, mivel a játék nem OS friendly, a futáskor úgyis ROM-ba dől az egész rendszer, nem kell allokálni, kiírom 128k-tól 512k-ig a játékot és odaugrok. A baj azzal van, hogy a HS Pascalnak nem lehet megmondani, hogy a loader program a chip ramba töltődjön be. (Vagy csak én nem találom.)

3. Nem tudom, hogy a blockread mennyit tud, de a HSP csak 32767 (tehát nem is full 32k, hanem 32k-1) byte-ot tud.

4. Bassza meg! Ez az Integer 16/32 kezd az agyamra menni. Kösz Csárli, így valóban megy 24k-s byte tömb nélkül, közvetlenül oda, ahova kell.

Betettem az egészet egy procedurába, már nincs byte tömb sem, de ha lefuttatok egy NoFastRAM parancsot, a program induláskor öxxexarja magát. Vagyis magának a HSP binárisoknak kell a fast vagy slow ram. (Vagy én nem állítottam be rendesen.)
Szóval most 32k helyett már csak 4k kell neki.

A forrásfájlt az újat ugyanott találod, itt fentebb.

TCH
Tag

# Elküldve: 2011. Nov. 05. 16:48


charlie
oscompra tettem fel hspascalt, ha kellene. :P
(Meg sascét is.)

Chain-Q
Divatamigás

# Elküldve: 2011. Nov. 05. 23:53 - Szerkesztve: charlie


Szolgalati kozlemeny: A Guru partyval kapcsolatos hozzaszolasokat innen attettem a Guru Reborn topicba, ott tessek folytatni, koszonom. :)

TCH
Tag

# Elküldve: 2011. Nov. 06. 00:08


Há-düdüdű-düdüdű!
Figyelem, figyelem!
Szógálati közlemény: Karcsi, hozd vissza a fogómat, mert pofánváglak!
Há-düdüdű-düdüdű!
;)
http://www.youtube.com/watch?feature=player_detailpage&v=-QkxsoBcOzg#t=51s

AliveMOon
Tag

# Elküldve: 2013. Jan. 23. 02:10 - Szerkesztve: alivemoon


Megtaláltam az egyik 1998-as "HarvesterCD"-m! Kiprobáltam WinUAE-alatt és kapásból müküdütt exact ciklusidövel, akkor még hülye voltam, hogy lekérdezzem az időt, valós gépeken jól megy!

Az a lényeg joyval lehet föl le szaladgálni egy listában és inditgatni progikat!
Egy kép szolgál az egészhez skinként, azaz egyszerüen át is lehet dizájnolni!

A "!" könyvtárban benne van a forrás is, ha valaki szeretne hasonlót csinálni!

Valahol lenne hely megosztani? Akkor feltöltöm!

Később talán ki is javítok egy két hibát amire most felfigyeltem!

LacaHero
Tag
# Elküldve: 2013. Jan. 23. 05:32


Mindig szívesen tanulok, szóval jó lenne ehhez share terület! Egyébként sikerült vennem egy "Az Amiga programozása C és Assembly nyelven" c. könyvet. Amíg nincs rendes monitorkábelem (RGB to Scart), addig valami emulátorral nézném a dolgot. Melyiket javasoljátok? Elérhető valahol egy olyan csomag, ami egy egyszerű kis fejlesztőkörnyezetet tartalmaz és egyszerűen éleszthető emulátorban? (AsmOne, Seka, ...)

AliveMOon
Tag

# Elküldve: 2013. Jan. 23. 05:51 - Szerkesztve: alivemoon


Én a Louise cuccát szoktam használni mostanában!


Online help!
Hard file link, kis rizsával! // tökéletes, csak annyi, hogy 1024*768 as felbontást nem árt adni neki, mert különben egymásra pakolja a tool_managger gombjait és úgy vicces használni :)

LacaHero
Tag
# Elküldve: 2013. Jan. 23. 06:00


Nagyon köszi! Melyik emulátort használod?

AliveMOon
Tag

# Elküldve: 2013. Jan. 23. 06:17 - Szerkesztve: alivemoon


WinUAE-t, 3.1 kick!

Ja ha jól emlékszem az elején megijeszti az embert, hogy xyzhumbulumbu screenmode nem létezik, ( ha jól emlékszem Louies-nak valami 3000-ese volt és szerintem egy valódi grafkártyát keres) Simán ki kell törölni a piccasso96 prefs-ben és csinálni UAE-hez párat(rádobálni a halálfejre és new item)!

LacaHero
Tag
# Elküldve: 2013. Jan. 23. 06:45


Köszi! Huhh megnézem mac-re mi van. FS-UAE meg E-UAE a választék. Valakinek van tapasztalata Mac alatti Amiga emulációval? Melyik a legjobb szoftver hozzá?

dh1
Mr. DTP

# Elküldve: 2013. Jan. 23. 09:21


Van ... eleg gaz mivel nincs JIT ... ize illetve volt most valami uj JIT-et is tamogato 64 bites emu, de rohadtul nem emlekszem a nevere. Utananezek

AliveMOon
Tag

# Elküldve: 2013. Már. 23. 07:38 - Szerkesztve: alivemoon


A héten össze raktam egy minél egyszerűbb induló forrást, mondjuk játék íráshoz!
Forrás!

Van benne egy futtatható file is.

Nyit egy DoublePlayField képernyőt, betölt egy fülke képet előtérnek, a háttérhez betölt, egy egyszerűen konfigurálható adatsort.

idx
0 0 0 0 0 1 0 0 0 0
next
alt
1 -100.0 100.0 100.0 100.0 100.0 -100.0 -100.0 -100.0 -100.0 100.0
2 0.0 100.0 100.0 0.0 0.0 -100.0 -100.0 0.0 0.0 100.0
next

index
melyik mintát használja
next
alt
color x0 y0 x1 y1 ...... xn yn
color x0 y0 x1 y1 ...... xn yn
next

(a color egyenlőre nem működik, jövőhetén megcsinálom hogy ki is legyenek fillezve a körvonalak, akkor lesz funkciója )

Írányítás
Joy
job ball - dönt
elörre hátra - fel le

tűz kilép

dh1
Mr. DTP

# Elküldve: 2013. Már. 23. 19:36


Majd mögnezem! :)

AliveMOon
Tag

# Elküldve: 2013. Már. 24. 02:53 - Szerkesztve: alivemoon


Aha rájöttem egy kis bugra, shell-ből remekül indul.
Azonban Iconról indításnál úgy vettem észre autómatikosan nem a saját könyvtára a munka környezet. Azaz hiányzik egy chagedir, valszeg kéne egy assign és elérési uttal ellátni a fileneveket a forrásban.

Végül is adott egy kezdő kérdés, hogyan lehet a rendszertől lekérdezni, wb honnan indította a cuccot?
Meg kapom argumentumban?

Chain-Q
Divatamigás

# Elküldve: 2013. Már. 24. 10:27 - Szerkesztve: charlie


@AliveMOon:
Ez AmigaOS itt nem kell hekkelni, mindenre van megoldás: a PROGDIR: "virtuális" assign programon belülről nézve minden programban abba a könyvtárba mutat, ahol az executable van. CLI-ből és WB-ből indítva is. (OS2.x+ feature)

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

Powered by online community software miniBB™ © 2001-2024