*** Topic for #Bochs: Bochs Pentium Emulator .:. How is the latest release +working on different platforms? .:. Who uses Bochs anyway? .:. Bugs and +features! bochs is cool come here (although I think it just captures the upt to the current point... so +I'll save it again before I close and all will be well. first thing on my list is: how is the Bochs pre-release working for +people? no comment. anybody tried it? I haven't done a lot of testing yet, but so far so good. The RPM +loads flawlessly. Is the prerelease the RPM? Yes. I've loaded it under RH worked fine I heard someone say "I couldn't find bochs because I didn't have +/usr/local/bin in my path" ran the Linux model that was me! some docs will fix that :) Mark - you have SuSE too, right? That problem doesn't show up +there... And shucks.....I'm a hardware guy....and I still figured it out! ;-) haha No, SuSE is my email server at work.... so I haven't tried it there Ah. I use RH for my Linux work Gotcha. I wasn't sure... I was hoping to get some bug reports on 1.2.pre1 to know what needs to +be fixed before 1.2 yes... here's what's already been fixed since 1.2.pre1: - fixed compile problems in gui/nogui.cc, iodev/pci.cc - removed extra paren that broke SHOW_IPS - HALT macro in rombios.c causes a bochs panic (which can be +turned off in .bochsrc) instead of actually halting. - added additional check for null pointer in debugger exit routine - now font/vga.pcf will be installed in the RPM package. Some +systems don't have it. mostly really minor stuff What about Mark's problem? Perhaps a symlink to /usr/bin would be +good. We should put in a fix for the timing. No, it belongs in /usr/local/bin on linux. I would have been happy with finding it in a readme... timing? as in bochs takes 100% cpu? It seems that it is rather bad it installs outside the path of RH +though... and sometimes runs faster than real time. I had an idea on that one. I agree that's important, but I think not for the 1.2 I'm thinking bug fixes only, basically, but let's get the timing fixes +into CVS for the next Well, what is 1.2? Are we calling it a bugfix release of any existing feature +improvements? essentially? right. here's what I was thinking with 1.2.pre1 I thought it was a feature release we had lots of features that only the authors have tried and finally the ability to make RPMS and win32 binaries so I wanted as many people as possible to be able to try the features So I'll ask the question..... but wasn't so sure of stability, so I called it a pre-1.2 release What features? (Where do I find a list?) SMP, for one. CHANGES.txt in the source TAR file I'll paste them in now if you want. bochs-RFB I think is new in 1.2 also. not necessary....I can't run tonight anyway I'll look at the tar file there are some important ones, esp in the area of I/O (log file +output) and what you see on stderr Oh yeah, the code maintenance issues like that one. http://bochs.sourceforge.net/docs-html/changelog.html has the log of +changes too. Ugh, I'd really like to get my pit changes in, but Abigail has had +different ideas... Babies do that. :) I'm there now reading *** smapnipss (rooot@cs6668169-151.austin.rr.com) has joined channel #Bochs so I think 1.2 OFFICIAL should be 1.2.pre1 with a few bug fixes Sounds reasonable. and anything major should go into CVS snapshots and wait for 1.3 or +something Wow, already doing a feature freeze. :) Bochs going big time. :-) here's a stupid question: What kind of release schedule are we expecting here? 1.2 definitely is NOT ready for the big stuff. but, it's an incremental improvement. I should say pretty early on, I have only worked on projects of 2-3 +people before and have not done this kind of thing before, so I'm learning as +I go. so far I must say I'm REALLY impressed here though I'm participating on some much larger projects and they're no where as organized (of course I don't really know how many are participating here!!) I hope to get more people involved in making decisions like when to do +releases, but here's what I was thinking for the 1.2 thing I wanted to get binary releases out as soon as possible since that will allow the most people to try it out, and potentially +bring in more develoeprs first thought was to do binaries of bugfix3 but the I/O improvements +made such a difference that it seemed like a waste of time. Well, with the HALT bugfix in the bios... could we do a binary +release of 1.1.2 also? sure, but what about the stderr cleanup, the .bochsrc cleanup, the I/O +cleanup? What would be the advantage of a 1.1.2 binary release? there's too much that should be backported IMHO to make it worth it It would potentially run when the main problem is that HALT bugfix. ? what would run better in 1.1.2? What if we independently did a release of just the bios? I guess that's really what I'm advocating. anything is possible. we can backport anything we want. given enough time. We had at least a few messages on the list about people getting +HALT messages when things used to run fine. Can't that be stopped in bochsrc? the bug fix to HALT causes errors to be reported correctly, that's +all. from the bios fixes you recently added. *** Signoff: nolu (Read error: Connection timed out) yup, that's the problem. anything that has STOPPED working because of that was always producing +error conditions but they weren't being reported. so fixing the error reporting is causing people to see the errors that +before were silent. Does that make sense? Okay, then what about a bios version that possibly reports but +continues to run after errors occur. right I thought Bryce said the Bochsrc config allowed for this... that's easy enough, although we should eventually fix those errors +instead of ignore them :) of course but once reported, it's a possibly easy workaround. Tim, the HALTs now produce a bochs panic. In 1.2 all panics can be +turned non-fatal by changing the .bochsrc. but I don't trust any code executing after a HALT. So, that would include the ones Greg is referring to, right? Tim, yes Unles you guys are sure that wouldn't make a difference. we should distinguish between the rombios code calling the HALT macro +and a HLT x86 instruction. I agree with that That'd be very nice. I just mean have a version of the bios with HALT defined to be nop. the HALT macro was broken until 1.2.pre1, it did absolutely nothing Which was good from a user perspective, bad from a debugging one. the hlt instruction halts the bochs simulation, no question. doesn't HALT do a hlt? in 1.2.pre1, it does. I've been working on cvs, and here's what it does now: Right, and I'm just saying I don't want to have to disable all +hlts, just the one in HALT. the HALT macro causes bochs to call panic with the line number of the HALT macro (in rombios.c) and then it does NOT call the x86 hlt oh, that's somewhat better. this lets you control what happens through the bochsrc by saying +"panic: action=fatal" or "panic: action=report" do you think that's an ok behavior for a 1.2 release? Not too bad. :) You guys had talked about being able to isolate panic behavior to a +particular unit. well, a particular section of code. right Sorry, work slipping in there. Is that doable from .bochsrc? Todd's I/O code has the capability of having a different action for +each of panic,error,info,debug for each "module" where module is something like "HD", "CPU", "PIT" but there is not yet any .bochsrc syntax to specify this could we define the panics caused by the bios to be a specific +macro? macroXXXXX module I think you mean something like: panic: facility=cdrom, action=fatal panic: facility=bios, action=report ? yup. panic: facility=default, action=fatal although that's a little awkward. yes, needs work but yes, basically that. the I/O functions are all ready to do that, we just need a syntax! any suggestion? PIT: panic=fatal default: panic=fatal what about debug,info, and error though? PIT: panic=fatal, error=report, info=report, debug=ignore HD: debug=ignore sure. that seems good enough it has the added advantage of giving us some direction for +additional "module parameters" I have a feeling it will be better if the thing left of the colon can +be the same for all such statements, but I'm not sure how to make it look ok. It seems to me that the only issue for panics, etc. is the action. hmmmm... well... true but what if you wanted to log HD messages to a different file? panic: action=fatal PIT log: obj=HD, file="hdlog.txt", panic=fatal, error=report, info=report, +debug=ignore it's getting LONG :) but soon the GUI will do this for us. :) yup. just a minute, I like the log idea. hmmmm... what if we viewed these more as commands. so, we could use: log: filename="outfile", panic=fatal, error=report log: obj=PIT, filename="outfile2", panic=report, info=report that's cleaner. we'd have to decide just how to parse different things. so if you have no obj=X then it means the default? is that your point? yup. makes sense no, not just that. and later lines override settings from earlier lines we only have to specify part on a line, right right. ok, that sounds like a good start. filename would apply either only to the module. or even only to the reporting specified on that line. Is there something easy you could do to keep separate runs in separate +files? So that if you wanted to run regression it would be easy (let's continue the .bochsrc syntax on email, so that we can get to +other things too) sure mark, maybe you could put in a %d or something into the filename, and then sprintf some time stamp into the %d that's an idea there are several ways to do it. the calling program could just change the value in .bochsrc between +runs. at any rate, next topic... I had a little survey written up Maybe the GUI interface would be appropriate? oh, go ahead. but given that we have only 5-6 people... let's just take a peek at it but try to get more people to answer it +later on K. it's at http://bochs.sourceforge.net/ircsurvey.html or if it's easier I'll just paste it in let's add any number of possible responses that you can think of, and +maybe we can make this into a web survey instead (or maybe SourceForge +survey) Should I post my response here? sure!! I write bochs as a hobby. I'm more interested in getting it right +than using it. Educator/Student: to see how the computer works However, I'm also interested in getting x86 programs to run on +other OSes. For the first question (What do you use bochs for): Initially to try +out Win32, although now just for the enjoyment of running a PC in my PC. :-) Future Bug fixes: bug 1. Feature Request: feature 8. also to be able to watch the OS working (esp Linux since I can see the +source too) (Mouse problems, and emulation speed respectively) Chip Designer: Inteested in interfacign it to my new design. bad spelling. ;-) mark, are you allowed to say what you're designing? :) Sort of.... i use bochs for os development I'm working on some leading edge 1394 stuff I understand, I'm a chip designer too. wow, me too. I can say. POWER4 but I'm also interested in chipset design, and how that might play in +here I'm feeling out numbered here... I'm just a lowly web designer. We're thinking about SMP chip designs big surprise :) The web rules...;-) We just work! Anyway, long term I'm interestedin how I can use this with new chip +designs prior to tapeout... Interesting. it could certainly be made into a good driver/monitor... Were you one of the guys pushing for a more modular design? yes, driver could get deveoped in Windows. *** Signoff: smapnipss () I usually have some sort of C model for the chip hook it all together and try it out... That would be nice. Would the C code your are writting be able to be +open sourced? haha LOL :-) ;) Laugh Out Loud or Lot's Of Luck you're choice!! *** eks|x (eks@HSE-Montreal-ppp123837.qc.sympatico.ca) has joined channel +#Bochs hi guys :) sorry, I'm just trying to picture the open source chip design... +People have talked about it, but it's hard to see it happening. hi eks Hi eks! Hi eks! :) Not really.... eks: we're just talking about our answers to a little survey at +http://bochs.sourceforge.net/ircsurvey.html I worked in the IP industry before Phoenix bought us... Oh well, I guess bochs needs more speed before it needs IEEE +1394 anyway... people are starting to do open source Verilog depends on how prevalent FPGAs become in configurable consumer +electronics. Or faster platforms to run Bochs on. Anyways, we're getting very sidetracked. yes good point :) so I heard several votes for better mouse support (bug1) Definately. what I would really appreciate is having the fpu more closely related +to the debugger, aka fpu stack on cpu_dump ah, I never thought about that. Is your 'Disk Image Tools' about how to build HDs with certain OS's +and apps? bug1, bug4 eks, that should not be hard to manage. Bochs must have the values in +there somewhere, you just need printed out right? bug3 sounds like a nice one to fix too... yes, bug3 is tough though well maybe not tough, just lots of OSes out there. feature7, feature2 bryce: right Yeah, at least it would be nice on Win9x. for the cdrom support, what if we made a portable way to read from a +cdrom disk image? yes, but if we get the CDROM model right, we're done. bryce: we have some 3D computing code we try to work out in a gaming +station, we worked out out own fpu stack out code, but it would be kinda neat +to have them out on cpu_dump yakovlev: cdrom model shouldn't be too hard to implement, close to hdd +model Bryce: So that part is under feature 1? not as convenient as the real cdrom (need lots of disk space) but then +the job of reading the raw cd is left to platform-dependent tools that are +already around. that would be good, Bryce. I was surprised that wasn't there already. Would it be possible to make bochs pretend /dev/cdrom was a cdrom +image? I think we just need to understand a few of the ioctls (maybe snatch +from linux kernel code or something) to see how to read table of contents and +stuff well, it would take some looking, but basically, yes. just out of nowhere like that, any of you familiar with 'bfe' ? ;) We'd have to add the removable media controls to the CDROM +interface, but even that isn't ridiculous. eks: can you add that as a feature request on SF? otherwise I promise +I'll forget. :) it's a nice addition to bochs I think bryce: I can do that,sure :) bfe: I looked at it once, and asked the author if he wanted to +integrate it, he's not that interested. yakovlev: Could it do something similar to Win4Lin, where the guest +OS handles how the CD's are mounted? (i.e. automount, standard mount, etc.) could do that for all the physical I/O if you wanted to... well, bochs needs to know if a CD is there or not. bryce: yeah, I know, but it's a good tool, I use it often, mostly to +generate cpu-flow tracing in the history file bfe is actually what started me thinking about guis in the emulated sense. Hmm... Beyond that, it's just a file. yakovlev: one problem I see is changing the actual cd ocne bochs is +started Could it probe the CD-ROM drive every time it is requested? slow Wrong layer, guys. All bochs needs is: How's autmount do it? CDROM_INSERT(). CDROM_EJECT(). the OS interface code figures out when to call them. That'd make sense. yip cdrom would be a big help in installing new software then maybe DISK_SEEK, DISK_READ, and DISK_WRITE to complete the +set. what's the interface look like between the IDE controller and the +HD/CDROM? if I manage to make a larger-scale survey out of this, anything you'd +like to add to it? Does it run ATAPI commands? yes, ATAPI. bryce: perhaps a question on the most important feature of a new GUI? feature10: GUI for configuration and runtime control oh I see like what do you want the gui to do? Right. Answer: everything. Assuming that the GUI could have lots of different things (GUI +debugger, GUI config, etc.) Bryce, I like that answer. should we talk about guis now? Answer: everything. I want to push all the interface as far away +from bochs internals as possible. :) Notice a recurring theme in my messages? :) any of you tried simnow! ? yakolev? layering? ;) I like what Greg said in an email, that we can get separation just by +putting the GUI code and the bochs code into different libraries that are +linked together. Do I have that right? Nope. My impression is that it contains almost an entire +microprocessor worth of simulation data. Sort of. Yeah, I liked that idea too. It doesn't necessarily HAVE to be in a different library, but +that's the idea. Well, actually one should be a normal program that requires the +shared library that contains the other code, right? Also, I used "GUI code" very loosely. right, tim. no reason to require shared library, but that is one way to do it. Tim, I mean. I think that would be best. (not shared library) *** Psyon (exodus@exodus.psyon.org) has joined channel #Bochs Shared library good, but could be compiled separately. hi Don! Im here! Or rather, what I mean, is Greg's idea. I have no preference in how +it's done... I'm just thinking in terms of Perl. :-) What did I miss? HEY Hi Don! it will all be on the web site. hehe ok we're starting to talk about the GUI! well... what am I hearing about Perl? Good that is my dept? we're going reimplement all of bochs in perl. oops Yeah, if it is dynamically linked that would be good. That way the +GUI code could be switched without a recompile. I meant ! Uhh... is that a good idea? :) (that was a joke) oh ok well... You can write perl modules in C cant you? :-) Maybe... it wouldn't require a compilier then. I was told write a bochs perl module that would allow you to run bochs and have events caught by perl Anyways, I used "GUI code" to refer to any thing that interfaces +with the host system. Ahh, but then we have to port perl to MacOS. They have a Mac Perl dont they? Yeah, I think that's a good definition... so anything that could be +considered "client code" right? btw, perl is an easy to write into language, but afaik, it's never as +fast as optimized-compiled C Yeah, basically. greg, how is your model different from what Bochs already does? we have cpu, iodev, and gui all in separate libraries. Not very. iodev is pretty close to CPU. so the new model reflects the Plex86 plugin structure? Is the current GUI library dynamically loaded? so with some makefile tricks we could compile them as shared +libraries. not dynamic, no bryce: feature added on sf (fpu stack dump) eks: thanks uh, I don't know anything about the plex86 plugins, is it based on +shared libraries? That is how Plex86 does the GUI and IO dev stuff now isnt it? Right, but we may want to clean up some of the interfaces a bit. I know the GUI is bryce: Would it be difficult to make it dynamic so the GUI could be +changed like a plugin? it compiles it as a shared library the GUI is in the bochs plugin hehe uni: There are just certain functions that are needed to be +implemented for the GUI Methinks plugins is going a little far. a shared lib that has them wouldnt be a problem it seems like compiling as a shared library is not really an important +feature. it can be done on some platforms and not on others, big deal. I'm using plugins in the loose sense of being able to swap in another +module without having to recompile (like Linux kernel modules) it reduces the size of the binary, and maybe you can load up only the +device models you want that time. the bad thing is that shared libs are done differently on different +plat forms psyon, that's my worry too THey are compiled differently are you guys going with bochs using gui modules or gui using bochs +module? and... DLLs in windows have to have the exported functions defined __declspec(dllexport) or have a .def file I don't see the real need to swap gui very often without recompile,but +I might see where switching cpu would be a + eks|x: I would think the GUI would use the bochs module. eks: it might come in handy with somethign like Bochs-RFB where one time you want to run natively then switch it so you can run over a network yeah but the compiled EXE is so small I just keep two copies one bochs without debugger one with it eks|x: It would also be handy if you wanted to use the console gui, +and then wanted an X11 gui. modules might let you make a binary distribution with all the GUIs +available at .bochsrc time, rather than only one uninet: how often do you switch from one to the other? How big is the compiled bochs on linux? eks|x: never. But I haven't actually even tried the console GUI yet. I havent looked at it in linux in a while -rwxr-xr-x 1 root root 1962770 May 29 20:24 bochs whoa! its like 400k in windows with fpu, debugger, and disasm wait [bryce@monster bochs-1.2.pre1]$ strip bochs ls -[bryce@monster bochs-1.2.pre1]$ ls -l bochs -rwxrwxr-x 1 bryce bryce 441036 May 30 22:44 bochs* 384kb that is an out of the box compile of BugFix 2 1.1.3 with a few addys I don't think it's the binary size, it's the ability to mix and match +parts that's powerful, right? Well, it sounds like we want a bochs executable which loads both a +GUI and a BOCHS module. eks|x: the GUI module would probably be best in Binary releases. If +you could switch from say a theoretical Motif gui to a GTK GUI or QT GUI... ...it would be good since one binary would work on all of those +GUI's. what about having a main binary using a bochs module and a gui module? you can do any of these, however you want. This is where having a separate process for the viewer and the emu +comes into play that would make it easier to switch the viewer type eks: jynx bochs module with no debugger, optimized for speed, or bochs module +with debugger and SMP enabled, etc. or modules across a network? I haven't used shared libs much. does that make it hard for debugger +to step through the source and tell you where you are? MarkK: That would be another nice reason for modules. RFB could be +used just by changing modules. I actually don't like using shared libs for the main bochs at all. Too hard to make portable. Usually a debugger will tell you which module (lib or dll) the code is +in I'm also thinking about sim speed.... But compiling them separately would make them useful for other +things. I can link up 5 or 10 PCs if it's networked together they are already compiled separately, as static libraries Well, a bigger wrapper. -rwxr-xr-x 1 eks users 1472404 May 30 22:42 bochs bare bochs 1.1.3 bryce: but since they are static libraries, that would mean they need +to be recompiled for each change, right? markk, are you thinking that several pcs would simulate it faster? Eat up most of iodev, for one. just thinking it might, in the long term markk: maybe, probably the first step is multithread support on a +single machine Also, it might simulate concurrency better later on... *** Roadkill (~ondrej@baikonur.orbitec.com.au) has joined channel #Bochs when you want a disk model running in parallel to a VGA model that sort of thing *** Roadkill has left channel #Bochs If I had one PC running the HD model, and it had the disk image Another big question is what GUI library to use, and I think it should +be determined by whoever is actually motivated to do some coding. and anotehr running the CPU model... then things would be a bit more like a real PC (this is later though) bryce: Like I said (on IM) I'd be willing to make a QT GUI, but I +would need to wait and see how someone else created a C++ gui for bochs +first... Mark, that's a lower down distinction than where we're talking +about. I'm a hardware guy! ;-) hehe :) gimme a break! ;-) markk: we should try some of these things. I'm afraid that bochs +spends very little time simulating the behavior of the devices and TONS OF +TIME simulating all those complicated x86 instructions. yes, and I think no time (maybe) simulating the chip set right now? I think if we are going to make a GUI that uses a toolkit, it should +use one that Is cross platform QT has a windows version but it costs we might be able to get a special version for bochs though what about Tk or wxWindows? is wxWindows any good? I have no idea, their website says it is :) but it's cross platform, all C++ based, and open-source Psyon: I was mainly thinking I could port what ever free +crossplatform GUI came out to QT, after the initial work was done. I've never +done a GUI before, so I probably couldn't do the initial work. All I can say is that it seems to me C++ is the way to go... (versus C for the GUI) Well... I dont see why using the standard bochs GUIs are a problem neither do I. using a GTK of some sort would still have code for Windows and X11 in +it Psyon: GTK for Windows isn't very good at the moment, is it? its decent the Mouse code needs work ive been looking at ways to improve the problem is the way events are handled the problem with the current one is that there's no framework to add +anything at all since handle_events() is only called every so often Wouldn't it also cause some problems since it is C-based, where as I +think MS's commonctrls are C++? do to the emulation, the time between calls is a sec or so so it slows it down Who here is pretty familiar with how the mouse emu works? not me not I. nor I basically, you're the expert :) when i say handle_events() do you guys know what im refering to? I've looked at it, but haven't had time to really get into it. well... same here Are you saying the mouse code is polled. when you amke the GUI ? you have to keep your own queue of mouse and key events then bochs calls handle_events() in the GUI code and you have to pass it all the events and all of bochs runs in the same thread so it sometimes has a delay between cals to pass teh events to bochs you use mouse_move() or somethign like that and I was thinking about just passing them to bochs as they come in but the window callback for events is on a diff thread and I dont know if that will cause problems how often does handle_events get called, and is it on Bochs emulate +time or real time? It seems to be called every .5 to 1 sec Hmmmm, sounds like something potentially worth moving from the GUI +layer into the general bochs layer. when there is heavy emulation being done Well... if we made IODevs have diff threads it would help but is it scheduled by the real machine's timer, or by bochs timer +(like N instructions have gone by) Bochs just has it in a loop Its called as often as It can be i guess from what Don is saying, sounds like bochs instructions. I'm afraid I need to look at it more to be able to know what is going +on. // Called periodically (vga_update_interval in .bochsrc) so the// the +gui code can poll for keyboard, mouse, and other// relevant events. I tend to agree with Greg that it's bochs' instructions There that is from Win32.cc in the GUI dir Hmm... I never noticed that I wonder if I set vga_update_interval lower but still with bochs all in one thread it would still cause latency I'm worried that we're getting far far away from gui libraries and who +wants to write some dialog boxes... :) hehe I want to fix that mouse too, some day. I think that is a big part of the useability problem The GUI code is already seperated into a different module, right? (or rather library) how well does the mouse work in X11? greg and don said, what's wrong with the current gui ? tim: right tim: libgui.a There are some optimizing and cleanup that needs to be done with the +current ones but that is all eks|x: Do you know if it is done in C or C++? tim: seemslike c++ to me it is technically C++ bx_gui_c::handle_events(void) but doesnt use classes ;) oh It sounds to me like the way handle_events is used is awkward. guess it doees hehe eheh Bochs is a wierd mix of C++ without using a single feature of C++. :) heheh Ah, thanks Bryce. greg and don said, what's wrong with the current gui ? I dont think anything is and I think that's important to hash out So, theoretically, it wouldn't be hard to create a GUI using a C++ +toolkit? It might look to plain for some people No GUI configuration of parameters. the thing I'm missing a LOT is the ability to put up dialogs Psyon: It looks rather bad, and doesn't have any config tools. such as "You just got a panic. do you want to continue" hehehe or "Now choose the disk image you want to be in drive A:" I think a live register display would help for debugging too that sort of thing Speaking of "You just got a panic. do you want to continue?" making swapable floppy images wouldnt be hard beings you can do it now just unmount it how? copy a new disk My 9 year old wants me to come say goodnight and remount bye Psyon: if you mean live reg update, simnow! made the mistake of doing +such, should be on/off thingy renaming the disk image file? markk: good night! yes later *** Signoff: MarkK () just copy the new image to the one that is named in bochsrc well... we would want to make it loadable but im saying copying the image file is awkward. the features are there to do so yeah, and then click the stupid disk icon twice? it sucks! And the size can't change. oviously you would unmount... change the image name in memmory then remount Im just saying it should be hard to implement what's keeping us from having a dialog box? And you often forget to unmount, or forget to remount. IMHO, no GUI toolkit to write in I see your point. Well... just make a new toolbar button that lets you load a new image psyon: should or shouldn't be hard to implement shouldnt be right well... the GUI shoudl have access to all the internal bochs functions init_disk or waht ever it is What do you mean all the internal bochs functions? I VERY MUCH disagree with that statement. Well functions that arent in the GUI code more toolbar buttons would be fine, but I think we should use +wxWindows or Tk to allow us to write a somewhat friendly set of controls for +disk changes, choosing how verbose the logging should be, setting IPS The GUI should have access to only a limited number of bochs +functions. (or something other than having to write native gui code for every +little thing) reducing the number of interaction points reduce the error rate easier to debug I was thinking, what if we used something like an STL dictionary +and/or list of parms that the GUI code gives bochs on startum. bx_floppy_ctrl_c::init( ) bryce: I think Tk would be a mistake since it really doesn't work +very well in Windows (in my experience). we haven't even agreed that we need any gui library, that's what I'm +getting at. no, the GUI should get some well thought-out interfaces, not +willy-nilly access to bochs internals. BAH! I cant find the function that ejects it IMHO just making all the interfaces to the GUI through public member +functions is a good way to "define the interface" Sort of. then the .h file for the outermose gui object says exactly what you +can and can't do with it. What we really need are acls. ? access control lists? For instance, some disk public member functions should only be +called by the emulator. others should only be called by the GUI. can acl be checked at startup only or does it need to be checked at +every function call? I mean that the GUI can only call public member functions of the +interface object, not that the GUI can call public member functions of any +object it can find. yakovlev: Right... the GUI doesn't need access to everything. Having a single .h file with the functions that are allowed to be +accessed outside would be listed there. acls was just saying that public vs. private isn't descriptive +enough in some cases. Hmm.... (kinda old topic) but If im looking at this correctly you can +call bx_floppy_ctrl_c::init() with a new image name it bochs should reload it and it can be a new size for example, compile the gui library with only the .h file of one +bochs class, an interface object whose methods define exactly what a GUI can +do. Oh, okay, that's exactly what I'm advocating then, Bryce. maybe, but bochs doesn't handle floppies right anyways. that seems like a smart idea what doesnt it handle? I reads my real floppies now :) read with MT=0 ;) hehe They should be interfaced to the GUI as simply a file interface and +ejected/inserted. it's not separated that well. file interface meaning a large set of unorganized data. hehe maybe the first step will be to clean up the interface between current +GUI library and the rest. Question: if and when the GUI gets a config dialog, how should it +decide whether to save changes to ~/bochsrc or to the bochsrc in the current +directory? Right, that's the idea. File/Save menu? wherever you choose or ask on close if changes are to be saved Ah, that would make sense. just like a word processor would do What's a bochsrc? bochsrc is the config file no, you missed the point. :) Psyon: good point, that would permit runtime only changes. bochsrc = some place to save the settings that you like, in some form so that you can get them back right. and also send them to somebody so they can duplicate your setup Would be nice to have something like VMWare, so that when the program +starts it asks what configuration you wish to load Something which exists totally outside the bochs emulation layer. and has the option to start with power off Psyon: I agree, that would be VERY nice. greg, yes only that gui part would be reading and writing the bochsrc +I think. VMware has a very well thought out GUI, I think it would be a good +idea to use a lot of it's ideas. hehehe VMWare is quite good on the gui side, simply missing debugging :P Watch out for patents there. They're going to be looking at us +fairly closely. hehe are gui patentable? yes, I've been handling different configurations by making a different +directory for every OS that I can run well... I dont think that a start with power off option is patented I just like that idea, so you can start the program and each one has its own .bochsrc, disk images, and symbolic link to +the most recent bochs binary and ROM make config changes then power on the system and since there is already a power button on the toolbar yakovlev: you would just want to copy the general ideas, hopefully +with enough improvements that the VMware people wouldn't even care. I'm not saying I like the "each os in a different directory", only +that that's what I've resorted to for now. unless we do a blatant copy of their toolbar or something, I don't +think we're in trouble. can you run bochs with a config file as an argument... like "bochs +mysystem.rc" if not not sure if it works now, but it would be useful sometimes yes that is something else that might be done in the next release or +something go for it :) actually I thought it already worked as a command argument. I think all options can be done on the command line cant they yeah yes something like bochs "boot:c" "diskc:blabla" I mostly look at the GUI code so im kinda dumb as to how the rest +works hehe I think we should be able to do basically any kind of .bochsrc work in +a GUI, if we ever expect to make it a user-friendly thing. yeah I'll make up a generic interface in the next few days and post it +to the list. It'll be VERY generic. That'll be a RFC. I think the current way of bochs telling the GUI what Buttons to make +on the tool bar could be carried over to a menu system also and once you've got that, it's not much of a stretch to have runtime +control of some things like IPS and log behavior too For now, I'm headed to bed. 'night Yak. cya greg, sounds great! All you West Coast boys have fun. :) good night night *** Signoff: yakovlev (Java Chat http://www.undernet.org/webchat.php) bx_gui_c::headerbar_bitmap oops right now bochs calles bx_gui_c::headerbar_bitmap() and +bx_gui_c::show_headerbar() to make the toolbar something like that could be done for a Menu system basically Psyon: I think the bochs gfx window shouldn't have icons at all well... im saying the same system could be used to build menus Psyon: I think the gfx window should be a videocard dev using the gui +toolkit so that the GUI doesnt have to be changed with each new option right, something pretty generic can be worked out like the toolbar +thing eks|x: Wouldn't removing the icons lower the friendliness level below +it's already "lowness"? the gui interface would be using the gui toolkit for the icons +directly uninet: if you build up a gui to control bochs, you can have icons in +it, no on the bochs output bx_gui_c::headerbar_bitmap() is passed a bitmap ID returned by an +earlier function, the alignment (left or right), and a pointer to a function what I would like to see, is a window with nothing in it else than +what you see on the crt of your comp eks: the current Icons are just simple bit maps used to display the +buttons nothing stopping us from making that A toolbar button or a menu item and another window that is the bochs control/debugger/etc I would like a full screen option :) Ive been looking at how to do that also definately :) the current tool bar messes it up a little yip but I can work around it at least for windows Does anyone here know how to convert normal bitmaps to the ones in +the .h files in the source code? having it all in the gui bochs control would allow that Im not as familiar with X11 programming tim: sorry, not me uni: the ones in the H are just 1bit bitmaps we need to choose at what level the gui/bochs interface should talk. +I guess this is what Greg said he would work on yeah, the rfc Pyson: Win4Lin accomplishes fullscreen by starting a new X session on +another tty, and then maximizing the window it's in... but there is everything from: Now print dialog box #7, which asks +what disk you want to insert now Psyon: 1bit bitmaps? to: create a dialog, with a text field here and a button there yep bryce: the 'to:' is a gui toolkit job each bit represetns one pixel this is a large space, and somewhere in the middle is the best answer either black or white or forground or background #7 is the actual job of a gui front-end psyon: I think he wants to know how to make a new 1-bit bitmap to +substitute I should say monochomr Psyon: Ah, is there anyway to do color 8 bit bitmaps this way? We would have to change how they are passed to the gui bryce: Yeah, although perferably also raise the quality above 1-bit. unsigned bx_gui_c::create_bitmap(const unsigned char *bmap, unsigned +xdim, unsigned ydim) char *bmap is the bitmap and that function in the GUI makes a native bitmap what tool can convert a GIF into such a bitmap though? don: seems to me like the internals of the functions uses one bit Hmm... yes You might have to do it manually Manually? How so? yes bryce: afaik, The Gimp under X, or photoshop under Win picture an 16 by 16 square what format? XBM ? bryce: monochrome bitmaps .bmp that would take 4 bytes to display wait Psyon: is the routine actually using whole byte of value 1 or 0 only? well it uses the bits not the bytes that icon currently looks like this: static unsigned char bochs_icon_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, +0x00, 0xe0, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, +0x1f, 0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc3, 0xc3, +0x3f, 0xfc, 0xc3, 0xc3, 0x3f, 0xf8, 0xc1, 0x83, 0x1f, 0xf0, 0xc0, 0x03, +0x0f, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, +0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, +0x00, so a pic shouldn't be bigger than 32bytes 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xf0, 0xc0, 0x03, +0x0f, 0xf8, 0xc1, 0x83, 0x1f, 0xfc, 0xc3, 0xc3, 0x3f, 0xfc, 0xc3, 0xc3, +0x3f, 0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc7, 0xe3, 0x3f, 0xf8, 0xff, 0xff, +0x1f, 0xf8, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; So if you created a 1-bit picture in the gimp, and saved it as a bmp, +how would you get it in that format? make that into 1s and 0s and you will actually see the picture no, BMP is not the same as a C header file! you have to convert that to a BMP tim: you need some tool that converts binary->c headers eks|x: Hmm... do you know of a tool that can do that? tim: a search on freshmeat should do that for ya I could prolly make one tim: or wait, are ya under win? this sort of crap is what a GUI toolkit should be doing for us read BMP or GIF or something, and execute the right code for each +platform to make that the icon. bryce: right well... GTKs will want to use XPM or Jpg or PNG which would look nicer png seems fine to me eks|x: Linux. tim: freshmeat.net <-- solution for ya ;) we are using a VERY low-level toolkit and that's why we have icons +that look like a C header file. I think we could easily convert this to use 256 color bitmaps eks|x: thanks. I think I'll try my hands at creating some new bitmaps +then. Psyon: that would be nice. each byte representing a color in the color table that bochs uses Psyon: normalized palette or each their owns? k normallized bochs palette bochs has an internal pallet Actually... looking at this btw, one annoying thing I've seen is the actual colors used when +displaying text in bochs (16 colors) the GUI code would all that needs to be changed just specify the bitmap the same way in the header is this palette easily modifiable? create_bitmap is just passed a pointer to the first byte the they dimensions of the pic so with a mono BMP the size of the pic is (X * Y) / 8 but create images still wont be real easy the bytes in the .h files are not in BMP format Hmm... I wonder how Kevin did it? I'm going to sound like a broken record... he drew them out by hand :) like an ASCII artist would ....use a toolkit! why? Toolkits take up too much space :) eheh a cross-platform GUI library has to deal with this problem Psyon: So you would just put out hex symbols until they looked like +something? "let's write bochs in asm, so it can fit in 100kb" ;) of icon image formats or whatever Yep hehe I think the current way of doing the GUI is nice its just the actuall GUIs that suck heheh don: any idea for that 16 colors palette used to display vga text? hard to fix? reword that well, clear white gets out as light blue.. etc, colors are screwed * eks|x should add a bug report.. Hmm... So most likely it would be easier to wait until we switch to a +toolkit to work on the icons? hrmm.. the vga color palette, when displaying text in the guest, gets +out wrong actually that standard VGA pallet kinda shows it as offwhite I think Tim, IMHO yes :) and text looks fine to me Psyon: colors are screwed on my side The text looks good to me too... just like a normal console. Psyon: light blue is dark blue bryce: thanks. Psyon: white is light blue, etc It might be the GUI code then eks|x: Are you running at 256 colors? each char on the screen is represented by 2 bytes on X windows, my text colors are always messed up unless I quit +netscape first, and then run bochs one is the character and one is the format options tim: full 32bit color forground and background color you running in X or windows? X ok eks|x: do the other apps around Bochs have weird colors too (when +bochs is running)? can you send me a screen? I have 8-bit color I guess, so netscape sucks up all the available +colors , leaving my text purple or something * eks|x is an anti-windows kindof guy ;) tim: nope, I can screw in The Gimp in full color no problem but bochs +is always screwed, alone or not wierd the 0x07 color in text is fine the 0x01 color is very too dark and the 0x09 is like the 0x01 should normally be eks|x: Hmm... could it be an misconfig with bochrc's pallet settings +(I think it can have a shared or internal pallet, IIRC)? 0x0F gets out as the original 0x09 That is proably the internal bochs Pallet that's my guess too http://bochs.sourceforge.net/screenshot/freedos.png that screen shot looks fine so maybe its just you :) eheh actually it looks yellow http://bochs.sourceforge.net/screenshot/kidos.jpg but that one seems ok ehe I need to set up another linux box to play with bochs on I dont like to run it on my web server the X11 GUI uses XSetForeground and XSetBackground so it maybe a problem with those Yeah... looking over the X code I woudl say it is somethign with your X color pallet Did I say somethign wrong? everyone is quiet? *** Signoff: eks|x (h51.us.undernet.org McLean.VA.US.Undernet.Org) *** Signoff: bryce (h51.us.undernet.org McLean.VA.US.Undernet.Org) *** Signoff: uninet (h51.us.undernet.org McLean.VA.US.Undernet.Org) *** Signoff: Psyon (http://www.psyon.org <-- It's all that and a Unix manual!) *** uninet (~tbutler@c1331724-a.schrls1.mo.home.com) has joined channel #Bochs *** Psyon (exodus@exodus.psyon.org) has joined channel #Bochs *** bryce (~bryce@debussy.ne.mediaone.net) has joined channel #Bochs Ah people are posting again... I thought everyone had left and my +client just didn't sense it. Psyon: Thanks! Hmm.. Perhaps I can make sense of some of this. well that kinda explains why he did it that way In windows I an make it use 256 color bitmaps not sure how to do it in X11 or Mac for that matter :) :-) I suppose this is a good reason for me to finally apply myself to +learn C++. This chat seems to be dying a slow death... I'm back, sorry Hey Bryce! who's left hehe eveyone besides myself and Don. me (and you of course) are you still talking about icons :) Yup. Yeah, but we can change the subject to something more important hehe Sounds good, I think I'll sit it out for the toolkit to be decided on +(if we even decide on one) I'm hoping that someone has actual experience with a cross-platform +toolkit or is willing to learn hehe I can learn I guess since we have bugs and features galore in addition to the gui to work +on too The difficult thing is, there are lots of qualified people, but not +so many that actually know bochs. I know the bochs GUI parts at least the current way I'd love to help... maybe I could help out somewhat... I would say it doesn't matter if they know bochs, it only matters that +they care about it enough to spend some time on it we need to help define the interface That is my big problem right now I have to kill some of my other projects and devot time to the major ones killall *projects hehe (we = people who do know bochs and know what the GUI needs to be able +to do) http://www.perlhq.com <-- I have to keep stuff on that page updated. my road map is: fix up 1.2.pre1 then call it 1.2 put binaries of 1.2 everywhere under the sun hehehe and then we have a chance at getting more people aware of the project Sounds good. I bet there are lots of people who stopped looking at www.bochs.com +during the last year I'm suppose to get it up everywhere under the sun, right? I'll be happy to help with that, once we have a 1.2 that we're proud +of. It seems to me, you should be proud of the current 1.2, it's a lot +nicer being able to type bochs-dlx immediately after install, and try it out! :) I need to fix up the raw disk code a little I'm nearly proud of it :) right now its a hack I need to make it proper Will that be difficult? no It just assumes a size of the disk well even having a 1.2 that makes people say "Wow that has a lot of +potential, I wonder if there's a new one" would be good enough _stat() on windows doesnt work when \\.\a: is opened just need to make it check to see if its using a raw disk or now not bryce: I agree. If people see Bochs poping on Freshmeat and such +every few weeks, it might make people realize this project is alive! Just need to get disk info a diff way psyon, do you have cvs? I can set it up again it would probably help in staying current or maybe CVS snapshots are better, I don't know oh you just mean to get the code yes i thought you meant the CVS server no we have one of those now I have CVS on the linux box Ill have to get a client for this one ive just been using snapshots whatever works if you are actively messing with the code, cvs update would be useful random RFB thought: if we get networking going on bochs, you could run +vncserver within bochs and connect to it with a vncviewer on the real +machine, right? Yes might be slow but it would work slowly What is the difference between RFB and VNC again? RFB is the protolcol VNC is the program RFB = request for Bochs? Ah, I see... thanks. Sorry, I know that was a dump question. brb... potty break hahaha I don't know if that was what AT&T was thinking, but I think that is +a good explaination of that acronym :) Well, and then there were two. I think it might be easy to put those few survey questions on a +SourceForge survey That would be nice... to get a feel for the general opinions of the +Bochs community. ok bak I first looked at the SF survey as a way to handle the testing forms, +and it really was not good for that, but for independent questions like +these, it would be fine. I just may be tooting my own horn... but I think bochs-RFB is a good +way to separate the emulator and the GUI :) How do you set it up? bochs RFB? tim: you have to be admin on the project Don, I agree, I think RFB is a very good system of dividing the GUI +and emulator. and then type in the questions and answers, it's all web form stuff Psyon: I meant survey forms. bryce: Ah... I see. That's why I couldn't figure out how to set up a +survey. :-) Don: doesn't RFB imply that you are sending a bunch of pixels for each +VGA character, not just a single ascii code? Uhh... Yes afk. We need to write our own proto to optimize it did you have to "draw" the toolbar yourself? but I went with RFB since there are so many viewers yes I drew the toolbar but all teh GUIs do that right I just draw it in the local frame buffer and send it like the rest of the screen updates so if you were going to make a dialog box in Bochs-RFB, you would +really have to do it without benefit of any library. Right! like a button, you have to render it, handle clicks to it, etc. yeah back. I never said there werent draw backs but Could the client vnc GUI use a toolkit to render a button? I was going for compatibility of the viewer no a VNC client is VERY simple, right? VNC client just draws data sent to it Yeah... could the RFB protocol be extended for "Boch Enhanced" +clients, while maintaing compatiblity with normal VNC clients? Hmm.... Sure VNC is open source right? RFB is event based Yep so adding new Events for Bochs Enhancements have you seen Xvnc the VNC-X server for linux would work yes That way, an enhance client could do the fancy stuff like (dialog +boxes) where the normal VNC client could just continue doing what it does +now... We would be better off just modifying it all Xvnc is portable, since it has no display code only networking code, and just base it on RFB It would be better to send a text update event and just send the chars but that will only work while in a text mode when In windows it seems like you could hack their Xvnc so that you could use any X11 +library you like Text would still have to be sent as images bryce: I think you are right. You know... the X11 library could be used to draw dialog boxes, handle all events, +etc. without having to rewrite low level gui code. I guess to extend RFB to work how we want it... you would only need to +add two events RFBEventGetUserInput or something to pop up a dialog box... that would be sent to the client RFBDialogItemEvent sent to the bochs server those would be followed by data as to which dialog item was acted on or what type of input to get If the client and server where on one computer, would there be much +of a performance hit over the current system? There is a bit yes Bochs-RFB runs slowly even on the same computer, because I have not +implemented compression yet and passing all the graphics through Winsock casues a bottlnet bottleneck But if you did, do you think there would still be a hit? not as much now bochs uses the lowest level APIs to draw graphics, and I think +anything else will be a performance hit. bryce: that's true. Then why do you want to use a toolkit? I'm advocating GUI libraries for dialogs and control panels and suc such NOT as a replacement for the current VGA display window oh ok which is performance-critical I still am not sure that Don's idea of using RFB to seperate the GUI +might not be the best way to go... (no matter which toolkit is used) I dont think it is the best way to go I just think its a good start it can be done, but I think a much higher-level communication between +bochs and gui is better the concept and idea did you put bochs-RFB in the CVS tree btw? Right, it would need to be worked on, but the concept is good. like gui says: "Hey Bochs, I want you to change the floppy disk to +/home/bryce/newimage.img" and bochs says: "Ok, I did it" I dont think it should be done like that I think it should be done how the current toolbar is done bochs tells the GUI to make a button and gives it a function pointer the RFB way would be more like, gui says: "hey they clicked on +312,12" to be called in this case it could be giving an ID and then when the Button or what ever is pushed it would tell bochs that button ID has been pushed and bochs will act on it and bochs says "ok 312,12 looks like the reset button so now gui +should display an "Are you sure" message" Yes that would work really well... I like the fact that that's general, and higher level I dont think using the coords of the click is a good idea then we would be limited to using images again but I'm afraid that a whole protocol like that will not give the GUI +(whoever has to turn the dialog into actual API calls) Hmm... Well, on non image things, couldn't it say "hey the user clicked on +menuitem1"? a chance to make a decent looking dialog uninet that is what I was thinking psyon, so what type of messages should bochs be telling the gui? That is how the current one basically works Ah. buttons are easy, how about dialogs? The current way of doing it is a good concept it just needs improving Well... What are the types of dialogs that will be needed? Yes/No, File, OK what else? For each of these devices (HD, CMOS, CDROM, Floppy), choose what well... just in general a panic, debug, info, and error message should do? well... crash, print, or ignore? Config dialogs too, right? Oh yah i forgot the config stuff Hmm.... that's a complicated one, and I think you may end up with the best +looking dialog if you send a very high level message, like "show the log options +dialog now" I would like to see the dialogs defined by bochs rather than trying to make your protocol SO general that bochs can ask +for any kind of dialog it might need and just displayed by the GUI like have bochs send the GUI a template for the dialog and draw it based on that basically like a web form? yes HEY! oh no! thats not a bad Idea use XML or HTML to do the dialogs :) then when submited... data can be passed back to bochs in a URLENcoded +string Couldn't the GUI have the config template on the GUI side rather than +have bochs send it to it? boot=c&hd=linux.img stuff like that uninet: the GUI wouldnt have to be updated as much if bochs told it +how to make it It certainly could be done that way, and if you're very sneaky you +might use your browser as the viewer. Well... you wouldnt use it as the viewer cant draw the VGA screen to the browser well... you could push it to it as a streaming video no, VGA screen is low level APIs as it is now otherwise you add lots of overhead Could do I mean the control panel Well, if you were using the browser as teh viewer, couldn't the VGA +screen be shown in a Java applet and config handled by normal browser means? char *bx_gui::ShowDialog(XMLCode *gui); XMLCode beings XML or HTML code for the form yes, but slowly! We don't need any more speed penalties here. and the return would be a string much like the QUERY_STRING of the web +form parsing would be a pain though and might make a performace hit are you thinking of a custom viewer or an existing web browser? custom viewer ok well... there are plenty of open source HTML viewers I'm thinking nothing should go through this interface that is +performance critical anyway. could steal some code to rended the HTML forms Although what toolkit would be used to render the HTML forms? :-) anything performance critical should either go to the existing +low-level API, or logged directly to a file. What is with you people and toolkits? :) I dunno... :-) I was just thinking you now have the same problem of +rendering lots of things, and the added complexity of an HTML rendering +layer. well... it would only be HTML forms not full HTML maybe that is a bad idea but its an idea It sounds good to me, I was just thinking you still have to figure +out how to render the widgets on the form. well you can write XML for a form that describes exactly what the GUI +needs without it having to be standard HTML yes and libXml is cross platform but is any of this a benefit? hold on.. let me clear something up. ok I guess that the GUI could be seperate, but still extensible. Will the GUI be a separate process... or the same one? we need to make a decision on that I would think a seperate process would be better (better cross +platform support), but that's only me. it could be either way before we go any farther I think it's no problem to open a network socket between them, +although then you need portable socket code and some semblance of security Well, using XML for dialogs would benefit for remote viewers most all socket code is pretty close to the same in the sense that what if bochs is running on linux and being viewed +in windows or Vice Versa The nice thing about seperate processes with network code is it +doesn't matter if the viewer is on the same computer or 2,000 miles away... Even if it is the same process it would work ok ok, sockets are fine and same process or different process is fine Ok... but it seems like there are disadvantages to sending XML too can we see any problems with using XML for dialogs? why? as opposed to just saying "Ok gui, show dialog number 7" well... the XML code can be cached do like Idea: What if the GUI and Bochs sync on startup with the XML forms... if you tell it "show #7" then you can make the dialog look as good as +possible for that system which is not a hard task ...so that once it was started, requests would just be show7, or what +ever. yes thats what I was going to say if you send it XML, then the viewer's job is to make anything in the +world look as good as possible, which is a hard task send the code with and ID number They only big problem im seeing with XMl is how to return data back to +bochs user URLEncoded strings would work anything would work Well, the nice thing about this too, is that even if the different +platforms had different GUIs using different toolkits (or lack of), the menus +and dialogs would look the same. you have a binary connection, send bytes? true I think we should just do the dialogs in XML one way or the other then we dont have to worry about crossplatform toolkits Exactly. Then the best toolkit for each platform could be used, rather than +simply the lowest common denominator. yes you do have to worry about writing a general form viewer for every +platform, which is not exactly simple Hmm... nor, one might argue, in the realm of bochs development at all :) True... maybe we should FIND one rather than write one Well, you could port the existing GUI to this system (without +configs), and then as voluteers appears willing to create an "enhanced +viewer" it could become available. we could make our own toolkit aaaaaaaaah :-) :) Well, unless we make our own toolkit, BTK (?), or keep bochs +toolkit-independant (where it uses the best gui for each platform)... You know... the whole cross platform thing is what is making this hard ...there are going to be platform limitations based on the toolkit. I can think of a hundred ways to just do it in windows Yup. yup. what is wrong with making the XML viewer in wxWindows which runs on +tons of platforms already? That would be a good idea. We could always aim to have more viewers (using other toolkits) later +on... but that would get the ball rolling. how does wxWindows look? no idea I think it looks like Windows in Windows, Motif or GTK in *nix... if the page will load http://www.wxwindows.org/ http://www.wxwindows.org/samples.htm ok that looks ok I guess we can always mod it it looks good to me, but I haven't seen the API and it runs on mac but it's open source, C++, and cross platform, that's a very good +start It ain't beatiful, but if other GUI's could be written on the XML +framework, that wouldn't be a problem... If QT was opensource on all platforms I would go for that it has an XML renderer and everything I hear it wouldn't be hard to get QT-free to work in Windows... Ive gotten it to work but it requires an X server Really? Oh. That is one of my other projects I found some code on the MS FTP at the risk of being the devil's advocate all the time: why not write +gui/wxWindows.cc and compile it directly into bochs? Would this not be a +great starting point? that maps some Xlib functions to Win32 API According to Mosfet (of KDE), it shouldn't be to hard to make it work +like TrollTech's QT for windows, since they are both from the same codebase. and I was working with that too Uninet: http://www.sourceforge.net/projects/kde-cygwin well ok not a great one that guy talks about the problems with compiling KDE on windows bryce: that is a good start yes that is what we need is a start If you compiled the wxWindows directly into Bochs, wouldn't that +limit the expansion into other toolkits? ok... have you guys looked at the bochs GUI functions yet? like +tile_update, create_bitmap, text_unpdate? Wow! Don, I didn't know you were working on kde-cygwin! I just read +about that at KDE's The Dot the other day. any of them? Im not working on that thats not my projects I have been doing the same thing but thats not mine no I haven't Oh, I saw you are the developer list and assumed you were. I am? He added me? haha Yup. You are. http://sourceforge.net/project/memberlist.php?group_id=27249 oh Nothing like being on a project without being told about it, huh? ;-) ok :) I emailed the guy a few times and discussed some things with him that is what takes up a lot of my time im fighting against MS in my own way :-) I figure by making KDE (or more importantly, Konqueror aren't we all. ) run in windows that strikes a blow against IE :) I'd love to see Konqi in Windows. How's it going with that project? Its going ok I mostly was trying to make QT/Free compile in cygwin which I did fine as a static lib but had troubles making shared but Ralf succeeded where I failed and got that to work So, would it be hard to get QT/Free to work well enough in Windows +that it could be used for the Bochs toolkit? It will work with an X server now as to make it work without one im looking into it I dont know exactly how dependant QT/Free is on X Its a lot of code to look over I know they tried to keep is as OS independant as possible It seems to me QT would be better than wxWindows in that you would +also add QT/Embedded (which comes in a "free" version) to the platforms Bochs +could run on... QT/Embedded draws directly to the FrameBuffer of your graphics card and wouldnt work in windows not being free is a big problem though, as good as QT might be Have you ever tried talking to mosfet about it? oh nm mosfet? He's at www.mosfet.org. Oh He's the one that wrote that it wouldn't be hard to port QT/free to +natively run on windows. the KDE guys yeah. Ive talked to some of them about it It seems to me both Bochs and KDE could benefit if QT/free worked +natively under Win32... maybe some of the KDE folks could help. :-) heheh hard to see how porting toolkits is in the scope of Bochs... hehe this QT must be pretty amazing! Well, I was just thinking if Don had already been investigating it... QT is nice From my limited knowledge of it... it is. and has a lot of the functionality we need how is it different from other GUI toolkits? HEY! anyways It will also most likely be the toolkit of the future. Trolltech is +on an ambitious campaign to make it the defacto toolkit used in Universities. back to what I was saying before!!! ok XML? ? Before we use QT or wxWindows ok now as I was saying right now bochs tells teh GUI code to add a bitmap to the toolbar got that part? well... yes. yes we would need to add something that tells it to add a menu item or a button or whatever right. right. we have to do that before we make it use QT or wxWindows I'm still with you there. bx_gui_c::add_menu_item I would have said "as" rather than "before" then in that function call the TK function to add the item no way to test it until you have something to hook it to, but go on well yes So in essence, this would become a compatiblity layer between bochs +and what ever toolkit, right? This keeps the same concept the the current GUI structure... but adds +more functionality yes and we would d something like bx_gui_c::do_dialog() right, we need to make the C++ calls look more like the interface +between bochs and the XML thing will eventually look or something gotcha. This doesnt push us towards having a separate GUI and Emu but It does get us going towards user friendly which I think is more important yes right. and again, you could always recompile with Bochs-RFB :) :-) also... the menu items should not be critical to bochs running incase a GUI cant create them like the curses one right. sure. (btw, yes rfb is in CVS, and in fact in 1.2.pre1) oooh... good now I can put Bochs Developer on my resume :) hehehehe :-) :) http://www.psyon.org/resume/index.html <--- well it needs some spicing +up a good thing considering we are still in the No. 2 slot on SF. I suck at resumes. I dont like to look at that but anways so what would we need implemented... add_menu_item, show_dialog, +add_button? something along those lines? Sounds good to me... well are we going toward XML already, or waiting until later? Psyon: your resume actually looks good. The layout is good... the content sucks hmm... It seems to me, if you can do it with something simpler than XML, why +not? bryce: if we are keeping the current way of doing the GUI lets wait till later Well... hmm... yeah, it's tricky then how should we do dialogs I think we will have to to do the dialogs Couldn't XML be sandwiched in as an additional layer, if it was ever +needed? well... again... if this was all os specific, we could have each GUI +with its own menu, and its own dialogs I think we will have to look into XML to do the dialogs yes, and I wonder if that's even the best way to do it...later. Unless! we do a separate function for each needed dialog once you have 3 dialogs coded in your new toolkit show_config hmm... it will then be easy to write XML that can reproduce those dialogs but without any examples to work from, you have a very general, very +hard task in writing the XML parser without any XML code to try it with At the risk of sounding stupid, what would be the advantage of XML +over sending the info without XML? we could do, show_config() show_change_disk() and stuff like that (not writing the xml parser) XML is a standard well... what would be better having one function called to show all dialogs True... but would that necessarily be beneficial in this case? or a separate one for each I think doing show_config() and show_change_disk() is a good start me too. so a separate one and when we call add_menu_item (or whatever) it will contain a +function pointer... which coudl be a pointer to show_blah_dialog directly right... something like that ok that will get us going so who is in chareg of getting this started :) hehehe Im guessing im the candidate? Idea: for an XML parser (if needed) could you take the one out of QT +and make it independant? I think once we have some concrete examples of dialogs, it will be +much more clear what the XML should look like. I vote for you. uni: ive been thinking of that already (psyon) :) Psyon: we seem to be thinking along the same lines a lot tonight. I will warn you guys that I will be out of town from the 8th till the +14th of june hehe I guess it better be done by the 8th then ;-) Umm... i doubt it maybe a start but not finished Sounds like a good idea... that's a whole 9 days! the functions them selves wont be hard to add its the dialogs that will be a pain right And the dialogs themselves will require settling on a starting point +GUI, right? if we are using CVS, it's much easier to collaborate (or rather toolkit) so that one person doesn't have to do everything alone and send a diff +when he's done the current calls to create the toolbar are hard coded so this wont be hard at all to implement the stufs stubs So, you could stick with the hardcoded with the new implementation +until you settled on a toolkit(s)? yes do you think we should leave the icons alone for now? maybe that was the same question My one problem here is how do different toolkits handle sub menus? icons are staying for now ok I'd be happy to make new icons (if you want) but perhaps we should +wait until something like wxWindows or QT comes into the picture... Probably just change that over to a toolbar with buttons later I think between the two we should at least try wxWindows since it +already runs on win32 (without hacking necessary) heheh true. The beauty of this system is that QT would still be an option +for an additional GUI afterwards.. one of the best benefits of separation of bochs and GUI is that they +can be _developed_ independently Yes that's very true. since the dialog code is the hard part, and connecting it to bochs is +easy let's work together on the first few dialogs Ok guys, hate to do this but I need sleep sleep?? What's that? My fiance is already pissed that I didnt go to bed with her earlier :) *nod* I will work out a menu function in the morning or when ever Hmm... man sleep says: "sleep - delay for a specified amount of time" Yep, im delaying :-) Well good night Don! Sleep well. good night! cya guys later