[net.micro.pc] Dos Startup modification

al@psivax.UUCP (Al Schwartz) (02/05/85)

In article <11841@gatech.UUCP> klute@gatech.UUCP (Gregory Kenley) writes:
>A while back I remember reading an article in either PC or PC-Tech regarding
>modifying DOS on startup to skip the memory test.
>Gregory Kenley
>CSNet:  klute @ GATech		ARPA:  klute%GATech.CSNet @ CSNet-Relay.ARPA
>uucp:	...!{akgua,allegra,hplabs,ihnp4,linus,seismo,ulysses}!gatech!klute

The memory test code for the IBM is contained in the ROMS that are plugged
into the motherboard of the machine.  The memory has to be tested first
before the DOS can be booted in.  Therefore to make this change in software
one must make new ROMS (very expensive).  One way I can think of doing this
though, is to set your memory size switches on the motherboard for a lesser
memory size (so that only that amount will be tested by the ROM code) and
then later change the memory location(s) that the DOS (or BIOS) uses to
keep track of the memory size.  That way the programs that you run will know
how much memory.  You will also have to run a program that ignores parity
errors and then reads each location of memory that
was not tested in order to set the parity bit correctly, otherwise you'll
get a parity error when you attempt to use the memory.
This will only work with DOS versions less than 2.0.  In DOS 2.0 they added
a memory management scheme that allocates memory when
booted to correspond to the switch settings.  Any attempt to allocate more
than the switch settings were set to will cause the memory allocate
algorithm to fail.

My IBM PC takes 51 seconds to test the RAM (640K).  Thats just enough time
to go out an get a beer and pretzels.
-- 
Yow! Am I having fun yet?             Al Schwartz
                                      Pacesetter Systems Inc., Sylmar, CA 
{trwrb|allegra|burdvax|cbosgd|hplabs|ihnp4|sdcsvax|aero|uscvax|ucla-cs|
 bmcg|sdccsu3|csun|orstcs|akgua|randvax}!sdcrdcf!psivax!al

dmt@ahuta.UUCP (d.tutelman) (02/08/85)

CC:         dmt
REFERENCES:  <307@psivax.UUCP>

As has already been pointed out, doing away with the startup test involves
burning new ROMs.  I disagree with the comment about expense (unless you
buy an EPROM burner for this one-shot job), but it may be illegal.
In order to do it, you would need to copy the IBM BIOS ROM onto a
writeable medium (say, a floppy), edit it, and use the edited version
as input to an EPROM programmer.  IBM has been sticky about people
copying their BIOS, even as the starting point for a modified BIOS.
They may not know (or care, if they do know) about your one-off job,
but they have the legal right to stop you if they do.

Other vendors of BIOS may permit copying, or may have a BIOS that
already bypasses the RAM test.  I've heard good things about the
BIOS sold by Display Telecommunications Corp, though no first-hand
experience.  It's advertised in BYTE for $30.
			Dave Tutelman

al@psivax.UUCP (Al Schwartz) (02/11/85)

In article <431@ahuta.UUCP> dmt@ahuta.UUCP (d.tutelman) writes:
>As has already been pointed out, doing away with the startup test involves
>burning new ROMs.  I disagree with the comment about expense (unless you
>buy an EPROM burner for this one-shot job), but it may be illegal.
>In order to do it, you would need to copy the IBM BIOS ROM onto a
>writeable medium (say, a floppy), edit it, and use the edited version
>as input to an EPROM programmer.  IBM has been sticky about people

Let me know if there are EPROMS available to do this.  I think that the ROMs
that IBM uses have a strange pinout that CANNOT be emulated by standard
EPROMS (27xx series).  I guess one could build some adaptor boards but I
would not consider this to be an elegant solution to the problem.

I have heard that the BIOS ROM determines that the machine has been powered-
up once already by examining two memory locations and checking them against
the pattern 0x12 , 0x34.  I forgot which locations have this (see the BIOS
listing in the Tech. Ref. Manual for more details).  If these locations contain
the pattern then the BIOS skips the memory test.  One could construct a 
circuit that decodes those memory locations to "fool" the BIOS into thinking
that it tested the memory already.  There still has to be software to write
every memory location that you plan to use in order to set the parity bit
at every memory location.  This has to be done with the parity error interrupt
ignored.  I am still not sure if this will work though.  Has anyone out there
tried to do this?
-- 
Yow! Am I having fun yet?             Al Schwartz
                                      Pacesetter Systems Inc., Sylmar, CA 
{trwrb|allegra|burdvax|cbosgd|hplabs|ihnp4|sdcsvax|aero|uscvax|ucla-cs|
 bmcg|sdccsu3|csun|orstcs|akgua|randvax}!sdcrdcf!psivax!al
or {seismo|citcsv|engvax|wlbr|zeus}!scgvaxd!psivax!al

marc@wlcrjs.UUCP (Marc Lavine) (02/11/85)

In article <307@psivax.UUCP> al@psivax.UUCP (Al Schwartz) writes:
>
>In article <11841@gatech.UUCP> klute@gatech.UUCP (Gregory Kenley) writes:
>>A while back I remember reading an article in either PC or PC-Tech regarding
>>modifying DOS on startup to skip the memory test.

Al suggests a way to get around the problem, but says:

>This will only work with DOS versions less than 2.0.  In DOS 2.0 they added
>a memory management scheme that allocates memory when
>booted to correspond to the switch settings.  Any attempt to allocate more
>than the switch settings were set to will cause the memory allocate
>algorithm to fail.

It is still possible to chnage the amount of memory that DOS 2.0 thinks is
available, but you must know about how DOS's memory management works.  An
article (no doubt the one Gregory was looking for) describing how DOS
manages memory and providing the listing of an assembly program to solve the
memory changing problem is in the August, 1984 issue of PC Tech Journal.  It
starts on page 43.
-- 
			Marc Lavine
uucp:	...ihnp4!wlcrjs!marc
MCI Mail:  MLavine

gino@voder.UUCP (Gino Bloch) (02/12/85)

[munch]

> I have heard that the BIOS ROM determines that the machine has been powered-
> up once already by examining two memory locations and checking them against
> the pattern 0x12 , 0x34.  I forgot which locations have this (see the BIOS
> listing in the Tech. Ref. Manual for more details). If these locations contain
> the pattern then the BIOS skips the memory test.  One could construct a 
> circuit that decodes those memory locations to "fool" the BIOS into thinking
> that it tested the memory already.
There is a company (I forget their name - my memory wasn't tested when I booted
up this morning) that makes such a device.  Jerry Pournelle mentioned it in
Byte, both June & July 1984.  The price is $70 - seems high to me.  I have
guessed that they use the scheme you mention, but I don't know.  I also don't
know if it works on my clone (Compaq).
-- 
Gene E. Bloch (...!nsc!voder!gino)
The opinions expressed above are accidents.