|
|
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: $"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.