Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
31 | halyavin | 1 | ; Originally written by Jarek Pelczar |
2 | include "lang.inc" |
||
3 | include "macros.inc" |
||
4 | |||
5 | WND_SIZE_X = 320 |
||
6 | WND_SIZE_Y = 200 |
||
7 | |||
8 | MEOS_APP_START |
||
9 | CODE |
||
10 | fninit |
||
11 | mov al,40 |
||
12 | mov bl,101b |
||
13 | int 0x40 |
||
14 | call init_palette |
||
15 | call init_texture |
||
16 | jmp .paint_window |
||
17 | .event_loop: |
||
18 | mov al,23 |
||
19 | mov ebx,1 |
||
20 | int 0x40 |
||
21 | test eax,eax |
||
22 | je .draw_screen |
||
23 | dec eax |
||
24 | je .paint_window |
||
25 | |||
26 | or eax,-1 |
||
27 | int 0x40 |
||
28 | |||
29 | .draw_screen: |
||
30 | call blit_8_to_32 |
||
31 | mov al,7 |
||
32 | mov ebx,virtual_screen_32 |
||
33 | mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y |
||
34 | mov edx,(4 shl 16)+24 |
||
35 | int 0x40 |
||
36 | call rotate_pal |
||
37 | jmp .event_loop |
||
38 | |||
39 | .paint_window: |
||
40 | mov al,12 |
||
41 | push eax |
||
42 | xor ebx,ebx |
||
43 | inc ebx |
||
44 | int 0x40 |
||
45 | |||
46 | xor eax,eax |
||
47 | mov ebx,(100 shl 16)+(WND_SIZE_X+8) |
||
48 | mov ecx,(100 shl 16)+(WND_SIZE_Y+28) |
||
49 | mov edx,0x03000000 |
||
50 | int 0x40 |
||
51 | |||
52 | mov al,7 |
||
53 | mov ebx,virtual_screen_32 |
||
54 | mov ecx,(WND_SIZE_X shl 16)+WND_SIZE_Y |
||
55 | mov edx,(4 shl 16)+24 |
||
56 | int 0x40 |
||
57 | |||
58 | mov al,4 |
||
59 | mov ebx,0x00060006 |
||
60 | mov ecx,0x10ffffff |
||
61 | mov edx,window_title |
||
62 | mov esi,window_title_len |
||
63 | int 0x40 |
||
64 | |||
65 | pop eax |
||
66 | and ebx,2 ; bit 1 is set |
||
67 | int 0x40 |
||
68 | |||
69 | jmp .event_loop |
||
70 | |||
71 | init_palette: |
||
72 | mov edi,_palette |
||
73 | mov ecx,64 |
||
74 | xor eax,eax |
||
75 | .color1: |
||
76 | inc ah |
||
77 | mov al,ah |
||
78 | stosb |
||
79 | xor al,al |
||
80 | stosb |
||
81 | stosb |
||
82 | inc edi |
||
83 | loop .color1 |
||
84 | mov ecx,64 |
||
85 | push ecx |
||
86 | xor eax,eax |
||
87 | .color2: |
||
88 | mov al,63 |
||
89 | stosb |
||
90 | mov al,ah |
||
91 | stosb |
||
92 | xor al,al |
||
93 | stosb |
||
94 | inc ah |
||
95 | inc edi |
||
96 | loop .color2 |
||
97 | pop ecx |
||
98 | push ecx |
||
99 | xor eax,eax |
||
100 | .color3: |
||
101 | mov al,63 |
||
102 | stosb |
||
103 | stosb |
||
104 | mov al,ah |
||
105 | stosb |
||
106 | inc ah |
||
107 | inc edi |
||
108 | loop .color3 |
||
109 | pop ecx |
||
110 | mov eax,0x003f3f3f |
||
111 | rep stosd |
||
112 | ret |
||
113 | |||
114 | init_texture: |
||
115 | fldpi |
||
116 | mov [_fpom16],180 |
||
117 | fidiv [_fpom16] |
||
118 | fstp [_st_rad] |
||
119 | mov edi,virtual_screen_8 |
||
120 | cdq |
||
121 | .itex_vertical: |
||
122 | xor ecx,ecx |
||
123 | fld [_st_rad] |
||
124 | mov [_fpom16],5 |
||
125 | fimul [_fpom16] |
||
126 | mov [_fpom16],dx |
||
127 | fimul [_fpom16] |
||
128 | fsin |
||
129 | fmul [_multiplier] |
||
130 | fstp [_fpom32] |
||
131 | .itex_horizontal: |
||
132 | fld [_st_rad] |
||
133 | mov [_fpom16],3 |
||
134 | fimul [_fpom16] |
||
135 | mov [_fpom16],cx |
||
136 | fimul [_fpom16] |
||
137 | fsin |
||
138 | fmul [_multiplier] |
||
139 | fadd [_fpom32] |
||
140 | mov [_fpom16],127 |
||
141 | fiadd [_fpom16] |
||
142 | fistp [_fpom16] |
||
143 | mov ax,[_fpom16] |
||
144 | inc eax |
||
145 | stosb |
||
146 | inc ecx |
||
147 | cmp ecx,WND_SIZE_X |
||
148 | jne .itex_horizontal |
||
149 | inc edx |
||
150 | cmp edx,WND_SIZE_Y |
||
151 | jne .itex_vertical |
||
152 | ret |
||
153 | |||
154 | rotate_pal: |
||
155 | mov ebx,[_palette+4] |
||
156 | mov edi,_palette+4 |
||
157 | mov esi,_palette+8 |
||
158 | xor ecx,ecx |
||
159 | mov cl,255 |
||
160 | ; cld |
||
161 | rep movsd |
||
162 | mov [_palette+1020],ebx |
||
163 | ret |
||
164 | |||
165 | include "graph8.inc" |
||
166 | |||
167 | DATA |
||
168 | _multiplier dd 63.5 |
||
169 | |||
170 | window_title: |
||
171 | db 'Plasma' |
||
172 | window_title_len = $ - window_title |
||
173 | |||
174 | UDATA |
||
175 | _fpom32 rd 1 |
||
176 | _fpom16 rw 1 |
||
177 | _st_rad rd 1 |
||
178 | _palette: rd 256 |
||
179 | |||
180 | virtual_screen_8: |
||
181 | rb WND_SIZE_X*WND_SIZE_Y |
||
182 | |||
183 | virtual_screen_32: |
||
184 | rb WND_SIZE_X*WND_SIZE_Y*3 |
||
185 | |||
186 | MEOS_APP_END |