Advertisement
Guest User

Untitled

a guest
Apr 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. org 100h
  2. jmp EntryPoint
  3. ;__________________________________________________________________________________________________________________________________________
  4. Video.OldMode db ?
  5. Video.OldPage db ?
  6. Radius dw 55
  7. XC dw 160
  8. YC dw 100
  9.  
  10.  
  11. ;__________________________________________________________________________________________________________________________________________
  12. EntryPoint:
  13. mov ah, $0F
  14. int 10h
  15. mov [Video.OldMode], al
  16. mov [Video.OldPage], bh
  17.  
  18. mov ax, $0013
  19. int 10h
  20.  
  21. mov ax, $A000
  22. mov es, ax
  23.  
  24. call WhiteFrame
  25.  
  26. mov ax, [Radius]
  27. push ax
  28. mov ax, [XC]
  29. push ax
  30. mov ax, [YC]
  31. push ax
  32. call BresenhamCircle
  33.  
  34. call PressAnyKey
  35. movzx ax, [Video.OldMode]
  36. int 10h
  37. mov ah, $05
  38. mov al, [Video.OldPage]
  39. int 10h
  40. ret
  41.  
  42. PressAnyKey:
  43. mov ax, $0C08
  44. int 21h
  45. test al, al
  46. jnz @F
  47. mov ah, $08
  48. int 21h
  49. @@:
  50. ret
  51.  
  52. ; Expects - Radius (+8), XCenter (+6), YCenter (+4)
  53. ; Local Params: X (-2), Y(-4), Delta (-6), Error(-8)
  54. BresenhamCircle:
  55. push bp
  56. mov bp, sp
  57. sub sp, 8
  58. push ax
  59. push bx
  60. push di
  61.  
  62. mov word [bp - 8], 0
  63. mov word [bp - 2], 0
  64. mov ax, [bp + 8]
  65. mov word [bp - 4], ax
  66. mov bl, 2
  67. mul bl
  68. neg ax
  69. inc ax
  70. mov word [bp - 6], ax
  71.  
  72. .LoopDraw:
  73. mov ax, word [bp - 2]
  74. push ax
  75. mov ax, word [bp - 4]
  76. push ax
  77. mov ax, word [bp + 6]
  78. push ax
  79. mov ax, word [bp + 4]
  80. push ax
  81. call DrawQ
  82.  
  83.  
  84. mov ax, [bp - 6]
  85. add ax, [bp - 4]
  86. mov bl, 2
  87. imul bl
  88. sub ax, 1
  89. mov word [bp - 8], ax
  90.  
  91. cmp word [bp - 6], 0
  92. jge .skipIf1
  93. cmp word [bp - 8], 0
  94. jg .skipIf1
  95.  
  96. add word [bp - 2], 1
  97. mov ax, word[bp - 2]
  98. shl ax, 1
  99. add ax, 1
  100. add word [bp - 6], ax
  101. jmp .EndLoop
  102.  
  103. .skipIf1:
  104. mov ax, word [bp - 6]
  105. sub ax, word [bp - 2]
  106. mov bl, 2
  107. imul bl
  108. sub ax, 1
  109. mov word [bp - 8], ax
  110.  
  111. cmp word [bp - 6], 0
  112. jle .skipIf2
  113. cmp word [bp - 8], 0
  114. jle .skipIf2
  115.  
  116. sub word [bp - 4], 1
  117. mov ax, word [bp - 4]
  118. shl ax, 1
  119. neg ax
  120. add ax, 1
  121. add word [bp - 6], ax
  122. jmp .EndLoop
  123.  
  124. .skipIf2:
  125. add word [bp - 2], 1
  126. mov ax, word [bp - 2]
  127. sub ax, word [bp - 4]
  128. shl ax, 1
  129. add [bp - 6], ax
  130. sub word [bp - 4], 1
  131.  
  132. .EndLoop:
  133. cmp word [bp - 4], 0
  134. jge .LoopDraw
  135.  
  136. pop di
  137. pop bx
  138. pop ax
  139. mov sp, bp
  140. pop bp
  141. ret 6
  142.  
  143. ; Expects x(+10) Y(+8) XC(+6) YC(+4)
  144. DrawQ:
  145. push bp
  146. mov bp, sp
  147. sub sp, 2
  148. push ax
  149. push bx
  150. push cx
  151.  
  152. mov ax, [bp + 6]
  153. sub ax, [bp + 10]
  154. mov word [bp - 2], ax
  155. mov cx, ax
  156. add cx, [bp + 10]
  157. add cx, [bp + 10]
  158.  
  159. .LoopDraw:
  160. mov ax, [bp + 4]
  161. sub ax, [bp + 8]
  162. mov bx, 320
  163. mul bx
  164. add ax, [bp - 2]
  165. mov bx, ax
  166. mov byte [es:bx], 4
  167.  
  168. mov ax, [bp + 4]
  169. add ax, [bp + 8]
  170. mov bx, 320
  171. mul bx
  172. add ax, [bp - 2]
  173. mov bx, ax
  174. mov byte [es:bx], 4
  175.  
  176.  
  177. inc word [bp - 2]
  178. cmp word [bp - 2], cx
  179. jna .LoopDraw
  180.  
  181. pop cx
  182. pop bx
  183. pop ax
  184. mov sp, bp
  185. pop bp
  186. ret 8
  187.  
  188. WhiteFrame:
  189. push bx
  190. lea bx, [320 * 200 - 1]
  191.  
  192. .LoopDraw:
  193. mov byte [es:bx], 15
  194. sub bx, 1
  195. cmp bx, $FFFF
  196. jne .LoopDraw
  197.  
  198. pop bx
  199. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement