📄 grub-0.93-diff
字号:
+ cmpb $0x08, %al+ jnz failed_check_msdos7plus+ cld+ lodsl+ movl %eax, %ebx+ movw $0x0560, %si /* the saved int 08 vector */+ cld+ lodsl+ cmpl %ebx, %eax+ jnz failed_check_msdos7plus++ movw $0x0823, %si /* another saved int 0f vector */+ cld+ lodsb+ cmpb $0x0f, %al+ jnz failed_check_msdos7plus+ cld+ lodsl+ movl %eax, %ebx+ movw $0x057c, %si /* the saved int 0f vector */+ cld+ lodsl+ cmpl %ebx, %eax+ jnz failed_check_msdos7plus++ call restore_BDA_EBDA+ + cli+ xorw %ax, %ax+ movw %ax, %es+ movw %ax, %ds+ movw $0x0540, %si+ movw %ax, %di /* int 00 to 1f */+ movw $0x0040, %cx /* 64 words to move */+ cld+ repz movsw+ movw $0x0100, %di /* int 40 to 43 */+ movw $0x0008, %cx /* 8 words to move */+ cld+ repz movsw+ cld+ lodsl+ movw $0x0118, %di /* int 46 */+ cld+ stosl+ cld+ lodsl /* int 4b, already in place */+ cld+ lodsl+ movw $0x013c, %di /* int 4f */+ cld+ stosl+ movw $0x01c0, %di /* int 70 to 77 */+ movw $0x0010, %cx /* 16 words to move */+ cld+ repz movsw+ movw $0x0810, %si /* another saved int 19 */+ cld+ lodsl+ movw $0x0064, %di /* int 19 */+ cld+ stosl+ + jmp move_stage2_image++failed_check_msdos7plus:+ /* check for MS-DOS 5.0+ */+ + xorw %ax, %ax+ movw %ax, %ds++ movw $0x0800, %si+ cld+ lodsb+ cmpb $0x10, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x13, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0x9e000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x15, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x19, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x1b, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus++ movw $0x0d41, %si+ cld+ lodsb+ cmpb $0x02, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x08, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x09, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x0a, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x0b, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x0c, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x0d, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x0e, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x70, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x72, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x73, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x74, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ cld+ lodsb+ cmpb $0x76, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jnb 1f+ addw $0x000d, %ax+ movw %ax, %si+ shrl $0x10, %eax+ movw %ax, %ds+ lodsw+ movw %ax, %si+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus+ xorw %ax, %ax+ movw %ax, %ds+ movw $0x0d82, %si+1:+ cld+ lodsb+ cmpb $0x77, %al+ jnz failed_check_msdos5plus+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb failed_check_msdos5plus++ call restore_BDA_EBDA+ + cli+ xorw %ax, %ax+ movw %ax, %es+ movw %ax, %ds++ movw $0x0800, %si+ cld+ lodsb+ movw $0x0040, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x004c, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x0054, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x0064, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x006c, %di+ cld+ lodsl+ stosl++ movw $0x0d41, %si+ cld+ lodsb+ movw $0x0008, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x0020, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x0024, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x0028, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x002c, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x0030, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x0034, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x0038, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x01c0, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x01c8, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x01cc, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x01d0, %di+ cld+ lodsl+ stosl+ cld+ lodsb+ movw $0x01d8, %di+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jnb 1f+ addw $0x000d, %ax+ movw %ax, %si+ shrl $0x10, %eax+ movw %ax, %ds+ lodsw+ movw %ax, %si+ lodsl+1:+ stosl+ xorw %ax, %ax+ movw %ax, %ds+ movw $0x0d82, %si+ cld+ lodsb+ movw $0x01dc, %di+ cld+ lodsl+ stosl++ jmp move_stage2_image++check_msdos4minus:+ /* check for MS-DOS 4.0- */+ + xorw %ax, %ax+ movw %ax, %ds++ movw %bx, %si /* int 19 */+ cld+ lodsl+ cmpl $0xc0000000, %eax+ jb 1f+ cld+ lodsb+ cmpb $0x01, %al /* the byte 01 followed by int 02, ... */+ jnz 1f+ + /* int 02,08-0e,70,72-74,76-77 */+ movw $0x000e, %cx /* 14 vectors to check */+ call check_a_range_of_ROM_vectors+ jc 1f++ pushw %bx+ call restore_BDA_EBDA+ popw %bx+ + cli+ cld+ xorw %ax, %ax+ movw %ax, %es+ movw %ax, %ds+ movw %bx, %si /* int 19 */+ movw $0x0064, %di+ lodsl+ stosl+ lodsb /* the byte "01" */+ movw $0x0008, %di /* int 02 */+ lodsl+ stosl+ movw $0x0020, %di /* int 08 to 0f */+ movw $0x000e, %cx /* 14 words to move */+ repz movsw+ movw $0x01c0, %di /* int 70 */+ lodsl+ stosl+ movw $0x01c8, %di /* int 72 */+ lodsl+ stosl+ lodsl /* int 73 */+ stosl+ lodsl /* int 74 */+ stosl+ movw $0x01d8, %di /* int 76 */+ lodsl+ stosl+ lodsl /* int 77 */+ stosl++ clc+ ret+1:+ stc /* failed_check_msdos4minus */+ ret++failed_check_msdos5plus:+ /* check for MS-DOS 4.01 */+ + movw $0x240e, %bx+ call check_msdos4minus+ jc failed_check_msdos4++ jmp move_stage2_image++failed_check_msdos4:+ /* check for MS-DOS 3.30 */+ + movw $0x2172, %bx+ call check_msdos4minus+ jc failed_check_msdos3++ jmp move_stage2_image++failed_check_msdos3:+ /* check for FreeDOS (build 2029+) */+ + /*+ * MS himem.sys takes over int 15, so check for the case.+ */+ + xorw %ax, %ax+ movw %ax, %es+ movw %ax, %ds+ movw $0x0054, %di+ movl (%di), %eax /* int 15 vector in table */+ cmpl $0xc0000000, %eax /* is it a valid BIOS vector? */+ jnb 1f /* yes, do nothing */+ movw $0x3086, %si /* no, take one from himem */+ movl (%si), %eax+ cmpl $0xe0000000, %eax /* is it a system BIOS vector? */+ jb failed_check_freedos /* no, do not continue */+1: /* yes, continue */+ xorw %ax, %ax+ movw %ax, %ds
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -