Welcome, Guest. Please login or register.


Author Topic: TVC64emu (Read 16103 times)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13534
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #60 on: 2016.December.06. 10:39:26 »
Elvileg az, ha 128K RAM van beállítva, egyébként nem. A CART ROM csak akkor látható, ha az SDEXT emulációja tiltott.
Ez mind meg van. (másik cart elindul)

Quote
Az UPM emulációjával nem foglalkoztam :oops:, itt van valamilyen hardver különbség?
Teljesen ugyanaz a vezérlőkártya, csak a ROM tartalom más. Arra gondolok, hogy használhat valami olyan WD bitet, amit a DOS nem.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13534
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #61 on: 2016.December.06. 10:47:47 »
floppyvezérlő+cartridge verzióban meg azt mondja, hogy nem látja a cartridge-t.
Debugerben néztem, induláskor a MOPS az látja, le is fut belőle valami inicializáló rutin, de a DOS parancs kiadásakor nem is nyúl hozzá.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13534
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #62 on: 2016.December.06. 11:11:57 »
ROM visszafejtések Sebestyén Páltól:
Lemezvezérlőn lévő DOS ROM.
DOS cartridge

Úgy néz ki megvan:
A DOS Cartridge-ben ez fut le, megkeresi a lemezvezérlőt, és beleír a RAM-jába.
Code: ZiLOG Z80 Assembler
  1.         .org    0C000h
  2. ;
  3.         .db     "MOPS"
  4. ;
  5.         ld      a,030h                  ; U0,U1,U2,CART lapozás
  6.         out     (002h),a                ; memórialapozás beállítása
  7.         exx
  8.         ld      hl,00048h               ; HL' a 0. interfészkártya RAM területére mutat
  9.         ld      de,00030h
  10.         in      a,(05Ah)                ; kártyaazonosító port beolvasása A reg.-be
  11.         ld      b,h                     ; B'= csatlakozó sorszáma (0)
  12. LC012:  ld      c,a
  13.         and     003h
  14.         cp      002h                    ; floppy csatoló keresése a kártyaazonosító bájtban
  15.         jr      z,LC053                 ; ugrás, ha megtalálta
  16.         ld      a,c                     ; egyébként az azonosító bájt léptetése a következő kártyahelyre
  17.         rrca
  18.         rrca
  19.         inc     b
  20.         add     hl,de                   ; HL' a következő csatoló RAM területére mutat
  21.         inc     h
  22.         dec     h
  23.         jr      z,LC012                 ; ismétlés, amig nem haladta meg a 4. csatoló memóriacímét
  24. LC022:  exx
  25.         ld      hl,0FFEAh               ; HL= -22
  26.         add     hl,de                   ; HL= 00322h (DE belépéskor a SYS ROM-ban egy "MOPS" szöveg utánra mutatott)
  27.         ld      a,020h                  ; SYS,U1,U2,CART lapozás
  28.         out     (002h),a                ; memórialapozás beállítása
  29.         jp      (hl)                    ; visszatérés a rendszer ROM-ba
  30. ;
  31.  
  32.  
  33.  
  34. LC02C:  .db     "VT-DOS  "
  35.         .db     "Copyright (1986) IS Systems Ltd"
  36.  
  37.  
  38. LC053:  ld      a,b                     ; A reg.= floppy illesztőt tartalmazó csatlakozó sorszáma
  39.         rrca
  40.         rrca
  41.         out     (003h),a                ; a csatolónak megfelelő IOMEM kiválasztása
  42.         ld      de,LC02C                ; DE= a "VT-DOS  " szövegre mutat
  43.         ld      b,006h
  44. LC05D:  ld      a,(de)                  ; szöveg ellenőrzése
  45.         cp      (hl)                    ; HL= a diszk illesztő MOPS-os RAM területére mutat
  46.         jr      nz,LC022                ; visszatérés a ROM-ba, ha nem egyezik (pl. a floppy rendszer nem inicializálódott, vagy nem VT-DOS-os)
  47.         inc     hl                      ; összehasonlítandó szövegek mutatóinak növelése
  48.         inc     de
  49.         djnz    LC05D                   ; ismétlés 6 karakterre
  50.         ld      a,(00B1Bh)              ; A reg.= P3RAM változó
  51.         or      a
  52.         jr      nz,LC022                ; ugrás, ha hibás az U3-as RAM lap (vagy csak 32kB-os a gép)
  53.         ld      a,038h                  ; U3,U1,U2,CART lapozás
  54.         out     (002h),a                ; memórialapozás beállítása
  55.         ld      hl,LC08B                ; HL= átmásolandó memóriaterület kezdete
  56.         ld      de,PG0ADR(LC08B)        ; DE= célcím az U3 RAM-ban a 0. lapon
  57.         ld      bc,U3COPY_END - LC08B   ; BC= másolandó hossz (majdnem a teljes 16kB-os ROM)
  58.         ldir                            ; memóriatartalom átmásolása
  59.         ld      hl,LFF09                ; HL= megszakításkiszolgáló második lehetséges belépési pontjának címe
  60.         ld      (PG0ADR(LFDFD +1)),hl   ; cím beállítása az LFDFD címen lévő "JP xxxx" utasítás paraméterébe
  61.         call    PG0ADR(LE644)           ; adat betöltése a floppy RAM-ból A reg.-be, megszakítások tiltása
  62. ;
  63.         .dw     0DFF2h                  ; DOSCART változó címe
  64. ;
  65.         or      a
  66.         jr      z,LC022                 ; visszatérés, ha DOSCART = 000h
  67.         jp      PG0ADR(LC08B)           ; ugrás a 0.lapon lévő U3 RAM-ba (megegyezik a ROM következő tartalmával)

Ha jól nézem az 5Ah port olvasásánál bukik a dolog, ott FFh jön az emun.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
Re: TVC64emu
« Reply #63 on: 2016.December.06. 11:17:23 »
Tehát mivel a 0. csatlakozón floppy van, a többi pedig üres, FEh-t (11 11 11 10) kellene olvasni?

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13534
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #64 on: 2016.December.06. 11:19:05 »
Tehát mivel a 0. csatlakozón floppy van, a többi pedig üres, FEh-t (11 11 11 10) kellene olvasni?
Így van, ezt akartam én is éppen írni.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13534
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #65 on: 2016.December.06. 11:21:58 »
Lehet, hogy ez lesz az UPM baja is, az is 5Ah-t olvassa.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13534
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #66 on: 2016.December.06. 23:30:15 »
Nem tudom, hogy különböző időzítések mennyire vannak emulálva, egyáltalán tart-e már a dolog ilyen finomhangolási kérdéseknél :oops:

Az SD-n lévő DEMO4-et futtatva ez jön ki:
16796-0

Valódi gépen 23.94 másodperc, és 9.9 kép/sec. Stopperrel mérve is ~24 másodperc.

Egymás mellé tettem az emut és a valódi gép képét, semmilyen érzékelhető különbség nincs, egyszerre indítva, egyszerre végeznek. (A többi demónál se érzékeltem különbséget.)
Pali ezt a tippet írta:
Quote
a videólejátszó a kurzor megszakításról átkapcsol hang megszakítási módba. Ez kb. 5kHZ-10kHz-es megszakításokat eredményez, ami a PCM hang lejátszásához szükséges. Ezen a megszakításon alapul a lejátszási idő mérése. Ha valami hiányosság van még ezek implementációjában, akkor lehet ez is az oka.
Attól függ, hogy lejátszás közben mit tapasztaltok: szaggat-e a lejátszás és a 9 kép/s tényleg reális, vagy folyamatosan játszik le, csak az időmérés kavar be.

Tehát a lejátszás az teljesen jó, egyforma a valódi géppel, a mért idő lesz a valódinál kb 2.1 másodperccel több.

Itt megjegyeznék egy érdekességet: a valódi gép ezt a tempót csak egy modern SDHC kártyával hozza. Egy régebbi 128 megás micro SD esetén jól láthatóan lassul, a mért eredmény is 7.4 kép/sec-re esik vissza. Vagyis még ilyen Z80-as környezetben is tud számítani az egyes kártyák tempója.
Ezt már az EP-s felhasználás esetén is sejtettem, csak mérés nem volt még rá.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13534
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #67 on: 2016.December.06. 23:48:45 »
És még egy apróság: videó rögzítésekor csak egyik oldalra tesz hangot. Hangrögzítésnél jó, ott mindkét oldalra.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
Re: TVC64emu
« Reply #68 on: 2016.December.07. 13:46:03 »
És még egy apróság: videó rögzítésekor csak egyik oldalra tesz hangot. Hangrögzítésnél jó, ott mindkét oldalra.

Ezt már javítottam. A demo valójában a kurzor megszakítást használja időmérésre, azonban valamilyen okból minden 10. képnél két magszakítás történik. Ezeket az időket mértem a megszakítások között:
Code: [Select]
20.094080 milliseconds
20.090240 milliseconds
20.086400 milliseconds
8.187520 milliseconds
11.899520 milliseconds
20.089600 milliseconds
20.096000 milliseconds
20.090240 milliseconds
20.086400 milliseconds
20.091520 milliseconds
20.093440 milliseconds
20.094080 milliseconds
20.090240 milliseconds
20.085120 milliseconds
8.187520 milliseconds
11.899520 milliseconds
20.089600 milliseconds
20.096000 milliseconds
20.090240 milliseconds
20.086400 milliseconds
20.090880 milliseconds
...

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13534
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #69 on: 2016.December.07. 13:54:19 »
Ezt már javítottam. A demo valójában a kurzor megszakítást használja időmérésre
Akkor lehet, hogy a hangmegszakításos dolog a Demo5-re érvényes, itt van már hang is. Ezt is összenézem majd a valódi TVC-vel.

Quote
azonban valamilyen okból minden 10. képnél két megszakítás történik.
Izgalmas :oops:

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
Re: TVC64emu
« Reply #70 on: 2016.December.07. 14:33:03 »
Ez CRTC problémának tűnik, ha letiltom a kurzor kimenetet keretnél, az javítja, legalábbis így 23.76 másodperc lesz, ami valamivel gyorsabb a valódi gépnél, de ezt az emulált SD kártya is okozhatja. A dokumentáció szerint is "this output is inhibited while DISPTMG is at 'Low' level", de a CRTC emulációt eredetilg CPC-hez írtam, ahol a kurzor kimenet nem használt. :oops:

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13534
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: TVC64emu
« Reply #71 on: 2016.December.07. 14:52:37 »
legalábbis így 23.76 másodperc lesz, ami valamivel gyorsabb a valódi gépnél, de ezt az emulált SD kártya is okozhatja.
Igen eredendően erre számítottam, hogy gyorsabb lesz valamivel. De mint kiderült a valódi gépet is befolyásolja, hogy a kártya milyen gyors, így szerintem ennyi pici eltérés belefér.

Ha már CRTC-nél tartunk, pláne most, hogy beleástad magad a TVC-be is :-)
Az miért van, hogy ugyan az a chip CPC-n 640x200 max felbontást tud, TVC-n meg 512x240. Azt a részt értem, hogy mindkét helyen arra lőtték be a dolgot, hogy a 16K-s videó lapba beleférjenek.
Ez programozáson múlik, vagy a környező hardveren? Azaz lehetséges lenne-e TVC-ből kihozni a CPC felbontást, alkalmassá téve CPC programok átírására?
CPC-n beszélnek overscan módról ahol 384x (4 szín mód) lesz a felbontás, vagyis lehet trükközni a beállításokkal, persze nem tudom, hogy TVC-n menne-e. Egyébként a cpcemu az támogatja az ilyen trükközéseket?

Offline geco

  • EP addict
  • *
  • Posts: 5431
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 45.0 Firefox 45.0
    • View Profile
Re: TVC64emu
« Reply #72 on: 2016.December.07. 15:04:33 »
Ez programozáson múlik, vagy a környező hardveren? Azaz lehetséges lenne-e TVC-ből kihozni a CPC felbontást, alkalmassá téve CPC programok átírására?
CPC-n beszélnek overscan módról ahol 384x (4 szín mód) lesz a felbontás, vagyis lehet trükközni a beállításokkal, persze nem tudom, hogy TVC-n menne-e. Egyébként a cpcemu az támogatja az ilyen trükközéseket?
TVC-n is lehet szélesebb a kép, csak macerás a címzés kialakítása miatt, pl a Firebow 40 karakter széles karaktersorban scrolloz.
A szélesebb képhez még egyszer meg kell etetni valamit még a CRTC-vel, hogy a 32 feletti részt honnan vegye, már nem emléxem rá hogy volt :(

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
Re: TVC64emu
« Reply #73 on: 2016.December.07. 15:08:43 »
Az miért van, hogy ugyan az a chip CPC-n 640x200 max felbontást tud, TVC-n meg 512x240. Azt a részt értem, hogy mindkét helyen arra lőtték be a dolgot, hogy a 16K-s videó lapba beleférjenek.

A különbséget az okozza, hogy a CRTC kimeneteiből a hardver hogyan generálja a tényleges video címet.

TVC:

A14, A15 = lapozható (0C-0Fh port)
A8..A13 = CRTC MA6..MA11
A6, A7 = CRTC RA0, RA1 (ezért kell 4 pixel magas "karaktereket" beállítani)
A0..A5 = CRTC MA0..MA5 (innen az 512 szélesség 2 színű módban)

CPC:

A14, A15 = CRTC MA12, MA13 (ezeket általában a 3. lapra állítják be, de valójában nem csak 16K címezhető)
A11..A13 = CRTC RA0..RA2 (ezért növekszik a cím 0800h-al soronként)
A1..A10 = CRTC MA0..MA9
A0 = a gate array generálja

A CRTC-t karakteres video megjelenítéshez tervezték, az "MA" kimenetei a karakter pozíciót adják meg, az "RA" kimenetek pedig a karakteren belüli pixel sort. A TVC-s megoldással a "szabványos" felbontásnál lineáris a címzés, de kevésbé rugalmas, ha meg is oldható 32 karaktertől eltérő szélesség, valószínűleg csak nehezen. CPC-n egyszerűen lehet tetszőleges méretet beállítani ha a kép elfér 16K-n, és karakter felbontással scrollozni is könnyű, de hátránya a Spectrumhoz hasonlóan "kevert" bites címzés.

Offline lgb

  • EP addict
  • *
  • Posts: 3497
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://lgb.hu/
Re: TVC64emu
« Reply #74 on: 2016.December.07. 15:54:29 »
Az az erdekes ebben a CRTC-ben, hogy nehez osszehasonlitani egy "klasszikus ertelmben vett video chip" megoldassal, tudomisen mint pl a VIC-II vagy a Nick. Ez utobbiak kozvetlenul valami video jelet, vagy arra legalabbis kozvetlenul atalakithato dolgot adnak ki magukbol. A CRTC nem, az csak cimeket allit elo, meg egy par szignalt ami azert "hasznos" (pl SYNC). Ugyanakkor az, hogy a CRTC altal eloallitott cimeket mire kepzi le a rendszer, hany pixelnek fele meg, B&W/szines, akarmi, az lehet barmilyen viszony, mivel errol a CRTC nem szol, az csak egy egyszeru "cimgenerator" vegulis, ha ezt a reszet nezzuk szigoruan. Ha jol remlik CRTC (vagy vmelyik rokona) van amugy pl CGA, Hercules, EGA sot talan VGA kartyakon is, de ettol fuggetlenul persze tok valtozo, hogy ez milyen felbontast, modokat, szinek szamat, stb jelent, mivel az mar kulso aramkorokon mulik. Elvileg akar HD felbontas is lehetne CRTC-vel ha egy cimre tobb pixelt general a "kulso cucc" pl, vagy tobb bitet cimez meg a videoramban mint a szokasos, vagy akarmi. Legalabbis bennem ez a kep alakult ki a CRTC mukodeserol :)