home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 July / Chip_1998-07_cd.bin / ctenari / Labyrint / DATA / FREE / SVATEK.RAR / SVATEK.ASM next >
Assembly Source File  |  1994-09-12  |  22KB  |  835 lines

  1. comment |
  2.  
  3.    Program pro vypsani datumu, dne a svatku se zdrojovym kodem v asm86.
  4.     
  5.    Verzi 1 napsal neznamy autor (at mi promine, ale zdrojak je bez jmena).
  6.    Verzi 2 jsem si dovolil pripravit ja, Jan Soucek.
  7.            - zmensena struktura jmen
  8.            - uvolneni parametrovani datumu na vice moznosti
  9.            - hlaseni chybneho parametru
  10.            - z 90.11150% (hruby odhad) lokalizovano z cestiny do Latin2
  11.            - buferovany vystup
  12.            - moznost barevneho vystupu
  13.            - uprava prehlednosti zdrojaku mym potrebam
  14.            - moznost vypisu vyznamnych udalosti misto jmen
  15.            - pres vsechny bombastisky upravy je mensi 
  16.            - ze syntaxe komentaru nahrazen prikaz 'bordel' pr. 'neporadek'
  17.            - a dalsi budliky na vase uzliky
  18. |
  19. .model tiny
  20. .code
  21.  org 100h
  22.  
  23. Color EQU 1                        ; 0/1 volba vystupu
  24.                                    ;     0 = terminal
  25.                                    ;     1 = v barve
  26. WriteChar MACRO Clr
  27.   if Color
  28.     mov byte ptr actc,Clr
  29.   endif
  30.   call wr_char
  31. endm
  32.  
  33. WriteStr MACRO Clr
  34.   if Color
  35.     mov byte ptr actc,Clr
  36.   endif
  37.   call wr_str
  38. endm
  39.  
  40. start:
  41.        mov  ah,2ah                 ; cti systemove datum
  42.        int  21h
  43.                                    ; ulozeni soucasneho data
  44.        mov  sden,dl                ; den
  45.        mov  smesic,dh              ; mesic
  46.        mov  srok,cx                ; rok
  47.                                    ; datum na zjisteni svatku
  48.        mov  ndent,al               ; den v tydnu
  49.        mov  nden,dl                ; den
  50.        mov  nmesic,dh              ; mesic
  51.        mov  nrok,cx                ; rok
  52.        mov  ah,2fh                 ; cti pocatek DTA
  53.        int  21h
  54.        mov  al,byte ptr es:[bx]    ; al - delka parametru
  55.        cmp  al,0                   ; zjisti je-li parametr
  56.        je   preved                 ; neni-li jdi az na prevod
  57.                                    ; je-li,tak ho preved na datum
  58. mezery:
  59.        inc  bx                     ; posun na prvni znak parametru
  60.        mov  dl,byte ptr es:[bx]    ; je-li znak mezera,tak jeste nejsem na datumu
  61.        cmp  dl,20h
  62.        je   mezery
  63.        sub  dl,30h                 ; Ord(znak v dl)
  64.        cmp  byte ptr es:[bx+1],'0' ; je-li nasledujici znak >= "0" pak mame den
  65.        jae  den2
  66. mesic:
  67.        mov  nden,dl                ; nyni mame v nden den
  68.        inc  bx
  69.        inc  bx                     ; posun na 1 znak mesice
  70.        mov  dh,byte ptr es:[bx]    ; do dh znak na pozici es:[bx]
  71.        sub  dh,30h                 ; Ord(znak v dh)
  72.        cmp  byte ptr es:[bx+1],'0' ; je-li nasledujici znak >= "0" pak mame mesic
  73.        jae  mesic2
  74. rok:
  75.        mov  nmesic,dh              ; nyni mame v nmesic mesic
  76.        inc  bx
  77.        inc  bx                     ; posun na 1 znak roku
  78.        and  word ptr es:[bx],0CFCFh
  79.        and  word ptr es:[bx+2],0CFCFh
  80.        mov  cl,byte ptr es:[bx]
  81.        xor  ch,ch
  82.        mov  bp,dx
  83.        mov  ax,3e8h
  84.        mul  cx                     ; * 1000
  85.        mov  cx,ax                  ; v cx nyni prvni cifra roku * 1000
  86.        mov  ax,64h
  87.        mul  byte ptr es:[bx+1]     ; * 100
  88.        add  cx,ax                  ; do cx nyni pridana 2. cifra roku * 100
  89.        mov  ax,0ah
  90.        mul  byte ptr es:[bx+2]     ; * 10
  91.        add  cx,ax                  ; do cx nyni pridana 3. cifra roku * 10
  92.        mov  al,byte ptr es:[bx+3]
  93.        xor  ah,ah
  94.        add  cx,ax                  ; a konecne i posledni cifra
  95.        mov  nrok,cx
  96.        mov  dx,bp
  97.        mov  ah,2bh                 ; nastavime systemove datum,
  98.        int  21h                    ; abychom zjistili den v tydnu
  99.        cmp  al,0ffh
  100.        jne  zjisti
  101.        jmp  errdat
  102. preved:                            ; at ten neporadek vali
  103.        mov  al,'V'
  104.        WriteChar 15   
  105.        mov  al,ndent
  106.        cmp  al,3
  107.        je   ve
  108.        cmp  al,4
  109.        je   ve
  110.        jmp  short v
  111. den2:                              ; neprehledno, ale jump by nebyl near
  112.        mov  al,0ah
  113.        mul  dl                     ; * 10
  114.        mov  dl,al
  115.        mov  cl,byte ptr es:[bx+1]  ; do cl znak na pozici es:[bx+1]
  116.        sub  cl,30h                 ; Ord(znak v cl)
  117.        add  dl,cl                  ; 1. cifra * 10 + 2. cifra
  118.        inc  bx
  119.        jmp  mesic
  120. mesic2:
  121.        mov  al,0ah
  122.        mul  dh                     ; * 10
  123.        mov  dh,al
  124.        mov  cl,byte ptr es:[bx+1]  ; do cl znak na pozici es:[bx+1]
  125.        sub  cl,30h                 ; Ord(znak v cl)
  126.        add  dh,cl
  127.        inc  bx
  128.        jmp  rok
  129. zjisti:
  130.        dec  ah
  131.        int  21h                    ; zjistime den v tydnu
  132.        mov  byte ptr ndent,al      ; a ulozime ho do ndent
  133.        jmp  short zpet
  134. ve:
  135.        mov  al,'e'
  136.        WriteChar 15
  137. v:
  138.        mov  al,' '
  139.        WriteChar 15
  140.        mov  al,ndent
  141.        cmp  al,6                   ; sobota
  142.        jl   d1
  143.        mov  si,offset sobo
  144.        jmp  short den
  145. zpet:                              ; zase jeden neporadek, ale zase kvuli jumpu
  146.        inc  ah
  147.        mov  dl,sden
  148.        mov  dh,smesic
  149.        mov  cx,srok
  150.        int  21h                    ; a dame systemove datum pekne nazpet
  151.        jmp  short preved
  152. d1:
  153.        cmp  al,5                   ; patek
  154.        jl   d2
  155.        mov  si,offset pate
  156.        jmp  short den
  157. d2:
  158.        cmp  al,4                   ; ctvrtek
  159.        jl   d3
  160.        mov  si,offset ctvr
  161.        jmp  short den
  162. d3:
  163.        cmp  al,3                   ; streda
  164.        jl   d4
  165.        mov  si,offset stre
  166.        jmp  short den
  167. d4:
  168.        cmp  al,2                   ; utery
  169.        jl   d5
  170.        mov  si,offset uter
  171.        jmp  short den
  172. d5:
  173.        cmp  al,1                   ; pondeli
  174.        jl   d6
  175.        mov  si,offset pond
  176.        jmp  short den
  177. d6:
  178.        mov  si,offset nede         ; nedele
  179. den:
  180.        xor  al,al
  181.        WriteStr 15
  182.        mov  al,' '
  183.        WriteChar 15   
  184.        mov  dl,nden                ; v dl mame nas den
  185.        mov  al,dl
  186.        mov  dh,0ah
  187.        xor  ah,ah
  188.        div  dh                     ; / 10, v al jsou desitky dni
  189.                                    ; v ah zbytek dni
  190.        or   ax,3030h
  191.        cmp  al,30h                 ; byl-li den jednomistny piseme jen jednu cifru
  192.        je   pisden
  193.        WriteChar 15                ; vypis 1. znak dne
  194. pisden:
  195.        mov  al,ah
  196.        WriteChar 15                ; vypis 2. znaku dne
  197.        mov  al,'.'
  198.        WriteChar 15                ; vypise tecku
  199.        mov  al,' '
  200.        WriteChar 15                ; vypise tecku
  201.        mov  al,nmesic              ; v al mam nas mesic
  202.        cmp  al,0ch                 ; prosinec
  203.        jl   m1
  204.        mov  si,offset pros
  205.        jmp  short mes
  206. m1:
  207.        cmp  al,0bh                 ; listopad
  208.        jl   m2
  209.        mov  si,offset list
  210.        jmp  short mes
  211. m2:
  212.        cmp  al,0ah                 ; rijen
  213.        jl   m3
  214.        mov  si,offset rije
  215.        jmp  short mes
  216. m3:
  217.        cmp  al,9                   ; zari
  218.        jl   m4
  219.        mov  si,offset zari
  220.        jmp  short mes
  221. m4:
  222.        cmp  al,8                   ; srpen
  223.        jl   m5
  224.        mov  si,offset srpe
  225.        jmp  short mes
  226. m5:
  227.        cmp  al,7                   ; cervenec
  228.        jl   m6
  229.        mov  si,offset cnec
  230.        jmp  short mes
  231. m6:
  232.        cmp  al,6                   ; cerven
  233.        jl   m7
  234.        mov  si,offset cerv
  235.        jmp  short mes
  236. m7:
  237.        cmp  al,5                   ; kveten
  238.        jl   m8
  239.        mov  si,offset kvet
  240.        jmp  short mes
  241. m8:
  242.        cmp  al,4                   ; duben
  243.        jl   m9
  244.        mov  si,offset dube
  245.        jmp  short mes
  246. m9:
  247.        cmp  al,3                   ; brezen
  248.        jl   m10
  249.        mov  si,offset brez
  250.        jmp  short mes
  251. m10:
  252.        cmp  al,2                   ; unor
  253.        jl   m11
  254.        mov  si,offset unor
  255.        jmp  short mes
  256. m11:
  257.        mov  si,offset lede         ; leden
  258. mes:
  259.        mov  al,[si]
  260.        xor  ah,ah
  261.        add  ax,si
  262.        push ax
  263.        xor  al,al
  264.        WriteStr 15                 ; vypise mesic
  265.        mov  al,20h
  266.        WriteChar 15                ; pridame mezeru
  267.        mov  ax,nrok                ; trosku zmatku, ale rok vypsat musim
  268.        mov  cx,64h
  269.        xor  dx,dx
  270.        div  cx                     ; / 100, ziskame 1. a 2. dve cifry
  271.        mov  es,dx                  ; do es 1. dve cifry
  272.        aam
  273.        xchg al,ah
  274.        or   ax,3030h
  275.        WriteChar 15   
  276.        mov  al,ah
  277.        WriteChar 15                ; a konecne vypiseme
  278.        mov  ax,es
  279.        aam
  280.        xchg al,ah
  281.        or   ax,3030h
  282.        WriteChar 15   
  283.        mov  al,ah
  284.        WriteChar 15                ; a konecne vypiseme zbytek
  285.        mov  al,0ch                
  286.        xor  ah,ah
  287.        mov  bl,nden
  288.        dec  bl
  289.        mul  bl                     ; v ax kolik pripocist k offsetu abych byl dobre
  290.        pop  si
  291.        inc  ax
  292.        add  si,ax
  293.        mov  al,byte ptr ds:[si]
  294.        cmp  al,20h
  295.        je   pis_nema               ; nema nikdo svatek
  296.        cmp  al,'*'                  
  297.        jne  pis_ma                
  298.        mov  si,word ptr ds:[si+10] ; nepis svatek, ale vyznamny den
  299.        jmp  short pis_info
  300. pis_ma:
  301.        push si
  302.        xor  al,al
  303.        mov  si,offset txt
  304.        WriteStr 15   
  305.        pop  si
  306.        mov  bx,si
  307.        add  bx,0Bh
  308. rtrim:
  309.        cmp  byte ptr ds:[bx],' '
  310.        jne  tecku
  311.        dec  bx
  312.        jmp  short rtrim
  313. tecku:
  314.        sub  bx,si
  315.        xchg bx,ax
  316.        inc  ax
  317.        WriteStr 11   
  318.        mov  al,'.'
  319.        WriteChar 15     
  320.        jmp  short pis_vse
  321. pis_nema:
  322.        mov  si,offset nema
  323. pis_info:
  324.        xor  al,al
  325.        WriteStr 15
  326. pis_vse:
  327.        call wr_line
  328.        int  20h
  329. errdat:
  330.        mov  si,offset error
  331.        xor  al,al
  332.        WriteStr 12   
  333.        jmp  short pis_vse
  334.  
  335. sden   db 0
  336. smesic db 0
  337. srok   dw 0
  338. ndent  db 0
  339. nden   db 0
  340. nmesic db 0
  341. nrok   dw 0
  342. nema   db 19,' nemá nikdo svátek.'
  343. txt    db 11,' má svátek '
  344. error  db 68,'Chybn╪ zadané datum (má b∞t nap². 24.2.1994 nebo t²eba 24/06/1994) !'
  345.  
  346. nede   db 6,'ned╪li'
  347. pond   db 7,'pond╪lí'
  348. uter   db 5,'úter∞'
  349. stre   db 6,'st²edu'
  350. ctvr   db 7,'ƒtvrtek'
  351. pate   db 5,'pátek'
  352. sobo   db 6,'sobotu'
  353.  
  354. lede   db 5,'ledna'
  355.  
  356.        db '*         '   ; novy rok
  357.           dw offset dv_novy
  358.        db 'Karina      '
  359.        db 'Radmila     '
  360.        db 'Diana       '
  361.        db 'Dalimil     '
  362.        db '*         '   ; tri kralove
  363.           dw offset dv_trik
  364.        db 'Vilma       '
  365.        db '¼estmír     '
  366.        db 'Vladan      '
  367.        db 'B²etislav   '
  368.        db 'Bohdana     '
  369.        db 'Pravoslav   '
  370.        db 'Edita       '
  371.        db 'Radovan     '
  372.        db 'Alice       '
  373.        db 'Ctirad      '
  374.        db 'Drahoslav   '
  375.        db 'Vladislav   '
  376.        db 'Doubravka   '
  377.        db 'Ilona       '
  378.        db 'Bela        '
  379.        db 'Slavomír    '
  380.        db 'Zden╪k      '
  381.        db 'Milena      '
  382.        db 'Miloτ       '
  383.        db 'Zora        '
  384.        db 'Ingrid      '
  385.        db 'Ot∞lie      '
  386.        db 'Zdislava    '
  387.        db 'Robin       '
  388.        db 'Marika      '
  389.  
  390. unor   db 5,'února'
  391.  
  392.        db 'Hynek       '
  393.        db 'Nela        '
  394.        db 'Blaºej      '
  395.        db 'Jarmila     '
  396.        db 'Dobromila   '
  397.        db 'Vanda       '
  398.        db 'Veronika    '
  399.        db 'Milada      '
  400.        db 'Apolena     '
  401.        db 'Mojmír      '
  402.        db 'Boºena      '
  403.        db 'Slav╪na     '
  404.        db 'V╪nceslav   '
  405.        db 'Valent∞n    '
  406.        db 'Ji²ina      '
  407.        db 'Ljuba       '
  408.        db 'Miloslava   '
  409.        db 'Gizela      '
  410.        db 'Patrik      '
  411.        db 'Old²ich     '
  412.        db 'Lenka       '
  413.        db 'Petr        '
  414.        db 'Svatopluk   '
  415.        db 'Mat╪j       '
  416.        db '            '
  417.        db 'Dora        '
  418.        db 'Alexandr    '
  419.        db 'Lumír       '
  420.        db 'Albín       '
  421.  
  422. brez   db 6,'b²ezna'
  423.  
  424.        db 'Bed²ich     '
  425.        db 'Aneºka      '
  426.        db 'Kamil       '
  427.        db 'Stela       '
  428.        db 'Kazimír     '
  429.        db 'Miroslav    '
  430.        db 'Tomáτ       '
  431.        db 'Gabriela    '
  432.        db 'Frantiτka   '
  433.        db 'Viktorie    '
  434.        db 'And╪la      '
  435.        db 'Rehor       '
  436.        db 'Ràºena      '
  437.        db 'Matylda     '
  438.        db 'Ida         '
  439.        db 'Amos        '
  440.        db 'Vlastimil   '
  441.        db 'Eduard      '
  442.        db 'Josef       '
  443.        db 'Sv╪tlana    '
  444.        db 'Radek       '
  445.        db 'Leona       '
  446.        db 'Ivona       '
  447.        db 'Gabriel     '
  448.        db 'Marian      '
  449.        db 'Emanuel     '
  450.        db 'Dita        '
  451.        db 'Soσa        '
  452.        db 'Ta£ána      '
  453.        db 'Arnoτt      '
  454.        db 'Kvído       '
  455.  
  456. dube   db 5,'dubna'
  457.  
  458.        db 'Hugo        '
  459.        db 'Erika       '
  460.        db 'Richard     '
  461.        db 'Ivana       '
  462.        db 'Miroslava   '
  463.        db 'Vendula     '
  464.        db 'Herman      '
  465.        db 'Ema         '
  466.        db 'Duτan       '
  467.        db 'Darja       '
  468.        db 'Izabela     '
  469.        db 'Julius      '
  470.        db 'Aleτ        '
  471.        db 'Vincenc     '
  472.        db 'Anastázie   '
  473.        db 'Irena       '
  474.        db 'Rudolf      '
  475.        db 'Valerie     '
  476.        db '            '
  477.        db '            '
  478.        db 'Alexandra   '
  479.        db 'Evºenie     '
  480.        db 'Vojt╪ch     '
  481.        db 'Ji²í        '
  482.        db 'Marek       '
  483.        db 'Oto         '
  484.        db 'Jaroslav    '
  485.        db 'Vlastislav  '
  486.        db 'Robert      '
  487.        db 'Blahoslav   '
  488.  
  489. kvet   db 6,'kv╪tna'
  490.  
  491.        db '            '
  492.        db 'Zikmund     '
  493.        db 'Alexej      '
  494.        db 'Kv╪toslav   '
  495.        db '            '
  496.        db 'Radoslav    '
  497.        db 'Stanislav   '
  498.        db 'Ctibor      '
  499.        db '            '
  500.        db 'Blaºena     '
  501.        db 'Svatava     '
  502.        db 'Pankrác     '
  503.        db 'Servác      '
  504.        db 'Bonifác     '
  505.        db 'ªofie       '
  506.        db 'Premysl     '
  507.        db 'Aneta       '
  508.        db 'Nataτa      '
  509.        db 'Ivo         '
  510.        db 'Zbyτek      '
  511.        db 'Monika      '
  512.        db 'Emil        '
  513.        db 'Vladimír    '
  514.        db 'Jana        '
  515.        db 'Viola       '
  516.        db 'Filip       '
  517.        db 'Valdemar    '
  518.        db 'Vilém       '
  519.        db 'Maxim       '
  520.        db 'Ferdinand   '
  521.        db 'Kamila      '
  522.  
  523. cerv   db 6,'ƒervna'
  524.  
  525.        db 'Laura       '
  526.        db 'Jarmil      '
  527.        db 'Tamara      '
  528.        db 'Dalibor     '
  529.        db 'Dobroslav   '
  530.        db 'Norbert     '
  531.        db 'Iveta       '
  532.        db 'Medard      '
  533.        db 'Stanislava  '
  534.        db 'Gita        '
  535.        db 'Flora       '
  536.        db 'Antonie     '
  537.        db 'Antonín     '
  538.        db 'Vasil       '
  539.        db 'Vít         '
  540.        db 'Zbyn╪k      '
  541.        db 'Adolf       '
  542.        db 'Milan       '
  543.        db 'Leoτ        '
  544.        db 'Kv╪ta       '
  545.        db 'Alois       '
  546.        db 'Pavla       '
  547.        db 'Zdeσka      '
  548.        db 'Jan         '
  549.        db 'Ivan        '
  550.        db 'Adriana     '
  551.        db 'Ladislav    '
  552.        db 'Lubomír     '
  553.        db 'Petr a Pavel'
  554.        db 'µárka       '
  555.  
  556. cnec   db 8,'ƒervence'
  557.  
  558.        db 'Jaroslava   '
  559.        db 'Patricie    '
  560.        db 'Radomír     '
  561.        db 'Prokop      '
  562.        db 'Cyril       '
  563.        db '            '
  564.        db 'Bohuslava   '
  565.        db 'Nora        '
  566.        db 'Drahoslava  '
  567.        db 'Libuτe      '
  568.        db 'Olga        '
  569.        db 'Borek       '
  570.        db 'Markéta     '
  571.        db 'Karolína    '
  572.        db 'Jind²ich    '
  573.        db 'Luboτ       '
  574.        db 'Martina     '
  575.        db 'Drahomíra   '
  576.        db '¼enek       '
  577.        db 'Ilja        '
  578.        db 'Vít╪zslav   '
  579.        db 'Magdalena   '
  580.        db 'Libor       '
  581.        db 'Krist∞na    '
  582.        db 'Jakub       '
  583.        db 'Anna        '
  584.        db 'V╪roslav    '
  585.        db 'Viktor      '
  586.        db 'Marta       '
  587.        db 'Bo²ivoj     '
  588.        db 'Ignác       '
  589.  
  590. srpe   db 5,'srpna'
  591.  
  592.        db 'Oskar       '
  593.        db 'Gustav      '
  594.        db 'Miluτe      '
  595.        db 'Dominik     '
  596.        db 'Milivoj     '
  597.        db 'Old²iτka    '
  598.        db 'Lada        '
  599.        db 'Sob╪slav    '
  600.        db 'Roman       '
  601.        db 'Vav²inec    '
  602.        db 'Zuzana      '
  603.        db 'Klára       '
  604.        db 'Alena       '
  605.        db 'Alan        '
  606.        db 'Hana        '
  607.        db 'Jáchym      '
  608.        db 'Petra       '
  609.        db 'Helena      '
  610.        db 'Ludvík      '
  611.        db 'Bernard     '
  612.        db 'Johana      '
  613.        db 'Bohuslav    '
  614.        db 'Sandra      '
  615.        db 'Bartolom╪j  '
  616.        db 'Radim       '
  617.        db 'Lud╪k       '
  618.        db 'Otakar      '
  619.        db 'August∞n    '
  620.        db '            '
  621.        db 'µt╪pán      '
  622.        db 'Pavlína     '
  623.  
  624. zari   db 4,'zá²í'
  625.  
  626.        db 'Linda       '
  627.        db 'Adela       '
  628.        db 'Bronislav   '
  629.        db 'Jind²iska   '
  630.        db 'Boris       '
  631.        db 'Boleslav    '
  632.        db 'Regina      '
  633.        db 'Mariana     '
  634.        db 'Daniela     '
  635.        db 'Irma        '
  636.        db 'Denisa      '
  637.        db 'Marie       '
  638.        db 'Lubor       '
  639.        db 'Radka       '
  640.        db 'Jolana      '
  641.        db 'Ludmil      '
  642.        db 'Nadeºda     '
  643.        db 'Kryτtof     '
  644.        db 'Zita        '
  645.        db 'Oleg        '
  646.        db 'Matouτ      '
  647.        db 'Darina      '
  648.        db 'Berta       '
  649.        db 'Jaromír     '
  650.        db 'Zlata       '
  651.        db 'Andrea      '
  652.        db 'Jonas       '
  653.        db 'Václav      '
  654.        db 'Michal      '
  655.        db 'Jeron∞m     '
  656.  
  657. rije   db 5,'²íjna'
  658.  
  659.        db 'Igor        '
  660.        db 'Galina      '
  661.        db 'Bohumil     '
  662.        db 'Frantiτek   '
  663.        db 'Eliτka      '
  664.        db 'Hanus       '
  665.        db 'Sergej      '
  666.        db 'V╪ra        '
  667.        db 'µtefan      '
  668.        db 'Marina      '
  669.        db 'Andrej      '
  670.        db 'Marcel      '
  671.        db 'Renata      '
  672.        db '            '
  673.        db 'Tereza      '
  674.        db 'Havel       '
  675.        db 'Hedvika     '
  676.        db 'Lukáτ       '
  677.        db 'Michaela    '
  678.        db 'Vendelín    '
  679.        db 'Brigita     '
  680.        db 'Sabina      '
  681.        db 'Teodor      '
  682.        db 'Nina        '
  683.        db 'Beata       '
  684.        db 'Erik        '
  685.        db 'Zoja        '
  686.        db '            '
  687.        db 'Silvie      '
  688.        db 'Tadeáτ      '
  689.        db 'µt╪pánka    '
  690.  
  691. list   db 9,'listopadu'
  692.  
  693.        db 'Felix       '
  694.        db '            '
  695.        db 'Hubert      '
  696.        db 'Karel       '
  697.        db 'Miriam      '
  698.        db 'Libena      '
  699.        db '            '
  700.        db 'Bohumir     '
  701.        db 'Bohdan      '
  702.        db 'Evºen       '
  703.        db 'Martin      '
  704.        db 'Benedikt    '
  705.        db 'Tibor       '
  706.        db 'Sava        '
  707.        db 'Leopold     '
  708.        db 'Otmar       '
  709.        db 'Mahulena    '
  710.        db 'Romana      '
  711.        db 'Alºb╪ta     '
  712.        db 'Nikola      '
  713.        db 'Albert      '
  714.        db 'Cecílie     '
  715.        db 'Klement     '
  716.        db 'Emilie      '
  717.        db 'Kate²ina    '
  718.        db 'Artur       '
  719.        db 'Xénie       '
  720.        db 'René        '
  721.        db 'Zina        '
  722.        db 'Ond²ej      '
  723.  
  724. pros   db 8,'prosince'
  725.  
  726.        db 'Iva         '
  727.        db 'Blanka      '
  728.        db 'Svatoslav   '
  729.        db 'Barbora     '
  730.        db 'Jitka       '
  731.        db 'Mikuláτ     '
  732.        db 'Anbroz      '
  733.        db 'Kv╪toslava  '
  734.        db 'Vratislav   '
  735.        db 'Julie       '
  736.        db 'Dana        '
  737.        db 'Simona      '
  738.        db 'Lucie       '
  739.        db 'Lydie       '
  740.        db 'Radana      '
  741.        db 'Albina      '
  742.        db 'Daniel      '
  743.        db 'Miloslav    '
  744.        db 'Ester       '
  745.        db 'Dagmar      '
  746.        db 'Natálie     '
  747.        db 'Simon       '
  748.        db 'Vlasta      '
  749.        db 'Adam a Eva  '
  750.        db '*         '          ; 1.svatek vanocni
  751.           dw offset dv_1vano
  752.        db '*         '          ; 2.svatek vanocni
  753.           dw offset dv_2vano
  754.        db 'Zaneta      '
  755.        db 'Bohumila    '
  756.        db 'Judita      '
  757.        db 'David       '
  758.        db 'Silvestr    '
  759.  
  760. dv_novy   db 13,' je Nov∞ rok.'
  761. dv_trik   db 18,' jsou T²i králové.'
  762. dv_1vano  db 22,' je 1. svátek vánoƒní.'
  763. dv_2vano  db 22,' je 2. svátek vánoƒní.'
  764.  
  765. wr_char:
  766.   mov  di,col
  767.   mov  radka[di],al
  768.   inc  di
  769.   if Color
  770.     cmp  al,20
  771.     jb   wr00
  772.     mov  al,actc
  773.     mov  radka[di],al
  774.     inc  di
  775.   wr00:
  776.   endif    
  777.   mov  col,di
  778.   retn
  779.  
  780. wr_str:
  781.   cld
  782.   or   al,al
  783.   jnz  wr01
  784.   lodsb
  785. wr01:  
  786.   xor  ah,ah
  787.   xchg ax,cx
  788. wr02:
  789.   lodsb
  790.   call wr_char
  791.   loop wr02
  792.   retn
  793.  
  794. wr_line:
  795.   if Color
  796.     mov  al,' '
  797.     WriteChar 7
  798.     mov  al,13
  799.     call wr_char
  800.     mov  al,10
  801.     call wr_char
  802.     mov  ah,15
  803.     int  10h
  804.     mov  ah,3
  805.     int  10h
  806.     mov  ax,1303h                    ; pouze EGA BIOS a kompaktibilni
  807.     push cs
  808.     pop  es
  809.     mov  bp,offset cs:radka
  810.     mov  cx,col
  811.     shr  cx,1
  812.     inc  cx
  813.     int  10h
  814.   else
  815.     mov  al,13
  816.     call wr_char
  817.     mov  al,10
  818.     call wr_char
  819.     mov  al,'$'
  820.     call wr_char
  821.     mov  ah,9
  822.     mov  dx,offset radka
  823.     int  21h
  824.   endif
  825.   retn
  826.  
  827. if Color
  828.   actc   db 0
  829. endif
  830. col      dw 0
  831. radka    db 0
  832.  
  833. end start
  834.  
  835.