Welcome, Guest. Please login or register.


Author Topic: Xep128 (Read 164827 times)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Xep128
« Reply #180 on: 2016.February.23. 09:29:42 »
Vakegér kérdések: Biztosan bele akarsz írni a COBUF-ba és nem csak át akarod adni SHORT_HELP címét? És az a COBUF elé írás biztosan teljesen jó lesz?

Igen, biztosan :) A COBUF az EP altal cimezheto tartomanyban van, hogy utana a nyulfarknyi XEP ROM kod Z80/EP szinten el tudja irni. Ha csak a cimet adnam at, az nem segitene, mert egy C pointerrel sokra megy szegeny Z80 :) A COBUF ele iras szandekos, azert van a macronal is +2 a "kerek" szamhoz kepest. Amugy is, ezzel magaval nincs gond. Ha ezzel lenne gond, semmi mas nem menne. De mint mondtam, megy minden ezzel a modszerrel, :XEP parancsok, a :HELP is ha specifikus (pl :XEP HELP) egyedul a "sima, csak :HELP" nem. Minden mas oke. Es amugy mint lathato pedig az kozos resz a C kodban is.

Code: C
  1. #define COBUF ((char*)(memory + xep_rom_addr + 0x3802))

A Z80 oldalrol meg:

https://github.com/lgblgblgb/xep128/blob/master/xep_rom.asm

Code: ZiLOG Z80 Assembler
  1. LD DE, 0xF800 ; the ED trap modifies memory from here

Innen nez egy word-ot, a kiirando hosszra, utana a string. Lathato, hogy a fenti C-ben levo macro pont azert van +2 -vel, igy ott COBUF-hoz kepest -1 es -2 a length parameter. De mint mondtam az elv remekul megy mindig, kiveve, ha altalanos :HELP -et ker az ember, akkor van baj egyedul!

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Xep128
« Reply #181 on: 2016.February.23. 09:36:48 »
A-t kéne nulláznod, BC, DE változatlan kell legyen.

Csak ott valtozik, ahol SET_A(...) vagy SET_C(...) van, kulonben marad ugyanaz, ami volt az ED trap utasitas elott. A fuggvenyben a "de" stb valtozo csak C program valtozo (hogy ne kelljen mindig lekerni a z80ex CPU emulatortol hogy micsoda ...), csak a fenti SET_ ... dolgok allitanak barmit a Z80 szamara. Az xep_exos_command_trap() fuggvenyben csak ilyenkor valtozik Z80 regiszter a trap vegrehajtasa soran.

Erdekes, amugy eskuszom tegnap kinomban kiprobaltam A nullazast, C-t, mindkettot egyiket sem es sehogy nem volt jo ... Most tancsodra az altalanos help-nel csak az A nullazasa utan jonak tunik, ami vegulis egyetlen SET_A(0) beszurasat jelentette, pl ebben a commit-ban:

https://github.com/lgblgblgb/xep128/commit/decccb264895e57f9e3fd77af2b42cf7686b4d26

Amugy mi tortenik, ha ilyenkor az A-t nem nullazod, ez mar kivancsisag inkabb, akkor miert "fagy be az egesz", mit csinal az EXOS olyankor?
« Last Edit: 2016.February.23. 09:44:34 by lgb »

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Xep128
« Reply #182 on: 2016.February.24. 02:13:22 »
http://xep128.lgb.hu/files/xep128-sdflash.exe

Hat, ez most igy igen amator, de a FLASH.ASM-ot leforditva, majd futtatva rajta egy olyan flash.rom-ot alatolva, amiben atirtam a verzioszamot :) a reset utan (pause/break gomb a Xep128-nak) mar azt a verzioszamot mutatta, tehat valamennyire muxik, ugy tunik. Viszont a Xep128 ezt nem fogja elmenteni disk-re, tehat legkozelebb a combined.rom -ot toltve ugye ujra az eredeti van. Csak amig fut az emulator, addig latszik az "ujra-flash-eles" eredmenye.

Azon csodalkozom, hogy megy, mert a data status polling sincs implementalva, az erase/suspend sem, es az ID stb lekerdezes se :-/ Legalabbis most meg nincs.

Sajna az ep128emu-ba igy se nagyon tudnam berakni, eleg durvan at kellett irni a Xep128-ban is az sdext emu reszt, arra nem feltetlenul vallalkoznek, hogy oda is megprobaljam ... Azert ma esti programnak jo volt ez is :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Xep128
« Reply #183 on: 2016.February.24. 14:30:06 »
Hat, ez most igy igen amator, de a FLASH.ASM-ot leforditva, majd futtatva rajta egy olyan flash.rom-ot alatolva, amiben atirtam a verzioszamot :) a reset utan (pause/break gomb a Xep128-nak) mar azt a verzioszamot mutatta, tehat valamennyire muxik, ugy tunik. Viszont a Xep128 ezt nem fogja elmenteni disk-re, tehat legkozelebb a combined.rom -ot toltve ugye ujra az eredeti van. Csak amig fut az emulator, addig latszik az "ujra-flash-eles" eredmenye.
Itt van ROM csomag, amivel lehet tesztelni.
Quote
Azon csodalkozom, hogy megy, mert a data status polling sincs implementalva, az erase/suspend sem
Erase külön nincs ellenőrizve, csak a végén, hogy sikerült-e az írás.
Quote
, es az ID stb lekerdezes se :-/ Legalabbis most meg nincs.
Az még a Flash progiban sincs benne :oops:

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Xep128
« Reply #184 on: 2016.February.24. 15:55:33 »
Nekem mux ... FB-t megflash-eltem a FLASH.COM-al a Xep128 alatt, utana reset utan egyreszt nemet karaktereket irogatott nekem, masreszt volt egy rakas nemet szoveg a :HELP -ben is, amit nem is ertek ... :)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Xep128
« Reply #185 on: 2016.March.02. 21:15:00 »
Akinek meg nincs elege a hulysegeimbol es szeretni kicsit tamogatni :) az kitalalhatna egy Xep128 logot. Mert az app icon SDL2 szinten legalabbis a szokasos UFO-fejem (na jo, o Thor a StarGate-bol aki nem ismerne fel a kerdeses asgard-ot ...), de ez ugye egyreszt bekepzeltseg, hogy "sajat" (nem is sajat ...) "avataromat" hasznalom, masreszt nem is epp idealis. Mivel en rajzolni nem tudok, kozismert, hogy kepzeloerom az nulla, ezert ha valakinek van kedve, igazan alkothatna valamit. 96*96 pixeles stuff kene (szoval nem web oldalra logo - de jeeeee jo otlet, az is johet .... - hanem ilyen kis mini app icon ....). Azt mondjuk nem tudom, hogy amugy Windows-on ebbol latszik-e vmi.

Ha nincs erdeklodes, akkor nem szoltam, es bocsanat a koldulasert :-) Persze, GNU/GPL-be helyezheto stuff kell licenc ugyileg ugyebar. Koszi a figyelmet.

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Xep128
« Reply #186 on: 2016.March.02. 21:35:58 »
eleve a név rossz :)
web emu, valami ilyesmi kéne
EP gomb W betű? :)
Vigyázat! Szektás vagyok! :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Xep128
« Reply #187 on: 2016.March.02. 21:37:33 »
web emu, valami ilyesmi kéne
Miért is, amikor ez nem web emu? :oops:
Az egy másik projektje :-)

Ha EP gomb, akkor az X :-)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Xep128
« Reply #188 on: 2016.March.02. 22:06:55 »
Az egy másik projektje :-)

Jol van na, tudom, tele vagyok felbehagyott project-ekkel :-P

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Xep128
« Reply #189 on: 2016.March.02. 22:15:05 »
ja akkor má keverem őket...
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Xep128
« Reply #190 on: 2016.March.02. 22:19:01 »
Igen, mondjuk EP gomb X. Mint az EP128Emu-é, csak nem E lenne rajta, hanem X. Vagy mint Lacika honlapjának a logója, zöld négyszög alapon X bötű.
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: Xep128
« Reply #191 on: 2016.March.06. 20:50:35 »
Inkabb atjottem ide, mivel ez mar "kisse" Xep128 specifikus tema :)

A Boulder Dash nem működik a 4 színű karakteres mód hiánya miatt. :oops:

:) Az lehet, a nick resz elegge szedett-vetett, csak "odapiszkitottam" ami ugy altalaban kell video/colour mode, hianyos ... JSep-ben tobb van (emlekeim szerint Boulder Dash is megy azon jol), de pont az volt az eredeti tervem is, hogy majd ugyis ujrairom az egeszet :) A Boulder Dash-t konkretan pl JSep-n emlekszem teszteltem, Xep128-nal eddig inkabb az volt a celom, hogy igy "mukodjon valamennyire", es kesobbre gondoltam ezeket a dolgokat megcsinalni. Foleg, mivel JSep eseten egyedi, hogy webesben nem nagyon van meg EP128 emulator, mig ugye nativ alkalmazasban mar van joval hasznalhatobb is, az ep128emu :)

Az interlace-es meglatast koszi, bar ahogy en kezelem vsync-et az mar eleve durva :-D

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Xep128
« Reply #192 on: 2016.March.07. 12:44:29 »
:) Az lehet, a nick resz elegge szedett-vetett, csak "odapiszkitottam" ami ugy altalaban kell video/colour mode, hianyos ...

A hiányzó módok könnyen megvalósíthatók, a többségük valamelyik már létező mód másolata pár sor módosítással. :) Ezeken kívül video RAM időzítéssel már elég pontos lenne, illete a legnagyobb még hiányzó rész a hang emuláció, de annak a hiánya nem akadályozza a programok futását. Valójában az ep128emu EP emulációja sem igázán pontos (a CPC és különösen a Plus/4 esetében több figyelmet fordítottam erre) :oops:, csak az EP-s programok sokkal kevésbé érzékenyek erre, mint például a Commodore gépekre írt demók.

Quote
Az interlace-es meglatast koszi, bar ahogy en kezelem vsync-et az mar eleve durva :-D

Hasonlónak tűnik az ep128emu-ban használt megoldáshoz, azzal az eltéréssel, hogy ott csak az számít VSYNC-nek, ha legalább egy slot aktív (nem keret), de ez még mindig nem pontos, mert valódi TV-n elég hosszúnak is kell lennie ahhoz, hogy függőleges visszafutást eredményezzen. Az előbbi interlace hack nem igazán jó megoldás (például a kép első és utolsó sorát nem rajzolja újra, és a nick.c-ben az "interlace" változót csak a VSYNC bekapcsolásakor kellene állítani), de arra alkalmas, hogy néhány sor módosítással ki lehessen próbálni az effektust.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Xep128
« Reply #193 on: 2016.March.07. 19:39:33 »
A hiányzó módok könnyen megvalósíthatók, a többségük valamelyik már létező mód másolata pár sor módosítással. :)

Tudom, JSep-ben meg is csinaltam :) Csak itt nem tartottam eddig fontosnak, mert alapvetobb gondok is vannak (ez persze az en preferenciam, lehet mas ezt maskepp latja). Aztan, mint mondtam, ugyis ujrairom rendesen a Nick reszt. Mivel a Xep128-at hasznalnam fejleszteseknel stb, engem most jobban zavar, hogy nem lehet configolni, parancssoros opciokat adni, eleg kenyelmetlen, hogy honnan szedi a ROM-ot, meg csak egyben lehet, stb, tehat ilyen configuracios kerdesek "zaklatnak" most. Configuracio alatt config file-t ertek azert, nem igazan GUI-t ;) Oszinten, az nekem sose hianyzott. Csak bonyolitja a dolgokat :)


Quote
Ezeken kívül video RAM időzítéssel már elég pontos lenne

No igen, az tenyleg hatra van, arra meg ra se neztem, de emlekszem, hogy egyszer mar regeltel rola, vmi 4.5-os dolog volt vagy hasonlo :)

Quote
illete a legnagyobb még hiányzó rész a hang emuláció, de annak a hiánya nem akadályozza a programok futását.

Hat a hang nalam total K.O. Otletem sincs, hogy kene megoldani. Mert ugye az egy dolog, hogy az ember lejatszik egy WAV-ot. A problema itt az, hogy Z80 kod piszkalja a Dave-et, kozben maga az emulator persze nyilvan nem allandoan fut (multitasking stb, neha sleep-el), es jobb esetben :) gyorsabb a Z80 emu mint a valodi Z80 (azert - is - kell ugye sleep-elni idonkent egyet), ugyanakkor az eloallitott hangnak azert normalisnak kell lennie. A sleep viszont sose lesz teljesen pontos, az meg a masik. Hogy ezt hogy lehet osszehozni, hogy pontos hang legyen, es raadasul akadasmentesen, az most igy hirtelen nem all ossze a fejemben. Foleg, hogy igy is a Z80 orajelbol van szarmaztatva a Dave-e (/16 vagy hat /24 attol fugg mit ir az ember a BF portra), a Nick pedig egy lebegopontos cuccossal van a Z80 orajelhez "szinkronizalva", de ugye ez azt is jelenti, hogy azert 1-2 nick slot-ttal mindig pontatlan lesz, mert azt nezi, hogy utolso opcode X cycle, abba belefert-e volna mar 1 (vagy tobb ...) Nick slot, ha igen, megcsinalja. Csak a tort ertek miatt is kell a lebegopontos cucc. Ez mondjuk a main fuggvenyben latszik, meg van az a SCALER nevu cucc, az irja le a Z80 es a Nick (slot frekvencia) aranyat, amihez probal idomulni. Na, ha ebbe meg bejon az is, hogy a lejatszas frekvenciajahoz is kell valahogy a Dave altal elkovetett dolgokat illeszteni, meg puffereles is van nyilvan, meg ne is akadjon stb, haaaaaaaaaaaaaaaaaaaaaaat :)

Quote
Valójában az ep128emu EP emulációja sem igázán pontos (a CPC és különösen a Plus/4 esetében több figyelmet fordítottam erre) :oops:, csak az EP-s programok sokkal kevésbé érzékenyek erre, mint például a Commodore gépekre írt demók.

Na igen. Tenyleg, Plus4 emulator mennyire pontos? Nem allitom, hogy nagyon ertenek a Plus4-hez, de pl a YAPE szerzoje nagyon kiemeli hogy "non-nonsense" emulator :) Meg talan arrol is volt szo, hogy a VICE-ban levo mennyire "rossz". A TED idoziteserol stb sokat nem tudok, max az remlik, hogy valtozik a CPU orajele eleg rendesen attol fuggoen, hogy aktiv kepkijelzeses resz van, vagy nem, de kb ennyi :) Az ep128emu-ban levo Plus4 emulator mennyire jo?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Xep128
« Reply #194 on: 2016.March.08. 08:24:18 »
No igen, az tenyleg hatra van, arra meg ra se neztem, de emlekszem, hogy egyszer mar regeltel rola, vmi 4.5-os dolog volt vagy hasonlo :)

A 4.5 az a Z80 ciklusok száma 1 NICK slot alatt, közelítően (4000000 / 889846 = 4.49516). Én alapvetően úgy oldottam meg, hogy minen VRAM és NICK port hozzáférésnél várni kell a következő NICK slotig, 1/2 Z80 ciklus felbontással. Ezen kívül van még egy fix késleltetés is, ami kb. 5/16 NICK slot + egy néhány ns-os érték (ami függ a hozzáférés típusától, azaz kissé eltér M1, normál írás/olvasás, és port I/O esetén, de ez minimális mértékű). Itt található egy program, amellyel tesztelhető a VRAM időzítés, Zozosoft több valódi gépről is küldött eredményeket, amelyekkel az emulátorok összehasonlíthatók.

A megvalósításnál problémát jelenthet az, hogy a Z80 utasításokon belüli időzítés is fontos, azaz hogy pontosan mikor történnek az egyes memória és I/O műveletek (pl. az OUT (C), A utasításnál 2.0, 6.0, és 11.5 ciklusnál), nem tudom, a z80ex támogatja-e ezt.

Quote
Hat a hang nalam total K.O. Otletem sincs, hogy kene megoldani. Mert ugye az egy dolog, hogy az ember lejatszik egy WAV-ot. A problema itt az, hogy Z80 kod piszkalja a Dave-et, kozben maga az emulator persze nyilvan nem allandoan fut (multitasking stb, neha sleep-el), es jobb esetben :) gyorsabb a Z80 emu mint a valodi Z80 (azert - is - kell ugye sleep-elni idonkent egyet), ugyanakkor az eloallitott hangnak azert normalisnak kell lennie. A sleep viszont sose lesz teljesen pontos, az meg a masik. Hogy ezt hogy lehet osszehozni, hogy pontos hang legyen, es raadasul akadasmentesen, az most igy hirtelen nem all ossze a fejemben. Foleg, hogy igy is a Z80 orajelbol van szarmaztatva a Dave-e (/16 vagy hat /24 attol fugg mit ir az ember a BF portra), a Nick pedig egy lebegopontos cuccossal van a Z80 orajelhez "szinkronizalva", de ugye ez azt is jelenti, hogy azert 1-2 nick slot-ttal mindig pontatlan lesz, mert azt nezi, hogy utolso opcode X cycle, abba belefert-e volna mar 1 (vagy tobb ...) Nick slot, ha igen, megcsinalja. Csak a tort ertek miatt is kell a lebegopontos cucc. Ez mondjuk a main fuggvenyben latszik, meg van az a SCALER nevu cucc, az irja le a Z80 es a Nick (slot frekvencia) aranyat, amihez probal idomulni. Na, ha ebbe meg bejon az is, hogy a lejatszas frekvenciajahoz is kell valahogy a Dave altal elkovetett dolgokat illeszteni, meg puffereles is van nyilvan, meg ne is akadjon stb, haaaaaaaaaaaaaaaaaaaaaaat :)

Erről néhány oldallal korábban írtam, az ep128emu-ban gyakorlatilag a hang lejátszás lassítja 100% sebességre az emulációt. Ez a legegyszerűbb esetben annyit jelent, hogy ahol eredetileg usleep() vagy hasonló hívás volt, ott helyette arra vár, hogy legyen hely a hang pufferben. Ez azonban nem ad igazán jó eredményt, az audio puffer gyakran túl nagy ahhoz, hogy jó felbontással lehessen időzíteni, ezért így könnyen előfordulhat, hogy láthatóan és zavaróan akadozik a kép pl. scrollozásnál. Ezt a problémát úgy oldottam meg, hogy a hang kimenetre várakozást kombináltam a gettimeofday/usleep-es időzítéssel, azaz az utóbbinak a sebessége változik az audio puffer állapotától függően (100% sebesség ha 50%-ig van tele a puffer, ha ennél több, akkor lassul az emuláció, ha kevesebb, akkor pedig gyorsul, illetve ha nagyon kevés akkor nincs is várakozás hogy elkerülje az esetleges underrun-t):
Code: C++
  1.         long    framesToWrite = Pa_GetStreamWriteAvailable(paStream);
  2.         switch (int((framesToWrite << 3) / latencyFramesHW)) {
  3.         case 0:
  4.           periodTime = periodTime * 2.0;
  5.           break;
  6.         case 1:
  7.           periodTime = periodTime * 1.25;
  8.           break;
  9.         case 2:
  10.           periodTime = periodTime * 1.1;
  11.           break;
  12.         case 3:
  13.           periodTime = periodTime * 1.05;
  14.           break;
  15.         case 4:
  16.           periodTime = periodTime * 0.95;
  17.           break;
  18.         case 5:
  19.           periodTime = periodTime * 0.9;
  20.           break;
  21.         default:
  22.           timer_.reset();
  23.           nextTime = 0.0;
  24.           periodTime = 0.0;
  25.           break;
  26.         }

Quote
Na igen. Tenyleg, Plus4 emulator mennyire pontos?

Meglehetősen pontos, legalábbis a külön "plus4emu" változat (a régebbi ep128emu beta Plus/4 emulációja kissé elavult), amikor még fejlesztettem, legalább annyira jó volt, mint a YAPE. A 6502 és a TED emuláció pontosságán nagyon sokat már nem lehetett volna javítani, és az 1541-es floppy drive is megfelelő volt (legalábbis minden turbós töltő működött, amit próbáltam). Problémát az "egzotikus" hardverek emulációja jelenthet (bár ezekből is ismer néhányat, többet mint az ep128emu), és az emulátor lehetne gyorsabb is. Esetleg újra be lehetne építeni az ep128emu-ba, bár ez elég sok munkával járna.[/quote]
« Last Edit: 2016.March.08. 09:14:53 by IstvanV »