This directory contains a few patches for QEmu. ChangeLog: - update RFB patch (rfb13) to support scroll mouse (Nis Jorgensen) - update RFB patch (rfb12) to reuse keymaps.c for VNC - update RFB patch (rfb11) to apply cleanly to CVS - update VVFAT patch (vvfat7) to apply cleanly to CVS - update RFB patch (rfb10) to apply cleanly to CVS - updated VVFAT block driver to version 4 (works with Win95, compiles on Win) - added VVFAT block driver (access a local directory via virtual VFAT device) - removed .dmg driver patch (was applied) - added a block driver for .dmg files (experimental). - updated sdl-nopckeys to current CVS. - added first version of SPARC/Solaris patch. - updated IRIX patch to current CVS version (twice). - updated documentation as per Martin's suggestions. - audio patch was applied - removed the audio patch, because malc took it and enhanced it. - updated porting (AKA Dynamic Translation) document; it's HTML now. - added another version of the sound patch, as per Fabrice's request. (no extra header for fixed-point arithmetic). - fixed -vnc-and-sdl with bit depths != 16 (qemu-rfb9.patch). - added a document explaining how to avoid C++ templates using C. - added a draft for fixed point arithmetic (sound patch). - added a non c++ version of malc's 7c_aqemu (sound patch). - added a draft for profile based optimization. - Fabrice applied qemu-vga.patch with fixes. The Patches - qemu-rfb: makes it possible to run the virtual machine, interacting with it only via vncviewer (optionally also SDL). - qemu-irix: make QEmu compile & run on IRIX. - qemu-SPARC: make QEmu compile & run on SPARC/Solaris - qemu-sdl-nopckeys: just a rip off qemu-rfb to support other keymappings than US on other architectures than an PC. - qemu-dmg: if a .dmg file extension is detected, a new block driver for DMG images is used. - qemu-vvfat: you can now specify "-hda vvfat:local_directory/" to access the directory "local_directory/" (it works with other names, too...). Read-only for now; works with Linux guest, FreeDOS has problems. There are also documents, for example qemu-porting-to-irix.txt, which I wrote while porting in order to have fun, document what I did, and help others porting QEmu to different architectures. In order to apply a patch, just get a current CVS copy of QEmu, cd to it, and do cat /wherever/qemu-rfb9.patch.gz | gzip -d | patch -p1 Now you can use the normal configure && make mantra in order to make the binary. Notes: SDL-noPCKeys: Specify your language with "-k de". RFB: To use vnc as a backend, there are two ways: Either you use the command line option "-vnc" to completely rely on VNC as a front end, or you can specify "-vnc-and-sdl", in which case you both have an SDL window and can connect via VNC. If you use VNC, it is important to specify a keyboard language (as an example: "-k fr" for a French keyboard). This is the keyboard layout the VNC client is supposed to have! To use the mouse, you normally have to calibrate it. It is not my fault: When sending a relative mouse delta of 5 pixels, Windows and X move 10 pixels! Therefore, if the mouse does not move like your host mouse, you should move the guest pointer to an empty space on the desktop (with space above), hit and release Ctrl+Alt+M. The mouse should be then calibrated. I plan to do some auto-calibration, which constantly checks if the model (width x height) of the cursor corresponds to the changed regions. If it does, and the host and guest positions do not match, the error is fed to a Really Simple Neural Network, and an adjustment is sent. If the changed regions do not match, but are small enough, and do enclose the old position of the cursor (this should be relaxed a bit), then it reluctantly adopts the new model, i.e. it adopts it only after it has been confirmed once or twice. VVFAT: What is it? By calling QEmu with "-hda vvfat:some/directory", you can access the files in that directory via an emulated (virtual) VFAT device. Warning: alpha version (read only). 2nd warning: If you access the files from within QEmu and change the contents from without, you're likely to get corrupt data inside QEmu. How it works: It fakes an mbr, as well as one partition with boot sector FAT and directory. I used a fix size of this virtual hard drive, because as it is all fake, space is cheap... When the directory is built, the block driver recurses into the given directory, and "stores" them just after the 2nd FAT. After that, the FAT is built, "storing" all files subsequently at the first "free" clusters. Why didn't it work with FreeDOS? First, I forgot to set total_sectors, cyls, heads and secs in the BlockDriverState structure. Those are only needed for accesses via the emulated BIOS, which Linux doesn't do. When I wrote the cloop and the dmg driver, I only tested with Linux, and those were fine. It still didn't work with Win95; I forgot to set the magic first three bytes of the boot sector. After I fixed that, I still got only the short names, because I forgot to upcase the short name. This is fixed, too. I will now try to add write support. This will be a little bit of guess work, as QEmu cannot be completely sure in which order the transaction (write new sector, write FAT, write directory entry) will happen. Maybe it's possible to trigger the update whenever the last of those three actions happened. I don't know. I am tired.