Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Running (Free)DOS from ROM

428 views
Skip to first unread message

Ruud

unread,
Aug 5, 2011, 1:08:37 PM8/5/11
to
Hallo allemaal,


I'm hobbying more then a bit with some old IBM PC-XT (compatibles).
And I found an old REX EPROM card capable of handling up to sixteen
27512s, good for 1 MByte of data. IMHO enough to contain the most used
files of FreeDOS or MS-DOS. But how to do it?

I know I need a kind of device driver to tell DOS with what device, in
this case the EPROM card, is dealing. Problem: drivers are only loaded
_after_ various other files have been loaded. The PC knows this
because the BIOS contains info how to deal with a floppy drive. Or
with an hard disk drive thanks to the EPROM on the HDD card. Having
written
my own BIOS which I can adapt to my own needs, I won't need an extra
EPROM though :)

I'm sure I could figure it out myself after some time (I think) but if
anybody has done this before and wants to share the knowledge, I would
be very pleased!

Thank you very much in advance!


Groetjes, Ruud Baltissen

Ross Ridge

unread,
Aug 5, 2011, 2:20:15 PM8/5/11
to
Ruud <ruud.ba...@gmail.com> wrote:
>I'm sure I could figure it out myself after some time (I think) but if
>anybody has done this before and wants to share the knowledge, I would
>be very pleased!

I haven't done anything like this, and I doubt anyone has, but I'm
wondering what the problem you're actually facing is. You seem to know
the obvious solutions, a block-mode device driver, an INT 13h hooking
boot ROM, or adding the functionality to your own BIOS. You don't like
the first option, but I don't see what's preventing you from implementing
one of the second two solutions.

Ross Ridge

--
l/ // Ross Ridge -- The Great HTMU
[oo][oo] rri...@csclub.uwaterloo.ca
-()-/()/ http://www.csclub.uwaterloo.ca/~rridge/
db //

Rod Pemberton

unread,
Aug 6, 2011, 3:49:35 AM8/6/11
to
"Ruud" <ruud.ba...@gmail.com> wrote in message
news:6b6811ce-3541-47db...@e3g2000vby.googlegroups.com...

Sorry, not I ...

I would guess that you should just have the BIOS emulate a harddisk using
the data on the EEPROM. IIRC, the first IBM PCs had no hard drive routines
in their BIOS. AIUI, their hard drives had their own interface cards which
also had ROM routines on that card. Later on, the BIOS gained interrupt
routines for hard drives. AIUI, Int 13h was originally for floppies and is
redirected to Int 40h if a hard disk is found. If a hard disk is found,
then Int 13h is for hard disk. I'm assuming Int 13h must redirect floppies
to Int 40h when a hard disk is installed. AIUI, the BIOS will enable ROM
code for other devices. Apparently, it searches for AA55h signature between
640KB and 1MB on 2KB boundaries to locate other BIOS routines, e.g., video
BIOS, add in cards, etc. So, as I see it, you're emulating a "ramdisk", via
your own add in device routines placed somewhere between 640K and 1MB in
ROM/EPROM/EEPROM that need an AA55h on a 2KB boundary, probably trapping Int
13h, maybe Int 18h and/or 19h, or somesuch ... E.g., the "new" Int 13h
would need to "know" that it was accesses the EPROM and use different
routines from what it uses for a hard drive or floppy.

1981 BIOS Int 13h floppy support: 1981 for IBM PC
1984 BIOS extended Int 13h hard disk support: 1984 for IBM AT
1992 IBM/MS Int 13h extensions
1994 Phoenix EDD 1.0 - BIOS extended Int 13h CHS translation
1996 BBS (Bios Boot Spec) 1.01 - boot devices w/out Int 13h support
(BBS adjusts Int 18h and 19h operation also)
1998 Phoenix EDD 3.0 - BIOS extended Int 13h for 28-bit LBA

Some of those might be work a look, e.g., BBS.


Rod Pemberton
(from comp.os.msdos.programmer)


Ruud

unread,
Aug 10, 2011, 12:54:28 PM8/10/11
to
Hallo Rod,


> I would guess that you should just have the BIOS emulate a harddisk using
> the data on the EEPROM.

BINGO, I knew there should be a "simple" solution but I simply didn't
see it!

Thank you very much !!!


Groetjes, Ruud Baltissen
www.Baltissen.org

monahanz

unread,
Aug 12, 2011, 1:17:56 PM8/12/11
to

Ruud, I'm in the process of writing my own BIOS to allow MS-DOS
(Actually PC-DOS V2.1) run on an S-100 Bus system (see for example:-
http://s100computers.com/Software%20Folder/8086%20Monitor/8086%20Monitor.htm)

I currently have is as far as reading 5" 360K disk. I am about to try
and add an HDisk. I was going to first try and add a 1.4M 3" floppy.
My question is: if I return the correct disk parameters to Int 13H
will DOS V2.1 be able to read the disk (even though 1.4 disks were not
available at the time).

Obviously I will try for later versions of DOS later. But right now
they will not floppy boot. Clearly more work needed!

Do you have a link to your bios code or a summary of it? I cannot get
your www.Baltissen.org to link up.

John

Ross Ridge

unread,
Aug 12, 2011, 2:54:23 PM8/12/11
to
monahanz <mon...@vitasoft.org> wrote:
>I currently have is as far as reading 5" 360K disk. I am about to try
>and add an HDisk. I was going to first try and add a 1.4M 3" floppy.
>My question is: if I return the correct disk parameters to Int 13H
>will DOS V2.1 be able to read the disk (even though 1.4 disks were not
>available at the time).

The easiest way to find out would be to get a PC with both a 5 1/4"
and 3 1/2' disk drive, boot MS-DOS 2.1 on it and see if it can acess
the 3 1/2" drive. You can probably do this in virtual machine if you
don't have the hardware.

monahanz

unread,
Aug 12, 2011, 5:54:23 PM8/12/11
to
On Aug 12, 11:54 am, Ross Ridge <rri...@csclub.uwaterloo.ca> wrote:

Well I tried that experiment. Used A: PC-DOS V2.1 and had a 1.44M B:
with files (from a DOS V3.3 system copy).
Doing DIR B: gave garbage file names.
Could not erase files either to try and create my own "V2.1"
directory.
Not sure what the problem is since both use FAT12.

Interestingly I cannot get MS-DOS V3.3 to BOOT. If I could I would be
in great shape. It hangs half way through the boot process. Any ideas?

Single Stage to Orbit

unread,
Aug 12, 2011, 5:54:36 PM8/12/11
to
On Fri, 2011-08-12 at 10:17 -0700, monahanz wrote:
> if I return the correct disk parameters to Int 13H
> will DOS V2.1 be able to read the disk (even though 1.4 disks were not
> available at the time).

Yes definitely as long as the floppy disk controller supports it.
--
Tactical Nuclear Kittens

Single Stage to Orbit

unread,
Aug 12, 2011, 6:22:11 PM8/12/11
to
On Fri, 2011-08-12 at 14:54 -0700, monahanz wrote:
> Well I tried that experiment. Used A: PC-DOS V2.1 and had a 1.44M B:
> with files (from a DOS V3.3 system copy).
> Doing DIR B: gave garbage file names.
> Could not erase files either to try and create my own "V2.1"
> directory.
> Not sure what the problem is since both use FAT12.

Looks like the floppy disk controller isn't being set up correctly to
read/write 1.44MB floppies.
--
Tactical Nuclear Kittens

Rod Pemberton

unread,
Aug 14, 2011, 2:36:28 AM8/14/11
to
"monahanz" <mon...@vitasoft.org> wrote in message
news:8aa88c74-8511-4148...@t30g2000prm.googlegroups.com...

>
> I currently have is as far as reading 5" 360K disk. I am about to
> try and add an HDisk. I was going to first try and add a 1.4M
> 3" floppy. My question is: if I return the correct disk parameters
> to Int 13H will DOS V2.1 be able to read the disk (even though
> 1.4 disks were not available at the time).
>

The information I have indicates the listed disks were added with listed
version:

MS-DOS 1.00 160KB 5.25" SS/SD floppy disks
MS-DOS 1.10 320KB 5.25" DS/SD floppy disks
MS-DOS 1.25 360KB 5.25" DS/DD floppy disks
MS-DOS 3.00 1.2MB 5.25" DS/HD floppy disks
MS-DOS 3.20 720KB 3.5" DS/DD floppy disks
MS-DOS 3.30 1.44MB 3.5" DS/HD floppy disks

HTH,


Rod Pemberton


Ruud

unread,
Aug 14, 2011, 3:33:17 AM8/14/11
to
Hallo John,


> My question is:  if I return the correct disk parameters  to Int 13H
> will DOS V2.1 be able to read the disk

At this moment a 1.44 MB drive has been connected to my IBM XT and it
boots fine from a 720 KB floppy. Writing is no problem, formatting
is.
Regarding the parameters, I'm still using the original ones as I have
no idea what they should be. In fact I had no idea at all what to
change to be able to handle 1.44 MB drives and floppies. I know that a
faster controler is needed as well. If the rest is so simple as
changing that parameter list :)


> Do you have a link to your bios code or a summary of it? I cannot get
> your www.Baltissen.org to link up.

http://www.Baltissen.org should work. http://www.baltissen.org/files/BIOSRB.ASM
is the file.
REMARK: the file is three bytes short !!! I have no idea how to
assemble the file so I assemble it as a COM file. If I add those three
bytes, TASM complains the file is too big. As I had to write a small
Pascal program anyway that cuts the first 56 KB and has to calculate
the checksum, it also adds those bytes.

If anyone can explain how I can assemble the ASM not using the above
trick, please be welcome!


Groetjes, Ruud Baltissen
http://www.Baltissen.org

monahanz

unread,
Aug 14, 2011, 1:04:21 PM8/14/11
to
On Aug 13, 11:36 pm, "Rod Pemberton" <do_not_h...@noavailemail.cmm>
wrote:
> "monahanz" <mona...@vitasoft.org> wrote in message

Thanks Rob. Yes I had the same information, but from above some people
are telling me if I return the correct DP table I can get 2.0 to work
with a 1.44M disk.

I would go to a V3.0 however the boot hangs on my hardware. The
problem is I am adapting my BIOS for a non PC setup (S100 System).
There must be something different in the Int calls in 3.0 that is not
in 2.0. I just cannot figure it out - still looking. What I cannot
understand is that I have an "unimplemented INT trap" for all the 8086
Ints., yet it picks up nothing. Must be looking for some unusual
returned value in the same Ints I implement for V2.0

monahanz

unread,
Aug 14, 2011, 1:09:35 PM8/14/11
to
On Aug 14, 12:33 am, Ruud <ruud.baltis...@gmail.com> wrote:
> Hallo John,
>
> > My question is:  if I return the correct disk parameters  to Int 13H
> > will DOS V2.1 be able to read the disk
>
> At this moment a 1.44 MB drive has been connected to my IBM XT and it
> boots fine from a 720 KB floppy. Writing is no problem, formatting
> is.
> Regarding the parameters, I'm still using the original ones as I have
> no idea what they should be. In fact I had no idea at all what to
> change to be able to handle 1.44 MB drives and floppies. I know that a
> faster controler is needed as well. If the rest is so simple as
> changing that parameter list :)
>
> > Do you have a link to your bios code or a summary of it? I cannot get
> > yourwww.Baltissen.orgto link up.
>
> http://www.Baltissen.orgshould work.http://www.baltissen.org/files/BIOSRB.ASM

> is the file.
> REMARK: the file is three bytes short !!! I have no idea how to
> assemble the file so I assemble it as a COM file. If I add those three
> bytes, TASM complains the file is too big. As I had to write a small
> Pascal program anyway that cuts the first 56 KB and has to calculate
> the checksum, it also adds those bytes.
>
> If anyone can explain how I can assemble the ASM not using the above
> trick, please be welcome!
>
> Groetjes, Ruud Baltissenhttp://www.Baltissen.org

OK Rudd, perhaps I'll try a 720 today. Not worried about formatting, I
can easily do that independent of the OS.
Thanks for the AT Bios link. Actually I have the complete AT Bios
(hand entered) from the manual around here somewhere, but its not much
use since I am using different hardware (2793 FDC etc). See:-
http://s100computers.com/My%20System%20Pages/ZFDC%20Board/ZFDC.htm

John


Rod Pemberton

unread,
Aug 15, 2011, 3:42:56 AM8/15/11
to
"monahanz" <mon...@vitasoft.org> wrote in message
news:ac8e56ee-e83d-4cb4...@j37g2000prh.googlegroups.com...

>
> I would go to a V3.0 however the boot hangs on my hardware. The
> problem is I am adapting my BIOS for a non PC setup (S100 System).
> There must be something different in the Int calls in 3.0 that is not
> in 2.0. I just cannot figure it out - still looking. What I cannot
> understand is that I have an "unimplemented INT trap" for all the 8086
> Ints., yet it picks up nothing. Must be looking for some unusual
> returned value in the same Ints I implement for V2.0
>

Have you implemented a BIOS interrupt trace?

You could print out to the screen which BIOS Int is called, it's AX, and
maybe BX.

Or, you could use the TF cpu flag to trace the assembly, but that requires a
bit more work.

For personal use, I've written a few DOS TSRs that trace interrupts. They
write to the last line in a narrow column on the right hand side of the
screen. I use Int 10h, AH=06h "SCROLL UP WINDOW" to set the text window
area and to scroll the output in that column up. If you save the last
interrupt, you can compare it and only output new interrupts. I output an
asterisk if the interrupt is repeated. I'd think that should work for BIOS
also as long as the text screen is setup correctly.


Rod Pemberton

monahanz

unread,
Aug 15, 2011, 1:05:44 PM8/15/11
to
On Aug 15, 12:42 am, "Rod Pemberton" <do_not_h...@noavailemail.cmm>
wrote:
> "monahanz" <mona...@vitasoft.org> wrote in message

Yes I actually have that built into the BIOS. I output to a serial
port to a PC terminal. I'm actually looking at the "traces" currently.
Yesterday I found that using a PC and if I diskcopy my IBM-PC 2.1 360K
dos disk to another that disk, that disk works fine in my S100/BIOS
system, BUT if I format a disk with "\S" low and behold that disk does
not boot. This is a work in progress but I am suspicious of the
initial BOOT sector. Will compare both. The boot on the format disk
reads slightly different initial sectors!!!

I'm hoping this also could explain why I can't boot DOS 3+.

Thanks for remaining with this tread.

Ruud

unread,
Aug 15, 2011, 3:44:04 PM8/15/11
to
Hallo John,


> Thanks for the AT Bios link.

It's a _XT_ BIOS.

monahanz

unread,
Aug 16, 2011, 7:05:43 PM8/16/11
to

If you guys are still following my efforts...
I figured out why I could boot from an original IBM Disk (or one made
with Diskcopy) but NOT from a newly PC formatted disk with /S.
It seems the original supplied IBM disk is a Single Sided disk. I had
to use the FORMAT /1/S option!

So….. I can get IBM SS disks to work fine with my BIOS. I know the
BIOS itself is fine for double sided reading (I use it with CPM86)
what is the magic to tell DOS V2.0 that the disk is in fact double
sided.
What does it look for? Clearly I am not adding something.

For INT 13H, AH=8 I returned:-
XOR AX,AX
MOV BH,0 ;Always
MOV BL,04H ;0=Unknown, 1=360K, 2=1.2M, 3=720K,
4=1.44M
MOV CH,4FH ;Max Track 79
MOV CL,18 ;Max sector
MOV DH,1 ;Max heads
MOV DL,2 ;Number of floppy disks!
.....
I'm assuming DH is zero based. If I make it DL=2 will DOS 2.01 be able
to read/boot a SS disk correctly

John

Rod Pemberton

unread,
Aug 17, 2011, 7:01:18 AM8/17/11
to
"monahanz" <mon...@vitasoft.org> wrote in message
news:4b48438f-7c5a-4544...@g9g2000yqb.googlegroups.com...
> [...]

> What does it look for? Clearly I am not adding something.
>
> For INT 13H, AH=8 I returned:-
> [...]

First, I'd check to see if you're returning correct results for BL or CL.

Second, are you familiar with RBIL? Ralf Brown's Interrupt List?

You can look through it's interrupts in html form at two websites. Some
of the original text files are not converted to html. So, you may want to
get them as text too. Links to three versions here:
http://aodfaq.wikispaces.com/rbil

Is you're Int 13h, AH=08h interrupt correct? According to the "notes"
section of RBIL, this interrupt is for harddisks prior to AT. It says DOS
only calls this when Int 11h fails to report installed floppies. It also
says DOS requires CL to be non-zero result from Int 11h. This is what is
publicly known about Int 13h, AH=08h, from one of the DJGPP html-ized
versions of RBIL:
http://www.delorie.com/djgpp/doc/rbinter/id/27/6.html

Int 11h
http://www.delorie.com/djgpp/doc/rbinter/id/81/5.html

You might look at Int 13h, AH=15h too:
http://www.delorie.com/djgpp/doc/rbinter/id/45/6.html

Or, Int 1Eh. Apparently, it points to the diskette parameter table in the
BIOS ROM. The table specifies diskette specifics.
http://www.delorie.com/djgpp/doc/rbinter/id/55/24.html
http://www.delorie.com/djgpp/doc/rbinter/it/64/12.html

CMOS location 10h also has floppy disk specific info. This is in RBIL's
CMOS.LST file. This file isn't in the html'ized versions of RBIL. The
following link is not guaranteed to be available. I found it by searching.
You'll need to get the original text version of RBIL if you want it for
reference. See "CMOS 10h - IBM - FLOPPY DRIVE TYPE" section:
http://bochs.sourceforge.net/techspec/CMOS-reference.txt

The EBDA (probably not present on an XT) has floppy disk info at E7h.

DOS 1+ has Int21, AH=1Bh which returns the sidedness of the drive. It has
to be getting the info from the BIOS call or table in BDA or BIOS or CMOS.

I'm not sure what those DOS versions are looking for, but it's probably
there somewhere or elsewhere in RBIL...

HTH,


Rod Pemberton


Esra Sdrawkcab

unread,
Aug 17, 2011, 1:18:20 PM8/17/11
to
On Fri, 12 Aug 2011 22:54:23 +0100, monahanz <mon...@vitasoft.org> wrote:

> On Aug 12, 11:54 am, Ross Ridge <rri...@csclub.uwaterloo.ca> wrote:
>> monahanz <mona...@vitasoft.org> wrote:
>> >I currently have is as far as reading 5" 360K disk. I am about to try
>> >and add an HDisk. I was going to first try and add a 1.4M 3" floppy.
>> >My question is: if I return the correct disk parameters to Int 13H
>> >will DOS V2.1 be able to read the disk (even though 1.4 disks were not
>> >available at the time).
>>
>> The easiest way to find out would be to get a PC with both a 5 1/4"
>> and 3 1/2' disk drive, boot MS-DOS 2.1 on it and see if it can acess
>> the 3 1/2" drive. You can probably do this in virtual machine if you
>> don't have the hardware.
>>
>> Ross Ridge
>>
>> --
>> l/ // Ross Ridge -- The Great HTMU
>> [oo][oo] rri...@csclub.uwaterloo.ca
>> -()-/()/ http://www.csclub.uwaterloo.ca/~rridge/
>> db //
>
> Well I tried that experiment. Used A: PC-DOS V2.1 and had a 1.44M B:
> with files (from a DOS V3.3 system copy).
> Doing DIR B: gave garbage file names.
> Could not erase files either to try and create my own "V2.1"
> directory.
> Not sure what the problem is since both use FAT12.
>

do you need drivparm?

http://webpages.charter.net/danrollins/techhelp/0279.HTM

> Interestingly I cannot get MS-DOS V3.3 to BOOT. If I could I would be
> in great shape. It hangs half way through the boot process. Any ideas?


--
[dash dash space newline sig]

"Nuns! NUNS! Reverse! Reverse!"

monahanz

unread,
Aug 17, 2011, 2:07:09 PM8/17/11
to
On Aug 17, 4:01 am, "Rod Pemberton" <do_not_h...@noavailemail.cmm>
wrote:
> "monahanz" <mona...@vitasoft.org> wrote in message

>
> news:4b48438f-7c5a-4544...@g9g2000yqb.googlegroups.com...
>
> > [...]
> > What does it look for? Clearly I am not adding something.
>
> > For INT 13H, AH=8 I returned:-
> > [...]
>
> First, I'd check to see if you're returning correct results for BL or CL.
>
> Second, are you familiar with RBIL?  Ralf Brown's Interrupt List?
>
> You can look through it's interrupts in html form at two websites.  Some
> of the original text files are not converted to html.  So, you may want to
> get them as text too.  Links to three versions here:http://aodfaq.wikispaces.com/rbil
>
> Is you're Int 13h, AH=08h interrupt correct?  According to the "notes"
> section of RBIL, this interrupt is for harddisks prior to AT.  It says DOS
> only calls this when Int 11h fails to report installed floppies.  It also
> says DOS requires CL to be non-zero result from Int 11h.  This is what is
> publicly known about Int 13h, AH=08h, from one of the DJGPP html-ized
> versions of RBIL:http://www.delorie.com/djgpp/doc/rbinter/id/27/6.html
>
> Int 11hhttp://www.delorie.com/djgpp/doc/rbinter/id/81/5.html

>
> You might look at Int 13h, AH=15h too:http://www.delorie.com/djgpp/doc/rbinter/id/45/6.html
>
> Or, Int 1Eh.  Apparently, it points to the diskette parameter table in the
> BIOS ROM.  The table specifies diskette specifics.http://www.delorie.com/djgpp/doc/rbinter/id/55/24.htmlhttp://www.delorie.com/djgpp/doc/rbinter/it/64/12.html

>
> CMOS location 10h also has floppy disk specific info.  This is in RBIL's
> CMOS.LST file.  This file isn't in the html'ized versions of RBIL.  The
> following link is not guaranteed to be available.  I found it by searching.
> You'll need to get the original text version of RBIL if you want it for
> reference.  See "CMOS 10h - IBM - FLOPPY DRIVE TYPE" section:http://bochs.sourceforge.net/techspec/CMOS-reference.txt
>
> The EBDA (probably not present on an XT) has floppy disk info at E7h.
>
> DOS 1+ has Int21, AH=1Bh which returns the sidedness of the drive.  It has
> to be getting the info from the BIOS call or table in BDA or BIOS or CMOS.
>
> I'm not sure what those DOS versions are looking for, but it's probably
> there somewhere or elsewhere in RBIL...
>
> HTH,
>
> Rod Pemberton

Thanks Rob, yes I have been using Ralf's info a lot. (A tremendous
amount of effort, very useful and appreciated). I am also using "The
Programmers PC Sourcebook" by Thom Hogan.

Thanks for the detailed suggestions. I will try all of them. While
it’s probably not related to my single sided 5” disk problem for DOS
v2.1, I'm a bit worried about the CMOS data for later DOS versions
since I do not have that hardware in my current S-100 system. (I use
the 58167A, see:- http://s100computers.com/My%20System%20Pages/PIC&RTC%20Board/My%20PIC%20Board.htm)

Do you by any chance know if DOS 3.x can boot on the original IBM-PC.
(That box obviously does not have a RTC). Otherwise I will have to do
some more hardware work!

Do you by any chance know if DOS 3.x can boot on the origional

Rod Pemberton

unread,
Aug 18, 2011, 3:26:16 AM8/18/11
to
"monahanz" <mon...@vitasoft.org> wrote in message
news:38db66ac-a035-410e...@k15g2000yqd.googlegroups.com...

>
> Do you by any chance know if DOS 3.x can boot on the original IBM-PC.
> (That box obviously does not have a RTC).
>

No, I don't, sorry. If someone else here doesn't have an answer, maybe try
a post to comp.arch or alt.folklore.computers, etc. There are guys on other
groups, like comp.lang.asm.x86 (moderated) or alt.os.development, who may
know also.


Rod Pemberton


dg1261

unread,
Aug 18, 2011, 4:18:48 AM8/18/11
to
monahanz <mon...@vitasoft.org> wrote in news:38db66ac-a035-410e-8293-
a47141...@k15g2000yqd.googlegroups.com:

> Do you by any chance know if DOS 3.x can boot on the original IBM-PC.
> (That box obviously does not have a RTC).


Yes, it does. I still have an IBM-PC 5150. In place of one of the full-
height 5.25" floppy drives I added a half-height 1.44MB floppy drive and a
half-height 20MB Seagate ST-225 hard drive. At one time or another, it has
booted various versions of PC-DOS or MS-DOS from 2.1 to 6.22. ISTR,
though, that to correctly use a 3.5" floppy you needed DOS 3.x+ the
drivparm command in your config.sys file.

monahanz

unread,
Aug 18, 2011, 1:23:42 PM8/18/11
to
On Aug 18, 1:18 am, dg1261 <dgREMOVE-THIS1...@cs.com> wrote:
> monahanz <mona...@vitasoft.org> wrote in news:38db66ac-a035-410e-8293-
> a47141ca3...@k15g2000yqd.googlegroups.com:

>
> > Do you by any chance know if DOS 3.x can boot on the original IBM-PC.
> > (That box obviously does not have a RTC).
>
> Yes, it does.  I still have an IBM-PC 5150.  In place of one of the full-
> height 5.25" floppy drives I added a half-height 1.44MB floppy drive and a
> half-height 20MB Seagate ST-225 hard drive.  At one time or another, it has
> booted various versions of PC-DOS or MS-DOS from 2.1 to 6.22.  ISTR,
> though, that to correctly use a 3.5" floppy you needed DOS 3.x+ the
> drivparm command in your config.sys file.

That is really great news dg1261 because that simplifies my BIOS
writing tremendously. I need
only INT 13, AH =0 to 8 for floppies.

Does everybody here agree? Why then all the extra AH options that
still have floppy parameters. I know they are
required for hard disks, but why are floppies included (DL < 7FH)

I can search, but offhand do you have the appropriate config.sys file
listing you used.
Are you booting these OS's from a 5" 360K disk?

Jim Leonard

unread,
Aug 18, 2011, 2:20:55 PM8/18/11
to
On Aug 18, 12:23 pm, monahanz <mona...@vitasoft.org> wrote:
> Are you booting these OS's from a 5" 360K disk?

I am, yes (I'm not the original poster).

In fact, pretty much *all* DOS versions boot on an IBM 5150. I've
personally tested 1.1, 2.0, 2.11, 3.10, 3.3, 4.0, 5.0, 6.22, 7.0 (PC
DOS 2000), DR-DOS 5.0, DR-DOS 6.0, Caldera DR-DOS 7.03... all boot
just fine on a 1981 IBM 5150 with a 5.25" 360K floppy drive.

So, if you write a DOS that won't, then you've done something wrong
(like relied on the RTC or something). And if pure DOS won't boot on
your custom BIOS, you've done something else wrong :-)

monahanz

unread,
Aug 18, 2011, 8:29:37 PM8/18/11
to

That's really great news guys because it really contains the problem.
I was thinking later versions off the BIOS utilize INT13H with AH>8,
possibly other ints and the CMOS Clock,. I now beginning to think
the problem is in my formatting the disks.

BTW does anybody have the source code for the BOOT sector.

dg1261

unread,
Aug 18, 2011, 8:30:17 PM8/18/11
to
monahanz <mon...@vitasoft.org> wrote in news:94c470de-f5a3-4031-9923-
66a814...@x21g2000prd.googlegroups.com:

> I can search, but offhand do you have the appropriate
> config.sys file listing you used.
>

Just google for "dos drivparm syntax".

Drivparm is an internal command, though there seems to be a bit of
discrepancy on the 'net re: required DOS version. I took a quick scan
through the DOS system files and found DRIVPARM inside PC-DOS 3.3
(ibmbio.com) and MS-DOS 3.2 (io.sys) but not in PC-DOS 3.1 or any earlier
versions, so I'd say the minimum DOS version is 3.2.

My 5150 presently boots MS-DOS 6.22 from the hard drive, but I know at one
time or another I've also booted it from any version of my 5.25" DOS
floppies. I've also booted from a 3.5" floppy of MS-DOS 5.0. I don't
recall if I ever tried tried booting anything earlier than MS-DOS 5.0 from
the 3.5" floppy.


Rod Pemberton

unread,
Aug 19, 2011, 3:52:33 AM8/19/11
to
"monahanz" <mon...@vitasoft.org> wrote in message
news:c0cc35c4-db52-4b69...@e20g2000prn.googlegroups.com...

>
> BTW does anybody have the source code for the BOOT sector.
>

Are you writing your own or want to see a disassembled version? I.e., some
people don't want to look at existing code... You should find disassemblies
of (copyrighted, probably...) boot sectors at the "Starman's" pages,
"Reverse Engineering DOS ...," and the two "Study of BIOS ..." links.

Anyway, here are some links you might find interesting. I had to dig
through many of my old posts to get them. All links should work. A couple
are no longer available, but are archived via Wayback Machine. You'll have
to select a date for the WM archived links. Most should pull up the page
listed.

"MBRs (Master Boot Records"
http://thestarman.pcministry.com/asm/mbr/index.html#MBR

That page covers:
"All about FDISK.EXE"
"What does FDISK.EXE do to a hard drive?"
"The Windows(tm) 7 MBR"
"The Windows(tm) Vista MBR"
"The Windows(tm) 2000/XP MBR"
"The Windows(tm) MBR for FAT32"
"The Standard MBR"
"Notes on DOS 3.30 and an early (1988) OEM version"
"The Ranish MBR/Compact Boot Manager"
"The IBM(rt) Personal Computer(tm) DOS 2.00 MBR and Hom Similar
it is to the Standard MBR (of DOS 3.30)"

Throughout those pages are lots of interesting details, such as Win98's IHC
string for floppies. You might be interested in a number of other pages he
has, such as "MBR", "BIOS" - a history of the BIOS, and "A Forensic
Examiniation of 'IBM PC DOS 1.0" and '1.10'" So, this is "Starman's" home
page:
http://thestarman.pcministry.com/


You may find some of these useful also:

"Reverse-Engineering DOS 1.0 - Part 1: The Boot Sector"
http://www.pagetable.com/?p=165

"Partition types" Andries Brouwer
http://www.win.tue.nl/~aeb/partitions/

"ATA-ATAPI.COM" with Public Domain ATA/ATAPI code by Hale Landis
http://www.ata-atapi.com/

IDE code by "Doors"
http://www.freedoors.org/idework/idework.htm

Alan Cox posted a list of BIOS calls used by Linux v2.4:
http://groups.google.com/group/linux.kernel/msg/8472b20ca0139418

Bruce Simpson posted a list of BIOS calls and BDA references used by
FreeBSD:
https://groups.google.com/group/mailing.freebsd.current/msg/240d2d86c5b03be9?hl=en

"A Study of BIOS Interrupts as used by Microsoft Windows 2000" by Adam
Sulmicki via Wayback Archive:
http://wayback.archive.org/web/*/http://www.missl.cs.umd.edu/winint/index1.html

"A Study of BIOS Services as used by Microsoft Windows XP" by Adam Sulmicki
via Wayback Archive:
http://wayback.archive.org/web/*/http://www.missl.cs.umd.edu/winint/index2.html


HTH,


Rod Pemberton

monahanz

unread,
Aug 20, 2011, 8:08:01 PM8/20/11
to
On Aug 18, 5:30 pm, dg1261 <dgREMOVE-THIS1...@cs.com> wrote:
> monahanz <mona...@vitasoft.org> wrote in news:94c470de-f5a3-4031-9923-
> 66a814f33...@x21g2000prd.googlegroups.com:

Well Rod (and others), I finally solved what the problem was with my
custom S100/8086 ROM BIOS.
To recap, I could read single sided MS-DOS V2.10 5" (360K) disks fine.
But not DS Disks
Yet I had no problem with PC CPM-86 .DS disks.
Long story short.... The problem had to do with the way CPM & MS-DOS
do disk sides. In CPM-86 I had 1-9 sectors on one side and for side B,
sectors were "called" 10-18. i.e. there was no special set side
command.
In MS-DOS of course the side in in DH.

As is usually the case very simple and obvious when you find it!

Now I will move on to higher DOS versions and 1.44 disks etc. One
thing this experience did do, is force me to add an extensive debug
stream to a serial terminal . Displays all int info etc.

Thanks for all the help/suggestions.

(I may be back!)

s_dub...@yahoo.com

unread,
Sep 1, 2011, 8:34:32 PM9/1/11
to

This doesn't sound quite right. CPM-86 5 1/4 diskettes are DS 320k, 8
spt, or 160k SS. The 'sideness' is determined by the last byte of the
boot sector. Null is SS, 1h if DS. The cp/m bios checks that byte to
determine sideness. Also, the data layout is different; it is tracks
first then side, with side0, trk0..79, then side1, trk79..0 as the
sequencial order. This pertains to the ibm PC version and ibm PC/XT
version.

The dw 0AA55h signature word in the boot sector came later for msdos.

Probably you know that 3 1/2 720k diskettes can be formatted as
360/320k to take diskette images of 5 1/4 360/320k, this may be an
option for you to test also.

> In MS-DOS of course the side in in DH.
>
> As is usually the case very simple and obvious when you find it!
>
> Now I will move on to higher DOS versions and 1.44 disks etc.   One
> thing this experience did do, is force me to add an extensive debug
> stream to a serial terminal . Displays all int info etc.
>
> Thanks for all the help/suggestions.
>

> (I may be back!)- Hide quoted text -
>
> - Show quoted text -

0 new messages