Subversion Repositories Kolibri OS

Rev

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

  1. $Revision: 425 $
  2. align 4
  3. dtext:  ; Text String Output (rw by Johnny_B[john@kolibrios.org])
  4.         ; eax x & y
  5.         ; ebx style ( 0xX0000000 ) & color ( 0x00RRGGBB )
  6.         ; X = ABnnb:
  7.         ; nn = font
  8.         ; A = 0 <=> output edx characters; otherwise output ASCIIZ string
  9.         ; B = 1 <=> fill background with color esi
  10.         ; ecx start of text
  11.         ; edi 1 force
  12.  
  13.         pushad
  14.         call    [disable_mouse]
  15.  
  16.         mov     ebp, ecx        ; ebp=pointer to text
  17.         mov     ecx, ebx        ; ecx=color
  18.         movsx   ebx, ax         ; ebx=y
  19.         sar     eax, 16         ; eax=x
  20.         cmp     edx, 255
  21.         jb      .loop
  22.         mov     edx, 255
  23. .loop:
  24.         test    ecx, ecx
  25.         js      .test_asciiz
  26.         dec     edx
  27.         js      .end
  28.         jmp     @f
  29. .test_asciiz:
  30.         cmp     byte [ebp], 0
  31.         jz      .end
  32. @@:
  33.         push    edx
  34.         movzx   edx, byte [ebp]
  35.         inc     ebp
  36.         test    ecx, 0x10000000
  37.         jnz     .font2
  38.         pushad
  39.         mov     esi, 9
  40.         lea     ebp, [FONT_I+8*edx+edx]
  41. .symloop1:
  42.         mov     dl, byte [ebp]
  43.         or      dl, 1 shl 6
  44. .pixloop1:
  45.         shr     dl, 1
  46.         jz      .pixloop1end
  47.         jnc     .nopix
  48.         call    [putpixel]
  49.         jmp     .pixloop1cont
  50. .nopix:
  51.         test    ecx, 0x40000000
  52.         jz      .pixloop1cont
  53.         push    ecx
  54.         mov     ecx, [esp+4+4]
  55.         call    [putpixel]
  56.         pop     ecx
  57. .pixloop1cont:
  58.         inc     eax
  59.         jmp     .pixloop1
  60. .pixloop1end:
  61.         sub     eax, 6
  62.         inc     ebx
  63.         inc     ebp
  64.         dec     esi
  65.         jnz     .symloop1
  66.         popad
  67.         add     eax, 6
  68.         pop     edx
  69.         jmp     .loop
  70. .font2:
  71.         pushad
  72.         add     edx, edx
  73.         lea     ebp, [FONT_II+4*edx+edx+1]
  74.         push    9
  75.         movzx   esi, byte [ebp-1]
  76. .symloop2:
  77.         mov     dl, byte [ebp]
  78.         push    esi
  79. .pixloop2:
  80.         shr     dl, 1
  81.         jnc     .nopix2
  82.         call    [putpixel]
  83.         jmp     .pixloop2cont
  84. .nopix2:
  85.         test    ecx, 0x40000000
  86.         jz      .pixloop2cont
  87.         push    ecx
  88.         mov     ecx, [esp+12+4]
  89.         call    [putpixel]
  90.         pop     ecx
  91. .pixloop2cont:
  92.         inc     eax
  93.         dec     esi
  94.         jnz     .pixloop2
  95.         pop     esi
  96.         sub     eax, esi
  97.         inc     ebx
  98.         inc     ebp
  99.         dec     dword [esp]
  100.         jnz     .symloop2
  101.         pop     eax
  102.         add     dword [esp+28], esi
  103.         popad
  104.         pop     edx
  105.         jmp     .loop
  106. .end:
  107.         popad
  108.         ret
  109.