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

📄 apm.s

📁 grub4dos-0.4.4-2008- 08-src.zip
💻 S
字号:
/* *  GRUB  --  GRand Unified Bootloader *  Copyright (C) 2000, 2001 Free Software Foundation, Inc. * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//* This is stolen from arch/i386/boot/setup.S in Linux 2.2.17 *//*!       setup.S         Copyright (C) 1991, 1992 Linus Torvalds*/ENTRY(get_apm_info)	pushl	%ebp	pushl	%ebx	pushl	%edi	pushl	%esi	call	EXT_C(prot_to_real)	.code16		/* APM BIOS installation check */	movw	$0x5300, %ax	xorw	%bx, %bx	int	$0x15	/* error -> no APM BIOS */	jc	done_apm_bios	/* check for "PM" signature */	cmpw	$0x504d, %bx	/* no signature -> no APM BIOS */	jne	done_apm_bios	/* Is 32 bit supported? */	andw	$0x0002, %cx	/* no ... */	je	done_apm_bios	/* Disconnect first just in case */	movw	$0x5304, %ax	xorw	%bx, %bx	/* ignore return code */	int	$0x15	/* 32 bit connect */	movw	$0x5303, %ax	xorl	%ebx, %ebx	/* paranoia */	xorw	%cx, %cx	xorw	%dx, %dx	xorl	%esi, %esi	xorw	%di, %di	int	$0x15	/* error */	jc	no_32_apm_bios	/* BIOS code segment */	movw	%ax, ABS(EXT_C(apm_bios_info)) + 2	/* BIOS entry point offset */	movl	%ebx, ABS(EXT_C(apm_bios_info)) + 4	/* BIOS 16 bit code segment */	movw	%cx, ABS(EXT_C(apm_bios_info)) + 8	/* BIOS data segment */	movw	%dx, ABS(EXT_C(apm_bios_info)) + 10	/* BIOS code segment length */	movl	%esi, ABS(EXT_C(apm_bios_info)) + 14	/* BIOS data segment length */	movw	%di, ABS(EXT_C(apm_bios_info)) + 18	/*	 * Redo the installation check as the 32 bit connect	 * modifies the flags returned on some BIOSs	 */	/* APM BIOS installation check */	movw	$0x5300, %ax	xorw	%bx, %bx	/* paranoia */	xorw	%cx, %cx	int     $0x15	/* error -> should not happen, tidy up */	jc	done_apm_bios	/* check for "PM" signature */	cmpw	$0x504d, %bx	/* no signature -> should not happen, tidy up */	jne	done_apm_bios	/* record the APM BIOS version */	movw	%ax, ABS(EXT_C(apm_bios_info))	/* and flags */	movw	%cx, ABS(EXT_C(apm_bios_info)) + 12	jmp	done_apm_biosno_32_apm_bios:	/* remove 32 bit support bit */	andw     $0xfffd, ABS(EXT_C(apm_bios_info)) + 12done_apm_bios:	/* Some paranoia here: Always Disconnect from APM */	movw	$0x5304, %ax	xorw	%bx, %bx	/* ignore return code */	int     $0x15	DATA32	call	EXT_C(real_to_prot)	.code32	popl	%esi	popl	%edi	popl	%ebx	popl	%ebp	ret

⌨️ 快捷键说明

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