Welcome, Guest. Please login or register.


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

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #540 on: 2013.November.01. 22:25:47 »
Quote from: Z80System
Tanx, kipróba.
No para :)
Majd  a digi hangokat a lejátszás előtt konvertáld át előjeles 8 bitből előjel nélkülibe, ami wav konvertereket láttam, azok csak előjelesbe tudtak konvertálni, és aztán letolni 6 bitessé.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #541 on: 2013.November.01. 22:32:54 »
Quote
Az a hang 1 Hz valójában 1 Khz  , 
De nézdcsaknézdcsak, ez a Dave leírásból van:

"Four latched interrupts are provided, a 1Hz interrupt for time clock applications, an interrupt switchable between 50Hz, 1KHz or the outputs of tone generators 0 or 1"

Vagy ez tulképpen 2 interrupt, csak mindkettőt a Dave generálja, viszont külön forrásnak számít,

és a másik meg, a komplex az csak három féle lehet: 50Hz,1KHz,és beállított ? És akkor a beállított az olyankor tényleg nem tud szólni, mert le van ezzel foglalva ?
Z80 System

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #542 on: 2013.November.01. 22:39:09 »
Quote from: Z80System
De nézdcsaknézdcsak, ez a Dave leírásból van:

"Four latched interrupts are provided, a 1Hz interrupt for time clock applications, an interrupt switchable between 50Hz, 1KHz or the outputs of tone generators 0 or 1"

Vagy ez tulképpen 2 interrupt, csak mindkettőt a Dave generálja, viszont külön forrásnak számít,

és a másik meg, a komplex az csak három féle lehet: 50Hz,1KHz,és beállított ? És akkor a beállított az olyankor tényleg nem tud szólni, mert le van ezzel foglalva ?
Sztem igen.
Húha, szerintem szólhat, de a hang frekvenciája megegyezik majd a megszakítás számára beállított frekivel.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #543 on: 2013.November.01. 22:45:04 »
Leteszteltem, szól a hang is, bár nem tudom mit lehetne kezdeni egy állandó hanggal, vagy egy változó sebességű megszakítással, lehet ezekből is ki lehetne hozni valamit.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #544 on: 2013.November.01. 22:50:13 »
Oksa, ebből már elvileg össze kéne tudjam akkor rakni. Meglátjuk mi lesz.
Z80 System

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #545 on: 2013.November.01. 22:56:22 »
Menni fog, a múlt hétig nekem se volt gőzöm se, hogy is működik a dolog (a portbeállítások megvoltak, de hogy utána mi a h.nyás...), de aztán letisztult a kép :lol:

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Assembly programozás
« Reply #546 on: 2013.November.02. 10:18:10 »
Quote from: geco
Leteszteltem, szól a hang is, bár nem tudom mit lehetne kezdeni egy állandó hanggal, vagy egy változó sebességű megszakítással, lehet ezekből is ki lehetne hozni valamit.

Hat ha meg torzitod meg modulalod akkor erdekes :) mert AFAIK megszakitasnal csak az alap negyszegjel szamit, ha hangkeltesben felhasznalod valami "extra" modon kozben, az nem zavarja az interrupt-ot.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #547 on: 2013.November.02. 13:03:32 »
Ha jól értem, akkor a 0xb4 portot olvasni is lehet, és a megfelelő bitek azt adják meg, hogy most melyik megszakítás vagy mindjárt megszakítások miatt van a megszakítás ?

Viszont törölnöm (mindkét az aktuális megszakításhoz hozzá rendelt bit 1 -be állításával) csak mindíg azt szabad, ami le volt nullázva ?

Tahát ha a 0xb4 -ről olvasva azt kapom hogy csak a video megszak miatt triggerelődött a megszakításom, akkor csak a video megszak funkcionalitását szabad elvégezzem, és a végén csak a video megszak 2 bitjét szabad 1- be állítanom,

de ha mondjuk a video és audio megszak egyben jött, akkor mindkettőt el kell végezzem, és mindkettőnek a bitjeit 1 -be kell állítsam a végén ?

És a két megszakot törölhetem két külön portírással is, vagy csak egyben lehet mindkettőt ?
« Last Edit: 2013.November.02. 13:29:43 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #548 on: 2013.November.02. 13:15:15 »
Az in és out utasítás mechanizmusában nincs ilyen külső hardvertől függő lefutási idő ?

Tehát in/out -nál a proci kiteszi az értéket az adatbuszra, vár egy kicsit, a külső eszköz meg vagy lekapta onnan, vagy nem,

vagy pedig kirakja, és ott vár mindaddig, míg a külső eszköz nem jelez, hogy levette az anyagot ?
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #549 on: 2013.November.02. 17:45:41 »
Na, nagy nehezen összehoztam, műxik a digi hang, bár igen sokat lassít, ahogy vártuk is. Küzdök a 2 csatorna implementációval, és az lenne a kérdésem,

hogy ugye a nem dokumentált utasításkódok használata többé már nem ajánlott, mióta Zozo az újfajta procik integrálását tűzte ki egyik célul, és azok nem feltétlen támogatják a nem dokumentált utasításokat.

De mi van a magát módosító kóddal. Amennyire tudom, sima z80 alatt az nem igazán probléma, de az újakkal mi a pálya ? Azok is simán bírják a módosuló kódot, vagy ott már belépnek a code cache -ek, meg ilyesmik ?
« Last Edit: 2013.November.02. 17:55:37 by Z80System »
Z80 System

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #550 on: 2013.November.02. 17:51:41 »
Quote from: Z80System
De mi van a magát módosító kóddal. Amennyire tudom, síma z80 alatt az nem igazán probléma, de az újakkal mi a pálya ?
Nincs vele gond.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #551 on: 2013.November.02. 19:18:27 »
Na, egyenlőre a következő lett a megszakom.

Lapozással, jobb és bal csatornára két különböző hang írással, 4KHz -en, szemre úgy 25-30% -al visz több időt a főprogram futása ha ez is megy alatta. Ha valahol elnéztem vagy elszámoltam valamit, akkor mégse.

A megszak az összes árnyékregisztert használja.

Igazából azért vettem előre a hangot, és ezért ezt a megszakot, mert ennek sebességéhez kell igazítsam a többit, ha megcsinálom az egészet, és aztán derül ki, hogy a hang miatt mégse jó, félő hogy nem kerülne bele a hang végül.

Szóval ha van tipp, hogy hogyan lehetne felgyorsítani, az nem volna rossz.


Code: [Select]
void IRQ() __naked
{
__asm

di

ex af, af                                  ;csak árnyékregisztereket használunk

in a, (0xb4)                              ;megnézzük, hogy hang megszak jött -e
and #0x2

jr z, IRQ_NoAudio                      ;ha nem hang elugrunk oda, ezzel kizártunk minden zavaró tényezőt a lehető leggyorsabb hang megszakhoz,
                                               ;vagyis a video vackai nem lassítják tovább a hangot

ld a, #D_Ints+ 0x2                    ;tehát akkor hangmegszakunk van itt már
out (0xb4), a                           ;ha már itt van A regiszterben, ilintézzük a 0xb4 sorsát

exx                                        ;még mindíg csak árnyékot használunk, melyben elő van készítve főprogram által:
                                                     ;DE= egyik minta
                                                     ;HL= másik minta
                                                     ;b= egyik minta vége után lévő cím felső bájtja
                                                     ;c= másik minta vége után lévő cím felső bájtja
                                                     ;tehát a hangminták csak 256 -os igazításon és hosszon vannak

ld a, #0xf9
out (D_Page1), a                      ;belapozzuk a hangminta szegmenst

ld a, d
cp b                                       ;ellenőrizzuk, hogy elértük -e már a hangminta végét
jr nc, IRQ_AudioEnd0                 ;ha elértük átugorjuk a minta kezelését

ld a, (de)                                ;betöltjük a mintát
out (0xa8), a                           ;kiirjuk a mintát
inc de                                    ;növeljük a minta címét

IRQ_AudioEnd0:

ld a, h
cp c                                       ;ellenőrizzuk, hogy elértük -e már a másik hangminta végét
jr nc, IRQ_AudioEnd1                 ;ha elértük átugorjuk a minta kezelését

ld a, (hl)                                ;betöltjük a másik mintát
out (0xac), a                           ;kiirjuk a mintát
inc hl                                    ;növeljük a minta címét

IRQ_AudioEnd1:

ld a, #0xfc
out (D_Page1), a                      ;visszatesszük az ellapozott lapunkat

exx

ex af, af

ei

ret                                         ;ez egy audio megszak volt, visszatérünk. azt remélem, hogy ha itt volt video megszak IS az audio mellett,
                                                     ;akkor az a visszatérés után újra kiváltódik majd egyedül, hang megszak nélkül

IRQ_NoAudio:

ld a, #D_Ints+ 0x20                   ;ha ide eljöttünk, akkor ez egy video megszak, és ez már nem számít, mert ez sokkal kevesebbszer fut csak le
out (0xb4), a

ld a, #1
ld (_g_WasIRQ), a

ex af, af

ei

ret

__endasm;
}


« Last Edit: 2013.November.02. 19:23:55 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 #552 on: 2013.November.02. 19:31:23 »
minek lapozgatni a hangnál? nem fog a game beleférni 64k-ba? :)
giga game lesz ebből a szempontból is, már látom :)
de ez csak jó! volt egyáltalán olyan EP game ami több mint 64k-t használt?
Vigyázat! Szektás vagyok! :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #553 on: 2013.November.02. 20:31:48 »
Quote
Szóval ha van tipp, hogy hogyan lehetne felgyorsítani, az nem volna rossz.

Hmmm ... lehet, hogy eszembe jutott egy jó ötlet ...

Egy 4K -s megszakítás 80X fut le 2 video megszak között. Tehát ha a hangok mögé teszek mondjuk 100 bájtnyi üreset, akkor tovább futhat a hang és ráérek lekapcsolni a video megszakban ... magyarul így a hang megszak hang kezelésének a felét kidobhatom ... :)

Ez jónak tűnik nagyon ...
Z80 System

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Assembly programozás
« Reply #554 on: 2013.November.02. 20:55:19 »
Segíteni sajnos nem tudok, csak imádkozni érted, hogy Zozo meg ne lássa a fix szegmenscímeket. :ds_icon_cheesygrin: