Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
426 mikedld 1
 
2
3
 
4
  match =: Num =$,a \{
5
    if __REV < Num
6
      __REV = Num
7
    end if
8
  \}
9
}
10
11
 
12
13
 
593 mikedld 14
 
426 mikedld 15
macro struct name, [arg]
16
 {
17
  common
18
   name@struct equ name
19
   struc name arg {
20
 }
21
22
 
2115 clevermous 23
{ sizeof.#xname = value }
24
25
 
426 mikedld 26
 {
27
  match xname,name
28
  \{
29
   virtual at 0
30
   xname xname
31
   declare_sizeof xname, $ - xname
2115 clevermous 32
   name equ sizeof.#xname
426 mikedld 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
506 mikedld 48
    d = 48 + s shr ((16-%) shl 2) and $0F
49
    if d > 57
426 mikedld 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
 
521 diamond 78
79
 
426 mikedld 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
1055 Galkov 104
 
105
 {
106
        mov   op2,op3
107
        mov   op1,op2
108
 }
109
2146 clevermous 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