home *** CD-ROM | disk | FTP | other *** search
/ The Equalizer BBS / equalizer-bbs-collection_2004.zip / equalizer-bbs-collection / DEMOSCENE-STUFF / SRC_FARM.ZIP / FARMER.ASM next >
Assembly Source File  |  1996-08-27  |  15KB  |  1,131 lines

  1.  
  2.  
  3. part1=1  ;literki etc.
  4. part2=1  ;stars wonders
  5. part3=1  ;2d bump mapping
  6. part4=1  ;kura's water
  7. part5=1  ;two ZOOOOOM-rotators
  8.  
  9. .386
  10. assume cs:code
  11. code segment use16
  12.  
  13.  
  14. Segment0    equ 06000h
  15. Segment1    equ 07000h    ;makeTlo
  16. Segment2    equ 08000h    ;toonel#1.1
  17. Segment3    equ 09000h    ;toonel#1.2
  18. SegmentEkr    equ 0a000h
  19.  
  20. o        equ offset
  21. w        equ word ptr
  22. b        equ byte ptr
  23. d        equ dword ptr
  24.  
  25.  
  26. org 100h
  27. start:
  28.     push cs
  29.     pop ax
  30.     cmp ax,5000h
  31.     jge _exit
  32.  
  33.     push cs
  34.     pop es
  35.     lea di,cos
  36.     mov cx,1024
  37.  MakeCos:
  38.     mov _angle,cx
  39.     fldpi
  40.     fimul _angle
  41.     fidiv _512
  42.     fcos
  43.     fimul _128
  44.     fistp wyn
  45.     mov ax,wyn
  46.     mov es:[di],ax
  47.     inc di
  48.     inc di
  49.     dec cx
  50.     jnz MakeCos
  51.  
  52.     call GetFontAddr
  53.     INCLUDE INC\bway.inc
  54.     call make_Bump
  55.     call calc_toonel
  56.  
  57.     mov ax,Segment1
  58.     mov es,ax
  59.     call Make_Tlo
  60.  
  61.     mov ax,13h
  62.     int 10h
  63.     call SetPal
  64.  
  65.     mov ax,0a000h
  66.     mov es,ax
  67.     xor di,di
  68.     mov ax,Segment1
  69.     mov ds,ax
  70.     xor si,si
  71.     mov cx,16000
  72.     rep movsd
  73.  
  74. IFDEF part1
  75.     ; writeln 'FARMER'
  76.     lea bp,ple
  77.     mov ax,0a000h
  78.     mov es,ax
  79.     mov di,320*72+19
  80.     mov ax,SegFont
  81.     mov ds,ax
  82.     call napis4
  83.     lea bp,ple2
  84.     mov ax,0a000h
  85.     mov es,ax
  86.     mov di,320*130+19
  87.     mov ax,SegFont
  88.     mov ds,ax
  89.     call napis1
  90.  
  91.     ; make fleshes
  92.     call flesh
  93.     call SetPal
  94.     mov di,(320*24)+134
  95.     call draw_Kura
  96.     mov cx,230
  97.  du:    call wait_vbl
  98.     loop du
  99.     call flesh
  100.     call setPal
  101. ENDIF
  102.  
  103. IFDEF part2
  104.     mov ax,Segment1
  105.     mov ds,ax
  106.     mov ax,Segment0
  107.     mov es,ax
  108.     xor si,si
  109.     xor di,di
  110.     mov dx,128
  111.  u1:    mov cx,256
  112.     rep movsb
  113.     add si,320-256
  114.     dec dx
  115.     jnz u1
  116.     mov dx,128
  117.  q1:    mov cx,256
  118.     rep movsb
  119.     sub si,320+256
  120.     dec dx
  121.     jnz q1
  122.  
  123.     mov cx,280
  124.  keyeStars:
  125.     push cx
  126.     call draw_toonel
  127.     mov di,(170*320)+315-16*2
  128.     call draw_kura2
  129.     call drawSeg1
  130.     add liczn,258*2
  131.     call wait_vbl
  132.     pop cx
  133.     dec cx
  134.     jnz keyeStars
  135. ENDIF
  136.  
  137. IFDEF part3
  138.     call flesh
  139.  
  140.     mov ax,SegmentEkr
  141.     mov es,ax
  142.     call zerofill
  143.  
  144.     mov jest_czekanie,1
  145.     mov ax,Segment0
  146.     mov es,ax
  147.     xor di,di
  148.     xor ax,ax
  149.     mov cx,32000
  150.     rep stosw
  151.     lea bp,ple4
  152.     mov ax,SegFont
  153.     mov di,320*72+19
  154.     mov ds,ax
  155.     call napis4
  156.  
  157.     mov ax,Segment1
  158.     mov es,ax
  159.     xor di,di
  160.     xor ax,ax
  161.     mov cx,32000
  162.     rep stosw
  163.  
  164.     ;mov jest_czekanie,1
  165.     lea bp,ple3
  166.     mov ax,SegFont
  167.     mov di,320*72+19
  168.     mov ds,ax
  169.     call napis4
  170.  
  171.     mov di,20*320+130
  172.     call draw_kura
  173.     mov di,20*320+60
  174.     call draw_kura
  175.     mov di,20*320+200
  176.     call draw_kura
  177.     mov di,125*320+130
  178.     call draw_kura
  179.     mov di,125*320+60
  180.     call draw_kura
  181.     mov di,125*320+200
  182.     call draw_kura
  183.     call soften
  184.     call Soften
  185.  
  186.     mov cx,200
  187.  keye2:
  188.     push cx
  189.  
  190.     cmp flesz_kura,0
  191.     jne pleop
  192.     mov flesz_kura,1
  193.     call calc_Bump
  194.     call setPal
  195.  pleop:
  196.     call wait_vbl
  197.     call calc_bump
  198.  
  199.     pop cx
  200.     dec cx
  201.     jnz keye2
  202. ENDIF
  203.  
  204. IFDEF part4
  205.     call flesh
  206.     mov ax,0a000h
  207.     mov es,ax
  208.     call ZeroFill
  209.     call setPal
  210.  
  211.  
  212.     push cs
  213.     pop es
  214.     lea di,obrazek
  215.     mov cx,128*128
  216.     mov al,63
  217.     rep stosb
  218.  
  219.     mov jest_czekanie,1
  220.  
  221.     mov ax,Segment2
  222.     mov es,ax
  223.     call zeroFill
  224.  
  225.     mov licznikBump,0
  226.  _part4:
  227.  
  228.     mov bx,licznikBump
  229.     add licznikBump,6
  230.     shl bx,2
  231.     mov ax,[trasaWater+0][bx]
  232.     sar ax,1
  233.     add ax,128
  234.     mov bp,ax
  235.     mov ax,[trasaWater+2][bx]
  236.     sar ax,2
  237.     add ax,54
  238.     shl ax,8
  239.     add bp,ax
  240.     mov ax,Segment2
  241.     mov es,ax
  242.     mov w es:[bp],0fefeh
  243.     cmp licznikBump,360
  244.     jl sluchamy_tiamata2
  245.     mov licznikBump,0
  246.  sluchamy_tiamata2:
  247.  
  248.     call CalculateWater
  249.     call DrawWater
  250.     call wait_vbl
  251.     call DrawWaterOnScreen
  252.     mov di,(170*320)+315-16*2
  253.     call draw_kura2
  254.     cmp wewne,30
  255.     jl bez_napis
  256.     cmp wewne,580
  257.     je outtt
  258.     cmp wewne,380
  259.     je ploe
  260.     cmp wewne,330
  261.     je ploe
  262.     cmp wewne,280
  263.     je ploe
  264.     cmp wewne,230
  265.     je ploe
  266.     cmp wewne,180
  267.     je ploe
  268.     cmp wewne,130
  269.     je ploe
  270.     cmp wewne,80
  271.     jne loe
  272.  ploe:
  273.     push es
  274.     mov ax,Segment2
  275.     mov es,ax
  276.     mov di,(256*50)+120
  277.     lea si,kura
  278.     mov ch,13
  279.  p11:    mov cl,16
  280.  p22:    mov al,cs:[si]
  281.     or al,al
  282.     jz p33
  283.     mov ax,0fefeh
  284.     mov es:[di],ax
  285.  p33:    add di,2
  286.     inc si
  287.     dec cl
  288.     jnz p22
  289.     add di,256-32
  290.     dec ch
  291.     jnz p11
  292.     pop es
  293.  loe:
  294.     mov cx,ileFont
  295.     lea si,ple5
  296.     lea di,ple6
  297.  heyOp: mov al,cs:[si]
  298.     cmp al,'$'
  299.     je outOp
  300.     mov cs:[di],al
  301.     inc si
  302.     inc di
  303.     loop heyOp
  304.  outOp: mov b cs:[di],'$'
  305.     inc ileFont
  306.     lea bp,ple6
  307.     mov di,320*180+1
  308.     mov ax,SegFont
  309.     mov ds,ax
  310.     call napis1
  311.  bez_napis:
  312.     inc wewne
  313.  
  314.     call wait_vbl
  315.     mov ax,0a000h
  316.     mov es,ax
  317.     xor di,di
  318.     mov ax,Segment0
  319.     mov ds,ax
  320.     xor si,si
  321.     mov cx,32000
  322.     rep movsw
  323.  
  324.     jmp _part4
  325. outtt:
  326.  
  327. ENDIF
  328.  
  329.  
  330. IFDEF part5
  331.  
  332.     mov ax,Segment0
  333.     mov ds,ax
  334.     mov ax,Segment2
  335.     mov es,ax
  336.     mov fs,ax
  337.     mov si,(30*320)+32
  338.     xor di,di
  339.     mov dx,128
  340.  pleR1: mov cx,256
  341.     rep movsb
  342.     add si,320-256
  343.     dec dx
  344.     jnz pleR1
  345.     mov dx,128
  346.  pleR2: mov cx,256
  347.     rep movsb
  348.     sub si,320+256
  349.     dec dx
  350.     jnz pleR2
  351.  
  352.     mov ax,Segment0
  353.     mov es,ax
  354.     xor di,di
  355.     mov al,10
  356.     mov cx,64000
  357.     rep stosb
  358.  
  359.  
  360.     mov cx,180
  361.  _part5:
  362.     push cx
  363.  
  364.     mov ax,kat_1
  365.     mov kat,ax
  366.     mov SegAdd,0
  367.     call rotater
  368.     mov ax,kat_2
  369.     mov kat,ax
  370.     mov SegAdd,1
  371.     call rotater
  372.     add kat_1,6
  373.     sub kat_2,8
  374.  
  375.  
  376.     call drawRotozoomonScreen
  377.     mov di,(170*320)+315-16*2
  378.     call draw_kura2
  379.  
  380.     call wait_vbl
  381.     mov ax,0a000h
  382.     mov es,ax
  383.     xor di,di
  384.     mov ax,Segment0
  385.     mov ds,ax
  386.     xor si,si
  387.     mov cx,32000
  388.     rep movsw
  389.  
  390.     pop cx
  391.     loop _part5
  392.  
  393.  
  394.     call flesh
  395.     call SetPal
  396.  
  397.     mov jest_czekanie,0
  398.  
  399.     lea bp,ple7
  400.     mov ax,SegFont
  401.     mov di,320*42+19
  402.     mov ds,ax
  403.     call napis4
  404.  
  405.     lea bp,ple8
  406.     mov di,320*120+19
  407.     call napis1
  408.     lea bp,ple9
  409.     mov di,320*150+19
  410.     call napis1
  411.  
  412.     mov cx,100
  413.  ddy:    call wait_vbl
  414.     loop ddy
  415.  
  416.     call maz
  417.  
  418.  
  419.  
  420. ENDIF
  421.  
  422.  
  423.     call flesh
  424.     call setpal
  425.  
  426.     mov ax,Segment3
  427.     mov fs,ax
  428.     mov es,ax
  429.     xor di,di
  430.     mov cx,65535
  431.     xor al,al
  432.     rep stosb
  433.     push cs
  434.     pop ds
  435.  
  436.     mov bx,0
  437.     mov cx,16
  438.  jajkuj:
  439.     push cx bx
  440.     xor di,di
  441.     add di,bx
  442.     call dKuraz
  443.     mov di,20
  444.     add di,bx
  445.     call dKuraz
  446.     mov di,40
  447.     add di,bx
  448.     call dKuraz
  449.     mov di,60
  450.     add di,bx
  451.     call dKuraz
  452.     mov di,80
  453.     add di,bx
  454.     call dKuraz
  455.     mov di,100
  456.     add di,bx
  457.     call dKuraz
  458.     mov di,120
  459.     add di,bx
  460.     call dKuraz
  461.     mov di,140
  462.     add di,bx
  463.     call dKuraz
  464.     mov di,160
  465.     add di,bx
  466.     call dKuraz
  467.     mov di,180
  468.     add di,bx
  469.     call dKuraz
  470.     mov di,200
  471.     add di,bx
  472.     call dKuraz
  473.     mov di,220
  474.     add di,bx
  475.     call dKuraz
  476.     mov di,240
  477.     add di,bx
  478.     call dKuraz
  479.     pop bx cx
  480.     add bx,256*16
  481.     loop jajkuj
  482.  
  483.     mov jest_czekanie,1
  484.     mov ileFont,1
  485.  
  486.     mov kolorr,119
  487.     mov wewne,0
  488.  
  489.  
  490.     mov cx,300
  491. part6:
  492.     push cx
  493.  
  494.     call kuraz
  495.     call drawKurazOnScreen
  496.  
  497.     mov di,(320*24)+134
  498.     call draw_Kura
  499.     mov di,(320*124)+134
  500.     call draw_Kura
  501.  
  502.     mov cx,ileFont
  503.     lea si,plea
  504.     lea di,ple6
  505.  heyO1: mov al,cs:[si]
  506.     cmp al,'$'
  507.     je outO1
  508.     mov cs:[di],al
  509.     inc si
  510.     inc di
  511.     loop heyO1
  512.  outO1: mov b cs:[di],'$'
  513.     inc ileFont
  514.     lea bp,ple6
  515.     mov di,320*(100-7)+10
  516.     mov ax,SegFont
  517.     mov ds,ax
  518.     call napis1
  519.  bez_napis1:
  520.     inc wewne
  521.  
  522.     cmp wewne,70
  523.     jl dpd
  524.     mov wewne,0
  525.     inc ileFont
  526.  dpd:
  527.     call wait_vbl
  528.     mov ax,0a000h
  529.     mov es,ax
  530.     xor di,di
  531.     mov ax,Segment0
  532.     mov ds,ax
  533.     xor si,si
  534.     mov cx,32000
  535.     rep movsw
  536.  
  537.     pop cx
  538.     loop part6
  539.  
  540.  
  541.  
  542.     mov jest_Czekanie,1
  543.  
  544.     mov ax,segment0
  545.     mov es,ax
  546.     call zerofill
  547.  
  548.     mov guruCol,63*3
  549.     lea bp,pleb
  550.     mov ax,SegFont
  551.     mov di,320*72+19
  552.     mov ds,ax
  553.     call napis4
  554.  
  555.     mov flesz_kura,0
  556.  
  557.     call make_Bump
  558.     call flesh
  559.  
  560.     mov ax,SegmentEkr
  561.     xor di,di
  562.     mov es,ax
  563.     xor ax,ax
  564.     mov cx,32000
  565.     rep stosw
  566.  
  567.     mov ax,Segment1
  568.     mov es,ax
  569.     xor di,di
  570.     xor ax,ax
  571.     mov cx,32000
  572.     rep stosw
  573.  
  574.  
  575.     ;mov jest_czekanie,1
  576.     lea bp,pleb
  577.     mov ax,SegFont
  578.     mov di,320*72+19
  579.     mov ds,ax
  580.     call napis4
  581.  
  582.     mov di,20*320+130
  583.     call draw_kura
  584.     mov di,20*320+60
  585.     call draw_kura
  586.     mov di,20*320+200
  587.     call draw_kura
  588.     mov di,125*320+130
  589.     call draw_kura
  590.     mov di,125*320+60
  591.     call draw_kura
  592.     mov di,125*320+200
  593.     call draw_kura
  594.     call soften
  595.     call Soften
  596.  
  597.     mov cx,180
  598.  keye2dd:
  599.     push cx
  600.  
  601.     cmp flesz_kura,0
  602.     jne pleopdd
  603.     mov flesz_kura,1
  604.     call calc_Bump
  605.     call setPal
  606.  pleopdd:
  607.     call wait_vbl
  608.     call calc_bump
  609.  
  610.     pop cx
  611.     dec cx
  612.     jnz keye2dd
  613.  
  614.  
  615.  
  616.  
  617.     mov ax,Segment3
  618.     mov es,ax
  619.     xor di,di
  620.     mov cx,65535
  621.  oddq:    mov al,es:[di]
  622.     cmp al,63
  623.     jne niccc
  624.     sub al,10    
  625.     mov es:[di],al
  626.  niccc:    inc di
  627.     loop oddq
  628.  
  629.     call flesh
  630.     call setpal
  631.  
  632.  
  633.     mov gupui,1
  634.     mov kolorr,3eh*2-13
  635.  
  636.     mov ax,Segment0
  637.     mov es,ax
  638.     xor di,di
  639.     mov al,10
  640.     mov cx,64000
  641.     rep stosb
  642.  
  643.  
  644.     mov cx,240
  645.  _part55:
  646.     push cx
  647.  
  648.     mov ax,kat_1
  649.     mov kat,ax
  650.     call rotater2
  651.     add kat_1,6
  652.     sub kat_2,8
  653.  
  654.  
  655.     call polozyc
  656.     mov di,(170*320)+315-16*2
  657.     call draw_kura2
  658.  
  659.     mov kolorr,3eh
  660.     mov ax,SegFont
  661.     mov ds,ax
  662.     lea bp,int1
  663.     mov di,320*20+10
  664.     call napis1
  665.     lea bp,int2
  666.     mov di,320*35+10
  667.     call napis1
  668.  
  669.  
  670.     mov kolorr,64+63
  671.     lea bp,int5
  672.     mov di,320*100+10
  673.     call napis1
  674.     lea bp,int6
  675.     mov di,320*115+10
  676.     call napis1
  677.     lea bp,int7
  678.     mov di,320*130+10
  679.     call napis1
  680.  
  681.     mov kolorr,64+64+64+3eh
  682.     lea bp,int8
  683.     mov di,320*155+10
  684.     call napis1
  685.  
  686.  
  687.     call wait_vbl
  688.     mov ax,0a000h
  689.     mov es,ax
  690.     xor di,di
  691.     mov ax,Segment0
  692.     mov ds,ax
  693.     xor si,si
  694.     mov cx,32000
  695.     rep movsw
  696.  
  697.     pop cx
  698.     loop _part55
  699.  
  700.     call maz
  701.  _exit:
  702.     mov ax,3
  703.     int 10h
  704.  
  705.  
  706.     ret
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717. maz:
  718.     mov ax,0a000h
  719.     mov es,ax
  720.     xor di,di
  721.     mov si,64000-320
  722.     mov cx,100
  723.  ops:    push di cx
  724.     xor al,al
  725.     mov cx,320
  726.     rep stosb
  727.     mov di,si
  728.     mov cx,320
  729.     rep stosb
  730.     pop cx di
  731.     add di,320
  732.     sub si,320
  733.     call wait_vbl
  734.     dec cx
  735.     jnz ops
  736.     ret
  737.  
  738.  
  739.  
  740.  
  741. kat_1    dw 0
  742. kat_2    dw 0
  743. ileFont dw 1
  744. wewne    dw 0    ;napis po wodzie
  745.  
  746.  
  747.  
  748. dkuraz:
  749.     lea si,kura
  750.     mov dx,13
  751.  pioa:    mov cx,16
  752.     rep movsb
  753.     add di,256-16
  754.     dec dx
  755.     jnz pioa
  756.     ret
  757.  
  758.  
  759. DrawKurazOnScreen:
  760.     mov ax,Segment1
  761.     mov ds,ax
  762.     xor si,si
  763.     mov ax,Segment0
  764.     mov es,ax
  765.     xor di,di
  766.     mov bp,200
  767.     xor bx,bx
  768.  qqw1:    mov cx,320
  769.     xor dx,dx
  770.  qqw2:    mov bl,dh
  771.     mov al,ds:[si][bx]
  772.     mov es:[di],al
  773.     mov es:[di+320],al
  774.     inc di
  775.     add dx,(256*256)/320
  776.     dec cx
  777.     jnz qqw2
  778.     add si,256
  779.     dec bp
  780.     jnz qqw1
  781.     ret
  782.  
  783. DrawWaterOnScreen:
  784.     mov ax,Segment1
  785.     mov ds,ax
  786.     mov si,128*4
  787.     mov ax,Segment0
  788.     mov es,ax
  789.     xor di,di
  790.     mov bp,100
  791.     xor bx,bx
  792.  dw1:    mov cx,320
  793.     xor dx,dx
  794.  dw2:    mov bl,dh
  795.     mov al,ds:[si][bx]
  796.     mov es:[di],al
  797.     mov es:[di+320],al
  798.     inc di
  799.     add dx,(128*256)/320
  800.     dec cx
  801.     jnz dw2
  802.     add si,128
  803.     add di,320
  804.     dec bp
  805.     jnz dw1
  806.     ret
  807.  
  808. DrawRotoZoomOnScreen:
  809.     mov ax,Segment1
  810.     mov ds,ax
  811.     xor si,si
  812.     mov ax,Segment0
  813.     mov es,ax
  814.     mov di,15
  815.     mov bp,200
  816.     xor bx,bx
  817.  dq11:    mov cx,256
  818.     xor dx,dx
  819.  dq21:    movsb
  820.     dec cx
  821.     jnz dq21
  822.     add di,320-256
  823.     dec bp
  824.     jnz dq11
  825.     ret
  826.  
  827.  
  828. ; ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  829.     INCLUDE inc\water.inc
  830.     INCLUDE inc\polozyc.inc
  831.     INCLUDE inc\tlo.inc
  832.     INCLUDE inc\rotater.inc
  833.     INCLUDE INC\kolo.inc
  834.     INCLUDE INC\kuraz.inc
  835.     INCLUDE inc\toonel.inc
  836.     INCLUDE inc\bump.inc
  837. ; ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  838.  
  839.  zeroFill:
  840.     xor di,di
  841.     xor al,al
  842.     mov cx,65535
  843.     rep stosb
  844.     ret
  845.  
  846.  jest_czekanie db 0
  847.  
  848.  napis4:
  849.     mov si,OFsFont
  850.     movzx ax,byte ptr cs:[bp]
  851.     cmp ax,'$'
  852.     je out_of_kura
  853.     imul ax,14
  854.     add si,ax
  855.     push di
  856.     mov ch,14
  857.  cz1:    mov cl,8
  858.     lodsb
  859.  cz2:    test al,10000000b
  860.     jz pli
  861.     mov bl,guruCol
  862.     mov bh,guruCol
  863.     mov es:[di+0],bx
  864.     mov es:[di+2],bx
  865.     mov es:[di+4],bx
  866.     mov es:[di+322],bx
  867.     mov es:[di+324],bx
  868.     mov es:[di+642],bx
  869.     mov es:[di+644],bx
  870.     mov es:[di+962],bx
  871.  pli:    rol al,1
  872.     add di,6
  873.     dec cl
  874.     jnz cz2
  875.     add di,(320*4)-(8*6)
  876.     dec ch
  877.     jnz cz1
  878.     pop di
  879.     add di,8*6
  880.     inc bp
  881.     cmp jest_czekanie,1
  882.     je napis4
  883.     mov cx,40
  884.  ra1:    call wait_vbl
  885.     loop ra1
  886.     jmp napis4
  887.  out_of_kura:
  888.     ret
  889.  
  890.  kolorr db 3eh
  891.  gurucol db 7fh
  892.  gupui db 0
  893.  
  894.  napis1:
  895.     mov si,OFsFont
  896.     movzx ax,byte ptr cs:[bp]
  897.     cmp ax,'$'
  898.     je oqt_of_kura
  899.     imul ax,14
  900.     add si,ax
  901.     push di
  902.     mov ch,14
  903.  cq1:    mov cl,8
  904.     lodsb
  905.  cq2:    test al,10000000b
  906.     jz pqi
  907.     mov bl,kolorr
  908.     mov b es:[di],bl
  909.  pqi:    rol al,1
  910.     inc di
  911.     dec cl
  912.     jnz cq2
  913.     add di,320-8
  914.     dec ch
  915.     jnz cq1
  916.     cmp gupui,1
  917.     je plum_P
  918.     mov d es:[di-17*320],0bfbfbfbfh
  919.     mov d es:[di-17*320+4],0bfbfbfbfh
  920.  plum_P:
  921.     pop di
  922.     add di,8
  923.     inc bp
  924.     cmp jest_czekanie,1
  925.     je napis1
  926.     mov cx,2
  927.  rq1:    call wait_vbl
  928.     loop rq1
  929.     jmp napis1
  930.  oqt_of_kura:
  931.     ret
  932.  
  933.  
  934. GetFontAddr:
  935.     mov ah,11h    ;font 8*14
  936.     mov al,30h
  937.     mov bh,2
  938.     int 10h
  939.     mov SegFont,es
  940.     mov OfsFont,bp
  941.     ret
  942.  
  943. SetPal:
  944.     call wait_vbl
  945.     xor ax,ax
  946.     mov cx,64
  947.     mov dx,03c8h
  948.  sp1:    out dx,al
  949.     inc dx
  950.     out dx,al
  951.     out dx,al
  952.     out dx,al
  953.     dec dx
  954.     inc al
  955.     dec cx
  956.     jnz Sp1
  957.     mov cx,64
  958.     mov bl,al
  959.  sp2:    mov al,bl
  960.     out dx,al
  961.     inc dx
  962.     mov al,bl
  963.     out dx,al
  964.     out dx,al
  965.     mov al,0
  966.     out dx,al
  967.     dec dx
  968.     inc bl
  969.     dec cx
  970.     jnz Sp2
  971.     mov cx,64
  972.  sp3:    mov al,bl
  973.     out dx,al
  974.     inc dx
  975.     mov al,bl
  976.     out dx,al
  977.     mov al,0
  978.     out dx,al
  979.     out dx,al
  980.     dec dx
  981.     inc bl
  982.     dec cx
  983.     jnz sp3
  984.     mov cx,64
  985.  sp4:    mov al,bl
  986.     out dx,al
  987.     inc dx
  988.     mov al,0
  989.     out dx,al
  990.     out dx,al
  991.     mov al,bl
  992.     out dx,al
  993.     dec dx
  994.     inc bl
  995.     dec cx
  996.     jnz sp4
  997.     ret
  998.  
  999.  
  1000. Wait_Vbl:
  1001.     mov dx,03dah
  1002.  hey:    in al,dx
  1003.     test al,8
  1004.     jne hey
  1005.  hey2:    in al,dx
  1006.     test al,8
  1007.     je hey2
  1008.     ret
  1009.  
  1010. flesh:
  1011.     call wait_vbl
  1012.     mov cx,256
  1013.     mov dx,03c8h
  1014.     xor bl,bl
  1015.  fl1:    mov al,bl
  1016.     out dx,al
  1017.     inc dx
  1018.     mov al,63
  1019.     out dx,al
  1020.     out dx,al
  1021.     out dx,al
  1022.     dec dx
  1023.     inc bl
  1024.     dec cx
  1025.     jnz fl1
  1026.     ret
  1027.  
  1028. draw_kura:
  1029.     lea si,kura
  1030.     mov ch,13
  1031.  dk1:    mov cl,16
  1032.  dk2:    mov al,cs:[si]
  1033.     or al,al
  1034.     jz ndk
  1035.     mov ah,al
  1036.     mov es:[di+000],ax
  1037.     mov es:[di+002],ax
  1038.     mov es:[di+320],ax
  1039.     mov es:[di+322],ax
  1040.     mov es:[di+640],ax
  1041.     mov es:[di+642],ax
  1042.     mov es:[di+960],ax
  1043.     mov es:[di+962],ax
  1044.  ndk:    add di,4
  1045.     inc si
  1046.     dec cl
  1047.     jnz dk2
  1048.     add di,(320*4)-(16*4)
  1049.     dec ch
  1050.     jnz dk1
  1051.     ret
  1052.  
  1053. draw_kura2:
  1054.     lea si,kura
  1055.     mov ch,13
  1056.  dq1:    mov cl,16
  1057.  dq2:    mov al,cs:[si]
  1058.     or al,al
  1059.     jz nqk
  1060.     mov ah,al
  1061.     mov es:[di+000],ax
  1062.     mov es:[di+320],ax
  1063.  nqk:    add di,2
  1064.     inc si
  1065.     dec cl
  1066.     jnz dq2
  1067.     add di,(320*2)-(16*2)
  1068.     dec ch
  1069.     jnz dq1
  1070.     ret
  1071.  
  1072. drawSeg1:
  1073.     mov ax,0a000h
  1074.     mov es,ax
  1075.     xor di,di
  1076.     mov ax,Segment1
  1077.     mov ds,ax
  1078.     xor si,si
  1079.     mov cx,32000
  1080.     rep movsw
  1081.     ret
  1082.  
  1083. ;es:di-segment
  1084. Soften:
  1085.     mov di,321
  1086.     mov ch,198
  1087.  sof1:    mov dx,318
  1088.  sof2:    mov al,es:[di-1]
  1089.     add al,es:[di+1]
  1090.     add al,es:[di-320]
  1091.     add al,es:[di+320]
  1092.     shr al,2
  1093.     mov es:[di],al
  1094.     inc di
  1095.     dec dx
  1096.     jnz sof2
  1097.     add di,2
  1098.     dec ch
  1099.     jnz sof1
  1100.     ret
  1101.  
  1102.  
  1103. flesz_kura db 0
  1104.  
  1105. ple    db 'FARMER$'
  1106. ple2    db 'Only KURA''s power makes it possible$'
  1107. ple3    db '+KURA+$'
  1108. ple4    db ' KURA $'
  1109. ple5    db 'Cold water+KURA = very stupid egg !$'
  1110. ple7    db 'STOP!$'
  1111. ple8    db 'And now coming up 64000 points$'
  1112. ple9    db 'big environmen KURAZ!  EGG RLZ$'
  1113. plea    db 'HERE IT IS A VERY STRANGE DUCK DUCK :($'
  1114. pleb    db '2-KURY$'
  1115.  
  1116. int1    db 'FARMER&KURA was coded in one day$'
  1117. int2    db 'in pure fucking r-mode...$' 
  1118. int5    db 'GREETINGS:$'
  1119. int6    db 'Absence,Pulse,Substance,Motion$'
  1120. int7    db 'Poison,Tcman,Camorra...and YOU$'
  1121. int8    db 'THANX FOR WATCHING DIZ 4KB$    '
  1122.  
  1123.  
  1124.  
  1125. ; ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  1126.     INCLUDE INC\kura.inc
  1127.     INCLUDE INC\vars.inc
  1128. ; ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  1129.  
  1130. code ends
  1131. end start