Subversion Repositories Kolibri OS

Rev

Rev 2143 | Rev 2465 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. __REV = 0
  3.  
  4. macro $Revision a {
  5.   match =: Num =$,a \{
  6.     if __REV < Num
  7.       __REV = Num
  8.     end if
  9.   \}
  10. }
  11.  
  12. $Revision: 2434 $
  13.  
  14.  
  15. ;// mike.dld, 2006-29-01 [
  16.  
  17. ; macros definition
  18. macro diff16 title,l1,l2
  19. {
  20.   local s,d
  21.   s = l2-l1
  22.   display title,': 0x'
  23.   repeat 16
  24.     d = 48 + s shr ((16-%) shl 2) and $0F
  25.     if d > 57
  26.       d = d + 65-57-1
  27.     end if
  28.     display d
  29.   end repeat
  30.   display 13,10
  31. }
  32. macro diff10 title,l1,l2
  33.  {
  34.   local s,d,z,m
  35.   s = l2-l1
  36.   z = 0
  37.   m = 1000000000
  38.   display title,': '
  39.   repeat 10
  40.    d = '0' + s / m
  41.    s = s - (s/m)*m
  42.    m = m / 10
  43.    if d <> '0'
  44.     z = 1
  45.    end if
  46.    if z <> 0
  47.     display d
  48.    end if
  49.   end repeat
  50.   display 13,10
  51.  }
  52.  
  53. include 'kglobals.inc'
  54.  
  55. ; \begin{diamond}[29.09.2006]
  56. ; may be useful for kernel debugging
  57. ; example 1:
  58. ;       dbgstr 'Hello, World!'
  59. ; example 2:
  60. ;       dbgstr 'Hello, World!', save_flags
  61. macro dbgstr string*, f
  62. {
  63. local a
  64. iglobal_nested
  65. a db 'K : ',string,13,10,0
  66. endg_nested
  67. if ~ f eq
  68.         pushfd
  69. end if
  70.         push    esi
  71.         mov     esi, a
  72.         call    sys_msg_board_str
  73.         pop     esi
  74. if ~ f eq
  75.         popfd
  76. end if
  77. }
  78. ; \end{diamond}[29.09.2006]
  79.  
  80. macro Mov op1,op2,op3 ; op1 = op2 = op3
  81.  {
  82.         mov     op2, op3
  83.         mov     op1, op2
  84.  }
  85.  
  86. macro __list_add new, prev, next
  87. {
  88.         mov     [next+LHEAD.prev], new
  89.         mov     [new+LHEAD.next], next
  90.         mov     [new+LHEAD.prev], prev
  91.         mov     [prev+LHEAD.next], new
  92. }
  93.  
  94. macro list_add new, head
  95. {
  96.         mov     eax, [head+LHEAD.next]
  97.     __list_add new, head, eax
  98. }
  99.  
  100. macro list_add_tail new, head
  101. {
  102.         mov     eax, [head+LHEAD.prev]
  103.     __list_add new, eax, head
  104. }
  105.  
  106. macro list_del entry
  107. {
  108.         mov     edx, [entry+list_fd]
  109.         mov     ecx, [entry+list_bk]
  110.         mov     [edx+list_bk], ecx
  111.         mov     [ecx+list_fd], edx
  112. }
  113.  
  114.