From: [email protected] (Paul Vojta)
Newsgroups: comp.sys.ibm.pc
Subject: Old PC's and hard disks (a solution)
Date: 28 Feb 88 06:57:33 GMT

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