line.z80 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. LineToken:
  2. call ParseNextFullArg_Inc
  3. push bc
  4. call ParseNextFullArg
  5. pop de
  6. ld b,e
  7. push bc
  8. call ParseNextFullArg
  9. push bc
  10. call ParseNextFullArg
  11. pop de
  12. ld b,e
  13. push bc
  14. cp $2b
  15. ld c,1
  16. call z,ParseNextFullArg
  17. cp $2b
  18. ld a,c
  19. push af
  20. call ParseNextFullArg_BC
  21. cp $2b
  22. jr nz,L5971
  23. inc hl
  24. ld a,(hl)
  25. cp $ae
  26. jr nz,+_
  27. call ParseNextFullArg_Inc
  28. push bc
  29. jr L596f
  30. _:
  31. ld hl,$80ff
  32. push hl
  33. _:
  34. push hl
  35. call ParseNextFullArg
  36. pop hl
  37. ld (hl),c
  38. dec l
  39. jp p,+_
  40. cp $2b
  41. jr z,-_
  42. _:
  43. ld (hl),$ff
  44. L596f:
  45. pop ix
  46. L5971:
  47. pop af
  48. pop de
  49. pop hl
  50. ld c,a
  51. ld a,d
  52. sub h
  53. ld d,a
  54. ld a,e
  55. sub l
  56. ld e,a
  57. ld a,c
  58. DrawLine:
  59. di
  60. res FactorialFlag,(iy+InternalFlag)
  61. res Mod2nd,(iy+InternalFlag)
  62. bit 2,a
  63. jr z,+_
  64. set FactorialFlag,(iy+InternalFlag)
  65. _:
  66. bit 3,a
  67. jr z,+_
  68. set Mod2nd,(iy+InternalFlag)
  69. _:
  70. and $f3
  71. ld bc,$A62F
  72. dec a
  73. jr nz,+_
  74. ld bc,$00B6
  75. _:
  76. dec a
  77. jr nz,+_
  78. ld bc,$00AE
  79. _:
  80. ld ($8101),bc
  81. ld a,$ff
  82. ld ($811a),a
  83. res grayMode,(iy+InternalFlag)
  84. ld a,(ix)
  85. bit Mod2nd,(iy+InternalFlag)
  86. jr nz,+_
  87. inc a
  88. _:
  89. ld ($8109),a
  90. or a
  91. call z,L7158
  92. ld c,0
  93. ld a,d
  94. bit 7,a
  95. jr z,+_
  96. neg
  97. set 6,c
  98. ld d,a
  99. _:
  100. ld a,e
  101. bit 7,a
  102. jr z,+_
  103. neg
  104. set 7,c
  105. ld e,a
  106. _:
  107. ld b,a
  108. ex af,af'
  109. ld a,c
  110. exx
  111. rla
  112. ld de,12
  113. ld bc,1
  114. jr nc,+_
  115. ld de,-12
  116. _:
  117. rla
  118. jr nc,+_
  119. dec bc
  120. dec bc
  121. _:
  122. exx
  123. ld a,h
  124. push hl
  125. push bc
  126. ld h,00
  127. ld b,h
  128. ld c,l
  129. add hl,hl
  130. add hl,bc
  131. add hl,hl
  132. add hl,hl
  133. ld c,a
  134. sra c
  135. sra c
  136. sra c
  137. jp p,+_
  138. dec b
  139. _:
  140. add hl,bc
  141. ld bc,(gbuf_temp)
  142. add hl,bc
  143. and $07
  144. ld b,a
  145. ld a,$80
  146. jr z,+_
  147. rrca
  148. djnz $-1
  149. _:
  150. push hl
  151. exx
  152. pop hl
  153. exx
  154. ex af,af'
  155. pop bc
  156. pop hl
  157. sla e
  158. jr nz,L5a2b
  159. ld b,d
  160. _:
  161. call L5a6f
  162. call L5a5d
  163. djnz -_
  164. ret
  165. L5a2b:
  166. sla d
  167. L5a2d:
  168. call L5a6f
  169. sub d
  170. jr c,L5a39
  171. call L5a4b
  172. djnz L5a2d
  173. ret
  174. L5a39:
  175. call L5a5d
  176. add a,e
  177. jr c,L5a45
  178. call L5a6f
  179. jp L5a39
  180. L5a45:
  181. call L5a4b
  182. djnz L5a2d
  183. ret
  184. L5a4b:
  185. bit Mod2nd,(iy+InternalFlag)
  186. call nz,$8106
  187. exx
  188. add hl,de
  189. exx
  190. inc l
  191. bit 7,c
  192. ret z
  193. dec l
  194. dec l
  195. ret
  196. L5a5d:
  197. ex af,af'
  198. rrca
  199. inc h
  200. bit 6,c
  201. jr z,+_
  202. dec h
  203. dec h
  204. rlca
  205. rlca
  206. _:
  207. jr nc,+_
  208. exx
  209. add hl,bc
  210. exx
  211. _:
  212. ex af,af'
  213. ret
  214. L5a6f:
  215. bit FactorialFlag,(iy+InternalFlag)
  216. call nz,$8106
  217. bit grayMode,(iy+InternalFlag)
  218. ret nz
  219. push af
  220. ld a,l
  221. cp $40
  222. jr nc,+_
  223. ld a,h
  224. cp $60
  225. jr nc,+_
  226. ex af,af'
  227. exx
  228. call $8100
  229. exx
  230. ex af,af'
  231. _:
  232. pop af
  233. ret
  234. .echo "DrawLine : ",$-DrawLine