⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 appendix-int19_3.htm

📁 编写自己的操作系统
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0059)http://www.huihoo.com/gnu_linux/own_os/appendix-int19_3.htm -->
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY>
<P><SPAN lang=EN-US><FONT face="Times New Roman" size=6><SPAN 
style="mso-tab-count: 1"><STRONG>A.3 INT 19h - Bootstrap 
Loader</STRONG></SPAN></FONT></SPAN></P><SPAN lang=EN-US><FONT 
face="Times New Roman" size=5><SPAN style="mso-tab-count: 1">
<P>
<P><FONT size=3>[</FONT><A 
href="index.htm" 
tppabs="http://pagoda-ooos.51.net/os_book/index.htm"><FONT 
size=3>Home</FONT></A><FONT size=3>]&nbsp; [</FONT><A 
href="appendix.htm" 
tppabs="http://pagoda-ooos.51.net/os_book/appendix.htm"><FONT 
size=3>Top</FONT></A><FONT size=3>]&nbsp; [</FONT><FONT size=3><A 
href="appendix-bios_memory_2.htm" 
tppabs="http://pagoda-ooos.51.net/os_book/appendix/appendix-bios_memory_2.htm">Previous</A></FONT><FONT 
size=3>]&nbsp; [</FONT><FONT size=3>Next</FONT><FONT size=3>]</FONT></P>
<P></P><STRONG>
<HR width="100%" SIZE=2>
</STRONG></SPAN></FONT></SPAN><B>
<P><B>Desc:</B> This interrupt reboots the system without clearing memory or 
restoring interrupt vectors. Because interrupt vectors are preserved, this 
interrupt usually causes a system hang if any TSRs have hooked vectors from 00h 
through 1Ch, particularly INT 08. </P></B>
<P><B>Notes:</B> Usually, the BIOS will try to read sector 1, head 0, track 0 
from drive <PRE><P><B>A:</B><BR>To 0000h:7C00h.  If this fails, and a hard disk is installed, the
BIOS will read sector 1, head 0, track 0 of the first hard disk.
This sector should contain a master bootstrap loader and a partition
table.  After loading the master boot sector at
0000h:7C00h, the master bootstrap loader is given control
.  It will scan the partition table for an active
partition, and will then load the operating system's bootstrap
loader (contained in the first sector of the active partition) and
give it control..
True IBM PCs and most clones issue an INT 18 if neither floppy nor hard
disk have a valid boot sector.
To accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
0040h:0072h and jump to FFFFh:0000h.  For a cold boot equivalent to
a reset, store 0000h at 0040h:0072h before jumping..
VDISK.SYS hooks this interrupt to allow applications to find out how
much extended memory has been used by VDISKs.  DOS 3.3+
PRINT hooks INT 19 but does not set up a correct VDISK header block
at the beginning of its INT 19 handler segment, thus causing some
programs to overwrite extended memory which is already in use..
The default handler is at F000h:E6F2h for 100% compatible BIOSes.
MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
contains extended partitions which point at each other in a loop,
since it will never find the end of the linked list of extended
partitions.
Under Windows Real and Enhanced modes, calling INT 19 will hang the
system in the same was as under bare DOS; under Windows Standard
mode, INT 19 will successfully perform a cold reboot as it appears
to have been redirected to a MOV AL,0FEh/OUT 64h,AL sequence
</P></PRE>
<P><B>BUG:</B> When loading the remainder of the DOS system files fails, various 
versions of IBMBIO.COM/IO.SYS incorrectly restore INT 1E before calling INT 19, 
assuming that the boot sector had stored the contents of INT 1E at DS:SI instead 
of on the stack as it actually does <PRE><P><FONT face=宋体></FONT>
Format of VDISK header block (at beginning of INT 19 handler's segment):
<A name=Table623></A>
Offset  Size    Description     (Table 0623)
00h 18 BYTEs   n/a (for VDISK.SYS, the device driver header)
12h 11 BYTEs   signature string "VDISK  Vn.m" for VDISK.SYS version n.m
1Dh 15 BYTEs   n/a
2Ch  3 BYTEs   linear address of first byte of available extended memory
<P>
Format of hard disk master boot sector:
<A name=Table624></A>
Offset  Size    Description     (Table 0624)
00h 446 BYTEs  Master bootstrap loader code
1BEh 16 BYTEs   partition record for partition 1
1CEh 16 BYTEs   partition record for partition 2
1DEh 16 BYTEs   partition record for partition 3
1EEh 16 BYTEs   partition record for partition 4
1FEh    WORD    signature, AA55h indicates valid boot block
<P>
Format of partition record:
<A name=Table625></A>
Offset  Size    Description     (Table 0625)
00h    BYTE    boot indicator (80h = active partition)
01h    BYTE    partition start head
02h    BYTE    partition start sector (bits 0-5)
03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
04h    BYTE    operating system indicator
05h    BYTE    partition end head
06h    BYTE    partition end sector (bits 0-5)
07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
08h    DWORD   sectors preceding partition
0Ch    DWORD   length of partition in sectors
</P></PRE><PRE><P><STRONG><FONT face=宋体></FONT></STRONG>
<A name=Table626></A>
(Table 0626)
Values for operating system indicator:
00h    empty
01h    DOS 12-bit FAT
02h    XENIX root file system
03h    XENIX /usr file system (obsolete)
04h    DOS 16-bit FAT (up to 32M)
05h    DOS 3.3+ extended partition
06h    DOS 3.31+ Large File System (16-bit FAT, over 32M)
07h    QNX
07h    OS/2 HPFS
07h    Windows NT NTFS
07h    Advanced Unix
08h    OS/2 (v1.0-1.3 only)
08h    AIX bootable partition, SplitDrive
08h    Commodore DOS
08h    DELL partition spanning multiple drives
09h    AIX data partition
09h    Coherent filesystem
0Ah    OS/2 Boot Manager
0Ah    OPUS
0Ah    Coherent swap partition
0Bh    Windows95 with 32-bit FAT
0Ch    Windows95 with 32-bit FAT (using LBA-mode INT 13 extensions)
0Eh    logical-block-addressable VFAT (same as 06h but using LBA-mode INT 13)
0Fh    logical-block-addressable VFAT (same as 05h but using LBA-mode INT 13)
10h    OPUS
11h    OS/2 Boot Manager hidden 12-bit FAT partition
12h    Compaq Diagnostics partition
14h    (resulted from using Novell DOS 7.0 FDISK to delete Linux Native part)
14h    OS/2 Boot Manager hidden sub-32M 16-bit FAT partition
16h    OS/2 Boot Manager hidden over-32M 16-bit FAT partition
17h    OS/2 Boot Manager hidden HPFS partition
17h    hidden NTFS partition
18h    AST special Windows swap file ("Zero-Volt Suspend" partition)
19h    Willowtech Photon coS
1Bh    hidden Windows95 FAT32 partition
1Ch    hidden Windows95 FAT32 partition (using LBA-mode INT 13 extensions)
1Eh    hidden LBA VFAT partition
20h    Willowsoft Overture File System (OFS1)
21h    officially listed as reserved
21h    FSo2
23h    officially listed as reserved
24h    NEC MS-DOS 3.x
26h    officially listed as reserved
31h    officially listed as reserved
33h    officially listed as reserved
34h    officially listed as reserved
36h    officially listed as reserved
38h    Theos
3Ch    PowerQuest PartitionMagic recovery partition
40h    VENIX 80286
41h    Personal RISC Boot
42h    SFS (Secure File System) by Peter Gutmann
50h    OnTrack Disk Manager, read-only partition
51h    OnTrack Disk Manager, read/write partition
51h    NOVEL
52h    CP/M
52h    Microport System V/386
53h    OnTrack Disk Manager, write-only partition???
54h    OnTrack Disk Manager (DDO)
56h    GoldenBow VFeature
61h    SpeedStor
63h    Unix SysV/386, 386/ix
63h    Mach, MtXinu BSD 4.3 on Mach
63h    GNU HURD
64h    Novell NetWare 286
65h    Novell NetWare (3.11)
67h    Novell
68h    Novell
69h    Novell
70h    DiskSecure Multi-Boot
71h    officially listed as reserved
73h    officially listed as reserved
74h    officially listed as reserved
75h    PC/IX
76h    officially listed as reserved
7Eh    F.I.X.
80h    Minix v1.1 - 1.4a
81h    Minix v1.4b+
81h    Linux
81h    Mitac Advanced Disk Manager
82h    Linux Swap partition
82h    Prime
83h    Linux native file system (ext2fs/xiafs)
<P><B>84h    OS/2-renumbered type 04h partition (related to hiding DOS C:</B><BR>Drive)
86h    FAT16 volume/stripe set (Windows NT)
87h    HPFS Fault-Tolerant mirrored partition
87h    NTFS volume/stripe set
93h    Amoeba file system
94h    Amoeba bad block table
A0h    Phoenix NoteBIOS Power Management "Save-to-Disk" partition
A1h    officially listed as reserved
A3h    officially listed as reserved
A4h    officially listed as reserved
A5h    FreeBSD, BSD/386
A6h    OpenBSD
A9h    NetBSD (http://www.netbsd.org/)
B1h    officially listed as reserved
B3h    officially listed as reserved
B4h    officially listed as reserved
B6h    officially listed as reserved
B7h    BSDI file system (secondarily swap)
B8h    BSDI swap partition (secondarily file system)
C1h    DR DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition
C4h    DR DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition
C6h    DR DOS 6.0 LOGIN.EXE-secured Huge partition
C6h    corrupted FAT16 volume/stripe set (Windows NT)
C7h    Syrinx Boot
C7h    corrupted NTFS volume/stripe set
D8h    CP/M-86
DBh    CP/M, Concurrent CP/M, Concurrent DOS
DBh    CTOS (Convergent Technologies OS)
E1h    SpeedStor 12-bit FAT extended partition
E3h    DOS read-only
E3h    Storage Dimensions
E4h    SpeedStor 16-bit FAT extended partition
E5h    officially listed as reserved
E6h    officially listed as reserved
F1h    Storage Dimensions
F2h    DOS 3.3+ secondary partition
F3h    officially listed as reserved
F4h    SpeedStor
F4h    Storage Dimensions
F6h    officially listed as reserved
FEh    LANstep
FEh    IBM PS/2 IML
FFh    Xenix bad block table
</P></PRE>
<P><B>Note:</B> For partition type 07h, one should inspect the partition boot 
record for the actual file system type </P>
<P><BR>(Table 0627)<BR>Values Bootstrap loader is called with (IBM 
BIOS):.<BR>CS:IP = 0000h:7C00h.<BR>DH = access<BR></P><PRE><P><B>bits 7-6,4-0:</B><BR>Don't care
<P><B>bit 5:</B><BR>=0 device supported by INT 13.
DL = boot drive
00h first floppy
</P></PRE></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -