-
November 17th, 2008, 02:54 AM
#1
Why int 19h point to 7c00h?
Does anyone know why int 19h routine point to address 7c00h?is there any cause?
how to calculate 7c00h?
-
December 6th, 2008, 03:25 AM
#2
Re: Why int 19h point to 7c00h?
Hi jawhar!
INT 19 - Bootstrap Loader
DL = physical drive where boot sector is located
no output
- track 0, sector 1 is loaded into address 0:7C00
and control is transferred there
- not a preferred method for rebooting by applications. A
better method is to set the word at location 40:72 to 1234h
and jump to location FFFF:0 in ROM
- memory is not cleared when rebooted through this interrupt
addtion:
Warm Boot / System Bootstrap
- Ctrl-Alt-Delete results in a warm boot but only after part of the
POST sequence has executed. See COLD BOOT for more information.
- ROM BIOS bootstrap loader (INT 19) attempts Boot Record load
- Drive A: is searched for a Boot Record, if no Boot Record is found
the active partition of the first drive is searched. If found, it
is loaded into memory at 7C00:0 and given control. If still not
found Cassette BASIC is loaded (IBM only) or a prompt for a system
diskette is displayed.
- the boot record code checks that IBMBIO.COM and IBMDOS.COM (IO.SYS
and DOS.SYS for MSDOS) exist and are the first two files. These
files must be contiguous and the first two directory entries.
- boot record loads IBMBIO.COM
- IBMBIO.COM initialization code loads IBMDOS.COM
/ determines equipment status
/ resets disk system
/ initializes attached devices
/ loads installable device drivers
/ sets DOS relative interrupt vectors
/ relocates IBMDOS.COM downward and begins its execution
- IBMDOS.COM initializes its working tables
/ initializes DOS interrupt vectors for interrupts 20h through 27h
/ builds PSP for COMMAND.COM at lowest possible segment
/ interrupt vectors for INTs 0Fh through 3Fh are initialized
(for DOS 3.1+)
/ loads COMMAND.COM (or specified command interpreter) using the
EXEC call.
- AUTOEXEC.BAT is then loaded and executed
Boot Sector (since DOS 2.0)
Offset Size Description
00 3bytes jump to executable code
03 8bytes OEM name and version
0B word bytes per sector
0D byte sectors per cluster (allocation unit size)
0E word number of reserved sectors (starting at 0)
10 byte number of FAT's on disk
11 word number of root directory entries (directory size)
13 word number of total sectors (0 if partition > 32Mb)
15 byte media descriptor byte (see MEDIA DESCRIPTOR)
16 word sectors per FAT
18 word sectors per track (DOS 3.0+)
1A word number of heads (DOS 3.0+)
1C word number of hidden sectors (DOS 3.0+)
20 dword (DOS 4+) number of sectors if offset 13 was 0
24 byte (DOS 4+) physical drive number
25 byte (DOS 4+) reserved
26 byte (DOS 4+) signature byte (29h)
27 dword (DOS 4+) volume serial number
2B 11bytes (DOS 4+) volume label
36 8bytes (DOS 4+) reserved
- implementation format not guaranteed in all OEM DOS releases
- BIOS expects a boot sector of 512 bytes
- DOS 3.2 began reading BIOS Parameter Block (BPB) information from
the boot sector, previous versions used only the media byte in FAT
- DOS 4.x added offsets 20-3Dh and offset 20h determines the number
of sectors if offset 13h is zero
- hard disks have a master boot record and partition boot records;
the master boot record and Disk Partition Table (DPT) share the
same sector
POST - Cold Boot / Power On Self Test Activities
- power supply starts Clock Generator (8284) with Power
Good signal on BUS
- CPU reset line is pulsed resetting CPU
- DS, ES, and SS are cleared to zero
Cold and Warm Boot both execute the following sequence
- CS:IP are set to FFFF:0000 (address of ROM POST code)
- jump to CS:IP (execute POST, Power On Self test)
- interrupts are disabled
- CPU flags are set, read/write/read test of CPU registers
- checksum test of ROM BIOS
- Initialize DMA (verify/init 8237 timer, begin DMA RAM refresh)
- save reset flag then read/write test the first 32K of memory
- Initialize the Programmable Interrupt Controller (8259)
and set 8 major BIOS interrupt vectors (interrupts 10h-17h)
- determine and set configuration information
- initialize/test CRT controller & test video memory (unless 1234h
found in reset word)
- test 8259 Programmable Interrupt Controller
- test Programmable Interrupt Timer (8253)
- reset/enable keyboard, verify scan code (AAh), clear keyboard,
check for stuck keys, setup interrupt vector lookup table
- hardware interrupt vectors are set
- test for expansion box, test additional RAM
- read/write memory above 32K (unless 1234h found in reset word)
- addresses C800:0 through F400:0 are scanned in 2Kb blocks in
search of valid ROM. If found, a far call to byte 3 of the ROM
is executed.
- test ROM cassette BASIC (checksum test)
- test for installed diskette drives & FDC recalibration & seek
- test printer and RS-232 ports. store printer port addresses
at 400h and RS-232 port addresses at 408h. store printer
time-out values at 478h and Serial time-out values at 47Ch.
- NMI interrupts are enabled
- perform INT 19 (bootstrap loader), pass control to boot record
or cassette BASIC if no bootable disk found
- WARM BOOT procedure is now executed
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|