Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ; KRuler - a screen ruler
  2. ; rgimad 2021
  3. ; author of idea - ConLenov
  4.  
  5. ; header:
  6. use32              
  7.         org     0
  8.         db      'MENUET01'  ; magic
  9.         dd      1           ; header version
  10.         dd      START       ; entry point
  11.         dd      I_END       ; program size
  12.         dd      MEM         ; memory size
  13.         dd      STACKTOP    ; stack top addr
  14.         dd      0           ; buf for args
  15.         dd      0           ; reversed
  16.  
  17. WND_START_X     = 10
  18. WND_START_Y     = 40
  19. WND_WIDTH       = 360
  20. WND_HEIGHT      = 68
  21.  
  22. include "../../macros.inc"
  23.  
  24. START:
  25.  
  26. ; event loop:
  27. event_loop:
  28.         mcall   10            ; wait for event
  29.  
  30.         cmp     eax, 1        ; redraw event
  31.         je      on_redraw
  32.  
  33.         cmp     eax,3         ; btn
  34.         je      on_button        
  35.  
  36.         jmp     event_loop
  37.  
  38.  
  39. on_button:
  40.         mcall   17            ; 17 - get key code
  41.         cmp     ah, 1         ; if key with code 1 is not pressed then continue
  42.         jne     event_loop
  43.         mcall   -1 ; else exit
  44.  
  45. ; define and draw window
  46. on_redraw:
  47.  
  48.         mcall   12, 1       ; begin redraw
  49.         ; mcall   48, 3, sc,sizeof.system_colors
  50.  
  51.         mov     edx, 0xFEF977          ; background color
  52.         or      edx, 0x34000000        ; window type
  53.         mcall   0, <WND_START_X, WND_WIDTH>, <WND_START_Y, WND_HEIGHT>, , , wnd_title
  54.  
  55.         mov     esi, 5
  56. .while1:
  57.         cmp     esi, 355
  58.         jae     .while1_end
  59.  
  60.         mov     eax, 38
  61.         mov     ebx, esi
  62.         shl     ebx, 16
  63.         add     ebx, esi
  64.         xor     ecx, ecx
  65.         shl     ecx, 16
  66.         add     ecx, 30 ; stripe height
  67.         xor     edx, edx
  68.         int     0x40
  69.  
  70.         add     esi, 10
  71.         jmp     .while1
  72. .while1_end:
  73.  
  74. mov     esi, 10
  75. .while2:
  76.         cmp     esi, 350
  77.         jae     .while2_end
  78.  
  79.         mov     eax, 38
  80.         mov     ebx, esi
  81.         shl     ebx, 16
  82.         add     ebx, esi
  83.         xor     ecx, ecx
  84.         shl     ecx, 16
  85.         add     ecx, 20 ; stripe height
  86.         xor     edx, edx
  87.         int     0x40
  88.  
  89.         add     esi, 10
  90.         jmp     .while2
  91. .while2_end:
  92.  
  93.         mcall   12, 2                  ; end draw
  94.         jmp     event_loop
  95.  
  96. ; data:
  97.  
  98. sc              system_colors
  99. wnd_title       db 'KRuler v0.0.1',0
  100.  
  101. ; labels:
  102.  
  103. I_END:
  104.   rb 4096               ; for stack
  105.  
  106. align 16
  107. STACKTOP:               ; stack top label, stack grows downwards
  108.                        
  109. MEM:                    ; end