Welcome, Guest. Please login or register.


Author Topic: DAVE (Read 42627 times)

Online Zozosoft

  • EP addict
  • *
  • Posts: 13192
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.6.13 Firefox 3.6.13
    • View Profile
    • http://enterprise.iko.hu/
Re: DAVE
« Reply #60 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.

Offline Ferro73

  • EP lover
  • *
  • Posts: 530
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 2.0.0.9 Firefox 2.0.0.9
    • View Profile
Re: DAVE
« Reply #61 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:

Offline Tuby128

  • EP lover
  • *
  • Posts: 920
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.6.13 Firefox 3.6.13
    • View Profile
Re: DAVE
« Reply #62 on: 2011.March.05. 10:47:06 »
Inkább a 40.-re. hehe

Offline Ferro73

  • EP lover
  • *
  • Posts: 530
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 2.0.0.9 Firefox 2.0.0.9
    • View Profile
Re: DAVE
« Reply #63 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.

Offline Ferro73

  • EP lover
  • *
  • Posts: 530
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
Re: DAVE
« Reply #64 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.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4768
  • OS:
  • Linux 64 bit Linux 64 bit
  • Browser:
  • Firefox 5.0 Firefox 5.0
    • View Profile
Re: DAVE
« Reply #65 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.

Offline Ferro73

  • EP lover
  • *
  • Posts: 530
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.1 Firefox 10.0.1
    • View Profile
Re: DAVE
« Reply #66 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 ?

Online Zozosoft

  • EP addict
  • *
  • Posts: 13192
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 13.0.1 Firefox 13.0.1
    • View Profile
    • http://enterprise.iko.hu/
Re: DAVE
« Reply #67 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 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, csak az elsõ Application Notes-ben 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
« Last Edit: 2012.June.20. 20:10:33 by Zozosoft »

Offline lgb

  • EP addict
  • *
  • Posts: 3496
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 28.0.1500.89 Chrome 28.0.1500.89
    • View Profile
    • http://lgb.hu/
Re: DAVE
« Reply #68 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 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.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4768
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 18.0 Firefox 18.0
    • View Profile
Re: DAVE
« Reply #69 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.

Offline lgb

  • EP addict
  • *
  • Posts: 3496
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 28.0.1500.89 Chrome 28.0.1500.89
    • View Profile
    • http://lgb.hu/
Re: DAVE
« Reply #70 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 :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4768
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 18.0 Firefox 18.0
    • View Profile
Re: DAVE
« Reply #71 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:
« Last Edit: 2013.July.18. 19:28:19 by IstvanV »

Offline lgb

  • EP addict
  • *
  • Posts: 3496
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 28.0.1500.89 Chrome 28.0.1500.89
    • View Profile
    • http://lgb.hu/
Re: DAVE
« Reply #72 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? :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4768
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 18.0 Firefox 18.0
    • View Profile
Re: DAVE
« Reply #73 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ó.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4768
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 18.0 Firefox 18.0
    • View Profile
Re: DAVE
« Reply #74 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.