[syslinux] Comboot Menu

ganapathy murali krishnan gmurali at cs.uchicago.edu
Thu Jan 29 16:28:05 PST 2004


With lots of help from Peter and the Watcom developers, I have managed 
to get the thing working. Right now, you still have to hard code the 
menu entries. However, it has its advantages. For example, one can 
disable certain options, based on other options, "install event 
handlers"....

One really useful menusystem would be combining this with chain.c32. The 
program, first queries the BIOS and finds all the installed hard drives 
and floppy drives, and using chain.c32 like code, finds which one is 
bootable and which is not. Then one can dynamially generate a menu, one 
option for each partition, with the unbootable partitions disabled.

So my question is: Do we still need a way to read a file and display the 
menu from the file? We can only describe static menu systems using the 
file, and besides the following code is not all that difficult to write.

If people are still interested in having static menu entries, then can 
somebody else write that code. I have already spent a lot of time on 
this now, and don't have the time to write the parser now.

You can download this from 
http://people.cs.uchicago.edu/~gmurali/gui/comboot/tui.tgz.

Warnings:
* The color choices I made turned out to be horrible when run under BIOS
   (they did not look very bad under DOS box).
* For some reason I haven't figured out, the color palette of the
   syslinux display changes if I exit out of the menu. If somebody finds
   out why, I'd appreciate knowing it so I can fix it.


--------REALLY SIMPLE EXAMPLE -------
// Bunch of #includes here

int _start()
{
  t_menuitem * curr;

  MAIN = add_menu(" Main Menu ");
  add_item("Prepare","Status Line",OPT_RUN,"syslinux command",0);
  add_item("Second Menu item","Status Line",OPT_RUN,"command",0);
  add_item("Exit", "Exit the menu system", OPT_EXITMENU,"exit", 0);

  curr = showmenus(MAIN); // All the action happens here

  if (!curr) return 0; // user hit Esc in main menu
  if (curr->action == OPT_RUN) runcommand(curr->data);// Call syslinux here
  return 1; // Should never come here
}
------- EXAMPLE ENDS ---------------

- Murali





More information about the Syslinux mailing list