diff options
Diffstat (limited to 'pxelinux.asm')
-rw-r--r-- | pxelinux.asm | 52 |
1 files changed, 13 insertions, 39 deletions
diff --git a/pxelinux.asm b/pxelinux.asm index 1986bc22..2c879252 100644 --- a/pxelinux.asm +++ b/pxelinux.asm @@ -289,6 +289,13 @@ _start1: ; ; Now set up screen parameters call adjust_screen + + ; Wipe the F-key area + mov al,NULLFILE + mov di,FKeyName + mov cx,10*(1 << FILENAME_MAX_LG2) + rep stosb + ; ; Tell the user we got this far ; @@ -835,21 +842,19 @@ ctrl_f: push di jmp short show_help func_key: + ; AL = 0 if we get here push di cmp ah,68 ; F10 ja get_char_2 sub ah,59 ; F1 jb get_char_2 - shr ax,8 + xchg al,ah show_help: ; AX = func key # (0 = F1, 9 = F10) - mov cl,al - shl ax,FILENAME_MAX_LG2 ; Convert to offset - mov bx,1 - shl bx,cl - and bx,[FKeyMap] - jz get_char_2 ; Undefined F-key - mov di,ax + shl ax,FILENAME_MAX_LG2 ; Convert to pointer + xchg di,ax add di,FKeyName + cmp byte [di],NULLFILE + je get_char_2 ; Undefined F-key call searchdir jz fk_nofile push si @@ -2306,36 +2311,6 @@ initrd_cmd_len equ 7 ; Config file keyword table ; %include "keywords.inc" - align 2, db 0 - -keywd_table: - keyword append, pc_append - keyword default, pc_default - keyword timeout, pc_timeout - keyword font, pc_font - keyword kbdmap, pc_kbd - keyword display, pc_display - keyword prompt, pc_prompt - keyword label, pc_label - keyword implicit, pc_implicit - keyword kernel, pc_kernel - keyword serial, pc_serial - keyword say, pc_say - keyword f1, pc_f1 - keyword f2, pc_f2 - keyword f3, pc_f3 - keyword f4, pc_f4 - keyword f5, pc_f5 - keyword f6, pc_f6 - keyword f7, pc_f7 - keyword f8, pc_f8 - keyword f9, pc_f9 - keyword f10, pc_f10 - keyword f0, pc_f10 - keyword ipappend, pc_ipappend - keyword localboot, pc_localboot - -keywd_count equ ($-keywd_table)/keywd_size ; ; Extensions to search for (in *forward* order). @@ -2415,7 +2390,6 @@ pxe_undi_shutdown_pkt: ; AppendLen dw 0 ; Bytes in append= command KbdTimeOut dw 0 ; Keyboard timeout (if any) -FKeyMap dw 0 ; Bitmap for F-keys loaded CmdLinePtr dw cmd_line_here ; Command line advancing pointer initrd_flag equ $ initrd_ptr dw 0 ; Initial ramdisk pointer/flag |