apply to that specific program only; other changes apply to all of
them.
+Changes in 2.11:
+ * ALL: Add an API call to get the configuration file name.
+
Changes in 2.10:
* MEMDISK: Handle images compressed with zip as well as with
gzip. Some Windows-based image tools apparently generate
Input: AX 0003h
ES:BX null-terminated command string
- Output: None
+ Output: Does not return
This API call terminates the program and executes the command
string as if the user had entered it at the SYSLINUX command
AX=0004h Run default command
Input: AX 0004h
- Output: None
+ Output: Does not return
This API call terminates the program and executes the default
command string as if the user had pressed Enter alone on the
AX=000Ch Perform final cleanup
Input: AX 000Ch
DX derivative-specific flags (0000h = clean up all)
- Output: None
+ Output: Does not return
This routine performs any "final cleanup" the boot loader
would normally perform before loading a kernel, such as
EBX(!) initial value of EDX after bootstrap
ESI initial value of ESI after bootstrap
DS initial value of DS after bootstrap
- Output: None
+ Output: Does not return
This routine performs final cleanup, then takes a piece of
code, copies it over the primary bootstrap at address 7C00h,
For PXELINUX, if the PXE stack is not unloaded, all registers
(except DS, ESI and EDX) and the stack will be set up as they
were set up by the PXE ROM.
+
+
+AX=000Eh Get configuration file name
+ Input: AX 0000Eh
+ Output: ES:BX null-terminated file name string
+
+ Returns the name of the configuration file. Note that it is
+ possible that the configuration file doesn't actually exist.
+
push P_ECX
jmp replace_bootstrap
+
+;
+; INT 22h AX=000Eh Get configuration file name
+;
+comapi_configfile:
+ mov P_ES,cs
+ mov P_BX,ConfigName
+ clc
+ ret
+
;
; This stuff should really be in the data section...
;
dw comapi_serialcfg ; 000B get serial port config
dw comapi_cleanup ; 000C perform final cleanup
dw comapi_chainboot ; 000D clean up then bootstrap
+ dw comapi_configfile ; 000E get name of config file
int22_count equ ($-int22_table)/2
APIKeyWait db 0
default_len equ ($-default_str)
boot_dir db '/boot' ; /boot/isolinux
isolinux_dir db '/isolinux', 0
+ConfigName equ $
isolinux_cfg db 'isolinux.cfg', 0
err_disk_image db 'Cannot load disk image (invalid file)?', CR, LF, 0
; Load configuration file
;
find_config:
- mov di,trackbuf
- mov si,cfgprefix
- mov cx,cfgprefix_len
- rep movsb
+
;
; Begin looking for configuration file
;
jz .no_option
; We got a DHCP option, try it first
- push di
mov si,trying_msg
call writestr
mov di,ConfigName
call writestr
call crlf
call open
- pop di
jnz .success
-.no_option: ; Have to guess config file name
+.no_option:
+ mov di,ConfigName
+ mov si,cfgprefix
+ mov cx,cfgprefix_len
+ rep movsb
+
; Try loading by MAC address
+ ; Have to guess config file name
push di
mov si,MACStr
mov cx,(3*17+1)/2
rep movsw
mov si,trying_msg
call writestr
- mov di,trackbuf
+ mov di,ConfigName
mov si,di
call writestr
call crlf
.not_default: pusha
mov si,trying_msg
call writestr
- mov di,trackbuf
+ mov di,ConfigName
mov si,di
call writestr
call crlf