]> git.dujemihanovic.xyz Git - nameless-os.git/blob - boot/x86/stage3/print.s
Compile stage3 in ELF format
[nameless-os.git] / boot / x86 / stage3 / print.s
1 ; Routines for printing
2
3 bits 16
4 section .text
5
6 print_str:
7 push ax
8 push bx
9 push si
10 mov ah, 0xe
11 xor bh, bh
12 mov bl, 0xf
13 .loop:
14 lodsb
15 cmp al, 0
16 je .done
17 int 0x10
18 jmp .loop
19 .done:
20 pop si
21 pop bx
22 pop ax
23 ret
24
25 ; AL - nibble to print
26 ; CF - clear prints low nibble, set prints high nibble
27 print_nibble:
28 print hex_delm
29 .no_delm:
30 pushf
31 push ax
32 push bx
33 pushf
34 xor bh, bh
35 mov bl, 0xf
36 mov ah, 0xe
37 popf
38 jnc .no_shift
39 shr al, 4
40 .no_shift:
41 and al, 0xf
42 cmp al, 0xa
43 jge .letter
44 .numeric:
45 add al, '0'
46 int 0x10
47 jmp .done
48 .letter:
49 add al, 'a'-10
50 int 0x10
51 .done:
52 pop bx
53 pop ax
54 popf
55 ret
56
57 ; AL - byte to print
58 print_byte:
59 print hex_delm
60 .no_delm:
61 pushf
62 stc
63 call print_nibble.no_delm
64 clc
65 call print_nibble.no_delm
66 popf
67 ret
68
69 print_word:
70 print hex_delm
71 .no_delm:
72 ror ax, 8
73 call print_byte.no_delm
74 ror ax, 8
75 call print_byte.no_delm
76 ret
77
78 print_dword:
79 print hex_delm
80 .no_delm:
81 ror eax, 16
82 call print_word.no_delm
83 ror eax, 16
84 call print_word.no_delm
85 ret
86
87 ; Do a dump of all general purpose regs
88 critical_error:
89 print crit_err
90 print eax_s
91 call print_dword
92 print space
93 print ebx_s
94 mov eax, ebx
95 call print_dword
96 print space
97 print ecx_s
98 mov eax, ecx
99 call print_dword
100 print space
101 print edx_s
102 mov eax, edx
103 call print_dword
104 print newline
105 print esi_s
106 mov eax, esi
107 call print_dword
108 print space
109 print edi_s
110 mov eax, edi
111 call print_dword
112 print newline
113 print cs_s
114 mov ax, cs
115 call print_word
116 print space
117 print ds_s
118 mov ax, ds
119 call print_word
120 print space
121 print es_s
122 mov ax, es
123 call print_word
124 print space
125 print ss_s
126 mov ax, ss
127 call print_word
128 hlt
129 jmp $-1