Üzenetek megjelenítése

Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.


Üzenetek - Gaia

Oldalak: 1 2 [3]
31
TVC Emulátorok / Re:jstvc hírek
« Dátum: 2013. Május 21. - 23:03:55 »

32
TVC Emulátorok / Új snapshot formátum
« Dátum: 2013. Május 21. - 21:47:40 »
Itt kéne megbeszélni hogyan nézzen ki az emulátor független snapshot formátum TVC-re.

Egy indító javaslat, ami NEM a WinTVC formátuma, hanem annak továbbgondolása.

  • Little endian formátum
  • A WAV-hoz hasonlóan chunk-okból áll:
    • 'TS02' - mivel a 01 már el van használva ;) - 4 byte
    • generáló emulátor ID-ja  (ezt még megbeszéljük :-\) - 4 byte
    • file hátralévő mérete - 4 byte (DWORD)
    • Chunk ID - 4 byte
    • Chunk méret - 4 byte
    Utolsó kettő nyilván ismétlődik az összes chunk-ra, amiből az emulátorok annyit használnak fel amennyit "akarnak", de vannak sztenderd chunk-ok.
  • Sztenderd chunk-ok: 'CPU ', 'CRTC', 'IOUT', 'IOIN', 'BRAM', 'VRAM', illetve emu-specifikusak, pl.: 'EVTS', 'IRQ ' stb.

A chunk-ok tartalma (ahol nem egyértelmű/mindegy, ott zárójelben a méret és hogy előjeles-e (S)):

'CPU ': AF, BC, DE, HL, IX, IY, SP, PC, AF', BC', DE', HL', I, R, IFF1(1), IFF2(1), irq mode(1), IRQ(4), NMI(4), NMI(4), T-ciklus(S-8), órajel(S-8) ... a maradék helyen mindenki tárolhat amit akar

Most abbahagyom, de folyt. köv...

33
TVC Emulátorok / Re:WinTVC 1.0.5
« Dátum: 2013. Május 21. - 08:30:06 »
Közös snapshot formátum nagyon jó ötlet! Nyitni kéne neki egy külön fejezetet. Az enyém a Primo snapshot formátumán alapul, értelemszerűen kiegészítve a TVC specifikus elemekkel, aminek megvan a leírása valahol (meg fogom keresni). Egyébként vszleg alakítani kell rajta...

EDIT: most nézem, hogy az event queue is a snapshot része, ami annyiban probléma, hogy pont most buheráltam át az event queue kezelést, és elkézelhető, hogy picit változik emiatt a snapshot is (bár vszleg megoldható). A snapshot-ban egyébként lettek volna eredetileg tag-ek (CRTC, VRAM, CPU stb), amik jelzik, hogy melyik komponens (chunk) következik. Egy közös formátum esetén talán jó lenne még a szekció méretét is eltárolni, hogy akinek az adott komponens hiányzik a snapshot-ból (pl. nektek az event queue) az át tudja ugrani. Ez hasonló a WAV formátumban alkalmazotthoz (https://ccrma.stanford.edu/courses/422/projects/WaveFormat/).

34
TVC Emulátorok / Re:WinTVC 1.0.5
« Dátum: 2013. Május 18. - 22:27:58 »
A gyors boot-ra a snapshot valóban jó ötlet, annak idején azt hiszem az egyik Java-s emulátorban is mintha lett volna. Én is megcsinálhattam volna, csak sajnáltam rá annyi helyet. A tömörítés jó ötlet, nekem akkor vszleg újabb library függőség lesz belőle (ZIP).

A nem használt portok és bitek tutira mindig 1-et adnak vissza az igazi gépen? Valóban 0 van a kódban, megnéztem :) Mindenesetre köszi, hogy szóltál. Az 5-ös és 89-es portnál mire gondoltál pontosan? A nem használt bitekre?

Apropó, a TTP támogatást nem akarjátok megcsinálni? Az lenne még klassz... (meg az egy bites WAV...)

35
TVC Emulátorok / Re:WinTVC 1.0.5
« Dátum: 2013. Május 17. - 10:38:47 »
Most fejből írok, mert nincs előttem a forrás. Emlékeim szerint az 1.2-ben a ROM-ot patch-eltem meg a könyvben kommentált ROM lista segítségével, a 2.2-esben viszont már vannak rendszerváltozók, amikbe bizonyos értéket írva kihagyja a teszteket, meg a bejelentkező képernyőt. A ROM csereberélő user interface jó ötlet, a legtöbb emulátoromban megcsináltam, de mindig nagy tortúra dialógusablakokat tervezgetni ezért amíg lehet halogatom... ::) Vannak ilyen módosított ROM-ok?

36
TVC Emulátorok / Re:HBF emulacio (FD1793 elotti, boot szakasz)
« Dátum: 2013. Május 13. - 08:32:20 »
Hú, ez aljas, még jobb mint az én IM2-es hibám :) A TVC ROM könyv egyébként valóban nagyon klassz, mintha egyenesen emulátor szerzőknek készült volna :) Az embernek zsong a feje a sok infótól.

37
TVC Programozás / Re:Assembler / disassembler
« Dátum: 2013. Május 12. - 22:43:46 »
Köszönöm. A DASM-et már használtam korábban, de vagy sosem tudtam vagy elfelejtettem, hogy tud Z80-at :) Gondolom a VT DOS disassembly is ezzel készülhetett.

38
TVC Programozás / Assembler / disassembler
« Dátum: 2013. Május 12. - 13:40:51 »
Egy rutinos ember tudna ajánlani egy jó disassembler/assembler csomagot Z80-ra? Olyan kellene amivel a visszafejtett assembly kódot akár rögtön újra le is tudom fordítani. Disassemblerből előnyt élveznek az olyanok, amik megpróbálnak többé kevésbé értelmesen haladni a kódban és "kitalálni" mi adat és mi nem. Google a barátom tudom, de szeretnék időt nyerni...  ;)

39
TVC Emulátorok / Re:WinTVC 1.0.5
« Dátum: 2013. Május 12. - 13:37:47 »
Atka72:

Már értem. A CPU loggolás az alapesetben drága móka, mert pillanatok alatt több 100 megabyte méretű lesz. Ezért jobb, ha mondjuk mindig csak az utolsó 100 utasítás lenne loggolva. Ehhez valami fix méretű láncolt listában (vagy ring bufferben) lehet gondolkodni és a WinTVC architektúrája olyan, hogy ezt plusz performance penalty nélkül tudná is... meglátjuk :)

Raszter: nem elég minden sor elején megnézni, de ettől még sok emulátor így csinálja. Sajnos ez már igazából egy olyan módszer ami a gépek sebességének növekedésével meghaladottá vált. Ha belegondolsz ez egyfajta alulmintavételezése a video regisztereknek, aminek elkerülhetetlenül artifact-jei lesznek, mint bármi másnak.  Vannak gépek, ahol nem lehet a raszter írni/olvasni így szinte semmi módja nincs annak, hogy a képgenerálásba beavatkozzunk (pl. a Primo-nál elég elszántnak kell lenni).

Először is be kell vezetned raszterszámlálókat (ideális esetben a gépre és a TV-re is). Ez az alap. Innentől kezdve két architektúra lehetséges. Az első, egyszerű de bombabiztos megoldás az, ha a video pixel órajel köré szervezed az emulátor működésést a CPU utasítások helyett, és onnan hívod meg mikrokód szinten a CPU emulációt (tehát M1, M2 stb mind külön ág lesz).

A másik, sokkal bonyolultabb mód esetén marad a CPU alapú rendszer, de az utasítások végrehajtását előre "programozott" események szakíthatják félbe. Ilyen pl. az ha a diszk megszakítást generál, vagy változik mondjuk a keretszín, esetleg  a hangregiszterek értéke stb. Én ezt a módszert követem a WinTVC-vel. A CRTC regiszterek értékei alapján előre tudni mikor lesz pl. a képernyő vége (leegyszerűsítve: sorok száma × 200 CPU ciklus - aktuális pozíció), ez egy visszatérő esemény. Természetesen ha változik egy CRTC regiszter értéke, akkor újra kell számolni. Minden CPU ciklus számolásnál egy ciklusszámra rendezett láncolt listában megnézzük esedékes-e valami, és ha igen meghívunk egy ún. callback függvényt (nem muszáj callback, lehet egy nagy switch/Select Case is, csak akkor kevésbé generikus a kód).

40
TVC Emulátorok / Re:WinTVC 1.0.5
« Dátum: 2013. Május 11. - 00:36:13 »
Attila: aha, értem mire céloztál az LDIR-rel. Eddig valahogy fel sem tűnt, de eggyel több iterációban megy (visszalépteti a PC-t), ami csak a debuggerben látszik, mert a ciklusszám az jó. 2004. november 21-én írtam át, megtaláltam a "patch"-et ;)

Köszi :)

41
TVC Emulátorok / Re:FD1793 Floppy csatoló emuláció
« Dátum: 2013. Május 10. - 23:06:11 »
Azt akartam is írni, hogy rossz a doksi! Bocs, de kiment a fejemből.

42
TVC Emulátorok / Re:WinTVC 1.0.5
« Dátum: 2013. Május 10. - 23:05:05 »
teki: na, tesztelni azt nem volt időm igazi vason, de még nagyobb gond hogy nem is tudnék transzferálni a magnót kivéve, ami hát nem az igazi. Ezért nagyon gyúrok az új SD kártyára, de ez egy sokparaméteres egyenlet (vagy inkább egyenlőtlenség), ahol a hely és a szabadidő igen korlátos. A clock stretching sem az igazi még, úgyhogy inkább kikapcsoltam egyelőre, tehát ez azt jelenti, hogy a video sem pixelre pontos, de már legalább pixel alapú. A tied mintha más "koordináta-rendszert" használna, legalábbis az egyik raszter demód az enyémen máshol "riceg" (C= plus/4-es szleng arra, ha ha nem stabil a raszter). Még ellenőrizni kell ezt is. Most a horizontal count az a jobb keret szélén nulla nálam, de valójában szinte biztosan nem ott van, hanem a window area bal szélén.

Egyébként azt hiszem az interlace-elt video módom sem jó még, mert alapból a páratlan sorokat rajzolja és a valódi vason páros sorok jelennek meg (legalábbis a a legtöbb 8 bites mikrón ez a helyzet, ahol oszcilloszkóppal is ellenőrizve lett a VBLANK szignál). Szóval van még teendő bőven... elég nehezen is szántam rá magamat éppen ezért.

Egy szó, mint száz, ez a szokásos 80-20-as problémakör: az idő/erőfeszítés 80%-a elmegy a munka utolsó 20%-ára :)

Attila: köszi a dícséretet :) a monitorban egy olyan hiba lett javítva, hogy ha volt Windows message (jellemzően billentyűleütés vagy ilyesmi), akkor még lépett egyet. Ez a majdani "run to cursor" módban (lett volna) zavaró. Ami még javítva lett, az az ha felfele lapozol a nyilakkal, akkor okosan kitalálja milyen utasítás lehetett ott és annyit lép, nem csak bután megy egy byte-ot visszafele. Az LDIR az akkor CPU bug lenne, ezt jó hogy mondod, mert pont a TVC miatt írtam át anno (2005?), hogy közben is lehessen interrupt, elképzelhető, hogy becsúszott  egy hiba, majd megnézem, köszi. Log: milyen regiszterekre gondoltál? CPU vagy CRTC?

43
TVC Emulátorok / WinTVC 1.0.5
« Dátum: 2013. Május 10. - 10:00:17 »
Tegnap feltettem a WinTVC 1.0.5-öt. A szokásos háromféle verzióban letölthető itt:

http://gaia.atilia.eu/content/view/3/4/

Újdonságok:

- pixel alapú rasztermód kiterjesztése a teljes képernyőre
- video mentése AVI állományba
- hangfelvétel rögzítése WAV (16 bit PCM) állományba
- opcionális jobb hangminőség (teljesítmény rovására)
- hibajavítások (monitor, I/O, GUI)

44
TVC Emulátorok / Re:FD1793 Floppy csatoló emuláció
« Dátum: 2013. Május 4. - 18:32:42 »
Ez a Farat féle lib gondolom. Sosem értettem miért kell egybetűs változóneveket használni code completion idején, marha nehéz olvasni. Nekem elég fapadosnak tűnik, a D az valami általános drive struct lehet, de mi az a Ptr? Na mindegy én úgy látom itt valami várakozási időt állít csak be.

Ha ez segít itt van mit csinálok én. Ha kész a szektor (512 byte egyébként valóban a mérete), akkor DRQ-t nullázni kell, a BUSY bitet pedig szintén törölni:

         if ( buffer_offset < maxindex) {
            tmp = sector_buffer[buffer_offset++];
            wd1793.status |= STATUS_DRQ;
         } else if ( buffer_offset == maxindex ) {
            tmp = sector_buffer[maxindex];
            // multiple records?
            //if (wd1793.mult_recs && wd1793.sector < wd1793.image->sectors_per_track) {
            //   buffer_offset = 0;
            //   wd1793.sector += 1;
            //   wd1793_write_cmd(dev_nr, wd1793.command);
            //} else
            {
               wd1793.status &= ~STATUS_DRQ;
               wd1793.status &= ~STATUS_BUSY;
               wd1793_set_irq(dev_nr, 1, z80.tcount);
               buffer_offset = maxindex + 1;
               
               wd1793.state = WD_STATE_IDLE;
            }
                  
         } else {
            tmp = wd1793.data;
         }

45
TVC Emulátorok / Re:HBF emulacio (FD1793 elotti, boot szakasz)
« Dátum: 2013. Május 2. - 22:25:53 »
Interrupt emulálva van?

Oldalak: 1 2 [3]