Jump to content











Photo
- - - - -

chainloading PC-DOS IBMBIO.COM


  • Please log in to reply
7 replies to this topic

#1 roytam1

roytam1

    Member

  • Developer
  • 99 posts
  •  
    Hong Kong

Posted 15 May 2011 - 11:10 AM

I knew that there is pcdos= switch in chain.c32, but I can't get it working.
What I get is:
Non-System disk or disk error
Replace and press any key when ready

#2 Sha0

Sha0

    WinVBlock Dev

  • Developer
  • 1682 posts
  • Location:reboot.pro Forums
  • Interests:Booting
  •  
    Canada

Posted 15 May 2011 - 12:34 PM

I knew that there is pcdos= switch in chain.c32, but I can't get it working.

Please share your associated config-file section, if you are using one. If you aren't, then please show the command-line you are using. Please also share which kind of Syslinux you are using; [SYS|ISO|PXE|EXT]LINUX.

#3 roytam1

roytam1

    Member

  • Developer
  • 99 posts
  •  
    Hong Kong

Posted 15 May 2011 - 12:37 PM

Please share your associated config-file section, if you are using one. If you aren't, then please show the command-line you are using. Please also share which kind of Syslinux you are using; [SYS|ISO|PXE|EXT]LINUX.

Environment:
Syslinux 4.04 installed on a 1440K floppy image, with ibmbio.com, ibmdos.com command.com from PCP-DOS 2000 (also tested PC-DOS 7.1 build 132)
Test with qemu -fda syslinux.img
command-line: chain.c32 pcdos=ibmbio.com

Edited by roytam1, 15 May 2011 - 12:39 PM.


#4 roytam1

roytam1

    Member

  • Developer
  • 99 posts
  •  
    Hong Kong

Posted 18 May 2011 - 07:19 AM

I'm not familiar with Syslinux chain.c32, but on Grub4DOS side I put my effort on getting PC DOS 2000/7.1 support.
You may want to have a look for a reference: http://code.google.c...es/detail?id=27

#5 Sha0

Sha0

    WinVBlock Dev

  • Developer
  • 1682 posts
  • Location:reboot.pro Forums
  • Interests:Booting
  •  
    Canada

Posted 18 May 2011 - 08:52 PM

Environment:
Syslinux 4.04 installed on a 1440K floppy image, with ibmbio.com, ibmdos.com command.com from PCP-DOS 2000 (also tested PC-DOS 7.1 build 132)
Test with qemu -fda syslinux.img
command-line: chain.c32 pcdos=ibmbio.com

I'm not familiar with Syslinux chain.c32, but on Grub4DOS side I put my effort on getting PC DOS 2000/7.1 support.
You may want to have a look for a reference...

I've never heard of "PCP-DOS 2000" or "PC-DOS 7.1 build 132" and don't know who the last person to test those with chain.c32 might have been, but thanks for reporting the bug and sharing your code. I will try to remember to share this with other Syslinux community members.

Have a nice day. :)

#6 roytam1

roytam1

    Member

  • Developer
  • 99 posts
  •  
    Hong Kong

Posted 19 May 2011 - 10:39 AM

I've never heard of "PCP-DOS 2000" or "PC-DOS 7.1 build 132" and don't know who the last person to test those with chain.c32 might have been, but thanks for reporting the bug and sharing your code. I will try to remember to share this with other Syslinux community members.

Have a nice day. :)

"PCP-DOS 2000" is a typo, it should be "PC DOS 2000".
For newer code you can have a look in stage2/builtins.c in svn which have improved in stability.

Edited by roytam1, 19 May 2011 - 10:39 AM.


#7 Icecube

Icecube

    Gold Member

  • Team Reboot
  • 1063 posts
  •  
    Belgium

Posted 25 May 2011 - 03:30 PM

@ roytam1
What is really needed to boot PC-DOS?
The grub4dos code is difficult to understand.

Which values can the ecx register contain?

#8 roytam1

roytam1

    Member

  • Developer
  • 99 posts
  •  
    Hong Kong

Posted 25 May 2011 - 03:40 PM

@ roytam1
What is really needed to boot PC-DOS?
The grub4dos code is difficult to understand.

Which values can the ecx register contain?

It is a bug report: chain.c32 says you can use pcdos=ibmbio.com to chainload PC-DOS, but it doesn't boot at all.

For register details, please see the comment in FreeDOS SYS 3.6d SOURCE\ke2039\boot\oemboot.asm:

; File:
; oemboot.asm
; 2004, Kenneth J. Davis
; Copyright © 200?, <add name here>
; Description:
; OEM boot sector for FreeDOS compatible with IBM's ® PC-DOS,
; and Microsoft's ® MS-DOS. It may work with older OpenDOS/DR-DOS,
; although the standard FreeDOS boot sector is needed with ver 7+
; releases. May work with other versions of DOS that use
; IBMBIO.COM/IBMDOS.COM pair. This boot sector loads only up
; to 58 sectors (29KB) of the kernel (IBMBIO.COM) to 0x70:0 then
; jumps to it. As best I can tell, PC-DOS (and MS-DOS up to version
; 6.xx behaves similar) expects on entry for:
; ch = media id byte in the boot sector
; dl = BIOS drive booted from (0x00=A:, 0x80=C:, ...)
; ax:bx = the starting (LBA) sector of cluster 2 (ie the 1st
; data sector, which is 0x0000:0021 for FAT12)

; ?note? IBMBIO.COM/IO.SYS may use ax:bx and cluster # stored
; elsewhere (perhaps dir entry still at 0x50:0) to determine
; starting sector for full loading of kernel file.
; it also expects the boot sector (in particular the BPB)
; to still be at 0x0:7C00
, the directory entry for IBMBIO.COM
; (generally first entry of first sector of the root directory)
; at 0x50:0 (DOS Data Area)
. The original boot sector may update
; the floppy disk parameter table (int 1Eh), but we don't so
; may fail for any systems where the changes (???) are needed.
; If the above conditions are not met, then IBMBIO.COM will
; print the not a bootable disk error message.
;
; For MS-DOS >= 7 (ie Win9x DOS) the following conditions
; must be met:
; bp = 0x7C00, ie offset boot sector loaded at
; [bp-4] = the starting (LBA) sector of cluster 2 (ie the 1st
; data sector [this is the same as ax:bx for earlier versions
; and dx:ax in Win9x boot sector]
; The starting cluster of the kernel file is stored in
; di for FAT 12/16 (where si is a don't care) and si:di
; for FAT 32.
; The values for ax,bx,cx,dx,ds and the stack do not
; seem to be important (used by IO.SYS) and so may be any value
; (though dx:ax=[data_start], cx=0, bx=0x0f00 on FAT12 or
; 0x0700 on FAT32, ds=0, ss:sp=0:7b??)

; the boot time stack may store the original int1E floppy
; parameter table, otherwise nothing else important seems
; stored there and I am unsure if even this value is used
; beyond boot sector code.

;
; This boot sector only supports FAT12/FAT16 as PC-DOS
; does not support FAT32 and newer FAT32 capable DOSes
; probably have different boot requirements; also do NOT
; use it to boot the FreeDOS kernel as it expects to be
; fully loaded by boot sector (> 29KB & usually to 0x60:0).
;
; WARNING: PC-DOS has additional requirements, in particular,
; it may expect that IBMBIO.COM and IBMDOS.COM be the 1st
; two entries in the root directory (even before the label)
; and that they occupy the 1st consecutive data sectors.
; Newer releases may support other positions, but still
; generally should occupy consecutive sectors. These conditions
; can usually be met by running sys on a freshly formatted
; and un-label'd disk.

Edited by roytam1, 25 May 2011 - 03:42 PM.





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users