Enterprise Forever  |  Enterprise fórum  |  Enterprise fórum  |  Emulátorok  |  Topic: Java-s emulátor
Author Topic: Java-s emulátor  (Read 1141 times)« previous next »
OLI76
Newbie
Offline Offline

Hungary

Posts: 13


OS:
Windows XP
Browser:
Firefox 3.5.7


View Profile
New Posts
« on: 2010.January.25. 14:58:50 »

Üdv mindenkinek!

Én most azzal a gondolattal játszom, hogy egy TVC emulátort kellene írni. Alig van 1-2, azok is problémásak.
Próba ként el is kezdtem írni egy Z80 emulátort, bár lehet hogy sohasem fog elkészülni. A TVC ROM-ját töltöttem be és azt próbálom futtatni benne. Ahogy jönnek az utasítások sorban úgy írom meg őket.
Legalábbis ez a terv, ma találkoztam a CPI utasítással, és ott már nem egyértelmű, hogy a jelzőbitek hogy módosulnak.

Ja, JAVA nyelven írnám. Előnye, hogy ablakban, teljes képernyőn ,vagy akár weboldalon is futna. Ha lesz elég dokumentáció és időm is lesz, akkor a Z80 részét meg tudom csinálni, és valami alap szinten a hardvert is -remélem.
Gondolom ismeritek ezt az oldalt:
http://www.zxspectrum.net/
Ehhez hasonlót készítenék szívem szerint. Tehát letöltés és telepítés (és hosszú loading) nélkül lehetne TVC programokat futtatni.

Régebben már próbálkoztam C64 emulátor írásával, az utasításokat megcsináltam, de nem volt elég infóm és szerintem 1-2 utasítás hibásan állította a jelzőbiteket, mert végtelen ciklusba futott a gép mikor a C64 ROM-ját próbáltam futtatni.
Ennek már vagy 4-5 éve. Remélem most több szerencsém lesz, de ha valaki esetleg segítene az nem jönne rosszul.
Amúgy ez alapján dolgozom:
http://www.ep128.hu/Sp_Konyv/Z80_sorozat_8.htm
Meg van még pár leírásom, meg egy félig elkészült Z80 emulátor forráskódja.
A gond ott kezdődik, amikor a leírások teljesen mást írnak ugyanarra az eljárásra /kódra. Sajna nincs valódi Z80-as gépem, hogy teszteljem a dolgokat, esetleg egy jobb emulátor segíthet majd ebben.
Logged

Enterprise Forever
« on: 2010.January.25. 14:58:50 »

 Logged

IstvanV
EP addict
*
Offline Offline

Posts: 1218

OS:
Linux (Suse)
Browser:
Konqueror 4.3.1


View Profile
New Posts
« Reply #1 on: 2010.January.25. 16:14:46 »

Próba ként el is kezdtem írni egy Z80 emulátort, bár lehet hogy sohasem fog elkészülni.

Szerintem biztosan van már JAVA nyelven is szabadon felhasználható Z80 emulátor kód, amit talán be lehetne építeni.

Quote
Legalábbis ez a terv, ma találkoztam a CPI utasítással, és ott már nem egyértelmű, hogy a jelzőbitek hogy módosulnak.

Ez a CPI utasítás megvalósítása az ep128emu-ban (igaz, C++ nyelven, de talán így is használható információ):

Code
  void Z80::CPI()
 {
   Z80_FLAGS_REG = Z80_FLAGS_REG | Z80_SUBTRACT_FLAG;
   Z80_BYTE  tmp = readMemory(R.HL.W);
   R.HL.W++;
   R.BC.W--;
   Z80_BYTE  tmp2 = R.AF.B.h - tmp;
   Z80_FLAGS_REG = (Z80_FLAGS_REG & (Z80_SUBTRACT_FLAG | Z80_CARRY_FLAG))
                   | (R.BC.W == 0 ? 0x00 : Z80_PARITY_FLAG)
                   | t.zeroSignTable[tmp2];
   SET_HALFCARRY(tmp, tmp2);
   tmp = tmp2 - ((Z80_FLAGS_REG & Z80_HALFCARRY_FLAG)
                 >> Z80_HALFCARRY_FLAG_BIT);
   Z80_FLAGS_REG =
       Z80_FLAGS_REG | (tmp & Z80_UNUSED_FLAG2) | ((tmp & 0x02) << 4);
 }

Egyébként érdemes megnézni ezt és ezt, illetve a Z80 dokumentációját itt.

UI.: célszerű lehet először Spectrum 48 emulátor írásával próbálkozni, mivel a hardvere nagyon egyszerű, és sok program van rá, többek között például olyanok is, amelyek Z80 emulációt tesztelnek.
« Last Edit: 2010.January.25. 16:40:13 by IstvanV » Logged

Mayer Gábor
User
*
Offline Offline

Hungary

Posts: 65


OS:
Windows XP
Browser:
Firefox 3.0.17


View Profile
New Posts
« Reply #2 on: 2010.January.25. 17:19:02 »

Mit jelent az hogy .W ?

R.HL.W ?
Logged

IstvanV
EP addict
*
Offline Offline

Posts: 1218

OS:
Linux (Suse)
Browser:
Konqueror 4.3.1


View Profile
New Posts
« Reply #3 on: 2010.January.25. 18:24:38 »

Mit jelent az hogy .W ?

R.HL.W ?

"Word", azaz a teljes 16 bites regiszter (a CPI utasítás működése alapján másnak nem is nagyon lenne értelme Smiley). Az R.HL.B.h lenne a H regiszter, az R.HL.B.l pedig az L.
Tehát pontosan ez történik:
  - az N jelzőbit beállítása (mindig 1)
  - byte olvasása a HL címről
  - HL növelése, BC csökkentése
  - az S, Z, és H jelzőbitek beállítása az A - (HL) műveletnek megfelelően, a Carry változatlan marad
  - a P/V jelzőbit 0 lesz, ha a BC a csökkentés után 0,  egyébként 1
  - a nem dokumentált 3. jelzőbit az A - (HL) - H 3. bitje (itt a 'H' a H jelzőbit új értéke)
  - a nem dokumentált 5. jelzőbit pedig az A - (HL) - H 1. bitje lesz
« Last Edit: 2010.January.25. 18:33:18 by IstvanV » Logged

OLI76
Newbie
Offline Offline

Hungary

Posts: 13


OS:
Windows XP
Browser:
Firefox 3.5.7


View Profile
New Posts
« Reply #4 on: 2010.January.25. 23:42:27 »

Köszi az infót!
Este még találtam egy Java nyelven írt Z80 proci emulátor forráskódot.
Sajnos nem tökéletes, de a semminél több.
Megpróbálok életet lehelni bele, és akkor ennyivel is előrébb leszek ha sikerül.
Pont a CPI utasításban találtam hibát, ugyanis a HL és BC értékét is növelte a programozó, pedig BC-t csökkenteni kell. Jó hogy az ilyen egyszerű dolgokat kiszúrom, de ha ilyeneket benne hagyott akkor ki tudja, hogy miket hibázott még.

Utána már "csak" a hibát kell majd javítani benne, meg valami egyszerű hardvert emulálni mellé. Persze ez sem kevés.
Pár napig el leszek, de ha segítség kell, akkor majd hozzátok fordulok.

Ha már működne a proci emuláció, akkor utána már elég sok gépet lehetne emulálni vele, gondolok itt főleg a magyar gépekre. De ha a Spectrum hardvere tényleg egyszerű, akkor érdemes azt összedobni és azon tesztelni.

Remélem 1-2 hét és lesz is már mit tesztelni.
Logged

OLI76
Newbie
Offline Offline

Hungary

Posts: 13


OS:
Windows XP
Browser:
Firefox 3.5.7


View Profile
New Posts
« Reply #5 on: 2010.January.30. 13:04:39 »

Az utasítások kb fele már működik.
A TVC ROM-ot indítottam ahogy a nagy könyvben meg van írva. TVC-s memóriakezelés működik.

A ROM indul, nullázza a portokat, a video regisztereket. Utána teszteli a RAM-ot. Ez is lefut többször is, ugye több lapot is ellenőriz.

Kb. itt járok most. Még a program elágazik a szerint, hogy bekapcsoltuk a gépet, vagy meleg reset volt.
Még néhány utasítást meg kell írni, de ezen a ponton már nehéz követni, hogy jól működik e az emulátor vagy sem, mindenesetre gyanús, hogy egy apróbb hiba már becsúszott. A "meleg reset" ágon mintha a PC regiszter értéke el lenne csúszva egyel ahhoz képest ahogy a TVC ROM könyvben le van írva (vagy eleve rossz helyen jár a program).

Dolgozom az ügyön ahogy van időm.
Logged

OLI76
Newbie
Offline Offline

Hungary

Posts: 13


OS:
Windows XP
Browser:
Firefox 3.5.7


View Profile
New Posts
« Reply #6 on: 2010.February.07. 19:52:15 »

Hali!
A következő linken lehet megtekinteni a programot ami készül:

Weboldalon futó TVC emulátor (készülget)

Pár napig nem foglalkoztam vele, mert hibásan működött és nem jöttem rá hogy miért.
Ma végeztem kis nyomkövetést és sikerült kijavítani a hibát. Lehet még most is hiba benne, de eddig úgy néz ki jól működik.

Sok látnivaló még nincs. Ha a program elindul, akkor látjuk a soron következő utasítást, a regiszterek tartalmát. A SPACE lenyomására végrehajt egy utasítást az emulátor. Az F9 lenyomására elkezd folyamatosan futni a program (TVC ROM). Addig fut, míg ismeretlen utasítást nem talál, vagy le nem állítjuk. (F12-vel újraindítjuk a gépet.)

Egyelőre csak a memória teszt fut le (szerintem jól). Ezután a bővirő kártyákat ellenőrzi majd a gép. Ez már nem tud lefutni, mert vannak utasítások amiket még nem ismer az emulátor. Ezeket sorban megírom majd és lassan haladunk tovább. Mivel a "TVC ROM" könyvben egész jól le van írva, hogy mit csinál a gép bekapcsolás után, így nagyjából tudom ellenőrizni, hogy jól dolgozik e. A végén meg remélem sikerül odáig eljutni, hogy "beröffenjen" a BASIC, megjelenjen az üdvözlő képernyő (és ne csak a "debug" ablakot kelljen bámulni).
Logged

OLI76
Newbie
Offline Offline

Hungary

Posts: 13


OS:
Windows XP
Browser:
Firefox 3.5.7


View Profile
New Posts
« Reply #7 on: 2010.February.12. 23:28:55 »

Nehéz szülés, de haladok.

Jelenleg az emulátor ott tart, hogy a gép indításakor lefutnak a tesztek és beállítások. Ezek végén a gép engedélyezi a megszakításokat és átadja a vezértlést a BASIC-nek.

Itt a gép még beállítja majd a BASIC munkaterületet, változókat, és a végén megjeleníti az üdvözlő képernyőt. Ez várhatóan már kissebb szakasz, így ha nem csúszik be nagyobb hiba akkor vagy egy héten belül elkészülhet. Utána már érdekesebb lesz a munka.
Logged

Attus
EP lover
*
Offline Offline

Hungary

Posts: 696


OS:
Linux
Browser:
Firefox 3.6


View Profile
New Posts
« Reply #8 on: 2010.February.13. 09:20:56 »

Hajrá!
 Smiley
Logged

OLI76
Newbie
Offline Offline

Hungary

Posts: 13


OS:
Windows XP
Browser:
Firefox 3.5.7


View Profile
New Posts
« Reply #9 on: 2010.February.17. 00:11:22 »

Nem tudom mennyire van érdeklődés, de azért közlöm, hogy mától ad életjelet az emulátor.

Van egy egyszerű képernyő emuláció, így indítás után látható ahogy teszteli a video memóriát a gép. Ezután kicsit magunkra hagy, majd a végén megjeleníti az üdvözlő képernyőt.

Pontosabban csak jelenítené, mert még hibás a kép. De egyértelműen látszik, hogy a gép kiírja a "videoton" feliratokat, csak kicsit hibásan még. Ma órákig nyomoztam, mert először csak fekete kockákat rajzolt a karakterek helyére. Végül kiderült, hogy az egyik bitléptető utasítás elfelejtette a C (átvitel) bitet beleforgatni a regiszterbe, emiatt az előállított színkód minden esetben nulla volt.
Remélem sikerül pár napon belül a hibás kiírás okát is megtalálni és kijavítani.

A futást felgyorsítottam, a debug ablakokat eltüntettem. F1-el elő hívható egy menü amiben visszahozhatóak ezek az ablakok, meg egyéb beállításokat is el lehet majd végezni.

Szóval haladok.
Logged

geco
EP lover
*
Offline Offline

Hungary

Posts: 680


OS:
Windows XP
Browser:
Firefox 3.5.7


View Profile
New Posts
« Reply #10 on: 2010.February.17. 08:14:58 »

Gratula Smiley
Logged

OLI76
Newbie
Offline Offline

Hungary

Posts: 13


OS:
Windows XP
Browser:
Firefox 3.5.7


View Profile
New Posts
« Reply #11 on: 2010.February.17. 23:40:23 »

Hali!  ds_icon_cheesygrin ds_icon_cheesygrin

Ma megtörtént a csoda: tökéletes minőségben megjelenik a gép indulásakor az üdvözlő képernyő. Tudjátok, a "videoton" feliratok és középen a villogó "TV Computer" felirat. A színek is korrektek. A képernyő emuláció nem túl bonyolult, de szerintem a legtöbb programhoz elég is lesz.

Na itt billentyű leütésre vár a gép, de ez a rész még nincs megírva. De eddig legalább jól működik.
Érdekesség, hogy ha ezen a képernyőn nyomunk egy F11-et (meleg reset), akkor fekete képernyőn megjelenik az OK felirat és a villogó kurzor (!!). Igaz, a kurzor szerintem eredetileg nem egy inverz C betű volt, szóval valami apró hiba még van a gépezetben.

Ha valaki kíváncsi rá, újra a link: TVC emulátor : oli576.uw.hu/tvc.php

Sajnos nem tudom márciustól mennyi időm lesz erre, de remélem sikerül befejezni az emulátort legalább arra a szintre, hogy a BASIC programokat tudja futtatni.
Logged

szipucsu
EP addict
*
Offline Offline

Hungary

Posts: 1739


OS:
Windows XP
Browser:
Firefox 3.5.7


View Profile
New Posts
« Reply #12 on: 2010.February.18. 13:35:06 »

Nem rossz!
Kicsit szétnézegettem a TVC oldalán, van már Java-s TVC emulátor (onnan letölthető), de nincs befejezve, csak a BASIC utasításokat ismeri állítólag és a készítője már nem foglalkozik vele. Letölthető a forráskódja is további fejlesztés céljából. (Az emulátorok menüpont alatt van a Java TVC.)
Lehet, hogy hasznát tudod venni?
Logged

Az EP jobb volt, mint a PC, nem volt hírtelen kikapcsolás után scandisk, és nem kellett újratelepíteni a Windows-t, kék képernyő pedig legfeljebb a DOS ablakban volt, az is más funkcióval.

OLI76
Newbie
Offline Offline

Hungary

Posts: 13


OS:
Windows XP
Browser:
Firefox 3.5.7


View Profile
New Posts
« Reply #13 on: 2010.February.18. 21:32:39 »

Köszi a tippet. Igazából már letöltöttem.
Először arra gondoltam, hogy csak azt írom át, fejlesztem tovább. De aztán egyszerűbbnek láttam újra írni az egészet a saját stílusomban. Belenéztem amúgy a kódjába, és egy-két dolgot át is vettem. Szóval hasznát vettem már, és talán fogom is még. De azt bővíteni, átalakítani nagy munka lenne, egyszerűbb újraírni.
Abba az emulátorba amúgysem lehet betölteni játékot, így nemis nagyon lehet tesztelni "gyári" programokkal (azok egy részét is gondolom futtatja).

Lehet hogy ez az emulátor sincs nagyon messze attól, hogy a BASIC programokat (parancsokat) hiba nélkül végrehajtsa. Kb. 70 darab Z80 utasítás van még ami nincs megírva (kb. 650 van kész). Ezek egy része könnyű, csak 1-2 trükkös van még (pl. DAA). (utána jöhetnek még a nem dokumentált utasítások, de a BASIC ezeket úgysem használja, szerintem a legtöbb játék sem.)

A TVC oldaláról leszedtem azt a pár cartridge ROM-ot, ezeket már most könnyen be tudom tölteni az emulátorba. Ha minden utasítás kész lesz akkor ezeket már lehet is majd futtatni rajta (legalábbis tesztelni az emulátort).
Logged

Attus
EP lover
*
Offline Offline

Hungary

Posts: 696


OS:
Linux 64 bit
Browser:
Mozilla compatible


View Profile
New Posts
« Reply #14 on: 2010.February.19. 09:14:18 »

Lehet hogy ez az emulátor sincs nagyon messze attól, hogy a BASIC programokat (parancsokat) hiba nélkül végrehajtsa. Kb. 70 darab Z80 utasítás van még ami nincs megírva (kb. 650 van kész). Ezek egy része könnyű, csak 1-2 trükkös van még (pl. DAA). (utána jöhetnek még a nem dokumentált utasítások, de a BASIC ezeket úgysem használja, szerintem a legtöbb játék sem.)

Ne sajnáld az energiát a z80-ra!
Csináld meg az összes z80-as utasítás emulációját, különbem a basic sem fog menni. A basic is Z80 rutinok tömkelegéből áll. Mondjuk a nem dokumentáltak talán nélkülözhetők, de a DAA biztos, hogy nem, hisz a matematikai rutinok fontos utasítása. A spectrum átirataimban is gyakran használják a spectrum játékprogramok is a DAA utasítást.
Logged

Enterprise Forever
« Reply #14 on: 2010.February.19. 09:14:18 »

 Logged
Tags:
Enterprise Forever  |  Enterprise fórum  |  Enterprise fórum  |  Emulátorok  |  Topic: Java-s emulátor

Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks

Template made by Mr.Prise
Page created in 0.706 seconds with 25 queries.
Google visited last this page 2010.March.08. 20:44:55