Re: stand-alone binary
From: Norm Dresner (ndrez_at_att.net)
Date: Tue, 31 Aug 2004 03:11:57 GMT
"SFD" <firstname.lastname@example.org> wrote in message
> "Norm Dresner" <email@example.com> wrote in message
> > "SFD" <firstname.lastname@example.org> wrote in message
> > news:S42dnfWrnLMSxK7cRVn-qQ@adelphia.com...
> > > I'm trying to create a stand-alone binary file that can be executed
> > > boot.
> > >
> > > Is there a way to do this in C, or does it need to be done in
> > >
> > > If it needs to be done in assembly, can it be assembled under Unix to
> > > stand-alone binary?
> > >
> > > I'd like to be able to print a simple message.
> > >
> > > Any examples, docs, references would be much appreciated.
> > >
> > > Thanks
> > Before boot, there is no file system so there are no shared libraries
> > available -- static linking would be your only option. Also there are
> > services so you don't have std-in/our/err channels either, your only
> > is to directly address the hardware which makes your program totally
> > unportable, possibly even between similar machines with different
> > accessories. It could be done in C -- a language that's often called a
> > "high-level assembly language" though much I/O may have to be done in
> > your particular library doesn't provide the routines necessary to do
> > hardware I/O.
> > What are you trying to do that a simple sign on the machine wouldn't
> > accomplish?
> > Norm
> What I'm trying to do is create a boot cd and if it is in the drive when
> system boots, a message displays.
> It can either display the message or cat a text file.
> I found a file type that works on boot up, I just am not sure how to
> this type of file:
> # file output
> Microsoft a.out separate pure segmented standalone word-swapped V2.3
> V3.0 86 small model executable
Yeah, that'd probably work. I assume you're on a PC-compatible computer.
Your best bet is either an assembler or a 16-bit MS-DOS C-compiler which can
create the appropriate .COM -- but you'll have to be very careful about the
starting address because the BIOS boot loader doesn't load programs at the
same address as a normal OS does. Do you know how to make BIOS calls to
get text out?