Welcome, Guest. Please login or register.


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

Offline endi

  • EP addict
  • *
  • Posts: 7305
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 39.0.2171.95 Chrome 39.0.2171.95
    • View Profile
    • Honlapom
Re: Assembly programozás
« Reply #855 on: 2015.January.19. 14:19:05 »
A 6 bites 62500 Hz-es hang már "feljavított" lehet, mert olyan dither (noise shaping) használatát teszi lehetővé, ahol a zaj nagy része a nem hallható 20000-31250 Hz tartományba kerül, és a hallható zaj alacsonyabb, mint az egyszerű 6 (vagy akár 7-8) bites konverziónál. A legtöbb modern DAC hasonló trükkel ér el akár 20-21 bites minőséget úgy, hogy az analóg kimenet ténylegesen csak néhány bites felbontású, de több MHz-es frekvenciát használ.

ez ok, de ehhez marha nagy freki kell, amit mi nem bírunk sebességgel z80-on
viszont kevesebb biten tárolva kisebb memória igény lesz, és ha lehetséges, közé interpolálva több bites értéket...?
Vigyázat! Szektás vagyok! :)

Offline geco

  • EP addict
  • *
  • Posts: 6316
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 31.0 Firefox 31.0
    • View Profile
Re: Assembly programozás
« Reply #856 on: 2015.January.19. 16:14:42 »
Konvertáltam egy darabkát, a végén lehet egy kisebb zaj, mert 1,3 KB még az utolsó előtti 16Kb-ból van.
Meghallgatni még nem tudtam, majd otthon.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 34.0 Firefox 34.0
    • View Profile
Re: Assembly programozás
« Reply #857 on: 2015.January.19. 17:53:28 »
Emulátoron előfordulhat, hogy időzítési probléma miatt zajos a lejátszás. :oops: Ez azért fordulhat elő, mert a NICK, DAVE, és Z80 szinkronizációjának a felbontása jelenleg 1 NICK slot, és mivel ez a DAVE mintavételezési frekvenciájának (250 kHz) nem egész számú többszöröse, a hangminták időzítésénél előfordulhat "véletlenszerű" pontatlanság (jitter). De szerencsés esetben - a Z80 és DAVE emuláció órajelének relatív fázisától függően - nincs ilyen hiba, és valódi gépen sem (ott viszont a rossz D/A konverzió okozhat problémát).

Ezzel a módosított verzióval, ami szinkronizálja a lejátszás indítását a DAVE hanggenerátorával, talán elkerülhető a hiba:
* sndp625.s (4.56 kB - downloaded 186 times.)
« Last Edit: 2015.January.19. 18:36:02 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 6316
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 31.0 Firefox 31.0
    • View Profile
Re: Assembly programozás
« Reply #858 on: 2015.January.19. 18:39:30 »
Rosszul gondolom, hogy pl egy egybites lejátszásnál (pl Speccy) el lehet érni úgy, vagy hasonlóan 8 bites lejátszást, hogy mondjuk a 8bites 20KHz-es samplét 160 KHz-en játszuk le, és minden sampléban lévő bájtot 8 1 bitesként kezelünk?

pl FFh-t 11111111 ként toljuk ki a beeperre, 8fh.t 10001111-ként, vagy 256 bit kellene hozzá még nagyobb sebességen, vagy ettől azért bonyolultabb?
Hallottam nagyon jó beeper zenét, ami nem volt beeperes, ezt nem tudom jobban megfogalmazni, remélem azért érthető :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 34.0 Firefox 34.0
    • View Profile
Re: Assembly programozás
« Reply #859 on: 2015.January.19. 18:47:13 »
Rosszul gondolom, hogy pl egy egybites lejátszásnál (pl Speccy) el lehet érni úgy, vagy hasonlóan 8 bites lejátszást, hogy mondjuk a 8bites 20KHz-es samplét 160 KHz-en játszuk le, és minden sampléban lévő bájtot 8 1 bitesként kezelünk?

pl FFh-t 11111111 ként toljuk ki a beeperre, 8fh.t 10001111-ként, vagy 256 bit kellene hozzá még nagyobb sebességen, vagy ettől azért bonyolultabb?

8-nál több, de 256-nál kevesebb kellene hozzá. Mindenesetre 4 MHz-es CPU-n már a 160 kHz-es lejátszásnál is csak 25 ciklus idő lenne egy hangmintára.

Offline geco

  • EP addict
  • *
  • Posts: 6316
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 31.0 Firefox 31.0
    • View Profile
Re: Assembly programozás
« Reply #860 on: 2015.January.19. 19:03:27 »
8-nál több, de 256-nál kevesebb kellene hozzá. Mindenesetre 4 MHz-es CPU-n már a 160 kHz-es lejátszásnál is csak 25 ciklus idő lenne egy hangmintára.
Naja, ezt nem számoltam, ez csak arra lenne elég, hogy toljuk az adatokat ki egy hangcsatornára, lapozás már felejtős is :lol:
Meghallgattam a HiFi EP-t, vagyis kb 10 perce szól ugyanaz a fél perc, nagyon jó ,először kb 1 másodperc ment csak, azt hittem rosszul konvertáltam 8bitről 6-ra, aztán rájöttem, hogy váltani kéne a 128-as konfigról :D

Ha meg akarja próbálni más is, itt a befordított verzió:

Lustábbak kedvéért egy snapshot is :D
« Last Edit: 2015.January.19. 19:08:56 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4825
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 34.0 Firefox 34.0
    • View Profile
Re: Assembly programozás
« Reply #861 on: 2015.January.19. 20:00:12 »
Néhány konvertált hangminta, bár ezeknél talán jobbakat is lehetett volna találni, és a konverzión is lehetne javítani:
* smp625.7z (5830.29 kB - downloaded 195 times.)

Offline endi

  • EP addict
  • *
  • Posts: 7305
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 39.0.2171.95 Chrome 39.0.2171.95
    • View Profile
    • Honlapom
Re: Assembly programozás
« Reply #862 on: 2015.January.19. 20:12:42 »
az a baj ezekről csak igazi ep-n lehetne eldönteni a minőséget
pc-n ügye a hangkártya feljavítja
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • EP addict
  • *
  • Posts: 9185
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 35.0 Firefox 35.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Assembly programozás
« Reply #863 on: 2015.January.19. 20:22:19 »
Lustábbak kedvéért egy snapshot is :D
play625.ep128s (3809.21 kB - letöltve 254346 alkalommal.)
Ez nagyon jó!
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline lgb

  • EP addict
  • *
  • Posts: 3555
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 35.0 Firefox 35.0
    • View Profile
    • http://lgb.hu/
Re: Assembly programozás
« Reply #864 on: 2015.January.19. 21:45:21 »
Bar talan inkabb Z80 topic, de vegulis asm is :) Tudjuk mit csinal a HALT opcode. Mi van azonban akkor, ha le van tiltva a megszakitas? Ket esetet latok: a HALT "orokke beragad" (RESET kell neki vagy NMI - ha van olyan a rendszerben ami NMI-t eloallit persze ...), es ennyi. A masik lehetoseg: bar interrupt nem valtodik ki, a HALT-rol "tovabbmegy" a CPU, tehat letiltott interrupt (pl DI utan) eseten is lehet hatasa egy megszakitaskeresnek bizonyos esetekben. Pl a masodik viselkedesformara jo pelda a 6502 fejlettebb verzioja (65816). A kerdes, hogy Z80 melyik a ket eset kozul? Remelem a masodik mert az igen hasznos tud lenni. Igaz csak ki kene probalnom kb    DI HALT EI vagy hasonlo szekvenciaval (ha VINT amugy generalodik pl), ha a masodik, akkor "nem fagy" a gep, ha az elso, akkor a HALT-nal megall gondolom, es ott ragad. Dehat lusta vagyok, nem probalgatok :) thx

Offline Zozosoft

  • EP addict
  • *
  • Posts: 14083
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 34.0 Firefox 34.0
    • View Profile
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #865 on: 2015.January.19. 21:56:53 »
Első.

Mondjuk nem is értem, hogy letiltott megszakítás esetén miért kéne megszakításnak bármit csinálni :oops:

Offline lgb

  • EP addict
  • *
  • Posts: 3555
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 35.0 Firefox 35.0
    • View Profile
    • http://lgb.hu/
Re: Assembly programozás
« Reply #866 on: 2015.January.19. 22:03:04 »
Első.

Mondjuk nem is értem, hogy letiltott megszakítás esetén miért kéne megszakításnak bármit csinálni :oops:

Hat az nagy kar :( Hogy miert kene? Gondold el, tok logikus es nagyon hasznos: kell pl egy nagyon pontos idozites, hogy adott jelre csinalj valamit lehetoleg 1 orajelcikluson belul. Na 65816-ra erre jo a HALT (na jo ott WAI-nak hivjak, de a lenyegen nem valtoztat). Interrupt-ot letiltod, WAI-t kiadod, CPU beall, mint a szeg, de ha jon egy interrupt, akkor folytatja a kov opcode-on a vegrehajtast, azaz 1 orajelciklus pontosaggal (!) tudsz reagalni kulso esemenyre. Szerintem ez azert hasznos. Maskulonben mi ertelme van a HALT utasitasnak letiltott interrupt-okkal hiszen csak "megoli" a CPU-t, nem lehet kihasznalni semmi ertelmesre ... A fenti megoldassal viszont hasznos engedelyezett es tiltott interruptoknal is, csak kicsit mas a viselkedese persze! Pont a fenti tulajdonsagra fentem a fogam, de akkor hiaba, Z80-on nem fog menni :( Ui, az a tizenX T state amig int elfogadva ahhoz sok, amire nekem kene. Szoval az is logikus ertelmezes, hogy az interrupt letiltasa az interrupt _elfogadast_ tiltja (elugras az interrupt vectorra, cimre, stb), de attol meg lehet hatasa mas tekintetben. Na jo, keresek akkor mas megoldast, es nem itt sirankozom, koszi :)

Offline balagesz

  • EP user
  • *
  • Posts: 274
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 31.0 Firefox 31.0
    • View Profile
Re: Assembly programozás
« Reply #867 on: 2015.January.19. 23:37:09 »
Mondjuk nem is értem, hogy letiltott megszakítás esetén miért kéne megszakításnak bármit csinálni :oops:

Gondolom a letiltás alatt a CPU IRQ elfogadás tiltás van értve (DI), a hardver az ettől függetlenül birizgálja a processzor megszakítás bemenetét. Ebben az esetben a "várt" viselkedés az, hogy a HALT esetén a CPU megáll, ezután valamikor jön egy IRQ kérelem a hardver felől, akkor meg a CPU csak simán kilép a HALT állapotból, de nem kezdi el a megszakítási rutint, hanem folytatja a HALT utáni utasítással. Legalábbis ez a tipp. :) Ez szerintem kéne hogy menjen Z80 esetén. Persze a tuti a doksiban lesz.

Offline lgb

  • EP addict
  • *
  • Posts: 3555
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 35.0 Firefox 35.0
    • View Profile
    • http://lgb.hu/
Re: Assembly programozás
« Reply #868 on: 2015.January.20. 01:35:13 »
Gondolom a letiltás alatt a CPU IRQ elfogadás tiltás van értve (DI), a hardver az ettől függetlenül birizgálja a processzor megszakítás bemenetét. Ebben az esetben a "várt" viselkedés az, hogy a HALT esetén a CPU megáll, ezután valamikor jön egy IRQ kérelem a hardver felől, akkor meg a CPU csak simán kilép a HALT állapotból, de nem kezdi el a megszakítási rutint, hanem folytatja a HALT utáni utasítással. Legalábbis ez a tipp. :) Ez szerintem kéne hogy menjen Z80 esetén. Persze a tuti a doksiban lesz.

Na erre gondoltam en is ... Tesztelni egyszeru lenne, de emulatoron (amit en tudnek max most itt) nem biztos, hogy realis :) Doksi meg hosszu, RTFM-hez kell egy rakas vallalkozokedv - mint mindig :)

Offline balagesz

  • EP user
  • *
  • Posts: 274
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 31.0 Firefox 31.0
    • View Profile
Re: Assembly programozás
« Reply #869 on: 2015.January.20. 02:13:42 »
Doksi meg hosszu, RTFM-hez kell egy rakas vallalkozokedv - mint mindig :)

Na, kerestem FM-et. A zilog Z80 CPU User Manual 2014-es kiadását dobta ki elsőnek az internet. A pdf 28. oldalán (is) van erről szó. Egyrészt azt írja, hogy HALT alatt NOP-okat hajt végre a CPU, ami meg nem egy órajel, tehát 1 ciklus pontossággal nem fog tudni ebből az állapotból kilépni. Aztán meg azt is írja, hogy a kilépéshez NMI kell, vagy INT és engedélyezett interrupt. :( Szóval ez alapján mégse működik a "várt" viselkedési mód. (Amúgy az angollal nem vagyok még túl nagy barátságban, :) aki jobban érti, az fordíthatna, hátha valamit elértek.)
« Last Edit: 2015.January.20. 02:35:44 by balagesz »