FTL
Retro Member
- Joined
- 4 Ιουλ 2007
- Μηνύματα
- 187
- Αντιδράσεις
- 10
Είναι ένα Binary Clock γραμμένο σε γλώσσα Assembly στον Fasm Assembler.
190 bytes, τρέχει σε Dos, DosBox Emulator, Windows 95/98/XP και πιθανόν Vista.
Ακολουθεί ο πλήρες κώδικας, ένα screenshot και το εκτελέσιμο com αρχείο.
Για όσους δεν γνωρίζουν πως δουλεύει ένα Binary Clock, η παρακάτω εικόνα θα βοηθήσει.
190 bytes, τρέχει σε Dos, DosBox Emulator, Windows 95/98/XP και πιθανόν Vista.
Ακολουθεί ο πλήρες κώδικας, ένα screenshot και το εκτελέσιμο com αρχείο.
Κώδικας:
; Binary Clock written by Nick Kouvaris
; http://lightforce.freestuff.gr
; Fasm Assembler v1.67.23
org 100h
mov ax,0003h ; clear screen - hide cursor
int 10h
mov ax,0103h
mov cx,2000h
int 10h
push 0b800h
pop es
main:
mov si,04dbh ; dark red color box
mov di,1126 ; first led position
call timee
mov ah,1
int 16h
jz main
int 20h
timee:
mov ah,02h ; time in bcd
int 1ah
mov bl,ch ; hour
call split
mov bl,cl ; minutes
call split
mov bl,dh ; seconds
call split
ret
split:
push bx ; split bcd value
shr bl,4
call status
pop bx
and bl,0fh
call status
ret
status:
push cx dx
xor dx,dx
mov al,bl
mov cx,2
div cx
cmp dx,1 ; case 1
jne @f
mov si,0cdbh ; light red color box
@@:
call led ; show led
cmp bl,2 ; case 2-3-6-7
jb @f
cmp bl,4
je @f
cmp bl,5
je @f
cmp bl,7
ja @f
mov si,0cdbh
@@:
call led
cmp bl,7 ; case <=7 >=4
ja @f
cmp bl,4
jb @f
mov si,0cdbh
@@:
call led
cmp bl,8 ; case >=8
jb @f
mov si,0cdbh
@@:
call led
add di,1286 ; next row
pop dx cx
ret
led:
cmp di,486 ; non visible leds
je off
cmp di,166
je off
cmp di,178
je off
cmp di,190
je off
show:
xchg ax,si
stosw
stosw
sub di,324 ; next led pos
mov si,04dbh
ret
off:
xor si,si
jmp show
Για όσους δεν γνωρίζουν πως δουλεύει ένα Binary Clock, η παρακάτω εικόνα θα βοηθήσει.