From 1bff75b733aee1aad99efc4bb2ad6fdc04cf1372 Mon Sep 17 00:00:00 2001 From: Yogev Ezra Date: Sat, 29 Jan 2011 20:21:42 +0000 Subject: [PATCH] Add bcdclk git-svn-id: svn://kolibrios.org@1798 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/demos/bcdclk/trunk/bcdclk.asm | 138 +++++++++++++++++++++++ programs/demos/bcdclk/trunk/build_en.bat | 5 + programs/demos/bcdclk/trunk/build_ru.bat | 5 + 3 files changed, 148 insertions(+) create mode 100644 programs/demos/bcdclk/trunk/bcdclk.asm create mode 100644 programs/demos/bcdclk/trunk/build_en.bat create mode 100644 programs/demos/bcdclk/trunk/build_ru.bat diff --git a/programs/demos/bcdclk/trunk/bcdclk.asm b/programs/demos/bcdclk/trunk/bcdclk.asm new file mode 100644 index 0000000000..60936eaa45 --- /dev/null +++ b/programs/demos/bcdclk/trunk/bcdclk.asm @@ -0,0 +1,138 @@ +; +; BCD CLOCK +; +; Compile with FASM for Menuet +; +; + +use32 + + org 0x0 + + db 'MENUET01' + dd 0x01 + dd START + dd I_END + dd 0x1000 + dd 0x1000 + dd 0x0 , 0x0 + +include 'lang.inc' +include '../../../macros.inc' + + +START: +red: + call drawwindow + +still: + + + mov eax,23 ; wait for timeout + mov ebx,50 + mcall + + cmp eax,1 ; redraw ? + je red + + cmp eax,3 ; button in buffer ? + je button + + call drawclock + + jmp still + +button: + mov al,17 ; get id + mcall + + cmp ah,1 ; button id=1 ? + jne noclose + or eax,-1 ; close this program + mcall + noclose: + + jmp still + +drawclock: + + mov eax,3 ; get time + mcall + 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,10*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 + mcall + 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 + mcall + 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 + mcall + popa + sub ebx,12*65536 + inc edi + cmp edi,dg1+6 + jne digitlp + ret + + +drawwindow: + + + mov eax,12 + mov ebx,1 ; start redraw + mcall + + xor eax,eax ; window + mov ebx,100*65536+107 + mov ecx,100*65536+105 + mov edx,0x34400088 + mov edi,title + mcall + +call drawclock + + mov eax,12 + mov ebx,2 ; end redraw + mcall + + ret + +title db 'BCD Clock',0 +I_END: +dg1: db ? \ No newline at end of file diff --git a/programs/demos/bcdclk/trunk/build_en.bat b/programs/demos/bcdclk/trunk/build_en.bat new file mode 100644 index 0000000000..bae8a8f595 --- /dev/null +++ b/programs/demos/bcdclk/trunk/build_en.bat @@ -0,0 +1,5 @@ +@erase lang.inc +@echo lang fix en >lang.inc +@fasm bcdclk.asm bcdclk +@erase lang.inc +@pause \ No newline at end of file diff --git a/programs/demos/bcdclk/trunk/build_ru.bat b/programs/demos/bcdclk/trunk/build_ru.bat new file mode 100644 index 0000000000..6aef5b7417 --- /dev/null +++ b/programs/demos/bcdclk/trunk/build_ru.bat @@ -0,0 +1,5 @@ +@erase lang.inc +@echo lang fix ru >lang.inc +@fasm bcdclk.asm bcdclk +@erase lang.inc +@pause \ No newline at end of file