jawhar
November 17th, 2008, 02:54 AM
Does anyone know why int 19h routine point to address 7c00h?is there any cause?
how to calculate 7c00h?
how to calculate 7c00h?
|
Click to See Complete Forum and Search --> : Why int 19h point to 7c00h? jawhar November 17th, 2008, 02:54 AM Does anyone know why int 19h routine point to address 7c00h?is there any cause? how to calculate 7c00h? dnapcex December 6th, 2008, 03:25 AM 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 codeguru.com
Copyright WebMediaBrands Inc., All Rights Reserved. |