Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
2288 clevermous 1
 
2
3
 
4
  match =: Num =$,a \{
5
    if __REV < Num
6
      __REV = Num
7
    end if
8
  \}
9
}
10
11
 
12
13
 
14
 
15
macro struct name, [arg]
16
 {
17
  common
18
   name@struct equ name
19
   struc name arg {
20
 }
21
22
 
23
{ sizeof.#xname = value }
24
25
 
26
 {
27
  match xname,name
28
  \{
29
   virtual at 0
30
   xname xname
31
   declare_sizeof xname, $ - xname
32
   name equ sizeof.#xname
33
   end virtual
34
  \}
35
 }
36
37
 
38
39
 
40
41
 
42
macro diff16 title,l1,l2
43
{
44
  local s,d
45
  s = l2-l1
46
  display title,': 0x'
47
  repeat 16
48
    d = 48 + s shr ((16-%) shl 2) and $0F
49
    if d > 57
50
      d = d + 65-57-1
51
    end if
52
    display d
53
  end repeat
54
  display 13,10
55
}
56
macro diff10 title,l1,l2
57
 {
58
  local s,d,z,m
59
  s = l2-l1
60
  z = 0
61
  m = 1000000000
62
  display title,': '
63
  repeat 10
64
   d = '0' + s / m
65
   s = s - (s/m)*m
66
   m = m / 10
67
   if d <> '0'
68
    z = 1
69
   end if
70
   if z <> 0
71
    display d
72
   end if
73
  end repeat
74
  display 13,10
75
 }
76
77
 
78
79
 
80
; may be useful for kernel debugging
81
; example 1:
82
;       dbgstr 'Hello, World!'
83
; example 2:
84
;       dbgstr 'Hello, World!', save_flags
85
macro dbgstr string*, f
86
{
87
local a
88
iglobal_nested
89
a db 'K : ',string,13,10,0
90
endg_nested
91
if ~ f eq
92
        pushfd
93
end if
94
        push    esi
95
        mov     esi, a
96
        call    sys_msg_board_str
97
        pop     esi
98
if ~ f eq
99
        popfd
100
end if
101
}
102
; \end{diamond}[29.09.2006]
103
104
 
105
 {
106
        mov     op2, op3
107
        mov     op1, op2
108
 }
109
110
 
111
{
112
        mov     [next+LHEAD.prev], new
113
        mov     [new+LHEAD.next], next
114
        mov     [new+LHEAD.prev], prev
115
        mov     [prev+LHEAD.next], new
116
}
117
118
 
119
{
120
        mov     eax, [head+LHEAD.next]
121
    __list_add new, head, eax
122
}
123
124
 
125
{
126
        mov     eax, [head+LHEAD.prev]
127
    __list_add new, eax, head
128
}
129
130
 
131
{
132
        mov     edx, [entry+list_fd]
133
        mov     ecx, [entry+list_bk]
134
        mov     [edx+list_bk], ecx
135
        mov     [ecx+list_fd], edx
136
}
137