Welcome, Guest. Please login or register.


Author Topic: Assembly programozás (Read 254385 times)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Assembly programozás
« Reply #510 on: 2013.October.27. 07:25:32 »
Quote from: Z80System
Hát ez marha jó ... Ilyeneket miért most kell megtudjak ...

Hat azt en honnan tudjam :) De az biztos, ogy komolyabb demoknal nagy multja van a matematikai kozeliteseknek, hogy lehet egesz muveletekkel szinten barmit megcsinalni, ugye jol jott ez meg C64 (de csak azert irom ezt, mert errol van tapasztalatom) meg 3D gyorsitokartyas PC-k elotti demok vilagaban, ahol akar egy phong/gouraud shading-et kell megprobalni belezsufolni par gepi kodu utasitasba, kulonben nem fog menni real-time .... stb :)

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Assembly programozás
« Reply #511 on: 2013.October.27. 10:56:29 »
Ahogy azt lgb mondja. Az ilyen erőforrás hiányos rendszereken a játék~ és demoprogramozás mindig arról szól, hogy valamit elcserélsz valamire. A cserélhető dolgok a memória és a processzor órajel ciklusok. Ha valamit bonyolult kiszámolni, azt táblázatokra cseréled. Ha túl sokáig tart betölteni, legenerálod. A tecsövön vannak is ilyen videók, ahol pl. 64-es demokóderek magyarázzák el viszonylag érhetően, hogyan is működik ezeknek a "trade-off-oknak" a hangolása. Pl.: http://www.youtube.com/watch?v=So-m4NUzKLw&list=PL08C12B1B6ABA3328&index=1

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #512 on: 2013.October.27. 11:08:46 »
Ebből nem lesz vita, azt azonban mégsem gondoltam volna, hogy mondjuk színusz számolásra ( most nem érdekes hogy mi közelít mihez mennyire ) van pár integer utasításos változat ...

Ami attól még érdekesebb, hogy köröket meg rajzolgattunk ha jól emlékszem pár utasításos verziókkal ...

Mind1.
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #513 on: 2013.October.27. 17:16:04 »
Na akkor most 3 napi "megfeszített" munkám eredménye képpen "még jobban" be van kapcsolva egy LPT, és működik a backbuffering ... :)

Viszont ha csak egyik bufferbe rajzolok valamit, az vas EP -n olyan szokott lenni, hogy vibrál és a vibrálásból kifolyólag, mivel a másik képen feketeség van, ezért sötétebb mint ha rendesen ki lenne rajzolva.

Ez emun is látszik, mert villog, de elég összevissza, lárszik hogy nem ugyanannyi ideig van a két kép a képernyőn. Tehát vibrálás közben hol erősebben, hol gyengébben látszik.

Próbáltam a video opcióknál a resample -t is, meg a framebuffereket, meg amit csak találtam, de nem múlt el.

Ez ennyit tud, ne is keressem a megoldást ?

Valószínűleg ha ilyen pontatlanul vannak a képen a dolgok, ez a normál működésen, játékokon is meg kell latszon ... nem ?
Z80 System

Online szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Assembly programozás
« Reply #514 on: 2013.October.28. 12:08:38 »
Quote from: endi
Én már addigra csináltam egy alap pályaeditort (delphi+asm), régebbi munkáimra alapozva. Mondtam neki hogy azt folytassa inkább. Főnök is mondta neki. De ráhagytuk.
Szerintem nagyon nagy meló lehet egy olyan programot írni tovább, amit más kezdett el. Egyszerűbb, ha az folytatja, aki elkezdte. Átnézni, "visszafejteni", ráhangolódni külön idő. Én a basic programokkal mindig így voltam.
Aztán biztos vannak nagyon penge elméjű emberek, akik csak ránéznek az addig elkészült kódra, mindent átlátnak benne és továbbírják, mintha ők kezdtél volna.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #515 on: 2013.October.28. 12:27:52 »
Quote
Szerintem nagyon nagy meló lehet egy olyan programot írni tovább, amit más kezdett el. Egyszerűbb, ha az folytatja, aki elkezdte.

Igen, sajnos a 2 dolog eléggé különbözik, mikor te írod a kódot, akkor az egész felől haladsz a részletek felé, míg mikor más kódját érted meg, akkor a részletekből haladunk ugye az egész fele, a részletekből kell összeálljon az egész ...

Míg az elsőnél elég egy analítikus (sokszor ez is hiányzik) gondolkodásmód, "józan paraszti ész" is, addig a másodiknál kicsit zseninek kell lenni. Persze teljesítménytől függően ... Egy for ciklusban lévő részletek azonnali "koncepcióva" gyúrása az én képességeimet sem haladja meg, de mikor az ember kap egy 200 ezer soros programot amit addig még nem is látott, hogy hát ez most ilyen, nekünk meg inkább legyen olyan, ráadásul tegnapra ... hát ott már az átlag ész kicsit szalajtani kezd ...

Én emlékszem, az általános iskolában a hülye táblázatokon mindig bebuktam ... matekórán ... mikor kaptál egy táblázatot, fel kellett ismerd a kitöltött elemek alapján a szabályt, és ki kellett tölteni a maradékot ... sose jöttem rá a szabályra ... persze időre, végtelen idő alatt bármit lehet. Ez sztm ugyanaz mint ismeretlen kódot olvasni, és meglátni az összefüggéseket benne. És ez sztm nem is fejleszthető ... Aki megkapta annak összeáll mint a mátrix, aki nem az meg kaparhat.
« Last Edit: 2013.October.28. 12:31:04 by Z80System »
Z80 System

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Assembly programozás
« Reply #516 on: 2013.October.28. 12:38:52 »
Quote from: szipucsu
Szerintem nagyon nagy meló lehet egy olyan programot írni tovább, amit más kezdett el. Egyszerűbb, ha az folytatja, aki elkezdte. Átnézni, "visszafejteni", ráhangolódni külön idő. Én a basic programokkal mindig így voltam.
Aztán biztos vannak nagyon penge elméjű emberek, akik csak ránéznek az addig elkészült kódra, mindent átlátnak benne és továbbírják, mintha ők kezdtél volna.
Persze, viszont ahogy emlékszem a srác kb semmit se kérdezett, értette a kódomat magától is. Pedig csak alap szinten volt felkommentezve.

Amúgy egy 4 szintű parallax scrollos tile grafikás (gameboy advanced ilyesmit tud) editor volt. Valójában az editálás a rajzolóprogramban történt (Deluxe Paint!!!). Ezt a képet töltötte be a programom, detektálta a képen az azonos tile-okat (tükrözést is, mert a gameboy azt is tud hw-ből) és ezek alapján elmentette a megfelelő adatokat (tile-k, pálya stb.)
Szóval ezt láttad az én editoromban, lehetett scrollozni (4 szintű parallax scroll), ugyanakkora képernyő volt mint a gameboyon, mellette meg az editor kezelő gombjai. Itt az editorban a munka az volt, hogy meg kellett adni hogy mivel ütközöl, mi sérít, mindenféle egyéb adatok beállítása stb.
Meg persze meg volt írva egy csomó alap dolog, buttonok, szövegkiírás stb.

De mondom, a srác kb semmit se kérdezett, simán tudta használni a kódomat. Amit aztán ő beleépített az kb ilyesmik hogy ellenségeket lehetett lerakni, megadni milyen útvonalon, területen mozognak meg ilyesmik.
Vigyázat! Szektás vagyok! :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #517 on: 2013.November.01. 11:54:44 »
Jól gondolom, hogy SP regisztert használó memória olvasó/író kódoknál a megszakítás le kell legyen tiltva ( vagy valahogy máshogy kell biztosítani, hogy ott ne legyen megszak ), mert különben a megszak kinyírja az értelmes adatokat ?

Egy kivétel lehet ez alól, mikor csak írok vele, és a megszak mindíg közvetlen elé írna, így nem értékes adatokat felülírva ?
Z80 System

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #518 on: 2013.November.01. 12:23:36 »
Jól.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #519 on: 2013.November.01. 12:28:40 »
Na még egyszer a memória késlekedéséről ...

Múltkor mikor kérdeztem erről, mindenféle trükkös ábrákat, meg ilyesmiket kaptam válaszul, ami elhiszem, hogy frankón és részletesen leírja az összes esetet, de nekem valami viszonylag gyorsan feldolgozható infóra van szükségem, nem baj, ha nem 100% pontos.

Arról szeretnék képet kapni, hogy standard EP esetében (esetleg megkülönböztetve a 2 RAM típust) mennyire kell figyelembe vennem a RAM -ot igénylő utasításoknál, hogy nem a CPU leírásnál megadott órajelekbe fog az nekem kerülni.

Tehát ha le van írva, hogy az LD r, (HL) 1.75 órajel, akkor az tényleg annyi lesz, tehát az össz ideje ennyi, vagy csak valami ideális, 0 késlekedési idejű memóriával lenne ennyi, és valójában az EP esetében ez 10 órajel ideig fog tartani ?

Vagy egy másik aspektusban, mikor maga az utasításkód van a memóriában (mind ott van, csak az egyik nagyobb, mint a másik), akkor pld. az LD r,n az 1.75 órajel szintén, és akkor ebből az következne, hogy egy EXX és ld a,b az együtt hosszabb lesz, mint az ld a,n, mert az EXX+ld a,b az ugye 2 órajel. Nade az ld a,n esetében az n is memóriában van, és ha annak van egy 10 órajeles memória késlekedése, akkor ez máris nem igaz.

Tehát hogy lehet gondolkodni ezekkel, mekkora nagyságrendű a memóriahozzáférések késlekedése EP -n, mind az operandusok esetén, mind pedig a beolvasott utasításkód esetén ?
« Last Edit: 2013.November.01. 12:33:23 by Z80System »
Z80 System

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Assembly programozás
« Reply #520 on: 2013.November.01. 12:34:00 »
ha jól emlékszem vannak táblázatok amikben egzaktul le van írva minde z80 utasítás ideje
Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Assembly programozás
« Reply #521 on: 2013.November.01. 12:34:56 »
megszakításról: ilyenkor a visszatérési cím SP-n tárolódik? tehát nem lehet olyan megszakítást írni amiben nincs SP használat?

már nem emlékszem :) bár azt nem tudom miért akarok emlékezni :D
Vigyázat! Szektás vagyok! :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #522 on: 2013.November.01. 12:48:17 »
Quote
ha jól emlékszem vannak táblázatok amikben egzaktul le van írva minde z80 utasítás ideje

Jól emlékszel, ezektől a táblázatokról szólnak a kérdéseim.


Quote
megszakításról: ilyenkor a visszatérési cím SP-n tárolódik? 

ja.


Quote
tehát nem lehet olyan megszakítást írni amiben nincs SP használat?

Zozo válasza alapján: ja.

Quote
már nem emlékszem  bár azt nem tudom miért akarok emlékezni 
Mert ha nem próbálnál meg visszaemlékezni, akkor nem éreznéd alapját annak, hogy alig vonatkozó butuskásokat kotyoghass ... :)
« Last Edit: 2013.November.01. 12:51:59 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #523 on: 2013.November.01. 14:13:47 »
Visszakerestem, valójában a régi faggatózásomra ezt a választ kaptam IstvanV -től, nem a táblázatokat, amikre emlékeztem:


Quote
Normál (nem video) RAM és ROM között szerintem nincs különbség, és az ezekhez való minden hozzáférésnél 0 vagy 1 Z80 ciklus késleltetés van a 0bfh I/O port beállításaitól függően. Az utasítás első  (vagy ha van CB, DD, ED, vagy FD prefix, akkor az első két) byte-jának az olvasása "M1" hozzáférés, aminél a késleltetést külön lehet szabályozni. Az "ld a, (hl)" normál RAM-ban futva és az alapértelmezett késleltetésekkel 8 ciklus, mert 4+1 az utasítás, és 3 az adatbyte olvasása. A video memória és a NICK I/O portok (080h-08fh) elérésekor a NICK busz órajeléhez kell szinkronizálni (~890 kHz), és ez 1 és 5 Z80 ciklus közötti késleltetést jelenthet; a 0bfh portnak ilyenkor nincs jelentősége.


De sajnos ebből a régi válaszban szereplő példából nekem még nem következik az, hogy össze tudnám hasonlítai a fenti 2. példában szereplő eseteket ...

De ha azt is összehasonlítaná valaki, lehet hogy a két válaszból már sikerülne leszűrnöm a szabályosságokat, hogy hogyan tudom megállapítani, hogy kb. akkor X utasítás, amire azt írjak, hogy 1.75 ciklus, az akkor mégis miért lesz 8 ciklus ...


Még támpontnak mondom, hogy a doksi ír ilyen értékeket is, hogy:


M Cycles : 1
T States : 4
4 MHz E.T. : 1.00


Ez mondjuk az "inc r" volt.


Tehát ha úgy könnyebb logikát adni a kiszámításra, hogy ezek is rendelkezésre állnak, akkor állnak ...
Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Assembly programozás
« Reply #524 on: 2013.November.01. 14:16:25 »
Quote from: Z80System
De ha azt is összehasonlítaná valaki, lehet hogy a két válaszból már sikerülne leszűrnöm a szabályosságokat, hogy hogyan tudom megállapítani, hogy kb. akkor X utasítás, amire azt írjak, hogy 1.75 ciklus, az akkor mégis miért lesz 8 ciklus ...
Az "1.75 ciklus" az valószínűleg 1.75 us, azaz 7 ciklus (T-state) 4 Mhz-es órajelen.