News
ReBochs: GUI debugger improvements (12 comments)
Programming a GUI is aggravating. Programming one that tries to interface to multiple APIs at a time is awful. I've had a lot of improvements in mind to put into the GUI debugger for a long time, and I've held off until now because it's such a PITA. But I went and did it with this latest release.
Check out the "Instruction History" in the View menu! I think programmers will love this feature. If your code jumps somewhere unexpected, or crashes ... and you don't quite remember the address of the function that was running just before the jump ... this feature gives you the last 64 opcodes that ran. Including visual feedback for interrupts and which conditional jumps were taken, and which not. I am also intending that a doubleclick on an instruction will give you an ASM disassembly starting at that instruction, but that is not coded yet.
Another new GUI feature is "break on exception". Type in an exception number that you think is causing problems, run the sim, and it will stop just before jumping to the exception handler. (Then use the Instruction History to find out how you got there!) You can type in up to 32 exception numbers.
I have also gotten rid of the "Input Window" that has been at the bottom of the debugger forever. Now that it is gone, you should be able to cut/paste out/in the expanded "IO window". As the textmode debugger gets written in the next month, being able to cut/paste should be a big help to programmers.
Sadly, with this change I can no longer support GTK+ 2.4 -- there are too many bugs in it and this exposed a crashing bug that I cannot work around. It's a very old version of GTK+, so it shouldn't be a problem except on cygwin. I will have to see if there is an effective version of GTK+ available on cygwin now.
ReBochs: BIOS improvements (13 comments)
When ReBochs first boots, I want it to be easy to "singlestep" from the BIOS to the bootloader at 7c00. So I've rearranged the BIOS a bit. After taking the first singlestep to get to 0xf0001, you will see a few lines of initialization, a JMP, and then the last 10 lines of the BIOS -- all at the very top of your first screen. Unless you are doing the CS:IP nasty mode randomization, the far jump from the BIOS to the bootloader is the JMP 0:7c00 right there in the middle of the first screen.
If you are doing nasty mode CS:IP randomization, then the JMP FAR [0xc] line that is just a few lines lower is the correct entrypoint into the bootloader.
So, doubleclick to set a breakpoint on the correct far jump, and singlestep right into the first line of your bootloader!
ReBochs: GDB stub support (9 comments)
I put off creating the FPU instruction models in favor of creating the GDB stub with this new release. The GDB stub allows you to use the GDB debugger (and perhaps one of the GUI frontends for GDB) as the main debugger for ReBochs -- typically on a *NIX system. Simply uncomment the #gdbstub line in the updated sim_init.txt file to turn on the GDB support. You do not need to change any "build" settings.
ReBochs: Release 0.0.11 (20 comments)
Full FPU support should happen in release 0.0.12 in a few days. At this point, almost all FPU opcodes should give a "no fpu" exception -- which may be enough to make some 386-compatible OSes work. FPU support is about 40% complete now.
MSRs are 90% supported, but I need to choose specific MSR addresses to support, and I have not done that yet. Once MSRs are supported, I can start on APIC support.
So: current projects are FPU, VGA, the textmode debugger, MSRs and APIC.
ReBochs: grub_hd + userspace software switching (14 comments)
It turns out that while GRUB was working for floppy images, it was not working for hard disk images -- because of a few tiny BIOS functions. It is tested and working now.
Also, the last few bugs in userspace software switching seem to be fixed.
ReBochs: Release 0.0.8
Userspace with software task switching seems to be about half working.
A huge (but very simple) bug in the SDL code has apparently kept the linux/osx version from working for the last couple of months. Sorry about that! Nobody told me until last night. :-D
Kwolf also reports that "make clean" may not actually be cleaning quite everything. If anyone can give me more of a clue as to what is going wrong, I'd appreciate it.
I am very close to having multi-cpu support running in general, but before I can really do it I need to get MSRs running, stubbed APIC support, and (of course) MP/ACPI support.
ReBochs: Release 0.0.7
Thanks to kwolf for the test image that I used for debugging my paging code. I also added a much nicer paging info display in the GUI debugger.
ReBochs: Release 0.0.6
There were a few bugs that were keeping GRUB from loading target OSes. The example OS that I have loads with this new version. If you have a GRUB floppy image that does NOT load with v0.0.6, I would very much like to see it, if you can email it to me.
I am still working on VGA, VBE, paging, and the textmode degubber. Perhaps full multiCPU and multithreading support will also be turned on soon.
ReBochs: Release 0.0.5
The BIOS VBE functions are not quite working yet, but the 640x480x24 LFB (at 0xe0000000) is. Use the standard port 0x1ce, 1cf bochs/qemu hack to activate it.
Planned for the next release: activating all BIOS VBE functions, extending the LFB code a little, activating the textmode debugger. I am hoping to merge the "textmode input window" together with the ouput window. This will provide extra cut-and-paste functionality, to make it much easier to get data and disassembled code in and out of rebochs.
The next planned release is set for July 5.
ReBochs: Version 0.0.4
New additions: Significant improvements to the PIT -- that model should be close to complete.
The RTC should always return an accurate local time, now. The BIOS Int1A functions that handle the RTC should be complete and accurate.
There are now two PCI configuration spaces -- the Host To PCI bridge, and the ATA controller.
Next up should be the serial port model. The next scheduled release is June 20.
Also available in: Atom