diff --git a/bochs/TODO b/bochs/TODO index e8c6a62d5..deb6bc284 100644 --- a/bochs/TODO +++ b/bochs/TODO @@ -16,6 +16,8 @@ Should we accept donations ? What could we do with the money ? - bounties for somebody write optimized win9x/NT/XFree/linux/*BSD drivers for our vga/net/ide cards - other ? +Status in Bochs 2.2: +No decisions about this yet. 1. GPL source file in Bochs Daniel Gimpelevich pointed out that rfbproto.h is released @@ -23,6 +25,8 @@ under the GPL. This is incompatible with our license, so we need to rewrite/find a replacement this. Also, we should make sure that contributed code / patches are LGPL compatible. +Status: +The GPL'd file has been removed (rfb works with limited features). 2. PCI 2.1 I'd like to implement a PCI framework, that would take care @@ -33,21 +37,37 @@ I guess it will also need to take over the ISA I/O and memory management. Ideally, it would be keeping compatibility when pci is not compiled in. (see http://marc.theaimsgroup.com/?l=bochs-dev&m=107165515315420&w=2) +Status: +PCI memory and i/o plug & play, irq routing and an improved PCI device +register mechanism is present. + 2.2 The System BIOS will also be impacted. Although it has basic BIOS32 service directory functions, we will also have to identify and initialize the connected cards, including optional roms (copy to main memory and initialize), and build the correct PIR table in memory. +Status: +The PIR table and the PCI irq initialization is present in the system BIOS. +The initialization of i/o and memory is still to do. + 2.3 configuration file for pci It would be nice to have a generic way to set the bus/device numbers of pci devices in the configuration file. +Status: +The i440fxsupport option now supports assigning devices to max. 5 slots. + 2.4 host<->guest pci proxy Being able to use a real pci device from inside Bochs would be a great feature of Bochs. It would ease reverse engineering of non documented cards, or one could even use a real spare vga card. Frank Cornellis has done a great job on this subject, and we began integrating his changes. +Status: +The pcidev device is present in CVS, but the status is unknown. + 2.5 existing PCI device will need a slight rework to use the framework +Status: +This is almost done (pcidev untested) 3. Subdirectories in iodev The iodev directory contains the various implemented iodevice. @@ -58,6 +78,8 @@ iodev/disks/... --> for the ata/atapi classes, hd/cd classes and host accesses iodev/net/... --> for ne2k and host net access isa and pci devices would be mixed in the directories, but this should be manageable. +Status: +Not done yet. 4. Speed Speed (well lack of) is one of the biggest criticism made by users @@ -69,6 +91,9 @@ Paths we can explore to get more speed : working on this, and an anonymous patch for win32 http://sourceforge.net/tracker/index.php?func=detail&aid=867044&group_id=12580&atid=312580 ) +Status: +Not done yet. + 4.4 multithreading. Conn Clark wrote : Threading might be nice too, for those of us who have SMP/SMT machines. I have a patch from Mathis (who hangs out on the IRC channel all the @@ -82,6 +107,8 @@ might just be able to be threaded. I think the threading overhead might be less than the protection and address translation code. We would have to try it to find out. I'm also sure there can be some nasty hurdles to overcome. +Status: +Not done yet. 5. CPU 5.1 This was asked in the ml, and I believe it's a good idea to provide @@ -106,6 +133,8 @@ Please note the all features are still not supported/complete in Bochs. would create lots of conflicts in the generated config.h. He suggests that we should write an external GUI configure script that would propose standard or custom cpus and would detect conflicts. +Status: +Not done yet. 6. VGA Several thigs we could use to improve SVGA emulation : @@ -114,9 +143,15 @@ Several thigs we could use to improve SVGA emulation : 6.3 Look at Trident emulation of dosemu 6.4 patch for PCI CirrusLogic CLGD54xx by m-suzu 6.5 voodoo3 (specs http://v3tv.sourceforge.net/docs.php ) +Status: +The Cirrus SVGA adapter is present in Bochs now. 7. Random thoughts on disk emulation improvements : 7.0 IDE-Busmaster support (needs pci) +Status: +Some code to support it is present in Bochs, but disabled. Linux worked with it, +but the Win98 guest failed to boot. + 7.1 lba48 support 7.2 >32GiB disks 7.3 autodetection of disk size / geometry @@ -124,9 +159,14 @@ Several thigs we could use to improve SVGA emulation : 7.5 compressed disk image support 7.6 extend redolog-disk specification to add coherency check of the flat image file, by storing its fstat-mtime field in the redolog. +Status: +These items are not done yet. 8. net 8.1 New devices ? are specs available anywhere ? +Status: +The NE2000 adapter now can be assigned to a PCI slot. + 8.2 bootable ethernet rom ? see etherboot, Micheal Brown wrote : This already works; you can build an Etherboot rom image with the pnic @@ -135,6 +175,8 @@ using this extensively at the moment in Etherboot development. In the Etherboot project's CVS, in the contrib/bochs directory, you can find a working bochsrc file and an up-to-date README with step-by-step instructions on getting this working. +Status: +The pnic device is present in CVS, but the status is unknown. 9. Bios 9.1 our bios is quite heavy on stack space (notably during int13 functions). @@ -146,12 +188,17 @@ make code smaller. We could define a reserved area in the BIOS where we can fill in PCI and SMP specific data before starting the simulation or during POST. The same could be done in the VGABIOS with the VBE mode list. +Status: +Some work to save stack space has been done. + 9.2 with pci and smp support we'll need to include several tables in the bios. We have two possibilities : dynamically build them during POST or statically build a collection of bioses, which can be selected at run time. 9.3 add "jump table placeholder" and log missing function calls in the bios. Check completness with Ralf Brown interrupt list. +Status: +Both items are not done yet. 10. LGPL VGABios 10.1 Stack space @@ -160,14 +207,22 @@ should be fixed. Some parts can be rewritten in assembler, to save stack space and make code smaller. The size of the debug version of the VGABIOS is currently 30k and it will exceed 32k if we fill in some of the unimplemented features. +Status: +A lot of vgabios functions have been rewritten in assembler. The debug +version of the vgabios is still very large (nearly 32k). + 10.2 Video parameters table There is a very nice parameter table in 3dfx banshee document http://www2.lm-sensors.nu/~lm78/pdfs/Banshee_2d_spec.PDF see also http://www.xyzzy.claranet.de/dos/vgacrt.c +Status: +Not done yet. 11. Optimized Guest drivers still needed : VGA, IDE, NET We have a specific VGA driver for winNT/2K, but still lack drivers for other OSes. +Status: +Not done yet. 12. Plugin architecture 12.1 The plugin architecture can be reworked if we want to support @@ -187,6 +242,8 @@ This will allow for example developing of plugins separately from Bochs. If the configuration interface is to be reworked, could we also make it so that plugins are self-contained, rather than needing to pollute main.cc with code for defining and parsing plugin-specific options +Status: +These items are not done yet. 13. Save/Restore We already have a specific branch in the cvs with a save/restore @@ -195,6 +252,8 @@ I guess it would be useful to be able to stop and restart the emulation, or create "checkpoints" to restart the emulation from a known state. We can also give a look on how integrate commitable harddisks with the save/restore strategy. +Status: +Not done yet. 14. USB support Ben Lunt has been working on USB support. We should check with him @@ -221,6 +280,9 @@ with my config binary data. I am still working on it. However, the USB stack, command phase, data IO phase, and status phase is complete. You can successfully retrieve the descriptor(s) and string(s), and set the devices address. +Status: +The USB mouse and keypad code is present in Bochs, but there is +some more work needed to make it stable. 15. Patches / Bug reports There are dozens of patches floating around. Some are outdated, @@ -228,14 +290,26 @@ don't apply cleanly, are obsolete/unneeded. We could try to do some clean-up, and keep only relevent ones. We should also clean up the SF bug tracker. Some bugreports are very old and we asked for more information with no response. +Status: +There is still a lot of work to do. 16. Small others things 16.1 add support for multiple boot devices +Status: +Done. + 16.2 add keyboard leds to GUIs +Status: +Done in rfb, sdl, win32, wx and x. Win3.x and Win9x guest cannot control +the leds (not a gui problem). + 16.3 add activity leds (net, disks, floppies) to GUIs Volker added a status bar to the win32 simulation window. It can be used to display leds. The status bar still needs to be implemented by other display libraries. +Status: +This depends on the display library (see above). The indicators for floppy, +cdrom, hard drive and usb are present, networking is still to do. 17. Positions If you want to help without coding, here are available positions : @@ -248,6 +322,8 @@ of disk images. Usually, only the configuration file needs to be updated, and old bios files have to be removed. Some packages still contain very old bios files, they should definitely have to be removed. +Status: +More active developers are needed to do the things described above. 18. Bochs demo cd/dvd With version 2.1, it is now technically possible to use disk images @@ -256,12 +332,16 @@ It would be great to create a demo cd/dvd with executables for supported platforms, configuration files and read-only disk images, the journal files would be written in a temporary directory on the harddisk. +Status: +Not done yet. 19. Other CPU architectures : arm, ppc This has been asked in the mailing list. I'm not really interested, but other people might be. Should we propose to host the new CPUs code in our source tree, or should we let people fork ? +Status: +Not done yet. 20. Config file and dynamic menu 20.1 Benjamen R. Meyer wrote : @@ -280,6 +360,8 @@ when new devices/features are added. e.g. the main menu is static while it could be generated at run-time... the main menu text lives somewhere in a file... while it should be generated at run-time by iterating the main menu objects +Status: +Not done yet. 21. APIC and windows NT SMP. Stanislav wrote : Current Bochs SMP is almost unusable. I not succeed to boot any SMP OS I @@ -287,16 +369,24 @@ have due to APIC problems. Bochs APIC implementation should be reviewed. In the patches folder we already have at least 3 patches for APIC, I hope one of them or their combination will fix the problem or approach my WINNT SMP boot tries. +Status: +Stanislav, please fill in. 22. add to the roadmap that we should find some ideas to check correctness of instructions emulation, especially system instructions. arithmetic instructions could be validated with simply random testing +Status: +Not done yet. 23. lowlevel serial support for Windows. Volker is currently working on this. +Status: +Not yet complete (transmit works, receive is losing data). 24. runtime configuration dialog box for Windows Volker is currently working on this. +Status: +Done. 25. Parallel port Conn Clark wrote : @@ -307,3 +397,5 @@ may require a kernel module be written, which is beyond my current skills. I know others will find this useful as I have had to tell a few people that their parallel port driven peripherals that require a bidirectional parallel port won't work. +Status: +Not done yet.