Rev 3013 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3013 | Rev 7644 | ||
---|---|---|---|
1 | macro debug_print str |
1 | macro debug_print str |
2 | { |
2 | { |
3 | local ..string, ..label |
3 | local ..string, ..label |
4 | 4 | ||
5 | jmp ..label |
5 | jmp ..label |
6 | ..string db str,0 |
6 | ..string db str,0 |
7 | ..label: |
7 | ..label: |
8 | 8 | ||
9 | pushf |
9 | pushf |
10 | pushad |
10 | pushad |
11 | mov edx,..string |
11 | mov edx,..string |
12 | call debug_outstr |
12 | call debug_outstr |
13 | popad |
13 | popad |
14 | popf |
14 | popf |
15 | } |
15 | } |
16 | 16 | ||
17 | dps fix debug_print |
17 | dps fix debug_print |
18 | 18 | ||
19 | macro debug_print_dec arg |
19 | macro debug_print_dec arg |
20 | { |
20 | { |
21 | pushf |
21 | pushf |
22 | pushad |
22 | pushad |
23 | if ~arg eq eax |
23 | if ~arg eq eax |
24 | mov eax,arg |
24 | mov eax,arg |
25 | end if |
25 | end if |
26 | call debug_outdec |
26 | call debug_outdec |
27 | popad |
27 | popad |
28 | popf |
28 | popf |
29 | } |
29 | } |
30 | 30 | ||
31 | dpd fix debug_print_dec |
31 | dpd fix debug_print_dec |
32 | 32 | ||
33 | ;--------------------------------- |
33 | ;--------------------------------- |
34 | debug_outdec: ;(eax - num, edi-str) |
34 | debug_outdec: ;(eax - num, edi-str) |
35 | push 10 ;2 |
35 | push 10 ;2 |
36 | pop ecx ;1 |
36 | pop ecx ;1 |
37 | push -'0' ;2 |
37 | push -'0' ;2 |
38 | .l0: |
38 | .l0: |
39 | xor edx,edx ;2 |
39 | xor edx,edx ;2 |
40 | div ecx ;2 |
40 | div ecx ;2 |
41 | push edx ;1 |
41 | push edx ;1 |
42 | test eax,eax ;2 |
42 | test eax,eax ;2 |
43 | jnz .l0 ;2 |
43 | jnz .l0 ;2 |
44 | .l1: |
44 | .l1: |
45 | pop eax ;1 |
45 | pop eax ;1 |
46 | add al,'0' ;2 |
46 | add al,'0' ;2 |
47 | call debug_outchar ; stosb |
47 | call debug_outchar ; stosb |
48 | jnz .l1 ;2 |
48 | jnz .l1 ;2 |
49 | ret ;1 |
49 | ret ;1 |
50 | ;--------------------------------- |
50 | ;--------------------------------- |
51 | 51 | ||
52 | debug_outchar: ; al - char |
52 | debug_outchar: ; al - char |
53 | pushf |
53 | pushf |
54 | pushad |
54 | pushad |
55 | mov cl,al |
55 | mov cl,al |
56 | mov eax,63 |
56 | mov eax,63 |
57 | mov ebx,1 |
57 | mov ebx,1 |
58 | int 0x40 |
58 | int 0x40 |
59 | popad |
59 | popad |
60 | popf |
60 | popf |
61 | ret |
61 | ret |
62 | 62 | ||
63 | debug_outstr: |
63 | debug_outstr: |
64 | mov eax,63 |
64 | mov eax,63 |
65 | mov ebx,1 |
65 | mov ebx,1 |
66 | @@: |
66 | @@: |
67 | mov cl,[edx] |
67 | mov cl,[edx] |
68 | test cl,cl |
68 | test cl,cl |
69 | jz @f |
69 | jz @f |
70 | int 40h |
70 | int 40h |
71 | inc edx |
71 | inc edx |
72 | jmp @b |
72 | jmp @b |
73 | @@: |
73 | @@: |
74 | ret |
74 | ret |
75 | 75 | ||
76 | 76 | ||
77 | macro newline |
77 | macro newline |
78 | { |
78 | { |
79 | dps <13,10> |
79 | dps <13,10> |
80 | } |
80 | } |
81 | 81 | ||
82 | macro print message |
82 | macro print message |
83 | { |
83 | { |
84 | dps message |
84 | dps message |
85 | newline |
85 | newline |
86 | } |
86 | } |
87 | 87 | ||
88 | macro pregs |
88 | macro pregs |
89 | { |
89 | { |
90 | dps "EAX: " |
90 | dps "EAX: " |
91 | dpd eax |
91 | dpd eax |
92 | dps " EBX: " |
92 | dps " EBX: " |
93 | dpd ebx |
93 | dpd ebx |
94 | newline |
94 | newline |
95 | dps "ECX: " |
95 | dps "ECX: " |
96 | dpd ecx |
96 | dpd ecx |
97 | dps " EDX: " |
97 | dps " EDX: " |
98 | dpd edx |
98 | dpd edx |
99 | newline |
99 | newline |
100 | } |
100 | } |
101 | 101 | ||
102 | macro debug_print_hex arg |
102 | macro debug_print_hex arg |
103 | { |
103 | { |
104 | pushf |
104 | pushf |
105 | pushad |
105 | pushad |
106 | if ~arg eq eax |
106 | if ~arg eq eax |
107 | mov eax, arg |
107 | mov eax, arg |
108 | end if |
108 | end if |
109 | call debug_outhex |
109 | call debug_outhex |
110 | popad |
110 | popad |
111 | popf |
111 | popf |
112 | } |
112 | } |
113 | dph fix debug_print_hex |
113 | dph fix debug_print_hex |
114 | 114 | ||
115 | debug_outhex: |
115 | debug_outhex: |
116 | ; eax - number |
116 | ; eax - number |
117 | mov edx, 8 |
117 | mov edx, 8 |
118 | .new_char: |
118 | .new_char: |
119 | rol eax, 4 |
119 | rol eax, 4 |
120 | movzx ecx, al |
120 | movzx ecx, al |
121 | and cl, 0x0f |
121 | and cl, 0x0f |
122 | mov cl, [__hexdigits + ecx] |
122 | mov cl, [__hexdigits + ecx] |
123 | pushad |
123 | pushad |
124 | mcall 63, 1 |
124 | mov eax, 63 |
- | 125 | mov ebx, 1 |
|
- | 126 | int 0x40 |
|
125 | popad |
127 | popad |
126 | dec edx |
128 | dec edx |
127 | jnz .new_char |
129 | jnz .new_char |
128 | ret |
130 | ret |
129 | 131 | ||
130 | __hexdigits: |
132 | __hexdigits: |
131 | db '0123456789ABCDEF'13,10> |
133 | db '0123456789ABCDEF'13,10> |