Annotation of qemu/roms/ipxe/src/tests/comboot/version.asm, revision 1.1.1.1

1.1       root        1:        bits 16
                      2:        org 100h
                      3: 
                      4: _start:
                      5:        ; first check for SYSLINUX
                      6:        mov ah, 30h
                      7:        int 21h
                      8: 
                      9:        cmp eax, 59530000h
                     10:        jne .not_syslinux
                     11:        cmp ebx, 4c530000h
                     12:        jne .not_syslinux
                     13:        cmp ecx, 4e490000h
                     14:        jne .not_syslinux
                     15:        cmp edx, 58550000h
                     16:        jne .not_syslinux
                     17: 
                     18:        ; now get syslinux version
                     19:        mov ax, 0001h
                     20:        int 22h
                     21: 
                     22:        push cx
                     23:        push dx
                     24:        push di
                     25:        push si
                     26:        push es
                     27: 
                     28:        ; print version string
                     29:        mov dx, str_version
                     30:        mov ah, 09h
                     31:        int 21h
                     32: 
                     33:        pop es
                     34:        pop bx
                     35:        push es
                     36:        mov ax, 0002h
                     37:        int 22h
                     38: 
                     39:        ; print copyright string
                     40:        mov dx, str_copyright
                     41:        mov ah, 09h
                     42:        int 21h
                     43: 
                     44:        pop es
                     45:        pop bx
                     46:        mov ax, 0002h
                     47:        int 22h
                     48: 
                     49:        ; print syslinux derivative id
                     50:        mov dx, str_derivative
                     51:        mov ah, 09h
                     52:        int 21h
                     53: 
                     54:        pop ax
                     55:        call print_hex_byte
                     56: 
                     57:        ; print version number
                     58:        mov dx, str_version_num
                     59:        mov ah, 09h
                     60:        int 21h
                     61: 
                     62:        pop cx
                     63:        push cx
                     64:        mov ax, cx
                     65:        and ax, 0FFh
                     66:        call print_dec_word
                     67: 
                     68:        mov dl, '.'
                     69:        mov ah, 02h
                     70:        int 21h
                     71: 
                     72:        pop cx
                     73:        mov ax, cx
                     74:        shr ax, 8
                     75:        call print_dec_word
                     76: 
                     77:        ret
                     78: 
                     79: 
                     80: .not_syslinux:
                     81:        mov dx, str_not_syslinux
                     82:        mov ah, 09h
                     83:        int 21h
                     84:        ret
                     85: 
                     86: ; input: al = byte to print in hex
                     87: print_hex_byte:
                     88:        push ax
                     89:        shr al, 4
                     90:        call print_hex_nybble
                     91:        pop ax
                     92:        call print_hex_nybble
                     93:        ret
                     94: 
                     95: ; input: bottom half of al = nybble to print in hex
                     96: print_hex_nybble:
                     97:        push ax
                     98:        mov bl, al
                     99:        and bx, 1111b
                    100:        mov dl, [str_hex + bx]
                    101:        mov ah, 02h
                    102:        int 21h
                    103:        pop ax
                    104:        ret
                    105: 
                    106: str_hex: db "01234567890abcdef"
                    107: 
                    108: ; input: ax = word to print
                    109: print_dec_word:
                    110:        mov cx, 10
                    111:        mov word [.count], 0
                    112: .loop:
                    113:        xor dx, dx
                    114:        div cx
                    115:        inc word [.count]
                    116:        push dx
                    117:        test ax, ax
                    118:        jnz .loop
                    119: 
                    120: .print:
                    121:        pop dx
                    122:        add dx, '0'
                    123:        mov ah, 02h
                    124:        int 21h
                    125:        dec word [.count]
                    126:        jnz .print
                    127: 
                    128:        ret
                    129: 
                    130: .count:        dw 0
                    131: 
                    132: str_not_syslinux: db "Not SYSLINUX or derivative (running on DOS?)$"
                    133: str_version: db "Version: $"
                    134: str_copyright: db 10, "Copyright: $"
                    135: str_derivative: db 10, "Derivative ID: 0x$"
                    136: str_version_num: db 10, "Version number: $"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.