Subversion Repositories Kolibri OS

Rev

Rev 111 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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