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 --->--->--->--->--->--->---> |