Welcome, Guest. Please login or register.


Author Topic: EP128emu (Read 394422 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #420 on: 2015.June.16. 00:01:23 »
A disk_cfg_fl.cpp régi fájlt nem lelem a letöltött és kicsomagolt forrásban. Ez új?

Az _fl.cpp/hpp file-okat a FLUID generálja a megfelelő .fl-ből (pl. disk_cfg.fl -> disk_cfg_fl.cpp, disk_cfg_fl.hpp). Tehát a módosítást célszerűbb a forrás .fl-ben végezni.

Kár, hogy a frisebb fluid-al már nem megy az ep128emu.

Csak FLTK 1.1.x és 1.3.x támogatott, a 2.x nem kompatibilis ezekkel.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #421 on: 2015.June.16. 00:13:58 »
Saját telepítője van, amit István tud csinálni.

Illetve bárki más, aki letölti az NSIS 2-t (Nullsoft Scriptable Install System). :) A használata egyszerű, csak makensis.exe ep128emu.nsi-t kell futtatni az ep128emu2/installer könyvtárban, és ez elkészíti az installert, amely természetesen az .nsi file szerkesztésével módosítható is.

Az installer létrehozása előtt még futtatható a strip az összes .exe-n (így valamivel kisebb lesz a méretük), illetve a már meglevő telepített verzióból a LICENSE file-ok, amelyeket a forrás csomag nem tartalmaz, az ep128emu2 könyvtárba másolhatók.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #422 on: 2015.June.16. 00:23:28 »
Ha ez a gyári csomag, akkor biztos, hogy csomó minden elavult benne.

Az ep128emu_roms.bin csomag az epcompress segítségével készíthető:

Code: [Select]
epcompress -a -m2 -9 @rom_list.txt ep128emu_roms.bin
[ Guests cannot view attachments ]

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #423 on: 2015.June.16. 08:35:34 »
Az _fl.cpp/hpp file-okat a FLUID generálja a megfelelő .fl-ből (pl. disk_cfg.fl -> disk_cfg_fl.cpp, disk_cfg_fl.hpp). Tehát a módosítást célszerűbb a forrás .fl-ben végezni.
A módosítási patch jól jönne.
Csak FLTK 1.1.x és 1.3.x támogatott, a 2.x nem kompatibilis ezekkel.

Nekem nem nagy gond, mert fltk_1 és fltk2 egymással nem ütköző csomagkészlet létezik, legalábbis UHU -n, direkt az ep128emu kedvéért kreáltam az fltk1 készletet.
Más már talán nem is igényli.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #424 on: 2015.June.19. 11:31:04 »
En a C++-tol kapok elmebajt, mar ha ranezek akkor is ... Ezert is nem nyultam hozza, es inkabb irtam egy sajatot ... pedig C++-t parszor nekialltam tanulni, de nekem vmi remesen eroltetett/tulbonyolitott cuccnak tunik.

Nem használtam "túlbonyolított" C++-t (pl. template talán egy file kivételével), a hardver emuláció részben gyakorlatilag csak a nyelv alapvető OOP elemei találhatók. Ezen kívül az emulációs "motor" jól elválasztható a magasabb szintű részektől, mint például a GUI, video és hang kimenet, debugger, stb., és az egész egy API-n keresztül elérhető, ami beépíthető más programokba. Ezért viszonylag könnyen lehetne például egy minimális SDL-es emulátor verziót készíteni. Az összes hardver komponens (Z80, NICK, DAVE, AY, stb.) szintén könnyen használható az emulátor többi része nélkül.

Hasonló felépítésű a plus4emu is, amely az emulátor API-hoz C wrappert is tartalmaz, egy egyszerű SDL példa programmal.

Természetesen új emulátor írását éppen az teszi érdekessé, ha mindent újra meg kell valósítani (és közben megfejteni a hardver működését és a nem dokumentált tulajdonságait), és nem csak "újrahasznosítani" már létező régi forráskódot. :)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EP128emu
« Reply #425 on: 2015.June.19. 11:37:38 »
Nem használtam "túlbonyolított" C++-t (pl. template talán egy file kivételével), a hardver emuláció részben gyakorlatilag csak a nyelv alapvető OOP elemei találhatók.

En mar ezt a namespace stb dolgokat se ertem :) Hogy egyaltalan mire jo, es miert kell. C++-t parszor nekialltam tanulni, de kb olyan, mintha egy osembernek kezdenel kvantumfizikat magyarazni, csak neztem nagy szemekkel, hogy WTF, es elvesztem a tutorial eleje fele mar :) Az OOP sem nagy baratom valahogy, bar erdekes, hogy pl Python-nal ez nem zavar :)

Quote
Hasonló felépítésű a plus4emu is, amely az emulátor API-hoz C wrappert is tartalmaz, egy egyszerű SDL példa programmal.

En Plus4 eseten mindig kicsit elveszve erzem magam. Van a VICE-ban ugye emulacio ra, de sokak szerint finoman szolva is "pontatlan". Mivel Plus4-el igazan sose foglalkoztam, nem tudom ezt megitelni. Aztan ott van pl a Yape, amit anno en is fejlesztgettem, ott is a C++-t akartam kidobni :) Sajnos az ujabb Yape verziok mar Windows-only cuccok, ha jol remlik. A plus4emu ezekhez kepest hogy all?

Quote
Természetesen új emulátor írását éppen az teszi érdekessé, ha mindent újra meg kell valósítani (és közben megfejteni a hardver működését és a nem dokumentált tulajdonságait), és nem csak "újrahasznosítani" már létező régi forráskódot. :)

Na igen :) Meg emu fuggetlen haszna is van: az ember tanul egy csomo dolgot, amit aztan total mas helyeken tud hasznositani akar, adott esetben. Pl JSep eseten en Javascript-et kozben tanultam meg, meg is latszik rajta :) A masik meg: valoban, ha az ember emulal vmit, arrol is tanul egy rakas dolgot.
« Last Edit: 2015.June.19. 11:41:25 by lgb »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #426 on: 2015.June.19. 12:33:26 »
En mar ezt a namespace stb dolgokat se ertem :)

A namespace gyakorlatilag arra jó, hogy egyszerű globális neveket lehessen használni anélkül, hogy mással ütköznének. Itt például

namespace Ep128 {
  class Z80 {
    ...
  };
}

a namespace-n belül a "Z80"-ra egyszerűen Z80-ként lehet hivatkozni, azon kívül viszont Ep128::Z80 lesz. De az "using Ep128::Z80" után már itt is csak Z80, az "using namespace Ep128" pedig mindent "importál" a namespace-ből.

Ez C-ben talán így nézne ki:

typedef struct {
  ...
} Ep128_Z80;

Egyszerű OOP gyakran fordul elő C-ben, ez például:

Ep128_Z80 *Ep128_Z80_new(void);
void Ep128_Z80_delete(Ep128_Z80 *z80);
void Ep128_Z80_run(Ep128_Z80 *z80, int cycles);

C++-ban így néz ki (maradva a fenti példánál):

namespace Ep128 {
  class Z80 {
    ...
  public:
    Z80();
    ~Z80();
    void run(int cycles);
  };
}

és a namespace-n kívül így használható:

Ep128::Z80 *z80 = new Ep128::Z80();
z80->run(4);
delete z80;

Ez a C-hez képest csak szintaktikai eltérés, amit viszont a C nem (vagy legalábbis csak nehézkesen) tud emulálni, az a "virtual" típusú függvények, amelyeket alosztályokban módosítani lehet.

Quote
A plus4emu ezekhez kepest hogy all?

A plus4emu meglehetősen pontos (és lassú :oops:), amikor még fejlesztettem, lényegesen pontosabb volt, mint a VICE és a régi nyílt forráskódú (0.32 ?) YAPE, és legalább annyira, mint az akkori Windowsos/zárt kódú YAPE (talán 0.7x vagy 0.8 lehetett). Természetesen azóta ezek fejlődhettek, de a plus4emu (és különösen a 6502/TED emulációja, ami részletesebb, mint bármi az ep128emu-ban) már elég pontos volt ahhoz, hogy gyakorlatilag minden fusson rajta, ami nem igényel valamilyen speciális hardver bővítést, amit az emulátor nem ismer.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EP128emu
« Reply #427 on: 2015.June.19. 14:58:46 »
Hmmm. Nem akarsz irni C++ tutorialt? :) Amiket en probaltam megerteni, abban pl ez is olyan homalyos volt, hogy azt elmagyarazni is nehez lenne. Ez igy teljesen ertheto volt, koszi :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #428 on: 2015.June.20. 12:39:54 »
Ebben ezek vannak:
Code: [Select]
debugger.cpp
disk_cfg_fl.cpp
emucfg.cpp
gui.cpp
wd177x.cpp
z80.cpp
z80funcs2.cpp

A disk_cfg_fl.cpp régi fájlt nem lelem a letöltött és kicsomagolt forrásban. Ez új?
Ezen kívül  az összes módosítással készült folttal elkészült a módosított telepítő csomagom UHU-3 -hoz.

Ez a rom még jó?
http://ep128emu.enterpriseforever.com/roms/ep128emu_roms.bin

Talán említést érdemel még az itt található optimalizált quality 3 módú gldisp.cpp (de ezt még tesztelni kell), illetve az SConstruct-ban találtam egy hibát a 227. sorban. Ez azonban csak win32CrossCompile módban eredményez problémát FLTK 1.3.x verzióval (ami például ebben a MinGW csomagban is található - ezzel Linuxon is egyszerűen fordítható Windowsos emulátor, ha a Wine telepítve van), és így talán nem sokan fordítják az emulátort. Ezen kívül a 294. sort módosítottam, hogy win32CrossCompile esetén a Windowsos FLUID-ot használja.

Előfordulhatnak még problémák újabb Linux disztribúciókon, amik SConstruct és egyéb módosításokat igényelhetnek, bár én most le tudtam fordítani az eredeti 2.0.9.1 verziót, és csak a Lua 5.2 okozott hibát, ami miatt 5.1-es devel csomagot kellett telepíteni.

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #429 on: 2015.June.20. 22:22:28 »
Legyártottam a gldisp foltot, lefordítottam vele az emut. :)  UHU-3
Különösebbet nem észleltem eddig a feltelepített emuval.

A disk-cfg.fl -el nem boldogultam, az még hiányzik, Ráadásul a birtokomban lévő disk_cfg_fl.cpp fájl sorvégei windózosak, át kellett alakítanom, hogy lássam a változást az eredi fl fájll által készített fordítási snapshot-hoz képest. A diff ugyanis a sorvégek miatt mind változásnak jelölte. Végre láttam a konkrét változásokat, de nem tudtam rájönni, hogyan is kellene az eredt fl fájlt megváltoztatni, hogy a kívánt cpp jöjjön létre.
Hiába, nem értek a fluid -hoz.
Sem. :oops:
Megköszönném, ha megadnád a módosításokat. Monjduk engem a windózos rész nem igazán érdekel, de a többieket, a többséget biztosan az is. Ekkor le lehetne fordítani majd windóz alá is az összegyűjtött változtatásokkal.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #430 on: 2015.June.21. 10:19:21 »
A disk-cfg.fl -el nem boldogultam, az még hiányzik, Ráadásul a birtokomban lévő disk_cfg_fl.cpp fájl sorvégei windózosak, át kellett alakítanom, hogy lássam a változást az eredi fl fájll által készített fordítási snapshot-hoz képest. A diff ugyanis a sorvégek miatt mind változásnak jelölte. Végre láttam a konkrét változásokat, de nem tudtam rájönni, hogyan is kellene az eredt fl fájlt megváltoztatni, hogy a kívánt cpp jöjjön létre.

Ha csak annyi a változás, hogy a sávok maximális száma 240 helyett 254 lett, akkor a disk_cfg.fl-ben (ami egyszerű szöveges file) elég 254-re cserélni a 240 minden olyan előfordulását, ami 'Fl_Value_Input floppyATracksValuator' vagy hasonló nevű widgetnél van. Ez összesen 4 módosítás.

Vagy grafikus felületen: a FLUID 1.3-al megnyitni a disk_cfg.fl-t, és az összes "Tracks" widget tulajdonságainál (dupla kattintással jeleníthető meg) a "Maximum"-ot 240-ről 254-re növelni, majd menteni a módosított file-t. De a szöveges keresés/csere itt talán egyszerűbb.

A diff ugyanis a sorvégek miatt mind változásnak jelölte.

Ez elkerülhető a diff -b használatával, ami egyébként a space/tab változásokat is figyelmen kívül hagyja.
« Last Edit: 2015.June.21. 10:32:44 by IstvanV »

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #431 on: 2015.June.21. 13:35:23 »
Köszönöm.
:)

Végülis a fluid1 -el csináltam meg a track növelést, most már napra késznek mondható az ep128emu csomag UHU-3 -hoz. UHU-2.2 is!
A gomb színei változatlanok...
« Last Edit: 2015.June.21. 14:56:14 by Attus »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #432 on: 2015.June.21. 14:17:55 »
Kisebb probléma, hogy így a szektorok száma is 254 lehet (Zozosoft verziója csak a sávokat növelte), az emulátor többi részében azonban továbbra is 240-re korlátozott. De ennek a gyakorlatban kevés jelentősége van, különösen mivel a kézi sáv/szektor/fej szám megadás ritkán használt funkció.

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #433 on: 2015.June.21. 14:58:34 »
Azért kijavítom,csak a sávok lesznek növelve.
Köszönöm az észrevételt.

Rend a lelke mindennek.
« Last Edit: 2015.June.21. 15:02:37 by Attus »

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #434 on: 2015.June.24. 09:10:20 »
Mi lehet a hiba, miért nem leli a basic a fájlt?
Az 5-ös fejlécek mennek.