New TEXT..ENDTEXT statement for the benefit of the menu system
authorH. Peter Anvin <hpa@zytor.com>
Tue, 3 Oct 2006 04:44:00 +0000 (21:44 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Tue, 3 Oct 2006 04:44:00 +0000 (21:44 -0700)
keywords
keywords.inc
parseconfig.inc

index bfcbc2a..39a871c 100644 (file)
--- a/keywords
+++ b/keywords
@@ -1,4 +1,5 @@
 menu
+text
 append
 default
 display
index cffe6a7..811d5bd 100644 (file)
@@ -1,6 +1,6 @@
 ;; -----------------------------------------------------------------------
 ;;
-;;   Copyright 1994-2002 H. Peter Anvin - All Rights Reserved
+;;   Copyright 1994-2006 H. Peter Anvin - All Rights Reserved
 ;;
 ;;   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
@@ -42,42 +42,45 @@ keywd_size  equ 8   ; Bytes per keyword
 
                align 4, db 0
 
+%define FKeyN(n) (FKeyName+(((n)-1) << FILENAME_MAX_LG2))
+
 keywd_table:
-               keyword menu,      pc_comment
-               keyword append,    pc_append
-               keyword default,   pc_default
-               keyword display,   pc_filecmd,  get_msg_file
-               keyword font,      pc_filecmd,  loadfont
-               keyword implicit,  pc_setint16, AllowImplicit
-               keyword kbdmap,    pc_filecmd,  loadkeys
-               keyword kernel,    pc_kernel
-               keyword label,     pc_label
-               keyword prompt,    pc_setint16, ForcePrompt
-               keyword say,       pc_say
-               keyword serial,    pc_serial
-               keyword console,   pc_setint16, DisplayCon
-               keyword timeout,   pc_timeout,  KbdTimeout
-               keyword totaltimeout, pc_timeout, TotalTimeout
-               keyword ontimeout, pc_ontimeout
-               keyword onerror,   pc_onerror
-               keyword allowoptions, pc_setint16, AllowOptions
-               keyword noescape,  pc_setint16, NoEscape
-               keyword f1,        pc_fkey,     FKeyName+(0<<FILENAME_MAX_LG2)
-               keyword f2,        pc_fkey,     FKeyName+(1<<FILENAME_MAX_LG2)
-               keyword f3,        pc_fkey,     FKeyName+(2<<FILENAME_MAX_LG2)
-               keyword f4,        pc_fkey,     FKeyName+(3<<FILENAME_MAX_LG2)
-               keyword f5,        pc_fkey,     FKeyName+(4<<FILENAME_MAX_LG2)
-               keyword f6,        pc_fkey,     FKeyName+(5<<FILENAME_MAX_LG2)
-               keyword f7,        pc_fkey,     FKeyName+(6<<FILENAME_MAX_LG2)
-               keyword f8,        pc_fkey,     FKeyName+(7<<FILENAME_MAX_LG2)
-               keyword f9,        pc_fkey,     FKeyName+(8<<FILENAME_MAX_LG2)
-               keyword f10,       pc_fkey,     FKeyName+(9<<FILENAME_MAX_LG2)
-               keyword f0,        pc_fkey,     FKeyName+(9<<FILENAME_MAX_LG2)
+               keyword menu,           pc_comment
+               keyword text,           pc_text
+               keyword append,         pc_append
+               keyword default,        pc_default
+               keyword display,        pc_filecmd,     get_msg_file
+               keyword font,           pc_filecmd,     loadfont
+               keyword implicit,       pc_setint16,    AllowImplicit
+               keyword kbdmap,         pc_filecmd,     loadkeys
+               keyword kernel,         pc_kernel
+               keyword label,          pc_label
+               keyword prompt,         pc_setint16,    ForcePrompt
+               keyword say,            pc_say
+               keyword serial,         pc_serial
+               keyword console,        pc_setint16,    DisplayCon
+               keyword timeout,        pc_timeout,     KbdTimeout
+               keyword totaltimeout,   pc_timeout,     TotalTimeout
+               keyword ontimeout,      pc_ontimeout
+               keyword onerror,        pc_onerror
+               keyword allowoptions,   pc_setint16,    AllowOptions
+               keyword noescape,       pc_setint16,    NoEscape
+               keyword f1,             pc_fkey,        FKeyN(1)
+               keyword f2,             pc_fkey,        FKeyN(2)
+               keyword f3,             pc_fkey,        FKeyN(3)
+               keyword f4,             pc_fkey,        FKeyN(4)
+               keyword f5,             pc_fkey,        FKeyN(5)
+               keyword f6,             pc_fkey,        FKeyN(6)
+               keyword f7,             pc_fkey,        FKeyN(7)
+               keyword f8,             pc_fkey,        FKeyN(8)
+               keyword f9,             pc_fkey,        FKeyN(9)
+               keyword f10,            pc_fkey,        FKeyN(10)
+               keyword f0,             pc_fkey,        FKeyN(10)
 %if IS_PXELINUX
-               keyword ipappend,  pc_ipappend
+               keyword ipappend,       pc_ipappend
 %endif
 %if IS_PXELINUX || IS_ISOLINUX
-               keyword localboot, pc_localboot
+               keyword localboot,      pc_localboot
 %endif
 
 keywd_count    equ ($-keywd_table)/keywd_size
index aef3161..de64a18 100644 (file)
@@ -306,6 +306,31 @@ pc_say:            call pc_getline                 ; "say" command
                jmp crlf                        ; tailcall
 
 ;
+; "text" command; ignore everything until we get an "endtext" line
+;
+pc_text:       call pc_getline                 ; Ignore rest of line
+.loop:
+               call pc_getline
+.skipspace:
+               lodsb
+               and al,al
+               jz .loop
+               cmp al,' '
+               jbe .skipspace
+
+               dec si
+               lodsd
+               and eax,0xfdfdfdfd
+               cmp eax,'ENDT'
+               jne .loop
+               lodsd
+               and eax,0x00fdfdfd
+               cmp eax,'EXT'
+               jne .loop
+               ; If we get here we hit ENDTEXT
+               ret
+
+;
 ; Comment line
 ;
 pc_comment:    ; Fall into pc_getline