T H E   C R O S S   P L A T F O R M   I A - 3 2   E M U L A T O R
  
Current Release:
Bochs 2.3.6
bochs: think inside the bochs. 

  - Home Page
  - SF Project Page

Search

Get Bochs

  - Download Current
  - See All Releases
  - Disk Images
  - Anonymous CVS

Support

  - Bochs FAQ
  - Documentation
     - User Guide
     - Devel. Guide
     - Doc. Guide
  - Old Docs
  - Mailing Lists
  - Discussion Boards
  - SF Site Docs

Feedback

  - Bug Reports
  - Feature Requests

Development

  - Get Involved
  - View the Source
  - Patches
  - Tech Specs Pages
  - CVS Write Access

Resources

  - Bochs History
  - Bochs Links
  - Related Links
  - Screen Shots
A Window, Tux, and the BSD Daemon
Transcript of 5/30/2001 Bochs Chat

Those in attendance were: Bryce Denney (bryce), Greg Alexander (yakovlev), Donald Becker (psyon), Mark Knecht (Markk), Tim Butler (uninet), eks|x, nolu, and smapnipss
Elapsed Time: 4.5 Hours (6:00PM - 10:30 PM PDT)


*** 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
bryce: first thing on my list is: how is the Bochs pre-release working for people?
yakovlev: no comment.
bryce: anybody tried it?
uninet: I haven't done a lot of testing yet, but so far so good. The RPM loads flawlessly.
MarkK: Is the prerelease the RPM?
uninet: Yes.
MarkK: I've loaded it under RH
MarkK: worked fine
bryce: I heard someone say "I couldn't find bochs because I didn't have /usr/local/bin in my path"
MarkK: ran the Linux model
MarkK: that was me!
bryce: some docs will fix that
bryce: :)
uninet: Mark - you have SuSE too, right? That problem doesn't show up there...
MarkK: And shucks.....I'm a hardware guy....and I still figured it out! ;-)
bryce: haha
MarkK: No, SuSE is my email server at work....
MarkK: so I haven't tried it there
uninet: Ah.
MarkK: I use RH for my Linux work
uninet: Gotcha. I wasn't sure...
bryce: I was hoping to get some bug reports on 1.2.pre1 to know what needs to be fixed before 1.2
MarkK: yes...
bryce: here's what's already been fixed since 1.2.pre1:
bryce:     - fixed compile problems in gui/nogui.cc, iodev/pci.cc
bryce:     - removed extra paren that broke SHOW_IPS
bryce:     - HALT macro in rombios.c causes a bochs panic (which can be turned off
bryce:       in .bochsrc) instead of actually halting.
bryce:     - added additional check for null pointer in debugger exit routine
bryce:     - now font/vga.pcf will be installed in the RPM package.  Some systems
bryce:       don't have it.
bryce: mostly really minor stuff
uninet: What about Mark's problem? Perhaps a symlink to /usr/bin would be good.
yakovlev: We should put in a fix for the timing.
yakovlev: No, it belongs in /usr/local/bin on linux.
MarkK: I would have been happy with finding it in a readme...
bryce: timing? as in bochs takes 100% cpu?
uninet: It seems that it is rather bad it installs outside the path of RH though...
yakovlev: and sometimes runs faster than real time.
yakovlev: I had an idea on that one.
bryce: I agree that's important, but I think not for the 1.2
bryce: I'm thinking bug fixes only, basically, but let's get the timing fixes into CVS for the next
yakovlev: Well, what is 1.2?
yakovlev: Are we calling it a bugfix release of any existing feature improvements?
yakovlev: essentially?
bryce: right. here's what I was thinking with 1.2.pre1
uninet: I thought it was a feature release
bryce: we had lots of features that only the authors have tried
bryce: and finally the ability to make RPMS and win32 binaries
bryce: so I wanted as many people as possible to be able to try the features
MarkK: So I'll ask the question.....
bryce: but wasn't so sure of stability, so I called it a pre-1.2 release
MarkK: What features?
MarkK: (Where do I find a list?)
yakovlev: SMP, for one.
bryce: CHANGES.txt in the source TAR file
bryce: I'll paste them in now if you want.
yakovlev: bochs-RFB I think is new in 1.2 also.
MarkK: not necessary....I can't run tonight anyway
MarkK: I'll look at the tar file
bryce: there are some important ones, esp in the area of I/O (log file output)
bryce: and what you see on stderr
yakovlev: Oh yeah, the code maintenance issues like that one.
uninet: http://bochs.sourceforge.net/docs-html/changelog.html has the log of changes too.
yakovlev: Ugh, I'd really like to get my pit changes in, but Abigail has had different ideas... Babies do that.  :)
MarkK: I'm there now reading *** smapnipss (rooot@cs6668169-151.austin.rr.com) has joined channel #Bochs
bryce: so I think 1.2 OFFICIAL should be 1.2.pre1 with a few bug fixes
uninet: Sounds reasonable.
bryce: and anything major should go into CVS snapshots and wait for 1.3 or something
yakovlev: Wow, already doing a feature freeze.
bryce: :)
uninet: Bochs going big time. :-)
yakovlev: here's a stupid question:
yakovlev: What kind of release schedule are we expecting here?
yakovlev: 1.2 definitely is NOT ready for the big stuff.
yakovlev: but, it's an incremental improvement.
bryce: 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.
MarkK: so far I must say I'm REALLY impressed here though
MarkK: I'm participating on some much larger projects
MarkK: and they're no where as organized
MarkK: (of course I don't really know how many are participating here!!)
bryce: 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
bryce: I wanted to get binary releases out as soon as possible
bryce: since that will allow the most people to try it out, and potentially bring in more develoeprs
bryce: 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.
yakovlev: Well, with the HALT bugfix in the bios... could we do a binary release of 1.1.2 also?
bryce: sure, but what about the stderr cleanup, the .bochsrc cleanup, the I/O cleanup?
uninet: What would be the advantage of a 1.1.2 binary release?
bryce: there's too much that should be backported IMHO to make it worth it
yakovlev: It would potentially run when the main problem is that HALT bugfix.
bryce: ?
bryce: what would run better in 1.1.2?
yakovlev: What if we independently did a release of just the bios?
yakovlev: I guess that's really what I'm advocating.
bryce: anything is possible.  we can backport anything we want.
bryce: given enough time.
yakovlev: We had at least a few messages on the list about people getting HALT messages when things used to run fine.
uninet: Can't that be stopped in bochsrc?
bryce: the bug fix to HALT causes errors to be reported correctly, that's all.
yakovlev: from the bios fixes you recently added. *** Signoff: nolu (Read error: Connection timed out)
yakovlev: yup, that's the problem.
bryce: anything that has STOPPED working because of that was always producing error conditions but they weren't being reported.
bryce: so fixing the error reporting is causing people to see the errors that before were silent.  Does that make sense?
yakovlev: Okay, then what about a bios version that possibly reports but continues to run after errors occur.
yakovlev: right
uninet: I thought Bryce said the Bochsrc config allowed for this...
bryce: that's easy enough, although we should eventually fix those errors instead of ignore them :)
yakovlev: of course
yakovlev: but once reported, it's a possibly easy workaround.
bryce: Tim, the HALTs now produce a bochs panic.  In 1.2 all panics can be turned non-fatal by changing the .bochsrc.
yakovlev: but I don't trust any code executing after a HALT.
uninet: So, that would include the ones Greg is referring to, right?
bryce: Tim, yes
yakovlev: Unles you guys are sure that wouldn't make a difference.
bryce: we should distinguish between the rombios code calling the HALT macro and a HLT x86 instruction.
MarkK: I agree with that
uninet: That'd be very nice.
yakovlev: I just mean have a version of the bios with HALT defined to be nop.
bryce: the HALT macro was broken until 1.2.pre1, it did absolutely nothing
yakovlev: Which was good from a user perspective, bad from a debugging one.
bryce: the hlt instruction halts the bochs simulation, no question.
yakovlev: doesn't HALT do a hlt?
bryce: in 1.2.pre1, it does.
bryce: I've been working on cvs, and here's what it does now:
yakovlev: Right, and I'm just saying I don't want to have to disable all hlts, just the one in HALT.
bryce: the HALT macro causes bochs to call panic
bryce: with the line number of the HALT macro (in rombios.c)
bryce: and then it does NOT call the x86 hlt
yakovlev: oh, that's somewhat better.
bryce: this lets you control what happens through the bochsrc by saying "panic: action=fatal" or "panic: action=report"
bryce: do you think that's an ok behavior for a 1.2 release?
yakovlev: Not too bad.
bryce: :)
yakovlev: You guys had talked about being able to isolate panic behavior to a particular unit.
yakovlev: well, a particular section of code.
bryce: right
yakovlev: Sorry, work slipping in there.
yakovlev: Is that doable from .bochsrc?
bryce: Todd's I/O code has the capability of having a different action for each of panic,error,info,debug for each "module"
bryce: where module is something like "HD", "CPU", "PIT"
bryce: but there is not yet any .bochsrc syntax to specify this
yakovlev: could we define the panics caused by the bios to be a specific macro?
yakovlev: macroXXXXX module
bryce: I think you mean something like:  panic: facility=cdrom, action=fatal
bryce: panic: facility=bios, action=report
bryce: ?
yakovlev: yup.
bryce: panic: facility=default, action=fatal
yakovlev: although that's a little awkward.
bryce: yes, needs work
yakovlev: but yes, basically that.
bryce: the I/O functions are all ready to do that, we just need a syntax!
bryce: any suggestion?
yakovlev: PIT: panic=fatal
yakovlev: default: panic=fatal
bryce: what about debug,info, and error though?
bryce: PIT: panic=fatal, error=report, info=report, debug=ignore
yakovlev: HD: debug=ignore
yakovlev: sure.
bryce: that seems good enough
yakovlev: it has the added advantage of giving us some direction for additional "module parameters"
bryce: 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.
yakovlev: It seems to me that the only issue for panics, etc. is the action.
yakovlev: hmmmm...
yakovlev: well...
bryce: true but what if you wanted to log HD messages to a different file?
yakovlev: panic: action=fatal 
insert char here: PIT
bryce: log: obj=HD, file="hdlog.txt", panic=fatal, error=report, info=report, debug=ignore
bryce: it's getting LONG
bryce: :)
bryce: but soon the GUI will do this for us.
bryce: :)
yakovlev: yup.
yakovlev: just a minute, I like the log idea.
yakovlev: hmmmm...
yakovlev: what if we viewed these more as commands.
yakovlev: so, we could use:
yakovlev: log: filename="outfile", panic=fatal, error=report
yakovlev: log: obj=PIT, filename="outfile2", panic=report, info=report
yakovlev: that's cleaner.
yakovlev: we'd have to decide just how to parse different things.
bryce: so if you have no obj=X then it means the default?
bryce: is that your point?
yakovlev: yup.
bryce: makes sense
yakovlev: no, not just that.
bryce: and later lines override settings from earlier lines
yakovlev: we only have to specify part on a line,
bryce: right
yakovlev: right.
bryce: ok, that sounds like a good start.
yakovlev: filename would apply either only to the module.
yakovlev: or even only to the reporting specified on that line.
MarkK: Is there something easy you could do to keep separate runs in separate files?
MarkK: So that if you wanted to run regression it would be easy
bryce: (let's continue the .bochsrc syntax on email, so that we can get to other things too)
MarkK: sure
bryce: mark, maybe you could put in a %d or something
bryce: into the filename, and then sprintf some time stamp into the %d
MarkK: that's an idea
yakovlev: there are several ways to do it.
yakovlev: the calling program could just change the value in .bochsrc between runs.
yakovlev: at any rate, next topic...
bryce: I had a little survey written up
yakovlev: Maybe the GUI interface would be appropriate?
yakovlev: oh, go ahead.
bryce: but given that we have only 5-6 people...
bryce: let's just take a peek at it but try to get more people to answer it later on
yakovlev: K.
bryce: it's at http://bochs.sourceforge.net/ircsurvey.html
bryce: or if it's easier I'll just paste it in
bryce: 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)
uninet: Should I post my response here?
bryce: sure!!
yakovlev: I write bochs as a hobby.  I'm more interested in getting it right than using it.
bryce: Educator/Student: to see how the computer works
yakovlev: However, I'm also interested in getting x86 programs to run on other OSes.
uninet: 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. :-)
uninet: Future Bug fixes: bug 1. Feature Request: feature 8.
bryce: also to be able to watch the OS working (esp Linux since I can see the source too)
uninet: (Mouse problems, and emulation speed respectively)
MarkK: Chip Designer: Inteested in interfacign it to my new design.
MarkK: bad spelling. ;-)
bryce: mark, are you allowed to say what you're designing? :)
MarkK: Sort of....
smapnipss: i use bochs for os development
MarkK: I'm working on some leading edge 1394 stuff
bryce: I understand, I'm a chip designer too.
yakovlev: wow, me too.
yakovlev: I can say.  POWER4
MarkK: but I'm also interested in chipset design, and how that might play in here
uninet: I'm feeling out numbered here... I'm just a lowly web designer.
bryce: We're thinking about SMP chip designs
bryce: big surprise :)
MarkK: The web rules...;-) We just work!
MarkK: Anyway, long term I'm interestedin how I can use this with new chip designs prior to tapeout...
yakovlev: Interesting.
bryce: it could certainly be made into a good driver/monitor...
yakovlev: Were you one of the guys pushing for a more modular design?
MarkK: yes, driver could get deveoped in Windows. *** Signoff: smapnipss ()
MarkK: I usually have some sort of C model for the chip
MarkK: hook it all together and try it out...
uninet: That would be nice. Would the C code your are writting be able to be open sourced?
bryce: haha
MarkK: LOL
uninet: :-)
yakovlev: ;)
MarkK: Laugh Out Loud or Lot's Of Luck
MarkK: you're choice!! *** eks|x (eks@HSE-Montreal-ppp123837.qc.sympatico.ca) has joined channel #Bochs
eks|x: hi guys :)
bryce: 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.
MarkK: hi eks
bryce: Hi eks!
uninet: Hi eks!
eks|x: :)
MarkK: Not really....
bryce: eks: we're just talking about our answers to a little survey at http://bochs.sourceforge.net/ircsurvey.html
MarkK: I worked in the IP industry before Phoenix bought us...
uninet: 
sigh: Oh well, I guess bochs needs more speed before it needs IEEE 1394 anyway...
MarkK: people are starting to do open source Verilog
yakovlev: depends on how prevalent FPGAs become in configurable consumer electronics.
MarkK: Or faster platforms to run Bochs on.
yakovlev: Anyways, we're getting very sidetracked.
MarkK: yes
bryce: good point :)
bryce: so I heard several votes for better mouse support (bug1)
uninet: Definately.
eks|x: what I would really appreciate is having the fpu more closely related to the debugger, aka fpu stack on cpu_dump
bryce: ah, I never thought about that.
MarkK: Is your 'Disk Image Tools' about how to build HDs with certain OS's and apps?
yakovlev: bug1, bug4
bryce: eks, that should not be hard to manage.  Bochs must have the values in there somewhere, you just need printed out right?
uninet: bug3 sounds like a nice one to fix too...
bryce: yes, bug3 is tough though
bryce: well maybe not tough, just lots of OSes out there.
yakovlev: feature7, feature2
eks|x: bryce: right
uninet: Yeah, at least it would be nice on Win9x.
bryce: for the cdrom support, what if we made a portable way to read from a cdrom disk image?
yakovlev: yes, but if we get the CDROM model right, we're done.
eks|x: 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
eks|x: yakovlev: cdrom model shouldn't be too hard to implement, close to hdd model
MarkK: Bryce: So that part is under feature 1?
bryce: 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.
yakovlev: that would be good, Bryce.
yakovlev: I was surprised that wasn't there already.
uninet: Would it be possible to make bochs pretend /dev/cdrom was a cdrom image?
bryce: 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
yakovlev: well, it would take some looking, but basically, yes.
eks|x: just out of nowhere like that, any of you familiar with 'bfe' ? ;)
yakovlev: We'd have to add the removable media controls to the CDROM interface, but even that isn't ridiculous.
bryce: eks: can you add that as a feature request on SF?  otherwise I promise I'll forget. :)
eks|x: it's a nice addition to bochs I think
eks|x: bryce: I can do that,sure :)
bryce: bfe: I looked at it once, and asked the author if he wanted to integrate it, he's not that interested.
uninet: yakovlev: Could it do something similar to Win4Lin, where the guest OS handles how the CD's are mounted?
uninet: (i.e. automount, standard mount, etc.)
MarkK: could do that for all the physical I/O if you wanted to...
yakovlev: well, bochs needs to know if a CD is there or not.
eks|x: bryce: yeah, I know, but it's a good tool, I use it often, mostly to generate cpu-flow tracing in the history file
bryce: bfe is actually what started me thinking about guis
yakovlev: in the emulated sense.
uninet: Hmm...
yakovlev: Beyond that, it's just a file.
eks|x: yakovlev: one problem I see is changing the actual cd ocne bochs is started
uninet: Could it probe the CD-ROM drive every time it is requested?
bryce: slow
yakovlev: Wrong layer, guys.
yakovlev: All bochs needs is:
uninet: How's autmount do it?
yakovlev: CDROM_INSERT().
yakovlev: CDROM_EJECT().
yakovlev: the OS interface code figures out when to call them.
uninet: That'd make sense.
eks|x: yip
bryce: cdrom would be a big help in installing new software
yakovlev: then maybe DISK_SEEK, DISK_READ, and DISK_WRITE to complete the set.
MarkK: what's the interface look like between the IDE controller and the HD/CDROM?
bryce: if I manage to make a larger-scale survey out of this, anything you'd like to add to it?
MarkK: Does it run ATAPI commands?
yakovlev: yes, ATAPI.
uninet: bryce: perhaps a question on the most important feature of a new GUI?
bryce: feature10: GUI for configuration and runtime control
bryce: oh I see
bryce: like what do you want the gui to do?
uninet: Right.
bryce: Answer: everything.
uninet: Assuming that the GUI could have lots of different things (GUI debugger, GUI config, etc.)
uninet: Bryce, I like that answer.
bryce: should we talk about guis now?
yakovlev: Answer: everything.  I want to push all the interface as far away from bochs internals as possible.  :)
yakovlev: Notice a recurring theme in my messages?  :)
eks|x: any of you tried simnow! ?
eks|x: yakolev? layering?  ;)
bryce: 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?
yakovlev: Nope.  My impression is that it contains almost an entire microprocessor worth of simulation data.
yakovlev: Sort of.
uninet: Yeah, I liked that idea too.
yakovlev: It doesn't necessarily HAVE to be in a different library, but that's the idea.
uninet: Well, actually one should be a normal program that requires the shared library that contains the other code, right?
yakovlev: Also, I used "GUI code" very loosely.
yakovlev: right, tim.
bryce: no reason to require shared library, but that is one way to do it.
yakovlev: Tim, I mean.
uninet: I think that would be best.
uninet: (not shared library) *** Psyon (exodus@exodus.psyon.org) has joined channel #Bochs
yakovlev: Shared library good, but could be compiled separately.
bryce: hi Don!
Psyon: Im here!
uninet: 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. :-)
Psyon: What did I miss?
Psyon: HEY
uninet: Hi Don!
bryce: it will all be on the web site.
Psyon: hehe
Psyon: ok
bryce: we're starting to talk about the GUI!
Psyon: well... what am I hearing about Perl?
Psyon: Good that is my dept?
bryce: we're going reimplement all of bochs in perl.
Psyon: oops
uninet: Yeah, if it is dynamically linked that would be good. That way the GUI code could be switched without a recompile.
Psyon: I meant !
Psyon: Uhh...
Psyon: is that a good idea?
bryce: :)
bryce: (that was a joke)
Psyon: oh
Psyon: ok
Psyon: well...
Psyon: You can write perl modules in C
Psyon: cant you?
uninet: :-) Maybe... it wouldn't require a compilier then.
Psyon: I was told
Psyon: write a bochs perl module
Psyon: that would allow you to run bochs and have events caught by perl
yakovlev: Anyways, I used "GUI code" to refer to any thing that interfaces with the host system.
yakovlev: Ahh, but then we have to port perl to MacOS.
Psyon: They have a Mac Perl
Psyon: dont they?
uninet: Yeah, I think that's a good definition... so anything that could be considered "client code" right?
eks|x: btw, perl is an easy to write into language, but afaik, it's never as fast as optimized-compiled C
yakovlev: Yeah, basically.
bryce: greg, how is your model different from what Bochs already does?
bryce: we have cpu, iodev, and gui all in separate libraries.
yakovlev: Not very.
yakovlev: iodev is pretty close to CPU.
Psyon: so the new model reflects the Plex86 plugin structure?
uninet: Is the current GUI library dynamically loaded?
bryce: so with some makefile tricks we could compile them as shared libraries.
bryce: not dynamic, no
eks|x: bryce: feature added on sf (fpu stack dump)
bryce: eks: thanks
bryce: uh, I don't know anything about the plex86 plugins, is it based on shared libraries?
Psyon: That is how Plex86 does the GUI and IO dev stuff now isnt it?
yakovlev: Right, but we may want to clean up some of the interfaces a bit.
Psyon: I know the GUI is
uninet: bryce: Would it be difficult to make it dynamic so the GUI could be changed like a plugin?
Psyon: it compiles it as a shared library
Psyon: the GUI is in the bochs plugin
Psyon: hehe
Psyon: uni: There are just certain functions that are needed to be implemented for the GUI
yakovlev: Methinks plugins is going a little far.
Psyon: a shared lib that has them wouldnt be a problem
bryce: 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.
uninet: I'm using plugins in the loose sense of being able to swap in another module without having to recompile (like Linux kernel modules)
bryce: it reduces the size of the binary, and maybe you can load up only the device models you want that time.
Psyon: the bad thing is that shared libs are done differently on different plat forms
bryce: psyon, that's my worry too
Psyon: THey are compiled differently
eks|x: are you guys going with bochs using gui modules or gui using bochs module?
Psyon: and... DLLs in windows have to have the exported functions defined
Psyon: __declspec(dllexport)
Psyon: or have a .def file
eks|x: I don't see the real need to swap gui very often without recompile,but I might see where switching cpu would be a 
uninet: eks|x: I would think the GUI would use the bochs module.
Psyon: eks: it might come in handy with somethign like Bochs-RFB
Psyon: where one time you want to run natively
Psyon: then switch it so you can run over a network
eks|x: yeah
Psyon: but the compiled EXE is so small
Psyon: I just keep two copies
eks|x: one bochs without debugger one with it
uninet: eks|x: It would also be handy if you wanted to use the console gui, and then wanted an X11 gui.
bryce: modules might let you make a binary distribution with all the GUIs available at .bochsrc time, rather than only one
eks|x: uninet: how often do you switch from one to the other?
Psyon: How big is the compiled bochs on linux?
uninet: eks|x: never. But I haven't actually even tried the console GUI yet.
Psyon: I havent looked at it in linux in a while
eks|x: -rwxr-xr-x    1 root     root      1962770 May 29 20:24 bochs
Psyon: whoa!
Psyon: its like 400k in windows
eks|x: with fpu, debugger, and disasm
Psyon: wait
bryce: [bryce@monster bochs-1.2.pre1]$ strip bochs
bryce: ls -[bryce@monster bochs-1.2.pre1]$ ls -l bochs
bryce: -rwxrwxr-x    1 bryce    bryce      441036 May 30 22:44 bochs*
Psyon: 384kb
Psyon: that is an out of the box compile of BugFix 2
eks|x: 1.1.3 with a few addys
bryce: I don't think it's the binary size, it's the ability to mix and match parts that's powerful, right?
yakovlev: Well, it sounds like we want a bochs executable which loads both a GUI and a BOCHS module.
uninet: 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...
uninet: ...it would be good since one binary would work on all of those GUI's.
eks|x: what about having a main binary using a bochs module and a gui module?
bryce: you can do any of these, however you want.
Psyon: This is where having a separate process for the viewer and the emu comes into play
Psyon: that would make it easier to switch the viewer type
yakovlev: eks: jynx
bryce: bochs module with no debugger, optimized for speed, or bochs module with debugger and SMP enabled, etc.
MarkK: or modules across a network?
bryce: 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?
uninet: MarkK: That would be another nice reason for modules. RFB could be used just by changing modules.
yakovlev: I actually don't like using shared libs for the main bochs at all.
yakovlev: Too hard to make portable.
Psyon: Usually a debugger will tell you which module (lib or dll) the code is in
MarkK: I'm also thinking about sim speed....
yakovlev: But compiling them separately would make them useful for other things.
MarkK: I can link up 5 or 10 PCs if it's networked together
bryce: they are already compiled separately, as static libraries
yakovlev: Well, a bigger wrapper.
eks|x: -rwxr-xr-x    1 eks      users     1472404 May 30 22:42 bochs
eks|x: bare bochs 1.1.3
uninet: bryce: but since they are static libraries, that would mean they need to be recompiled for each change, right?
bryce: markk, are you thinking that several pcs would simulate it faster?
yakovlev: Eat up most of iodev, for one.
MarkK: just thinking it might, in the long term
bryce: markk: maybe, probably the first step is multithread support on a single machine
MarkK: Also, it might simulate concurrency better later on... *** Roadkill (~ondrej@baikonur.orbitec.com.au) has joined channel #Bochs
MarkK: when you want a disk model running in parallel to a VGA model
MarkK: that sort of thing *** Roadkill has left channel #Bochs
MarkK: If I had one PC running the HD model, and it had the disk image
bryce: 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.
MarkK: and anotehr running the CPU model...
MarkK: then things would be a bit more like a real PC
MarkK: (this is later though)
uninet: 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...
yakovlev: Mark, that's a lower down distinction than where we're talking about.
MarkK: I'm a hardware guy! ;-)
Psyon: hehe
yakovlev: :)
MarkK: gimme a break! ;-)
bryce: 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.
MarkK: yes, and I think no time (maybe) simulating the chip set right now?
Psyon: I think if we are going to make a GUI that uses a toolkit, it should use one that Is cross platform
Psyon: QT has a windows version
Psyon: but it costs
Psyon: we might be able to get a special version for bochs though
bryce: what about Tk or wxWindows?
Psyon: is wxWindows any good?
bryce: I have no idea, their website says it is :)
bryce: but it's cross platform, all C based, and open-source
uninet: 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.
uninet: All I can say is that it seems to me C is the way to go...
uninet: (versus C for the GUI)
Psyon: Well... I dont see why using the standard bochs GUIs are a problem
yakovlev: neither do I.
Psyon: using a GTK of some sort would still have code for Windows and X11 in it
uninet: Psyon: GTK for Windows isn't very good at the moment, is it?
Psyon: its decent
Psyon: the Mouse code needs work
Psyon: ive been looking at ways to improve
Psyon: the problem is the way events are handled
bryce: the problem with the current one is that there's no framework to add anything at all
Psyon: since handle_events() is only called every so often
uninet: Wouldn't it also cause some problems since it is C-based, where as I think MS's commonctrls are C?
Psyon: do to the emulation, the time between calls is a sec or so
Psyon: so it slows it down
Psyon: Who here is pretty familiar with how the mouse emu works?
bryce: not me
yakovlev: not I.
MarkK: nor I
bryce: basically, you're the expert :)
Psyon: when i say handle_events() do you guys know what im refering to?
yakovlev: I've looked at it, but haven't had time to really get into it.
Psyon: well...
eks|x: same here
yakovlev: Are you saying the mouse code is polled.
Psyon: when you amke the GUI
yakovlev: ?
Psyon: you have to keep your own queue of mouse and key events
Psyon: then bochs calls handle_events() in the GUI code
Psyon: and you have to pass it all the events
Psyon: and all of bochs runs in the same thread
Psyon: so it sometimes has a delay between cals
Psyon: to pass teh events to bochs
Psyon: you use mouse_move() or somethign like that
Psyon: and I was thinking about just passing them to bochs as they come in
Psyon: but the window callback for events is on a diff thread
Psyon: and I dont know if that will cause problems
bryce: how often does handle_events get called, and is it on Bochs emulate time or real time?
Psyon: It seems to be called every .5 to 1 sec
yakovlev: Hmmmm, sounds like something potentially worth moving from the GUI layer into the general bochs layer.
Psyon: when there is heavy emulation being done
Psyon: Well...
Psyon: if we made IODevs have diff threads
Psyon: it would help
bryce: but is it scheduled by the real machine's timer, or by bochs timer (like N instructions have gone by)
Psyon: Bochs just has it in a loop
Psyon: Its called as often as It can be i guess
yakovlev: from what Don is saying, sounds like bochs instructions.
bryce: I'm afraid I need to look at it more to be able to know what is going on.
Psyon: // Called periodically (vga_update_interval in .bochsrc) so the// the gui code can poll for keyboard, mouse, and other// relevant events.
eks|x: I tend to agree with Greg that it's bochs' instructions
Psyon: There
Psyon: that is from Win32.cc in the GUI dir
Psyon: Hmm...
Psyon: I never noticed that
Psyon: I wonder if I set vga_update_interval lower
Psyon: but still
Psyon: with bochs all in one thread
Psyon: it would still cause latency
bryce: I'm worried that we're getting far far away from gui libraries and who wants to write some dialog boxes... :)
Psyon: hehe
bryce: I want to fix that mouse too, some day.
Psyon: I think that is a big part of the useability problem
uninet: The GUI code is already seperated into a different module, right?
uninet: (or rather library)
Psyon: how well does the mouse work in X11?
bryce: greg and don said, what's wrong with the current gui ?
eks|x: tim: right
eks|x: tim: libgui.a
Psyon: There are some optimizing and cleanup that needs to be done with the current ones
Psyon: but that is all
uninet: eks|x: Do you know if it is done in C or C?
eks|x: tim: seemslike c to me
Psyon: it is technically C
eks|x: bx_gui_c::handle_events(void)
Psyon: but doesnt use classes
eks|x: ;)
Psyon: oh
yakovlev: It sounds to me like the way handle_events is used is awkward.
Psyon: guess it doees
Psyon: hehe
eks|x: eheh
bryce: Bochs is a wierd mix of C without using a single feature of C.
bryce: :)
Psyon: heheh
uninet: Ah, thanks Bryce.
bryce: greg and don said, what's wrong with the current gui ?
Psyon: I dont think anything is
bryce: and I think that's important to hash out
uninet: So, theoretically, it wouldn't be hard to create a GUI using a C toolkit?
Psyon: It might look to plain for some people
yakovlev: No GUI configuration of parameters.
bryce: the thing I'm missing a LOT is the ability to put up dialogs
uninet: Psyon: It looks rather bad, and doesn't have any config tools.
bryce: such as "You just got a panic. do you want to continue"
Psyon: hehehe
bryce: or "Now choose the disk image you want to be in drive A:"
Psyon: I think a live register display would help for debugging  too
bryce: that sort of thing
MarkK: Speaking of "You just got a panic. do you want to continue?"
Psyon: making swapable floppy images wouldnt be hard
Psyon: beings you can do it now
Psyon: just unmount it
bryce: how?
Psyon: copy a new disk
MarkK: My 9 year old wants me to come say goodnight
Psyon: and remount
MarkK: bye
eks|x: Psyon: if you mean live reg update, simnow! made the mistake of doing such, should be on/off thingy
bryce: renaming the disk image file?
bryce: markk: good night!
Psyon: yes
MarkK: later *** Signoff: MarkK ()
Psyon: just copy the new image to the one that is named in bochsrc
Psyon: well...
Psyon: we would want to make it loadable
Psyon: but im saying
yakovlev: copying the image file is awkward.
Psyon: the features are there to do so
bryce: yeah, and then click the stupid disk icon twice?
bryce: it sucks!
yakovlev: And the size can't change.
Psyon: oviously you would unmount... change the image name in memmory
Psyon: then remount
Psyon: Im just saying
Psyon: it should be hard to implement
bryce: what's keeping us from having a dialog box?
yakovlev: And you often forget to unmount, or forget to remount.
bryce: IMHO, no GUI toolkit to write in
yakovlev: I see your point.
Psyon: Well... just make a new toolbar button that lets you load a new image
bryce: psyon: should or shouldn't be hard to implement
Psyon: shouldnt be
bryce: right
Psyon: well...
Psyon: the GUI shoudl have access to all the internal bochs functions
Psyon: init_disk
Psyon: or waht ever it is
yakovlev: What do you mean all the internal bochs functions?
yakovlev: I VERY MUCH disagree with that statement.
Psyon: Well
Psyon: functions that arent in the GUI code
bryce: 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
yakovlev: The GUI should have access to only a limited number of bochs functions.
bryce: (or something other than having to write native gui code for every little thing)
eks|x: reducing the number of interaction points reduce the error rate
eks|x: easier to debug
yakovlev: 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.
Psyon: bx_floppy_ctrl_c::init(
Psyon: )
uninet: bryce: I think Tk would be a mistake since it really doesn't work very well in Windows (in my experience).
bryce: we haven't even agreed that we need any gui library, that's what I'm getting at.
yakovlev: no, the GUI should get some well thought-out interfaces, not willy-nilly access to bochs internals.
Psyon: BAH! I cant find the function that ejects it
bryce: IMHO just making all the interfaces to the GUI through public member functions is a good way to "define the interface"
yakovlev: Sort of.
bryce: then the .h file for the outermose gui object says exactly what you can and can't do with it.
yakovlev: What we really need are acls.
bryce: ?   access control lists?
yakovlev: For instance, some disk public member functions should only be called by the emulator.
yakovlev: others should only be called by the GUI.
eks|x: can acl be checked at startup only or does it need to be checked at every function call?
bryce: 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.
uninet: yakovlev: Right... the GUI doesn't need access to everything.
yakovlev: Having a single .h file with the functions that are allowed to be accessed outside would be listed there.
yakovlev: acls was just saying that public vs. private isn't descriptive enough in some cases.
Psyon: 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
Psyon: and it can be a new size
bryce: 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.
yakovlev: Oh, okay, that's exactly what I'm advocating then, Bryce.
yakovlev: maybe, but bochs doesn't handle floppies right anyways.
Psyon: that seems like a smart idea
Psyon: what doesnt it handle?
Psyon: I reads my real floppies now :)
eks|x: read with MT=0 ;)
Psyon: hehe
yakovlev: They should be interfaced to the GUI as simply a file interface and ejected/inserted.
yakovlev: it's not separated that well.
yakovlev: file interface meaning a large set of unorganized data.
Psyon: hehe
bryce: maybe the first step will be to clean up the interface between current GUI library and the rest.
uninet: 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?
yakovlev: Right, that's the idea.
Psyon: File/Save menu?
bryce: wherever you choose
Psyon: or ask on close
Psyon: if changes are to be saved
uninet: Ah, that would make sense.
Psyon: just like a word processor would do
yakovlev: What's a bochsrc?
Psyon: bochsrc is the config file
yakovlev: no, you missed the point.
bryce: :)
uninet: Psyon: good point, that would permit runtime only changes.
bryce: bochsrc = some place to save the settings that you like, in some form
bryce: so that you can get them back
yakovlev: right.
bryce: and also send them to somebody so they can duplicate your setup
Psyon: Would be nice to have something like VMWare, so that when the program starts it asks what configuration you wish to load
yakovlev: Something which exists totally outside the bochs emulation layer.
Psyon: and has the option to start with power off
uninet: Psyon: I agree, that would be VERY nice.
bryce: greg, yes only that gui part would be reading and writing the bochsrc I think.
uninet: VMware has a very well thought out GUI, I think it would be a good idea to use a lot of it's ideas.
Psyon: hehehe
eks|x: VMWare is quite good on the gui side, simply missing debugging :P
yakovlev: Watch out for patents there.  They're going to be looking at us fairly closely.
Psyon: hehe
eks|x: are gui patentable?
bryce: yes, I've been handling different configurations by making a different directory for every OS that I can run
Psyon: well... I dont think that a start with power off option is patented
Psyon: I just like that idea, so you can start the program
bryce: and each one has its own .bochsrc, disk images, and symbolic link to the most recent bochs binary and ROM
Psyon: make config changes
Psyon: then power on the system
Psyon: and since there is already a power button on the toolbar
uninet: yakovlev: you would just want to copy the general ideas, hopefully with enough improvements that the VMware people wouldn't even care.
bryce: I'm not saying I like the "each os in a different directory", only that that's what I've resorted to for now.
bryce: unless we do a blatant copy of their toolbar or something, I don't think we're in trouble.
Psyon: can you run bochs with a config file as an argument... like "bochs mysystem.rc"
Psyon: if not
bryce: not sure if it works now, but it would be useful sometimes
Psyon: yes
Psyon: that is something else that might be done in the next release or something
bryce: go for it :)
Psyon: actually
uninet: I thought it already worked as a command argument.
Psyon: I think all options can be done on the command line
Psyon: cant they
Psyon: yeah
bryce: yes something like bochs "boot:c" "diskc:blabla"
Psyon: I mostly look at the GUI code so im kinda dumb as to how the rest works
Psyon: hehe
bryce: 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.
Psyon: yeah
yakovlev: 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.
Psyon: 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
bryce: 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
yakovlev: For now, I'm headed to bed.
uninet: 'night Yak.
Psyon: cya
bryce: greg, sounds great!
yakovlev: All you West Coast boys have fun.
yakovlev: :)
bryce: good night
Psyon: night *** Signoff: yakovlev (Java Chat http://www.undernet.org/webchat.php)
Psyon: bx_gui_c::headerbar_bitmap
Psyon: oops
Psyon: right now bochs calles  bx_gui_c::headerbar_bitmap() and bx_gui_c::show_headerbar() to make the toolbar
Psyon: something like that could be done for a Menu system
Psyon: basically
eks|x: Psyon: I think the bochs gfx window shouldn't have icons at all
Psyon: well...
Psyon: im saying
Psyon: the same system
Psyon: could be used to build menus
eks|x: Psyon: I think the gfx window should be a videocard dev using the gui toolkit
Psyon: so that the GUI doesnt have to be changed with each new option
bryce: right, something pretty generic can be worked out like the toolbar thing
uninet: eks|x: Wouldn't removing the icons lower the friendliness level below it's already "lowness"?
eks|x: the gui interface would be using the gui toolkit for the icons directly
eks|x: uninet: if you build up a gui to control bochs, you can have icons in it, no on the bochs output
Psyon: 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
eks|x: what I would like to see, is a window with nothing in it else than what you see on the crt of your comp
Psyon: eks: the current Icons are just simple bit maps used to display the buttons
Psyon: nothing stopping us from making that A toolbar button
Psyon: or a menu item
eks|x: and another window that is the bochs control/debugger/etc
Psyon: I would like a full screen option :)
Psyon: Ive been looking at how to do that also
eks|x: definately :)
Psyon: the current tool bar messes it up a little
eks|x: yip
Psyon: but I can work around it
Psyon: at least for windows
uninet: Does anyone here know how to convert normal bitmaps to the ones in the .h files in the source code?
eks|x: having it all in the gui bochs control would allow that
Psyon: Im not as familiar with X11 programming
eks|x: tim: sorry, not me
Psyon: uni: the ones in the H are just 1bit bitmaps
bryce: we need to choose at what level the gui/bochs interface should talk. I guess this is what Greg said he would work on
eks|x: yeah, the rfc
uninet: Pyson: Win4Lin accomplishes fullscreen by starting a new X session on another tty, and then maximizing the window it's in...
bryce: but there is everything from:  Now print dialog box #7, which asks what disk you want to insert now
uninet: Psyon: 1bit bitmaps?
bryce: to:  create a dialog, with a text field here and a button there
Psyon: yep
eks|x: bryce: the 'to:' is a gui toolkit job
Psyon: each bit represetns one pixel
bryce: this is a large space, and somewhere in the middle is the best answer
Psyon: either black or white
Psyon: or forground or background
eks|x: #7 is the actual job of a gui front-end
bryce: psyon: I think he wants to know how to make a new 1-bit bitmap to substitute
Psyon: I should say monochomr
uninet: Psyon: Ah, is there anyway to do color 8 bit bitmaps this way?
Psyon: We would have to change how they are passed to the gui
uninet: bryce: Yeah, although perferably also raise the quality above 1-bit.
Psyon: unsigned bx_gui_c::create_bitmap(const unsigned char *bmap, unsigned xdim, unsigned ydim)
Psyon: char *bmap is the bitmap
Psyon: and that function in the GUI makes a native bitmap
bryce: what tool can convert a GIF into such a bitmap though?
eks|x: don: seems to me like the internals of the functions uses one bit
Psyon: Hmm...
Psyon: yes
Psyon: You might have to do it manually
uninet: Manually?
uninet: How so?
Psyon: yes
eks|x: bryce: afaik, The Gimp under X, or photoshop under Win
Psyon: picture an 16 by 16 square
bryce: what format? XBM ?
eks|x: bryce: monochrome bitmaps
eks|x: .bmp
Psyon: that would take 4 bytes to display
Psyon: wait
eks|x: Psyon: is the routine actually using whole byte of value 1 or 0 only?
Psyon: well
Psyon: it uses the bits
Psyon: not the bytes
bryce: that icon currently looks like this:
bryce: static unsigned char bochs_icon_bits[] = {
bryce:   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00,
bryce:   0xe0, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f,
bryce:   0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc3, 0xc3, 0x3f,
bryce:   0xfc, 0xc3, 0xc3, 0x3f, 0xf8, 0xc1, 0x83, 0x1f, 0xf0, 0xc0, 0x03, 0x0f,
bryce:   0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00,
bryce:   0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00,
eks|x: so a pic shouldn't be bigger than 32bytes
bryce:   0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xf0, 0xc0, 0x03, 0x0f,
bryce:   0xf8, 0xc1, 0x83, 0x1f, 0xfc, 0xc3, 0xc3, 0x3f, 0xfc, 0xc3, 0xc3, 0x3f,
bryce:   0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc7, 0xe3, 0x3f, 0xf8, 0xff, 0xff, 0x1f,
bryce:   0xf8, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x00,
bryce:   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
uninet: 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?
Psyon: make that into 1s and 0s
Psyon: and you will actually see the picture
bryce: no, BMP is not the same as a C header file!
Psyon: you have to convert that to a BMP
eks|x: tim: you need some tool that converts binary-:c headers
uninet: eks|x: Hmm... do you know of a tool that can do that?
eks|x: tim: a search on freshmeat should do that for ya
Psyon: I could prolly make one
eks|x: tim: or wait, are ya under win?
bryce: this sort of crap is what a GUI toolkit should be doing for us
bryce: read BMP or GIF or something, and execute the right code for each platform to make that the icon.
eks|x: bryce: right
Psyon: well... GTKs will want to use XPM or Jpg or PNG
Psyon: which would look nicer
eks|x: png seems fine to me
uninet: eks|x: Linux.
eks|x: tim: freshmeat.net -- solution for ya ;)
bryce: we are using a VERY low-level toolkit and that's why we have icons that look like a C header file.
Psyon: I think we could easily convert this to use 256 color bitmaps
uninet: eks|x: thanks. I think I'll try my hands at creating some new bitmaps then.
uninet: Psyon: that would be nice.
Psyon: each byte representing a color in the color table that bochs uses
eks|x: Psyon: normalized palette or each their owns?
eks|x: k
Psyon: normallized
eks|x: bochs palette
Psyon: bochs has an internal pallet
Psyon: Actually... looking at this
eks|x: btw, one annoying thing I've seen is the actual colors used when displaying text in bochs (16 colors)
Psyon: the GUI code would all that needs to be changed
Psyon: just specify the bitmap the same way in the header
eks|x: is this palette easily modifiable?
Psyon: create_bitmap is just passed a pointer to the first byte
Psyon: the they dimensions of the pic
Psyon: so with a mono BMP
Psyon: the size of the pic is (X * Y) / 8
Psyon: but create images still wont be real easy
Psyon: the bytes in the .h files are not in BMP format
uninet: Hmm... I wonder how Kevin did it?
bryce: I'm going to sound like a broken record...
Psyon: he drew them out by hand
bryce: :)
Psyon: like an ASCII artist would
bryce: ....use a toolkit!
Psyon: why?
Psyon: Toolkits take up too much space
Psyon: :)
eks|x: eheh
bryce: a cross-platform GUI library has to deal with this problem
uninet: Psyon: So you would just put out hex symbols until they looked like something?
eks|x: "let's write bochs in asm, so it can fit in 100kb"
eks|x: ;)
bryce: of icon image formats or whatever
Psyon: Yep
Psyon: hehe
Psyon: I think the current way of doing the GUI is nice
Psyon: its just the actuall GUIs
Psyon: that suck
Psyon: heheh
eks|x: don: any idea for that 16 colors palette used to display vga text?
eks|x: hard to fix?
Psyon: reword that
eks|x: well, clear white gets out as light blue..
eks|x: etc, colors are screwed * eks|x should add a bug report..
Psyon: Hmm...
uninet: So most likely it would be easier to wait until we switch to a toolkit to work on the icons?
eks|x: hrmm.. the vga color palette, when displaying text in the guest, gets out wrong
Psyon: actually that standard VGA pallet kinda shows it as offwhite I think
bryce: Tim, IMHO yes :)
Psyon: and text looks fine to me
eks|x: Psyon: colors are screwed on my side
uninet: The text looks good to me too... just like a normal console.
eks|x: Psyon: light blue is dark blue
uninet: bryce: thanks.
eks|x: Psyon: white is light blue, etc
Psyon: It might be the GUI code then
uninet: eks|x: Are you running at 256 colors?
Psyon: each char on the screen is represented by 2 bytes
bryce: on X windows, my text colors are always messed up unless I quit netscape first, and then run bochs
Psyon: one is the character
Psyon: and one is the format options
eks|x: tim: full 32bit color
Psyon: forground and background color
Psyon: you running in X or windows?
eks|x: X
Psyon: ok
uninet: eks|x: do the other apps around Bochs have weird colors too (when bochs is running)?
Psyon: can you send me a screen?
bryce: 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 ;)
eks|x: tim: nope, I can screw in The Gimp in full color no problem but bochs is always screwed, alone or not
bryce: wierd
eks|x: the 0x07 color in text is fine
eks|x: the 0x01 color is very too dark
eks|x: and the 0x09 is like the 0x01 should normally be
uninet: eks|x: Hmm... could it be an misconfig with bochrc's pallet settings (I think it can have a shared or internal pallet, IIRC)?
eks|x: 0x0F gets out as the original 0x09
Psyon: That is proably the internal bochs Pallet
eks|x: that's my guess too
Psyon: http://bochs.sourceforge.net/screenshot/freedos.png
Psyon: that screen shot looks fine
Psyon: so maybe its just you :)
eks|x: eheh
Psyon: actually it looks yellow
Psyon: http://bochs.sourceforge.net/screenshot/kidos.jpg
Psyon: but that one seems ok
eks|x: ehe
Psyon: I need to set up another linux box to play with bochs on
Psyon: I dont like to run it on my web server
Psyon: the X11 GUI uses XSetForeground and XSetBackground
Psyon: so it maybe a problem with those
Psyon: Yeah...
Psyon: looking over the X code
Psyon: I woudl say it is somethign with your X color pallet
Psyon: 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

uninet: Ah people are posting again... I thought everyone had left and my client just didn't sense it.
uninet: Psyon: Thanks!
Psyon: Hmm..
uninet: Perhaps I can make sense of some of this.
Psyon: well that kinda explains why he did it that way
Psyon: In windows
Psyon: I an make it use 256 color bitmaps
Psyon: not sure how to do it in X11
Psyon: or Mac
Psyon: for that matter
Psyon: :)
uninet: :-)
uninet: I suppose this is a good reason for me to finally apply myself to learn C.
uninet: This chat seems to be dying a slow death...
bryce: I'm back, sorry
uninet: Hey Bryce!
bryce: who's left
Psyon: hehe
uninet: eveyone besides myself and Don.
Psyon: me
uninet: (and you of course)
bryce: are you still talking about icons :)
uninet: Yup.
Psyon: Yeah, but we can change the subject to something more important
Psyon: hehe
uninet: Sounds good, I think I'll sit it out for the toolkit to be decided on (if we even decide on one)
bryce: I'm hoping that someone has actual experience with a cross-platform toolkit or is willing to learn
Psyon: hehe
Psyon: I can learn
Psyon: I guess
bryce: since we have bugs and features galore in addition to the gui to work on too
uninet: The difficult thing is, there are lots of qualified people, but not so many that actually know bochs.
Psyon: I know the bochs GUI parts
Psyon: at least the current way
uninet: I'd love to help... maybe I could help out somewhat...
bryce: 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
bryce: we need to help define the interface
Psyon: That is my big problem right now
Psyon: I have to kill some of my other projects
Psyon: and devot time to the major ones
uninet: killall *projects
Psyon: hehe
bryce: (we = people who do know bochs and know what the GUI needs to be able to do)
Psyon: http://www.perlhq.com  -- I have to keep stuff on that page updated.
bryce: my road map is:
bryce: fix up 1.2.pre1
bryce: then call it 1.2
bryce: put binaries of 1.2 everywhere under the sun
Psyon: hehehe
bryce: and then we have a chance at getting more people aware of the project
uninet: Sounds good.
bryce: I bet there are lots of people who stopped looking at www.bochs.com during the last year
uninet: I'm suppose to get it up everywhere under the sun, right?
bryce: I'll be happy to help with that, once we have a 1.2 that we're proud of.
uninet: 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!
bryce: :)
Psyon: I need to fix up the raw disk code a little
bryce: I'm nearly proud of it :)
Psyon: right now its a hack
Psyon: I need to make it proper
uninet: Will that be difficult?
Psyon: no
Psyon: It just assumes a size of the disk
bryce: 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
Psyon: _stat() on windows doesnt work when \\.\a: is opened
Psyon: just need to make it check to see if its using a raw disk or now
Psyon: not
uninet: bryce: I agree. If people see Bochs poping on Freshmeat and such every few weeks, it might make people realize this project is alive!
Psyon: Just need to get disk info a diff way
bryce: psyon, do you have cvs?
Psyon: I can set it up again
bryce: it would probably help in staying current
bryce: or maybe CVS snapshots are better, I don't know
Psyon: oh
Psyon: you just mean to get the code
bryce: yes
Psyon: i thought you meant the CVS server
bryce: no we have one of those now
Psyon: I have CVS on the linux box
Psyon: Ill have to get a client for this one
Psyon: ive just been using snapshots
bryce: whatever works
bryce: if you are actively messing with the code, cvs update would be useful
bryce: 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?
Psyon: Yes
bryce: might be slow
Psyon: but it would work slowly
uninet: What is the difference between RFB and VNC again?
Psyon: RFB is the protolcol
Psyon: VNC is the program
bryce: RFB = request for Bochs?
uninet: Ah, I see... thanks. Sorry, I know that was a dump question.
Psyon: brb... potty break
uninet: hahaha
uninet: I don't know if that was what AT&T was thinking, but I think that is a good explaination of that acronym
bryce: :)
uninet: Well, and then there were two.
bryce: I think it might be easy to put those few survey questions on a SourceForge survey
uninet: That would be nice... to get a feel for the general opinions of the Bochs community.
Psyon: ok
Psyon: bak
bryce: 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.
Psyon: I just may be tooting my own horn... but I think bochs-RFB is a good way to separate the emulator and the GUI :)
uninet: How do you set it up?
Psyon: bochs RFB?
bryce: tim: you have to be admin on the project
uninet: Don, I agree, I think RFB is a very good system of dividing the GUI and emulator.
bryce: and then type in the questions and answers, it's all web form stuff
uninet: Psyon: I meant survey forms.
uninet: bryce: Ah... I see. That's why I couldn't figure out how to set up a survey. :-)
bryce: Don: doesn't RFB imply that you are sending a bunch of pixels for each VGA character, not just a single ascii code?
Psyon: Uhh... Yes
uninet: afk.
Psyon: We need to write our own proto to optimize it
bryce: did you have to "draw" the toolbar yourself?
Psyon: but I went with RFB
Psyon: since there are so many viewers
Psyon: yes I drew the toolbar
Psyon: but all teh GUIs do that
bryce: right
Psyon: I just draw it in the local frame buffer
Psyon: and send it like the rest of the screen updates
bryce: 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.
Psyon: Right!
bryce: like a button, you have to render it, handle clicks to it, etc.
Psyon: yeah
uninet: back.
Psyon: I never said there werent draw backs
Psyon: but
uninet: Could the client vnc GUI use a toolkit to render a button?
Psyon: I was going for compatibility of the viewer
bryce: no a VNC client is VERY simple, right?
Psyon: VNC client just draws data sent to it
uninet: Yeah... could the RFB protocol be extended for "Boch Enhanced" clients, while maintaing compatiblity with normal VNC clients?
Psyon: Hmm....
Psyon: Sure
bryce: VNC is open source right?
Psyon: RFB is event based
Psyon: Yep
Psyon: so adding new Events for Bochs Enhancements
bryce: have you seen Xvnc the VNC-X server for linux
Psyon: would work
Psyon: yes
uninet: 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...
Psyon: We would be better off just modifying it all
bryce: Xvnc is portable, since it has no display code only networking code,
Psyon: and just base it on RFB
Psyon: It would be better to send a text update event and just send the chars
Psyon: but that will only work while in a text mode
Psyon: when In windows
bryce: it seems like you could hack their Xvnc so that you could use any X11 library you like
Psyon: Text would still have to be sent as images
uninet: bryce: I think you are right.
Psyon: You know...
bryce: the X11 library could be used to draw dialog boxes, handle all events, etc. without having to rewrite low level gui code.
Psyon: I guess to extend RFB to work how we want it... you would only need to add two events
Psyon: RFBEventGetUserInput or something to pop up a dialog box...
Psyon: that would be sent to the client
Psyon: RFBDialogItemEvent sent to the bochs server
Psyon: those would be followed by data as to which dialog item was acted on
Psyon: or what type of input to get
uninet: If the client and server where on one computer, would there be much of a performance hit over the current system?
Psyon: There is a bit
bryce: yes
Psyon: Bochs-RFB runs slowly even on the same computer, because I have not implemented compression yet
Psyon: and passing all the graphics through Winsock
Psyon: casues a bottlnet
Psyon: bottleneck
uninet: But if you did, do you think there would still be a hit?
Psyon: not as much
bryce: now bochs uses the lowest level APIs to draw graphics, and I think anything else will be a performance hit.
uninet: bryce: that's true.
Psyon: Then why do you want to use a toolkit?
bryce: I'm advocating GUI libraries for dialogs and control panels and suc
bryce: such
bryce: NOT as a replacement for the current VGA display window
Psyon: oh
Psyon: ok
bryce: which is performance-critical
uninet: I still am not sure that Don's idea of using RFB to seperate the GUI might not be the best way to go...
uninet: (no matter which toolkit is used)
Psyon: I dont think it is the best way to go
Psyon: I just think its a good start
bryce: it can be done, but I think a much higher-level communication between bochs and gui is better
Psyon: the concept and idea
Psyon: did you put bochs-RFB in the CVS tree btw?
uninet: Right, it would need to be worked on, but the concept is good.
bryce: like gui says: "Hey Bochs, I want you to change the floppy disk to /home/bryce/newimage.img"
bryce: and bochs says: "Ok, I did it"
Psyon: I dont think it should be done like that
Psyon: I think it should be done how the current toolbar is done
Psyon: bochs tells the GUI to make a button
Psyon: and gives it a function&