Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 108 → Rev 109

/programs/demos/bcdclk/bcdclk/bcdclk.asm
0,0 → 1,157
;
; BCD CLOCK
;
; Compile with FASM for Menuet
;
;
 
use32
 
org 0x0
 
db 'MENUET01'
dd 0x01
dd START
dd I_END
dd 0x100000
dd 0x7fff0
dd 0x0 , 0x0
 
include "lang.inc"
include "macros.inc"
 
 
START:
 
call drawwindow
 
still:
 
 
mov eax,23 ; wait for timeout
mov ebx,50
int 0x40
 
cmp eax,1 ; redraw ?
je red
 
cmp eax,3 ; button in buffer ?
je button
 
call drawclock
 
jmp still
 
red: ; redraw
call drawwindow
jmp still
 
button:
mov eax,17 ; get id
int 0x40
 
cmp ah,1 ; button id=1 ?
jne noclose
mov eax,-1 ; close this program
int 0x40
noclose:
 
jmp still
 
drawclock:
 
mov eax,3 ; get time
int 0x40
bswap eax
shr eax,8
mov edi,dg1
mov ecx,6
dgtomem:
push eax
and al,15
mov [edi],al
inc edi
pop eax
shr eax,4
loop dgtomem
mov ebx,74*65536+10
mov edi,dg1
digitlp:
mov ecx,30*65536+10
xor esi,esi
plotlp:
xor edx,edx
test byte[edi],8
je nobit
mov edx,0x00ff0000
nobit:
mov eax,13 ; plot 8,4,2,1
int 0x40
add ecx,12*65536
shl byte[edi],1
inc esi
cmp esi,4
jne plotlp
shr byte[edi],4
mov edx,0x00880040
mov eax,13 ; draw digit box
int 0x40
pusha
mov edx,ebx
and edx,0xffff0000
shr ecx,16
or edx,ecx
add edx,3*65536+2
mov ebx,0x00010100
mov ecx,[edi]
mov esi,0x00ffffff
mov eax,47 ; display decimal
int 0x40
popa
sub ebx,12*65536
inc edi
cmp edi,dg1+6
jne digitlp
ret
 
 
drawwindow:
 
 
mov eax,12
mov ebx,1 ; start redraw
int 0x40
 
mov eax,0 ; window
mov ebx,100*65536+100
mov ecx,100*65536+100
mov edx,0x83400088
mov esi,0x805080d0
mov edi,0x000000ff
int 0x40
 
call drawclock
 
mov eax,4 ; text
mov ebx,8*65536+8
mov ecx,0x10ddeeff
mov edx,title
mov esi,title-titlend
int 0x40
 
 
mov eax,12
mov ebx,2 ; end redraw
int 0x40
 
ret
 
 
 
title:
db 'BCD Clock'
titlend:
 
dg1: db ?
 
I_END:
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property