Welcome, Guest. Please login or register.


Author Topic: NICK 2.0 projekt (Read 12274 times)

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
NICK 2.0 projekt
« on: 2012.February.10. 15:31:53 »
Tisztelt Fórumozók!

 Azért nyitottam ezt a topicot, hogy idõközönként beszámoljak arról, hol jár a NICK 2.0 projectem.
(Kérem a moderátorokat ne integrálják be ezt a témát másik topicba, mert itt csakis errõl a témáról szándékozom disputálni.)

 A projekt célja:
Olyan külsõ videoegység létrehozása, amely lehetõséget nyit az ENTERPRISE számítógép PC-s monitoron való megjelenítésre.

 A külsõ videoegység kezdeti tulajdonságai:
- Buszbõvítõ egységhez történõ csatlakozás
- Teljes NICK-sorparaméter tábla kompatibilitás (kivéve a vertikális szinkront és az interlace módot)
- Írható külsõ memóra amibõl a videoegység a megjelenítendõ képet generálja
- 800 x 600-as PC monitor felbontás

 Késobbi tervek:
- Változtatható PC-monitor felbontás (1024x768, 1280x1024 ... stb)
- Extra videomódok a sorparaméter táblában
- PS/2 billentyûzet csatoló, amely az I/O hívásokra válaszolva

(a lista nem teljes késõbb bõvíteni fogom)


Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
NICK 2.0 projekt
« Reply #1 on: 2012.February.10. 15:32:37 »
Jelenleg ott tartok, hogy elkészült a megjelenítõ HW kód és betöltöttem a hardverbe.
Programozható logikai kapukat használok, melyeket hardverleíró nyelven konfigurálok.

Elsõként azt tûztem ki célul, hogy egy 800x600-as képet jelenítsek meg PC monitoron 60Hz-es felbontásban.

A kimenet egy 8 ellenállásos RAMDAC az ENTERPRISE videomegjelenítésével azonos kombinációban.

A hardverhez csatlakozik egy 1MByte-os memória, amely a késõbbi videomemória célját szolgálja.

A próbakódot úgy írtam meg, hogy a bekapcsolás utáni memóriaszemetet jelenítse meg a képernyõn. Minden pixel a memóra egy 8 bites rekeszének felel meg, tehát 256 színû.

 Az LCD monitoromon kapott képet a csatolmányban prezentáltam.

Következõ lépés: A HW összekapcsolása az ENTERPRISE buszával.
« Last Edit: 2012.February.10. 16:32:50 by tubybb »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: NICK 2.0 projekt
« Reply #2 on: 2012.February.10. 15:54:49 »
- Teljes NICK-sorparaméter tábla kompatibilitás (kivéve a vertikális szinkront és az interlace módot)

Tehát a több képernyős LPT-t használó animációk (mint például néhány demóban) se működnek ?
A video megszakításokat megvalósítja (egy LPT-n belül több is lehet), pontos időzítéssel ?

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: NICK 2.0 projekt
« Reply #3 on: 2012.February.10. 16:14:05 »
Tudtam, hogy elõ fognak kerülni a NICK egyéb tulajdonságai is.

1. Mit értesz több képernyõs LPT alatt?

2. Video megszakítással azért nem fogalalkozom, mert nem veszem ki a NICK-et és nem is iktatom ki, tehát a Nick továbbra is elvégzi. (Senki sem szeretné, ha kiforrasztanánk a szeretett Enterprise számítógépébõl.)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: NICK 2.0 projekt
« Reply #4 on: 2012.February.10. 16:26:15 »
1. Mit értesz több képernyõs LPT alatt?
Az hogy egy LPT táblában nem csak egy kép lehet leírva, hanem tetszõleges: kép,szinkron,kép,szinkron,kép,szinkron... addig amíg nem jön egy reload bit, addig nem kezdi az elejérõl a Nick.
Ennek egy speciális esete az interlace.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: NICK 2.0 projekt
« Reply #5 on: 2012.February.10. 16:31:35 »
Elemezzük tovább kérlek!

Megértettem a mûködést. Csak nem tudom kinek van erre szüksége.

1. Mire jó egy többképernyõs kép?
2. Milyen elõnyei vannak?
3. Mennyire memóriapazarló?
4. A demókon kívül mi használja?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: NICK 2.0 projekt
« Reply #6 on: 2012.February.10. 16:48:15 »
1. Mire jó egy többképernyõs kép?

Egyszerű animációt lehet megvalósítani vele, amely CPU használat nélkül jelenik meg.

Quote
2. Video megszakítással azért nem fogalalkozom, mert nem veszem ki a NICK-et és nem is iktatom ki, tehát a Nick továbbra is elvégzi. (Senki sem szeretné, ha kiforrasztanánk a szeretett Enterprise számítógépébõl.)

Akkor nem jól értettem a NICK 2.0 célját :oops:, azt hittem az eredeti teljes helyettesítésére készül, pl. olyan géphez is, amelyben a NICK elromlott. Így valóban kevésbé fontos a kompatibilitás, ha valami nem működik, az továbbra is használható a (rosszabb minőségű) eredeti video kimenettel.
« Last Edit: 2012.February.10. 16:51:36 by IstvanV »

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: NICK 2.0 projekt
« Reply #7 on: 2012.February.10. 17:06:44 »
Mivel monitorkat lehet venni potom pénzért, az Enterprise számítógép újra elfoglalhat egy sarkot a szobában letakarva, és várva gazdáját, hogy bármikor újra használja õt.

Én rendelkezem KM-switch eszközzel, amelynek segítségével egy billentyûzet-egér-monitor együttessel több gépet tudok használni, azok között átkapcsolni. Alig várom már, hogy a 2. gép az Enterprise lehessen.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: NICK 2.0 projekt
« Reply #8 on: 2012.February.10. 18:21:54 »
Akkor nem jól értettem a NICK 2.0 célját :oops:, azt hittem az eredeti teljes helyettesítésére készül
Én is  :oops:

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: NICK 2.0 projekt
« Reply #9 on: 2012.February.10. 19:07:35 »
Egyszerű animációt lehet megvalósítani vele, amely CPU használat nélkül jelenik meg.

Akkor nem jól értettem a NICK 2.0 célját :oops:, azt hittem az eredeti teljes helyettesítésére készül, pl. olyan géphez is, amelyben a NICK elromlott. Így valóban kevésbé fontos a kompatibilitás, ha valami nem működik, az továbbra is használható a (rosszabb minőségű) eredeti video kimenettel.

Hat igen, es pl jol jott volna olyan esetben ha "EP rebuild" project van, pl Z180-al, esetleg eZ80-al :) Akkor a nick adott lenne, vhdl/verilog dolgokba - valaki hozzaerto, nem en :) - bele is lehet irni picit, ha itt valami maskepp kene az illesztes miatt: lassan keszen lenne az uber-brutal EP 2.0, mar csak mondjuk a Dave hianyozna. Ha zonban valaki a hanggal nem foglalkozik, akkor max memory mapping, meg megszakitasok reszt kene megcsinalni, es mar - igaz hang nelkul - tesztelni is lehetne. Bar imho, akkor ha mar FPGA be lehetne melle tolni. Kesobb esetleg opcionalisan a CPU emulaciot is, es kesz a szep alom: a C64DTV-hez hasonlo "kompakt" EP, advanced tulajdonsagokkal! Csak mondjuk lehetne tv mimenet helyett jo kis whatever (VGA, HDMI, tudomisen). Szoval egy teljesen kompatibilis megoldas azert nagyon sok lehetseges jovobeli project-et is tudna szulni, plusz egy deffektes EP-et (Nick kaputt) is megmenthet, stb stb. Persze, ehhez full kompatibilitas kene.

Amugy szep pelda a C64 Chamelon project (vagy mi is), ahol a VIC-II-t "duplikaltak": ugy lett kvazi VGA kimenet, hogy a buszra kapcsolodik az FPGA-s cuccos, es mivel cycle exact VIC-II emulacio van, garantaltan az lesz annak "kimeneten" amit a gepbe epitett VIC-II mutatna. En azt gondoltam, valami ilyen keszul itt is ...

Ha felreertettem, es eddig feleslegesen "vitatkozgattam" itt, akkor bocsanatot kerek, nem allt szandekomban flame-elni.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: NICK 2.0 projekt
« Reply #10 on: 2012.February.10. 19:14:13 »
Elemezzük tovább kérlek!

Megértettem a mûködést. Csak nem tudom kinek van erre szüksége.

1. Mire jó egy többképernyõs kép?
2. Milyen elõnyei vannak?
3. Mennyire memóriapazarló?
4. A demókon kívül mi használja?

Azert a memoriazabalasrol: most kepzeld el, hogy van egy kep, sync, kep, sync, stb, reload valahol soka :) Ha a pointerek majdnem mindenhol ugyanazok, csak nehol van kulonbseg, akkor nem tul memoriazabalo, es ezzel nagyon szepen lehet nulla CPU-t hasznalo animaciot csinalni (felteve ha nem tul nagy a kulonbseg a kepek kozott, kulonben tenyleg tul sok memoria kellene). Ez az amire azt mondom, hogy ez a nick szepsege, ami miatt az egesz EP megfogott (amellett, hogy a memoriakezeles milyen elegans es szep szinten, nem olyan "ganyolt" mint a custom hackelt megoldasok C64-nel, stb). Ezert is kezdett erdekelni az EP, annak ellenere, hogy valojaban en "nem is voltam EP-s".

Az, hogy a demokon kivul mi hasznalja, jo kerdes: de akkor ilyen elven kizarni programokat, volt mar parrol szo, ami "extra" nick dolgokat csinal lasd pl iview. Es persze pont azt se felejtsuk, hogy pont egy ilyen project mint a nick2 katalizalhatna talan az ep-re uj programok irasat (mivel "profi" megjelenites is lenne, osszehasonlitva a tv kimenettel), es pont ekkor jonne jo a kompatibilitas, hiszen azert az ember szeretne, ha a "regi" gepen is menne (kiveve persze, ha valami extra nick2 feature-t hasznal, mint x2 read rate, es hasonlo otletek, amirol mar irtam, de persze az mas kerdes).

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: NICK 2.0 projekt
« Reply #11 on: 2012.February.11. 16:35:02 »
Tegnap elõvettem az egyik lestrapált EP-met (természetesen én strapáltam le tizenpár év alatt), és átalakítottam az antenna kimenetet színes video kimenetre. Ez lesz a tesztgépem. EP 128 issue 6.

 Elsõ dolgom volt, hogy megnézzem mennyire tartja be a Z80 a specifikációt.
Írtam egy Assembly programot:

Code: [Select]
DI
LD HL,5000h
back LD A,(HL)
LD A,(HL)
LD A,(HL)
LD A,(HL)
LD A,(HL)
LD A,(HL)
LD A,(HL)
.
; ezt még vagy 8000-szer egymás után
.
LD A,(HL)
LD A,(HL)
JP back

Arra voltam kíváncsi, hogy hány órajel az utasításbekérés, és mennyi a végrehajtás.
A kód futtatásakor elõvettem az oszcilloszkópot, és rámértem az !M1 és !RD lábakra kétsugaras módban. Valóban a katalógus szerinti specifikációt mértem, így pontos idõzítési értékeket tudok, amelyek megkönnyítik a külsõ NICK memóriavezérlõjének implementálását.

A következõ szabályokat találtam:
Memória olvasásakor:
1. Egy órajelciklus ideje van a memóriavezérlõnek az adatokat szolgáltani, ha ezt nem tudja, akkor a WAIT lábbal késleltetni kell a processzor mûködését.
2. Addig kell a buszon tartani az adatokat, amíg !MREQ és !RD alacsony szintû.

Memória íráskor:
1. !MREQ és !WR lábak lefutóélére a buszon érvényes adat van, ami 1 órajelcikluson keresztül lesz ott.

Az I/O utsítások ugyanígy mûködnek, csak !MREQ helyett !IORQ a jelvezeték.

Projektemben az I/O utasításokat is figyelnem kell, mert a külsõ Nick csak így fogja tudni, honnan töltse be a sorparaméter táblát.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: NICK 2.0 projekt
« Reply #12 on: 2012.February.11. 16:38:02 »
OUT 191,12 után is nézd meg. És nem mindegy, hogy a HL normál vagy videó memóriába mutat.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: NICK 2.0 projekt
« Reply #13 on: 2012.February.11. 17:05:16 »
Ez a DAVE 0BFh regisztere, amely a következõ paraméterekkel rendelkezik:

b7 - b4 - nem használt
b3 - memóriahozzáférés módja (felsõ bit)
b2 - memóriahozzáférés módja (alsó bit)
b1 - Bemeneti órajelfrekvencia: 0 = 8MHz, 1 = 12MHz
b0 - Beépített RAM: 0 = 64K, 1 = 16K

memórihozzáférés módja:
11 - nincs várakozás
10 - nincs várakozás
01 - várakozás csak M1-nél (utasításolvasás), kivéve a VideoRam-ot
00 - várakozás minden memóriamûveletnél, kivéve a VideoRam-ot

OUT 191,12 - Nincs várakozás memóriamûveletnél

Egyébként direkt nem videomemóriát használtam a tesztre, mert tudom, hogy a Nick ciklust lop.
Csak azért kukkantottam rá az oszcilloszkóppal, hogy leellenõrizzem azt kapom-e, amit a specifikáció szerint elvárok, és igen, azt kaptam. Tudom, mennyi idõm van elõvenni a ramból az adatot.

Terveim szerint, az új videomódban minden képpont 256 színû lesz. Idõzítés szempontjából ez a legmegterhelõbb. Minden képpont elõtt memóriahozzáférésre van szükség. Két memóriahozzáférés közt, pont elfér egy plusz, egy CPU memória memóriahozzáférés. Sajnálatos, hogy a Z80 nem 40Mhz-en fut, mert ez az extra nem lesz maximálisan kihasználva.

Nincs 40 MHz-es Z80 valahol a világban?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: NICK 2.0 projekt
« Reply #14 on: 2012.February.11. 17:26:32 »
Nincs 40 MHz-es Z80 valahol a világban?

A Z80 gyorsítását az EP-ben az korlátozza, hogy a gép más részeit (elsősorban a DAVE-t) is gyorsítani kell. A gyakorlatban legfeljebb 7.12 (esetleg még 8 ) MHz-es Z80 órajelű EP konfiguráció fordul elő. Ez is gyakran csak az eredeti memória IC-k cseréjével működik megbízhatóan.