[comp.sys.ibm.pc] Old PC's and hard disks

vojta@steero.berkeley.edu (Paul Vojta) (02/28/88)

In the past few weeks I have seen a number of postings concerning the problem
of installing a hard disk in an old PC-1, given the fact that IBM has
stopped selling its ROM upgrade (or is still selling it for $60, depending on
what you read).  In any case, I am writing to share with you the solution that I
have been using for the past several years, which involves creating a floppy
with a modified boot record.  On all PC's, the computer first tries to read and
execute a record from the floppy drive before trying to boot up from the hard
disk.  Usually this record contains a very small program which reads DOS from
the floppy and starts it running.  With my special floppy, however, the small
program on the boot record initializes the hard disk and loads DOS from the
hard drive instead.

     This modified boot record also has the following feature.  If you set your
DIP switches to indicate that the computer has only 64K of memory, then the
boot record will automatically determine how much memory your system actually
has (up to 640K) and set its internal parameters accordingly.  This both avoids
a lengthy memory check and allows you to expand to 640K (instead of 512K).

     To put this boot record on a given floppy disk, first edit out the listing
at the end of this posting.  Let's say it's in a file called "FOO."  To modify
a given floppy, put the diskette into drive A: and type  "DEBUG  <FOO"  at the
command line.  Oh yes, I forget you don't have a hard disk yet.  In that case,
DEBUG should be copied to the special floppy first, or you could run it from
drive B:.  In any case, after running DEBUG, that special floppy should be
placed into the computer each time you turn it on or reboot via Ctrl-Alt-Del.
You might want to create several such floppies as backups; there is no normal
way to copy this boot record.  (These floppies are "special" only with respect
to booting up the computer; they can still be used to hold DOS files.  There is
no reason to put DOS itself on them, though; you cannot boot DOS directly from
these disks but instead must use them to boot DOS from elsewhere.)

     This is OK so far, but only if you already have DOS on your hard disk,
which is unlikely.  In order to put DOS on the hard disk, you need to boot DOS
from a floppy, yet the hard disk must be already initialized so that DOS can
run FDISK and FORMAT.  To do this, you must use the third feature of this
special boot record, which is the following.  If you hold down the "Alt" key
while booting with this specially modified floppy, the computer will initialize
the hard disk and then pause, enabling you to insert another floppy to boot DOS
from that second floppy instead of the hard disk.  You can then run FDISK and
FORMAT as if you had the newer BIOS.

     So, to sum it all up, you do the following:

	1.  Create a special floppy using the enclosed DEBUG script.
	2.  Reboot the computer using (a) the special floppy while holding the
	    "Alt" key down, followed by (b) a normal DOS floppy.
	3.  Run FDISK as described in the DOS manual.
	4.  Repeat step 2.
	5.  Run FORMAT as described in the DOS manual.

You now have a usable hard disk; you only have to remember always to boot from
the special floppy created in step 1.  I only wish the instructions leading up
to this point were easier, but any easier description eludes me.

----%<--%<--%<-- CUT HERE -->%-->%-->%----
l 100 0 0 1
a 100
jmp	0136

a 136
xor	ax,ax
mov	ds,ax
mov	ss,ax
mov	sp,7c00
sti
mov	byte ptr [0440],01
mov	ax,[0413]
cmp	ax,0040
jg	016f
mov	cl,06
shl	ax,cl
cmp	ax,a000
jnb	016f
mov	es,ax
xor	di,di
stosw
es:
cmp	ax,[di-02]
jnz	016f
mov	cx,01ff
repz
stosw
inc	word ptr [0413]
add	ax,0040
jmp	0151
cmp	byte ptr [004f],c8
jz	017b
call	c800:0003
xor	ax,ax
mov	ds,ax
mov	es,ax
mov	si,7c00
mov	di,7e00
mov	cx,0100
cld
repz
movsw
jmp	0390
test	byte ptr [0417],08
jz	01bd
cld
mov	si,7edb
lodsb
cmp	al,00
jz	01ab
mov	ah,0e
mov	bx,0007
push	si
int	10
pop	si
jmp	019b
mov	ah,01
int	16
pushf
mov	ah,00
int	16
popf
jnz	01ab
mov	word ptr [7ed9],0000
mov	ax,0201
mov	bx,7c00
mov	cx,0001
mov	dx,[7ed9]
int	13
jb	01bd
in	al,21
and	al,fe
out	21,al
jmp	0000:7c00
dw	80
db	'Insert DOS floppy and strike any key when ready.',d,a,0

w 100 0 0 1
q

rde@eagle.ukc.ac.uk (R.D.Eager) (03/01/88)

Expires:

Sender:

Followup-To:



Some time ago I posted a menu driven program, with full help, for generating
a boot record on a floppy for booting hard disks on old PCs. I will mail
it to anyone who asks, or post if there is enough interest.

No use of DEBUG is required.
-- 
           Bob Eager
           rde@ukc.UUCP
           ...!mcvax!ukc!rde
           Phone: +44 227 764000 ext 7589