Subversion Repositories Kolibri OS

Rev

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

Rev 1728 Rev 2027
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
; A unvwater demo
2
; A unvwater demo
3
; Programmed by Octavio Vega Fernandez
3
; Programmed by Octavio Vega Fernandez
4
; http://octavio.vega.fernandez.googlepages.com/CV4.HTM
4
; http://octavio.vega.fernandez.googlepages.com/CV4.HTM
5
; Converted to KolibriOS, By Asper
5
; Converted to KolibriOS, By Asper
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
7
 
8
use32
8
use32
9
	org	0x0
9
	org	0x0
10
 
10
 
11
	db	'MENUET00'	; 8 byte id
11
	db	'MENUET00'	; 8 byte id
12
	dd	38		; required os
12
	dd	38		; required os
13
	dd	STARTAPP	; program start
13
	dd	STARTAPP	; program start
14
	dd	I_END		; program image size
14
	dd	I_END		; program image size
15
	dd	0x100000	; required amount of memory
15
	dd	0x100000	; required amount of memory
16
	dd	0x00000000	; reserved=no extended header
16
	dd	0x00000000	; reserved=no extended header
17
 
17
 
18
include "aspapi.inc"
18
include "aspapi.inc"
19
SCREEN_WIDTH   equ    100h
19
SCREEN_WIDTH   equ    100h
20
SCREEN_HEIGHT  equ    100h
20
SCREEN_HEIGHT  equ    100h
21
 
21
 
22
 
22
 
23
STARTAPP:
23
STARTAPP:
24
 
24
 
25
  mov  eax, 18	  ;Get CPU speed
25
  mov  eax, 18	  ;Get CPU speed
26
  mov  ebx, 5
26
  mov  ebx, 5
27
  int  0x40
27
  int  0x40
28
  shr  eax, 28
28
  shr  eax, 28
29
  mov  dword [delay], eax
29
  mov  dword [delay], eax
30
 
30
 
31
init_palette:
31
init_palette:
32
  mov  edi, Paleta
32
  mov  edi, Paleta
33
  ;xor  eax, eax
33
  ;xor  eax, eax
34
  mov  eax, 0x40
34
  mov  eax, 0x40
35
@@:
35
@@:
36
  stosd
36
  stosd
37
  inc  al
37
  inc  al
38
  jnz  @b
38
  jnz  @b
39
 
39
 
40
MAIN:
40
MAIN:
41
l1:
41
l1:
42
  xor  esi, esi
42
  xor  esi, esi
43
l11:
43
l11:
44
  xor  ebx, ebx
44
  xor  ebx, ebx
45
  mov  edx, 303h
45
  mov  edx, 303h
46
  sub  esi, 101h
46
  sub  esi, 101h
47
l2:
47
l2:
48
  and  esi, 0xFFFF ;esi=si
48
  and  esi, 0xFFFF ;esi=si
49
  add  bl,  [esi+img]
49
  add  bl,  [esi+img]
50
  adc  bh,  ah
50
  adc  bh,  ah
51
  inc  esi
51
  inc  esi
52
  dec  dh
52
  dec  dh
53
  jnz  l2
53
  jnz  l2
54
 
54
 
55
  mov  dh, 3
55
  mov  dh, 3
56
  add  esi, 100h-3
56
  add  esi, 100h-3
57
  dec  dl
57
  dec  dl
58
  jnz  l2
58
  jnz  l2
59
  sub  esi, 1ffh
59
  sub  esi, 1ffh
60
  and  esi, 0xFFFF ;esi=si
60
  and  esi, 0xFFFF ;esi=si
61
 
61
 
62
  mov  al, [img+esi]
62
  mov  al, [img+esi]
63
  sub  bx, ax
63
  sub  bx, ax
64
  shl  ax, 2
64
  shl  ax, 2
65
  sub  bx, ax
65
  sub  bx, ax
66
  shr  bx, 2
66
  shr  bx, 2
67
 
67
 
68
  mov  ax, bx
68
  mov  ax, bx
69
  shr  ax, 7
69
  shr  ax, 7
70
  sub  bx, ax
70
  sub  bx, ax
71
  mov  [img+esi], bl
71
  mov  [img+esi], bl
72
  inc  si
72
  inc  si
73
  jnz  l11
73
  jnz  l11
74
 
74
 
75
  call	copy_buffer_to_video
75
  call	copy_buffer_to_video
76
 
76
 
77
 
77
 
78
still:
78
still:
79
	mov	eax, 11 	    ; Test if there is an event in the queue.
79
	mov	eax, 11 	    ; Test if there is an event in the queue.
80
	int	0x40
80
	int	0x40
81
 
81
 
82
	cmp	al,1		      ; redraw request ?
82
	cmp	al,1		      ; redraw request ?
83
	jz	red
83
	jz	red
84
	cmp	al,2		      ; key in buffer ?
84
	cmp	al,2		      ; key in buffer ?
85
	jz	key
85
	jz	key
86
	cmp	al,3		      ; button in buffer ?
86
	cmp	al,3		      ; button in buffer ?
87
	jz	button
87
	jz	button
88
 
88
 
89
	jmp	MAIN
89
	jmp	MAIN
90
 
90
 
91
red:
91
red:
92
	call	draw_window
92
	call	draw_window
93
	jmp	MAIN
93
	jmp	MAIN
94
 
94
 
95
 
95
 
96
key:
96
key:
97
	mov	eax, 2
97
	mov	eax, 2
98
	int	0x40
98
	int	0x40
99
	cmp	ah, 27		    ; Test Esc in ASCII
99
	cmp	ah, 27		    ; Test Esc in ASCII
100
	je	close_app
100
	je	close_app
101
	jmp	MAIN
101
	jmp	MAIN
102
 
102
 
103
button:
103
button:
104
	mov	eax, 17 	    ; Get pressed button code
104
	mov	eax, 17 	    ; Get pressed button code
105
	int	0x40
105
	int	0x40
106
	cmp	ah, 1		    ; Test x button
106
	cmp	ah, 1		    ; Test x button
107
	je	close_app
107
	je	close_app
108
	jmp	MAIN
108
	jmp	MAIN
109
 
109
 
110
draw_window:
110
draw_window:
111
	start_draw_window 100,70,SCREEN_WIDTH+10,SCREEN_HEIGHT+5,0x14224466,labelt;, 14;labellen-labelt
111
	start_draw_window 100,70,SCREEN_WIDTH+9,SCREEN_HEIGHT+4,0x74224466,labelt;, 14;labellen-labelt
112
	mov	dword [skin_h], eax
-
 
113
	end_draw_window
112
	end_draw_window
114
ret
113
ret
115
 
114
 
116
 
115
 
117
fail:
116
fail:
118
	; Type something here.
117
	; Type something here.
119
close_app:
118
close_app:
120
	mov	eax, -1  ; close this program
119
	mov	eax, -1  ; close this program
121
	int	0x40
120
	int	0x40
122
 
121
 
123
 
122
 
124
 
123
 
125
copy_buffer_to_video:
124
copy_buffer_to_video:
126
	pusha
125
	pusha
127
    ;    mov     eax, 18 ;@WAITVSYNC();
126
    ;    mov     eax, 18 ;@WAITVSYNC();
128
    ;    mov     ebx, 14
127
    ;    mov     ebx, 14
129
    ;    int     0x40
128
    ;    int     0x40
130
	mov	eax, 5	;delay
129
	mov	eax, 5	;delay
131
	mov	ebx, dword [delay]
130
	mov	ebx, dword [delay]
132
	int	0x40
131
	int	0x40
133
 
132
 
134
	mov	eax, dword [skin_h]
133
	mov	eax, 0 ;dword [skin_h]
135
	lea	edx, [5*65536+eax]
134
	lea	edx, [0*65536+eax]
136
 
135
 
137
	mov	eax, 65
136
	mov	eax, 65
138
	mov	ebx, img
137
	mov	ebx, img
139
	mov	ecx, SCREEN_WIDTH*65536+SCREEN_HEIGHT ;ecx = w*65536+h
138
	mov	ecx, SCREEN_WIDTH*65536+SCREEN_HEIGHT ;ecx = w*65536+h
140
       ; mov     edx, 5*65536+25 ;edx = x*65536+y
139
       ; mov     edx, 5*65536+25 ;edx = x*65536+y
141
	mov	esi, 8
140
	mov	esi, 8
142
	mov	edi, Paleta
141
	mov	edi, Paleta
143
	xor	ebp, ebp
142
	xor	ebp, ebp
144
	int	0x40
143
	int	0x40
145
	popa
144
	popa
146
ret
145
ret
147
 
146
 
148
; DATA AREA
147
; DATA AREA
149
 
148
 
150
; Application Title
149
; Application Title
151
labelt	 db   'UnvWater demo',0
150
labelt	 db   'UnvWater demo',0
152
delay	 dd   0
151
delay	 dd   0
153
skin_h	 dd   25 ; Skin height.
152
skin_h	 dd   25 ; Skin height.
154
 
153
 
155
I_END:
154
I_END:
156
Paleta	 rb 1024
155
Paleta	 rb 1024
157
img	 db 1
156
img	 db 1
158
	 rb 10000h
157
	 rb 10000h