home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 July
/
Chip_1998-07_cd.bin
/
ctenari
/
Labyrint
/
DATA
/
FREE
/
SVATEK.RAR
/
SVATEK.O2
< prev
next >
Wrap
Text File
|
1994-09-12
|
20KB
|
782 lines
.model tiny
.code
org 100h
start:
mov ah, 2ah ; cti systemove datum
int 21h
; ulozeni soucasneho data
mov sden, dl ; den
mov smesic, dh ; mesic
mov srok, cx ; rok
; datum na zjisteni svatku
mov ndent, al ; den v tydnu
mov nden, dl ; den
mov nmesic, dh ; mesic
mov nrok, cx ; rok
mov ah, 2fh ; cti pocatek DTA
int 21h
mov al, byte ptr es:[bx] ; al - delka parametru
cmp al, 0 ; zjisti je-li parametr
je preved ; neni-li jdi az na prevod
; je-li, tak ho preved na datum
mezery:
inc bx ; posun na prvni znak parametru
mov dl, byte ptr es:[bx] ; je-li znak mezera, tak jeste nejsem na datumu
cmp dl, 20h
je mezery
sub dl, 30h ; Ord(znak v dl)
; --- upravicka
cmp byte ptr es:[bx+1], '0' ; je-li nasledujici znak >= "0" pak mame den
jae den2
; ---
mesic:
mov nden, dl ; nyni mame v nden den
inc bx
inc bx ; posun na 1 znak mesice
mov dh, byte ptr es:[bx] ; do dh znak na pozici es:[bx]
sub dh, 30h ; Ord(znak v dh)
; --- upravicka
cmp byte ptr es:[bx+1], '0' ; je-li nasledujici znak >= "0" pak mame mesic
jae mesic2
; ---
rok:
mov nmesic, dh ; nyni mame v nmesic mesic
inc bx
inc bx ; posun na 1 znak roku
; --- upravicka
and word ptr es:[bx],0CFCFh
and word ptr es:[bx+2],0CFCFh
mov cl, byte ptr es:[bx]
xor ch, ch
mov bp, dx
mov ax, 3e8h
mul cx ; * 1000
mov cx, ax ; v cx nyni prvni cifra roku * 1000
mov ax, 64h
mul byte ptr es:[bx+1] ; * 100
add cx, ax ; do cx nyni pridana 2. cifra roku * 100
mov ax, 0ah
mul byte ptr es:[bx+2] ; * 10
add cx, ax ; do cx nyni pridana 3. cifra roku * 10
mov al, byte ptr es:[bx+3]
xor ah, ah
add cx, ax ; a konecne i posledni cifra
mov nrok, cx
mov dx, bp
mov ah, 2bh ; nastavime systemove datum,
int 21h ; abychom zjistili den v tydnu
cmp al, 0ffh
jne zjisti
jmp errdat
preved: ; at ten bordel vali
mov ah, 2
mov dl, 'V'
int 21h
mov al, ndent
cmp al, 3
je ve
cmp al, 4
je ve
jmp v
den2: ; neprehledno, ale jump by nebyl near
mov al, 0ah
mul dl ; * 10
mov dl, al
mov cl, byte ptr es:[bx+1] ; do cl znak na pozici es:[bx+1]
sub cl, 30h ; Ord(znak v cl)
add dl, cl ; 1. cifra * 10 + 2. cifra
inc bx
jmp mesic
mesic2:
mov al, 0ah
mul dh ; * 10
mov dh, al
mov cl, byte ptr es:[bx+1] ; do cl znak na pozici es:[bx+1]
sub cl, 30h ; Ord(znak v cl)
add dh, cl
inc bx
jmp rok
zjisti:
dec ah
int 21h ; zjistime den v tydnu
mov byte ptr ndent, al ; a ulozime ho do ndent
jmp zpet
ve:
mov dl, 'e'
int 21h
v:
mov dl, 20h
int 21h
mov al, ndent
cmp al, 6 ; sobota
jl d1
mov dx, offset sobo
jmp den
zpet: ; zase jeden bordel, ale zase kvuli jumpu
inc ah
mov dl, sden
mov dh, smesic
mov cx, srok
int 21h ; a dame systemove datum pekne nazpet
jmp preved
d1:
cmp al, 5 ; patek
jl d2
mov dx, offset pate
jmp den
d2:
cmp al, 4 ; ctvrtek
jl d3
mov dx, offset ctvr
jmp den
d3:
cmp al, 3 ; streda
jl d4
mov dx, offset stre
jmp den
d4:
cmp al, 2 ; utery
jl d5
mov dx, offset uter
jmp den
d5:
cmp al, 1 ; pondeli
jl d6
mov dx, offset pond
jmp den
d6:
mov dx, offset nede ; nedele
den:
mov ah, 9h
int 21h ; vypise den
mov ah, 2
mov dl, ' '
int 21h
mov dl, nden ; v dl mame nas den
mov al, dl
mov dh, 0ah
xor ah, ah
div dh ; / 10, v al jsou desitky dni
; v ah zbytek dni
add ax, 3030h ; povisime z cisla na znak
mov dx, ax
mov ah, 2
cmp dl, 30h ; byl-li den jednomistny piseme jen jednu cifru
je pisden
int 21h ; vypis 1. znak dne
pisden:
mov dl, dh
int 21h ; vypis 2. znaku dne
mov dl, '.'
int 21h ; vypise tecku
; --- jeste mezerku
mov dl, ' '
int 21h ; vypise tecku
; ------
mov ah, 9h
mov al, nmesic ; v al mam nas mesic
cmp al, 0ch ; prosinec
jl m1
mov dx, offset pros
jmp mes
m1:
cmp al, 0bh ; listopad
jl m2
mov dx, offset list
jmp mes
m2:
cmp al, 0ah ; rijen
jl m3
mov dx, offset rije
jmp mes
m3:
cmp al, 9 ; zari
jl m4
mov dx, offset zari
jmp mes
m4:
cmp al, 8 ; srpen
jl m5
mov dx, offset srpe
jmp mes
m5:
cmp al, 7 ; cervenec
jl m6
mov dx, offset cnec
jmp mes
m6:
cmp al, 6 ; cerven
jl m7
mov dx, offset cerv
jmp mes
m7:
cmp al, 5 ; kveten
jl m8
mov dx, offset kvet
jmp mes
m8:
cmp al, 4 ; duben
jl m9
mov dx, offset dube
jmp mes
m9:
cmp al, 3 ; brezen
jl m10
mov dx, offset brez
jmp mes
m10:
cmp al, 2 ; unor
jl m11
mov dx, offset unor
jmp mes
m11:
mov dx, offset lede ; leden
mes:
int 21h ; vypise mesic
add dx, 0ah
mov bp, dx
mov ah, 2
mov dl, 20h
int 21h ; pridame mezeru
add dx, 0ah
mov bx, dx ; bx nyni offset 1. svatku v mesici
mov ax, nrok ; trosku zmatku, ale rok vypsat musim
mov cx, 64h
xor dx, dx
div cx ; / 100, ziskame 1. a 2. dve cifry
mov es, dx ; do es 1. dve cifry
; --- upravicka
; mov cl, 0ah
; div cl ; / 10 , ziskame cifry zvlast
; add ax, 3030h ; a povysime na znaky
aam
xchg al,ah
or ax,3030h
mov dx, ax
mov ah, 2h
int 21h
mov dl, dh
int 21h ; a konecne vypiseme
mov ax, es
; --- upravicka
; mov cl, 0ah
; div cl ; / 10 , ziskame cifry zvlast
; add ax, 3030h ; a povysime na znaky
aam
xchg al,ah
or ax,3030h
mov dx, ax
mov ah, 2h
int 21h
mov dl, dh
int 21h ; a konecne vypiseme zbytek
; --- tady ne
; mov ah, 9
; mov dx, offset txt
; int 21h ; na dalsi radek + textik
; --- zmena
mov al, 0ch
xor ah, ah
mov bl, nden
dec bl
mul bl ; v ax kolik pripocist k offsetu abych byl dobre
mov dx, bp
add dx, ax
mov bx, dx
mov cl, byte ptr ds:[bx]
cmp cl, 20h
je pis_nema ; nema nikdo svatek
cmp cl, '*'
jne pis_ma
mov dx,word ptr ds:[bx+10] ; nepis svatek, ale vyznamny den
jmp short pis_info
pis_ma:
push dx
mov ah, 9
mov dx, offset txt
int 21h ; napis " ma svatek "
pop dx
add bx,0Bh
rtrim:
cmp byte ptr ds:[bx],' '
jne tecku
dec bx
jmp short rtrim
tecku:
mov word ptr ds:[bx+1],242Eh ; vloz ".$"
jmp short pis_info
pis_nema:
mov dx, offset nema
pis_info:
; ----------
mov ah, 09h
int 21h
mov ah, 02h
mov dl, 0ah
int 21h
mov dl, 0dh
int 21h ; a enter
konec:
mov ax, 4c00h
int 21h
errdat:
mov dx,offset error
mov ah,9
int 21h
jmp short konec
sden db ?
smesic db ?
srok dw ?
ndent db ?
nden db ?
nmesic db ?
nrok dw ?
nema db ' nemá nikdo svátek.$'
txt db ' má svátek $'
error db 13,'Chybn╪ zadané datum (má b∞t nap². 24.2.1994 nebo t²eba 24/06/1994) !$'
nede db 'ned╪li$'
pond db 'pond╪lí$'
uter db 'úter∞$'
stre db 'st²edu$'
ctvr db 'ƒtrvtek$'
pate db 'pátek$'
sobo db 'sobotu$'
lede db 'ledna$ '
db '* ' ; novy rok
dw offset dv_novy
db 'Karina '
db 'Radmila '
db 'Diana '
db 'Dalimil '
db '* ' ; tri kralove
dw offset dv_trik
db 'Vilma '
db '¼estmír '
db 'Vladan '
db 'B²etislav '
db 'Bohdana '
db 'Pravoslav '
db 'Edita '
db 'Radovan '
db 'Alice '
db 'Ctirad '
db 'Drahoslav '
db 'Vladislav '
db 'Doubravka '
db 'Ilona '
db 'Bela '
db 'Slavomír '
db 'Zden╪k '
db 'Milena '
db 'Miloτ '
db 'Zora '
db 'Ingrid '
db 'Ot∞lie '
db 'Zdislava '
db 'Robin '
db 'Marika '
unor db 'února$ '
db 'Hynek '
db 'Nela '
db 'Blaºej '
db 'Jarmila '
db 'Dobromila '
db 'Vanda '
db 'Veronika '
db 'Milada '
db 'Apolena '
db 'Mojmír '
db 'Boºena '
db 'Slav╪na '
db 'V╪nceslav '
db 'Valent∞n '
db 'Ji²ina '
db 'Ljuba '
db 'Miloslava '
db 'Gizela '
db 'Patrik '
db 'Old²ich '
db 'Lenka '
db 'Petr '
db 'Svatopluk '
db 'Mat╪j '
db ' '
db 'Dora '
db 'Alexandr '
db 'Lumír '
db 'Albín '
brez db 'b²ezna$ '
db 'Bed²ich '
db 'Aneºka '
db 'Kamil '
db 'Stela '
db 'Kazimír '
db 'Miroslav '
db 'Tomáτ '
db 'Gabriela '
db 'Frantiτka '
db 'Viktorie '
db 'And╪la '
db 'Rehor '
db 'Ràºena '
db 'Matylda '
db 'Ida '
db 'Amos '
db 'Vlastimil '
db 'Eduard '
db 'Josef '
db 'Sv╪tlana '
db 'Radek '
db 'Leona '
db 'Ivona '
db 'Gabriel '
db 'Marian '
db 'Emanuel '
db 'Dita '
db 'Soσa '
db 'Ta£ána '
db 'Arnoτt '
db 'Kvído '
dube db 'dubna$ '
db 'Hugo '
db 'Erika '
db 'Richard '
db 'Ivana '
db 'Miroslava '
db 'Vendula '
db 'Herman '
db 'Ema '
db 'Duτan '
db 'Darja '
db 'Izabela '
db 'Julius '
db 'Aleτ '
db 'Vincenc '
db 'Anastázie '
db 'Irena '
db 'Rudolf '
db 'Valerie '
db ' '
db ' '
db 'Alexandra '
db 'Evºenie '
db 'Vojt╪ch '
db 'Ji²í '
db 'Marek '
db 'Oto '
db 'Jaroslav '
db 'Vlastislav '
db 'Robert '
db 'Blahoslav '
kvet db 'kv╪tna$ '
db ' '
db 'Zikmund '
db 'Alexej '
db 'Kv╪toslav '
db ' '
db 'Radoslav '
db 'Stanislav '
db 'Ctibor '
db ' '
db 'Blaºena '
db 'Svatava '
db 'Pankrác '
db 'Servác '
db 'Bonifác '
db 'ªofie '
db 'Premysl '
db 'Aneta '
db 'Nataτa '
db 'Ivo '
db 'Zbyτek '
db 'Monika '
db 'Emil '
db 'Vladimír '
db 'Jana '
db 'Viola '
db 'Filip '
db 'Valdemar '
db 'Vilém '
db 'Maxim '
db 'Ferdinand '
db 'Kamila '
cerv db 'ƒervna$ '
db 'Laura '
db 'Jarmil '
db 'Tamara '
db 'Dalibor '
db 'Dobroslav '
db 'Norbert '
db 'Iveta '
db 'Medard '
db 'Stanislava '
db 'Gita '
db 'Flora '
db 'Antonie '
db 'Antonín '
db 'Vasil '
db 'Vít '
db 'Zbyn╪k '
db 'Adolf '
db 'Milan '
db 'Leoτ '
db 'Kv╪ta '
db 'Alois '
db 'Pavla '
db 'Zdeσka '
db 'Jan '
db 'Ivan '
db 'Adriana '
db 'Ladislav '
db 'Lubomír '
db 'Petr a Pavel'
db 'µárka '
cnec db 'ƒervence$ '
db 'Jaroslava '
db 'Patricie '
db 'Radomír '
db 'Prokop '
db 'Cyril '
db ' '
db 'Bohuslava '
db 'Nora '
db 'Drahoslava '
db 'Libuτe '
db 'Olga '
db 'Borek '
db 'Markéta '
db 'Karolína '
db 'Jind²ich '
db 'Luboτ '
db 'Martina '
db 'Drahomíra '
db '¼enek '
db 'Ilja '
db 'Vít╪zslav '
db 'Magdalena '
db 'Libor '
db 'Krist∞na '
db 'Jakub '
db 'Anna '
db 'V╪roslav '
db 'Viktor '
db 'Marta '
db 'Bo²ivoj '
db 'Ignác '
srpe db 'srpna$ '
db 'Oskar '
db 'Gustav '
db 'Miluτe '
db 'Dominik '
db 'Milivoj '
db 'Old²iτka '
db 'Lada '
db 'Sob╪slav '
db 'Roman '
db 'Vav²inec '
db 'Zuzana '
db 'Klára '
db 'Alena '
db 'Alan '
db 'Hana '
db 'Jáchym '
db 'Petra '
db 'Helena '
db 'Ludvík '
db 'Bernard '
db 'Johana '
db 'Bohuslav '
db 'Sandra '
db 'Bartolom╪j '
db 'Radim '
db 'Lud╪k '
db 'Otakar '
db 'August∞n '
db ' '
db 'µt╪pán '
db 'Pavlína '
zari db 'zá²í$ '
db 'Linda '
db 'Adela '
db 'Bronislav '
db 'Jind²iska '
db 'Boris '
db 'Boleslav '
db 'Regina '
db 'Mariana '
db 'Daniela '
db 'Irma '
db 'Denisa '
db 'Marie '
db 'Lubor '
db 'Radka '
db 'Jolana '
db 'Ludmil '
db 'Nadeºda '
db 'Kryτtof '
db 'Zita '
db 'Oleg '
db 'Matouτ '
db 'Darina '
db 'Berta '
db 'Jaromír '
db 'Zlata '
db 'Andrea '
db 'Jonas '
db 'Václav '
db 'Michal '
db 'Jeron∞m '
rije db '²íjna$ '
db 'Igor '
db 'Galina '
db 'Bohumil '
db 'Frantiτek '
db 'Eliτka '
db 'Hanus '
db 'Sergej '
db 'V╪ra '
db 'µtefan '
db 'Marina '
db 'Andrej '
db 'Marcel '
db 'Renata '
db ' '
db 'Tereza '
db 'Havel '
db 'Hedvika '
db 'Lukáτ '
db 'Michaela '
db 'Vendelín '
db 'Brigita '
db 'Sabina '
db 'Teodor '
db 'Nina '
db 'Beata '
db 'Erik '
db 'Zoja '
db ' '
db 'Silvie '
db 'Tadeáτ '
db 'µt╪pánka '
list db 'listopadu$'
db 'Felix '
db ' '
db 'Hubert '
db 'Karel '
db 'Miriam '
db 'Libena '
db ' '
db 'Bohumir '
db 'Bohdan '
db 'Evºen '
db 'Martin '
db 'Benedikt '
db 'Tibor '
db 'Sava '
db 'Leopold '
db 'Otmar '
db 'Mahulena '
db 'Romana '
db 'Alºb╪ta '
db 'Nikola '
db 'Albert '
db 'Cecílie '
db 'Klement '
db 'Emilie '
db 'Kate²ina '
db 'Artur '
db 'Xénie '
db 'René '
db 'Zina '
db 'Ond²ej '
pros db 'prosince$ '
db 'Iva '
db 'Blanka '
db 'Svatoslav '
db 'Barbora '
db 'Jitka '
db 'Mikuláτ '
db 'Anbroz '
db 'Kv╪toslava '
db 'Vratislav '
db 'Julie '
db 'Dana '
db 'Simona '
db 'Lucie '
db 'Lydie '
db 'Radana '
db 'Albina '
db 'Daniel '
db 'Miloslav '
db 'Ester '
db 'Dagmar '
db 'Natálie '
db 'Simon '
db 'Vlasta '
db 'Adam a Eva '
db '* ' ; 1.svatek vanocni
dw offset dv_1vano
db '* ' ; 2.svatek vanocni
dw offset dv_2vano
db 'Zaneta '
db 'Bohumila '
db 'Judita '
db 'David '
db 'Silvestr '
dv_novy db ' je Nov∞ rok.$'
dv_trik db ' jsou T²i králové.$'
dv_1vano db ' je 1. svátek vánoƒní.$'
dv_2vano db ' je 2. svátek vánoƒní.$'
end start