summaryrefslogtreecommitdiff
path: root/comboot.inc
diff options
context:
space:
mode:
authorhpa <hpa>2002-06-17 02:57:27 +0000
committerhpa <hpa>2002-06-17 02:57:27 +0000
commit2600c93ff5c16b523e1a9d3a4506b3e9623d102d (patch)
tree40b508fcdca1d6cf75fda0ebdc09899aa95c4f78 /comboot.inc
parent59c1249ed12543c49b4d68c00fbd2a81842912be (diff)
downloadsyslinux-2600c93ff5c16b523e1a9d3a4506b3e9623d102d.tar.gz
Document changes due to the use of a stack frame; add new "get derivative
specific information" API call.
Diffstat (limited to 'comboot.inc')
-rw-r--r--comboot.inc31
1 files changed, 31 insertions, 0 deletions
diff --git a/comboot.inc b/comboot.inc
index eda1f902..80b15b83 100644
--- a/comboot.inc
+++ b/comboot.inc
@@ -22,6 +22,8 @@
%define P_FLAGS word [bp+40]
%define P_FLAGSL byte [bp+40]
%define P_FLAGSH byte [bp+41]
+%define P_CS word [bp+38]
+%define P_IP word [bp+36]
%define P_DS word [bp+34]
%define P_ES word [bp+32]
%define P_EAX dword [bp+28]
@@ -146,6 +148,7 @@ comboot_int21: cli
push ds
push es
pushad
+ cld
mov bp,cs
mov ds,bp
mov es,bp
@@ -275,6 +278,7 @@ comboot_int22:
push ds
push es
pushad
+ cld
mov bp,cs
mov ds,bp
mov es,bp
@@ -432,6 +436,32 @@ comapi_pxecall equ comapi_err ; Not available
%endif
;
+; INT 22h AX=000Ah Get Derivative-Specific Info
+;
+comapi_derinfo:
+ mov P_AL,my_id
+%if IS_SYSLINUX
+ mov al,[bsDriveNumber]
+ mov P_DL,al
+ mov P_ES,cs
+ mov P_BX,PartInfo
+%elif IS_PXELINUX
+ mov ax,[APIVer]
+ mov P_DX,ax
+ mov ax,[StrucPtr]
+ mov P_BX,ax
+ mov ax,[StrucPtr+2]
+ mov P_ES,ax
+%elif IS_ISOLINUX
+ mov al,[DriveNo]
+ mov P_DL,al
+ mov P_ES,cs
+ mov P_BX,spec_packet
+%endif
+ clc
+ ret
+
+;
; This stuff should really be in the data section...
;
%macro int21 2
@@ -464,6 +494,7 @@ int22_table:
dw comapi_read ; 0007 read file
dw comapi_close ; 0008 close file
dw comapi_pxecall ; 0009 call PXE stack
+ dw comapi_derinfo ; 000A derivative-specific info
int22_count equ ($-int22_table)/2
APIKeyWait db 0