Ik hoop dat dit topic voldoende beschrijvend is en mag blijven, maar ik waag het erop. Ik weet niet of dit forum het juiste is maar dat hoor ik wel van een moderator in dat geval. Nu het volgende:
Ik ben al enige tijd aan het dubben over het maken van een x86 emulator, ik vind emulatie erg interessant en heb er, al zeg ik het zelf, behoorlijk veel kennis van.
Wat ken ik al en waarom voldoet het niet:
- MESS, emuleert 8086, 8088, 80286, 80386: Waarom deze niet? MESS is niet tijdskritisch, heeft veel haperingen en ondersteunt harddisk emulatie niet volledig, geen cd-rom en geen goede soundblaster emulatie.
- VirtualPC, kost geld, is soms te snel, soms te traag, geen volledige geluidsemulatie.
- VMWare, kost geld, is som te snel, soms te traag, geen volledige geluidsemulatie voor DOS, geen volledige VGA emulatie voor DOS (en geen EGA / CGA modus)
- QEMU en BOCHS, te ingewikkeld, frontends zijn ook nog onlogisch, niet tijdskritisch genoeg, geen fullscreen onder windows.
- DosBOX, veel te snel, onvolledig
Waarom niet aanpassen bovenstaande alternatieven:
- Ik vind het zelf maken interessant, en geeft je veel inzicht in hoe processoren werken en de zooi eromheen.
- Het is een uitdaging om het product tijdskritisch te maken (natuurlijk 4.77mHz, 6 mHz, 8 mHz tot en met 20 mHz
).
- Meeste apps zijn ronduit gebruikersonvriendelijk
- Het moet aanvoelen als een echte PC maar dan van 20 jaar terug.
Wat moet er op kunnen draaien
- Windows 3.x (geen 3.11)
- DOS
- Oude DOS games (keen enz)
- DOS utilities
Documentatie:
- Volledige handboeken van Intel (voor 8088, 8086 en 80286 emulatie)
- DMA uitleg (http://www.mega-tokyo.com/osfaq2/index.php/DMA)
- LPT poorten (http://www.lvr.com/files/ppc1.pdf)
- 8086 Emulator op microniveau (emu8086)
- Assembly howto (http://www.xs4all.nl/~smit/asm01001.htm)
- Mess documentatie (http://www.mess.org)
- Compleet Amstrad XT manual (http://www.seasip.info/AmstradXT/1640tech/index.html)
Wat kan ik niet vinden:
- Duidelijke harddisk controller manuals die ook de instructies bevatten op microniveau
- Hoe een BIOS te schrijven (systeem / VGA / EGA / CGA / MDA)
- Microniveau beschijvingen van een processor (macro genoeg te vinden, bijna geen micro)
Vragen:
- Vergeet ik wat te emuleren? Wat dan en waarom?
- Is dit als 'sole developer' haalbaar of moet je dit met een team doen?
- Welke programmeertaal is het meest geschikt, ik denk aan C++ om het modulair op te kunnen bouwen, tijdskritisch te kunnen zijn en snelheid te behalen.
- Is er interesse voor een goede, tijdkritische, full system emulator voor 8088, 8086, 80286?
- Is het leuker om de microinstructies te vertalen naar macro en dan uit te voeren, dus een microniveau toe te voegen? Wordt de emulator dan niet te traag?
Ik ben al enige tijd aan het dubben over het maken van een x86 emulator, ik vind emulatie erg interessant en heb er, al zeg ik het zelf, behoorlijk veel kennis van.
| Eisen: |
- 8086 en 8088 emulatie op macroniveau - 80286 emulatie op macroniveau - Tijdskritisch, dus zo goed mogelijke benadering van de timers - MDA, CGA, EGA, VGA emulatie (geen SVGA) - Geheugencontroller emulatie - DMA emulatie - Geluidskaart emulatie (Adlib, Soundblaster, MIDI) - Floppydisk emulatie - Harddisk emulatie (met controller, geen SCSI) - CD-ROM emulatie - Netwerk Emulatie - Toetsenbord en muis emulatie (of PS/2 en COM) - Directe LPT toegang - BIOS emulatie - Eigen BIOS of mogelijkheid tot injectie BIOS - Moet eenvoudig in gebruik zijn - Modulair (dwz, zelf te kiezen onderdelen) - Onderwaterscherm, met grafische weergave moederbord waar te zien is hoe de communicatie loopt (dit hoeft niet tijdskritisch te zijn omdat dit veel resources neemt, maar dit geeft wel inzicht in hoe een PC werkt) |
Wat ken ik al en waarom voldoet het niet:
- MESS, emuleert 8086, 8088, 80286, 80386: Waarom deze niet? MESS is niet tijdskritisch, heeft veel haperingen en ondersteunt harddisk emulatie niet volledig, geen cd-rom en geen goede soundblaster emulatie.
- VirtualPC, kost geld, is soms te snel, soms te traag, geen volledige geluidsemulatie.
- VMWare, kost geld, is som te snel, soms te traag, geen volledige geluidsemulatie voor DOS, geen volledige VGA emulatie voor DOS (en geen EGA / CGA modus)
- QEMU en BOCHS, te ingewikkeld, frontends zijn ook nog onlogisch, niet tijdskritisch genoeg, geen fullscreen onder windows.
- DosBOX, veel te snel, onvolledig
Waarom niet aanpassen bovenstaande alternatieven:
- Ik vind het zelf maken interessant, en geeft je veel inzicht in hoe processoren werken en de zooi eromheen.
- Het is een uitdaging om het product tijdskritisch te maken (natuurlijk 4.77mHz, 6 mHz, 8 mHz tot en met 20 mHz
- Meeste apps zijn ronduit gebruikersonvriendelijk
- Het moet aanvoelen als een echte PC maar dan van 20 jaar terug.
Wat moet er op kunnen draaien
- Windows 3.x (geen 3.11)
- DOS
- Oude DOS games (keen enz)
- DOS utilities
Documentatie:
- Volledige handboeken van Intel (voor 8088, 8086 en 80286 emulatie)
- DMA uitleg (http://www.mega-tokyo.com/osfaq2/index.php/DMA)
- LPT poorten (http://www.lvr.com/files/ppc1.pdf)
- 8086 Emulator op microniveau (emu8086)
- Assembly howto (http://www.xs4all.nl/~smit/asm01001.htm)
- Mess documentatie (http://www.mess.org)
- Compleet Amstrad XT manual (http://www.seasip.info/AmstradXT/1640tech/index.html)
Wat kan ik niet vinden:
- Duidelijke harddisk controller manuals die ook de instructies bevatten op microniveau
- Hoe een BIOS te schrijven (systeem / VGA / EGA / CGA / MDA)
- Microniveau beschijvingen van een processor (macro genoeg te vinden, bijna geen micro)
Vragen:
- Vergeet ik wat te emuleren? Wat dan en waarom?
- Is dit als 'sole developer' haalbaar of moet je dit met een team doen?
- Welke programmeertaal is het meest geschikt, ik denk aan C++ om het modulair op te kunnen bouwen, tijdskritisch te kunnen zijn en snelheid te behalen.
- Is er interesse voor een goede, tijdkritische, full system emulator voor 8088, 8086, 80286?
- Is het leuker om de microinstructies te vertalen naar macro en dan uit te voeren, dus een microniveau toe te voegen? Wordt de emulator dan niet te traag?
[ Voor 5% gewijzigd door Verwijderd op 20-12-2005 15:53 ]