MMBC

(not finished) ez80 asm bresenham

Aug 2nd, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .nolist
  2. #include "ti84pce.inc"
  3. .list
  4.  
  5.     .assume ADL=1
  6.     .org UserMem-2
  7.     .db tExtTok,tAsm84CeCmp
  8.    
  9.     call _ClrLCDFull
  10.     ld a, $27
  11.     ld ($E30018), a
  12.    
  13.     ld hl, $0
  14.     ld (mpLCDPalette), hl
  15.     ld hl, $7C00
  16.     ld (mpLCDPalette+2), hl
  17.    
  18.     ld hl, 10
  19.     push hl
  20.     ld hl, 20
  21.     push hl
  22.     ld ix, 0
  23.     add ix, sp
  24.     ld a, 10
  25.     ld (ix+5), a
  26.     ld a, 40
  27.     ld (ix+2), a
  28.     ld a, 1
  29.     call __Line_NoClip_ASM
  30.     pop hl
  31.     pop hl
  32.    
  33.     ld a, $2D
  34.     ld ($E30018), a
  35.    
  36.     call _HomeUp
  37.    
  38.     ret
  39.    
  40. __Line_NoClip_ASM:
  41.     ; arg0: y1 (1byte) x1 (2bytes)
  42.     ; arg2: y2 (1byte) x2 (2bytes)
  43.     ; a = color
  44.     ld (color), a
  45.     ld ix, 0
  46.     add ix, sp
  47.     lea ix, ix+3
  48.     or a
  49.     sbc hl, hl
  50.     push hl
  51.     pop bc
  52.     ld l, (ix+0)
  53.     ld h, (ix+1)
  54.     ld c, (ix+3)
  55.     ld b, (ix+4)
  56.     ld a, c
  57.     ld (x), a
  58.     ld a, b
  59.     ld (x+1), a
  60.     sbc hl, bc
  61.     jp p, +_
  62.     ld a, -1
  63.     ld (sx), a
  64.     jr ++_
  65. _:
  66.     ld a, 1
  67.     ld (sx), a
  68. _:
  69.     ex de, hl
  70.     call _abs24de
  71.     push hl
  72.     or a
  73.     sbc hl, hl
  74.     push hl
  75.     pop bc
  76.     ld l, (ix+2)
  77.     ld c, (ix+5)
  78.     ld a, c
  79.     ld (y), a
  80.     sbc hl, bc
  81.     jp p, +_
  82.     ld a, -1
  83.     ld (sy), a
  84.     jr ++_
  85. _:
  86.     ld a, 1
  87.     ld (sy), a
  88. _:
  89.     ex de, hl
  90.     call _abs24de
  91.     pop de
  92.     add hl, de
  93.     ld (err), hl
  94.     or a
  95.     sbc hl, de
  96.     push de
  97.     push hl
  98. _:
  99.     ld hl, (x)
  100.     ex.s de, hl
  101.     ld a, (y)
  102.     ld l, a
  103.     ld h, 160
  104.     mlt hl
  105.     add hl, hl
  106.     add hl, de
  107.     ld bc, $D40000
  108.     add hl, bc
  109.     ld a, (color)
  110.     ld (hl), a
  111.    
  112.    
  113.     ld de, (x)
  114.     ld hl, (ix)
  115.     or a, a
  116.     sbc hl, de
  117.     jp z, +_
  118.    
  119.     ld hl, (err)
  120.     add hl, hl
  121.     ld (e2), hl
  122.    
  123.     pop bc
  124.     push bc
  125.     or a, a
  126.     sbc hl, bc
  127.     jp m, e2dx
  128.     ld hl, (err)
  129.     add hl, bc
  130.     ld (err), hl
  131.     ld hl, (x)
  132.     ex.s de, hl
  133.     ld a, (sx)
  134.     ld e, a
  135.     ld d, 0
  136.     add hl, de
  137.     ld a, l
  138.     ld (x), a
  139.     ld a, h
  140.     ld (x+1), a
  141.  
  142. e2dx:
  143.     pop bc
  144.     pop de
  145.     push de
  146.     push bc
  147.     or a, a
  148.     sbc hl, de
  149.     jp p, eob
  150.     ld hl, (err)
  151.     add hl, de
  152.     ld (err), hl
  153.     ld a, (y)
  154.     ld h, a
  155.     ld a, (sy)
  156.     add a, h
  157.     ld (y), a
  158.    
  159. eob:
  160.     jp -_
  161. _:
  162.     pop bc
  163.     pop bc
  164.     ret
  165. sx:
  166.     nop
  167. sy:
  168.     nop
  169. x:
  170.     nop
  171.     nop
  172. y:
  173.     nop
  174. err:
  175.     nop
  176.     nop
  177. e2:
  178.     nop
  179.     nop
  180. color:
  181.     nop
  182.    
  183.     nop
  184.     nop
  185.     nop
  186.  
  187. __idivs_ASM:
  188. ; Performs signed interger division
  189. ; Inputs:
  190. ;  HL : Operand 1
  191. ;  BC : Operand 2
  192. ; Outputs:
  193. ;  HL = HL/BC
  194.     ex  de,hl
  195.     xor a,a
  196.     sbc hl,hl
  197.     sbc hl,bc
  198.     jp  p,+_
  199.     push    hl
  200.     pop bc
  201.     inc a
  202.  
  203. _:  or  a,a
  204.     sbc hl,hl
  205.     sbc hl,de
  206.     jp  m,+_
  207.     ex  de,hl
  208.     inc a
  209.  
  210. _:  add hl,de
  211.     rra
  212.     ld  a,24
  213.  
  214. _:  ex  de,hl
  215.     adc hl,hl
  216.     ex  de,hl
  217.     adc hl,hl
  218.     add hl,bc
  219.     jr  c,+_
  220.     sbc hl,bc
  221. _:  dec a
  222.     jr  nz,--_
  223.  
  224.     ex  de,hl
  225.     adc hl,hl
  226.     ret c
  227.     ex  de,hl
  228.     sbc hl,hl
  229.     sbc hl,de
  230.     ret
  231.  
  232. __imuls_ASM:
  233. __imulu_ASM:
  234. ; Performs (un)signed integer multiplication
  235. ; Inputs:
  236. ;  HL : Operand 1
  237. ;  BC : Operand 2
  238. ; Outputs:
  239. ;  HL = HL*BC
  240.     push    bc
  241.     push    hl
  242.     ex  de,hl
  243.     ld  hl,2
  244.     add hl,sp
  245.     ld  b,(hl)
  246.     mlt bc
  247.     inc hl
  248.     inc hl
  249.     inc hl
  250.     ld  a,d
  251.     ld  d,(hl)
  252.     mlt de
  253.     dec hl
  254.     ld  l,(hl)
  255.     ld  h,a
  256.     mlt hl
  257.     ld  a,l
  258.     add a,e
  259.     add a,c
  260.     pop de
  261.     pop bc
  262.     push    bc
  263.     or  a,a
  264.     sbc hl,hl
  265.     add.s   hl,de
  266.     ex  de,hl
  267.     ld  h,b
  268.     mlt hl
  269.     ld  b,d
  270.     mlt bc
  271.     add hl,bc
  272.     add a,h
  273.     ld  h,a
  274.     pop bc
  275.     ld  d,c
  276.     mlt de
  277.     add hl,hl
  278.     add hl,hl
  279.     add hl,hl
  280.     add hl,hl
  281.     add hl,hl
  282.     add hl,hl
  283.     add hl,hl
  284.     add hl,hl
  285.     add hl,de
  286.     ret
  287.  
  288. _abs24de:
  289.     sbc hl, hl
  290.     adc hl, de
  291.     jp p, +_
  292.     or a, a
  293.     sbc hl, hl
  294.     sbc hl,de
  295. _:
  296.     ret
Advertisement
Add Comment
Please, Sign In to add comment