Archiwum kategorii 'Kody źródłowe'

GGArchivesView v0.1

ggarchivesview_screenProgram służący do przeglądania zawartości plików archives.dat czyli plików będących archiwum wiadomości oficjalnego klienta protokołu Gadu-Gadu dla Linuksa i podobnych. Napisany w przeciągu 3 dni, w C++ przy użyciu owoców wiedzy Andrzeja Szombierskiego w postaci napisanej przez niego klasy do obsługi tego formatu (opublikowanej na licencji GPL) oraz gtkmm do budowy interfacu. Program testowany na archiwum z wersji 6 klienta Gadu-Gadu, na Ubuntu 8.04.

Instalacja:

  • Wypakowujemy i przechodzimy do katalogu z źródłem
  • ./autogen.sh
  • ./configure
  • make
  • sudo make install
  • Odpalamy: ggarchivesview

Pobierz źródła GGArchivesView v0.1

Dywan Sierpińskiego

Może przytoczę fragment Wikipedii:

Dywan Sierpińskiego to fraktal otrzymany z kwadratu za pomocą podzielenia go na dziewięć (3×3) mniejszych kwadratów, usunięcia środkowego kwadratu i ponownego rekurencyjnego zastosowania tej samej procedury do każdego z pozostałych ośmiu kwadratów.

Poniżej prezentuje owoce prac powstałych z chwilowego “natchnienia” do grafiki: program napisany przy użyciu bibliotek Gtkmm (interface) i Cairo (rysowanie) w C++ generujący krzywą (sic!) nazywaną “Dywanem Sierpińskiego” – na cześć polskiego matematyka, Wacława Sierpińskiego.

Programik powstał w jedna nockę i 1/5 przedpołudnia, z czego większość kodu to interface… Co do algorytmu plecenia dywanu to jest on autorstwa własnego, między innymi stąd ta pewna niedokładność. W planach mam dodanie kilku funkcjonalności podrzuconych mi przez pewną osobę. Poniżej prezentuje kilka screenów:

Poza sesją: Najlepsze jest to że pole tego fraktala wynosi 0…

Pobierz kod źródłowy (z chomikuj.pl)

Wartość liczby w systemie dziesiętnym

Kod źródłowy programu przeliczającego wartość podaną w systemie o danej podstawie (największa cyfra to ‘Z’) , na wartość w systemie dziesiętnym wg. schematu Hornera, napisany w C++. Może komuś się przyda na jakieś zaliczenie albo coś…

Pobierz kod źródłowy (na chomikuj.pl)

Mp3TagUnit

Tym razem, dzielę się z Wami, napisanym przeze mnie jakiś czas temu, modułem do odczytywania tagu z plików mp3. Planowana była również obsługa dodawania i edycji tagu, co widać w źródle, ale jak na razie skończyło się tylko na planowaniu. Może ktoś będzie zainteresowany dopisaniem tej funkcjonalności ? Wybaczcie brak komentarzy, ale myślę że nazwy funkcji i typów mówią same za siebie :)

Aha, moduł był pisany z myślą o FreePascalu, choć nie powinno być również problemu z dostosowaniem go do innego dialektu ;) . Pozatym, chciałem uniknąć, dołaczania dodatkowych modułów, stąd własnoręcznie pisane funkcję: FileExists czy IntToStr… Kod oczywiście na licencji LGPL;p

Źródło na chomikuj.pl lub Nopaste

Kolejne źródło: Quiz w ASM

Kolejne wyciągnięte i publikowane przez mnie źródło, może się komuś przyda: prosty quiz z 3 pytaniami napisany w ASM, jeśli mnie pamięć nie myli w MASM’ie.


.model tiny
.code
org 100h

start:
jmp begin

new_ln:
mov ah, 09h
mov dx, offset ln
int 21h
ret

WriteLn:
mov ah, 09h
int 21h
call new_ln
ret

rowne:
Inc true_odp
mov dx, offset yes
call WriteLn
ret

nie_rowne:
Inc false_odp
mov dx, offset no
call WriteLn
ret

Readln:
mov ah, 0ah
mov dx, offset read_odp
int 21h
call new_ln
ret

spr:
mov si, (offset read_odp) + 2
repe cmpsb
jz rowne
jnz nie_rowne
ret

Write_NrPyt:
push dx

call new_ln

mov ah, 09h
mov dx, offset stat3
int 21h

pop dx
mov dl, [pyt]
add dl, 48
mov ah, 02h
int 21h

call new_ln

inc pyt
ret

begin:

mov dx, offset s2
call WritelN
call new_ln

call Write_NrPyt

;Pytanie nr. 1
mov dx, offset pyt1
call WriteLn;Wyswietl pytanie

call ReadLn; Wczytaj odpowiedŸ

mov di, offset odp1; sprawdŸ
mov cx, odp1_dl
call spr

call Write_NrPyt
;Pytanie nr. 2
mov dx, offset pyt2
call WriteLn
call ReadLn
mov di, offset odp2
mov cx, odp2_dl
call spr

call Write_NrPyt
;Pytanie nr. 3
mov dx, offset pyt3
call WriteLn
call ReadLn
mov di, offset odp3
mov cx, odp3_dl
call spr

call new_ln
mov dx, offset s1
call WriteLn
call new_ln

mov ah, 09h
mov dx, offset stat1
int 21h

mov ah, 02h
mov dl, [true_odp]
add dl, 48
int 21h

call new_ln

mov ah, 09h
mov dx, offset stat2
int 21h

mov ah, 02h
mov dl, [false_odp]
add dl, 48
int 21h

call new_ln

mov ah, 09h
mov dx, offset line
int 21h

mov dx, offset autor
call WriteLn

mov ah, 08h
int 21h

;koniec programu
mov ah, 4ch
int 21h

;"________DANE:______________________________________"
;PYTANIA:
pyt1 db "Rozszyfroj skrot SCT...$"
odp1 db "S&N Coders Team"
odp1_dl equ ($ - odp1)

pyt2 db "Ile jest rejestrow ogolnego przeznaczenia ktore da sie podzielic na rejestry 8 bitowe? $"
odp2 db "4"
odp2_dl equ ($ - odp2)

pyt3 db "Jaki jest przesumiecie programu typu .com w danym segmęcie (podaj w systemie szesnastkowym) ?$"
odp3 db "100"
odp3_dl equ ($ - odp3)

;Do procedur:
yes db "Prawidlowa odpowiedz$"
no db "Bledna odpowiedz$"
ln db 13,10,"$"

s1 db "================================KONIEC================================$"
s2 db "=================================Quiz=================================$"

stat1 db "Poprawnych odpowiedzi: $"
stat2 db "Blednych odpowiedzi: $"
stat3 db "Pytanie nr. $"

line db 80 dup("_"),"$"
autor db 10,13,"Created by Adawo (S&N Coders Team)$"

pyt db 1
true_odp db 0
false_odp db 0

read_odp db 22
db 0
db 25 dup ("$")

end start

Wyświetlanie daty w Assemblerze

Program napisany za czasów gdy uczyłem się programowania w assemblerze. Jak tytuł wskazuje wyświetla aktualną datę, więc raczej nic zaawansowanego, ale komuś się może przyda… Eh, muszę kiedyś wrócić do tego pięknego języka :)

;program wyświtlający aktualna date

.model tiny
.code
org 100h

start:

    jmp begin

    w_znak:
        push ax
        push bx

        mov ah, 0eh
        mov bx, 0
        int 10h

        pop bx
        pop ax
    ret

    w_data:
        push ax
        push bx

        xor ah, ah

        mov bh, 10
        div bh

        add al,'0'
        call w_znak
        mov al, ah
        add al, '0'
        call w_znak

        pop bx
        pop ax
     ret     

    data: 

        mov ah, 09h
        mov dx, offset s1
        int 21h

        mov ah, 2ah
        int 21h

        mov al, dl
        call w_data
        mov al,'.'
        call w_znak

        mov al, dh
        call w_data
        mov al, '.'
        call w_znak 

        sub cx, 1900
        cmp cl, 100
        jb przed2tys
        jnb po2tys

        po2tys:
            mov al, 20
            call w_data
            sub cl, 100
            call przed2tys
        ret

        przed2tys:
            mov al, cl
            call w_data
         ret     

    ret

    begin:      
            call data     

            mov ax, 4c00h
            int 21h

    s1 db "Witaj! Dzisiaj mamy: $"     
end start