146 lines
4.3 KiB
Plaintext
146 lines
4.3 KiB
Plaintext
|
From: vojta@steero.berkeley.edu (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
|