Re: stand-alone binary

From: Norm Dresner (ndrez_at_att.net)
Date: 08/31/04


Date: Tue, 31 Aug 2004 03:11:57 GMT


"SFD" <sfd@adelphia.net> wrote in message
news:GeednYL-Q-N35a7cRVn-sg@adelphia.com...
> "Norm Dresner" <ndrez@att.net> wrote in message
> news:dyKYc.534065$Gx4.358845@bgtnsc04-news.ops.worldnet.att.net...
> > "SFD" <sfd@adelphia.net> wrote in message
> > news:S42dnfWrnLMSxK7cRVn-qQ@adelphia.com...
> > > I'm trying to create a stand-alone binary file that can be executed
> before
> > > boot.
> > >
> > > Is there a way to do this in C, or does it need to be done in
assembly?
> > >
> > > If it needs to be done in assembly, can it be assembled under Unix to
be
> > > 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
no
> OS
> > services so you don't have std-in/our/err channels either, your only
> choice
> > 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
ASM
> if
> > your particular library doesn't provide the routines necessary to do
> direct
> > 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
create
> 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?

    Norm