Subversion Repositories Kolibri OS

Rev

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

  1. ;   Author: M. Lisovin
  2. ;   Compile with FASM for Menuet
  3. ;
  4.  
  5. use32
  6.  
  7.                org    0x0
  8.  
  9.                db     'MENUET01'              ; 8 byte id
  10.                dd     0x01                    ; header version
  11.                dd     START                   ; start of code
  12.                dd     I_END                   ; size of image
  13.                dd     0x1000                  ; memory for app
  14.                dd     0x1000                  ; esp
  15.                dd     0x0 , 0x0               ; I_Param , I_Icon
  16.  
  17. include 'lang.inc'
  18. include '..\..\..\macros.inc'
  19.  
  20. START:                          ; start of execution
  21.   red:
  22.      call draw_window
  23.  
  24. still:
  25.  
  26.     mov  eax,10                 ; wait here for event
  27.     mcall
  28.  
  29.     cmp  eax,1                  ; redraw request ?
  30.     je   red
  31.     cmp  eax,2                  ; key in buffer ?
  32.     je   key
  33.     cmp  eax,3                  ; button in buffer ?
  34.     je   button
  35.  
  36.     jmp  still
  37.  
  38.   key:                          ; key
  39.     mov  eax,2                  ; just read it and ignore
  40.     mcall
  41.     mov  [keyid],ah
  42.     call draw_window
  43.     jmp  still
  44.  
  45.   button:                       ; button
  46.     mov  eax,17                 ; get id
  47.     mcall
  48.  
  49.     cmp  ah,1                   ; button id=1 ?
  50.     jne  noclose
  51.  
  52.     or   eax,-1                 ; close this program
  53.     mcall
  54.   noclose:
  55.  
  56.     jmp  still
  57.  
  58.  
  59.  
  60.  
  61. ;   *********************************************
  62. ;   *******  WINDOW DEFINITIONS AND DRAW ********
  63. ;   *********************************************
  64.  
  65.  
  66. draw_window:
  67.  
  68.  
  69.     mov  eax,12                    ; function 12:tell os about windowdraw
  70.     mov  ebx,1                     ; 1, start of draw
  71.     mcall
  72.  
  73.                                    ; DRAW WINDOW
  74.     mov  eax,0                     ; function 0 : define and draw window
  75.     mov  ebx,100*65536+270         ; [x start] *65536 + [x size]
  76.     mov  ecx,100*65536+80          ; [y start] *65536 + [y size]
  77.     mov  edx,0x34ffffff            ; color of work area RRGGBB,8->color gl
  78.     mov  edi,title
  79.     mcall
  80.  
  81.     mov  eax,4                     ; function 4 : write text to window
  82.     xor  ecx,ecx
  83.     mov  esi,4
  84.     mov  ebx,8*65536+8
  85.     mov  edx,tdec
  86.     mcall
  87.     add  ebx,23
  88.     mov  edx,thex
  89.     mcall
  90.  
  91.     mov  ecx,[keyid]
  92.     mov  eax,47
  93.     mov  ebx,3*65536
  94.     mov  edx,40*65536+8
  95.     mov  esi,0x224466
  96.     mcall
  97.     add  edx,23
  98.     mov  bh,1
  99.     mcall
  100.  
  101.     mov  eax,12                    ; function 12:tell os about windowdraw
  102.     mov  ebx,2                     ; 2, end of draw
  103.     mcall
  104.  
  105.     ret
  106.  
  107.  
  108. ; DATA AREA
  109.  
  110.  tdec:  db 'DEC:'
  111.  thex:  db 'HEX:'
  112.  title db 'KEYBOARD ASCIICODES-PRESS ANY KEY',0
  113.  keyid: db  0
  114. I_END:
  115.  
  116.