I want to create a program that I would load on an external hard drive such that it a computer could boot from it. The basics of this program would be to list some Ubuntu LiveCD. Then, the user would select a LiveCD and I would then boot the chosen LiveCD.
What I want to know is how can I boot a c or c++ program that would list (probably from a text file) the different versions available. I know how to do that in c++ (pretty simple). However, what I don’t know is how to boot this program. What kind of assembly code could I use to launch such a program?
Are there any books or tutorial that I could read about this topic?
What you are asking is incredibly hard. You are asking how to write a boot loader, which is a very complex thing to do. You will need to handle video output, mouse/keyboard, usb drivers, mounting disks, etc, etc – you are writing a mini-OS in fact.
For tips/examples take a look at GRUB.
You might “cheat” and use an existing boot loader to load a tiny linux kernel from which you can use C to boot the ISO, but this still is very hard thing to do. I would suggest looking into alternatives.