Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2243 Albom 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 --->