Subversion Repositories Kolibri OS

Rev

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

  1. ;-------------------------------------------------------------------------------
  2. ;
  3. ;    PROTECTION TEST
  4. ;
  5. ;-------------------------------------------------------------------------------
  6. ; last update:  07/03/2014
  7. ; changed by:   Marat Zakiyanov aka Mario79, aka Mario
  8. ; changes:      Optimisations and code refactoring.
  9. ;               Reducing the consumption of RAM, 4 KB instead of 64 KB.
  10. ;               Translation into Russian.
  11. ;---------------------------------------------------------------------
  12. use32
  13.         org 0x0
  14.  
  15.         db 'MENUET01'   ; 8 byte id
  16.         dd 0x01         ; header version
  17.         dd START        ; start of code
  18.         dd I_END        ; size of image
  19.         dd IM_END       ; memory for app
  20.         dd stack_top    ; esp
  21.         dd 0x0          ; I_Param
  22.         dd 0x0          ; I_Icon
  23. ;-------------------------------------------------------------------------------
  24. include '../../../macros.inc'
  25. include 'lang.inc'
  26. ;-------------------------------------------------------------------------------
  27. START:                          ; start of execution
  28. red:                            ; redraw
  29.         call    draw_window             ; at first, draw the window
  30. ;-------------------------------------------------------------------------------
  31. still:
  32.         mcall   10      ; wait here for event
  33.         cmp     eax,1   ; redraw request ?
  34.         jz      red
  35.  
  36.         cmp     eax,3   ; button in buffer ?
  37.         jz      button
  38.  
  39.         cmp     eax,2   ; key in buffer ?
  40.         jnz     still
  41. ;-------------------------------------------------------------------------------
  42. key:
  43.         mcall   2       ; just read it and ignore
  44.         jmp     still
  45. ;-------------------------------------------------------------------------------
  46. button:
  47.         mcall   17
  48.         cmp     ah,1    ; button id=1 ?
  49.         jnz     noclose
  50.  
  51.         mcall   -1      ; close this program
  52. ;-------------------------------------------------------------------------------
  53. noclose:
  54.         cmp     ah,2
  55.         jnz     notest2
  56.         cli
  57. ;-------------------------------------------------------------------------------
  58. notest2:
  59.         cmp     ah,3
  60.         jnz     notest3
  61.         sti
  62. ;-------------------------------------------------------------------------------
  63. notest3:
  64.         cmp     ah,4
  65.         jnz     notest4
  66.         mov     [0x10000],byte 1
  67. ;-------------------------------------------------------------------------------
  68. notest4:
  69.         cmp     ah,5
  70.         jnz     notest5
  71.         jmp     dword 0x10000
  72. ;-------------------------------------------------------------------------------
  73. notest5:
  74.         cmp     ah,6
  75.         jnz     notest6
  76.         mov     esp,0
  77.         push    eax
  78. ;-------------------------------------------------------------------------------
  79. notest6:
  80.         cmp     ah,7
  81.         jnz     notest7
  82.         in      al,0x60
  83. ;-------------------------------------------------------------------------------
  84. notest7:
  85.         cmp     ah,8
  86.         jnz     still
  87.         out     0x60,al
  88.         jmp     still
  89. ;-------------------------------------------------------------------------------
  90. ;   *********************************************
  91. ;   *******  WINDOW DEFINITIONS AND DRAW ********
  92. ;   *********************************************
  93. ;-------------------------------------------------------------------------------
  94. draw_window:
  95.         ;mcall  48,3,sys_colors,40
  96.         mcall   12,1
  97.         mcall   0,<200,370>,<200,295>,0x14FFFFFF,,tlabel
  98.         mcall   8, <36,15>, <88,15>, 2, 0x6888B8
  99. .newb:
  100.         mcall
  101.         add     ecx,26*65536
  102.         inc     edx
  103.         cmp     edx,9
  104.         jb      .newb
  105.  
  106.         cld
  107.         mov     ebx,26*65536+37    ; draw info text with function 4
  108.         mov     ecx,0x10000000
  109.         mov     edx,text
  110.         mov     esi,40
  111.  
  112.         mov     eax,4
  113. .newline:
  114.         mcall
  115.         add     ebx,13
  116.         add     edx,40
  117.         cmp     [edx],byte 'x'
  118.         jnz     .newline
  119.  
  120.         mcall   12,2               ; function 12:tell os about windowdraw
  121.         ret
  122. ;-------------------------------------------------------------------------------
  123. ; DATA AREA
  124. ;-------------------------------------------------------------------------------
  125. if lang eq it
  126. text:
  127.         db 'Il programma usa 0x1000 byte di memoria '
  128.         db '                                        '
  129.         db 'Open debug board for rezult information '
  130.         db '                                        '
  131.         db '     CLI                                '
  132.         db '                                        '
  133.         db '     STI                                '
  134.         db '                                        '
  135.         db '     MOV [0x10000],BYTE 1               '
  136.         db '                                        '
  137.         db '     JMP DWORD 0x10000                  '
  138.         db '                                        '
  139.         db '     MOV ESP,0 & PUSH EAX               '
  140.         db '                                        '
  141.         db '     IN  Al,0x60                        '
  142.         db '                                        '
  143.         db '     OUT 0x60,AL                        '
  144.         db 'x'
  145. else if lang eq ru
  146. text:
  147.         db 'à¨«®¦¥­¨¥ ¨á¯®«ì§ã¥â 0x1000 ¡ ©â ¯ ¬ïâ¨'
  148.         db '                                        '
  149.         db 'Žâªàëâì BOARD ¤«ï ¯à®á¬®âà  à¥§ã«ìâ â   '
  150.         db '                                        '
  151.         db '     CLI                                '
  152.         db '                                        '
  153.         db '     STI                                '
  154.         db '                                        '
  155.         db '     MOV [0x10000],BYTE 1               '
  156.         db '                                        '
  157.         db '     JMP DWORD 0x10000                  '
  158.         db '                                        '
  159.         db '     MOV ESP,0 & PUSH EAX               '
  160.         db '                                        '
  161.         db '     IN  Al,0x60                        '
  162.         db '                                        '
  163.         db '     OUT 0x60,AL                        '
  164.         db 'x'
  165. else
  166. text:
  167.         db 'Application uses 0x1000 bytes of memory '
  168.         db '                                        '
  169.         db 'Open debug board for result information '
  170.         db '                                        '
  171.         db '     CLI                                '
  172.         db '                                        '
  173.         db '     STI                                '
  174.         db '                                        '
  175.         db '     MOV [0x10000],BYTE 1               '
  176.         db '                                        '
  177.         db '     JMP DWORD 0x10000                  '
  178.         db '                                        '
  179.         db '     MOV ESP,0 & PUSH EAX               '
  180.         db '                                        '
  181.         db '     IN  Al,0x60                        '
  182.         db '                                        '
  183.         db '     OUT 0x60,AL                        '
  184.         db 'x'
  185. end if
  186. ;-------------------------------------------------------------------------------
  187. if lang eq it
  188. tlabel:
  189.         db 'Kolibri prova di protezione',0
  190. else if lang eq ru
  191. tlabel:
  192.         db 'Kolibri ¯à®¢¥àª  § é¨âë ï¤à ',0
  193. else
  194. tlabel:
  195.         db 'Kolibri protection test',0
  196. end if
  197. ;-------------------------------------------------------------------------------
  198. I_END:
  199. ;-------------------------------------------------------------------------------
  200. align 4
  201.         rb 256
  202. stack_top:
  203. ;-------------------------------------------------------------------------------
  204. IM_END:
  205. ;-------------------------------------------------------------------------------