137 lines
1.7 KiB
NASM
137 lines
1.7 KiB
NASM
bits 16
|
|
org 100h
|
|
|
|
_start:
|
|
; first check for SYSLINUX
|
|
mov ah, 30h
|
|
int 21h
|
|
|
|
cmp eax, 59530000h
|
|
jne .not_syslinux
|
|
cmp ebx, 4c530000h
|
|
jne .not_syslinux
|
|
cmp ecx, 4e490000h
|
|
jne .not_syslinux
|
|
cmp edx, 58550000h
|
|
jne .not_syslinux
|
|
|
|
; now get syslinux version
|
|
mov ax, 0001h
|
|
int 22h
|
|
|
|
push cx
|
|
push dx
|
|
push di
|
|
push si
|
|
push es
|
|
|
|
; print version string
|
|
mov dx, str_version
|
|
mov ah, 09h
|
|
int 21h
|
|
|
|
pop es
|
|
pop bx
|
|
push es
|
|
mov ax, 0002h
|
|
int 22h
|
|
|
|
; print copyright string
|
|
mov dx, str_copyright
|
|
mov ah, 09h
|
|
int 21h
|
|
|
|
pop es
|
|
pop bx
|
|
mov ax, 0002h
|
|
int 22h
|
|
|
|
; print syslinux derivative id
|
|
mov dx, str_derivative
|
|
mov ah, 09h
|
|
int 21h
|
|
|
|
pop ax
|
|
call print_hex_byte
|
|
|
|
; print version number
|
|
mov dx, str_version_num
|
|
mov ah, 09h
|
|
int 21h
|
|
|
|
pop cx
|
|
push cx
|
|
mov ax, cx
|
|
and ax, 0FFh
|
|
call print_dec_word
|
|
|
|
mov dl, '.'
|
|
mov ah, 02h
|
|
int 21h
|
|
|
|
pop cx
|
|
mov ax, cx
|
|
shr ax, 8
|
|
call print_dec_word
|
|
|
|
ret
|
|
|
|
|
|
.not_syslinux:
|
|
mov dx, str_not_syslinux
|
|
mov ah, 09h
|
|
int 21h
|
|
ret
|
|
|
|
; input: al = byte to print in hex
|
|
print_hex_byte:
|
|
push ax
|
|
shr al, 4
|
|
call print_hex_nybble
|
|
pop ax
|
|
call print_hex_nybble
|
|
ret
|
|
|
|
; input: bottom half of al = nybble to print in hex
|
|
print_hex_nybble:
|
|
push ax
|
|
mov bl, al
|
|
and bx, 1111b
|
|
mov dl, [str_hex + bx]
|
|
mov ah, 02h
|
|
int 21h
|
|
pop ax
|
|
ret
|
|
|
|
str_hex: db "01234567890abcdef"
|
|
|
|
; input: ax = word to print
|
|
print_dec_word:
|
|
mov cx, 10
|
|
mov word [.count], 0
|
|
.loop:
|
|
xor dx, dx
|
|
div cx
|
|
inc word [.count]
|
|
push dx
|
|
test ax, ax
|
|
jnz .loop
|
|
|
|
.print:
|
|
pop dx
|
|
add dx, '0'
|
|
mov ah, 02h
|
|
int 21h
|
|
dec word [.count]
|
|
jnz .print
|
|
|
|
ret
|
|
|
|
.count: dw 0
|
|
|
|
str_not_syslinux: db "Not SYSLINUX or derivative (running on DOS?)$"
|
|
str_version: db "Version: $"
|
|
str_copyright: db 10, "Copyright: $"
|
|
str_derivative: db 10, "Derivative ID: 0x$"
|
|
str_version_num: db 10, "Version number: $"
|