| 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: $" |