extern env_stack
extern crt_write
extern x_list_extension
global _start
_start:
call
env_stack
;save ptr to environment
call
x_list_extension;get x server
extensions
call
show_extensions ;display extensions
mov
eax,01
;exit function
int
byte 80h
;exit program
;------------------------------------------------
;subroutine to display list of x server extensions
;inputs: ecx = ptr to reply from x server
;
show_extensions:
lea
esi,[ecx+32]
;get ptr to extension
xor
eax,eax
mov
al,[ecx+1]
;get number of extensions
mov
ebp,eax
;save count
show_loop:
call
line_feed
lea
ecx,[esi+1]
;get ptr to extension name
xor
edx,edx
mov
dl,[esi]
;get length of name
add
esi,edx
;move to next name
inc
esi
;move
to next name
call
crt_write
;display extension
dec
ebp
;dec
extension count
jnz
show_loop
;loop if more names
call
line_feed
;add final line feed
ret
;-----------------------------------------------
;subroutine to display line-feed
;inputs: registers esi,ebp must be
; preserved
line_feed:
mov
ecx,linefeed
mov
edx,1
call
crt_write
ret
;-----------
[section .data]
linefeed: db 0ah
[section .text]