Subversion Repositories Kolibri OS

Rev

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

  1. ; Text CodePage = cp1251
  2.  
  3. ; <--- include all MeOS stuff --->
  4.  
  5. include "../../../../../macros.inc"
  6.  
  7.  
  8. ; <--- start of MenuetOS application --->
  9. MEOS_APP_START
  10.  
  11. include  "key_read.inc"
  12.  
  13. ; <--- start of code --->
  14. CODE
  15.  
  16.    mov  eax,48                      ; get system colors
  17.    mov  ebx,3
  18.    mov  ecx,sc
  19.    mov  edx,sizeof.system_colors
  20.    mcall
  21.  
  22.          xor      ecx, ecx
  23.          inc ecx
  24.          mcall 66,1                    ; óñòàíîâêà ðåæèìà ââîäà ñêàíêîäîâ
  25.  
  26.  
  27.  
  28.   redraw:                                ; redraw event handler
  29.    call    draw_window            ; at first create and draw the window
  30.  
  31.   wait_event:                      ; main cycle
  32.  
  33.       mcall   10                   ; îæèäàòü ñîáûòèå
  34.  
  35. ;    mcall    23, 2                  ; âàðèàíò ïîñòîÿííûé îïðîñ
  36. ;    or      eax, eax
  37. ;    jz     key.1
  38.  
  39.     dec   eax                    ;   if event = 1
  40.     jz      redraw               ;   jump to redraw handler
  41.     dec   eax                    ;   else if event = 2
  42.     jz      key                    ;   jump to key handler
  43.  
  44.  
  45.   button:                         ; button event handler
  46.     mov     al, 17               ;   get button identifier
  47.     mcall
  48.  
  49.     cmp     ah, 1
  50.     jne     wait_event        ;   return if button id != 1
  51.  
  52.     or      eax, -1               ;   exit application
  53.     mcall
  54.  
  55.   key:                              ; key event handler
  56.                      ;   get key code
  57.     call      load_keys
  58.                                        ; ïðåîáðàçîâàíèå
  59. .1:
  60.     mov     ah, 0xfe
  61.     mov     edx, txt_data.fe
  62.     call     load_ports
  63.  
  64.     mov     ah, 0xfd
  65.     mov     edx, txt_data.fd
  66.     call     load_ports
  67.  
  68.     mov     ah, 0xfb
  69.     mov     edx, txt_data.fb
  70.     call     load_ports
  71.  
  72.     mov     ah, 0xf7
  73.     mov     edx, txt_data.f7
  74.     call     load_ports
  75.  
  76.     mov     ah, 0xef
  77.     mov     edx, txt_data.ef
  78.     call     load_ports
  79.  
  80.     mov     ah, 0xdf
  81.     mov     edx, txt_data.df
  82.     call     load_ports
  83.  
  84.     mov     ah, 0xbf
  85.     mov     edx, txt_data.bf
  86.     call     load_ports
  87.  
  88.     mov     ah, 0x7f
  89.     mov     edx, txt_data.7f
  90.     call     load_ports
  91.  
  92.     mov     ah, 0x00
  93.     mov     edx, txt_data.00
  94.     call     load_ports
  95.  
  96.  
  97.  
  98.     jmp     redraw
  99.  
  100.   draw_window:
  101.     mov     eax, 12                ; start drawing
  102.     mov     ebx, 1
  103.     mcall
  104.  
  105.     xor       eax, eax                      ; create and draw the window
  106.     mov     ebx, 40*65536+560 ; (window_cx)*65536+(window_sx)
  107.     mov     ecx, 40*65536+240  ; (window_cy)*65536+(window_sy)
  108.     mov     edx, [sc.work]              ; work area color
  109.     or         edx, 0x33000000        ; & window type 3
  110.     mov     edi, title                    ; window title
  111.     int        0x40
  112.  
  113.     mov     ecx, [sc.work_text]
  114.     or         ecx, 0x80000000
  115.     mov     edx, txt_data
  116.     mcall   4, 10*65536+40
  117.     mov     edx, txt_data.2s
  118.     mcall   4, 10*65536+60
  119.     mov     edx, txt_data.3s
  120.     mcall   4, 10*65536+80
  121.  
  122.  
  123.     mov     eax, 12                ; finish drawing
  124.     mov     ebx, 2
  125.     mcall
  126.  
  127.   ret
  128.  
  129.  
  130. load_ports:                      ; âõîä  ah - ñòàðøèé áàéò ïîðòà
  131.                                           ;           edx - àäðåñ òåêñòà
  132.      mov     al, 0xFE
  133.      call      load_port_FE
  134.  
  135. rept  8
  136. {
  137.      mov     bl, '1'
  138.      shl      al,1
  139.      jc   @f
  140.      mov     bl, '0'
  141. @@:
  142.      mov     byte [edx], bl
  143.      inc      edx
  144. }
  145.  
  146.   ret
  147.  
  148.  
  149.  
  150.  
  151. ; <--- initialised data --->
  152. DATA
  153.  
  154.  
  155. title db 'Key ZX-Spectrum TEST',0
  156.  
  157. txt_data   db '#FE: '
  158. .fe db '********   #FD: '
  159. .fd db '********   #FB: '
  160. .fb db '********   #F7: '
  161. .f7 db '********   ', 0
  162. .2s db '#EF: '
  163. .ef db '********   #DF: '
  164. .df db '********   #BF: '
  165. .bf db '********   #7F: '
  166. .7f db '********   ', 0
  167. .3s db '#00: '
  168. .00 db '********   ', 0
  169.  
  170.  
  171. ; <--- uninitialised data --->
  172. UDATA
  173. sc   system_colors
  174.  
  175. MEOS_APP_END
  176. ; <--- end of MenuetOS application --->