Subversion Repositories Kolibri OS

Rev

Rev 129 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

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