jmp mode_menu
lmdef: ret
-_setrec: jmp setrec # Ugly...
-_set_80x25: jmp set_80x25
-
# Setting of user mode (AX=mode ID) => CF=success
mode_set:
movw %ax, bootsym(boot_vid_mode)
je setvesabysize
testb $VIDEO_RECALC>>8, %ah
- jnz _setrec
+ jnz setrec
cmpb $VIDEO_FIRST_SPECIAL>>8, %ah
jz setspc
setmenu:
orb %al, %al # 80x25 is an exception
- jz _set_80x25
+ jz set_80x25
pushw %bx # Set mode chosen from menu
call mode_table # Build the mode table
cmpw $0x004f, %ax
jnz setbad
- leaw vesa_mode_info, %di
- subb $VIDEO_FIRST_VESA>>8, %bh
- movw %bx, %cx # Get mode information structure
+ leaw vesa_mode_info, %di # Get mode information structure
+ leaw -VIDEO_FIRST_VESA(%bx), %cx
movw $0x4f01, %ax
int $0x10
- addb $VIDEO_FIRST_VESA>>8, %bh
cmpw $0x004f, %ax
jnz setbad
movb (%di), %al # Check mode attributes.
andb $0x99, %al
cmpb $0x99, %al
- jnz _setbad # Doh! No linear frame buffer.
+ jnz setbad # Doh! No linear frame buffer.
pushw %bx
subb $VIDEO_FIRST_VESA>>8, %bh
- orw $0x4000, %bx # Use linear frame buffer
+ orb $0x40, %bh # Use linear frame buffer
movw $0x4f02, %ax # VESA BIOS mode set call
int $0x10
popw %bx
cmpw $0x004f, %ax # AL=4f if implemented
- jnz _setbad # AH=0 if OK
+ jnz setbad # AH=0 if OK
movb $1, bootsym(graphic_mode) # flag graphic mode
movw %bx, bootsym(video_mode)
stc
ret
-_setbad: jmp setbad # Ugly...
-
# Recalculate vertical display end registers -- this fixes various
# inconsistencies of extended modes on many adapters. Called when
# the VIDEO_RECALC flag is set in the mode ID.
leaw modelist,%si
1: add $8,%si
cmpw $ASK_VGA,-8(%si) # End?
- je _setbad
+ je setbad
movw -6(%si),%ax
cmpw %ax,bootsym(vesa_size)+0
jne 1b
#endif
ret
+ .p2align 1
mt_end: .word 0 # End of video mode table if built
edit_buf: .space 6 # Line editor buffer
card_name: .word 0 # Pointer to adapter name
name_bann: .asciz "Video adapter: "
+ .p2align 1
force_size: .word 0 # Use this size instead of the one in BIOS vars
GLOBAL(boot_vid_info)
jne bogus_real_magic
# for acpi_sleep=s3_bios
- testl $1, wakesym(video_flags)
+ testb $1, wakesym(video_flags)
jz 1f
lcall $0xc000, $3
movw %cs, %ax # In case messed by BIOS
movw %ax, %ss # Need this? How to ret if clobbered?
1: # for acpi_sleep=s3_mode
- testl $2, wakesym(video_flags)
+ testb $2, wakesym(video_flags)
jz 1f
- movl wakesym(video_mode), %eax
+ movw wakesym(video_mode), %ax
call mode_setw
1: # Show some progress if VGA is resumed
ljmpl $BOOT_CS32, $bootsym_rel(wakeup_32, 6)
-/* This code uses an extended set of video mode numbers. These include:
- * Aliases for standard modes
- * NORMAL_VGA (-1)
- * EXTENDED_VGA (-2)
- * ASK_VGA (-3)
- * Video modes numbered by menu position -- NOT RECOMMENDED because of lack
- * of compatibility when extending the table. These are between 0x00 and 0xff.
- */
-#define VIDEO_FIRST_MENU 0x0000
-
-/* Standard BIOS video modes (BIOS number + 0x0100) */
-#define VIDEO_FIRST_BIOS 0x0100
-
-/* VESA BIOS video modes (VESA number + 0x0200) */
-#define VIDEO_FIRST_VESA 0x0200
-
-/* Video7 special modes (BIOS number + 0x0900) */
-#define VIDEO_FIRST_V7 0x0900
-
# Setting of user mode (AX=mode ID) => CF=success
mode_setw:
movw %ax, %bx
cmpb $VIDEO_FIRST_VESA>>8, %ah
jnc check_vesaw
- decb %ah
setbadw: clc
ret
check_vesaw:
subb $VIDEO_FIRST_VESA>>8, %bh
- orw $0x4000, %bx # Use linear frame buffer
+ orb $0x40, %bh # Use linear frame buffer
movw $0x4f02, %ax # VESA BIOS mode set call
int $0x10
cmpw $0x004f, %ax # AL=4f if implemented
- jnz _setbadw # AH=0 if OK
+ jnz setbadw # AH=0 if OK
stc
ret
-_setbadw: jmp setbadw
-
bogus_real_magic:
movw $0x0e00 + 'B', %fs:(0x12)
jmp bogus_real_magic