Welcome, Guest. Please login or register.


Author Topic: TVC64emu (Read 90310 times)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: TVC64emu
« Reply #15 on: 2016.December.03. 21:11:04 »
Valamennyire már működik a Git verzióban:
:smt041
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: TVC64emu
« Reply #16 on: 2016.December.03. 21:11:33 »
Valamennyire már működik a Git verzióban:

Neked legalabb van kereted is, nem ugy, mint nekem :D :D

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #17 on: 2016.December.03. 21:47:13 »
Valamennyire már működik a Git verzióban:
:smt038 :smt038 :smt038

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: TVC64emu
« Reply #18 on: 2016.December.03. 21:50:21 »
A fenti screenshotokon már látható is egy bug: a színeknél az intenzitás bit nem működött, illetve a keretnél egyéb hiba is volt. Ezeket már javítottam, és a hangot is:
[ Guests cannot view attachments ]

[ Guests cannot view attachments ]

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re:TVC64emu
« Reply #19 on: 2016.December.03. 21:57:06 »
Egyelőre csak magnós konfigurációt próbálok emulálni. :oops:
Következő lépésnek lehet, hogy az SD kártya lesz a könnyebb. Ott a (módosított) VT-DOS az SD kezelővel együtt a cartridge-be (CART jelű 16K-s szegmens) költözött. Így elmarad a 8K-s EXT ROM-mal közösködés. Várom a pontos memóriatérképet, valószínüleg hasonló lesz mint az EP-s. Ehhez majd ROM-ok, ill. programok innen tölthetőek le. (Az SD Dual az aktuális, itt lényegében az EP-s SD-n kifejlesztett dolgok kerültek vissza a TVC-sbe.)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: TVC64emu
« Reply #20 on: 2016.December.03. 23:31:49 »
De még nincs kész a snapshot támogatás, debugger funkciók, és a konfiguráció/makecfg/installer/ROM csomag/stb. Valószínűleg a reset megvalósítása sem jó, és biztosan vannak hibák és pontatlanságok az emulációban. Probléma még, hogy az emulált gépek közül ez lett a leglassabb, talán részben azért, mert itt a legnagyobb a video frekvencia (1562500 Hz).

Snapshot eseten a formatum azonos reszei minden gepen azonosak? Pl Z80 blokk az total ugyanolyan TVC, EP128, CPC, stb snapshot-ban? Azert is kerdem, mert probalnam az Xemu-ban levo Z80 state load/save handler-t vele kompatibilisre irni, igy legalabb van egy kis kozos nevezo :-]

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #21 on: 2016.December.03. 23:38:13 »
A VT-DOS-ról pár szó: ez tulajdonképpen 3 darabból áll.
A lemezvezérlőn található ROM (ez a D jelű a TVC-s DOS mentésekben), a mi EXDOS ROM-unknak felel meg. Ebben van a központi fájlkezelő mag (FISH), a floppyt kezelő DISKIO, a felhasználó által beírható DOS parancsokat értelmező CLI, operációs rendszer (MOPS) számára DISK periféria, amin keresztül már BASIC-ből is mehet a töltés/mentés lemezre.
Nincs RAMDISK, ill. egyéb bővítési lehetőség (pl vinyó,stb), valamint EXDOS.INI, vagy szabadon hívható kötegelt parancsfájl lehetőség.
A :EXDOS parancs megfelelője EXT2.

A rendszer része még egy 16K-s cartridge (ez a C jelű DOS ROM) meg egy rendszer lemez COMMAND.COM-mal, és a külső segéd programokkal. Ha ez a cartridge bent van, betölti a COMMAND.COM-ot, és így egész konkrétan az IS-DOS-nak megfelelő környezetbe jutunk.

A módosított SD-s VT-DOS-ban, mivel bővítési rendszer nem volt, a floppy kezelés helyére került az SD. És egyben van benne az eredetileg a floppyvezérlőn és a külön cartridgben található VT-DOS ROM-ok. A letölthető SD programok között van a megfelelő COMMAND.COM.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #22 on: 2016.December.04. 00:10:49 »
Van egy másik floppy rendszer is TVC-re: UPM
Ez a Videoton már korábbi gépeire is létező saját CP/M kompatibilis rendszere.
A lemezvezérlő kártya hardvere ugyanaz, csak a szoftver más.
Itt is van a kártyán lévő ROM, ami ezesetben annyit tud, hogy BASIC LOAD/SAVE menjen, de már a formázáshoz is külön segéd programot kell betölteni...
És van a cartridge, amivel CP/M módba jutunk, ami nagyon CP/M :-) a parancsok is onnan vannak, nem az általunk megszokott DOS parancsok.
A lemez fizikai formátuma ugyanúgy 720K-s mint a normál EXDOS/VT-DOS lemez, de a fájlrendszer saját CP/M-es.

Szerintem elsőnek ezt a saját rendszerüket adták ki, aztán amikor meglátták, hogy az angolok EXDOS/IS-DOS rendszere mennyivel jobb (különösen a már elterjedő PC-kkel való adat és parancs kompatibilitás), gyorsan kérték, hogy azt is dolgozzák át TVC-re, így lett a VT-DOS.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re:TVC64emu
« Reply #23 on: 2016.December.04. 00:15:18 »
Egyelőre csak magnós konfigurációt próbálok emulálni.
Itt vannak WAV formában is programok, a teszteléshez esetleg.

Egyébként érdekes a TVC magnózás EP-s szemmel:
Nincs status sor, így a képernyőre írja, hogy SEARCHING meg LOADING, és a színtjelző helyett a kereten van zöld-piros villogás.
Magnóhang az olyan EP-s, de egy idő után feltűnik, hogy nincs PAUSE. Bár ha jól emlékszem, külön beállítással lehet pufferelt formában is magnózni.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: TVC64emu
« Reply #24 on: 2016.December.04. 11:13:33 »
A floppy emulációt egyelőre nem tervezem, talán SD-t ha az EP verzió alapján egyszerűen megoldható. :oops:

A magnós programok problémásnak tűnnek, mert nem szabványos 1 bites WAV formátumot használnak, a fejléc azonban normál 8 bites 44100 Hz mono PCM formátumot jelez. Így az ep128emu audio file kezelését megvalósító libsndfile is ilyenként próbálja olvasni ezeket, és természetesen nem sikerül betölteni semmit. :evil: A fejlécben tárolt 44100 Hz is hibásnak tűnik, némi próbálkozás után 22050 Hz-en tudtam betölteni egy programot, legalábbis részben, mert a PRG részét már nem találta (ez lehet az időzítő vagy megszakítás emulációjának a hibája is). Tehát ha az ilyen formátum használata elterjedt, akkor file konvertálásra lesz szükség. :oops:

Snapshot eseten a formatum azonos reszei minden gepen azonosak? Pl Z80 blokk az total ugyanolyan TVC, EP128, CPC, stb snapshot-ban? Azert is kerdem, mert probalnam az Xemu-ban levo Z80 state load/save handler-t vele kompatibilisre irni, igy legalabb van egy kis kozos nevezo :-]

A Z80 az például azonos minden gépnél. A fileio.hpp tartalmazza az összes blokk típust, nem mindegyik ténylegesen használt:

0x00000000 - file vége (üres blokk)
0x45508001 - Z80 állapot: Enterprise, CPC, Spectrum, TVC
0x45508002 - memória: Enterprise
0x45508003 - I/O állapot (a portokra utoljára írt értékek): Enterprise, TVC
0x45508004 - DAVE: Enterprise
0x45508005 - NICK: Enterprise
0x45508006 - debugger töréspontok (nem használt)
0x45508007 - emulátor konfiguráció (minden géphez, snapshotban nem fordul elő ilyen)
0x45508008 - Enterprise gép konfiguráció (órajelek és időzítési paraméterek, csak demo file esetén)
0x45508009 - Enterprise gép állapot
0x4550800A - Enterprise demo (a demo formátum valójában minden gépnél azonos, bár EP esetén egér eseményeket is támogat)
0x4550800B - 6502 kompatibilis CPU állapota (csak a plus4emu használja)
0x4550800C - Plus/4 TED állapot (a memóriát is tartalmazza)
0x4550800D - Plus/4 gép konfiguráció (órajelek demo file-hoz)
0x4550800E - Plus/4 gép állapot (itt található a 6551 ACIA is)
0x4550800F - Plus/4 demo (ugyanaz a formátum mint az EP esetén, de az egér nem támogatott)
0x45508010 - Plus/4 .PRG file ep128emu bináris formátumban "csomagolva", nem sok gyakorlati haszna van, bár ha beépítem a plus4emu-ba a tömörített file támogatást, akkor az ezeken is működni fog
0x45508011 - SID hanggenerátor állapot: Plus/4
0x45508018 - SDEXT állapot és Flash/SRAM memória: Enterprise (később talán TVC is)
0x45508020 - Spectrum memória
0x45508021 - Spectrum I/O állapot (nem használt)
0x45508022 - Spectrum és CPC AY hanggenerátor állapot
0x45508023 - Spectrum ULA
0x45508024 - Spectrum gép konfiguráció csak demo file-okhoz
0x45508025 - Spectrum gép állapot
0x45508026 - Spectrum demo
0x45508027 - Spectrum .SNA file ep128emu formátumban
0x45508028 - Spectrum .Z80 file ep128emu formátumban
0x45508030 - CPC memória
0x45508031 - CPC I/O portok (nem használt)
0x45508032 - 6845 CRTC állapot: CPC, TVC
0x45508033 - CPC video megjelenítő állapot (nem használt)
0x45508034 - CPC gép konfiguráció demo file esetén
0x45508035 - CPC gép állapot
0x45508036 - CPC demo
0x45508037 - "csomagolt" CPC .SNA file
0x45508040 - TVC memória
0x45508041 - TVC video megjelenítő állapot (nem használt)
0x45508042 - TVC gép konfiguráció (csak demo file-ban)
0x45508043 - TVC gép állapot
0x45508044 - TVC demo


Az egyes gépek snapshotjaiban ténylegesen használt blokkok, és azok sorrendje (az első blokk típusából megállapítható az emulált gép):

Enterprise:
0x45508003 - I/O állapot (a portokra utoljára írt értékek): Enterprise, TVC
0x45508002 - memória: Enterprise
0x45508005 - NICK: Enterprise
0x45508004 - DAVE: Enterprise
0x45508001 - Z80 állapot: Enterprise, CPC, Spectrum, TVC
0x45508018 - SDEXT állapot és Flash/SRAM memória: Enterprise (később talán TVC is) (opcionális)
0x45508009 - Enterprise gép állapot (ha van SDEXT a snapshotban, akkor a blokk verzió - jelenleg 0x01000005 - 16. bitje beállított)
0x00000000 - EOF


CPC:
0x45508030 - CPC memória
0x45508032 - 6845 CRTC állapot: CPC, TVC
0x45508022 - Spectrum és CPC AY hanggenerátor állapot
0x45508001 - Z80 állapot: Enterprise, CPC, Spectrum, TVC
0x45508035 - CPC gép állapot
0x00000000 - EOF


Spectrum:
0x45508020 - Spectrum memória
0x45508023 - Spectrum ULA
0x45508022 - Spectrum és CPC AY hanggenerátor állapot
0x45508001 - Z80 állapot: Enterprise, CPC, Spectrum, TVC
0x45508025 - Spectrum gép állapot
0x00000000 - EOF


TVC (még fejlesztés alatt):
0x45508040 - TVC memória
0x45508003 - I/O állapot (a portokra utoljára írt értékek): Enterprise, TVC
0x45508032 - 6845 CRTC állapot: CPC, TVC
0x45508001 - Z80 állapot: Enterprise, CPC, Spectrum, TVC
0x45508043 - TVC gép állapot
0x00000000 - EOF


Plus/4:
0x4550800C - Plus/4 TED állapot (a memóriát is tartalmazza)
0x4550800B - 6502 kompatibilis CPU állapota (csak a plus4emu használja)
0x45508011 - SID hanggenerátor állapot: Plus/4
0x4550800E - Plus/4 gép állapot (itt található a 6551 ACIA is)
0x00000000 - EOF


Blokk formátum:
- típus (4 byte)
- adat méret (4 byte)
- adat
- ellenőrző összeg (4 byte), a típuson és adat méreten is számítani kell
Minden 8 bitesnél nagyobb értéknél a legmagasabb helyiértékű byte az első.

A 32 bites blokk ellenőrző összeg számítása:
- a kezdőértéke 1
- az adatot 4 byte-onként kell feldolgozni, ha a mérete nem 4 byte egész számú többszöröse, akkor a végén 0 byte-okkal kiegészítve
- minden 4 byte egy 32 bites előjel nélküli egész, itt (kivételesen) a legalacsonyabb helyiértékű byte az első
- az ellenőrző összeget XOR-olni kell a beolvasott 32 bites értékkel, majd szorozni 0xC2B0C3CC-vel; az új ellenőrző összeg a 64 bites eredmény alsó és felső 32 bitje közötti XOR művelet eredménye. Az EOF blokknál mindig 0x6A50085E lesz

A tömörített formátum leírása itt található, és ez a file végzi a kicsomagolását.
« Last Edit: 2016.December.04. 11:33:04 by IstvanV »

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #25 on: 2016.December.04. 12:20:09 »
Tehát ha az ilyen formátum használata elterjedt, akkor file konvertálásra lesz szükség. :oops:
Igazából .CAS formátum az elterjedt. Itt írnak erről, ill. a magnóhang felépítéséről.
Itt vannak konvertáló programok, forráskóddal.
Valamint az Operációs rendszer című könyv 13. fejezetében írnak részletesen a kazetta kezelőről. (Hasonlóan a mi nagy EXOS könyvünkhöz)

A legcélszerűbb az lenne, ha a CAS-t is belehetne rakni a "magnóba".

A MOPS-hoz is tudnak új eszközkezelőt hozzáadni a bővítőkártyák, ahogy azt a DISK-el megteszi a VT-DOS meg az UPM is. Így szerintem nem lenne nehéz a FileIO-ból is TVC verziót készíteni, nagyon hasonlóak a funkcióhívások mint az EXOS eszközkezelőknél.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: TVC64emu
« Reply #26 on: 2016.December.04. 20:22:06 »
A fejlécben tárolt 44100 Hz is hibásnak tűnik, némi próbálkozás után 22050 Hz-en tudtam betölteni egy programot

A 44100 Hz valójában helyes, az időzítő emulációja volt hibás. :oops:

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: TVC64emu
« Reply #27 on: 2016.December.04. 21:12:39 »
Még nem igazán használható, de fordítottam egy Windowsos teszt verziót:
[ Guests cannot view attachments ]     (szerk.: 16 színű mód javítva)

A támogatott RAM méretek:
- 48: TVC 32
- 80: TVC 64
- 128: TVC 64+
A szegmensek kiosztása (ROM konfiguráláshoz és debuggerhez):
- 00h: SYS ROM
- 01h: CART ROM
- 02h: EXT ROM (ez csak 8 KB)
- F8h..FBh: U0..U3 RAM
- FCh..FFh: video RAM (TVC 64+)
- FFh: video RAM (TVC 32, TVC 64)
Ha nem működik a billentyűzet, akkor be kell tölteni hozzá a konfigurációt (EP_Keyboard_HU.cfg vagy EP_Keyboard_US.cfg). :) OpenGL módban a video beállításoknál érdemes lehet a "pixel aspect ratio"-t 0.878-ra csökkenteni, mert az eltérő órajel miatt elvileg valódi gépen is valamivel szélesebbek a pixelek, mint EP-n. Snapshot mentés és töltés már támogatott, de a formátuma még változhat.

Egyéb változások:
* a debugger ablak átméretezhető, de csak kis mértékben
* az epcompress a korábban már említett újdonságok mellett néhány új paraméterrel is bővült:
- -fast: az emulátorban használt több szálú snapshot és PNG tömörítők engedélyezése, ezek azonban a legtöbb beállítást figyelmen kívül hagyják és csak "raw" módban működnek
- -X: a -9-nél is sokkal lassabb tömörítés ami nem biztos, hogy csökkenti a kimeneti file méretét. Általában nem hasznos, de például egy játék vagy demo fejlesztésénél akár <50 byte megtakarítása is számíthat
- -mz: ZLib/Deflate formátum használata, 32768-nál nagyobb -maxoffs esetén nem szabványos bővítésekkel. Ehhez azonban még nem írtam Z80 kicsomagoló rutint
« Last Edit: 2016.December.04. 22:03:33 by IstvanV »

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #28 on: 2016.December.04. 22:45:44 »
A floppy emulációt egyelőre nem tervezem
Azért megnézegettem, hogy mi az eltérés a WD1772 és a 1793 között.
A parancsok ugyanazok, szektor írás olvasásnál különbözik 2 flag bit, de ha jól sejtem az emulált floppyval ezek amúgy is figyelmen kívül voltak hagyva, a másik funkcióval (lemez oldal ellenőrzés) pont ugyanúgy figyelmen kívül hagyhatóak.
A Status registerben a Motor On helyett a meghajtótól érkező Ready jel van, de mivel az emulátorban úgyis mindig üzemkész a meghajtó, ezért gondolom fix érték van használva, a lényeg tök ugyanaz.
Ill. van még a Spin up flag ami helyett Head loaded van, a lényeg itt is ugyanaz.

Ha a TVC-s vezérlő az 1-es kártyahelyre kerül, akkor a 10-13h portok ugyanazok lesznek mint az EXDOS-on (WD registerek).
Az EXDOS 18h portja helyett itt 14h van. Itt van az egyetlen lényeges különbség, itt nem a 4. bit választja ki a lemezoldalt, hanem a 7.
Bit 0-3: meghajtó kiválasztás (mint az EXDOS-on)
Bit 4: fej leengedés (ez kapcsolhatja a Head loaded status bitet) =1 fej leengedve
Bit 5: =0 a DD-hez (mint az EXDOS-on), emulátoron nincs szerepe
Bit 6: =1 a motor bekapcsoláshoz (ebből jöhet a Ready status)
Bit 7: oldal kiválasztás

18h port pedig a DOS ROM lapozás, 00h,10h,20h,30h értékekkel.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #29 on: 2016.December.04. 23:21:13 »
Még nem igazán használható, de fordítottam egy Windowsos teszt verziót:
Működik!
Itt egy kezdő ROM csomag.