Subversion Repositories Kolibri OS

Rev

Rev 2490 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2490 Rev 2492
1
;  (Ü) ( ) Ü ) ( )   256b intro by baze/3SC for Syndeecate 2001   use NASM to
1
;  (Ü) ( ) Ü ) ( )   256b intro by baze/3SC for Syndeecate 2001
2
;  ßÛß ÛÜÛ ÛÛÛ ÛÛÜ   loveC: thanks, Serzh: eat my socks dude ;]   compile the
2
;  ßÛß ÛÜÛ ÛÛÛ ÛÛÜ   loveC: thanks, Serzh: eat my socks dude ;]
3
;  ( ) ( ) ( ) ( )   e-mail: baze@stonline.sk, web: www.3SC.sk    source code
3
;  ( ) ( ) ( ) ( )   e-mail: baze@stonline.sk, web: www.3SC.sk
4
 
4
 
5
;  Menuet port by VT
5
;  Menuet port by VT
6
 
6
 
7
appname equ 'TUBE - FPU'
7
appname equ 'TUBE - FPU'
8
 
8
 
9
use32
9
use32
10
             org  0x0
10
             org  0x0
11
 
11
 
12
             db   'MENUET01'
12
             db   'MENUET01'
13
             dd   0x01
13
             dd   0x01
14
             dd   START
14
             dd   START
15
             dd   I_END
15
             dd   I_END
16
             dd   0x40000
16
             dd   0x40000
17
             dd   0x40000
17
             dd   0x40000
18
             dd   0,0
18
             dd   0,0
19
 
19
 
20
include '..\..\..\macros.inc'
20
include '..\..\..\macros.inc'
21
 
21
 
22
START:
22
START:
23
 
23
 
24
   call draw_window
24
   call draw_window
25
 
25
 
26
   call init_tube
26
   call init_tube
27
 
27
 
28
   push ebx
28
   push ebx
29
 
29
 
30
still:
30
still:
31
 
31
 
32
   pop  ebx
32
   pop  ebx
33
 
33
 
34
   call MAIN
34
   call MAIN
35
 
35
 
36
   push ebx
36
   push ebx
37
 
37
 
38
   mov  eax,23
38
   mov  eax,23
39
   mov  ebx,1
39
   mov  ebx,1
40
   mcall
40
   mcall
41
 
41
 
42
   cmp  eax,1
42
   cmp  eax,1
43
   jne  no_red
43
   jne  no_red
44
   call draw_window
44
   call draw_window
45
   jmp  still
45
   jmp  still
46
  no_red:
46
  no_red:
47
 
47
 
48
   cmp  eax,0
48
   cmp  eax,0
49
   je   still
49
   je   still
50
 
50
 
51
   or   eax,-1
51
   or   eax,-1
52
   mcall
52
   mcall
53
 
53
 
54
SCREEN  equ 160
54
SCREEN  equ 160
55
PIXBUF  equ 200h
55
PIXBUF  equ 200h
56
EYE     equ EYE_P-2
56
EYE     equ EYE_P-2
57
 
57
 
58
 
58
 
59
MAIN:
59
MAIN:
60
 
60
 
61
 add    bh,10;8
61
 add    bh,10;8
62
 mov    edi,PIXBUF
62
 mov    edi,PIXBUF
63
 fadd   dword [di-PIXBUF+TEXUV-4]
63
 fadd   dword [di-PIXBUF+TEXUV-4]
64
 push   di
64
 push   di
65
 mov    dx,-80
65
 mov    dx,-80
66
 
66
 
67
TUBEY:
67
TUBEY:
68
 
68
 
69
 mov    bp,-160
69
 mov    bp,-160
70
 
70
 
71
TUBEX:
71
TUBEX:
72
 
72
 
73
 mov    si,TEXUV
73
 mov    si,TEXUV
74
 fild   word [si-TEXUV+EYE]
74
 fild   word [si-TEXUV+EYE]
75
 mov    [si],bp
75
 mov    [si],bp
76
 fild   word [si]
76
 fild   word [si]
77
 mov    [si],dx
77
 mov    [si],dx
78
 fild   word [si]
78
 fild   word [si]
79
 mov    cl,2
79
 mov    cl,2
80
 
80
 
81
ROTATE:
81
ROTATE:
82
 
82
 
83
 fld    st3
83
 fld    st3
84
 fsincos
84
 fsincos
85
 fld    st2
85
 fld    st2
86
 fmul   st0,st1
86
 fmul   st0,st1
87
 fld    st4
87
 fld    st4
88
 fmul   st0,st3
88
 fmul   st0,st3
89
 db     0xde,0xe9 ; fsubp   st1,st0
89
 db     0xde,0xe9 ; fsubp   st1,st0
90
 db     0xd9,0xcb ; fxch    st3
90
 db     0xd9,0xcb ; fxch    st3
91
 fmulp  st2,st0
91
 fmulp  st2,st0
92
 fmulp  st3,st0
92
 fmulp  st3,st0
93
 faddp  st2,st0
93
 faddp  st2,st0
94
 db     0xd9,0xca ; fxch    st2
94
 db     0xd9,0xca ; fxch    st2
95
 
95
 
96
 loop   ROTATE
96
 loop   ROTATE
97
 
97
 
98
 fld    st1
98
 fld    st1
99
 db     0xdc,0xc8 ; fmul    st0,st
99
 db     0xdc,0xc8 ; fmul    st0,st
100
 fld    st1
100
 fld    st1
101
 db     0xdc,0xc8 ; fmul    st0,st
101
 db     0xdc,0xc8 ; fmul    st0,st
102
 faddp  st1,st0
102
 faddp  st1,st0
103
 fsqrt
103
 fsqrt
104
 db     0xde,0xfb ; fdivp   st3,st0
104
 db     0xde,0xfb ; fdivp   st3,st0
105
 fpatan
105
 fpatan
106
 fimul  word [si-4]
106
 fimul  word [si-4]
107
 fistp  word [si]
107
 fistp  word [si]
108
 fimul  word [si-4]
108
 fimul  word [si-4]
109
 fistp  word [si+1]
109
 fistp  word [si+1]
110
 mov    si,[si]
110
 mov    si,[si]
111
 
111
 
112
 lea    ax,[bx+si]
112
 lea    ax,[bx+si]
113
 add    al,ah
113
 add    al,ah
114
 and    al,64
114
 and    al,64
115
 mov    al,-5
115
 mov    al,-5
116
 jz     STORE_1
116
 jz     STORE_1
117
 
117
 
118
 shl    si,2
118
 shl    si,2
119
 lea    ax,[bx+si]
119
 lea    ax,[bx+si]
120
 sub    al,ah
120
 sub    al,ah
121
 mov    al,-16
121
 mov    al,-16
122
 jns    STORE_1
122
 jns    STORE_1
123
 
123
 
124
 shl    si,1
124
 shl    si,1
125
 mov    al,-48
125
 mov    al,-48
126
 
126
 
127
STORE_1:
127
STORE_1:
128
 
128
 
129
; add    al,[ebx+esi+0x80000]
129
; add    al,[ebx+esi+0x80000]
130
 add    [di],al
130
 add    [di],al
131
 inc    di
131
 inc    di
132
 
132
 
133
 inc    bp
133
 inc    bp
134
 cmp    bp,160
134
 cmp    bp,160
135
 
135
 
136
EYE_P:
136
EYE_P:
137
 
137
 
138
 jnz    TUBEX
138
 jnz    TUBEX
139
 inc    dx
139
 inc    dx
140
 cmp    dx,80
140
 cmp    dx,80
141
 jnz    TUBEY
141
 jnz    TUBEY
142
 
142
 
143
 call   display_image
143
 call   display_image
144
 
144
 
145
 pop    si
145
 pop    si
146
 mov    ch,SCREEN*320/256
146
 mov    ch,SCREEN*320/256
147
 
147
 
148
BLUR:
148
BLUR:
149
 
149
 
150
 inc    si
150
 inc    si
151
 sar    byte [si],2
151
 sar    byte [si],2
152
 loop   BLUR
152
 loop   BLUR
153
 
153
 
154
 ret
154
 ret
155
 
155
 
156
 
156
 
157
 
157
 
158
display_image:
158
display_image:
159
 
159
 
160
  pusha
160
  pusha
161
 
161
 
162
  mov esi,PIXBUF
162
  mov esi,PIXBUF
163
  mov edi,0x10000
163
  mov edi,0x10000
164
 newp:
164
 newp:
165
  movzx edx,byte [esi]
165
  movzx edx,byte [esi]
166
  shl edx,4
166
  shl edx,4
167
;  mov dh,dl
167
;  mov dh,dl
168
  mov [edi],edx
168
  mov [edi],edx
169
 
169
 
170
  add edi,3
170
  add edi,3
171
  inc esi
171
  inc esi
172
 
172
 
173
  cmp esi,320*160+PIXBUF
173
  cmp esi,320*160+PIXBUF
174
  jbe newp
174
  jbe newp
175
 
175
 
176
  mov eax,7
176
  mov eax,7
177
  mov ecx,320*65536+160
177
  mov ecx,320*65536+160
178
  xor edx,edx
178
  xor edx,edx
179
  mov ebx,0x10000
179
  mov ebx,0x10000
180
  mcall
180
  mcall
181
 
181
 
182
  popa
182
  popa
183
  ret
183
  ret
184
 
184
 
185
 
185
 
186
 
186
 
187
draw_window:
187
draw_window:
188
 
188
 
189
     pusha
189
     pusha
190
 
190
 
191
     mov  eax,12
191
     mcall 12, 1
192
     mov  ebx,1
192
	 mcall 48, 4 ;get skin width
193
     mcall
193
	 lea  ecx,[100*65536+164+eax]
194
     xor  eax,eax
194
     xor  eax,eax
195
     mov  ebx,100*65536+329
195
     mov  ebx,100*65536+329
196
     mov  ecx,100*65536+186
-
 
197
     mov  edx,0x74000000
196
     mov  edx,0x74000000
198
     mov  edi,title
197
     mov  edi,title
199
     mcall
198
     mcall
200
     mov  eax,12
199
     mcall 12, 2
201
     mov  ebx,2
-
 
202
     mcall
-
 
203
     popa
200
     popa
204
     ret
201
     ret
205
 
202
 
206
title db appname,0
203
title db appname,0
207
 
204
 
208
db 41,0,0xC3,0x3C
205
db 41,0,0xC3,0x3C
209
 
206
 
210
TEXUV:
207
TEXUV:
211
 
208
 
212
init_tube:
209
init_tube:
213
 
210
 
214
  mov ecx,256
211
  mov ecx,256
215
 
212
 
216
PAL1:
213
PAL1:
217
 
214
 
218
  mov dx,3C8h
215
  mov dx,3C8h
219
  mov ax,cx
216
  mov ax,cx
220
  inc dx
217
  inc dx
221
  sar al,1
218
  sar al,1
222
  js PAL2
219
  js PAL2
223
  mul al
220
  mul al
224
  shr ax,6
221
  shr ax,6
225
 
222
 
226
PAL2:
223
PAL2:
227
 
224
 
228
  mov al,0
225
  mov al,0
229
  jns PAL3
226
  jns PAL3
230
  sub al,cl
227
  sub al,cl
231
  shr al,1
228
  shr al,1
232
  shr al,1
229
  shr al,1
233
 
230
 
234
PAL3:
231
PAL3:
235
 
232
 
236
  mov bx,cx
233
  mov bx,cx
237
  mov [ebx+0x1000],bh
234
  mov [ebx+0x1000],bh
238
  loop PAL1
235
  loop PAL1
239
  mov  ecx,256
236
  mov  ecx,256
240
 
237
 
241
TEX:
238
TEX:
242
 
239
 
243
  mov bx,cx
240
  mov bx,cx
244
  add ax,cx
241
  add ax,cx
245
  rol ax,cl
242
  rol ax,cl
246
  mov dh,al
243
  mov dh,al
247
  sar dh,5
244
  sar dh,5
248
  adc dl,dh
245
  adc dl,dh
249
  adc dl,[ebx+255+0x1000]
246
  adc dl,[ebx+255+0x1000]
250
  shr dl,1
247
  shr dl,1
251
  mov [ebx+0x1000],dl
248
  mov [ebx+0x1000],dl
252
  not bh
249
  not bh
253
  mov [ebx+0x1000],dl
250
  mov [ebx+0x1000],dl
254
  loop TEX
251
  loop TEX
255
 
252
 
256
  fninit
253
  fninit
257
  fldz
254
  fldz
258
 
255
 
259
  ret
256
  ret
260
 
257
 
261
 
258
 
262
I_END:
259
I_END: