Subversion Repositories Kolibri OS

Rev

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

  1. ; <--- description --->
  2. ; compiler:     FASM 1.54
  3. ; name:         MenuetOS RUN
  4. ; version:      0.02
  5. ; last update:  28/09/2004
  6. ; written by:   Ivan Poddubny
  7. ; e-mail:       ivan-yar@bk.ru
  8.  
  9.  
  10. ; <--- include all MeOS stuff --->
  11. include "lang.inc"
  12. include "macros.inc"
  13. ;;;lang fix en
  14.  
  15.  
  16. ; <--- start of MenuetOS application --->
  17. MEOS_APP_START
  18.  
  19. ;include "DEBUG.INC"
  20.  
  21. ; <--- start of code --->
  22. CODE
  23.     call    draw_window            ; at first create and draw the window
  24.  
  25.   wait_event:                      ; main cycle
  26.     mcall   10
  27.  
  28.     cmp     eax, 1                 ;   if event == 1
  29.     je      redraw                 ;     jump to redraw handler
  30.     cmp     eax, 2                 ;   else if event == 2
  31.     je      key                    ;     jump to key handler
  32.     cmp     eax, 3                 ;   else if event == 3
  33.     je      button                 ;     jump to button handler
  34.  
  35.     jmp     wait_event             ;   else return to the start of main cycle
  36.  
  37.  
  38.   redraw:                          ; redraw event handler
  39.     call    draw_window
  40.     jmp     wait_event
  41.  
  42.  
  43.   key:                             ; key event handler
  44.     mcall   2
  45.  
  46.     cmp     ah, 13
  47.     je      _run
  48.     cmp     ah, 8
  49.     je      .backspace
  50.  
  51.     mov     bl, ah
  52.     mov     eax, [position]
  53.     mov     [filename + eax], bl
  54.     inc     [position]
  55.     call    draw_string
  56.  
  57.     jmp     wait_event
  58.  
  59.    .backspace:
  60.     xor     eax, eax
  61.     cmp     [position], eax
  62.     je      wait_event
  63.     dec     [position]
  64.     call    draw_string
  65.     jmp     wait_event
  66.  
  67.  
  68.   button:                          ; button event handler
  69.     mcall   17
  70.  
  71.     cmp     ah, 10
  72.     je      _run
  73.  
  74.     dec     ah
  75.     jne     wait_event             ;   return if button id != 1
  76.  
  77.   _exit:
  78.     or      eax, -1                ;   exit application
  79.     int     0x40
  80.  
  81.  
  82. _run:
  83.     mcall   58, fileinfo
  84. ;   dps     "58th function returned "
  85. ;   dpd     eax
  86. ;   newline
  87.     jmp     _exit
  88.  
  89.  
  90. draw_window:
  91.     mcall   12, 1
  92.  
  93.     mcall   14
  94.     and     eax, 0xFFFF
  95.     sub     eax, 100
  96.     shl     eax, 16
  97.     add     eax, 80
  98.     mov     ecx, eax
  99.  
  100.     mov     ebx, 148*65536+400     ;   (window_cx)*65536+(window_sx)
  101.     mov     edx, 0x03DDDDDD        ;   work area color & window type 3
  102.     mcall   0
  103.  
  104.     mov     ebx, 8*65536+8         ;   coordinates
  105.     mov     ecx, 0x10ffffff        ;   color & font N1
  106.     mov     edx, header            ;   address of text
  107.     mov     esi, header.size       ;   length of text
  108.     mcall   4
  109.  
  110.     mpack   ebx, 10, 26
  111.     mov     ecx, 0
  112.     mov     edx, message
  113.     mov     esi, message.size
  114.     mcall
  115.  
  116.     mpack   ebx, 385-(runbtn.size*6), runbtn.size*6+4
  117.     mpack   ecx, 56, 14
  118.     mov     edx, 10
  119.     mov     esi, 0xa0a0a0
  120.     mcall   8
  121.  
  122. ;   mpack   ebx, 385-runbtn.size*6-findbtn.size*6-8, findbtn.size*6+4
  123. ;   inc     edx
  124. ;   mcall   8
  125.  
  126. ;   mpack   ebx, 388-runbtn.size*6-findbtn.size*6-7, 59
  127. ;   mov     ecx, 0
  128. ;   mov     edx, findbtn
  129. ;   mov     esi, findbtn.size
  130. ;   mcall   4
  131.  
  132.     mpack   ebx, 388-runbtn.size*6, 59
  133.     mov     ecx, 0
  134.     mov     edx, runbtn
  135.     mov     esi, runbtn.size
  136.     mcall   4
  137.  
  138.     call    draw_string
  139.  
  140.     mcall   12, 2
  141. ret
  142.  
  143.  
  144. draw_string:
  145.     mpack   ebx, 10, 380
  146.     mpack   ecx, 38, 14
  147.     mov     edx, 0xA0A0A0
  148.     mcall   13
  149.  
  150.     mpack   ebx, 14, 41
  151.     mov     ecx, 0
  152.     mov     edx, filename
  153.     mov     esi, [position]
  154.     mcall   4
  155. ret
  156.  
  157.  
  158.  
  159. ; <--- initialised data --->
  160. DATA
  161.  
  162.   position  dd filename.size
  163.  
  164.   lsz header,\
  165.     ru, "Запуск программы",\
  166.     en, "Start program"
  167.  
  168.   lsz message,\
  169.     ru, "Введите путь к файлу:",\
  170.     en, "Enter path to file:"
  171.  
  172. ; lsz findbtn,\
  173. ;   ru, "Найти...",\
  174. ;   en, "Find..."
  175.  
  176.   lsz runbtn,\
  177.     ru, "Запустить",\
  178.     en, "Run"
  179.  
  180.  
  181.   fileinfo:
  182.     .mode      dd  16
  183.                dd  0
  184.     .param     dd  0
  185.                dd  0
  186.     .workarea  dd  workarea
  187.  
  188.   sz filename, "/rd/1/"
  189.     rb 122
  190.  
  191.  
  192. ; <--- uninitialised data --->
  193. UDATA
  194.   workarea rb 4096
  195.  
  196.  
  197. MEOS_APP_END
  198. ; <--- end of MenuetOS application --->