Enterprise Forever

:HUN => Hardver => Topic started by: tigrian on 2005.December.23. 00:19:55

Title: DAVE
Post by: tigrian on 2005.December.23. 00:19:55
Itt meg a hangkeltéssel kapcsolatos téma. Errõl is lehet esetleg összefoglaló.
Title: Re: DAVE
Post by: Zozosoft on 2006.January.03. 10:43:32
http://enterprise.8bit.hu/Alapgep/Picture/DAVE.jpg
Title: Re: DAVE
Post by: gafz on 2006.January.04. 20:52:57
Quote from: "tigrian"
Az egyik ez a NICK doku, a másik pedig a DAVE issue4 -es változata (az EXOS-ban issue5 van. Még nem néztem meg, mi a különbség.)


Öööö.... izé... nem akarok pofátlan lenni meg a taszt-(és AIO)projejt-tõl elvonni, de esetleg a Dave docut. is közkinccsé tennéd valamikor?
Title: Re: DAVE
Post by: tigrian on 2006.January.04. 21:22:24
Quote from: "gafz"
Öööö.... izé... nem akarok pofátlan lenni meg a taszt-(és AIO)projejt-tõl elvonni, de esetleg a Dave docut. is közkinccsé tennéd valamikor?

Semeddig nem tart, csak azért nem ajánlgatom, mert ugyanez megvan HTML-ben az angol EXOS dokuban.
De tessék, íme: (domain, port már ismerõs)//ep/dave/dave.zip
Title: Re: DAVE
Post by: gafz on 2006.January.04. 21:44:45
Quote from: "tigrian"
Semeddig nem tart, csak azért nem ajánlgatom, mert ugyanez megvan HTML-ben az angol EXOS dokuban.
De tessék, íme: (domain, port már ismerõs)//ep/dave/dave.zip


Leszedtem, felraktam, köszönöm! (még jó, hogy megvolt a kukában az a levél... :D)
Title: Re: DAVE
Post by: Zozosoft on 2006.June.01. 23:35:51
Quote from: "tigrian"
Itt meg a hangkeltéssel kapcsolatos téma. Errõl is lehet esetleg összefoglaló.

Mikorra várható az a összefoglaló? :)
Lassan jól jönne CPC ügy kapcsán :) elöször is ki kell majd találni, hogy ott mit csinál a program a hangchippel (jöhet egy AY magyarázat is :) ), aztán ki kell találni, hogyan lehet hasonlót kihozni a DAVE-bõl. És ehhez nem ártana ismerni a DAVE lehetõségeit :) mostani tudományom kimerül a ZX Spectrum 1 bites hangjának utánzásában... :(
Title: Re: DAVE
Post by: tigrian on 2006.June.02. 01:06:55
Quote from: "Zozosoft"
Mikorra várható az a összefoglaló? :)

Hú, most erre nemigen jut idõm...
Title: Re: DAVE
Post by: geco on 2006.June.02. 18:58:59
Nem tudom, hogy ez segít-e, én ezt használtam az Exolonnál. A zajcsatornát figyelmen kívül hagyja.
Title: Re: DAVE
Post by: Zozosoft on 2006.June.02. 19:45:13
Quote from: "geco"
Nem tudom, hogy ez segít-e, én ezt használtam az Exolonnál. A zajcsatornát figyelmen kívül hagyja.

És ezt mi helyére raktad? ROM rutin hívás? Vagy közvetlen portbizgatás?
Title: Re: DAVE
Post by: geco on 2006.June.02. 20:49:44
Quote from: "Zozosoft"
És ezt mi helyére raktad? ROM rutin hívás? Vagy közvetlen portbizgatás?


Közvetlen portbizgatás helyére, de a CPC ROM-ban is hasonlóan birizgálja a portokat, mint a direkt portos zenéjû programok, csak minden hozzá tartozó kódot is ki kellene szedni hozzá. :)
A csillagos betöltõhöz jó lesz, gondolom, nálad is a XOR feliratos betöltõ jelentkezett ( Temps infini és egyéb kellemes felirattal)  :), a PoP elõtt is ilyen van, abban a verzióban nem unpackol?
Title: Re: DAVE
Post by: Zozosoft on 2006.June.02. 22:33:16
Quote from: "geco"
A csillagos betöltõhöz jó lesz

Ez bejött, bár marhára nem értem mit csinál :-)
Igaz kilépéskor még tutulva marad, de erre majd kitalálok valamit :-)

Ezt mibõl szedted ki? A Spectrum átírat EXOLON-ból?

(A betöltõ képek önkicsomagolós fájlokban vannak, erre gondolsz unpackolás alatt?)
Title: Re: DAVE
Post by: IstvanV on 2010.May.19. 13:57:29
Jó lenne ilyeneket összeszedni! Van is erre a hw rovat mélyén elsüllyedve Nick és Dave topikunk, amit régen nem látott Tigrian barátunk indított.

Néhány kiegészítés a DAVE dokumentációjához; ez még mindig nem teljes, és nem biztos, hogy mind pontos, de talán van ezek között olyan információ, amit még nem tud mindenki:

A0h-A5h port:

A hanggenerátorok működése: egy 12 bites számláló a megadott frekvencia értéktől visszafelé számol 250 kHz sebességgel (ez 4 MHz-es gépre értendő, ha a BFh port 1. bitje nincs beállítva). Amikor túlcsordul (azaz 0 után -1 következne), akkor -1 helyett a regiszterekben megadott 12 bites érték kerül újra a számlálóba, és a következők egyike történik a polinom számláló torzítástól függően:

  - ha nincs torzítás, akkor a négyszöggenerátor (flip-flop) kimenete egyszerűen átbillen
  - ha van torzítás, akkor a kimenetre a választott polinom számláló (álvéletlenszám generátor) aktuális kimenete kerül; a polinom számlálók folyamatosan futnak 250 kHz órajellel, ami egyben például azt is jelenti, hogy ha a beállított frekvencia a polinom számláló hosszának az egész számú többszöröse (pl. 4 bites számlálónál 15-1, 30-1, 45-1, stb.), akkor nincs hang, mert a mintavételezésnél mindig ugyanaz az érték van

A felüláteresztő szűrő azt jelenti, hogy az órajelnek használt csatorna kimenetének (amely tartalmazza az esetleges torzítást, szűrőt, és gyűrűmodulációt is) minden lefutó élére a flip-flop kimenete 0-ra állítódik. Ezért ha az órajel csatorna frekvenciája nagyobb, mint a szűrt csatornáé, akkor egyben a frekvencia kétszereződik:
     _____     _____     _____     _____     _____
|____|    |____|    |____|    |____|    |____|    |   1. csatorna
       ________        ________        ________
_______|       |_______|       |_______|       |___   0. csatorna szűrés nélkül
       ___     _____   _______ ________        ___
|______|  |____|    |__|      ||       |_______|  |   0. csatorna szűréssel


A gyűrűmoduláció a felüláteresztű szűrő (ha az engedélyezett) után történik, és XNOR műveletet végez a másik csatorna (esetleg már torzított, szűrt, gyűrűmodulált) kimenetével:
     _____     _____     _____     _____     _____
|____|    |____|    |____|    |____|    |____|    |   0. csatorna
       ________        ________        ________
_______|       |_______|       |_______|       |___   2. csatorna
_____  ___          ___  _____ ____    _     __   _
     |_|  |_________|  |_|    ||   |___||____| |__|   gyűrűmoduláció eredménye


Érdekesség, hogy igazi gépen a hanggenerátorok nem működnek a legnagyobb (0) frekvenciával, tehát nem lehet 125 kHz-es négyszögjelet előállítani. A számláló talán fut ilyenkor is (pl. megszakítás céljára, de ilyen gyors megszakításnak nem sok értelme van), és lehet, hogy polinom számlálót választva van hang, de ezt ellenőrizni kellene valódi gépen.

A6h port:

A zajcsatornához használt polinom számláló az órajel csatorna (esetleg már torzított, szűrt, gyűrűmodulált) kimenetének lefutó élére frissítődik, és nem fix 250 kHz-es sebességgel, mint a hangcsatornáknál. A 31.25 kHz-es mód megfelel egy 4-1 frekvenciájú órajel csatorna használatának.

A 4. bit (7 és 17 bites számláló felcserélése) beállítása azt jelenti, hogy a választható hosszúságú (9/11/15/17 bites) számlálót használhatják a hangcsatornák a 7 bites helyett (és ilyenkor ennek is 250 kHz-es órajele lesz), illetve a zajcsatorna polinom számlálója lesz a 7 bites (250 kHz helyett a választható órajellel).

A zajcsatornánál az effektusok sorrendje (ha engedélyezettek):
  - 1. aluláteresztő szűrő: csak a 2. csatorna (torzított, szűrt, stb.) kimenetének a lefutó éleire mintavételeződik a polinom számláló kimenete (de egyébként az ilyenkor is fut a beállított frekvencián), az órajel lefutó élei helyett
  - 2. felüláteresztő szűrő: hasonló a hangcsatornákhoz: a 0. csatorna lefutó éleire 0-ra állítódik a tároló kimenete a polinom számláló következő mintavételezéséig
  - 3. gyűrűmoduláció: a hangcsatornákhoz hasonlóan XNOR műveletet végez az 1. csatornával

Polinom számlálók

A DAVE 4 polinom számlálót tartalmaz:
  - egy 4 bites, amely mindig 250 kHz órajellel fut, és csak a hangcsatornák használhatják
  - egy 5 bites, amely mindig 250 kHz órajellel fut, és csak a hangcsatornák használhatják
  - egy 7 bites, amely vagy 250 kHz-es órajellel működik és a hangcsatornák használhatják (A6h port bit 4 = 0), vagy az A6h porton beállított órajellel a zajcsatorna bemenete (A6h port bit 4 = 1)
  - egy választható hosszúságú 9/11/15/17 bites, amely vagy az A6h porton beállított órajellel a zajcsatorna bemenete (A6h port bit 4 = 0), vagy 250 kHz-es órajellel működik és a hangcsatornák használhatják (A6h port bit 4 = 1)

A számlálók működése, amikor a kimenetük frissítődik:
  - a számláló értéke egy bittel balra léptetődik
  - az új 0. bit két (az adott számlálóhoz választott) bit léptetés előtti értéke között végzett XOR művelet eredménye
  - a kimenet az új 0. bit lesz
A bitek, amelyek között XOR művelet történik, azaz a bináris "polinom":
  - 4 bites számlálónál a 3. és 2. bit
  - 5 bites számlálónál a 4. és 2. bit
  - 7 bites számlálónál a 6. és 5. bit
  - 9 bites számlálónál a 8. és 4. bit
  - 11 bites számlálónál a 10. és 8. bit
  - 15 bites számlálónál a 14. és 13. bit
  - 17 bites számlálónál a 16. és 13. bit
Az álvéletlenszám sorozat hossza 2^N-1 (tehát 5 bites számlálónál pl. 31), ugyanis a számláló értéke nem lehet 0, mert akkor végtelen ciklusban csak 0 lehetne a kimenet (0 XOR 0 = 0). A kezdőérték bekapcsoláskor talán minden bit = 1, de ezt nem lehet biztosan tudni, és jelentősége sem sok van.

A7h port:

b0-b2: itt a "szinkronizálás" bekapcsolása azt jelenti, hogy:
  - az adott hangcsatorna számlálója nem fut
  - a számlálót folyamatosan az A0h-A5h regiszterekben beállított frekvencia értéken tartja
  - a négyszöggenerátor flip-flop kimenetét 0-ra állítja

b3-b4: a D/A mód bekapcsolásakor a kimeneten az A8h vagy ACh porton beállított hangerő négyszerese van (azaz a hatása olyan, mintha mind a négy csatorna kimenete folyamatosan 1 lenne, és a hangerejük megegyezne a 0. csatornával)

b5-b6: itt a megszakítást nem a hanggenerátorok torzított, szűrt, stb. kimenete vezérli, hanem az adott hanggenerátor számlálója közvetlenül, amelynek minden 0-ra való lefutása után a B4h port 0. bitje átbillen, és (ha engedélyezett) beállítódik az 1. bit. Az 1 kHz-es megszakítás megfelel 250-1 hanggenerátor frekvenciának, az 50 Hz-es pedig 5000-1-nek, azaz ez nem a video megszakítás sebessége, hanem pontosan 80000 Z80 ciklus (vagy 120000, ha a BFh port 1. bitje be van állítva).

B4h port:

  - bit 0-1: 50 Hz/1 kHz/hanggenerátor megszakítás
  - bit 2-3: 1 Hz megszakítás
  - bit 4-5: video megszakítás
  - bit 6-7: INT2 megszakítás (nem használt ?)

  - a 0., 2., 4., és 6. bit mindig olvasható, akkor is, ha az adott megszakítás le van tiltva; ezekbe a bitekbe '1'-et írva engedélyezhető, '0'-t írva tiltható a megszakítás
  - az 1., 3., 5., és 7. bit csak akkor működik, ha engedélyezett a megfelelő megszakítás, egyébként mindig 0.; ha engedélyezett a megszakítás, akkor az 1. és 3. bit a 0. és 2. bit minden (fel- és lefutó) élére beállítódik, az 5. és 7. bit pedig csak a 4. és 6. bit lefutó éleire
  - a Z80-hoz a megszakítás kérés az 1., 3., 5., és 7. bit között végzett OR művelet eredménye; ezeket a biteket vagy '1' bit visszaírásával, vagy az adott megszakítás letiltásával lehet törölni. Egyébként amíg nem törlődik mind a 4 bit, a Z80 folyamatosan megszakítást generál
  - a 4. bit a NICK-től érkezik, és az adott sorban az aktuális LPB-ből olvasott VINT bit másolata; ezt szerintem a NICK minden sor elején újraolvassa az LPB-ből (de talán jobb lenne ellenőrizni igazi gépen)

                 _____________
_________________|            |_____________________________    VINT
                 _____________
_________________|            |_____________________________    B4h:b4 olvasás
                                               _
...............................................||...........    B4h:b5 írás
                              _________________
______________________________|                |____________    B4h:b5 olvasás


Ebből az is látható, hogy a video megszakítás csak a megszakításkérést tartalmazó LPB utáni első, már VINT bit nélküli sor elején történik. Ugyanez az oka annak, hogy nem lehet két egymást követő sorban video megszakítás.

B5h port:

Írás:
  - bit 0-3: billentyűzetmátrix sor kiválasztása (csak a 0.-9. sorban van billentyű)
  - bit 4: nem használt ? (vagy SERIAL, NET, stb. használja, amit nem ismerek)
  - bit 5: magnóhang kikapcsolása (ha a bit 1, akkor nincs magnóhang)
  - bit 6: REM1 bekapcsolása (ha a bit 1, akkor REM1 be van kapcsolva)
  - bit 7: REM2 bekapcsolása (ha a bit 1, akkor REM2 be van kapcsolva)

Olvasás:
  - bit 0-7: a billentyűzetmátrix választott sorának aktuális állapota; ha egy billentyű le van nyomva, akkor a megfeleleő bit '0', egyébként '1'.

    \ bit+-------+-------+-------+-------+-------+-------+-------+-------+
     \   |     0 |     1 |     2 |     3 |     4 |     5 |     6 |     7 |
   sor\  |       |       |       |       |       |       |       |       |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+
  |    0 |     N |     \ |     B |     C |     V |     X |     Z | SHF_L |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+
  |    1 |     H |  LOCK |     G |     D |     F |     S |     A |  CTRL |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+
  |    2 |     U |     Q |     Y |     R |     T |     E |     W |   TAB |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+
  |    3 |     7 |     1 |     6 |     4 |     5 |     3 |     2 |   ESC |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+
  |    4 |    F4 |    F8 |    F3 |    F6 |    F5 |    F7 |    F2 |    F1 |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+
  |    5 |     8 |       |     9 |     - |     0 |     ^ | ERASE |       |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+
  |    6 |     J |       |     K |     ; |     L |     : |     ] |       |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+
  |    7 |  STOP |    LE |  JOBB |   FEL | PAUSE |   BAL | ENTER |   ALT |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+
  |    8 |     M |   DEL |     , |     / |     . | SHF_R | SPACE |   INS |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+
  |    9 |     I |       |     O |     @ |     P |     [ |       |       |
  +------+-------+-------+-------+-------+-------+-------+-------+-------+


B6h port:

Olvasás:
  - bit 0: a billentyűzetmátrix sorával együtt választható joystick irány állapota ('0': aktív, '1': nem aktív)

    \ bit+---------+
     \   |       0 |
   sor\  |         |
  +------+---------+
  |    0 | J1 TŰZ  |
  +------+---------+
  |    1 | J1 FEL  |
  +------+---------+
  |    2 | J1 LE   |
  +------+---------+
  |    3 | J1 BAL  |
  +------+---------+
  |    4 | J1 JOBB |
  +------+---------+
  |    5 | J2 TŰZ  |
  +------+---------+
  |    6 | J2 FEL  |
  +------+---------+
  |    7 | J2 LE   |
  +------+---------+
  |    8 | J2 BAL  |
  +------+---------+
  |    9 | J2 JOBB |
  +------+---------+


  - bit 1-3: nem használt/ismeretlen/mindig 1 (?)
  - bit 4-5: nem használt/ismeretlen/mindig 0 (?)
  - bit 6: magnó bemenet szint (ha nincs bemenet, akkor '1'; '0' = magas szint, '1' = alacsony szint ?)
  - bit 7: magnó adatbemenet (ha nincs bemenet, akkor '1')

BFh port:

Írás:
  - bit 0: beépített RAM mérete ('0': 64K, '1': 16K); ennek a hatását nem ismerem, meg kellene nézni igazi gépen. Mindenesetre normál esetben mindig '0'-t kell írni.
  - bit 1: frekvencia osztó: ha nincs beállítva, akkor a fent említett "250 kHz" frekvencia a Z80 órajelének a 16-od része, egyébként 24-el kell osztani. Tehát ha ez be van állítva, akkor minden DAVE frekvencia (számlálók, hanggenerátorok, 1 Hz/50 Hz/1 kHz megszakítás) másfélszer alacsonyabb lesz, turbós gépen pedig minden frekvenciát a Z80 megváltozott órajelével arányosan szorozni kell.
  - bit 3: 1: memória várakozás letiltása (video memóriánál nincs hatása)
  - bit 2: memória várakozás mód (csak akkor, ha nincs a 3. bittel letiltva, és nem video memóriához történik hozzáférés):
      - ha 0, akkor várakozás minden memóriaműveletnél
      - ha 1, akkor várakozás csak M1 olvasásnál - ez az alapértelmezett mód. Az M1 olvasás a Z80 utasítások első byte-ját jelenti; DDh, EDh, és FDh prefixnél a prefix utáni utasításbyte is M1 olvasásnak számít, CBh prefixnél pedig a következő utasításbyte csak akkor M1 olvasás, ha nem volt a CBh előtt DDh vagy FDh prefix is:
          - NN
          - CBh NN
          - DDh NN
          - EDh NN
          - FDh NN
          - DDh CBh
          - FDh CBh
        az M1 olvasásoknál történik egyébként az R regiszter frissítése is
      A várakozás normál 4 MHz-es gépen 1 Z80 ciklus, turbós (6 vagy 7.119 MHz) gépen pedig 2 Z80 ciklus. Az 1. bitnek nincs hatása a várakozás mértékére. Video RAM-nál az itt beállítható várakozásoknak nincs hatása, ott ugyanis 889846 Hz-es frekvenciához kell szinkronizálni a hozzáféréseket. Ezt 4 MHz-es gépen egyszerűen úgy lehet - nem túl pontosan - közelíteni, hogy a két video RAM vagy video I/O port (ugyanis a NICK 80h-8Fh portjainál is van ilyen várakozás) között eltelt Z80 ciklusok számához hozzá kell adni 1.5-öt, majd ha az eredmény nem osztható 4.5-el, akkor felfelé kerekíteni, hogy osztható legyen. A várakozás ennek és az eredeti (1.5 hozzáadása előtti) ciklusszámnak a különbsége 0.5 Z80 ciklus egységekben. Lényeges azonban, hogy a memóriaműveletek az utasításon belül pontosan mikor történnek:
        - M1 olvasás: teljes időtartam 4 ciklus, az olvasás időpontja ezen belül 2.0 ciklus
        - normál memória olvasás és írás: teljes időtartam 3 ciklus, a memóriaművelet időpontja 2.5 ciklus
        - I/O port olvasás és írás: 4 ciklus, ezen belül 3.5 ciklusnál történik a tényleges I/O művelet
Title: Re: DAVE
Post by: Zozosoft on 2010.May.19. 14:14:45
Néhány kiegészítés a DAVE dokumentációjához; ez még mindig nem teljes, és nem biztos, hogy mind pontos, de talán van ezek között olyan információ, amit még nem tud mindenki:
Szuper, köszönjük!
Nekem fõleg ezek a polinomos-gyûrûs-szûrõs izék voltak mindig homályosak  :oops: azt már kezdem érteni mit csinál, már csak azt nem tudom hogy lesz ebbõl zene :)
Title: Re: DAVE
Post by: Zozosoft on 2010.May.19. 14:18:10
  - bit 0: beépített RAM mérete ('0': 64K, '1': 16K); ennek a hatását nem ismerem, meg kellene nézni igazi gépen. Mindenesetre normál esetben mindig '0'-t kell írni.
Tippem az, hogy akkor csak FF szegmens fog videó memóriaként dekódolódni. Majd égetek egy próba EXOS epromot, és megnézzük mi lesz :-)
Title: Re: DAVE
Post by: Zozosoft on 2010.May.19. 14:25:41
  - bit 6-7: INT2 megszakítás (nem használt ?)
Az a SERIAL/NET csatlakozó "Status In" bemenetérõl érkezik.
Title: Re: DAVE
Post by: Lacika on 2010.May.19. 14:26:23
Ezt az összefoglalót berakjam ide (http://ep128.hu/Ep_Konyv/Exos.htm#130), a fejezet végére?
Vagy más javaslat Zozo? Hol lenne praktikus?
Title: Re: DAVE
Post by: Zozosoft on 2010.May.19. 14:32:57
Vagy más javaslat Zozo? Hol lenne praktikus?
Pl a DAVE chip leírásához :) (http://ep128.hu/Ep_Konyv/Exos.htm#240)
Title: Re: DAVE
Post by: Lacika on 2010.May.19. 14:53:36
Pl a DAVE chip leírásához :) (http://ep128.hu/Ep_Konyv/Exos.htm#240)

Ok, megdumáltuk!  :smt023
Title: Re: DAVE
Post by: geco on 2010.May.19. 15:03:58
Néhány kiegészítés a DAVE dokumentációjához; ez még mindig nem teljes, és nem biztos, hogy mind pontos, de talán van ezek között olyan információ, amit még nem tud mindenki:
Volt, nem is kevés, le is mentettem, hogy majd később nyugodtabb körülmények között emészthessem, ezek a polinomszámlálós dolgok, meg a gyűrűmoduláció több időt igényel, nehogy megfeküdje a gyomrom ;)
Title: Re: DAVE
Post by: Zozosoft on 2010.May.19. 19:57:29
  - bit 2: memória várakozás mód (csak akkor, ha nincs a 3. bittel letiltva, és nem video memóriához történik hozzáférés):
Errõl a Dave által generált várakozásról derítettem ki korábban, hogy az szabályosan a Z80 WAIT lábát használja. Ha erre a vezetékre rakunk egy kapcsolót, akkor kézzel ki lehet iktatni a várakozást, attól függetlenül, hogy a programok éppen mit állítgatnak. (Ennek 6 Mhz gép + 1.44 floppy esetén van értelme, 6 Mhz-es Z80 csak úgy tudja követni a 16 Mhz-es WD-t, ha nincs várakozás, legalábbis az EXDOS jelenlegi programkódjával.)
Title: Re: DAVE
Post by: endi on 2010.May.20. 11:07:14
hát így utólag olvasva a leírást sem vagyok biztos benne hogy értelmes zene hangzásokra lehet-e használni ezeket a mindenféle torzítókat meg a többit
Title: Re: DAVE
Post by: Lacika on 2010.May.20. 11:59:35
hát így utólag olvasva a leírást sem vagyok biztos benne hogy értelmes zene hangzásokra lehet-e használni ezeket a mindenféle torzítókat meg a többit

Ha jól tudom, ehhez szinuszos burkológörbe kellene, a DAVE és az AY meg csak négyszögjelet tud.
Persze lehetett volna a gépbe szintetizátorokban használatos chipet rakni, mint a C64-ben a SID, csak akkor gondolom nem ennyibe került volna a gép. (A C64 ára megjelenésekor 595 USD volt, míg a Spectrumé 175 Font. És akkor sokkal kisebb volt az árfolyamkülönbség a Dollár és a Font között.) És azért '87-88-ban még ez szempont volt az átlag magyar háztartásban... (Ügye a Commodore "költséghatékony" konstrukciói - C16, Plus4 - is hangzásban még talán rosszabbak is, mint az Ep.)
Title: Re: DAVE
Post by: IstvanV on 2010.May.20. 12:29:09
hát így utólag olvasva a leírást sem vagyok biztos benne hogy értelmes zene hangzásokra lehet-e használni ezeket a mindenféle torzítókat meg a többit

A legjobban talán csak próbálgatással lehet ezeket jól felhasználni, de azért néha az sem hátrány, ha valaki tudja, hogyan működnek. Kár, hogy az effektusok többségét csak egy másik csatorna "feláldozásával" lehet bekapcsolni, ami tovább csökkenti a hasznosságukat.
Title: Re: DAVE
Post by: IstvanV on 2010.May.20. 12:38:08
(Ügye a Commodore "költséghatékony" konstrukciói - C16, Plus4 - is hangzásban még talán rosszabbak is, mint az Ep.)

Nem csak talán, hanem biztosan (igaz, az ezekre írt programok az EP-sek többségével ellentétben ki is használták a gép képességeit, ezért kevésbé lehetett feltűnő a különbség) :) Ezt tudják:
  - 2 csatorna, amiből az egyik csak négyszögjelet tud, a másik pedig vagy négyszögjelet vagy zajt (a zaj 8 bites generátort használ, azaz 255 bit után ismétlődik a "véletlenszerű" bitminta)
  - 10 bites frekvencia, amely 110840.47 / (1023 - N) képlettel konvertálható Hz-re (tehát a legmélyebb előállítható hang kb. 100 Hz-es)
  - 0 és 8 között (nem egészen lineárisan) csak globálisan állítható hangerő (nem lehet külön beállítani a két csatornára)
  - "DAC" mód, amelyben a hangerő állításával közvetlenül lehet hangjelet létrehozni (némi trükközéssel 9-nél jóval több, akár kb. 30 szintet is elő lehet állítani, de nem lineárisan)
Azért a 48K-s Spectrumnál ez is lényegesen jobb. De amikor ezek a gépek megjelentek, addigra már C64-et is olcsóbban lehetett szerezni az eredeti árnál. Viszont több C16 és Plus/4 gépet "bővítettek" utólag SID chip beépítésével, amit az újabb, már 2000-es években írt demók és játékok gyakran használnak is, néha akár az eredeti hanggal együtt 5 csatornát elérve.
Title: Re: DAVE
Post by: IstvanV on 2010.May.20. 13:04:46
a DAVE és az AY meg csak négyszögjelet tud.

Az AY tud - nagy frekvenciájú burkológörbét használva - háromszögjelet és fűrészjelet is (vagy legalábbis valamit, ami ezekre valamennyire emlékeztet, a nem lineáris hangerő táblázat miatt, lásd itt (http://enterpriseforever.com/konvertalas/cpc-t22.0.html;msg19138#msg19138)). Ennek ugyan a nem lineáris torzításon és a fix hangerőn kívűl még az is hátránya, hogy alacsonyabb és főleg rosszabb felbontású az előállítható frekvencia, mint négyszögjelnél, de azért néhány program használja ezt a lehetőséget, ami problémát is jelenthet az EP-re való átírásuknál. A nagy frekvenciájú burkológörbe amplitúdó (gyűrű-) modulációra is használható, mint pl. a Wec Le Mans motorhangja, amely egyszerű zaj nagy frekvenciájű "fűrészjel" burkológörbével modulálva.
Title: Re: DAVE
Post by: Zozosoft on 2010.May.20. 16:43:32
A legjobban talán csak próbálgatással lehet ezeket jól felhasználni, de azért néha az sem hátrány, ha valaki tudja, hogyan mûködnek. Kár, hogy az effektusok többségét csak egy másik csatorna "feláldozásával" lehet bekapcsolni, ami tovább csökkenti a hasznosságukat.
És vajon mire szánták ezeket a dolgokat? Ezen bonyolítások nélkül egyszerûbben is meg lehetett volna oldani... pl vehettek volna egy kész AY chipet :-)
Title: Re: DAVE
Post by: Lacika on 2010.May.20. 17:00:48
Ezen bonyolítások nélkül egyszerûbben is meg lehetett volna oldani... pl vehettek volna egy kész AY chipet :-)

Memóriavezérlő akkor is kellett volna, ha mellé raknak egy AY-t plusz egy chip.
Title: Re: DAVE
Post by: geco on 2010.May.21. 08:42:51
És vajon mire szánták ezeket a dolgokat? Ezen bonyolítások nélkül egyszerûbben is meg lehetett volna oldani... pl vehettek volna egy kész AY chipet :-)
Ilyenek a SID chipben is vannak, majdnem ugyanezzel a kiosztással, gondolom nem véletlenül tették bele.
Title: Re: DAVE
Post by: Zozosoft on 2010.May.21. 08:58:09
Ilyenek a SID chipben is vannak, majdnem ugyanezzel a kiosztással, gondolom nem véletlenül tették bele.
Akkor jön a kérdés: mi az amiben jobb a SID chip?
Title: Re: DAVE
Post by: geco on 2010.May.21. 09:10:33
Akkor jön a kérdés: mi az amiben jobb a SID chip?
4 jelet tud, a négyszögjel mellett a háromszögjel, a szinusz jel, és a fűrészjel szerepel a palettán, amiknek a hullámhossza állítható, plusz tud még volume envelope-ot, amit az AY is, de itt a három csatornára külön-külön lehet envelope-ot állítani, és a SID chipen a felhasználó állíthatja be, hogy az egyes fázisok mennyi ideig tartsanak, nem csak 9, vagy 10 formából választhat.

 
  port(X)    port(D)    bit   Description
  D400       54272            Voice 1: Frequency Control - Low-Byte
  D401       54273            Voice 1: Frequency Control - High-Byte
  D402       54274            Voice 1: Pulse Waveform Width - Low-Byte
  D403       54275   7-4   Unused
                            3-0    Voice 1: Pulse Waveform Width - High-
                                     Nybble

  D404       54276            Voice 1: Control Register
                            7      Select Random Noise Waveform, 1 = On
                            6      Select Pulse Waveform, 1 = On
                            5      Select Sawtooth Waveform, 1 = On
                            4      Select Triangle Waveform, 1 = On
                            3      Test Bit: 1 = Disable Oscillator 1
                            2      Ring Modulate Osc. 1 with Osc. 3 Output,
                                     1 = On
                            1      Synchronize Osc.1 with Osc.3 Frequency,
                                     1 = On
                            0      Gate Bit: 1 = Start Att/Dec/Sus,
                                             0 = Start Release

  D405       54277            Envelope Generator 1: Attack/Decay Cycle
                                    Control
                            7-4    Select Attack Cycle Duration: 0-15
                            3-0    Select Decay Cycle Duration: 0-15

  D406       54278            Envelope Generator 1: Sustain/Release
                                     Cycle Control
                            7-4    Select Sustain Cycle Duration: 0-15
                            3-0    Select Release Cycle Duration: 0-15

  D407       54279            Voice 2: Frequency Control - Low-Byte
  D408       54280            Voice 2: Frequency Control - High-Byte
  D409       54281            Voice 2: Pulse Waveform Width - Low-Byte
  D40A       54282   7-4    Unused
                            3-0    Voice 2: Pulse Waveform Width - High-
                                     Nybble

  D40B       54283            Voice 2: Control Register
                            7      Select Random Noise Waveform, 1 = On
                            6      Select Pulse Waveform, 1 = On
                            5      Select Sawtooth Waveform, 1 = On
                            4      Select Triangle Waveform, 1 = On
                            3      Test Bit: 1 = Disable Oscillator 1
                            2      Ring Modulate Osc. 2 with Osc. 1 Output,
                                     1 = On
                            1      Synchronize Osc.2 with Osc. 1 Frequency,
                                     1 = On
                            0      Gate Bit: 1 = Start Att/Dec/Sus,
                                             0 = Start Release
 D40C       54284             Envelope Generator 2: Attack / Decay
                                     Cycle Control
                            7-4    Select Attack Cycle Duration: 0-15
                            3-0    Select Decay Cycle Duration: 0-15

  D40D       54285            Envelope Generator 2: Sustain / Release
                                     Cycle Control
                            7-4    Select Sustain Cycle Duration: 0-15
                            3-0    Select Release Cycle Duration: 0-15

  D40E       54286            Voice 3: Frequency Control - Low-Byte
  D40F       54287            Voice 3: Frequency Control - High-Byte
  D410       54288            Voice 3: Pulse Waveform Width - Low-Byte
  D411       54289   7-4    Unused
                            3-0    Voice 3: Pulse Waveform Width - High-
                                     Nybble

  D412       54290           Voice 3: Control Register
                            7      Select Random Noise Waveform, 1 = On
                            6      Select Pulse Waveform, 1 = On
                            5      Select Sawtooth Waveform, 1 = On
                            4      Select Triangle Waveform, 1 = On
                            3      Test Bit: 1 = Disable Oscillator 1
                            2      Ring Modulate Osc. 3 with Osc. 2 Output,
                                     1 = On
                            1      Synchronize Osc. 3 with Osc.2 Frequency,
                                     1 = On
                            0      Gate Bit: 1 = Start Att/Dec/Sus,
                                             0 = Start Release

  D413       54291            Envelope Generator 3: Attack/Decay Cycle
                                     Control
                            7-4    Select Attack Cycle Duration: 0-15
                            3-0    Select Decay Cycle Duration: 0-15

  D414       54285             Envelope Generator 3: Sustain / Release
                                     Cycle Control
                            7-4    Select Sustain Cycle Duration: 0-15
                            3-0    Select Release Cycle Duration: 0-15
  D415       54293             Filter Cutoff Frequency: Low-Nybble
                                     (Bits 2-0)
  D416       54294             Filter Cutoff Frequency: High-Byte
  D417       54295             Filter Resonance Control / Voice Input
                                     Control
                            7-4    Select Filter Resonance: 0-15
                            3      Filter External Input: 1 = Yes, 0 = No
                            2      Filter Voice 3 Output: 1 = Yes, 0 = No
                                   Filter Voice 2 Output: 1 = Yes, 0 = No
                            0      Filter Voice 1 Output: 1 = Yes, 0 = No

  D418       54296            Select Filter Mode and Volume
                            7      Cut-Off Voice 3 Output: 1 = Off, 0 = On
                            6      Select Filter High-Pass Mode: 1 = On
                            5      Select Filter Band-Pass Mode: 1 = On
                            4      Select Filter Low-Pass Mode: 1 = On
                            3-0    Select Output Volume: 0-15

  D419       54297            Analog/Digital Converter: Game Paddle 1
                                     (0-255)
  D41A       54298            Analog/Digital Converter: Game Paddle 2
                                     (0-255)
  D41B       54299            Oscillator 3 Random Number Generator
  D41C       54230            Envelope Generator 3 Output
Title: Re: DAVE
Post by: IstvanV on 2010.May.21. 12:01:12
4 jelet tud, a négyszögjel mellett a háromszögjel, a szinusz jel,

Szinuszt azt nem :razz: Illetve közvetve lehet ahhoz hasonlót előállítani a szűrővel (azaz például háromszögjelből aluláteresztő szűrővel). Fontos viszont, és ezt nem említetted, a valódi analóg rezonáns szűrő, amelynek aluláteresztő-, felüláteresztő-, és sávszűrő kimenete is van, amelyeket tetszőleges kombinációban keverni lehet. Kár, hogy csak egy szűrő van, de még így is nagyon hasznos, és a jobb SID-re írt zenék és hangeffektusok igyekeznek is kihasználni. Ezen kívül a négyszögjel kitöltési tényezője állítható, és lehetőség van szinkronizálásra egy másik csatornával (ilyenkor a szinkronizált csatorna a másik csatorna frekvenciáján újraindul 0 fázisról), amik szintén hasznos, és analóg szintetizátorokban gyakran használt funkciók. Említést érdemel még a pontosabb (16 bites) frekvencia, amely 0.05872539 Hz egységekben lineárisan állítható. Így például a normál A hangnál két oktávval mélyebb 110 Hz-es hangnál a felbontás kb. 1 / 1873, EP-n ugyanez 1 / 1136 körüli érték; ez ugyan nem túl nagy eltérés, de nagyobb frekvencián egyre nagyobb, pl. 220 Hz-nél már 1 / 3746 a SID és 1 / 568 a DAVE, 440 Hz-nél pedig ez 1 / 7492.5 illetve 1 / 284. A CPC az alacsonyabb hang órajel miatt az EP-nél kétszer pontatlanabb. Talán nem túl nagy jelentőségű, de előny még a jobb minőségű zajgenerátor: 23 bites (8388607 bit után ismétlődik a minta), és a kimenet nem csak 1, hanem 8 bitet használ fel, tehát jobban hasonlít valódi analóg fehérzajra, mint a többi gépen, ahol a zajkimenet csak 0 vagy 1 lehet.
 
De a DAVE is tud néhány olyan dolgot, amit a többi gép nem (sztereó hang, 6 bites hangerő és DAC mód - ami trükkös és az SNDPLAY-ben használt megoldással akár 7 bites is lehet, 4 csatorna (még ha az egyik csak zaj lehet is), és a különböző torzítások hasznosak lehetnek effektusoknál és például cintányérszerű hangok előállításánál). Csak nagyon kevés az eredeti EP program :(, ezért tűnik a DAVE rosszabbnak az AY-nál, mert azt az átiratoknál nem lehet tökéletesen emulálni.
Title: Re: DAVE
Post by: Zozosoft on 2010.May.21. 12:28:49
és a különbözõ torzítások hasznosak lehetnek effektusoknál és például cintányérszerû hangok elõállításánál).
Csak az a baj, hogy ember nincs aki tudná, hogy lesz ebbõl cintányér, dob, vagy éppen egy robbanás hangaj :-(
Quote
Csak nagyon kevés az eredeti EP program :(, ezért tûnik a DAVE rosszabbnak az AY-nál, mert azt az átiratoknál nem lehet tökéletesen emulálni.
Igazából mennyi olyan program van, ami a DAVE-vel való zenélésre van írva? Tehát nem AY-t próbál meg emulálni, és nem is DAC-ol, hanem a DAVE képességeit használva "szintetizátorozik", és a bocibocitarkánál komolyabb?
A demók kb mind kiesnek, azok vagy digitális zenét játszanak, vagy Spectrum programokból kiszedett AY zenét. Egyedül a Sztereó Zene Demo néven futó dologra tudok gondolni, ami ha jól emlékszem a SOUND: eszközt használja.
Játékok közül talán a Magicball lehet nem AY átirat?

Egy jó zeneszerkesztõt kellett volna még kiadniuk anno :-(
Title: Re: DAVE
Post by: geco on 2010.May.21. 13:28:43
De a DAVE is tud néhány olyan dolgot, amit a többi gép nem (sztereó hang, 6 bites hangerő és DAC mód - ami trükkös és az SNDPLAY-ben használt megoldással akár 7 bites is lehet
Ezt a trükkös 7 bites lejátszást be lehet tenni a DTM playerbe is?
Title: Re: DAVE
Post by: IstvanV on 2010.May.21. 13:52:17
Ezt a trükkös 7 bites lejátszást be lehet tenni a DTM playerbe is?

Nem, mert az már most is használja arra, hogy 2*2 6 bites csatornát lehessen lejátszani (eredetileg csak 5 bites volt).
Title: Re: DAVE
Post by: endi on 2010.May.21. 13:56:49
Megint megjegyezném csendben hogy az én demóim egy része, és játékaim mind eredeti, saját EP zenét használnak. :) Más kérdés hogy nem viszik túlzásba az EP hangzásának kihasználását. :)
Az Ork Megademo 2-ben pl. csak saját zene van, és általában nem digi zenék.

EP hangzás tekintetében azonban van pár jól sikerült játék:
Wizards Lair - szerintem ez marha jó, bár csak egyféle, de nagyon jó hangszer van benne
Nodes of Yesod: a fõcím zene is, de a gameover zene fõleg!
...ki lehetne ezeket gyûjteni, és talán külön listát készíteni róluk "eredetiség" tekintetében! (bár az eredeti EP játékok lista se nagyon készül, na de majd én...)

Amúgy persze a digi zenék leelõzik a sima zenéket, de azért persze azokból erõsen hiányoznak a magas frekvenciák, na meg persze közben alig bír valami mást csinálni a gép...

Azért a c64 zseniális hangcsippel rendelkezik, ez tény... és még annyit megjegyeznék vele kapcsolatban, hogy a legtöbb ember - még magukat c64-zene rajongóknak tartók is - nem ismerik az igazán durva hangzású c64 zenéket!

Title: Re: DAVE
Post by: geco on 2010.May.21. 14:18:52
Nem, mert az már most is használja arra, hogy 2*2 6 bites csatornát lehessen lejátszani (eredetileg csak 5 bites volt).

Arra emlékeztem, hogy eredetileg 5 bites volt, arra nem, hogy miért nem lett 7 :D
Erre a kis emlékeztetőre volt szükségem.
Title: Re: DAVE
Post by: IstvanV on 2010.May.21. 21:03:42
Arra emlékeztem, hogy eredetileg 5 bites volt, arra nem, hogy miért nem lett 7 :D

Az SNDPLAY úgy állít elő 7 bites hangot, hogy két 6 bites csatornát használ, amelyekre a 7 bites érték felét írja le- és felfelé kerekítve.
Title: Re: DAVE
Post by: Zozosoft on 2010.May.28. 20:40:50
Egy rövid teszt alapján úgy látszik, nem mûködik ez a megoldás. A 0. bit beállítása után továbbra is "látja" a NICK az alsó 48K video memóriát, és az lassú is marad. Azonban ilyenkor valamiért lefagy az EXOS, ha megpróbálom elindítani a rendszert a 01:C00Dh címen.

Csináltam egy próba EXOS 2.32-t. Az eredménye az, hogy folyamatosan resetelgeti magát, csak akkor indul el, ha 64K-s módot választjuk. Némi ASMON-ozás után kiderült, hogy így a 08-FB tartományban is a négy videó szegmens ismétlõdik folyamatosan, magyarán a teljes 08-FF tartomány videó memória lesz, amibõl persze csak 64K van kiépítve, ezért ismétlõdik. Ez okozza a folyamatos resetelést, mivel amikor az FB-t tesztelné, felülírja a rendszerszegmenst.
Kicsit még színesíti a dolgot, hogy ahol van létezõ "külsõ" RAM (vagy egy 128-as gépben pl az F8-FB), ott ütközés lesz az adatbuszon a videó memória és a bõvítõ memória között, így némileg keverednek a bitek: úgy tûnik sima olvasási ciklusban AND mûvelet történik a két tartalom között, viszont a gyorsabb utasítás olvasási ciklus elkapja a "külsõ" RAM gyorsabb jelét, ezért nem fagy le a gép egybõl az OUT 191,5-re :-)
Írás végbe megy mindkét RAM-ba.

Már csak arra lennék kíváncsi mért hablatyoltak arról a 16K RAM-ról a DAVE leírásban...
Title: Re: DAVE
Post by: Zozosoft on 2010.August.12. 11:17:34
István!
Az SNDPLAY úgy állít elõ 7 bites hangot, hogy két 6 bites csatornát használ, amelyekre a 7 bites érték felét írja le- és felfelé kerekítve.
8 bites, 1 csatornás lejátszást (lásd Enterball hangminták :-) ) ki lehetne sajtolni a Dave-bõl?
Title: Re: DAVE
Post by: Mayer Gábor on 2010.August.12. 12:20:51
Én fel sem tudom fogni, hogy jutott eszükbe a tervezőknek, hogy ne 8 bites legyen a D/A konverter?
Title: Re: DAVE
Post by: Zozosoft on 2010.August.12. 12:51:36
Én fel sem tudom fogni, hogy jutott eszükbe a tervezõknek, hogy ne 8 bites legyen a D/A konverter?
Csak arra tudok gondolni, kifogytak a lábakból, ehhez plusz 4 láb kéne DAVE chipre, és akkor lehet, hogy már egy kategóriával nagyobb, és drágább chip kellett volna.
Akkoriban bõven elégnek tûnhetett a 6 bit is, az AY vagy a SID is csak 4 bites.
Title: Re: DAVE
Post by: IstvanV on 2010.August.12. 15:35:13
István!8 bites, 1 csatornás lejátszást (lásd Enterball hangminták :-) ) ki lehetne sajtolni a Dave-bõl?

Talán megoldható, mindenesetre 3 csatorna keverésével (ez csak úgy lehetséges, ha mindegyiken 62.5 kHz-es négyszögjel van) elvileg 0 és 189 közötti szint állítható elő, ami nem a teljes 8 bites tartomány. Itt talán problémát jelenthet az is, hogy a regiszterek írása nem pontosan egyszerre történik; ez már a 7 bites hangnál is eredményez némi minőségromlást.
Az Enterball hangminták lejátszását azonban talán már a 7 bites kimenet is javítaná, esetleg ditherelt hangmintákat is használva, ha a lassabb 7 bites kódot sikerül beépíteni a lejátszás lassulása nélkül.

Csak arra tudok gondolni, kifogytak a lábakból, ehhez plusz 4 láb kéne DAVE chipre, és akkor lehet, hogy már egy kategóriával nagyobb, és drágább chip kellett volna.

Ezen kívül természetesen a külső, ellenállásokkal megvalósított DAC is valamivel bonyolultabb lett volna, illetve ami talán fontosabb, a valódi 8 bites minőséghez jóval pontosabb (és így drágább) ellenállásokra lett volna szükség. Az EP-kbe épített ellenállások valójában már a 6 bites felbontásnál is észrevehetően pontatlanok lehetnek, legalábbis az én gépemen nem tűnik lineárisnak a kimenet.

Quote
Akkoriban bõven elégnek tûnhetett a 6 bit is, az AY vagy a SID is csak 4 bites.

A SID valójában nem 4 bites, mert bár csak 4 biten lehet hangerőt állítani, az előállítható hullámforma nem csak négyszögjel lehet. Valójában 12 bites D/A konvertert és 8 bites burkológörbe generátort használ (lásd például itt (http://sid.kubarth.com/articles/interview_bob_yannes.html)), igaz, ezeknek a kimenetét nem lehet közvetlenül programozni (pedig az hasznos funkció lett volna).
Title: Re: DAVE
Post by: Zozosoft on 2010.August.12. 15:48:59
ha a lassabb 7 bites kódot sikerül beépíteni a lejátszás lassulása nélkül.
Az eredetiben ott van a 8-ról 6 bitre konvertálás, és még egy plusz várakozó ciklus is, így ezek kihagyásával talán nem lesz sokkal lassabb.
Title: Re: DAVE
Post by: Tuby128 on 2011.February.26. 22:26:28
Most, hogy volt idõm áttanulmányozni a kapcsolási rajzot, nagyon szomorú következtetéseket vontam le a Z80-DAVE összjátékkal kapcsolatban.

 Amikor a Dave perifériával kapcsolatos dolgot szándékozik csinálni, Z80-at lekapcsolja az adatbuszról (van hogy meg is állítja) és ezt a buszt használja a perifériákkal (azokhoz tartozó multiplexerekkel, tárolókkal) való kommunikációra.
 Gondolom Nick memória zsonglõrködésekor is hasonló "lekapcsolás" történik.
 Ezek a processzor idõ elcsenések nagyon le tudják lassítani a rendszert, már értem, hogy egy POKE 56,201 (Megszakítás letiltás) kiadása a BASIC program elején mennyivel meggyorsítja a futást.
 Kár hogy ezeket a lekérdezéseket, a DAVE nem egy saját buszon komunikálja le, mert akkor nem akasztaná meg bizonyos dolgok (pl billentyûzet/joystick lekérdezés) folyamán.
 Az sem szerencsés, hogy a Z80 a nyomtató vagy a NET hálózat felé közvetlenül küldi az adatokat. Simán beírhatná egy átmeneti tárba, azután mondjuk a DAVE átlapátolhatná, miközben a Z80 tudna mást csinálni.
 Igazából a hangképzés is mehetne ilyen elven, kicsit gyorsabb gépet kaphatnánk vele.
Title: Re: DAVE
Post by: Zozosoft on 2011.February.26. 22:29:36
Most, hogy volt idõm áttanulmányozni a kapcsolási rajzot, nagyon szomorú következtetéseket vontam le a Z80-DAVE összjátékkal kapcsolatban.
Rosszul vontad le a következtetéseket!
Title: Re: DAVE
Post by: Tuby128 on 2011.February.26. 23:11:34
Egy mondattal nem igazán elégíted ki kíváncsiságomat. Mondták már hogy nagyon szûkszavú vagy?
Title: Re: DAVE
Post by: Ferro73 on 2011.February.27. 00:27:14
Az sem szerencsés, hogy a Z80 a nyomtató vagy a NET hálózat felé közvetlenül küldi az adatokat. Simán beírhatná egy átmeneti tárba, azután mondjuk a DAVE átlapátolhatná, miközben a Z80 tudna mást csinálni.
Ilyet nem tud a DAVE, amre gondolhattál az a Z80 DMA lenne de az is felfüggesztené a CPU-t
Title: Re: DAVE
Post by: Zozosoft on 2011.February.28. 10:12:28
Akkor bõvebben :-)
Amikor a Dave perifériával kapcsolatos dolgot szándékozik csinálni,
Dave nem csinál semmit a perifériákkal.
Quote
Z80-at lekapcsolja az adatbuszról (van hogy meg is állítja)
Nem kapcsolja le, és nem állítja meg (*egy esetet kivéve)
Quote
és ezt a buszt használja a perifériákkal (azokhoz tartozó multiplexerekkel, tárolókkal) való kommunikációra.
Dave nem kommunikál a perifériákkal.

Az EP-ben csak két adatbusz van. Van egy a Nick és a videómemória között, és van az általános Z80-as.
A perifériákkal a Z80 kommunikál a saját adatbuszán. A perifériáknak a dolga, hogy saját címdekóderükkel felismerjék, hogy õket címzi a Z80, majd pedig le vagy rátegyék az adatot a buszról/ra.
A Dave-nek csak annyi a szerepe a dologban, hogy az alaplappal kapcsolatban álló dolgoknál elvégzi a címdekódolást, így megspórolva egy félmarék 74LS IC-t.
Tehát a Z80-nal párhuzamosan generál engedélyezõ jeleket a különbözõ cuccok számára, mindezt villámgyorsan, hogy a perifériáknak legyen idejük elvégezni az I/O mûveletet, mielõtt a a Z80 befejezi az I/O ciklust (http://ep128.hu/Sp_Konyv/Pic/Z80_1_9.gif).
I/O ciklus meghosszabítására van lehetõség a WAIT vonallal, de az az EP-ben nem használt.

* egy esetben állítja meg a Dave a Z80-at, memóriamûveleteknél, a BFh porton beállított várakozási érték alapján, minden memória olvasáskor, vagy csak utasítás olvasáskor (vagy nincs várakozás), ez tényleg a WAIT vonalon történik.

Quote
Gondolom Nick memória zsonglõrködésekor is hasonló "lekapcsolás" történik.
Itt tényleg történik lekapcsolás, a Dave generálja a VRAM jelet, amivel szól a Nicknek, hogy a Z80 a videómemóriához akar hozzáférni.
Ha a Nick nem dolgozik vele, akkor az U5,6,7 IC-ket vezérelve összekapcsolja a Z80-as adat és címbuszt a videómemóriával.
Ha meg dolgozik vele, akkor felfüggeszti a Z80 órajelét, amíg nem végez.


Quote
már értem, hogy egy POKE 56,201 (Megszakítás letiltás) kiadása a BASIC program elején mennyivel meggyorsítja a futást.
Az nem ezért gyorsítja, hanem azért mert kimarad az EXOS megszakításkezelõjének pár ezer utasítása.

Title: Re: DAVE
Post by: Tuby128 on 2011.February.28. 11:56:47
Örülök, hogy felvilágosítottál. Tehát amikor le kell kérdezni a bill. mátrix egyik sorát a 10-bõl, akkor a Z80 nyom egy IO utasítást a DAVE-nek, aki kiküldi a WR0 jelet a megfelelõ multiplexernek. Ezután a Z80 küld egy IO kérõ utasítást a DAVE-nek aki egy másik D-tárolónak ad WR0 jelet így a Z80 megkapja az eredményt az adatbuszon.

Talán a nyomtatóportnál is ugyanez megy kivéve, hogy az egyirányú?
Title: Re: DAVE
Post by: Zozosoft on 2011.February.28. 12:48:55
Örülök, hogy felvilágosítottál. Tehát amikor le kell kérdezni a bill. mátrix egyik sorát a 10-bõl, akkor a Z80 nyom egy IO utasítást a DAVE-nek, aki kiküldi a WR0 jelet a megfelelõ multiplexernek. Ezután a Z80 küld egy IO kérõ utasítást a DAVE-nek aki egy másik D-tárolónak ad WR0 jelet így a Z80 megkapja az eredményt az adatbuszon.
Majdnem, másodiknak RD0 megy, ami beengedi a billentyûzetrõl az adatot az adatbuszra.
És a kettõ között nincs szoros összefüggés. Amit egyszer kiírtunk, az mindaddig ott marad, amíg másik sort ki nem választunk, vagy pedig reset nem lesz.
Tehát, ha pl egy SPACE-ra vár a program, elegendõ csak egyszer kiírni a 8-at a B5h portra, utána folyamatosan olvashatja a B5h-ról a Space sorát. De ha pl az ALT-ot használjuk a belsõ joystickhoz tûzgombnak, akkor az egész játék irányításhoz elég egy OUT, és onnantól csak IN.
Quote
Talán a nyomtatóportnál is ugyanez megy kivéve, hogy az egyirányú?
Igen, ott a WR1 a (B6h port) írása. RD1 az olvasás, ami jelen esetben csak a Ready bitet jelenti, de spórolás okán a B6h port többi bitjén más perifériak bitjei vannak.
Title: Re: DAVE
Post by: Ferro73 on 2011.March.03. 20:28:57
kérdés a DAVE 40. lába kimenet ? vagy csak rossz a kapcsrajz
http://www.ep128.hu/Ep_Hardware/Pic/EP64-1.jpg
Title: Re: DAVE
Post by: Zozosoft on 2011.March.03. 20:34:09
kérdés a DAVE 40. lába kimenet ? vagy csak rossz a kapcsrajz
http://www.ep128.hu/Ep_Hardware/Pic/EP64-1.jpg
A RESET-re gondolsz? Az kimenet, a Dave állítja elõ a rendszer Reset jelet, ami mindig csak egy pillanatnyi, akárhogy nyomkodjuk a gombot. Nem úgy mint PC-n, hogy amíg nyomod, addig resetben marad a gép...

A döglött DAVE-es alaplapokat errõl lehet felismerni, hogy a reset vonal 0-ban van ragadva.
Title: Re: DAVE
Post by: Ferro73 on 2011.March.03. 20:42:00
Igen igen valami rémlik kár, hogy ezt szoftweresen nem lehet használni.
Ezért csináltam külön.
Title: Re: DAVE
Post by: Tuby128 on 2011.March.03. 22:52:28
Ha szoftveresen lehetett volna resetelni az EP-t, az igen idegesítõ lett volna sokunknak. Jobb így, az nem programoknak, hanem felhasználónak készült!
Title: Re: DAVE
Post by: Ferro73 on 2011.March.04. 05:56:24
Ha szoftveresen lehetett volna resetelni az EP-t, az igen idegesítõ lett volna sokunknak. Jobb így, az nem programoknak, hanem felhasználónak készült!
végülis ha kiakarunk lépni a játékokból ugyis meleg reszett kell vagy hideg, /dupla/
Title: Re: DAVE
Post by: Zozosoft on 2011.March.04. 10:00:05
Ha szoftveresen lehetett volna resetelni az EP-t, az igen idegesítõ lett volna sokunknak. Jobb így, az nem programoknak, hanem felhasználónak készült!
Szoftveres resetre ott az EXOS 0 hivás.
Title: Re: DAVE
Post by: Ferro73 on 2011.March.04. 10:42:53
Szoftveres resetre ott az EXOS 0 hivás.
gondolod foleg ha RST 30h -ra valami ás rutint raknak játékoknál marad out B3h,00h   jp 0c00x az már biztos
Title: Re: DAVE
Post by: Ferro73 on 2011.March.04. 22:57:39
Nem tudom de a turbokártyával  ami 4-6 Mhz a hangferekvencia változik vagy nem ?
Title: Re: DAVE
Post by: Lacika on 2011.March.04. 23:35:44
Nem tudom de a turbokártyával  ami 4-6 Mhz a hangferekvencia változik vagy nem ?

Igen, de be lehet (http://ep128.hu/Ep_Hardware/Ep_Turbok.htm) állítani.
Title: Re: DAVE
Post by: Ferro73 on 2011.March.05. 01:23:30
és ha nem pont 6 Mhz hanem nagyobb 7-8-10 ?
Title: Re: DAVE
Post by: Zozosoft on 2011.March.05. 07:53:37
és ha nem pont 6 Mhz hanem nagyobb 7-8-10 ?
Akkor már mindenképpen magasabb lesz a hang.
Title: Re: DAVE
Post by: Ferro73 on 2011.March.05. 10:34:24
Akkor már mindenképpen magasabb lesz a hang.
és ha közvetlenül 8 Mhz-et nyomatok a DAVE-nek a 62. lábára :lol:
Title: Re: DAVE
Post by: Tuby128 on 2011.March.05. 10:47:06
Inkább a 40.-re. hehe
Title: Re: DAVE
Post by: Ferro73 on 2011.March.05. 17:02:03
Mivel ebböl oszthatja vissza a frekit nincs jelentösége, hogy szinkronizálni kelljen.
Müködik anno igy csináltam én.
Title: Re: DAVE
Post by: Ferro73 on 2011.November.14. 18:03:15
Elméletileg a 4 csatorna egyikébõl lehet 0038H megszakítást generálni.
A további csatornán hang hullámot állítani.
A kérdésem az hogy, ez egyszerre is meg oldható?
mert így akkor a háttér zene vagy csak az effektek mehetnének hardverbõl.
némi példa majd assembler-ben.
Title: Re: DAVE
Post by: IstvanV on 2011.November.14. 19:45:30
Elméletileg a 4 csatorna egyikébõl lehet 0038H megszakítást generálni.
A további csatornán hang hullámot állítani.
A kérdésem az hogy, ez egyszerre is meg oldható?
mert így akkor a háttér zene vagy csak az effektek mehetnének hardverbõl.
némi példa majd assembler-ben.

Megszakítást az alábbiakkal lehet generálni (külső eszközök nélkül):
  - az LPT-ben a VINT bit lefutó éleinél
  - 1 Hz-es megszakítás
  - 50 Hz/1 kHz/hanggenerátor megszakítás
Az utóbbi a 0. vagy az 1. hanggenerátort használhatja. Természetesen ilyenkor az adott hanggenerátor már csak a megszakításnak megfelelő frekvencián tud hangot előállítani (egészen pontosan a négyszögjel frekvenciája a megszakításénak a fele), tehát általában 0 hangerejű, de a másik 3 csatorna továbbra is használható. A hanggenerátor megszakítás DAC módban is működik, ilyenkor a hangra nincs hatása.
Title: Re: DAVE
Post by: Ferro73 on 2012.February.13. 17:20:25
Ha jól emlékszem a ZX BEEP rutin  két változója a Hz és a Hz periódus ciklusa és nem pedig idõ ms igaz ugy is vissza kell számolni.
van valami gyûrû moduláció ?? a DAVE-nek.
Olyasmit nem lehet esetleg programozni  Pl 0. hangcsat. x Herz  -> 1. hangcsat  vissza számlálás /periódusok száma/ -> INT

Ha  a program DI állapotban van kap egy  megszakítást  akkor még nem szakítja meg a programot de ha EI -t kap akkor azonnal megszakítja a programot ?
Title: Re: DAVE
Post by: Zozosoft on 2012.June.20. 13:10:34
Találtam némi hiányosságot a technikai leírásokban  :oops: nevezetesen a B5h, B6h, B7h portok tisztességes leírása egész egyszerûen hiányzik a hivatalos dokumentumokból! Lehet, hogy volt ilyen leírás, csak még nem került elõ...
A DAVE leírás ilyenekkel intézi el a dolgot, hogy "Aktív alacsony szintû kapujel a WR0 vonalon"...
Aha, biztos úgy van... gondoltam, amikor elõször olvastam, meg még utána is sokáig :oops:

Dave bácsinak végülis igaza van, tõle valószínûleg csak annyit kértek, hogy rakjon bele az IC címdekódoló részébe külsõ I/O eszközök vezérléséhez szükséges vezérlõ jeleket is. Azt, hogy ezeket végül pontosan mire fogják felhasználni, valószínûleg nem is tudta, ezért került csak ez a szûk szavú leírás a dokumentációba.
Késõbb viszont csak egy az egyben belecsapták a DAVE leírást a Technical Information könyvbe, nem kiegészítve azt.
Egyes perifériakezelõknél szerepel a Hardver leírás, ahol ismertetik ezen portok bitjeinek jelentését, ezek az eszközök a TAPE, SERIAL/NET, PRINTER.
Viszont a KEYBOARD leírásból teljesen kimaradt! Hivatalos forrásból egyedül ebben (http://enterprise.iko.hu/technical/Converting_Spectrum_programs.pdf) lehet megtalálni, hogyan lehet EP-n közvetlenül billentyûzetet és joystickot olvasni. Viszont mivel ide nem kellett, ezért a Control 1,2 portok teljes tudása ismeretlen maradt.

Kezdjük az elején: a DAVE 3 külsõ I/O eszközhöz biztosít címdekódolást, ráadásul kombinálva az írás/olvasás jelekkel, ezzel is egyszerûsítve a külsõ eszköz felépítését. A 3 I/O port a jól ismert B5h, B6h, B7h, mindegyikhez külön vezérlõ jel van írás és olvasás esetére, ezek a DAVE WR0/RD0, WR1/RD1, WR2/RD2 kimenetei, ezekre vannak rákötve a gép különbözõ ki és bemenetei (billentyûzet, magnó, nyomtató, soros port, joystick). Az RD2 nincs is használva! (Ennek esetleges kihasználásával könnyen lehetett volna egy 8 bites bemenetet építeni a gépbe. Pl egy A/D átalakító chipet rákötve a magnóbemenetre, és kiolvasva az RD2 által, már kész is lehetett volna a digitalizáló...)

B5h írása (WR0) esetén 8 bit tárolódik el az U25 jelû 74LS273 IC-vel megvalósított tárolóban. Ez a 8 bit több eszköz által kerül felhasználásra.
bit 0-3: ezzel a billentyûzet mátrix sorát lehet kiválasztani. Ezt az U26 jelû 74LS145 IC végzi, amely egy BCD dekóder, 10 engedélyezõ kimenettel. Ha ez a 4 bites érték 0h-9h között van, akkor a megfelelõ kimenet 0-ba kerül. Ah-Fh közötti értékeknél egyik kimenet se aktív.
A 10 kimenet a KB0-KB9 jelek, ezek mennek a fólia csatlakozó 10 tûs részére, valamint ezek vannak kivezetve a Control 1/2 csatlakozókra is, megosztva a Control 1 csatlakozóra a KB0-KB4, Control 2-re KB5-KB9.
Itt egyébként maradt lehetõség a fejlesztésre, ha a késõbbi  Enterprise típusokban teljesen dekódolva lett volna a 4 bit, azzal komolyabb, több gombos billentyûzet lett volna kezelhetõ, maximálisan akár 16x8 azaz 128 gomb. (Ahogy PC-knél is bejött a 101 gombos billentyûzet.) Nem tudni, hogy azon a bizonyos szuper EP-n éltek-e ezzel a lehetõséggel...

A maradék 4 bit egy-egy inverteren halad keresztül, azaz minden esetben 1-es érték aktiválja az adott funkciót:
bit 4: STROBE kimenet a nyomtató portra
bit 5: magnóhang kikapcsolása
bit 6: REM1 bekapcsolása
bit 7: REM2 bekapcsolása

B5h olvasása (RD0) az U27 jelû 74LS373 IC-n keresztül beolvassa a billentyûzet mátrix kiválasztott sorát.

B6h írása (WR1) esetén 8 bit tárolódik el az U24 jelû 74LS273 IC-vel megvalósított tárolóban. Ez egy az egyben a nyomtató port 8 bites kimenete.

B6h olvasása (RD1) az U28 jelû 74LS373 IC-n keresztül történik, ennek bemenetére azonban már több helyrõl érkeznek a jelek:
bit 0-2: Control csatlakozók Keyboard J, Keyboard L, Keyboard K bemenetei. Ezzel el is érkeztünk az erõsen nem dokumentált részhez. Annyit tudtunk eddig, hogy bit 0 volt használva a külsõ joystickok beolvasásához, az ehhez tartozó Keyboard J láb volt a lábkiosztásban Közösnek (Common) nevezve, ill. használva a joystick átalakítóban. De van ott még kettõ amibõl az egyik ráadásul le is maradt az EXOS könyvben közreadott lábkiosztásban (http://enterprise.iko.hu/technical/Enterprise_Pinout_information.pdf), csak az elsõ Application Notes-ben (http://enterprise.iko.hu/technical/Enterprise-AppNote-01.pdf) pótolták, ill. a kapcsolási rajzon is rajta van.

Hogyan is mûködik a joystick: "hagyományos" gépek esetén az a 4 irány+tûz az bemenetek, a joy érintkezõi a GND-vel kötik össze ezeket, itt tehát a GND a Közösnek nevezhetõ vezeték.
EP esetén a 4 irány+tûz az 5 kimenet, ebbõl van két adag a két Control csatlakozóhoz, ezek megfelelnek a billentyûzet mátrix sor kiválasztásnál is használt KB0-KB9 jeleknek, amelyik ki van választva az 0 szintû. A Közös pedig bemenet, ha a joystick érintkezõje összeköti az éppen kiválasztott iránnyal, akkor szintén 0-ba kerül.
Viszont mindez nem csak a szokásosan használt Keyboard J bemenettel végezhetõ el, hanem az L és K bemenettel is! (Kíváncsi lennék, honnan ezek a nevek, a J lehet mint Joystick, de a többi?) Ezzel így egy Control csatlakozóban 3x5 érintkezõt lehet lekérdezni, a két csatlakozón együtt összesen 30-at! Semmi akadálya nem lett volna olyan joy átalakítót készíteni, amivel 2 vagy 3 hagyományos joystickot lehetne egy Control bemenetre kötni, azaz összesen akár 6 külsõ joy is lehetne egy EP-n! Mondjuk a Lightcycles-t átírni 6 játékosra...  :ds_icon_cheesygrin:
Vagy lehetett volna több gombos EP joystickokat készíteni, pl autó vagy repülõgép szimulátorokhoz. Igazából nem is értem miért nem kezdték a perifériák sorát egy gyári, géphez szabott Enterprise joystickkal, több értelme lett volna, mint pl a Speakeasy-nek...
Amúgy a JOY függvény is simán kezelhetné 3,4,5,6 joyokat is, semmibõl nem állna, csak másik bitet kéne venni a B6h-ról olvasott értékben.

Vélhetõleg a külön kapható Numerikus tasztatúra használhatta ki a Control port plusz tudását. Sajnos ilyenbõl még nem került elõ egy sem  :cry:

Vissza térve a B6h port olvasott bitjeihez:
bit 3: READY bemenet a nyomtató portról, 0 jelzi ha a nyomtató készen áll a kommunikációra
bit 4: Serial/Net csatlakozó Adat bemenet (DATA IN)
bit 5: Serial/Net csatlakozó Állapot bemenet (STATUS IN)
bit 6: Magnó szint bemenet
bit 7: Magnó adat bemenet

B7h írása (WR2) esetén csak 2 bit tárolódik el az U30 jelû 74LS74 IC-vel megvalósított tárolóban.
bit 0: Serial/Net csatlakozó Adat kimenet (DATA OUT)
bit 1: Serial/Net csatlakozó Állapot kimenet (STATUS OUT)

B7h olvasása (RD2) nem használt
Title: Re: DAVE
Post by: lgb on 2013.July.17. 20:59:10
Az JS-emu irasanal belefutottam egy erdekes problemaba. Az egesz ugy kezdodott, hogy a RESET gombra klikkelve van amikor nincs "semmi", ha a Z80 allapotot lekerem, az latszik, hogy itt akad el: d607 es kornyeke, es a 0 van a 0xB3 regiszterben. Ez alapjan az EXOS-ban ott ez van:


Code: [Select]
NEAR_D603:              ; code label
        ; Referenced at D607
        ; I/O on port 0xb4: Dave enable/reset interrupt sources/latches
        IN   A,($B4)    ; D603 DB B4 "??"
        AND  $10        ; D605 E6 10 "??"
        JR   Z,NEAR_D603        ; D607 28 FA "(?"

Ez azert is erdekes, mert kozben elvileg az LPT ok, es van is benne VINT-el rendelkezo modeline. Viszont nem is ez utott szoget a fejembe, hanem nehany inkonzisztencia, ami a leirasokra is jellemzo. Azt irjak, hogy a VINT jel alacsony aktiv, mint jelszint. Viszont a megfelelo LPB-ben a VINT bit 1-re allitando ha interrupt-ot szeretnenk. Ez meg nem ellentmondas, hiszen lehet maskepp abrazolva valahol mint a jelszint aztan a kivezetesen. Azonban az ep128.hu-n levo exos konyv (http://www.ep128.hu/Ep_Konyv/Exos.htm) ezt irja a B4 port kornyeken:

"Az 1., 3., 5., és 7. bit csak akkor működik, ha engedélyezett a megfelelő megszakítás, egyébként mindig 0.; ha engedélyezett a megszakítás, akkor az 1. és 3. bit a 0. és 2. bit minden (fel- és lefutó) élére beállítódik, az 5. és 7. bit pedig csak a 4. és 6. bit lefutó éleire."

Na most ez erdekes, mert azt allitja, hogy regiszter bit szinten is a lefuto elre reagal a video interrupt. Ugyanakkor ep128emu-ban is ha irok egy programot ami vegtelen ciklusban olvassa a B4 tartalmat 0x10-el AND-eli, majd kiirja keretszinnek, akkor azt latom, hogy fekete a keret, es egy helyen zold, azaz nekem inkabb ugy tunik, hogy B4-es portot nezve FELfuto elre erzekeny a video interrupt (hiszen a zold szin felel meg a 0x10-nek, tehat a VINT-es LPB alatt a megfelelo bit 1, ergo elotte nulla volt, azaz ez FELfuto el!) es nem LEfutora. Kerdem en: akkor most kinek van igaza? Megegyszer: itt most nem is annyira az alaplapon futo megfelelo "drot" jelszintjere gondolok, hanem ami pl egy emubol latszik, azaz pl a B4 bitjeirol ertekezek.
Title: Re: DAVE
Post by: IstvanV on 2013.July.18. 09:29:40
A B4h port 4. bitje (ha engedélyezett) azonos az aktuális LPB-ben a VINT bit állapotával. A video megszakítás a VINT=1-es LPB után a következő, VINT nélküli LPB elején történik. Ez nem egyértelmű a dokumentáció alapján, de valódi gépen teszteltem.
Title: Re: DAVE
Post by: lgb on 2013.July.18. 18:51:00
Quote from: IstvanV
A B4h port 4. bitje (ha engedélyezett) azonos az aktuális LPB-ben a VINT bit állapotával. A video megszakítás a VINT=1-es LPB után a következő, VINT nélküli LPB elején történik. Ez nem egyértelmű a dokumentáció alapján, de valódi gépen teszteltem.

Ezt ertem, de akkor ezek szerint igazam van es rossz a leiras :) mert ha a B4h port 4. bitje a VINT LPB beli allapotat tukrozi, akkor az 0->1 "bit atmenetnel" interrupt, tehat FELfuto el, mig a doksi szerint a bit "lefuto elet" nezi, tehat hibas a leiras. Vagy keverve van, hogy a jelszintre ertjuk az elet, vagy a kerdeses bit allapotra. Amugy meg a masik, hogy irod: ha engedelyezett. Bar en nem neztem utana valodi gepen, nekem ugy tunik, hogy nem engdelyezett bit eseten a 4. bit mutatja az allapotot ugyanugy, csak nem valt ki megszakitast (azaz az INT1-hez tartozo latch nem fog beallni), de ettol meg lekerdezheto a vint allapota! Vagy ez akkor nem igaz? Imho igy logikus, mert ha csak engedelyezett allapotban tukrozne a bemenet allapotat, akkor ertelme sem nagyon lenne, mivel akkor kb uazt jelentene mint az int latch allapota :)
Title: Re: DAVE
Post by: IstvanV on 2013.July.18. 19:08:28
Quote from: lgb
mert ha a B4h port 4. bitje a VINT LPB beli allapotat tukrozi, akkor az 0->1 "bit atmenetnel" interrupt, tehat FELfuto el, mig a doksi szerint a bit "lefuto elet" nezi
A megszakítás lefutó élnél történik, mint említettem, a következő LPB elején, ahol már nincs beállítva a VINT bit. Ez az, ami nem egyértelmű csak a dokumentáció alapján.

Code: [Select]
LPB 1 | LPB 2 | LPB 3
       _________         VINT = 1
       |       |
--------       --------  VINT = 0
               ^
               |
               megszakítás

Quote from: lgb
nekem ugy tunik, hogy nem engdelyezett bit eseten a 4. bit mutatja az allapotot ugyanugy, csak nem valt ki megszakitast (azaz az INT1-hez tartozo latch nem fog beallni), de ettol meg lekerdezheto a vint allapota!
Commodore gépeken valóban így van, de EP-n ez nem működik, ilyenkor mindig 0 az állapot. Pontosítás: a 4. bit valóban mindig működik, csak az 5. (és 1., 3., és 7.) bit lesz mindig 0, ha az adott megszakítás tiltott. Az ep128emu-ban is így van, csak már elég régen írtam ezt a részt. :oops:
Title: Re: DAVE
Post by: lgb on 2013.July.18. 20:08:54
Quote from: IstvanV
A megszakítás lefutó élnél történik, mint említettem, a következő LPB elején, ahol már nincs beállítva a VINT bit. Ez az, ami nem egyértelmű csak a dokumentáció alapján.

Wow ... Na ez erdekes, koszi!

Quote
Commodore gépeken valóban így van, de EP-n ez nem működik, ilyenkor mindig 0 az állapot.

Tuti? A leiras ezt mondja: "A 0., 2., 4., és 6. bit mindig olvasható, akkor is, ha az adott megszakítás le van tiltva", azaz lekerdezheto mindig, akkor is, ha nincs interrupt engedelyezve, max ugye nem fog interrupt-ot generalni akkor nyilvan (igy a latch bitek nyilvan nem lesznek 1-es persze adott int-re, de nem is azt mondom, hanem a level-nek megfeleloeket!), de az allapota lekerdezheto egy IN-el a B4-es portra vonatkozoan. Amugy egyszeruen ellenorizheto lenne valos gepen (csak eppen nincs a kozelben nekem most), egy olyan LPT-vel ahol egyik modeline-ban a VINT be van allitva, tobbiben meg nincs. Aztan tiltani kene az interrupt-okat, es utana vegtelen ciklusban olvasni a 0B4h portot, 16-al AND-olni, majd kikuldeni nick border colornak pl (ehhez persze jo, ha olyan helyre esik a a vint-es lpb ami tutira latszik a normal keptartalomban, ne a vsync kornyekere pl). Ha ezek utan az latszik hogy egy helyen mas a border color, akkor letiltott vint mellett is lekerdezheto az allapota. Igy vizualisan is remekul szemleltetheto. :) Vagy ezt mar vki ellenorizte es feleslegesen okoskodok itt? :)
Title: Re: DAVE
Post by: IstvanV on 2013.July.19. 09:58:16
Quote from: lgb
Tuti? A leiras ezt mondja: "A 0., 2., 4., és 6. bit mindig olvasható, akkor is, ha az adott megszakítás le van tiltva"
Ezt már korábban javítottam a hozzászólásban, ezek a bitek valóban mindig olvashatók, csak nem jól emlékeztem. Az 1., 3., 5., és 7. bit az, ami mindig 0 az adott megszakítás tiltásánál (Commodore gépeken viszont a tárolók ilyenkor is olvashatók, csak nem váltanak ki megszakítást). Az ep128emu forráskódjában a helyes megoldás található.
Title: Re: DAVE
Post by: IstvanV on 2013.July.19. 10:01:33
Quote from: Zozosoft
bit 6: Magnó szint bemenet
Talán érdemes említeni, hogy itt a bit 1 értéke jelzi az alacsony (zöld) szintet.
Title: Re: DAVE
Post by: IstvanV on 2013.July.19. 10:04:20
Hang emulációhoz hasznos lehet ez (http://enterpriseforever.com/hardver/dave/msg19278/#msg19278) a leírás (vagy az ep128emu forráskódja :)).

Itt (http://enterpriseforever.com/hardver/nick/msg22124/#msg22124) pedig néhány érdekesség olvasható a NICK video módjairól. Nem említi a VBLANK/VSYNC módot, de ilyenkor fekete képet kell generálni, még a kereten is (keret = VBLANK, kép = VSYNC (negatív világosság, de emulátoron ennek nem sok jelentősége van)).
Title: Re: DAVE
Post by: lgb on 2013.July.19. 22:28:22
Quote from: IstvanV
Hang emulációhoz hasznos lehet ez (http://enterpriseforever.com/hardver/dave/msg19278/#msg19278) a leírás (vagy az ep128emu forráskódja :)).

Itt (http://enterpriseforever.com/hardver/nick/msg22124/#msg22124) pedig néhány érdekesség olvasható a NICK video módjairól. Nem említi a VBLANK/VSYNC módot, de ilyenkor fekete képet kell generálni, még a kereten is (keret = VBLANK, kép = VSYNC (negatív világosság, de emulátoron ennek nem sok jelentősége van)).

Koszi az eddigi infokat is! Emulatort irni hasznos, az ember egy csomo erdekesseget megtud :) Nem allitom, hogy valaha is egy javascript emulator lesz annyira "pontos" mint az ep128emu, de meg akkor is erdemes tudni a reszleteket, meg ha ugy is dontok, hogy valahol erdemes kicsit aldozni a korrekteseg oltaran a performancia miatt. Az ep128emu forraskodja sajnos kevesbe ertelmes szamomra, mivel mindig elveszek a C++ konstrukciok utesztojeben, hogy egy ismertebb linux kernel hackert idezzek:

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."

:) Ez persze inkabb engem minosit, mint a C++-t ...
Title: Re: DAVE
Post by: Zozosoft on 2013.August.22. 09:49:02
Quote from: IstvanV
A dokumentáció szerint "normál" (nem D/A) módban a DAVE a 4 hanggenerátort időosztásos rendszerben küldi a kimenetre. Ha az adott generátor kimenete logikai "1", akkor a hangerő regiszterének megefelő érték jelenik meg a DAVE kimenetén, egyébként 0. A D/A mód hatása az, hogy amelyik csatornán (bal és/vagy jobb) engedélyezett, ott minden időszeletben feltétel nélkül a 0. generátor hangerő értéke a kimenet. Ezért lesz négyszeres hangerő a D/A módban, mert gyakorlatilag a többi generátor helyett is a 0. szól. Ha csak az egyik csatornán engedélyezett a D/A, akkor a másikon továbbra is lehet zene és/vagy zaj, mert a D/A módnak csak a kimenet vezérlésére van hatása, a generátorokra (számlálók, szűrők, stb.) nem.

Ezt áthoztam ide is, meg legyen a Dave tudástárban is :-)
Ez nekem új volt, bár most utólag átolvasva a Dave leírást már látom :oops:

Az időszeletek mekkorák?
Title: Re: DAVE
Post by: IstvanV on 2013.August.22. 23:48:47
Quote from: Zozosoft
Az időszeletek mekkorák?
Ezt nem tudom biztosan, de valószínűleg legfeljebb 1 us (1 / 250000 / 4). Oszcilloszkóppal könnyen ki lehetne deríteni, hogy valójában mekkorák.
Title: Re: DAVE
Post by: Z80System on 2013.November.18. 13:56:27
Azt, hogy a 64K címteret 4 lapra osszák fel, azt indokolta valami ?

Mert pld. egy 8 -as felosztás már sokkal simulékonyabb lenne, egy 16- os meg csuhajj, 1000H -s felosztásról beszélhetnénk.

De már a 8 -as is nagyon jó volna ...
Title: Re: DAVE
Post by: Zozosoft on 2013.November.18. 14:12:47
Quote from: Z80System
Azt, hogy a 64K címteret 4 lapra osszák fel, azt indokolta valami ?
Az, hogy kb majdnem az összes lapozós Z80 rendszerben így van.
De az, hogy szabadon tudsz bármit bárhova lapozni, az szerintem csak az EP-n van, így jól becsüld meg!
Pl Spectrum 128-on, a 128K RAM-ot csak a 3. lapon tudod lapozgatni, a 0. lapon meg két ROM közül választhatsz...
Title: Re: DAVE
Post by: Z80System on 2013.November.18. 14:19:04
Quote
Az, hogy kb majdnem az összes lapozós Z80 rendszerben így van.
Hát ... nem túl meggyőző érv ... annyit kellene módosítani bármin ami 1 lapot megtanult lapozni, hogy 2 -t vagy 4 -t lapozzon ugyanott. Persze a lapozási idő ... ez talán már érvebbnek tűnik ...


Quote
így jól becsüld meg!

Persze, mindenképp. Becsül- becsül. Csak azért egy 8 -ast mégjobban becsülnék ... :)
Title: Re: DAVE
Post by: Zozosoft on 2013.November.18. 14:20:12
Több laphoz bonyolultabb áramkör kellene.
Title: Re: DAVE
Post by: geco on 2013.November.18. 14:25:35
16K-s lapozás teljesen jó, 8-asnál beleőrülnél a sok lapba, ja és akkor csak 2 megás lehetne az EP. :D
Title: Re: DAVE
Post by: Z80System on 2013.November.18. 14:32:49
Quote
16K-s lapozás teljesen jó, 8-asnál beleőrülnél a sok lapba,


Dehogyis. Én bírnám.



Quote
ja és akkor csak 2 megás lehetne az EP. (http://enterpriseforever.com/Smileys/phpbb/ds_icon_biggrin.gif)



Miért ? Sztm semmi más nem változna, csak 8 lap regiszter kéne a Dave -be, oszt jóvan. Nem ilyen 1Xű ?
Title: Re: DAVE
Post by: Zozosoft on 2013.November.18. 14:33:45
Quote from: Z80System
Miért ? Sztm semmi más nem változna, csak 8 lap regiszter kéne a Dave -be, oszt jóvan. Nem ilyen 1Xű ?
Na de 256x8k az pont feleannyi mint 256x16k!
Title: Re: DAVE
Post by: Z80System on 2013.November.18. 14:33:58
Quote
Több laphoz bonyolultabb áramkör kellene.

Jó, hát van a Dave -ben gondolom 8K tranyó, most akkor lenne 100 -zal több ... nem ?
Title: Re: DAVE
Post by: Z80System on 2013.November.18. 14:35:18
Quote
Na de 256x8k az pont feleannyi mint 256x16k!
Ó, fukk! :)

Ez mondjuk már tényleg érv akkor ... 

(Ezt ne mondjátok el senkinek, jó ... :oops:)
Title: Re: DAVE
Post by: Zozosoft on 2013.November.18. 14:38:36
Quote from: Z80System
Jó, hát van a Dave -ben gondolom 8K tranyó, most akkor lenne 100 -zal több ... nem ?
A mennyiség az adott volt, abban kellett elférni. Így is van már kiszorult funkció, az első leírás alapján még a belső memóriabővítőnek is a Dave dekódolta volna az engedélyező jelet, ez később kimaradt.
Title: Re: DAVE
Post by: lgb on 2013.November.18. 16:52:46
Quote from: Z80System
Azt, hogy a 64K címteret 4 lapra osszák fel, azt indokolta valami ?

Mert pld. egy 8 -as felosztás már sokkal simulékonyabb lenne, egy 16- os meg csuhajj, 1000H -s felosztásról beszélhetnénk.

De már a 8 -as is nagyon jó volna ...

Szerintem az oka az, hogy alapvetoen ugye a Z80 egy 8 bites adatbusszal rendelkezo rendszer. Amikor lapozni akarsz, akkor egy 8 bites adatot OUT-olsz ki a B0-B3 portok valamelyikere. Ha 16K lapmeretet nezel, akkor a lapok szama ebben a meretben pont kiadja az EP cimbuszanak meretet (8 bit + 14 bit = 22 bit), a 4 Mbyte-ot. Ha kisebb lapmerettel operalsz, akkor vagy kisebb lenne az EP teljes cimtartomany (pl 8K-s lapra 2Mbyte), vagy kene pl ket OUT utasitas egy lapozashoz (8K-s lapbol mar 512 es nem 256db fedi le a 4Mbyte-ot), es a ket OUT utasitas kozotti resz veszelyes is lenne mert akkor erosen inkonzisztens az allapot ...

Amugy nehogy azt hidd, hogy a kisebb lapmeret mindig jobb ... Kepzeld el, ha mondjuk kell neked 32K egyben, az igy most mondjuk p2,p3-ra belapozva 2db OUT utasitas. Ha 8K-s lapok lennenek akkor mar 4db lenne, stb. Es ha ezt gyakran kell valtanod, sokkal lassabb az egesz! Persze a nagy es a kis lapmeretnek is vannak elonyei es hatranyai is, szerintem kellett egy koztes valasztas.

Persze trukkozni lehetett volna, de ez kisse "draga" lett volna hw-ben akkoriban (ma mar beztos nem), pl: 4K-s lapmeret, amde ha a B0 portot irod akkor az elso 4 lap "automatice" beall 4 sorrendben egymas utan kovetkezore 1db OUT hatasara, de lehetne specifikus port masik jo par darab, ahol lehet kisebb meretekben is. Hasonlo amin elgondolkodtam pl primo emu kapcsan (nehany csuuuunya primo program beleirna a ROM-ba, ami primo-n ugyan nem okoz gondot, de EP-n nyilvan igen, mivel ott a primo ROM image az valojaban RAM-ban van): hogy pl B0-B3 az a "megszokott" lapozas, de pl masik 4 porton lehetne beallitani csak irasra mas lapra vonatkozot (ha B0-B3-hoz nyulnal, akkor mindketto szinkronban irodik azaz kpmpatibilitasi gond nincs, hacsak az extra lapozo regisztereket nem irja valaki!). Ez pl megoldana a primo emu gondjat is, mert irasra pl a 0-as szegmens lapoznam be, ami az EXOS, es azt ugyse tudja felulirni :) Olvasasra meg jonne rendesen a RAM. Persze lehet okoskodni, de mivel az EP nem ilyen, ez max sci-fi, vagy amig nem epiti meg az ember a "Super EP"-t, ami azert lehetoleg visszafele kompatibilisnek kene lennie :)
Title: Re: DAVE
Post by: Zozosoft on 2013.November.18. 17:18:59
A Z180-nak van még egy furcsa "lapozója", ott két pointert állítgatsz, amivel 1/2/3 darabra osztódik a címtartomány, és a darabok kezdetét lehet megadni az 1 megás tartományban.
Az mondjuk egy érdekes kérdés, mindezt hogyan hozták volna össze a Szuper EP-ben, hogy kompatibilis is maradjon a régivel... szerintem leginkább sehogy, csak simán 64K-s Z80-nak lett volna bekötve (ahogy én is nekikezdtem).
Title: Re: DAVE
Post by: Z80System on 2013.November.18. 17:23:50
Quote
 mindezt hogyan hozták volna össze a Szuper EP-ben,

Hát hogy ... külső lapozó elektronikával. Nem ? Z80 -ban nincs lapozás, mégis lapozunk.
Title: Re: DAVE
Post by: Zozosoft on 2013.November.18. 17:25:38
Quote from: Z80System
Hát hogy ... külső lapozó elektronikával. Nem ? Z80 -ban nincs lapozás, mégis lapozunk.
De a Z180-ban meg pont van :-) de ha az lett volna használva, akkor meg nem lett volna kompatibilis a régi programokkal.
Title: Re: DAVE
Post by: lgb on 2013.November.18. 17:29:43
Quote from: Zozosoft
A Z180-nak van még egy furcsa "lapozója", ott két pointert állítgatsz, amivel 1/2/3 darabra osztódik a címtartomány, és a darabok kezdetét lehet megadni az 1 megás tartományban.
Az mondjuk egy érdekes kérdés, mindezt hogyan hozták volna össze a Szuper EP-ben, hogy kompatibilis is maradjon a régivel... szerintem leginkább sehogy, csak simán 64K-s Z80-nak lett volna bekötve (ahogy én is nekikezdtem).

Ja, errol mar beszeltunk. Vagy sehogy, vagy "super EP" modban a 64K folotti resz fixen behuzaloztak volna a cimterulet tetejere pl, vagy hasonlo.

Amugy pl C128-nak van olyan MMU-ja ahol "profilokat" lehet osszeallitani, es egy irassal beallitani aztan, vagy hasonlo (mondjuk C128-at nem igazan ismerem ...).
Title: Re: DAVE
Post by: Tuby128 on 2015.March.03. 13:59:23
Nem értek valamit: Van ez a kapcsolási rajz a csatolmányban. Pirossal jelölve a magnó kimenet. Itt az van, hogy az egy stereo csatlakozó, a magnó viszont MONO csatit használt. Aminek az a tulajdonsága, hogy sztereo aljzatba mono dugót betolva az egyik csatornát lehúzza a földre. Mivel a magnó jack mindig be volt dugva, nem lett volna szabad hallanom az egyik csatornát a monitor csatlakozón keresztüli audio berendezéssel, ha ez a rajz jó lenne.
Title: Re: DAVE
Post by: Zozosoft on 2015.March.03. 14:09:12
Itt az van, hogy az egy stereo csatlakozó
Az biztosan sztereó, mivel oda szokás a fejhallgatót/erősítőt kötni, és az sztereóban szól. Azt nem tudom mi lenne, ha magnó meg sztereó monitor lenne együtt, mivel már rég floppyztunk mire lett sztereó monitor. Ill. mi a Scartra is egy jack kábelen vittük a hangot a magnókimenetről.
Title: Re: DAVE
Post by: IstvanV on 2015.March.03. 15:45:09
A kimenetek ellenállásokkal el vannak választva, ezért a magnókimenet rövidre zárásakor a monitoron még van hang, csak a minősége rosszabb valamivel. :) A 10 uF-os kondenzátorok és 330 ohmos ellenállások (amelyek rövidre záráskor a kimenetet terhelik) ilyenkor 48 Hz-es felüláteresztő szűrőként működnek, ezért a legmélyebb hangok szintje hallhatóan csökken, ami monitorba épített kis hangszórókon talán nem feltűnő. A műveleti erősítő típusától függően a 330 ohmos terhelés esetleg növelheti a torzítást, de valószínűleg nem annyira, hogy hallható legyen, különösen mivel a kimenet általában négyszögjelekből áll.
Title: Re: DAVE
Post by: Zozosoft on 2015.March.03. 16:04:25
Sejtettem, hogy lesz itt valami trükk :-)
Title: Re: DAVE
Post by: Zozosoft on 2015.March.21. 11:13:04
Werner Lindnernek köszönhetően:
Dave chip tervrajz 1. oldal (http://enterprise.iko.hu/schematics/3007-000-22_Sheet-1.pdf)
Dave chip tervrajz 2. oldal (http://enterprise.iko.hu/schematics/3007-000-22_Sheet-2.pdf)
Dave chip lábkiosztás és tokozási információk (http://enterprise.iko.hu/technical/DAVE-Chip-Pinout-and-plastic-package-dimensions.pdf)
Title: Re: DAVE
Post by: Z80System on 2015.March.21. 11:58:53
Ez a teljes tervrajz ? 1:1 -ben ami csak az DAVE IC -ben van ? ? ? :)
Title: Re: DAVE
Post by: Zozosoft on 2015.March.21. 12:23:43
Ez a teljes tervrajz ? 1:1 -ben ami csak az DAVE IC -ben van ? ? ? :)
Igen, egyenesen az osztrák chip gyártó cégtől.
Title: Re: DAVE
Post by: Z80System on 2015.March.21. 12:26:32
Jézus ! :)
Title: Re: DAVE
Post by: Mayer Gábor on 2015.March.24. 15:15:53
A nick is megvan?
Title: Re: DAVE
Post by: Zozosoft on 2015.March.24. 15:21:50
A nick is megvan?
Nick topicban nézted már? :-) (http://enterpriseforever.com/hardver/nick/msg45562/#msg45562)
Title: Re: DAVE
Post by: Tuby128 on 2015.March.25. 16:30:19
Én úgy gondolom, hogy az Exos specifikáció és az EP64 kapcsolási rajz alapján könnyebb megírni az FPGA kódot VHDL/Verilog-ban, mint a megadott kapcsolási rajzot bevinni. A kapcsolási rajzot inkább csak a nyitott kérdések esetén venném elő, illetve a rejtett funkciók megállapításában jöhet jól.

 Azon gondolkodtam, hogy az elkészítéshez kellene egy megbuherált EP, ahol a DAVE chip ki van forrasztva és helyén egy FPGA van. Megírni egy funkciót, és speciális szoftvert amivel tesztelni lehet. A speciális rom azért kell, hogy ha készítek egy kódot, akkor kizárólag azt tesztelni tudjam, és ne az legyen, hogy mindent megírok egyszerre, s ha le akarom tesztelni az inicializálás ideje alatt kifagy. Ilyenkor keresgélek, javítok rajta, és ismét tesztelném, de megint semmi. Ekkor elmegy minden kedv és akkor a fene megette.

 Úgy kellene megcsinálni a dolgot, hogy egy szoftveres fórumtárs ír egy egyszerű ROM-ot, amivel elindítva tesztelhetjük az egyes alap funkciókat:
0. Reset funkció
1. Memórialapozás
2. Órajelek / Megszakítások meglétét
3. Billentyű és egyéb beviteli eszközök működését
4. Kommunkikáció a NICK-kel
...
99. Hangképzés
...stb

 Mivel az EXOS mindenféle megszakításokat használ, ezért kezdetben kihagynám a dologból, direkt periféria teszteket csinálnék. A végrehajtás után kimásolnám a memóriát, és elküldeném a szoftveres kollégának, hogy ellenőrizze le az eredményt.
 Valahogy úgy képzelem el, hogy a szoftver a lefutás után megállítaná a Z80-t. Így könnyebben készíthetek memóriadumpot.

 De ha már ennyire jól megy, akkor már a ROM-ot helyettesíthetném RAM-mal, amit a PC-ről töltenék le a teszt EP-re.

 A feszültségszinteket kezdetben egy külön IC-vel illeszteném.

 Ki olyan jó EP szoftveres, hogy velem tartana?
 
Title: Re: DAVE
Post by: lgb on 2015.March.27. 18:48:22
Hat nem tudom, biztos, hogy egyszerubb? Mivel opencores-en van Z80 (pl a T80) lehet egyszerubb egy teljes Ep-t szintetizalni FPGA-ban, lehet farigcsalni stb. A vegen persze pl a Dave reszt kulon is meg lehet probalni felhasznalni. Bar, ez lehet csak az en felelmem, de en biztos nem tudnek olyat csinalni, hogy Dave kiforraszt, es valahogy egy FPGA-t operalni a helyere (eleve egyszerubb egy FPGA devel board-dal). Mondom en ezt ugy, hogy meg mindig kezdo VHDL tanulo vagyok :)
Title: Re: DAVE
Post by: Tuby128 on 2015.March.27. 19:32:09
Lépjünk túl a forrasztáson, az gyerekjáték.
 Én időt akarnék megtakarítani azzal, hogy csak azt tesztelem azt a részletet amit már megírtam. A gördülékeny hibakereséskor nagyon fontos, hogy legyenek már működő részek amire sosem kell gyanakodnom. Most írod, hogy van open Core Z80. Csak ebből áll az EP? Dave mellett ott van egy NICK is, amit megint nem ismerünk meg egy rakat periféria, amit a "behelyettesítésnek" köszönhetően így nem kell külön lekódolni.
 Ha egyből indítom a EXOS IC-t, és azonnal elszáll mit csináljak? Mi szállt el? Mit csinált? Nem tudni, valamilyen komplex feladatot biztos. Mi volt a hiba oka? Ki tudja melyik modul működött hibásan, hisz mindegyik újonnan készült, és még egyiket sem tudtam igazán tesztelni.
Title: Re: DAVE
Post by: lgb on 2015.March.27. 22:09:29
Lépjünk túl a forrasztáson, az gyerekjáték.

:) :) En nehezen tudok, mert semmi remesebbet nem tudok annal elkepzelni, mint ilyeneket forrasztani. Nekem altalaban normal DIP is nehezen megy, pedig 6 eves korom ota forrasztok tulajdonkeppen :)

Quote
Én időt akarnék megtakarítani azzal, hogy csak azt tesztelem azt a részletet amit már megírtam. A gördülékeny hibakereséskor nagyon fontos, hogy legyenek már működő részek amire sosem kell gyanakodnom. Most írod, hogy van open Core Z80. Csak ebből áll az EP?

"Majdnem" - koltoi tulzassal, de ... :) Induljunk ki abbol, amikor irtam az JSep-t. Az, hogy volt egy Z80 emulacio, abbol par oras munkaval mar lett 'valami' ami ugyan messze van a tokeletes EP emulaciotol, de mar valami kimutathatot csinal. Ott is eleg volt, hogy total pontatlan idozitessel akar csak text40 modot emulaljak szinek stb nelkul, vmi mar jott, ezzel az idiota Nick emulacioval, es Dave memorialapozgatas implementalasa utan. Szoval kb emelekeim szeint Z80 + B0-b3 lapozgatas + minimal Nick ganyolas utan a cucc mar vmit csinal. Igazabol meg Nick megszakitas, sot Dave megszakitasok sem kellettek, max az Enterprise logon nehez atlepni mert ott exos mar video int-bol hivnak a kbd figyelest. Ez viszont igy jol lathatoan ad ezert lehetoseget a fokozatos fejlesztesnek, nem kell minden egyszerre tokeletesnek.

Quote
Dave mellett ott van egy NICK is, amit megint nem ismerünk meg egy rakat periféria, amit a "behelyettesítésnek" köszönhetően így nem kell külön lekódolni.
 Ha egyből indítom a EXOS IC-t, és azonnal elszáll mit csináljak? Mi szállt el? Mit csinált? Nem tudni, valamilyen komplex feladatot biztos. Mi volt a hiba oka? Ki tudja melyik modul működött hibásan, hisz mindegyik újonnan készült, és még egyiket sem tudtam igazán tesztelni.

Hat szimulalni kell nyilvan, pl GHDL-ben, ami lehetove teszi (leforditott) VHDL es C kod otvozeset es futtatasat is akar egybe linkelve, ahol igy konnyu nezni. Az nyilvan tenyleg nem segit, ha FPGA-ba bekerul a bitstream aztan nem csinal semmit, es az ember csak gondolkodva bamul a 100labura, hogy mi baja lehet :)
Title: Re: DAVE
Post by: Zozosoft on 2015.March.27. 22:33:17
Induláshoz a B0-B3 portok kellenének, plusz a címdekódolás a ROM/CART/VRAM/VIO kimenetekre. Ha ez meg van akkor már futhat valami program, ami a képernyőt is eléri.
Title: Re: DAVE
Post by: lgb on 2015.March.27. 22:43:58
Induláshoz a B0-B3 portok kellenének, plusz a címdekódolás a ROM/CART/VRAM/VIO kimenetekre. Ha ez meg van akkor már futhat valami program, ami a képernyőt is eléri.

Azert gondoltam en is, hogy egy teljes EP-vel egyszerubb. Ui a T80 nevu core viszonylag jol tesztelt, tobb project is hasznalja, minimalis Dave-et osszehozni valoszinu nem nehez, amivel mar _vmit_ csinal. Tehat inkabb elso korben a Nick-re kene ramenni, hogy legyen "lathato" eredmenye a dolognak :) Ha meg mar az van, akkor szepen lehet tenyleg tesztelni vmi custom ROM-al egyszeru(bb)en.

Persze ez csak az en velemenyem, nyilvan vki egy "igazi" EP-n is megprobalhatja a Dave-et lecserelni, es csak annyi :) Ha mar annyit tud, hogy ROM-ot olvas, es VRAM-ba tud irni, meg nyilvan IO-t tud, akkor mar vmit lehet kezdeni a kepernyovel, es irni tesztprogramot.
Title: Re: DAVE
Post by: Tuby128 on 2015.April.01. 20:49:30
Épp a földalatti vasútról száltam ki a főpályaudvarnál, sétáltam fel a vágányokhoz, miközben azon töprengtem amit írtál LGB. Hogy a Z80-as kódot is fel kellene használni. Ekkor kipattant az ötlet: Nem a DAVE-et kell kiszedni az alaplapból, az nyugodtan maradhat, hanem a Z80-at.
Több ok is szól mellette:
- Furatszerelt, tehát könnyen összekapcsolható stiftekkel egy segéd nyákkal amin az FPGA van
- Mivel a Z80-nak mindenhez van hozzáférése ezért az FPGA is látni fog mindent, nincsenek rejtett megszakítások többé
- Mivel az FPGA-ban működik a Z80, az EP alaplap lakói észre sem veszik a változást
- Innen később akár NICK teszteket is lehet majd csinálni

Időrendben a következőket tenném:
1. Letesztelném, hogy a szabad forráskódú Z80 megy-e az EP környezetben. Ezzel kizárható a Z80 oldali hiba.

2. A meglévő kód mellé létrehozom a VICA (új DAVE) egységet, és mögé a kamu perifériákat és a memóriát
     - Bevezetek egy speciális OP-kódot, mely dönt, hogy DAVE-től vagy VICA-tól vegye a CPU az olvasott jelet:
        - Out és memóriaírás utasítások kimennek DAVE-re és VICA-ra
        - IN és memóriaolvasás utasítások csak az spec. OP-kód által kiválasztott irányból
     - Mivel az írási művelet mindkét irányba megindul, a fizikálisan létező rendszer is ugyanúgy kellene működjön
        - Tesztként akár folyamatosan össze is lehet hasonlítani a két memóriát

3. Szépen lassan minden DAVE-ben található egységet kiváltok VICA-val.

Egy sarkallatos pontot látok, ez pedig a megszakítások. Már régen nem olvastam a kézikönyvet, nem emlékszem, hogy milyen megszakítások vannak. Olyan teszt szoftverkörnyezet kell, ahol első körben nincs figyelembe véve az 50Hz-es és egyéb megszakítás. Bár az FPGA-ban tudok előállítani periodikus jeleket.



 Úgy érzem ez most járható út lesz, és körvonalazódik a megoldás.
Title: Re: DAVE
Post by: Trefe on 2015.April.01. 21:57:26
Lehetne az új "DAVE"-et a konstruktőr után " TUBYBB"-nak nevezni "VICA" helyett? ;-)
Title: Re: DAVE
Post by: Tuby128 on 2015.April.01. 22:26:52
A mérnöki világban a termékek mindig lány nevet kapnak, ettől lesznek vonzzóbbak.
Azért választottam ezt a nevet, mert amikor gyermekkoromban olvastam Az egri csillagokat beleszerettem Cecey Évába. Odaadó feleség volt, csakúgy mint édesanyám. Hát innen a névválasztás.
Title: Re: DAVE
Post by: lgb on 2015.April.01. 23:28:51
A mérnöki világban a termékek mindig lány nevet kapnak, ettől lesznek vonzzóbbak.
Azért választottam ezt a nevet, mert amikor gyermekkoromban olvastam Az egri csillagokat beleszerettem Cecey Évába. Odaadó feleség volt, csakúgy mint édesanyám. Hát innen a névválasztás.

:) Ez szep, de en nem adnek uj nevet neki, mert alapvetoen ugye compatible kene, hogy legyen, max uj dolgokkal is, tehat lehetne DAVE2, SuperDave, vagy hasonlo. Viszont az is igaz, ha tenyleg csinalsz ilyet, nem en fogom eldonteni, mi lesz a neve, szoval pofamat alapallasba allitom ezennel. Amugy en mar elkezdtem EP-t csinalni ugymond VHDL-ben, a problem az, hogy nincs min kirpobalni, masreszt mivel azota is epp erteni kezdem a VHDL-t, igy komolyan barmire az ilyen iranyu probalkozasaim nem sok mindenre jok :D Kene szerezni vmi devel board-ot elso korben, meg mindig ott tartok. Node, ez messzire vezet, es O.T. ...
Title: Re: DAVE
Post by: Tuby128 on 2015.April.02. 00:10:34
Valaki el tudná beszélni címszavakban, hogy honnan ismeri fel a Z80, hogy melyik irányból jött a maszkolható megszakítás?
Már régen olvastam a Novotrade könyvet.
Title: Re: DAVE
Post by: lgb on 2015.April.02. 00:25:54
Valaki el tudná beszélni címszavakban, hogy honnan ismeri fel a Z80, hogy melyik irányból jött a maszkolható megszakítás?
Már régen olvastam a Novotrade könyvet.

Mit ertesz "irany" alatt? Ha EP-s kornyezetben nezzuk, akkor a Z80 altal ismert harom fajta megszakitaskezelesbol az IM1-et hasznalja, azaz igy azt kevesbe tudja a Z80 onmagaban, hogy mit jelent egy interrupt, es "miert" allt elo, ebben segit a Dave, igy valoban tobb megszakitas keres lehet, de Z80 fele mar egyetlen jel megy, aztan sw-bol megvizsgalja (a Dave megfelelo portjat olvasva), hogy konkretan mi valtotta ki a megszakitast. Vagy vmi hasonlo :D
Title: Re: DAVE
Post by: Tuby128 on 2015.April.02. 00:52:27
Ezeket? És ha feldolgozta, akkor törli a bitet. Csak ezek vannak, vagy van más is?

R20 W #B4

    b0
        1 = enable 1KHz / 50Hz / TG interrupt.
    b1
        1 = reset 1KHz / 50Hz / TG interrupt latch.
    b2
        1 = enable 1Hz interrupt.
    b3
        1 = reset 1Hz interrupt latch.
    b4
        enable INT1.
    b5
        reset INT1 latch.
    b6
        enable INT2.
    b7
        reset INT2 latch.

R20 R #B4

    b0
        1KHz / 50Hz / TG divider. (f int/2 square wave).
    b1
        1 = 1KHz / 50Hz / TG latch set.
    b2
        1Hz divider. (0.5 Hz square wave).
    b3
        1 = 1Hz latch set.
    b4
        INT1 input pin.
    b5
        1 = INT1 latch set.
    b6
        INT2 input pin.
    b7
        1 = INT2 latch set.
Title: Re: DAVE
Post by: lgb on 2015.April.02. 01:00:20
Annak ellenere, hogy emulator iras miatt egyszer mar megertettem, lehet az en fantasztikus magyarazasi kepessegeim miatt nem engem kene kerdezned :) De amugy igen, sacc/kb van negy forras. Ebbol az INT1 es INT2 az kulso, ha jol remlik az INT1 van a Nick-re kotve, tehat az a video interrupt, az INT2 meg talan nincs hasznalva. A masik ketto, az kb Dave internal interrupt source. Vmi olyasmi, ha barmelyik latch beallt, akkor az azt jelenti, hogy a Z80 interrupt vonala aktiv allapotban van, torolni neked kell sw-bol, kulonben fura lesz, ha visszatersz az interrupt handlerbol, mert azonnal ujra int. lesz :) Amugy erdemes Dave topic-okat megnezni, nalam magyarazni sokkal jobban tudo emberek nagyon sok szepet leirtak mar a temarol :)
Title: Re: DAVE
Post by: Tuby128 on 2015.April.02. 01:01:54
A kapcsolási rajz alapján a következő jelek vannak:
Int1 - Videomegszakítás, gondolom a LPT alapján valamikor jelez
Int2 - Serial Port A4-es bemenet (Ez mi is?)
1Hz - Magától értetődő
1KHz/50Hz/TG IRG - Ezt nem tudom mi
Title: Re: DAVE
Post by: lgb on 2015.April.02. 01:16:15
Quote
1KHz/50Hz/TG IRG - Ezt nem tudom mi

Ejj, tenyleg no offenz, de csak el kene olvasnod Neked is egy Dave leirast :)
Pl itt beallithatod, hogy mi legyen az "alapja" annak az interrupt-nak:

Code: [Select]
R7 W #A7
b6,b5
    Select interrupt rate:

    00 = 1KHz.
    01 = 50Hz.
    10 = Tone generator 0. f = 250,000/(n+1)
    11 = Tone generator 1.

Az Int2-rol mindig azt hittem, hogy nem hasznalt, lehet megis, csak epp nem sokszor szoktak, es pl valami soros jatekban (a "ep network" serial modra?) kerdesben jutott (volna?) szerephez.

http://ep128.hu/Ep_Konyv/Exos.htm#240 (http://ep128.hu/Ep_Konyv/Exos.htm#240)

Ez amugy tenyleg jo, erdemes elolvasni, a portok felsorolasa utan ad arra vonatkozo tippet, hogy mikepp is van ez a latch stb dolog pontosan, mi a viszonya a Z80-al, stb. En uezt kb 10 oldalban magyaraznam, es a vegen meg en se ertenem mar :)
Title: Re: DAVE
Post by: endi on 2015.September.22. 22:25:55
nem nick, hanem dave, és nem is bug, hanem feature :)
szóval: tök feleslegesen raktak D/A átalakítót a chipbe, hiszen ha egy csatorna hangmagasságát a nem hallható tartományba rakjuk, akkor a hangerő állításával kb ugyanazt a minőséget érhetjük el digi lejátszásra, ráadásul sokkal több csatornán...
Title: Re: DAVE
Post by: lgb on 2015.September.22. 23:13:15
nem nick, hanem dave, és nem is bug, hanem feature :)
szóval: tök feleslegesen raktak D/A átalakítót a chipbe, hiszen ha egy csatorna hangmagasságát a nem hallható tartományba rakjuk, akkor a hangerő állításával kb ugyanazt a minőséget érhetjük el digi lejátszásra, ráadásul sokkal több csatornán...

Szerintem nincs is D/A atalakito a Dave-ben, ha Dave csati normal hangot (oszcillator) szolaltsz meg, ha "digi" van (tok mindegy!), az ugyanugy "digitalisan" jelenik meg a Dave labain. Semmi kulonbseg. A D/A "atalakitast" a Dave-re aggatott "ellenallas letra" rendszeru D/A atalakito vegzi :) Ebbol a szempontbol hasonlit a Nick-re, ott is digitalisan jon ki a pixel "szine" amit kivul alakitanak aztan digitalis jelle. Ez azert erdekes, mert lathato modon a Dave/Nick inkabb tisztan digitalis cucc szerintem. C64-en pl a SID/VIC is foglalkozik nem digitalis "rendszeru" jel eloallitasaval ...
Title: Re: DAVE
Post by: endi on 2015.September.22. 23:44:22
Szerintem nincs is D/A atalakito a Dave-ben, ha Dave csati normal hangot (oszcillator) szolaltsz meg, ha "digi" van (tok mindegy!), az ugyanugy "digitalisan" jelenik meg a Dave labain. Semmi kulonbseg. A D/A "atalakitast" a Dave-re aggatott "ellenallas letra" rendszeru D/A atalakito vegzi :) Ebbol a szempontbol hasonlit a Nick-re, ott is digitalisan jon ki a pixel "szine" amit kivul alakitanak aztan digitalis jelle. Ez azert erdekes, mert lathato modon a Dave/Nick inkabb tisztan digitalis cucc szerintem. C64-en pl a SID/VIC is foglalkozik nem digitalis "rendszeru" jel eloallitasaval ...

akkor csak az a pár port beállítási lehetőség felesleges
Title: Re: DAVE
Post by: lgb on 2015.September.23. 00:20:19
akkor csak az a pár port beállítási lehetőség felesleges

Az lehet, amde szinte semmi extra nem kell hozza, lehet, egyetlen egy kapunyi vagy hasonlo addon a Dave belsejeben :) Viszont elonye tobb is lehet (bar csak tippelek, ennyire azert nem ertek hozza): pl hiaba magas a freki, lehet vmi interferancia pattern ami kialakul, ha a digi hangod kiadott frekvenciaja es a "nagyon magas" oszcillator frekvencia egymas tobbszorosei, nem tudom, vagy esetleg nagyobb a zavaro jel a tobbi aramkorre nezve is, ha meg Dave is nyomatja. Ami viszont erdekesebb (bar ezt meg kevesbe tudom): lehet, hogy a "D/A mod" beallitasa csak annyi, hogy fix szintet ad, es kozben az osszcillator szabadon dolgozhat barmilyen frekvencian (anelkul, hogy hatasa lenne a "digi lejatszasra"). Ennek pl (ismet: csak tippelek) lehet olyan ertelme, hogy a meg mindig lehet talan TG interrupt-ot eloallitani vele, vagy pl modulalni egy masik csatornat, stb. Talan :) Ez utobbi onnan jutott az eszembe, hogy Dave-ben tobb midenre is hasznalhato egy csatorna, ahol fontos a frekvenciaja, annak ellenere, hogy nem hallod peldaul, ilyen cel lehet a TG interrupt, mas csatornara configolt beallitott hatasa, stb. Majd valaki okosabb kijavit :)
Title: Re: DAVE
Post by: lgb on 2016.March.02. 11:15:27
Valaki esetleg Dave ugyben tudna valaszolni a kovetkezore? Mi tortenik, ha az ember irja a tone generator-ok counter-jeit. Az azonnal betoltodik, amirol vissza kezd szamolni ugye, vagy az elozo megy tovabb, es csak akkor tolti be az ujat, ha alulcsordul a szamlalo? Illetve, ha azonnal, akkor mi tortenik, ha elobb a 12 bites counter also byte-jat irom, aztan a felso 4 bitet, akkor ketszer toltodik be, eloszor ugy, hogy a "fele van csak update-elve", aztan mar az egesz?

Nem tudtam szepen leirni mi a bajom. de konkret oka van, hogy ezt kerdezem: Xep128-ba irnek eppen nemi TG interrupt emulaciot. Ezert irtam egy teszt programot. Hibahataron belul azt irja ki mint az ep128emu-nal (marmint a Xep128, de csak a meg nem publikus verzio), _kiveve_ ha a TG interrupt forrasa valamelyik TG csati. Mivel a teszt programban akkor irom be a counter-ek erteket is, elek a gyanuperrel, hogy a problema az, hogy ep128emu szerint a TG counterek erteke azonnal betolti a visszaszamlalosdit is, mig Xep128-nal nem, igy persze a ketto eredmenye eltero lesz viselkedesileg (es nem, a "sync" bit nincs hasznalva).

Lasd kepek a kulonbsegrol, van kis kulonbseg mashol is, de elenyeszo, a ket hex ertek amugy Dave 8/12MHz beallitasra nezve meri egy ciklusban hogy mennyiszer fut le az, amig valt erteket az adott "level" bit a B4 porton.

Illetve mellekeltem a programoskat is, ha valaki esetleg igazi EP-n le tudja futtatni, hogy mit hoz ki ...

Koszi szepen!
Title: Re: DAVE
Post by: IstvanV on 2016.March.02. 11:48:56
Valaki esetleg Dave ugyben tudna valaszolni a kovetkezore? Mi tortenik, ha az ember irja a tone generator-ok counter-jeit. Az azonnal betoltodik, amirol vissza kezd szamolni ugye, vagy az elozo megy tovabb, es csak akkor tolti be az ujat, ha alulcsordul a szamlalo?

Az ep128emu-ban csak akkor töltődik be, amikor alulcsordul a számláló. Egyébként a frekvencia regiszterek folyamatos írásakor nem tudna futni a számláló, ezt valódi gépen egyszerűen lehetne tesztelni. De a "sync" bit beállítása és törlése mindig újratölti a számlálót, és a négyszögjel generátor kimenetét (a hangot, nem a B4h porton olvasható értéket) 0-ra állítja.
Title: Re: DAVE
Post by: lgb on 2016.March.02. 12:09:39
Koszi a valaszt. Haaat, csak akkor azt tudnam, mi okozza a screenshot-okon is demozott kulonbseget ... Mondjuk egy dolog meg, hogy nalam kulon fut minden szamlalo, az 1KHz-es is, akkor is, ha nincs hasznalva mint TG interrupt source stb. Es attol fuggoen, hogy mi van kivalasztva forrasnak a "TG interrupthoz" nezem az amugy "maguktol" is futo szamlalokat. Lehet, ebben elter az ep128emu-tol es esetleg egy valodi gep viselkedesetol is?
Title: Re: DAVE
Post by: Zozosoft on 2016.March.02. 12:21:11
Megnézem valódi gépen. Turbós érték is kérdés?
191-es port számít, vagy azt állítja magának a program?
Title: Re: DAVE
Post by: IstvanV on 2016.March.02. 12:22:36
Koszi a valaszt. Haaat, csak akkor azt tudnam, mi okozza a screenshot-okon is demozott kulonbseget ... Mondjuk egy dolog meg, hogy nalam kulon fut minden szamlalo, az 1KHz-es is, akkor is, ha nincs hasznalva mint TG interrupt source stb.

Az ep128emu-ban is mindig futnak, mivel az állapotuk mindig olvasható a B4h porton.
Title: Re: DAVE
Post by: lgb on 2016.March.02. 12:43:32
Megnézem valódi gépen. Turbós érték is kérdés?
191-es port számít, vagy azt állítja magának a program?

Turbos ertek nem igazan, alap 4MHz, bar ha mar megnezed, jo lenne, akkor majd azt is osszehasonlitom kesobb :)

191-es port erteke nem szamit, allitja a program, amikor a Dave 8/12MHz osztot allitja, azzal egyutt beallitja az egesz portot.
Title: Re: DAVE
Post by: lgb on 2016.March.02. 12:52:42
Az ep128emu-ban is mindig futnak, mivel az állapotuk mindig olvasható a B4h porton.

Valoban, de en ugy ertettem, hogy a TG interrupt forrasa kapcsolhato, 50Hz / 1Khz / tg0 freq / tg1 freq kozott. A B4 porton nyilvan csak a kivalasztott forras allapota olvashato, Xep128-ban viszont akkor is fut folyamatosan az 50Hz / 1Khz counter is, ha a TG interrupt forrasa pl a tg0 oszc., es nem az 50Hz vagy 1Khz counter. Ha atallitom a forrasat a TG interrupt-nak, akkor csak annyi tortenik hogy melyik szamlalot nezze, de annak erteke pl nem reset-elodik, mert mindegyik fut amugy is. Azert irom csak ezt le, mert tovabbra sem vilagos, mi okozza a kulonbseget az ep128emu es a Xep128 kozott amit a screenshot-okkal demonstraltam.

Amugy a tesztprogramom igy mukodik: interrupt letiltva, megvarja amig 0xB4 porton az adott szint (nem a latch) erteket valt, utana indul a varakozas es szamlalo noveles, amig megint erteket nem valt a kivalasztott bit. Plusz ehhez van meg, hogy a kulonbozo TG interrupt forrasok elott beallitja, hogy mi legyen a TG interrupt rate forrasa az 50hz / 1khz / tg0 /tg1 kozul.
Title: Re: DAVE
Post by: IstvanV on 2016.March.02. 13:14:34
Valoban, de en ugy ertettem, hogy a TG interrupt forrasa kapcsolhato, 50Hz / 1Khz / tg0 freq / tg1 freq kozott. A B4 porton nyilvan csak a kivalasztott forras allapota olvashato, Xep128-ban viszont akkor is fut folyamatosan az 50Hz / 1Khz counter is, ha a TG interrupt forrasa pl a tg0 oszc., es nem az 50Hz vagy 1Khz counter.

Mindegyik fut mindig (TG csak akkor, ha nincs sync bit):
Code: C++
  1.     // update polynomial counters
  2.     if (--polycnt4_phase < 0)                   // 4-bit
  3.       polycnt4_phase = 14;
  4.     if (--polycnt5_phase < 0)                   // 5-bit
  5.       polycnt5_phase = 30;
  6.     if (!noise_polycnt_is_7bit) {
  7.       // channel 3 uses the variable length polynomial counter
  8.       if (--polycnt7_phase < 0)                 // 7-bit
  9.         polycnt7_phase = 126;
  10.       // channel 3 polynomial counter: updated on negative edge
  11.       if (*chn3_clk_source < chn3_clk_source_prv) {
  12.         if (--polycntVL_phase < 0)              // variable length
  13.           polycntVL_phase = polycntVL_maxphase;
  14.       }
  15.       chn3_clk_source_prv = *chn3_clk_source;
  16.     }
  17.     else {
  18.       // channel 3 uses the 7-bit polynomial counter
  19.       if (*chn3_clk_source < chn3_clk_source_prv) {
  20.         // update on negative edge
  21.         if (--polycnt7_phase < 0)               // 7-bit
  22.           polycnt7_phase = 126;
  23.       }
  24.       chn3_clk_source_prv = *chn3_clk_source;
  25.       if (--polycntVL_phase < 0)                // variable length
  26.         polycntVL_phase = polycntVL_maxphase;
  27.     }
  28.     // read polynomial counter tables
  29.     polycnt4_state = (int) t.polycnt4_table[polycnt4_phase];
  30.     polycnt5_state = (int) t.polycnt5_table[polycnt5_phase];
  31.     polycnt7_state = (int) t.polycnt7_table[polycnt7_phase];
  32.     polycntVL_state = (int) polycntVL_table[polycntVL_phase];
  33.  
  34.     // update the phase of all oscillators
  35.     clk_62500_phase--;
  36.     clk_1000_phase--;
  37.     clk_50_phase--;
  38.     clk_1_phase--;
  39.     chn0_phase -= chn0_run;
  40.     chn1_phase -= chn1_run;
  41.     chn2_phase -= chn2_run;
  42.  
  43.     // trigger interrupts if enabled
  44.     if ((*int_snd_phase) < 0) {
  45.       // will reload counter later
  46.       int_snd_state = (int_snd_state & 1) ^ 1;          // invert state
  47.       if (enable_int_snd)
  48.         triggerIntSnd();
  49.     }
  50.     if (clk_1_phase < 0) {
  51.       clk_1_phase = clk_1_frq;                          // reload counter
  52.       int_1hz_state = (int_1hz_state & 1) ^ 1;          // invert state
  53.       if (enable_int_1hz)
  54.         triggerInt1Hz();
  55.     }
  56.  
  57.     // reload phase counters if necessary
  58.     if (clk_1000_phase < 0)
  59.       clk_1000_phase = clk_1000_frq;
  60.     if (clk_50_phase < 0)
  61.       clk_50_phase = clk_50_frq;
  62.  
  63.     // calculate oscillator outputs
  64.     if (clk_62500_phase < 0) {
  65.       // simple 31250 Hz oscillator
  66.       clk_62500_phase = clk_62500_frq;                  // reload counter
  67.       clk_62500_state = (clk_62500_state & 1) ^ 1;      // invert state
  68.     }
Title: Re: DAVE
Post by: Zozosoft on 2016.March.02. 13:44:20
Találtam egy EP konfignyi cuccot itt bent a munkahelyen :-)

4MHz-es valódi gépen az ep128emu értékeivel egyezik meg.
Turbóval az utolsó sor változik, 50/51 6MHz-en, 7EC 7.12-n.
Title: Re: DAVE
Post by: lgb on 2016.March.02. 13:46:49
Na, nalam kb igy nez ki. Mondjuk ez egy atmeneti kod, a "ticks" pl tok felesleges, mert mindig 1 az erteke, csak kozben JSep emulatorombol is atvettem dolgokat, es azt reszelgetem, hogy ne kelljen nullarol megirni :) Azaz pl

Code: C
  1.         /* 50Hz counter */
  2.         _cnt_50hz -= ticks;
  3.         if (_cnt_50hz < 0) {
  4.  

irhato lenne sokkal tisztabban kb igy (es majd irva is lesz ...):

Code: C
  1.         /* 50Hz counter */
  2.         if (--_cnt_50hz < 0) {
  3.  

No, de szoval egy reszlet (ez a verzio nincs fenn meg github-on, azert irom igy ... ha majd mukodni is fog normalisan akkor lesz), ebben nincs benne minden, csak peldanak:

Code: C
  1.         /* 50Hz counter */
  2.         _cnt_50hz -= ticks;
  3.         if (_cnt_50hz < 0) {
  4.                 _cnt_50hz = 5000 - 1;
  5.                 if ((ports[0xA7] & 96) == 32)
  6.                         dave_int_tg();
  7.         }
  8.         /* 1KHz counter */
  9.         _cnt_1khz -= ticks;
  10.         if (_cnt_1khz < 0) {
  11.                 _cnt_1khz = 250 - 1;
  12.                 if ((ports[0xA7] & 96) ==  0)
  13.                         dave_int_tg();
  14.         }
  15.         /* counter for tone channel #0 */
  16.         if (ports[0xA7] & 1) { // sync mode?
  17.                 _cnt_tg0 = ports[0xA0] | ((ports[0xA1] & 15) << 8);
  18.                 _state_tg0 = 0;
  19.         } else {
  20.                 _cnt_tg0 -= ticks;
  21.                 if (_cnt_tg0 < 0) {
  22.                         _cnt_tg0 = ports[0xA0] | ((ports[0xA1] & 15) << 8);
  23.                         _state_tg0 ^= 1;
  24.                         if ((ports[0xA7] & 96) == 64)
  25.                                 dave_int_tg();
  26.                 }
  27.         }
  28.         // ... stb stb stb .... kihagyok par dolgot ....
  29.         _cnt_1hz -= 1;
  30.         if (_cnt_1hz < 0) {
  31.                 _cnt_1hz = 250000 - 1;
  32.                 if (dave_int_write & 4)
  33.                         dave_int_read |= 8; // set latch, if 1Hz int source is enabled
  34.                 dave_int_read ^= 4; // negate 1Hz interrupt level bit (actually the freq is 0.5Hz, but int is generated on each edge, thus 1Hz)
  35.         }
  36.  

A kerdeses dave_int_tg() meg nyilvan nem tul bonyolult entitas:

Code: C
  1. static inline void dave_int_tg ( void )
  2. {
  3.         if (dave_int_write & 1)
  4.                 dave_int_read |= 2;     // set latch if TG int is enabled
  5.         dave_int_read ^= 1;             // negate level
  6. }
  7.  

Es vegul a hirtelen osszedobalt, igen amator teszt program forrasa:

https://github.com/lgblgblgb/xep128/blob/master/doc/intfreq.asm
Title: Re: DAVE
Post by: endi on 2016.March.02. 14:19:31
mi az a sync bit? sose értettem...
Title: Re: DAVE
Post by: lgb on 2016.March.02. 14:24:37
mi az a sync bit? sose értettem...

Sync, mint szinkronizalas :) Amire en gondolok, hogy mire jo: pl egyszerre akarod, hogy menjen a hang mondjuk ket csatornan. Ha egymas utan felprogamozod, nem pont egyszerre indul, mert nem nulla CPU ido, amig beirogatod sorba a regiszterekbe. De mivel a sync bitek egy porton vannak, azzal "tartod" hogy ne induljon el a counter, felprogramozod a megfelelo erteket, majd egyszerre inditod a sync bitek torlesevel, es igy tuti szinkronban futnak. Gondolom en, hogy erre jo :-)
Title: Re: DAVE
Post by: endi on 2016.March.02. 14:32:49
Sync, mint szinkronizalas :) Amire en gondolok, hogy mire jo: pl egyszerre akarod, hogy menjen a hang mondjuk ket csatornan. Ha egymas utan felprogamozod, nem pont egyszerre indul, mert nem nulla CPU ido, amig beirogatod sorba a regiszterekbe. De mivel a sync bitek egy porton vannak, azzal "tartod" hogy ne induljon el a counter, felprogramozod a megfelelo erteket, majd egyszerre inditod a sync bitek torlesevel, es igy tuti szinkronban futnak. Gondolom en, hogy erre jo :-)

én is így tudtam, de ennek kb nulla értelme van, azért gondoltam hogy nem értem :D
(basic-ben van értelme ilyesminek, lásd a sync parancs a sound-ban, asm-ban semmi...)
Title: Re: DAVE
Post by: IstvanV on 2016.March.02. 14:39:20
én is így tudtam, de ennek kb nulla értelme van, azért gondoltam hogy nem értem :D
(basic-ben van értelme ilyesminek, lásd a sync parancs a sound-ban, asm-ban semmi...)

Ha nem hang, hanem időzítés a célja, akkor van értelme, mert a sync bit törlése után pontosan a beállított időtartam után történik megszakítás.

Megfelelően időzítve hangnál is van értelme, ilyen effektust valódi analóg szintetizátorokban is használnak, illetve ha jól emlékszem, a SID is tudja, csak a DAVE esetében nem lehet automatikusan másik csatornával időzíteni, hanem szoftveresen kell újraindítani szabályos időközönként.
Title: Re: DAVE
Post by: endi on 2016.March.02. 14:45:22
Ha nem hang, hanem időzítés a célja, akkor van értelme, mert a sync bit törlése után pontosan a beállított időtartam után történik megszakítás.

Megfelelően időzítve hangnál is van értelme, ilyen effektust valódi analóg szintetizátorokban is használnak, illetve ha jól emlékszem, a SID is tudja, csak a DAVE esetében nem lehet automatikusan másik csatornával időzíteni, hanem szoftveresen kell újraindítani szabályos időközönként.

akkor van értelme ha a hullámformát szinkronizálja. vajon ez megtörténik?
mert pl basic sync-nél nem, ezért van az hogy két ugyanolyan hang random erősíti vagy gyengíti egymást, ami tök jó effekt lenne ha lehetne kontrollálni
Title: Re: DAVE
Post by: IstvanV on 2016.March.02. 14:52:43
Egyszerű sync példa:

[attachurl=1]
Title: Re: DAVE
Post by: endi on 2016.March.02. 14:55:18
Egyszerű sync példa:

(Attachment Link)

huh ez nem semmi. na pont erre gondoltam! és ezt én sose használtam hang meg zene kódolásban! tök jó
Title: Re: DAVE
Post by: IstvanV on 2016.March.02. 15:05:19
Egy másik lehetséges használata a csatornák fázisának a szinkronizálása. Ezzel és a felüláteresztő szűrő effektussal például megoldható a négyszögjel kitöltési tényezőjének a csökkentése.
Title: Re: DAVE
Post by: endi on 2016.March.02. 15:23:10
Egy másik lehetséges használata a csatornák fázisának a szinkronizálása. Ezzel és a felüláteresztő szűrő effektussal például megoldható a négyszögjel kitöltési tényezőjének a csökkentése.

na ez az! és épp ez az ami nekem tökre kimaradt, illetve valszeg próbálkoztam vele, de mivel nem értettem a működését, nem tudtam értelmes eredményt kihozni belőle...
és hát ügye ez az egész hiányzik az összes zeneszerkesztőből is, meg a játék vagy demó zenékből is...

ha basic-ben elérhető lett volna, akkor lehet hogy többen felfedezik és használják...
Title: Re: DAVE
Post by: endi on 2016.March.02. 15:25:39
viszont szomorúan jelenthetem ki, hogy valszeg ez volt az utolsó sötét folt az ep tudásával kapcsolatban... :) :(
Title: Re: DAVE
Post by: lgb on 2016.March.02. 15:39:56
Találtam egy EP konfignyi cuccot itt bent a munkahelyen :-)

:)

Quote
4MHz-es valódi gépen az ep128emu értékeivel egyezik meg.

Miert nem lepodok meg, eleg pontos emulator az :) :) Majd jol kikapok IstvanV-tol hogy nem bizok benne, hogy jol csinalta :) Amugy egesz pontosan egyezett?

Quote
Turbóval az utolsó sor változik, 50/51 6MHz-en, 7EC 7.12-n.

Es a tobbi nem? Pedig elvileg tobb utasitas "fer el" ugyanannyi ido alatt, amit gondolom eppen ezert a kulso interrupt forras (VINT a Nick-tol) le is "fulelt". A Dave belso dolgai akkor azert nem valtoztak, mert a Dave orajelet is emli a turbo? En kicsit itt elvesztem, mert ugye elvileg van az 8/12Mhz oszto allitas, pont azert mert az EP tervezoi mar gondolhattak a 6MHz-es turbora? Akkor viszont nem teljesen vilagos, mert turoboval a teszt program nem ugyanazt irna ki, hiszen allitom a 8/12Mhz bitet is. Vagy bocs, ha hulyseget mondok, ez a turbositas meg mindig feher folt nekem, hogy most minek az orajelet emeljuk konkretan a CPU-n kivul persze, es o honnan kapja, es mas kap-e tobbet :)
Title: Re: DAVE
Post by: Zozosoft on 2016.March.02. 15:56:22
Amugy egesz pontosan egyezett?
Igen, ill. itt-ott van 1-1 értéknyi szórás, de az minden programfuttatáskor változik.

Quote
most minek az orajelet emeljuk konkretan a CPU-n kivul persze, es o honnan kapja, es mas kap-e tobbet :)
A rendszerórajel van emelve, azon fut a Dave. Így magasabbak lesznek a hangok is, meg a mindenféle Hz-ben számolt dolga is sietni fog.
Azzal a bizonyos 8/12MHz beállító bittel lehet mindezt helyrehozni 6MHz-es gép (12MHz rendszer órajel) esetén. Efelett sietni fog, itt azt lehet ha a program számolja át a használt frekvenciákat megfelelőre (mondjuk egy táblázattal).
Ebből adódóan a Z80/Dave arány az állandó, csak azzal a bizonyos bittel lehet változtatni rajta.
Title: Re: DAVE
Post by: lgb on 2016.March.02. 17:39:27
Igen, ill. itt-ott van 1-1 értéknyi szórás, de az minden programfuttatáskor változik.

Az mondjuk nem csoda. Azert van, mert ugye attol fugg mikor valt pontosan szintet az adott int source "level" erteke a B4 portot olvasgatva. Elvileg pont az emlitett sync bittel a TG source-ok eseten lehetne ezt "stabilizalni" persze, csak akkor lehet pont az veszne el ami most gondolkodba ejtett: hogy mi a kulonbseg most a Xep128 es az ep128emu+igazi EP kozott, ami nyilvan valahol az en hibam, csak meg azt nem tudom pontosan, hogy hol :) Koszi a tesztet!
Title: Re: DAVE
Post by: IstvanV on 2016.March.02. 18:43:34
mi a kulonbseg most a Xep128 es az ep128emu+igazi EP kozott, ami nyilvan valahol az en hibam, csak meg azt nem tudom pontosan, hogy hol :)

Az előbbi forráskód részletekben nem látni a hibát, talán máshol van. A teszt programban érdekesség, hogy a frekvencia értékek (7D00h és FA00h) nem ábrázolhatók 12 biten, de ennek elvileg nem kellene problémát okoznia, mert a TG megszakításra az effektusoknak nincs hatása, ezért a felső 4 bit itt figyelmen kívül hagyható. Egy másik kisebb "hiba" a programban az, hogy a VINT bemenet nem 50% kitöltési tényezőjű négyszögjel, ezért "véletlenszerűen" méri a VINT magas (rövid) vagy alacsony (hosszú) állapotát.
Title: Re: DAVE
Post by: lgb on 2016.March.02. 21:07:21
Az előbbi forráskód részletekben nem látni a hibát, talán máshol van. A teszt programban érdekesség, hogy a frekvencia értékek (7D00h és FA00h) nem ábrázolhatók 12 biten, de ennek elvileg nem kellene problémát okoznia, mert a TG megszakításra az effektusoknak nincs hatása, ezért a felső 4 bit itt figyelmen kívül hagyható.

Ez tenyleg igaz, latod erre nem is figyeltem :) De ahogy mondod is, elvileg hibat nem okoz, ugyan pl ep128emu-n (Xep128-ban azert nem, mert nincs implementalva hehe) a counter-ek felso byte-janak felso 4 bitje ugyan allit egy-ket dolgot, de nem kene, hogy az barmi problemat okozzon - mivel a tobbi hangkepzessel kapcsolatos bit, a TG interrupt TG0 meg TG1 forras eseten meg ugye is  - ha jol tudom - csak az oszcillator alapfrekvenciajat nezi. Azert atirtam ertelmesebb counter ertekekre most!

Quote
Egy másik kisebb "hiba" a programban az, hogy a VINT bemenet nem 50% kitöltési tényezőjű négyszögjel, ezért "véletlenszerűen" méri a VINT magas (rövid) vagy alacsony (hosszú) állapotát.

Igen, ezt tudom :) A VINT-et (INT1) csak otletszeruen tettem hozza, tisztaban vagyok vele, hogy igy van valoszinusege, hogy esetleg a rovidebb, de rendszerint a hosszabbat meri. :) De alapvetoen a teszt program nem erre keszult, azt csak ugy "poenbol" rakta hozzam, tul sok ertelme igy tenyleg nincs :)

Amugy most tanacstalan vagyok. Kicsit atstrukturaltam a test programot, elvileg pontosan ugyanazt csinalja mint eddig, csak kevesbe ronda a kod. Es most latszolag jol mukodik megis a Xep128-al is, kb +/- 1 teszt pont elteressel ugyanazt irja mint az ep128emu. Jajj, de utalom az olyan bug-okat, ami csak eltunik "magatol" es nem jovok ra, mi volt a hiba ...

Na mind1. Commitoltam az ujrabb test program forrast:

https://github.com/lgblgblgb/xep128/blob/master/doc/intfreq.asm

Ha mar szoba kerult a VINT probaltam nemi ganyolas aran (egyszerubb lenne a tesztben nem change-et nezni hanem fixen fel v le futo elt, de lusta voltam, meg ugye 1Hz interrupt miatt meg tovabb kene varni akkor) meri mindket "felet" a negyszognek. Igy igen erdekes, hogy ket a szam-"csoport" pont meg van cserelve Xep128 es ep128emu kozott, azaz lehet hibasan hasznalom a level szintet a VINT-nel :-P Legalabb meg valami kiderult, hmmm. Alakul ...

Bocsanat a tema flood-olasaert, nem Dave specifikus dolgokat mar nem ide fogom loni persze.

Koszonom IstvanV es Zozo segitseget!!
Title: Re: DAVE
Post by: endi on 2016.March.02. 21:15:58
most már csak a sync és a megszakítás kapcsolatát nem értem. valami ilyesmi van, ha jól olvasom. vagy félreértem?
Title: Re: DAVE
Post by: lgb on 2016.March.02. 21:45:00
most már csak a sync és a megszakítás kapcsolatát nem értem. valami ilyesmi van, ha jól olvasom. vagy félreértem?

Ismet csak, ha jol ertem: ugye a "50hz/1khz/tg" interrupt kapcsolahato egy 50hz, 1khz, vagy tg0 es tg1 oszc. szamlaloja kozott. Tehat csak tg0 es tg1-nel van jelentosege. Interrupt akkor van, ha a szamlalo altal produkalt negyszogjelnek "edge" (e'l) van, az mindegy h raising vagy falling, mivel a sync bit az adott tg csatornat fixen egy szinten tartja es a szamlalo sem megy, igy addig nem keletkezik interrupt ha a forras egy tg csatorna, aminel a sync be van kapcsolva. Igy gondolom pontosan idozitheto, hogy mikor kezdjen el szamolni, van amikor ez fontos lehet. Bar magam hirtelen nem tudok peldat, de valahol biztos, IstvanV tuti demozik is vmit azonnal, ahogy ismerem a kepessegeit :) Vagy pedig kijavit engem.
Title: Re: DAVE
Post by: endi on 2016.March.03. 19:47:10
Egyszerű sync példa:

(Attachment Link)

ebből amúgy nem tudnál valami egyszerű zongora programot csinálni? csak hogy jobban hallhassuk mit lehetett volna kihozni ebből zene esetén.
nagy a kísértés már megint, hogy elkezdjek asm-ozni, de ellenállok :P
Title: Re: DAVE
Post by: endi on 2016.March.10. 13:27:11
amúgy az lenne jó ha meg lehetne adni, hogy a különböző megszakítás típusok más-más címre ugorjanak. szerintem ezzel sok gyorsulást el lehetne érni. nem kéne külön levizsgálni mindig hogy milyen megszak. történt. rövid kis rutinoknál (pl digi hang) sokat számítana. de gondolom ilyet nem tud a hw
Title: Re: DAVE
Post by: lgb on 2016.March.10. 14:07:52
amúgy az lenne jó ha meg lehetne adni, hogy a különböző megszakítás típusok más-más címre ugorjanak. szerintem ezzel sok gyorsulást el lehetne érni. nem kéne külön levizsgálni mindig hogy milyen megszak. történt. rövid kis rutinoknál (pl digi hang) sokat számítana. de gondolom ilyet nem tud a hw

Azt mondjuk az IM2 modban lehetne Z80-al, de ugye akkor a hw-nek is olyannak kene lennie EP-ben .. (esetleg IM0 is, ha vmi pl RST opcode-ot kuldene a Dave). De ugye IM1 modra van tervezve, azaz semmi adatot nem kuld a Dave azon kivul hogy interrupt request, igy viszont nem lehet mi alapjan szelektalni ...
Title: Re: DAVE
Post by: IstvanV on 2016.September.24. 19:36:50
Találtam egy (valószínűleg) ep128emu hibát: a zajcsatornán a felüláteresztő szűrőnek csak akkor van jelentősebb hatása, ha az aluláteresztő szűrő is engedélyezett, egyébként a kimenet minden ciklusban újratöltődik. Ez egyszerűen tesztelhető a régi davetest programmal. A GitHub-on már van javítás, de érdemes lenne összehasonlítani a valódi géppel.
Title: Re: DAVE
Post by: IstvanV on 2016.September.25. 12:28:37
Teszt program:
[attachurl=1]
Title: Re: DAVE
Post by: endi on 2016.September.25. 15:33:30
Teszt program:
(Attachment Link)

valaki ki tudna menteni egy wavot olyan emuval ahol ez jó? vagy igazi gépről
Title: Re: DAVE
Post by: szipucsu on 2016.September.25. 19:29:48
Találtam egy (valószínűleg) ep128emu hibát: a zajcsatornán a felüláteresztő szűrőnek csak akkor van jelentősebb hatása, ha az aluláteresztő szűrő is engedélyezett.
Ezt egyszerűen basic-ből hogyan lehet tesztelni? A tippem, hogy SOUND SOURCE 3,STYLE 64 kell hozzá, és SOUND SOURCE 0 egyszerre megszólaltatva. Merthogy a zajcsatorna felüláteresztő szűrőnek a 0-ás csatornát használja.
Azt hogy kell érteni, hogy "ha az aluláteresztő szűrő is engedélyezett"? A 0-ás csatornán a STYLE 64+32 kellene, és csak úgy működik rendesen?
(A teszt programot nem tudom technikai okok miatt igazi EP-be betölteni.)
Title: Re: DAVE
Post by: IstvanV on 2016.September.25. 20:13:24
valaki ki tudna menteni egy wavot olyan emuval ahol ez jó? vagy igazi gépről

Ez a verzió (https://github.com/istvan-v/ep128emu/releases/tag/2.0.10-beta_20160925) már tartalmazza a javítást. Igazi géppel még nem hasonlítottam össze.

Azt hogy kell érteni, hogy "ha az aluláteresztő szűrő is engedélyezett"? A 0-ás csatornán a STYLE 64+32 kellene, és csak úgy működik rendesen?

Igen, legalábbis a korábbi emulátor verziókon.
Title: Re: DAVE
Post by: endi on 2017.November.02. 13:43:28
emlékszem, mindig is utáltam azt hogy ha hang és kép megszakítás van, akkor szoftverből kellett a megszakítás rutinban megállapítani hogy melyik is volt. ez egy-két tök felesleges utasítás volt.
miért nem tudták azt megcsinálni hogy a hang és kép megszakítás más-más címre ugrik?
Title: Re: DAVE
Post by: ergoGnomik on 2017.November.02. 13:56:12
miért nem tudták azt megcsinálni hogy a hang és kép megszakítás más-más címre ugrik?
Mert akkor IM 0 vagy IM 2 kompatibilisre kellett volna konstruálniuk a NICK-et és a DAVE-et, meg természetesen az EXOS-t. Ez költség és idő, amivel pont nem igazán volt túl bőven eleresztve a projekt.
Title: Re: DAVE
Post by: IstvanV on 2017.November.02. 13:57:11
emlékszem, mindig is utáltam azt hogy ha hang és kép megszakítás van, akkor szoftverből kellett a megszakítás rutinban megállapítani hogy melyik is volt. ez egy-két tök felesleges utasítás volt.
miért nem tudták azt megcsinálni hogy a hang és kép megszakítás más-más címre ugrik?

Megoldható lett volna például hogy IM 0 módban az egyes megszakítás típusok különböző RST utasítást hajtsanak végre (akár programozható prioritással és automatikus törléssel), de akkor bonyolultabb lett volna a hardver. :) Amin lehetett, azon pedig általában spóroltak, ezért is csak írható a regiszterek nagy többsége, vagy nincsenek külön I/O portok a paletta felső 8 színéhez. A pár extra utasítás azonban elsősorban digitális hang lejátszásnál probléma, ami talán nem volt nagyon elterjedt a gép tervezésekor (most nyilván sokkal könnyebb digitalizálni), és az EP a 8 bites gépek között így is jónak számít ezen a téren.
Title: Re: DAVE
Post by: endi on 2017.November.02. 14:31:16
na ja de akkor minek raktak bele D/A-t, és minek raktak bele hangmegszakítást...
mert megadható frekis hangmegszakítás mégiscsak főleg digi hang lejátszásához való.
Title: Re: DAVE
Post by: IstvanV on 2017.November.02. 14:47:27
na ja de akkor minek raktak bele D/A-t, és minek raktak bele hangmegszakítást...

Mert így olcsón meg lehetett oldani, és így is használható (egyszerűbb és gyorsabb is mint a Spectrum 128 és különösen a CPC hang programozása), de nem tervezték bonyolultabbra a megszakítás kezelést csak azért, hogy a D/A néhány utasítással gyorsuljon.
Title: Re: DAVE
Post by: lgb on 2017.November.02. 14:49:04
na ja de akkor minek raktak bele D/A-t, és minek raktak bele hangmegszakítást...
mert megadható frekis hangmegszakítás mégiscsak főleg digi hang lejátszásához való.

Szerintem hangmegszakitas nem arra "valo". Marmint, a Dave-ban van egy rakas counter. Ami logikus modon jo hand eloallitasra is, de periodikus interrupt generalasra is. Nem kotekezo a kettot egybe kapcsolni, csak logikus volt ott implementalni ilyet ahol amugy is van programozhato counter. Pl Commodore LCD-ben sima VIA 6522 serial shift registert lehet hangra is hasznalni, holott nem arra terveztek a VIA-t ugye, de nyilvan ott ugy van alkalmazva stb. Az, hogy D/A-t miert raktak bele: ebben a felepitesben minimalis tobblet munka volt, hisz a hangeroszabalyzassal rokon funkcio, ahogy C64-en is lehet vegulis digit lejatszani ha a hangerot allitgatod csak jo gyorsan, ez is egy C64 digi lejatszasi modszer. Csak ott ez kevesbe szep trukkok nelkul, mivel csak 16 hangero fokozat van, meg egyeb dolgok is kozrejatszanak, de most az elvet mondom csak kb ... Viszont ha barmi extrat kell implementalni ami nem "ingyen" adodik amugy is, vagy max par plusz kapu beledoblasaval a chip-be kvazi, akkor annak mar komolyabb koltsegi tenyezoje lehet, es ugye foleg "home computer" cimszo alatt mindenki sporolni akar(t) ...
Title: Re: DAVE
Post by: endi on 2017.November.02. 16:20:04
de mire másra jó akkor ha nem digi hangra? :)
Title: Re: DAVE
Post by: IstvanV on 2017.November.02. 16:29:53
de mire másra jó akkor ha nem digi hangra? :)

A magnókezelő például használja időzítésre, ha jól tudom.
Title: Re: DAVE
Post by: ergoGnomik on 2017.November.02. 16:56:53
na ja de akkor minek raktak bele D/A-t, és minek raktak bele hangmegszakítást...
mert megadható frekis hangmegszakítás mégiscsak főleg digi hang lejátszásához való.
Nem az az igazán érdekes kérdés, hogy miért raktak bele D/A-t, hanem hogy miért csak egy csatornára? Egyébként pont ez a D/A felelős a hangerő szabályzásért, valószínűleg csak igen minimális kiegészítésre volt szükség, hogy egy üzemmódban a kimenetet fix "1" szintre kényszerítsék.

Megadható frekvenciájú megszakítás jól jöhet lassú perifériák (pl.: modem) periodikus státusz és adat kiolvasására is. A EP látszólag nem igazán van felkészítve DMA-s üzemre.
Title: Re: DAVE
Post by: lgb on 2017.November.02. 17:13:10
de mire másra jó akkor ha nem digi hangra? :)

Barmire. Altalanos megszakitas a Z80 interrupt bemente fele, akarmire hasznalhatod, voltakeppen semmi koze a hanghoz, max annyi hogy ugyanazon counter-ek (is!!! nem csak, van pl 1Hz-es is fixen stb) hasznalhatok hang generalasra es interrupt generalasra is, de koze nincs a hanghoz amugy. Vagy mire gondolsz, miert lenne csak hangra jo? :-O Vagy te nem a hardware szintu megszakitasra gondolsz, amit Dave allit elo?
Title: Re: DAVE
Post by: endi on 2017.November.02. 17:56:24
ja, gondolom én hogy lehet másra is használni, de főleg hang lejátszásra érdemes :)
szinkronizálás meg ilyesmik, ugyan már, kit érdekel az? :) látható az? hallható? nem :)
Title: Re: DAVE
Post by: szipucsu on 2017.November.02. 18:18:25
szinkronizálás meg ilyesmik, ugyan már, kit érdekel az? :) látható az? hallható? nem :)
A filmet is szinkronizálják, pedig anélkül is hallható volt.
Title: Re: DAVE
Post by: endi on 2018.January.21. 19:48:14
vajon miért nem lehet a négyszögjelünk fázisát állítani? hardverileg bonyolult lett volna ezt megcsinálni?
Title: Re: DAVE
Post by: ergoGnomik on 2018.January.21. 20:23:21
vajon miért nem lehet a négyszögjelünk fázisát állítani? hardverileg bonyolult lett volna ezt megcsinálni?
Ha eszükbe is jutott, nem volt rá idő vagy pénz. Egyébként valószínűleg igen.
Title: Re: DAVE
Post by: szipucsu on 2018.January.22. 12:46:32
nem volt rá idő vagy pénz.
Némi "fáziskéséssel" jelent volna meg az EP.
Title: Re: DAVE
Post by: endi on 2018.January.22. 13:48:56
a dave névről valamiért mindig azt hittem hogy éneklést vagy ilyesmit jelent, vagy abból származik a szó. persze biztos azért mert ep-n ez a hang csip :D
aztán most utána néztem a dávid névből került az angolba
Title: Re: DAVE
Post by: Zozosoft on 2018.January.22. 14:54:29
a dave névről valamiért mindig azt hittem hogy éneklést vagy ilyesmit jelent, vagy abból származik a szó. persze biztos azért mert ep-n ez a hang csip :D
aztán most utána néztem a dávid névből került az angolba
Ezt komolyan csak most nézted meg? :shock:
A készítője Dave Woodfield, innen a név. (Ahogy a Nick pedig a Nick Troop-ból jön)
Title: Re: DAVE
Post by: endi on 2018.January.22. 15:01:56
Ezt komolyan csak most nézted meg? :shock:
A készítője Dave Woodfield, innen a név. (Ahogy a Nick pedig a Nick Troop-ból jön)

az tudom! csak azt hittem hogy maga a név jelentéssel bír, és valamiért hogy énekléssel kapcsolatos :)
Title: Re: DAVE
Post by: BruceTanner on 2018.January.22. 15:21:11
(https://static.nosher.net/archives/computers/images/extras/DAVE_WOODFIELD_THUMPER_pracomp_1982-05.jpg)
Title: Re: DAVE
Post by: gflorez on 2018.January.22. 15:44:34
A mai hipsters megirigyelné hogy bajusz....

---

Today hipsters would envy that moustache....
Title: Re: DAVE
Post by: szipucsu on 2018.January.22. 15:58:45
a dave névről valamiért mindig azt hittem hogy éneklést vagy ilyesmit jelent
Én úgy tudtam megjegyezni, hogy a Dave a hangchip, a Nick pedig a video chip, hogy a Dave szóban hosszabban kell ejteni a magánhangzót (pontosabban az kettőshangzó, de ez most itt mindegy), melyet az "a" betű jelöl, a Nick szóban pedig az "i" röviden ejtendő. Ezért a Dave szó "zenésebb".

Dave-ről nem tudni semmit? Nincs róla valami nyom az Interneten, mivel foglalkozhat most, el lehet-e érni, stb.?
Title: Re: DAVE
Post by: BruceTanner on 2018.January.22. 19:45:02
I know nothing of Dave these days, I have not seen him in over 30 years and probably would not recognise him. He worked from his own office at home so I did not see him very often anyway. At the time her was designing the Dave chip he was also involved with the "micromouse" competitions, in which a mechanical/computerised "mouse" had to find its way into the middle of a maze (he generally won!). That is what he is holding in the photo. I don't think he kept it up - there are still similar competitions but I have not seen his name in connection with any of them.
Title: Re: DAVE
Post by: Tomato77 on 2018.January.23. 00:01:22
It is an interesting story about Dave's mouse. I was thinking about you were at age 20 when the Enterprise 128 was released. I was a student at the same age and I had to wait for age 40 when I could understand how the LPT works. :) All of you in the EP team were genious and you all created an amazing computer.
Title: Re: DAVE
Post by: endi on 2018.January.24. 13:02:53
azon gondolkodtam, volt valami sync opció a dave-ben (nem a sound eszköz sync-re gondolok).
az mi is?
Title: Re: DAVE
Post by: IstvanV on 2018.January.24. 15:55:26
azon gondolkodtam, volt valami sync opció a dave-ben (nem a sound eszköz sync-re gondolok).
az mi is?

Leállítja a hanggenerátort, amíg a sync bit aktív, addig 0 a kimenet, a sync kikapcsolásakor a számláló (négyszögjel fázisa) a beállított értékről indul újra:

                         +--------------------+
SYNC                     |                    |
      -------------------+                    +----------------------------

      -------+       +---+                            +-------+       +----
 OUT         |       |   |                            |       |       |
             +-------+   +--------------------+-------+       +-------+

             +       +                                +       +       +
 IRQ         |       |                                |       |       |
      -------+-------+--------------------------------+-------+-------+----
Title: Re: DAVE
Post by: endi on 2018.January.24. 16:11:57
ööö... akkor mégis van 4szögjel fázis állítási lehetőség???
Title: Re: DAVE
Post by: ergoGnomik on 2018.January.24. 16:25:01
ööö... akkor mégis van 4szögjel fázis állítási lehetőség???
Állítási lehetőség nincs. A programod időzítésével képes vagy az egyes csatornák között fáziskülönbséget okozni. A szinkronizáló bitekkel meg garantálni lehet, hogy a programodban mindegy milyen eredő fáziskülönbséggel frissíted a csatornákat szinkronizáltan induljanak el.

Vagy nem azonos dolgot értünk fázis alatt.
Title: Re: DAVE
Post by: endi on 2018.January.24. 16:45:23
hát ezek szerint lehet! ha kicsit körülményesen is.
Title: Re: DAVE
Post by: endi on 2018.January.25. 10:14:53
Állítási lehetőség nincs. A programod időzítésével képes vagy az egyes csatornák között fáziskülönbséget okozni. A szinkronizáló bitekkel meg garantálni lehet, hogy a programodban mindegy milyen eredő fáziskülönbséggel frissíted a csatornákat szinkronizáltan induljanak el.

gondolkodtam ezen. még ha pontos időzítést nem is lehet létrehozni, de már azzal érdekes hangzást lehet elérni ha néha átállítjuk ezt, mondjuk valami hang megszakításban. ezzel használható zenei hangzást érhetünk el.
basic-ból vajon hogy tudom tesztelni? ha jól tudom ezen a porton mindenféle más dolog is van, amit ügye nem lehet kiolvasni a port olvashatatlansága miatt.
Title: Re: DAVE
Post by: IstvanV on 2018.January.25. 14:56:48
Arra lehetőség van például, hogy a program leállítsa a hanggenerátort (sync=1), beírja a kezdeti fázist a frekvencia regiszterekbe, újra engedélyezze a futást (sync=0), majd beállítsa a tényleges frekvencia értéket. Természetesen BASIC-ben az ilyen trükkök nem működnének a lassúság miatt. :)
Title: Re: DAVE
Post by: endi on 2018.January.25. 15:20:39
Arra lehetőség van például, hogy a program leállítsa a hanggenerátort (sync=1), beírja a kezdeti fázist a frekvencia regiszterekbe, újra engedélyezze a futást (sync=0), majd beállítsa a tényleges frekvencia értéket. Természetesen BASIC-ben az ilyen trükkök nem működnének a lassúság miatt. :)

ki be kapcsolgatással máris el lehetne érni valamiféle másféle hangzást. a ki-be kapcsolgatás sűrűségével lehetne paraméterezni.
midi playerbe építsétek be :)
Title: Re: DAVE
Post by: Tuby128 on 2018.May.16. 03:47:02
Martin Galway (ismert C64-es zeneszerző) azt írta, hogy az EP DAVE chip-je hangtulajdonságban nagyon hasonlít a Texas Instruments SN76489 IC-jére. Letöltöttem az adatlapot, és tényleg!
 Itt egy youtube videó, ahol valaki a midi billentyűzetét összekötötte az említett chippel.
 Ugyanúgy 3 hangcsatornát és 1 zajcsatornát tud. A videóban demonstrálja ezeket is, meg gyűrűmodulációt is csinál, amiről sosem tudtam, hogy micsoda.
 A lényeg, hogy a videó hallgatása közben, miközben az ember csavargatja a potmétert, fel-feltörnek EP játékok zenéi, zörejei, ahol a videón hallott egy-egy hangot felismerem.
https://www.youtube.com/watch?v=DJ-0nu2WOxs
Title: Re: DAVE
Post by: endi on 2018.May.16. 11:03:49
ez érdekes, de mintha jobb hangja lenne a gyűrűmodulációnak meg a végén a basszusnak.
talán több biten számol, és emiatt?
Title: Re: DAVE
Post by: ergoGnomik on 2018.May.16. 12:00:59
@tuby128: Önmagában az, hogy 3+1 csatornája van a DAVE-nek és az SN76489-nek is, még nem igazán jelenti azt, hogy nagyon hasonlít. A DAVE-nek számos további jellemzője van, ami azért jelentősen különbözővé teszi az SN-től. Ezzel az erővel mondhatnánk azt is, hogy a NES hangvezérlője is erősen hasonlít a DAVE-re, mert annak is három plusz egy csatornája van. Pedig ott is óriásiak az eltérések. Szerintem ezek mind különbözőek, csak vannak felületes hasonlóságok.

@endi: Itt van egy kis magyarázat (http://little-scale.blogspot.hu/2009/12/square-wave-based-additive-synthesis.html) a videón látottakhoz és hallottakhoz. Elég ügyes a csávó, de a hangcsip az nem.
Title: Re: DAVE
Post by: IstvanV on 2018.May.16. 12:50:49
A leírás (http://www.hp9845.net/9845_backup/downloads/datasheets/SN76489.pdf) nem említ gyűrűmodulációt, de talán valamilyen trükkel elérhető hasonló hangzású effektus.
Title: Re: DAVE
Post by: szipucsu on 2018.May.16. 13:55:56
Itt van egy kis magyarázat (http://little-scale.blogspot.hu/2009/12/square-wave-based-additive-synthesis.html) a videón látottakhoz és hallottakhoz.
Az írásba be van linkelve egy mp3 fájl (http://milkcrate.com.au/_other/sn76489.mp3), amely bemutatja, hogy mind a 3 csatorna szól egyszerre, de más hangerővel és más oktávban. Gondolom, a rezgés felharmonikusai szólnak ezekben az oktávokban, és ettől egész érdekes hangzása lesz, ahogy folyamatosan elhalkítja/felhangosítja egyik-másik csatornát. Ezzel a hatással EP-n is lehetne kísérletezni, még nem jutott eszembe. Nem tudtam egyértelműen kivenni: ebben az mp3-ban milyen hangok szólnak vajon a három csatornán? Az egyik valószínűleg egy oktávval magasabb az alaphangnál, a másik talán két oktávval, vagy egy oktáv+egy kvint (duodecima) hanggal magasabb. Jó lenne ezt az effektet EP-n is megcsinálni.

A videón, amikor a gyűrűmodulációval szórakozik az illető, fura, hogy csak egy hangot tart lenyomva, így nem tudni, mely másik hanggal gyűrűmodulációzott. Aztán később lenyom más billentyűket is. De szerintem EP-n is kb. ilyen a gyűrűmoduláció, csak legfeljebb nem tud ekkora hajlításokat az EP-n, ilyen rövid idő alatt rengeteg hangmagasságot ugraszt a videón.
Azt a basszushangot én se értem, hogyan éri el.
Valószínűleg nem 50Hz-en szól az egész, a vibrálásoknál eléggé begyorsul, talán ennyi az alapvető különbség.

Az EP tényleg többet tud, háromféle torzítás, és a zajcsatornán is többféle polinomszámlálós beállítás, meg a sztereó hang. Szerintem ezek teszik egyedivé a Dave chipet, bár attól még lehet más chip is, ami ilyeneket tud, csak nem tudok róla. Na meg persze az alul- és felüláteresztő szűrő (ez máshol is van önmagában), amit színesít, hogy az említett torzított hangokkal/zajcsatornával is lehet használni.
Title: Re: DAVE
Post by: ergoGnomik on 2018.May.16. 14:17:14
A leírás (http://www.hp9845.net/9845_backup/downloads/datasheets/SN76489.pdf) nem említ gyűrűmodulációt, de talán valamilyen trükkel elérhető hasonló hangzású effektus.
A videóban határozottan gyűrűmodulációszerű effektusról ír a készítő. Sőt, talán mindegyikre oda biggyesztette a "-szerű" kitételt.