Фрактал лист папортника

Тема в разделе "WASM.DOS/BIOS/Vesa/ports", создана пользователем Mikl___, 27 дек 2016.

  1. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.708
    [​IMG]
    Исходный код и сом-файл здесь
    Код (ASM):
    1.  
    2. ; masm dos com #
    3. .286
    4. .model tiny
    5. .code
    6.   ClipX2    EQU  640
    7.   ClipY2    EQU  480
    8. org 100h
    9. start:
    10. ;Semilla---------------------------------------------------------
    11. mov ah, 0           ; CLOCK - GET TIME OF DAY
    12. int 1Ah ; Return: CX:DX = clock count
    13. ; AL = 00h if clock was read or written (via AH=0,1) since the previous
    14. ; midnight
    15. ; Otherwise, AL > 0
    16. mov word_101CA, dx
    17. mov cx,37h
    18. push cs
    19. pop es
    20. mov si,offset word_101CA
    21. lea di,[si+1]
    22.                 mov bx,3DCDh
    23. @@: lodsw
    24. mul bx
    25. inc ax
    26. stosw
    27. loop @b
    28. mov word ptr [si],2Ah
    29. mov ax,12h
    30. int 10h ; - VIDEO - SET VIDEO MODE
    31. finit
    32. DrawFern:
    33.     ; Propуsito : Dibuja una hoja de helecho
    34.     ; Entrada   : Ninguna
    35.     ; Salida    : Ninguna
    36.     ; Destruye  : Ninguna
    37. ;Randomization--------------------------------------------
    38. mov bx,word_10238
    39. inc bx
    40. cmp bx,37h
    41. jnz @f
    42. xor bx,bx
    43. @@: mov word_10238,bx
    44. lea ax,[bx+17h]
    45. mov dl,37h
    46. div dl
    47. shr ax,8
    48. mov si,ax
    49. mov cx,word_101CA[si]
    50. lea ax,[bx+36h]
    51. div dl
    52. shr ax,8
    53. mov si,ax
    54. add cx,word_101CA[si]
    55. mov word_101CA[bx], cx
    56. mov ax,10000    ; Rango
    57. mul cx
    58. ;--------------------------------------------------------------------
    59. mov bx,7*2*3             ; Suponemos AX < 100
    60. cmp dx,9300
    61. jb Siguiente1
    62. mov bx,7*2*0
    63. jmp Final
    64. Siguiente1: cmp dx,8600
    65. jb Siguiente2
    66. mov bx,7*2*1
    67. jmp Final
    68. Siguiente2: cmp dx,100
    69. jb Final
    70. mov bx,7*2*2
    71. Final: mov si,offset ParamFern+2
    72. add si,bx
    73. mov di,offset x0
    74. mov cx,6
    75. rep movsw
    76.                 ; Xn = x0 + ((xu - x0)*x + (xv - x0)*y)/400
    77. fild xu         ; ST(0)=xu
    78. fisub x0         ; ST(0)=xu-x0
    79. fmul X          ; ST(0)=(xu-x0)*x
    80. fild xv         ; ST(0)=xv
    81. fisub x0         ; ST(0)=xv-x0
    82. fmul Y          ; ST(0)=(xv-x)*y
    83. faddp st(1),st   ; ST(0)=((xu - x0)*x + (xv - x0)*y) y Liberamos ST(1)
    84. fidiv const400
    85. fiadd x0
    86.                 ; Yn = y0 + ((yu - y0)*x + (yv - y0)*y)/400
    87. fild yu
    88. fisub y0
    89. fmul X
    90. fild Yv
    91. fisub y0
    92. fmul Y
    93. faddp st(1), st
    94. fidiv const400
    95. fiadd y0
    96.                 ; x = Xn: y = Yn
    97. fst Y
    98. fchs    ;st(0)=-Y
    99. fistp R2Tmp
    100. mov dx,R2Tmp
    101.                 fst X
    102. add dx,440 ; dx = 440 - Y
    103. fistp R2Tmp
    104. mov cx,R2Tmp
    105. add cx,10  ; cx = x + 10
    106. ClipPixel: ; PSET (x + 10, 440 - y)
    107.     ;  Propуsito: Dibujamos un punto con recorte en (BX,DX)
    108.     ;  Entrada  : BX, eje X; DX, eje Y; AL, color
    109.     ;  Salida   : Ninguna
    110.     ;  Destruye : Ninguna
    111. ;IF (BX>0) && (BX<ClipX2) && (DX>0) && (DX<ClipY2)
    112. cmp cx, ClipX2    ; CX = column
    113. jnb @f
    114. cmp dx, ClipY2    ; DX = row
    115. jnb @f            ; BH = 0 display page
    116. mov ax, 0C0Ah     ; AH = 0Ch WRITE DOT ON SCREEN
    117. int 10h ; AL = color of dot
    118. @@: dec i
    119. jnz DrawFern
    120. xor ah,ah ; їQueremos salir?
    121. int 16h                 ; Si no pulsamos ninguna tecla
    122. mov ax,3
    123. int 10h ; - VIDEO - SET VIDEO MODE
    124. ret
    125. ;--------------------------------------------------------------
    126. i dw ClipX2*ClipY2
    127. word_101CA dw 37h dup(?)
    128. word_10238 dw ?
    129. x0 dw ?
    130. y0 dw ?
    131. xu dw ?
    132. yu dw ?
    133. xv dw ?
    134. Yv dw ?
    135. const400 dw 400
    136. X dd 200.0
    137. Y dd 200.0
    138. R2Tmp dw ?
    139. ParamFern dw 2, 184, 0,  124, 64,  333, 82    ; Primer valor es el color
    140.                 DW 2, 128, 34, 208, 103, 0,   122   ; Primer valor es el color
    141.                 DW 2, 24,  57, 364, 45,  45,  397   ; Primer valor es el color
    142.                 DW 2, 160, 0,  160, 0,   160, 64    ; Primer valor es el color
    143. end start
    144.  
     

    Вложения:

    • 00.png
      00.png
      Размер файла:
      55,1 КБ
      Просмотров:
      1.250
    • fractall.zip
      Размер файла:
      1,9 КБ
      Просмотров:
      768
    >Quiet Snow<, gazlan и _edge нравится это.