home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / tyrant / kocka / kocka.asm next >
Encoding:
Assembly Source File  |  1995-03-17  |  29.0 KB  |  1,232 lines

  1. ;                             By Megaduo / Grif
  2.  
  3.                                 .286
  4.                                 .model large
  5.                                 .stack 170h
  6.                                 .data
  7. valt    db      0
  8. pdx       dw      0
  9. pdi       dw      0
  10. vegetomb  db      80 dup(0,1,3,7)
  11. elejetomb db      80 dup(14,12,8,0)
  12. ;vegetomb2  db     80 dup(1,3,7,15)
  13. ;elejetomb2 db     80 dup(15,14,12,8)
  14.  
  15. xtomb     db      4 dup (0)
  16.           db      4 dup (1)
  17.           db      4 dup (2)
  18.           db      4 dup (3)
  19.           db      4 dup (4)
  20.           db      4 dup (5)
  21.           db      4 dup (6)
  22.           db      4 dup (7)
  23.           db      4 dup (8)
  24.           db      4 dup (9)
  25.           db      4 dup (10)
  26.           db      4 dup (11)
  27.           db      4 dup (12)
  28.           db      4 dup (13)
  29.           db      4 dup (14)
  30.           db      4 dup (15)
  31.           db      4 dup (16)
  32.           db      4 dup (17)
  33.           db      4 dup (18)
  34.           db      4 dup (19)
  35.           db      4 dup (20)
  36.           db      4 dup (21)
  37.           db      4 dup (22)
  38.           db      4 dup (23)
  39.           db      4 dup (24)
  40.           db      4 dup (25)
  41.           db      4 dup (26)
  42.           db      4 dup (27)
  43.           db      4 dup (28)
  44.           db      4 dup (29)
  45.           db      4 dup (30)
  46.           db      4 dup (31)
  47.           db      4 dup (32)
  48.           db      4 dup (33)
  49.           db      4 dup (34)
  50.           db      4 dup (35)
  51.           db      4 dup (36)
  52.           db      4 dup (37)
  53.           db      4 dup (38)
  54.           db      4 dup (39)
  55.           db      4 dup (40)
  56.           db      4 dup (41)
  57.           db      4 dup (42)
  58.           db      4 dup (43)
  59.           db      4 dup (44)
  60.           db      4 dup (45)
  61.           db      4 dup (46)
  62.           db      4 dup (47)
  63.           db      4 dup (48)
  64.           db      4 dup (49)
  65.           db      4 dup (50)
  66.           db      4 dup (51)
  67.           db      4 dup (52)
  68.           db      4 dup (53)
  69.           db      4 dup (54)
  70.           db      4 dup (55)
  71.           db      4 dup (56)
  72.           db      4 dup (57)
  73.           db      4 dup (58)
  74.           db      4 dup (59)
  75.           db      4 dup (60)
  76.           db      4 dup (61)
  77.           db      4 dup (62)
  78.           db      4 dup (63)
  79.           db      4 dup (64)
  80.           db      4 dup (65)
  81.           db      4 dup (66)
  82.           db      4 dup (67)
  83.           db      4 dup (68)
  84.           db      4 dup (69)
  85.           db      4 dup (70)
  86.           db      4 dup (71)
  87.           db      4 dup (72)
  88.           db      4 dup (73)
  89.           db      4 dup (74)
  90.           db      4 dup (75)
  91.           db      4 dup (76)
  92.           db      4 dup (77)
  93.           db      4 dup (78)
  94.           db      4 dup (79)
  95.           db      4 dup (80)
  96.  
  97.  
  98. kozepx    dw      160
  99. kozepy    dw      100
  100. lap       dw      0
  101. kozeledes dw      450
  102. ttmut     dw      0,0
  103. tdb       dw      1,1
  104. torlt     dw      1200 dup (2,2)
  105. szin      db      0
  106. xkul      dw      0
  107. ykul      dw      0
  108. fyt       dw      1200 dup (0)
  109. tv        dw      0
  110. kezdety   dw      600
  111. vegy      dw      -10
  112. v         dw      0
  113. vx1       dw      0
  114. vx2       dw      0
  115. vy1       dw      0
  116. vy2       dw      0
  117. kix       dw      10 dup (0)
  118. kiy       dw      10 dup (0)
  119. sin       dw      0,2,4,7,9,11,13,16,18,20,22,24,27,29,31,33,35,37,40,42
  120.           dw      44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,73,75,77,79,81
  121.           dw      82,84,86,87,89,91,92,94,95,97,98,99,101,102,104,105,106,107,109,110
  122.           dw      111,112,113,114,115,116,117,118,119,119,120,121,122,122,123,124,124,125,125,126
  123.           dw      126,126,127,127,127,128,128,128,128,128,128,128,128,128,128,128,127,127,127,126
  124.           dw      126,126,125,125,124,124,123,122,122,121,120,119,119,118,117,116,115,114,113,112
  125.           dw      111,110,109,107,106,105,104,102,101,99,98,97,95,94,92,91,89,87,86,84
  126.           dw      82,81,79,77,75,73,72,70,68,66,64,62,60,58,56,54,52,50,48,46
  127.           dw      44,42,40,37,35,33,31,29,27,24,22,20,18,16,13,11,9,7,4,2
  128.           dw      0,-2,-4,-7,-9,-11,-13,-16,-18,-20,-22,-24,-27,-29,-31,-33,-35,-37,-40,-42
  129.           dw      -44,-46,-48,-50,-52,-54,-56,-58,-60,-62,-64,-66,-68,-70,-72,-73,-75,-77,-79,-81
  130.           dw      -82,-84,-86,-87,-89,-91,-92,-94,-95,-97,-98,-99,-101,-102,-104,-105,-106,-107,-109,-110
  131.           dw      -111,-112,-113,-114,-115,-116,-117,-118,-119,-119,-120,-121,-122,-122,-123,-124,-124,-125,-125,-126
  132.           dw      -126,-126,-127,-127,-127,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-127,-127,-127,-126
  133.           dw      -126,-126,-125,-125,-124,-124,-123,-122,-122,-121,-120,-119,-119,-118,-117,-116,-115,-114,-113,-112
  134.           dw      -111,-110,-109,-107,-106,-105,-104,-102,-101,-99,-98,-97,-95,-94,-92,-91,-89,-87,-86,-84
  135.           dw      -82,-81,-79,-77,-75,-73,-72,-70,-68,-66,-64,-62,-60,-58,-56,-54,-52,-50,-48,-46
  136.           dw      -44,-42,-40,-37,-35,-33,-31,-29,-27,-24,-22,-20,-18,-16,-13,-11,-9,-7,-4,-2
  137.  
  138. cos       dw      128,128,128,128,128,128,127,127,127,126,126,126,125,125,124,124,123,122,122,121
  139.           dw      120,119,119,118,117,116,115,114,113,112,111,110,109,107,106,105,104,102,101,99
  140.           dw      98,97,95,94,92,91,89,87,86,84,82,81,79,77,75,73,72,70,68,66
  141.           dw      64,62,60,58,56,54,52,50,48,46,44,42,40,37,35,33,31,29,27,24
  142.           dw      22,20,18,16,13,11,9,7,4,2,0,-2,-4,-7,-9,-11,-13,-16,-18,-20
  143.           dw      -22,-24,-27,-29,-31,-33,-35,-37,-40,-42,-44,-46,-48,-50,-52,-54,-56,-58,-60,-62
  144.           dw      -64,-66,-68,-70,-72,-73,-75,-77,-79,-81,-82,-84,-86,-87,-89,-91,-92,-94,-95,-97
  145.           dw      -98,-99,-101,-102,-104,-105,-106,-107,-109,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-119
  146.           dw      -120,-121,-122,-122,-123,-124,-124,-125,-125,-126,-126,-126,-127,-127,-127,-128,-128,-128,-128,-128
  147.           dw      -128,-128,-128,-128,-128,-128,-127,-127,-127,-126,-126,-126,-125,-125,-124,-124,-123,-122,-122,-121
  148.           dw      -120,-119,-119,-118,-117,-116,-115,-114,-113,-112,-111,-110,-109,-107,-106,-105,-104,-102,-101,-99
  149.           dw      -98,-97,-95,-94,-92,-91,-89,-87,-86,-84,-82,-81,-79,-77,-75,-73,-72,-70,-68,-66
  150.           dw      -64,-62,-60,-58,-56,-54,-52,-50,-48,-46,-44,-42,-40,-37,-35,-33,-31,-29,-27,-24
  151.           dw      -22,-20,-18,-16,-13,-11,-9,-7,-4,-2,0,2,4,7,9,11,13,16,18,20
  152.           dw      22,24,27,29,31,33,35,37,40,42,44,46,48,50,52,54,56,58,60,62
  153.           dw      64,66,68,70,72,73,75,77,79,81,82,84,86,87,89,91,92,94,95,97
  154.           dw      98,99,101,102,104,105,106,107,109,110,111,112,113,114,115,116,117,118,119,119
  155.           dw      120,121,122,122,123,124,124,125,125,126,126,126,127,127,127,128,128,128,128,128
  156.  
  157.  
  158. xtt       dw      -128, 128,-128, 128,-128, 128,-128, 128
  159. ytt       dw      -128,-128, 128, 128,-128,-128, 128, 128
  160. ztt       dw      -128,-128,-128,-128, 128, 128, 128, 128
  161. xt        dw      10 dup (0)
  162. yt        dw      10 dup (0)
  163. zt        dw      10 dup (0)
  164. x         dw      0
  165. y         dw      0
  166. z         dw      0
  167. x1        dw      0
  168. y1        dw      0
  169. z1        dw      0
  170. x2        dw      0
  171. y2        dw      0
  172. z2        dw      0
  173. a         dw      0
  174. b         dw      0
  175. g         dw      0
  176. zz        dw      0
  177. xy        dw      0
  178. ;                 R  G  B
  179. szint     db   16 dup (0)
  180. szintbl1  db      40,50,40,00,00,50,00
  181. szintbl2  db      40,50,00,00,40,00,00
  182. szintbl3  db      40,00,40,30,40,00,60
  183.                                 .code
  184.           mov ax,@data
  185.           mov ds,ax
  186.           mov ax,0a000h
  187.           mov es,ax
  188.         mov     ax,12h
  189.         int     10h
  190.         mov     ax,13h
  191.         int     10h
  192.         mov     dx,3c4h
  193.         mov     ax,0604h
  194.         out     dx,ax
  195.         mov     dx,3d4h
  196.         mov     ax,0014h
  197.         out     dx,ax
  198.         mov     ax,0e317h
  199.         out     dx,ax
  200.  
  201.           mov bl,1
  202.           xor si,si
  203.           mov cx,64
  204.           mov ah,64
  205. szinbe:   mov dx,3c8h
  206.           mov al,bl
  207.           out dx,al
  208.           mov dx,3c9h
  209.  
  210.           mov al,ah
  211.           out dx,al
  212.           xor al,al
  213.           out dx,al
  214.           mov al,ah
  215.           out dx,al
  216.           dec ah
  217.           inc bl
  218.           loop szinbe
  219.           cli
  220.  
  221.         push    es
  222.         mov     ax,0a000h
  223.         mov     es,ax
  224.         xor     di,di
  225.         xor     ax,ax
  226.         mov     cx,8000h
  227.         rep     stosw
  228.         pop     es
  229.  
  230.          mov fyt[0],180
  231.          mov fyt[2],150
  232.  
  233. eleje:
  234. ;{kepvalt!}
  235.         mov     lap,0
  236.         mov     cx,8000h
  237.         mov     bx,0a000h
  238.         mov     ax,es
  239.         cmp     ax,0a000h
  240.         jne     lessz0
  241.         mov     bx,0a800h
  242.         xor     cx,cx
  243.         mov     lap,1
  244. lessz0: mov     es,bx
  245.         mov     dx,3d4h         ;set offset
  246.         mov     al,0ch
  247.         mov     ah,ch
  248.         out     dx,ax
  249.         mov     dx,3d4h
  250.         mov     al,0dh
  251.         mov     ah,cl
  252.         out     dx,ax
  253. ;-------------------------
  254. ak:
  255.         mov     dx,3dah
  256. rafs:   in      ax,dx
  257.         and     al,8
  258.         jnz     rafs
  259. rasf:   in      ax,dx
  260.         and     al,8
  261.         jz      rasf
  262. ;-------------------------
  263.          mov dx,3c8h
  264.          mov al,0
  265.          out dx,al
  266.          mov dx,3c9h
  267.          mov al,20
  268.          out dx,al
  269.          out dx,al
  270.          out dx,al
  271.  
  272.         mov     bp,lap
  273.         mov     si,bp
  274.         mov     ax,2400
  275.         mul     si
  276.         mov     si,ax
  277.         rol     bp,1
  278.  
  279.           mov dx,3c4h
  280.           mov al,2
  281.           mov ah,0fh
  282.           out dx,ax
  283.  
  284.           mov cx,ds:[tdb+bp]
  285.           xor al,al
  286.           inc cx
  287. tci:      push cx
  288.           mov di,ds:[torlt+si]
  289.           mov cx,ds:[torlt+si+2]
  290.           inc   cx
  291.           add si,4
  292.           rep stosb
  293.           pop cx
  294.           loop tci
  295.  
  296.  
  297.           mov ds:[tdb+bp],0
  298.           mov ds:[ttmut+bp],0
  299.           cmp   lap,0
  300.           je    lap0
  301.          mov ds:[ttmut+bp],2400
  302. lap0:
  303.  
  304.  
  305.           call e
  306.           call k
  307.           call h
  308. ;----------------------
  309.  
  310.           mov ax,kiy[2*2]      ;ax:=kiy[2]-kiy[1]
  311.           sub ax,kiy[1*2]
  312.           push ax
  313.           mov ax,kix[0*2]      ;ax:=kix[0]-kix[1]
  314.           sub ax,kix[1*2]
  315.           pop bx               ; *
  316.           imul bx
  317.           push ax
  318.  
  319.           mov ax,kiy[0*2]      ;ax:=kiy[0]-kiy[1]
  320.           sub ax,kiy[1*2]
  321.           push ax
  322.  
  323.           mov ax,kix[2*2]      ;kix[2]-kix[1]
  324.           sub ax,kix[1*2]
  325.           pop bx
  326.           imul bx              ;*
  327.           pop bx
  328.           sub bx,ax
  329.           js l1
  330.           jmp l2
  331. l1: 
  332.           mov al,szint[1]
  333.           mov szin,al
  334.           mov ax,kix[0]
  335.           mov vx1,ax
  336.           mov ax,kiy[0]
  337.           mov vy1,ax
  338.           mov ax,kix[2*2]
  339.           mov vx2,ax
  340.           mov ax,kiy[2*2]
  341.           mov vy2,ax
  342.           call von
  343.  
  344.           mov ax,kix[2*2]
  345.           mov vx1,ax
  346.           mov ax,kiy[2*2]
  347.           mov vy1,ax
  348.           mov ax,kix[3*2]
  349.           mov vx2,ax
  350.           mov ax,kiy[3*2]
  351.           mov vy2,ax
  352.           call von
  353.  
  354.           mov ax,kix[3*2]
  355.           mov vx1,ax
  356.           mov ax,kiy[3*2]
  357.           mov vy1,ax
  358.           mov ax,kix[1*2]
  359.           mov vx2,ax
  360.           mov ax,kiy[1*2]
  361.           mov vy2,ax
  362.           call von
  363.  
  364.           mov ax,kix[1*2]
  365.           mov vx1,ax
  366.           mov ax,kiy[1*2]
  367.           mov vy1,ax
  368.           mov ax,kix[0*2]
  369.           mov vx2,ax
  370.           mov ax,kiy[0*2]
  371.           mov vy2,ax
  372.           call von
  373.           call fill
  374.  
  375. l2:
  376.           mov ax,kiy[3*2]      ;ax:=kiy[2]-kiy[1]
  377.           sub ax,kiy[5*2]
  378.           push ax
  379.           mov ax,kix[1*2]      ;ax:=kix[0]-kix[1]
  380.           sub ax,kix[5*2]
  381.           pop bx               ; *
  382.           imul bx
  383.           push ax
  384.  
  385.           mov ax,kiy[1*2]      ;ax:=kiy[0]-kiy[1]
  386.           sub ax,kiy[5*2]
  387.           push ax
  388.  
  389.           mov ax,kix[3*2]      ;kix[2]-kix[1]
  390.           sub ax,kix[5*2]
  391.           pop bx
  392.           imul bx              ;*
  393.           pop bx
  394.           sub bx,ax
  395.           js la2
  396.           jmp l3
  397. la2:
  398.           mov al,szint[2]
  399.           mov szin,al
  400.           mov ax,kix[1*2]
  401.           mov vx1,ax
  402.           mov ax,kiy[1*2]
  403.           mov vy1,ax
  404.           mov ax,kix[5*2]
  405.           mov vx2,ax
  406.           mov ax,kiy[5*2]
  407.           mov vy2,ax
  408.           call von
  409.  
  410.           mov ax,kix[5*2]
  411.           mov vx1,ax
  412.           mov ax,kiy[5*2]
  413.           mov vy1,ax
  414.           mov ax,kix[7*2]
  415.           mov vx2,ax
  416.           mov ax,kiy[7*2]
  417.           mov vy2,ax
  418.           call von
  419.  
  420.           mov ax,kix[7*2]
  421.           mov vx1,ax
  422.           mov ax,kiy[7*2]
  423.           mov vy1,ax
  424.           mov ax,kix[3*2]
  425.           mov vx2,ax
  426.           mov ax,kiy[3*2]
  427.           mov vy2,ax
  428.           call von
  429.  
  430.           mov ax,kix[3*2]
  431.           mov vx1,ax
  432.           mov ax,kiy[3*2]
  433.           mov vy1,ax
  434.           mov ax,kix[1*2]
  435.           mov vx2,ax
  436.           mov ax,kiy[1*2]
  437.           mov vy2,ax
  438.           call von
  439.           call fill
  440.    
  441. l3:      
  442.           mov ax,kiy[4*2]      ;ax:=kiy[2]-kiy[1]
  443.           sub ax,kiy[7*2]
  444.           push ax
  445.           mov ax,kix[6*2]      ;ax:=kix[0]-kix[1]
  446.           sub ax,kix[7*2]
  447.           pop bx               ; *
  448.           imul bx
  449.           push ax
  450.  
  451.           mov ax,kiy[6*2]      ;ax:=kiy[0]-kiy[1]
  452.           sub ax,kiy[7*2]
  453.           push ax
  454.  
  455.           mov ax,kix[4*2]      ;kix[2]-kix[1]
  456.           sub ax,kix[7*2]
  457.           pop bx
  458.           imul bx              ;*
  459.           pop bx
  460.           sub bx,ax
  461.           js la3
  462.           jmp l4
  463. la3:
  464.           mov al,szint[3]
  465.           mov szin,al
  466.           mov ax,kix[6*2]
  467.           mov vx1,ax
  468.           mov ax,kiy[6*2]
  469.           mov vy1,ax
  470.           mov ax,kix[4*2]
  471.           mov vx2,ax
  472.           mov ax,kiy[4*2]
  473.           mov vy2,ax
  474.           call von
  475.  
  476.           mov ax,kix[4*2]
  477.           mov vx1,ax
  478.           mov ax,kiy[4*2]
  479.           mov vy1,ax
  480.           mov ax,kix[5*2]
  481.           mov vx2,ax
  482.           mov ax,kiy[5*2]
  483.           mov vy2,ax
  484.           call von
  485.  
  486.           mov ax,kix[5*2]
  487.           mov vx1,ax
  488.           mov ax,kiy[5*2]
  489.           mov vy1,ax
  490.           mov ax,kix[7*2]
  491.           mov vx2,ax
  492.           mov ax,kiy[7*2]
  493.           mov vy2,ax
  494.           call von
  495.  
  496.           mov ax,kix[7*2]
  497.           mov vx1,ax
  498.           mov ax,kiy[7*2]
  499.           mov vy1,ax
  500.           mov ax,kix[6*2]
  501.           mov vx2,ax
  502.           mov ax,kiy[6*2]
  503.           mov vy2,ax
  504.           call von
  505.           call fill
  506. l4:
  507.           mov ax,kiy[0*2]      ;ax:=kiy[2]-kiy[1]
  508.           sub ax,kiy[5*2]
  509.           push ax
  510.           mov ax,kix[4*2]      ;ax:=kix[0]-kix[1]
  511.           sub ax,kix[5*2]
  512.           pop bx               ; *
  513.           imul bx
  514.           push ax
  515.  
  516.           mov ax,kiy[4*2]      ;ax:=kiy[0]-kiy[1]
  517.           sub ax,kiy[5*2]
  518.           push ax
  519.  
  520.           mov ax,kix[0*2]      ;kix[2]-kix[1]
  521.           sub ax,kix[5*2]
  522.           pop bx
  523.           imul bx              ;*
  524.           pop bx
  525.           sub bx,ax
  526.           js la4
  527.           jmp l5
  528. la4:
  529.           mov al,szint[4]
  530.           mov szin,al
  531.           mov ax,kix[4*2]
  532.           mov vx1,ax
  533.           mov ax,kiy[4*2]
  534.           mov vy1,ax
  535.           mov ax,kix[0*2]
  536.           mov vx2,ax
  537.           mov ax,kiy[0*2]
  538.           mov vy2,ax
  539.           call von
  540.  
  541.           mov ax,kix[0*2]
  542.           mov vx1,ax
  543.           mov ax,kiy[0*2]
  544.           mov vy1,ax
  545.           mov ax,kix[1*2]
  546.           mov vx2,ax
  547.           mov ax,kiy[1*2]
  548.           mov vy2,ax
  549.           call von
  550.  
  551.           mov ax,kix[1*2]
  552.           mov vx1,ax
  553.           mov ax,kiy[1*2]
  554.           mov vy1,ax
  555.           mov ax,kix[5*2]
  556.           mov vx2,ax
  557.           mov ax,kiy[5*2]
  558.           mov vy2,ax
  559.           call von
  560.  
  561.           mov ax,kix[5*2]
  562.           mov vx1,ax
  563.           mov ax,kiy[5*2]
  564.           mov vy1,ax
  565.           mov ax,kix[4*2]
  566.           mov vx2,ax
  567.           mov ax,kiy[4*2]
  568.           mov vy2,ax
  569.           call von
  570.           call fill
  571.  
  572. l5:
  573.           mov ax,kiy[6*2]      ;ax:=kiy[2]-kiy[1]
  574.           sub ax,kiy[0*2]
  575.           push ax
  576.           mov ax,kix[4*2]      ;ax:=kix[0]-kix[1]
  577.           sub ax,kix[0*2]
  578.           pop bx               ; *
  579.           imul bx
  580.           push ax
  581.  
  582.           mov ax,kiy[4*2]      ;ax:=kiy[0]-kiy[1]
  583.           sub ax,kiy[0*2]
  584.           push ax
  585.  
  586.           mov ax,kix[6*2]      ;kix[2]-kix[1]
  587.           sub ax,kix[0*2]
  588.           pop bx
  589.           imul bx              ;*
  590.           pop bx
  591.           sub bx,ax
  592.           js la5
  593.           jmp l6
  594. la5:
  595.           mov al,szint[5]
  596.           mov szin,al
  597.           mov ax,kix[4*2]
  598.           mov vx1,ax
  599.           mov ax,kiy[4*2]
  600.           mov vy1,ax
  601.           mov ax,kix[0*2]
  602.           mov vx2,ax
  603.           mov ax,kiy[0*2]
  604.           mov vy2,ax
  605.           call von
  606.  
  607.           mov ax,kix[0*2]
  608.           mov vx1,ax
  609.           mov ax,kiy[0*2]
  610.           mov vy1,ax
  611.           mov ax,kix[2*2]
  612.           mov vx2,ax
  613.           mov ax,kiy[2*2]
  614.           mov vy2,ax
  615.           call von
  616.  
  617.           mov ax,kix[2*2]
  618.           mov vx1,ax
  619.           mov ax,kiy[2*2]
  620.           mov vy1,ax
  621.           mov ax,kix[6*2]
  622.           mov vx2,ax
  623.           mov ax,kiy[6*2]
  624.           mov vy2,ax
  625.           call von
  626.  
  627.           mov ax,kix[6*2]
  628.           mov vx1,ax
  629.           mov ax,kiy[6*2]
  630.           mov vy1,ax
  631.           mov ax,kix[4*2]
  632.           mov vx2,ax
  633.           mov ax,kiy[4*2]
  634.           mov vy2,ax
  635.           call von
  636.           call fill
  637. l6:
  638.           mov ax,kiy[6*2]      ;ax:=kiy[2]-kiy[1]
  639.           sub ax,kiy[3*2]
  640.           push ax
  641.           mov ax,kix[2*2]      ;ax:=kix[0]-kix[1]
  642.           sub ax,kix[3*2]
  643.           pop bx               ; *
  644.           imul bx
  645.           push ax
  646.  
  647.           mov ax,kiy[2*2]      ;ax:=kiy[0]-kiy[1]
  648.           sub ax,kiy[3*2]
  649.           push ax
  650.  
  651.           mov ax,kix[6*2]      ;kix[2]-kix[1]
  652.           sub ax,kix[3*2]
  653.           pop bx
  654.           imul bx              ;*
  655.           pop bx
  656.           sub bx,ax
  657.           js la6
  658.           jmp l7
  659. la6:
  660.           mov al,szint[6]
  661.           mov szin,al
  662.           mov ax,kix[2*2]
  663.           mov vx1,ax
  664.           mov ax,kiy[2*2]
  665.           mov vy1,ax
  666.           mov ax,kix[6*2]
  667.           mov vx2,ax
  668.           mov ax,kiy[6*2]
  669.           mov vy2,ax
  670.           call von
  671.  
  672.           mov ax,kix[6*2]
  673.           mov vx1,ax
  674.           mov ax,kiy[6*2]
  675.           mov vy1,ax
  676.           mov ax,kix[7*2]
  677.           mov vx2,ax
  678.           mov ax,kiy[7*2]
  679.           mov vy2,ax
  680.           call von
  681.  
  682.           mov ax,kix[7*2]
  683.           mov vx1,ax
  684.           mov ax,kiy[7*2]
  685.           mov vy1,ax
  686.           mov ax,kix[3*2]
  687.           mov vx2,ax
  688.           mov ax,kiy[3*2]
  689.           mov vy2,ax
  690.           call von
  691.  
  692.           mov ax,kix[3*2]
  693.           mov vx1,ax
  694.           mov ax,kiy[3*2]
  695.           mov vy1,ax
  696.           mov ax,kix[2*2]
  697.           mov vx2,ax
  698.           mov ax,kiy[2*2]
  699.           mov vy2,ax
  700.           call von
  701.           call fill
  702. l7:
  703.  
  704.  
  705.           mov dx,3c8h
  706.           mov al,0
  707.           out dx,al
  708.           mov dx,3c9h
  709.           mov al,0
  710.           out dx,al
  711.           out dx,al
  712.           out dx,al
  713.           add a,4
  714.           cmp a,720
  715.           jne ata1
  716.           mov a,0
  717. ata1:
  718.           add b,2
  719.           cmp b,720
  720.           jne atb1
  721.           mov b,0
  722. atb1:
  723.           add g,6
  724.           cmp g,720
  725.           jne atg1
  726.           mov g,0
  727. atg1:
  728.  
  729. billf:
  730.         mov     dx,60h
  731.         in      al,dx
  732.         cmp     al,1
  733.         jne     nende
  734.         jmp     vege
  735.  
  736. nende:  cmp     al,39h
  737.         je      billf
  738.         cmp     al,12
  739.         jne     ntav
  740.         cmp     kozeledes,2000
  741.         jnb     ntav
  742.         add     kozeledes,5
  743. ntav:   cmp     al,13
  744.         jne     nkoz
  745.         cmp     kozeledes,310
  746.         jna     nkoz
  747.         sub     kozeledes,5
  748. nkoz:
  749.  
  750.         cmp     al,'H'
  751.         jne     nfel
  752.         inc fyt[0]
  753. nfel:   cmp     al,'P'
  754.         jne     nle
  755.         dec fyt[0]
  756. nle:
  757.         cmp al,'M'
  758.         jne njobb
  759.         inc fyt[2]
  760. njobb:
  761.         cmp al,'K'
  762.         jne njobb2
  763.         dec fyt[2]
  764. njobb2:
  765.         jmp     eleje
  766.  
  767.  
  768. vege:
  769.           sti
  770.           mov   ah,0
  771.           mov   al,3h
  772.           int   10h
  773.  
  774.           mov  ah,4ch
  775.           mov  al,0
  776.           int  21h
  777.           jmp  ende
  778. ;proc!!!!!!
  779. e:        mov cx,8
  780.           xor si,si
  781. init:     mov ax,xtt[si]
  782.           mov xt[si],ax
  783.  
  784.           mov ax,ytt[si]
  785.           mov yt[si],ax
  786.  
  787.           mov ax,ztt[si]
  788.           mov zt[si],ax
  789.           add si,2
  790.           loop init
  791.           ret
  792.  
  793. k:        mov cx,8
  794.           xor si,si
  795. jcikl:    mov ax,xt[si]
  796.           mov x,ax
  797.           mov ax,yt[si]
  798.           mov y,ax
  799.           mov ax,zt[si]
  800.           mov z,ax
  801. ;--------x1----------
  802.           mov di,a
  803.           mov ax,y
  804.           imul sin[di]
  805.           push ax
  806.           mov ax,x
  807.           imul cos[di]
  808.           pop bx
  809.           add bx,ax
  810.           sar bx,7
  811.           mov x1,bx
  812. ;--------y1----------
  813.           mov ax,y
  814.           imul cos[di]
  815.           push ax
  816.           mov ax,x
  817.           imul sin[di]
  818.           pop bx
  819.           sub bx,ax
  820.           sar bx,7
  821.           mov y1,bx
  822.  
  823. ;--------x2----------
  824.           mov di,b
  825.           mov ax,x1
  826.           imul cos[di]
  827.           push ax
  828.           mov ax,z
  829.           imul sin[di]
  830.           pop bx
  831.           sub bx,ax
  832.           sar bx,7
  833.           mov x2,bx
  834. ;--------z1----------
  835.           mov ax,z
  836.           imul cos[di]
  837.           push ax
  838.           mov ax,x1
  839.           imul sin[di]
  840.           pop bx
  841.           add bx,ax
  842.           sar bx,7
  843.           mov z1,bx
  844. ;--------y2----------
  845.           mov di,g
  846.           mov ax,z1
  847.           imul sin[di]
  848.           push ax
  849.           mov ax,y1
  850.           imul cos[di]
  851.           pop bx
  852.           add bx,ax
  853.           sar bx,7
  854.           mov y2,bx
  855. ;--------z2----------
  856.           mov ax,z1
  857.           imul cos[di]
  858.           push ax
  859.           mov ax,y1
  860.           imul sin[di]
  861.           pop bx
  862.           sub bx,ax
  863.           sar bx,7
  864.           mov z2,bx
  865. ;--------------------------------------------------------
  866.           mov ax,x2
  867.           mov xt[si],ax
  868.           mov ax,y2
  869.           mov yt[si],ax
  870.           mov ax,z2
  871.           mov zt[si],ax
  872. ;----------------------------
  873.           add si,2
  874.           dec cx
  875.           jz ki
  876.           jmp jcikl
  877. ki:
  878.           mov ax,zt[0*2]
  879.           add ax,zt[3*2]
  880.           shr ax,2
  881.           mov szint[1],al
  882.  
  883.           mov ax,zt[1*2]
  884.           add ax,zt[7*2]
  885.           shr ax,2
  886.           mov szint[2],al
  887.  
  888.           mov ax,zt[6*2]
  889.           add ax,zt[5*2]
  890.           shr ax,2
  891.           mov szint[3],al
  892.  
  893.           mov ax,zt[4*2]
  894.           add ax,zt[1*2]
  895.           shr ax,2
  896.           mov szint[4],al
  897.  
  898.           mov ax,zt[4*2]
  899.           add ax,zt[2*2]
  900.           shr ax,2
  901.           mov szint[5],al
  902.  
  903.           mov ax,zt[2*2]
  904.           add ax,zt[7*2]
  905.           shr ax,2
  906.           mov szint[6],al
  907.           ret
  908.  
  909.  
  910. h:        mov cx,8
  911.           xor si,si
  912. percikl:  mov ax,xt[si]
  913.           mov bx,100
  914.           imul bx
  915.           mov bx,zt[si]
  916.           add bx,kozeledes
  917.           idiv bx
  918.           mov kix[si],ax
  919.  
  920.           mov ax,yt[si]
  921.           mov bx,100
  922.           imul bx
  923.           mov bx,zt[si]
  924.           add bx,kozeledes
  925.           idiv bx
  926.           mov kiy[si],ax
  927.  
  928.           add si,2
  929.           loop percikl
  930.           ret
  931.  
  932. von:      mov ax,kozepx
  933.           add vx1,ax
  934.           add vx2,ax
  935.           mov ax,kozepy
  936.           add vy1,ax
  937.           add vy2,ax
  938.           mov tv,0
  939.           mov ax,vy1
  940.           cmp ax,vy2
  941.           jl ncs
  942.           mov tv,2
  943.           mov ax,vy2
  944.           xchg vy1,ax
  945.           mov vy2,ax
  946.  
  947.           mov ax,vx2
  948.           xchg vx1,ax
  949.           mov vx2,ax
  950.  
  951. ncs:
  952.           mov ax,vy1
  953.           cmp kezdety,ax
  954.           jl  kjo                              ;kezdet beallitasa
  955.           mov kezdety,ax
  956. kjo:                                           ;veg beallitasa
  957.           mov ax,vy2
  958.           cmp vegy,ax
  959.           jg  vjo
  960.           mov vegy,ax
  961. vjo:
  962.           mov ax,vy2
  963.           sub ax,vy1
  964.           mov ykul,ax
  965.           mov ax,vx2
  966.           cmp vx1,ax
  967.           jb  ke
  968.           mov ax,vx1
  969.           sub ax,vx2
  970.           mov xkul,ax
  971.           jmp dontes
  972. ke:       mov ax,vx2
  973.           sub ax,vx1
  974.           mov xkul,ax
  975.  
  976. dontes:   mov ax,ykul
  977.           cmp xkul,ax
  978.           jb hn
  979.           mov ax,vx2
  980.           cmp vx1,ax
  981.           jbe egyhiv
  982.  
  983.           jmp ketto
  984.  
  985. hn:       mov ax,vx2
  986.           cmp vx1,ax
  987.           jbe haromhiv
  988.           jmp negy
  989.  
  990. egyhiv:   jmp egy
  991.  
  992. haromhiv: jmp harom
  993. ;----------------------------
  994. egy:                      ;di=y       dx=x
  995.           mov     ax,xkul
  996.           shr     ax,1
  997.           mov     v,ax
  998.                           
  999.           mov di,vy1
  1000.           shl di,2
  1001.  
  1002.           mov dx,vx1
  1003.           mov cx,xkul
  1004.           mov bx,tv
  1005.           inc cx
  1006. egy1:
  1007.           mov fyt[di+bx],dx
  1008.           mov ax,ykul
  1009.           add v,ax
  1010.           mov ax,xkul
  1011.           cmp v,ax
  1012.           jb at1
  1013.           sub v,ax
  1014.           add di,4
  1015. at1:      inc dx
  1016.           loop egy1
  1017.           ret
  1018.  
  1019. ketto:
  1020.           mov     ax,ykul
  1021.           shr     ax,1
  1022.           mov     v,ax
  1023.           mov di,vy1
  1024.           shl di,2
  1025.  
  1026. ;          mov di,4
  1027. ;          mul di
  1028. ;          mov di,ax
  1029.           mov dx,vx1
  1030.           mov cx,xkul
  1031.           inc cx
  1032.           mov bx,tv
  1033. ketto1:
  1034.           mov fyt[di+bx],dx
  1035.           mov ax,ykul
  1036.           add v,ax
  1037.           mov ax,xkul
  1038.           cmp v,ax
  1039.           jb at2
  1040.           sub v,ax
  1041.           add di,4
  1042. at2:      dec dx
  1043.           loop ketto1
  1044.           ret
  1045.  
  1046. harom:
  1047.           mov     ax,xkul
  1048.           shr     ax,1
  1049.           mov     v,ax
  1050.           mov di,vy1
  1051.           shl di,2
  1052.  
  1053. ;          mov di,4
  1054. ;          mul di
  1055. ;          mov di,ax
  1056.           mov dx,vx1
  1057.           mov cx,ykul
  1058.           mov bx,tv
  1059.           inc cx
  1060. harom1:
  1061.           mov fyt[di+bx],dx
  1062.           mov ax,xkul
  1063.           add v,ax
  1064.           mov ax,ykul
  1065.           cmp v,ax
  1066.           jb at3
  1067.           sub v,ax
  1068.           inc dx
  1069. at3:      add di,4
  1070.           loop harom1
  1071.           ret
  1072.  
  1073. negy:
  1074.           mov     ax,Ykul
  1075.           shr     ax,1
  1076.           mov     v,ax
  1077.           mov di,vy1
  1078.           shl di,2
  1079. ;          mov di,4
  1080. ;          mul di
  1081. ;          mov di,ax
  1082.           mov dx,vx1
  1083.           mov cx,ykul
  1084.           mov bx,tv
  1085.           inc cx
  1086. negy1:
  1087.           mov fyt[di+bx],dx
  1088.           mov ax,xkul
  1089.           add v,ax
  1090.           mov ax,ykul
  1091.           cmp v,ax
  1092.           jb at4
  1093.           sub v,ax
  1094.           dec dx
  1095. at4:      add di,4
  1096.           loop negy1
  1097.           ret
  1098.  
  1099.  
  1100.  
  1101.  
  1102. fill:     pusha
  1103.           sub szin,185
  1104. ;          mov szin,2
  1105.           mov bx,kezdety
  1106.           mov ax,80
  1107.           mul bx
  1108.           mov dx,ax
  1109.  
  1110.           mov si,kezdety
  1111.           shl si,2
  1112.           mov cx,vegy
  1113.           sub cx,kezdety
  1114.           mov bx,ds:[ttmut+bp]    ;bp-ben az aktualislap
  1115. ;          inc cx
  1116. ;            mov cx,1
  1117. ;            xor si,si
  1118. ;            mov dx,100*80
  1119. yc:
  1120. ;        mov     fyt[0+si],100
  1121. ;        mov     fyt[2+si],101
  1122.  
  1123.           push cx
  1124.         
  1125.           mov   ax,fyt[2+si]
  1126.           sub   ax,fyt[0+si]
  1127.           jns elojel
  1128.           mov   ax,fyt[0+si]
  1129.           xchg  fyt[2+si],ax
  1130.           mov   fyt[0+si],ax
  1131. elojel:
  1132.           inc   fyt[2+si]
  1133.  
  1134.           mov cx,fyt[2+si]
  1135.           shr   cx,2
  1136.           mov ax,fyt[0+si]
  1137.           shr   ax,2
  1138.           sub   cx,ax
  1139.  
  1140.         
  1141.         mov     valt,0
  1142.           cmp cx,0
  1143.           jg okay2
  1144.           mov   valt,1
  1145. ;          push bx
  1146. ;          mov bx,0
  1147. ;          jmp kina
  1148. okay2:
  1149.  
  1150.           mov di,fyt[0+si]
  1151.           shr di,2
  1152.           add di,dx
  1153.  
  1154.           mov pdi,di
  1155.         push    cx
  1156.           mov pdx,dx
  1157.           mov dx,3c4h
  1158.           mov al,2
  1159.           mov ah,0fh
  1160.           out dx,ax
  1161.            mov torlt[bx],di
  1162.            mov torlt[bx+2],cx
  1163.            add bx,4
  1164.            inc ds:[tdb+bp]  ;bp-ben a lapvaltas
  1165.            dec cx
  1166.           cmp   cx,0
  1167.           jle   nemko2
  1168.           inc   di
  1169.           mov al,szin
  1170.           rep stosb
  1171. nemko2:
  1172.         pop     cx
  1173. ; di tol kell rakni az elejet!
  1174.  
  1175.           mov di,fyt[0+si]
  1176.           mov ah,elejetomb[di]
  1177.           mov di,fyt[2+si]
  1178.           mov al,vegetomb[di]
  1179.           cmp valt,0
  1180.           je   v1
  1181.           and   ah,al
  1182. v1:       cmp ah,0
  1183.           je nemeleje2
  1184.           mov dx,3c4h
  1185.           mov al,2
  1186.           out dx,ax
  1187.           mov di,pdi
  1188.           mov al,szin
  1189.           mov es:[di],al
  1190. nemeleje2:
  1191.  
  1192.           mov di,fyt[2+si]
  1193.           mov ah,vegetomb[di]
  1194.           mov di,fyt[0+si]
  1195.           mov al,elejetomb[di]
  1196.           cmp valt,0
  1197.           je  v0
  1198.           and   ah,al
  1199. v0:       cmp ah,0
  1200.           je elejetki2
  1201.           mov dx,3c4h
  1202.           mov al,2
  1203.           out dx,ax
  1204.           mov di,pdi
  1205.           add di,cx
  1206.           mov al,szin
  1207.           mov es:[di],al
  1208.           mov dx,pdx
  1209.  
  1210. elejetki2:
  1211.           mov dx,pdx
  1212.  
  1213. atneg:
  1214.           add dx,80
  1215.           pop cx
  1216.           add si,4
  1217.           dec cx
  1218.           jz kyc
  1219.           jmp yc
  1220. kyc:
  1221.            mov ds:[ttmut+bp],bx  ;bp-ben a lapvaltas
  1222.           popa
  1223.           mov kezdety,2000
  1224.           mov vegy,-10
  1225.           ret
  1226. ende:
  1227.  
  1228.  
  1229.  
  1230.  
  1231. end
  1232.