Remove core/ui.inc completely from Syslinux
authorPaulo Alcantara <pcacjr@zytor.com>
Wed, 11 Apr 2012 23:39:05 +0000 (20:39 -0300)
committerPaulo Alcantara <pcacjr@zytor.com>
Thu, 12 Apr 2012 00:25:33 +0000 (21:25 -0300)
The old UI used by Syslinux is no longer supported. The 32-bit environment
already provides us an awesome prompt.

All Syslinux variants do not depend on it anymore, thus they were
modified in order to support the new prompt provided by the ELF module
ldlinux.c32.

Signed-off-by: Paulo Alcantara <pcacjr@zytor.com>
core/diskfs.inc
core/isolinux.asm
core/pxelinux.asm
core/ui.inc [deleted file]

index fff0d32..f62d80e 100644 (file)
@@ -70,7 +70,6 @@ trackbuf      resb trackbufsize       ; Track buffer goes here
 ;
 %include "diskstart.inc"
 
-
 ;
 ; Now, everything is "up and running"... patch kaboom for more
 ; verbosity and using the full screen system
@@ -87,11 +86,61 @@ trackbuf    resb trackbufsize       ; Track buffer goes here
 ; If we get to this point ldlinux.c32 failed to run. There's nothing
 ; left to do but inform that user that something went wrong.
 ;
+enter_command:
+auto_boot:
                jmp kaboom
 
-%include "ui.inc"
+               section .bss16
+               global CmdOptPtr, KbdMap
+               alignb 4
+ThisKbdTo      resd 1                  ; Temporary holder for KbdTimeout
+ThisTotalTo    resd 1                  ; Temporary holder for TotalTimeout
+KernelExtPtr   resw 1                  ; During search, final null pointer
+CmdOptPtr      resw 1                  ; Pointer to first option on cmd line
+KbdFlags       resb 1                  ; Check for keyboard escapes
+FuncFlag       resb 1                  ; Escape sequences received from keyboard
+KernelType     resb 1                  ; Kernel type, from vkernel, if known
+KbdMap         resb 256                ; Keyboard map
+               global KernelName
+KernelName     resb FILENAME_MAX       ; Mangled name for kernel
+               section .config
+               global PXERetry
+PXERetry       dw 0                    ; Extra PXE retries
+               section .data16
+               global SerialNotice
+SerialNotice   db 1                    ; Only print this once
+%if IS_PXELINUX
+               extern IPOption
+               global IPAppends, numIPAppends
+               alignz 2
+IPAppends      dw IPOption
+numIPAppends   equ ($-IPAppends)/2
+%else
+IPAppends      equ 0
+numIPAppends   equ 0
+%endif
+
+               section .text16
+;
+; COMBOOT-loading code
+;
+%include "comboot.inc"
+%include "com32.inc"
+
+;
+; Boot sector loading code
+;
+
+;
+; Abort loading code
+;
 
 ;
+; Hardware cleanup common code
+;
+
+%include "localboot.inc"
+
 ;
 ; kaboom2: once everything is loaded, replace the part of kaboom
 ;         starting with "kaboom.patch" with this part
index bc6878b..5a50ff5 100644 (file)
@@ -1168,6 +1168,10 @@ init_fs:
                mov di,[bsSecPerTrack]
                pm_call fs_init
                pm_call load_env32
+enter_command:
+auto_boot:
+               jmp kaboom              ; load_env32() should never return. If
+                                       ; it does, then kaboom!
                popad
 
                section .rodata
@@ -1195,11 +1199,56 @@ debug_tracer:   pushad
                ret
 %endif ; DEBUG_TRACERS
 
+               section .bss16
+               global CmdOptPtr, KbdMap
+               alignb 4
+ThisKbdTo      resd 1                  ; Temporary holder for KbdTimeout
+ThisTotalTo    resd 1                  ; Temporary holder for TotalTimeout
+KernelExtPtr   resw 1                  ; During search, final null pointer
+CmdOptPtr      resw 1                  ; Pointer to first option on cmd line
+KbdFlags       resb 1                  ; Check for keyboard escapes
+FuncFlag       resb 1                  ; Escape sequences received from keyboard
+KernelType     resb 1                  ; Kernel type, from vkernel, if known
+KbdMap         resb 256                ; Keyboard map
+               global KernelName
+KernelName     resb FILENAME_MAX       ; Mangled name for kernel
+               section .config
+               global PXERetry
+PXERetry       dw 0                    ; Extra PXE retries
+               section .data16
+               global SerialNotice
+SerialNotice   db 1                    ; Only print this once
+%if IS_PXELINUX
+               extern IPOption
+               global IPAppends, numIPAppends
+               alignz 2
+IPAppends      dw IPOption
+numIPAppends   equ ($-IPAppends)/2
+%else
+IPAppends      equ 0
+numIPAppends   equ 0
+%endif
+
+               section .text16
+;
+; COMBOOT-loading code
+;
+%include "comboot.inc"
+%include "com32.inc"
+
+;
+; Boot sector loading code
+;
+
 ;
-; Now we have the config file open.  Parse the config file and
-; run the user interface.
+; Abort loading code
 ;
-%include "ui.inc"
+
+;
+; Hardware cleanup common code
+;
+
+%include "localboot.inc"
 
 ; -----------------------------------------------------------------------------
 ;  Common modules
index 38e1319..8dc4041 100644 (file)
@@ -318,16 +318,25 @@ IPAppends dw IPOption
 numIPAppends   equ ($-IPAppends)/2
 
                section .text16
-
+;
 ; COMBOOT-loading code
+;
 %include "comboot.inc"
 %include "com32.inc"
 
+;
+; Boot sector loading code
+;
+
+;
+; Abort loading code
+;
+
+;
 ; Hardware cleanup common code
-%include "localboot.inc"
+;
 
-               section .text16
-               align 4
+%include "localboot.inc"
 
 ;
 ; kaboom: write a message and bail out.  Wait for quite a while,
diff --git a/core/ui.inc b/core/ui.inc
deleted file mode 100644 (file)
index e7d090a..0000000
+++ /dev/null
@@ -1,762 +0,0 @@
-;; -----------------------------------------------------------------------
-;;
-;;   Copyright 1994-2009 H. Peter Anvin - All Rights Reserved
-;;   Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
-;;
-;;   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, Inc., 53 Temple Place Ste 330,
-;;   Boston MA 02111-1307, USA; either version 2 of the License, or
-;;   (at your option) any later version; incorporated herein by reference.
-;;
-;; -----------------------------------------------------------------------
-
-;
-; This file should be entered with the config file open (for getc)
-;
-%if 1
-on_error:
-no_config_file:
-enter_command:
-auto_boot:
-load_kernel:
-kernel_good_saved:
-kernel_corrupt:
-               pm_call hello
-%else          ; comment off the original ui.inc
-load_config_file:
-               call parse_config               ; Parse configuration file
-no_config_file:
-
-               call adv_init
-;
-; Check for an ADV boot-once entry
-;
-               mov dl,ADV_BOOTONCE
-               call adv_get
-               jcxz .no_bootonce
-
-.have_bootone:
-               ; We apparently have a boot-once set; clear it and
-               ; then execute the boot-once...
-
-               ; Save the boot-once data; SI = data, CX = length
-               mov di,command_line
-               rep movsb
-               xor ax,ax
-               stosb
-
-               ; Clear the boot-once data from the ADV
-               xor cx,cx                       ; Set to zero = delete
-               call adv_set
-               jc .err
-               call adv_write
-.err:          jmp load_kernel
-
-.no_bootonce:
-
-;
-; Check whether or not we are supposed to display the boot prompt.
-;
-check_for_key:
-               test byte [KbdFlags],5Bh        ; Shift Alt Caps Scroll
-               jnz enter_command
-               cmp word [ForcePrompt],0        ; Force prompt?
-               jz auto_boot
-               cmp word [DefaultLevel],1       ; Active UI statement?
-               ja auto_boot
-
-enter_command:
-               cmp word [NoEscape],0           ; If NOESCAPE, no prompt,
-               jne auto_boot                   ; always run default cmd
-
-               mov si,boot_prompt
-               call writestr
-
-               mov byte [FuncFlag],0           ; <Ctrl-F> not pressed
-               mov di,command_line
-
-;
-; get the very first character -- we can either time
-; out, or receive a character press at this time.  Some dorky BIOSes stuff
-; a return in the buffer on bootup, so wipe the keyboard buffer first.
-;
-clear_buffer:  mov ah,11h                      ; Check for pending char
-               int 16h
-               jz get_char_time
-               mov ah,10h                      ; Get char
-               int 16h
-               jmp short clear_buffer
-
-               ; For the first character, both KbdTimeout and
-               ; TotalTimeout apply; after that, only TotalTimeout.
-
-get_char_time:
-               mov eax,[TotalTimeout]
-               mov [ThisTotalTo],eax
-               mov eax,[KbdTimeout]
-               mov [ThisKbdTo],eax
-
-get_char:
-               call getchar_timeout
-               and dword [ThisKbdTo],0         ; For the next time...
-
-               and al,al
-               jz func_key
-
-got_ascii:     cmp al,7Fh                      ; <DEL> == <BS>
-               je backspace
-               cmp al,' '                      ; ASCII?
-               jb not_ascii
-               ja enter_char
-               cmp di,command_line             ; Space must not be first
-               je short get_char
-enter_char:    test byte [FuncFlag],1
-               jnz ctrl_f                      ; Keystroke after <Ctrl-F>
-               cmp di,max_cmd_len+command_line ; Check there's space
-               jnb short get_char
-               stosb                           ; Save it
-               call writechr                   ; Echo to screen
-               jmp short get_char
-not_ascii:
-               cmp al,0Dh                      ; Enter
-               je command_done
-               cmp al,09h                      ; Tab
-               je display_labels
-               cmp al,'F' & 1Fh                ; <Ctrl-F>
-               je set_func_flag
-%if IS_PXELINUX
-               cmp al,'N' & 1Fh                ; <Ctrl-N>
-               je show_network_info
-%endif
-               cmp al,'U' & 1Fh                ; <Ctrl-U>
-               je kill_command                 ; Kill input line
-               cmp al,'V' & 1Fh                ; <Ctrl-V>
-               je print_version
-               cmp al,'X' & 1Fh                ; <Ctrl-X>
-               je force_text_mode
-               cmp al,08h                      ; Backspace
-               jne get_char
-backspace:     cmp di,command_line             ; Make sure there is anything
-               je get_char                     ; to erase
-               dec di                          ; Unstore one character
-               mov si,wipe_char                ; and erase it from the screen
-               call writestr
-get_char_2:
-               jmp short get_char
-
-kill_command:
-               call crlf
-               jmp enter_command
-
-force_text_mode:
-               call vgaclearmode
-               jmp enter_command
-
-set_func_flag:
-               mov byte [FuncFlag],1
-               jmp short get_char_2
-
-display_labels:
-               cmp word [NoComplete],0         ; Label completion enabled?
-               jne get_char_2
-               push di                         ; Save pointer
-               mov cx,di
-               sub cx,command_line
-               call crlf
-               mov esi,[HighMemSize]           ; Start from top of memory
-.scan:
-               cmp esi,[VKernelEnd]
-               jbe .not_vk
-
-               push cx                         ; save command line size
-
-               mov edi,VKernelBuf
-               pm_call rllunpack
-               ; ESI updated on return
-
-               sub di,cx                       ; Return to beginning of buf
-               pop cx                          ; restore command line size
-               push si                         ; save SI
-               cmp cx,0
-               jz .print
-               push di
-               push cx
-               mov si,command_line
-               es repe cmpsb
-               pop cx
-               pop di
-               jne .next
-.print:
-               mov al,' '
-               call writechr
-
-               mov si,di
-               call writestr
-.next:
-               pop si                          ; restore SI
-               jmp .scan
-.not_vk:
-               call crlf
-               jmp fk_wrcmd
-
-ctrl_f:
-               xor ah,ah
-               mov [FuncFlag],ah
-               cmp al,'0'
-               jb get_char_2
-               je .zero                        ; <Ctrl-F>0 = F10
-               or al,20h                       ; Lower case
-               cmp al,'9'
-               jna .digit
-               cmp al,'a'                      ; F10-F12 = <Ctrl-F>A, B, C
-               jb get_char_2
-               cmp al,'c'
-               ja get_char_2
-               sub al,'a'-10
-               jmp show_help
-.zero:
-               mov al,10
-               jmp show_help
-.digit:
-               sub al,'1'
-               jmp show_help
-
-func_key:
-               ; AL = 0 if we get here
-               xchg al,ah
-               cmp al,44h                      ; F10
-               ja .f11_f12
-               sub al,3Bh                      ; F1
-               jb get_char_2
-               jmp show_help
-.f11_f12:
-               cmp al,85h                      ; F11
-               jb get_char_2
-               cmp al,86h                      ; F12
-               ja get_char_2
-               sub al,85h-10
-
-show_help:     ; AX = func key # (0 = F1, 9 = F10, 11 = F12)
-               push di                         ; Save end-of-cmdline pointer
-               shl ax,FILENAME_MAX_LG2         ; Convert to pointer
-               add ax,FKeyName
-               xchg di,ax
-               cmp byte [di+NULLOFFSET],NULLFILE
-               je short fk_nofile              ; Undefined F-key
-               call core_open
-               jz short fk_nofile              ; File not found
-               call crlf
-               call get_msg_file
-               jmp short fk_wrcmd
-
-print_version:
-               push di                         ; Command line write pointer
-               mov si,syslinux_banner
-               call writestr
-%ifdef HAVE_BIOSNAME
-               mov si,[BIOSName]
-               call writestr
-%endif
-               mov si,copyright_str
-               call writestr
-
-               ; ... fall through ...
-
-               ; Write the boot prompt and command line again and
-               ; wait for input.  Note that this expects the cursor
-               ; to already have been CRLF'd, and that the old value
-               ; of DI (the command line write pointer) is on the stack.
-fk_wrcmd:
-               mov si,boot_prompt
-               call writestr
-               pop di                          ; Command line write pointer
-               push di
-               mov byte [di],0                 ; Null-terminate command line
-               mov si,command_line
-               call writestr                   ; Write command line so far
-fk_nofile:     pop di
-               jmp get_char
-
-;
-; Show network info (in the form of the ipappend strings)
-;
-%if IS_PXELINUX
-show_network_info:
-               push di                         ; Command line write pointer
-               call crlf
-               mov si,IPAppends                ; See comboot.doc
-               mov cx,numIPAppends
-.loop:
-               lodsw
-               push si
-               mov si,ax
-               call writestr
-               call crlf
-               pop si
-               loop .loop
-               jmp fk_wrcmd
-%endif
-
-;
-; Jump here to run the default command line
-;
-auto_boot:
-               cmp word [DefaultLevel],0       ; No UI or DEFAULT?
-               jne .have_default
-               mov si,no_default_msg
-               call writestr
-               cmp word [NoEscape],0           ; NOESCAPE but no DEFAULT?
-               jne kaboom                      ; If so, we're stuck!
-               jmp enter_command
-
-.have_default:
-               mov si,default_cmd
-               mov di,command_line
-               mov cx,(max_cmd_len+4) >> 2
-               rep movsd
-               jmp short load_kernel
-
-               section .data16
-no_default_msg db 'No DEFAULT or UI configuration directive found!'
-               db CR, LF, 0
-
-               section .text16
-
-;
-; Jump here when the command line is completed
-;
-command_done:
-               call crlf
-               cmp di,command_line             ; Did we just hit return?
-               je auto_boot
-               xor al,al                       ; Store a final null
-               stosb
-
-load_kernel:                                   ; Load the kernel now
-;
-; First we need to mangle the kernel name the way DOS would...
-;
-               mov si,command_line
-                mov di,KernelName
-                push si
-               pm_call pm_mangle_name
-                pop si
-;
-; Fast-forward to first option (we start over from the beginning, since
-; pm_mangle_name doesn't necessarily return a consistent ending state.)
-;
-clin_non_wsp:   lodsb
-                cmp al,' '
-                ja clin_non_wsp
-clin_is_wsp:    and al,al
-                jz clin_opt_ptr
-                lodsb
-                cmp al,' '
-                jbe clin_is_wsp
-clin_opt_ptr:   dec si                          ; Point to first nonblank
-                mov [CmdOptPtr],si             ; Save ptr to first option
-;
-; If "allowoptions 0", put a null character here in order to ignore any
-; user-specified options.
-;
-               mov ax,[AllowOptions]
-               and ax,ax
-               jnz clin_opt_ok
-               mov [si],al
-clin_opt_ok:
-
-;
-; Now check if it is a "virtual kernel"
-;
-vk_check:
-               mov esi,[HighMemSize]           ; Start from top of memory
-.scan:
-               cmp esi,[VKernelEnd]
-               jbe .not_vk
-
-               mov edi,VKernelBuf
-               pm_call rllunpack
-               ; ESI updated on return
-
-               sub di,cx                       ; Return to beginning of buf
-               push si
-               mov si,command_line
-.loop:
-               lodsb
-               cmp al,' '
-               jbe .done
-               scasb
-               je .loop
-.nomatch:
-               pop si
-               jmp .scan
-.done:
-               cmp byte [di],0                 ; Must match end of string
-               jne .nomatch
-               pop si
-
-;
-; We *are* using a "virtual kernel"
-;
-.found:
-               push es
-               push word real_mode_seg
-               pop es
-               mov di,cmd_line_here
-               mov si,VKernelBuf+vk_append
-               mov cx,[VKernelBuf+vk_appendlen]
-               rep movsb
-               mov byte [es:di],cl             ; Null-terminate
-               mov [CmdLinePtr],di             ; Where to add rest of cmd
-               pop es
-               mov di,KernelName
-               push di
-               mov si,VKernelBuf+vk_rname
-               mov cx,FILENAME_MAX             ; We need ECX == CX later
-               rep movsb
-               pop di
-%if IS_PXELINUX
-               mov al,[VKernelBuf+vk_ipappend]
-               mov [IPAppend],al
-%endif
-               xor bx,bx                       ; Try only one version
-
-               mov al,[VKernelBuf+vk_type]
-               mov [KernelType],al
-
-               ; Is this a "localboot" pseudo-kernel?
-               cmp al,VK_LOCALBOOT             ; al == KernelType
-               mov ax,[VKernelBuf+vk_rname]    ; Possible localboot type
-               je local_boot
-               jmp get_kernel
-
-.not_vk:
-;
-; Not a "virtual kernel" - check that's OK and construct the command line
-;
-                cmp word [AllowImplicit],byte 0
-                je bad_implicit
-                push es
-                push si
-                push di
-                mov di,real_mode_seg
-                mov es,di
-                mov si,AppendBuf
-                mov di,cmd_line_here
-                mov cx,[AppendLen]
-                rep movsb
-               mov byte [es:di],cl             ; Null-terminate
-                mov [CmdLinePtr],di
-                pop di
-                pop si
-                pop es
-
-               mov [KernelType], cl            ; CL == 0 here
-
-;
-; Find the kernel on disk
-;
-get_kernel:     mov byte [KernelName+FILENAME_MAX],0   ; Zero-terminate filename/extension
-               mov di,KernelName
-               cmp byte [di],' '
-               jbe bad_kernel                  ; Missing kernel name
-               xor al,al
-               mov cx,FILENAME_MAX-5           ; Need 4 chars + null
-               repne scasb                     ; Scan for final null
-               jne .no_skip
-               dec di                          ; Point to final null
-.no_skip:      mov [KernelExtPtr],di
-               mov bx,exten_table
-.search_loop:  push bx
-                mov di,KernelName              ; Search on disk
-                pm_call pm_searchdir
-               pop bx
-                jnz kernel_good
-               mov eax,[bx]                    ; Try a different extension
-               mov si,[KernelExtPtr]
-               mov [si],eax
-               mov byte [si+4],0
-               add bx,byte 4
-               cmp bx,exten_table_end
-               jna .search_loop                ; allow == case (final case)
-               ; Fall into bad_kernel
-;
-; bad_kernel: Kernel image not found
-; bad_implicit: The user entered a nonvirtual kernel name, with "implicit 0"
-;
-bad_implicit:
-bad_kernel:
-               mov cx,[OnerrorLen]
-               and cx,cx
-               jnz on_error
-.really:
-               mov si,err_notfound             ; Complain about missing kernel
-               call writestr
-               mov si,KernelName
-                call writestr
-                mov si,crlf_msg
-                jmp abort_load                  ; Ask user for clue
-
-;
-; on_error: bad kernel, but we have onerror set; CX = OnerrorLen
-;
-on_error:
-               mov si,Onerror
-               mov di,command_line
-               push si                         ; <A>
-               push di                         ; <B>
-               push cx                         ; <C>
-               push cx                         ; <D>
-               push di                         ; <E>
-               repe cmpsb
-               pop di                          ; <E> di == command_line
-               pop bx                          ; <D> bx == [OnerrorLen]
-               je bad_kernel.really            ; Onerror matches command_line already
-               neg bx                          ; bx == -[OnerrorLen]
-               lea cx,[max_cmd_len+bx]
-               ; CX == max_cmd_len-[OnerrorLen]
-               mov di,command_line+max_cmd_len-1
-               mov byte [di+1],0               ; Enforce null-termination
-               lea si,[di+bx]
-               std
-               rep movsb                       ; Make space in command_line
-               cld
-               pop cx                          ; <C> cx == [OnerrorLen]
-               pop di                          ; <B> di == command_line
-               pop si                          ; <A> si  == Onerror
-               rep movsb
-               jmp load_kernel
-
-;
-; kernel_corrupt: Called if the kernel file does not seem healthy
-;
-kernel_corrupt: mov si,err_notkernel
-                jmp abort_load
-
-;
-; Get a key, observing ThisKbdTO and ThisTotalTO -- those are timeouts
-; which can be adjusted by the caller based on the corresponding
-; master variables; on return they're updated.
-;
-; This cheats.  If we say "no timeout" we actually get a timeout of
-; 7.5 years.
-;
-getchar_timeout:
-               call vgashowcursor
-               call reset_idle
-
-.loop:
-               push word [__jiffies]
-               call pollchar
-               jnz .got_char
-               call do_idle
-               pop ax
-               cmp ax,[__jiffies]              ; Has the timer advanced?
-               je .loop
-
-               dec dword [ThisKbdTo]
-               jz .timeout
-               dec dword [ThisTotalTo]
-               jnz .loop
-
-.timeout:
-               ; Timeout!!!!
-               pop cx                          ; Discard return address
-               call vgahidecursor
-               mov si,Ontimeout                ; Copy ontimeout command
-               mov di,command_line
-               mov cx,[OntimeoutLen]           ; if we have one...
-               rep movsb
-               jmp command_done
-
-.got_char:
-               pop cx                          ; Discard
-               call getchar
-               call vgahidecursor
-               ret
-
-;
-; This is it!  We have a name (and location on the disk)... let's load
-; that sucker!!  First we have to decide what kind of file this is; base
-; that decision on the file extension.  The following extensions are
-; recognized; case insensitive:
-;
-; .com - COMBOOT image
-; .cbt - COMBOOT image
-; .c32  - COM32 image
-; .bs  - Boot sector
-; .0   - PXE bootstrap program (PXELINUX only)
-; .bin  - Boot sector
-; .bss - Boot sector, but transfer over DOS superblock (SYSLINUX only)
-; .img  - Floppy image (ISOLINUX only)
-;
-; Anything else is assumed to be a Linux kernel.
-;
-
-               section .text16
-kernel_good_saved:
-               ; Alternate entry point for which the return from
-               ; searchdir is stored in memory.  This is used for
-               ; COMBOOT function INT 22h, AX=0016h.
-               mov si,[Kernel_SI]
-               mov eax,[Kernel_EAX]
-
-kernel_good:
-               pushad
-               ;
-               ; Common initialization for all kernel types
-               ;
-               xor ax,ax
-               mov [InitRDPtr],ax
-               mov [QuietBoot],al
-%if IS_PXELINUX
-               mov [KeepPXE],al
-%endif
-
-               ; Default memory limit, can be overridden by image loaders
-               mov eax,[HighMemRsvd]
-               mov [MyHighMemSize],eax
-
-               popad
-
-               push di
-               push ax
-               mov di,KernelName
-               xor al,al
-               mov cx,FILENAME_MAX
-               repne scasb
-               jne .one_step
-               dec di
-.one_step:     mov ecx,[di-4]                  ; 4 bytes before end
-               pop ax
-               pop di
-
-;
-; At this point, EAX contains the size of the kernel, SI contains
-; the file handle/cluster pointer, and ECX contains the extension (if any.)
-;
-               movzx di,byte [KernelType]
-               add di,di
-               jmp [kerneltype_table+di]
-
-is_unknown_filetype:
-               or ecx,20202000h                ; Force lower case (except dot)
-
-               cmp ecx,'.com'
-               je is_comboot_image
-               cmp ecx,'.cbt'
-               je is_comboot_image
-               cmp ecx,'.c32'
-               je is_com32_image
-%if IS_ISOLINUX
-               cmp ecx,'.img'
-               je is_disk_image
-%endif
-               cmp ecx,'.bss'
-               je is_bss_sector
-               cmp ecx,'.bin'
-               je is_bootsector
-               shr ecx,8
-               cmp ecx,'.bs'
-               je is_bootsector
-               shr ecx,8
-               cmp cx,'.0'
-               je is_bootsector
-
-               ; Otherwise Linux kernel
-               jmp is_linux_kernel
-
-; This is an image type we can't deal with
-is_bad_image:
-               mov si,err_badimage
-               call writestr
-               jmp enter_command
-
-%if IS_SYSLINUX
-               ; ok
-%else
-is_bss_sector  equ is_bad_image
-%endif
-
-is_disk_image  equ is_bad_image        ; No longer supported
-
-%endif         ; start of replacing ui.inc
-
-               section .bss16
-               alignb 4
-Kernel_EAX     resd 1
-Kernel_SI      resw 1
-
-
-               section .data16
-boot_prompt    db 'boot: ', 0
-wipe_char      db BS, ' ', BS, 0
-err_badimage   db 'Invalid image type for this media type!', CR, LF, 0
-err_notfound   db 'Could not find kernel image: ',0
-err_notkernel  db CR, LF, 'Invalid or corrupt kernel image.', CR, LF, 0
-
-
-%if 0
-               alignz 2
-kerneltype_table:
-               dw is_unknown_filetype  ; VK_KERNEL
-               dw is_linux_kernel      ; VK_LINUX
-               dw is_bootsector        ; VK_BOOT
-               dw is_bss_sector        ; VK_BSS
-               dw is_bootsector        ; VK_PXE
-               dw is_disk_image        ; VK_FDIMAGE
-               dw is_comboot_image     ; VK_COMBOOT
-               dw is_com32_image       ; VK_COM32
-%endif
-
-               section .bss16
-               global CmdOptPtr, KbdMap
-               alignb 4
-ThisKbdTo      resd 1                  ; Temporary holder for KbdTimeout
-ThisTotalTo    resd 1                  ; Temporary holder for TotalTimeout
-KernelExtPtr   resw 1                  ; During search, final null pointer
-CmdOptPtr       resw 1                 ; Pointer to first option on cmd line
-KbdFlags       resb 1                  ; Check for keyboard escapes
-FuncFlag       resb 1                  ; Escape sequences received from keyboard
-KernelType     resb 1                  ; Kernel type, from vkernel, if known
-KbdMap         resb 256                ; Keyboard map
-               global KernelName
-KernelName     resb FILENAME_MAX       ; Mangled name for kernel
-               section .config
-               global PXERetry
-PXERetry       dw 0                    ; Extra PXE retries
-               section .data16
-               global SerialNotice
-SerialNotice   db 1                    ; Only print this once
-%if IS_PXELINUX
-               extern IPOption
-               global IPAppends, numIPAppends
-               alignz 2
-IPAppends      dw IPOption
-numIPAppends   equ ($-IPAppends)/2
-%else
-IPAppends      equ 0
-numIPAppends   equ 0
-%endif
-
-               section .text16
-;
-; COMBOOT-loading code
-;
-%include "comboot.inc"
-%include "com32.inc"
-
-;
-; Boot sector loading code
-;
-
-;
-; Abort loading code
-;
-
-;
-; Hardware cleanup common code
-;
-
-%include "localboot.inc"