Subversion Repositories Kolibri OS

Rev

Rev 2470 | Rev 2522 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2470 Rev 2499
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 2470 $
8
$Revision: 2499 $
9
 
9
 
10
; // Alver 22.06.2008 // {
10
; // Alver 22.06.2008 // {
11
align 4
11
align 4
Line 212... Line 212...
212
; edi = color 0x0RRGGBB
212
; edi = color 0x0RRGGBB
213
; ebp = font's header
213
; ebp = font's header
214
	pushad
214
	pushad
215
	mov	dx, word[edx]
215
	mov	dx, word[edx]
216
	movzx	ecx, dl
216
	movzx	ecx, dl
217
	test	dl, 0xE0	    ; ticks #32..255
217
	test	dl, 0xE0	  
218
	jz	.lntick.short
218
	jz	.lntick.short   ; ticks #0..31
219
	cmp	dl, 0xE0
219
	cmp	dl, 0xE0
220
	jae	.lntick.long
220
	jae	.lntick.long    ; ticks #224..255
221
	cmp	dl, 0xC0
221
	cmp	dl, 0xD8
222
	jae	.cstick
222
	jae	.cstick         ; ticks #216..223
223
.gptick:
223
.gptick:
224
	push	edx
224
	push	edx
-
 
225
	cmp	dl, 38
-
 
226
	jb	.sptick             ; special ticks #32-37
-
 
227
                                    ; general ticks #38..215 
225
	mov	cl, dh
228
	mov	cl, dh
226
	shr	cl, 3		    ; number of origin 
229
	shr	cl, 3		    ; number of origin
227
	mov	edx, [ebp+8]	    ; orig. table
230
	mov	edx, [ebp+8]	    ; orig. table
228
	mov	ch, byte[edx+ecx]   ; orig. coords
231
	mov	ch, byte[edx+ecx]   ; orig. coords
229
	pop	edx
232
	pop	edx
230
	mov	cl, dh
233
	mov	cl, dh
231
	and	cl, 7		    ; three rotation bits
234
	and	cl, 7		    ; three rotation bits
232
	movzx	edx, dl		    ; dl = gptick#
235
	movzx	edx, dl 	    ; dl = gptick#
233
	sub	dl, 32
236
	cmp	dl, 80
234
	cmp	dl, (sdsh_data.v5-sdsh_data.v1)
-
 
235
	jae	.gptick.2
237
	jae	.gptick.2
-
 
238
	sub	dl, 38
Line 236... Line 239...
236
 
239
 
237
.gptick.1:
240
.gptick.1:
238
	;  1-byte tickgroups .v1-v4:
241
	;  1-byte tickgroups .v1-v4:
239
	lea	esi, [sdsh_data.v1+edx]
242
	lea	esi, [sdsh_data.v1+edx]
240
	inc	dh
243
	inc	dh                ; dh = 1 vertex
241
	sub	dl, 2			; .v1 : 2 ticks only (#32, 33)
244
	sub	dl, 2			; .v1 : 2 ticks only (#38, 39)
242
	jae	.gptick.1v2v4
245
	jae	.gptick.1v2v4
243
	mov	dl, dh
246
	mov	dl, dh
244
	mov	dh, ch
247
	mov	dh, ch
Line 245... Line 248...
245
	jmp	.draw
248
	jmp	.draw
246
 
249
 
-
 
250
.gptick.1v2v4:
247
.gptick.1v2v4:
251
	; 1-byte tickgroups .v2-v4 : 8, 16 and 16 ticks
248
	; 1-byte tickgroups .v2-v4 : 8 ticks each
252
	inc	dh               ; dh = 2 vertice
249
	inc	dh
253
        add     dl, 8
Line 250... Line 254...
250
	shr	dl, 3			
254
	shr	dl, 4
251
	jmp	.gptick.done
255
	jmp	.gptick.done
252
 
-
 
253
.gptick.2:
256
 
254
	; 2-byte tickgroups .v5-v8: 8 ticks each
257
.gptick.2:
-
 
258
	; 2-byte tickgroups .v5-v8: 8 ticks each
255
	sub	dl, (sdsh_data.v5-sdsh_data.v1)
259
	cmp	dl, 112
256
	cmp	dl, (sdsh_data.v9-sdsh_data.v5)
260
	jae	.gptick.3
257
	jae	.gptick.3
261
	sub	dl, 80
258
	lea	esi, [sdsh_data.v5 + edx*2]
262
	lea	esi, [sdsh_data.v5 + edx*2]
Line 259... Line 263...
259
	mov	dh, 5
263
	mov	dh, 5
260
	shr	dl, 3
264
	shr	dl, 3
261
	jmp	.gptick.done
-
 
262
 
265
	jmp	.gptick.done
263
.gptick.3:
266
 
-
 
267
.gptick.3:
264
	; 3-byte tickgroups .v9-12: 4 ticks each
268
	; 3-byte tickgroups .v9-12: 4 ticks each
265
	sub	dl, (sdsh_data.v9-sdsh_data.v5)
269
	cmp	dl, 128
266
	cmp	dl, (sdsh_data.v13-sdsh_data.v9)
270
	jae	.gptick.4
267
	jae	.gptick.4
271
	sub	dl, 112
Line 268... Line 272...
268
	lea	esi, [sdsh_data.v9 + edx*2 + edx]
272
	lea	esi, [sdsh_data.v9 + edx*2 + edx]
269
	mov	dh, 9
273
	mov	dh, 9
270
	shr	dl, 2
274
	shr	dl, 2
-
 
275
	jmp	.gptick.done
271
	jmp	.gptick.done
276
 
272
 
-
 
273
.gptick.4:
277
.gptick.4:
274
	; 4-byte tickgroups .v13-16: 4 ticks each
278
	; 4-byte tickgroups .v13-16: 4 ticks each
275
	sub	dl, (sdsh_data.v13-sdsh_data.v9)
279
	cmp	dl, 128                 ; fix this when needed
Line 276... Line 280...
276
	cmp	dl, 16
280
	jae	.exit                   ; not implemented yet!
Line 350... Line 354...
350
	shr	cl, 4		    ; x
354
	shr	cl, 4		    ; x
351
	add	eax, ecx
355
	add	eax, ecx
352
	pop	ecx
356
	pop	ecx
353
	call	draw_tick
357
	call	draw_tick
354
.gptick.5:
358
.gptick.5:
-
 
359
.sptick:
355
.exit:
360
.exit:
356
	popad
361
	popad
357
	ret
362
	ret
Line 494... Line 499...
494
	pop	eax
499
	pop	eax
495
	ret
500
	ret
Line 496... Line 501...
496
 
501
 
497
align 4
502
align 4
498
diff16 "ch_putpix      : ",0,$
503
diff16 "ch_putpix      : ",0,$
499
ch_putpixel:
504
; ch_putpixel:
500
; eax = x coordinate
505
; eax = x coordinate
501
; ebx = y coordinate
506
; ebx = y coordinate
502
; edi = 0x0RRGGBB
507
; edi = 0x0RRGGBB
503
     push   edx
508
     push   edx
Line 506... Line 511...
506
     lea	edx, [edx+eax*4]
511
     lea	edx, [edx+eax*4]
507
     mov   [LFB_BASE+edx], edi
512
     mov   [LFB_BASE+edx], edi
508
     pop    edx
513
     pop    edx
509
     ret
514
     ret
510
;)
515
;)
-
 
516
ch_putpixel:
-
 
517
; test version!!! ===== to be removed!!
-
 
518
; eax = x coordinate
-
 
519
; ebx = y coordinate
-
 
520
; edi = 0x0RRGGBB
-
 
521
     push   edx
-
 
522
	 mov	edx, ebx
-
 
523
	shl	edx, 1
-
 
524
     imul	edx, [BytesPerScanLine]
-
 
525
     lea	edx, [edx+eax*8]
-
 
526
	add	edx, LFB_BASE
-
 
527
     mov   [edx], edi
-
 
528
	mov	[edx+4], edi
-
 
529
	sub	edx, [BytesPerScanLine]
-
 
530
	mov	[edx], edi
-
 
531
	mov	[edx+4], edi
-
 
532
     pop    edx
-
 
533
     ret
Line 511... Line 534...
511
 
534