home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / ftp.vapor.com / microdot-1 / md1_src_02.lzx / makerlinks.a < prev    next >
Text File  |  1989-08-24  |  963b  |  57 lines

  1.     section    "text",code
  2.  
  3.     xdef    _makerlinks    ; a0 = mix
  4. _makerlinks:
  5.     movem.l    d2-d4/a2-a3,-(sp)
  6.     move.l    $10(a0),a0        ; current
  7.  
  8. ; first, clear all links in mindex
  9.     moveq    #0,d2
  10.     moveq    #0,d3
  11.     moveq    #0,d4
  12.     move.l    a0,a1
  13. clr1:
  14.     move.l    (a1),d1
  15.     beq.s    clr2
  16.     movem.l    d2/d3/d4,8(a1)
  17.     move.l    d1,a1
  18.     bra.s    clr1
  19.  
  20. clr2:
  21.     move.l    a0,a1
  22. mr1:
  23.     move.l    (a1),d0
  24.     beq.s    exmr
  25.     move.l    d2,a2    ; a2 = FIRSTBEZ = NULL
  26.     move.l    $28(a1),d3    ; d3 = current->m.midcrc
  27.     move.l    a0,d1    ; (d1) = a3 = bez
  28. bezl:
  29.     move.l    d1,a3
  30.     move.l    (a3),d1
  31.     beq.s    exbez
  32.     tst.l    $8(a3)        ; bez->parent != NULL?
  33.     bne.s    bezl
  34.     cmp.l    $2c(a3),d3    ; Bezcrc
  35.     bne.s    bezl
  36. bezfound:
  37.     move.l    a1,$8(a3)    ; bez->parent = current
  38.     move.l    a2,d4    ; FIRSTBEZ?
  39.     beq.s    nofirstbez
  40.     move.l    a3,$c(a2)    ; firstbez->bezlink = bez
  41.     move.l    a3,a2        ; firstbez = bez
  42.     bra.s    bezl
  43. nofirstbez:
  44.     move.l    a3,$10(a1)    ; current->firstbez = bez;
  45.     move.l    a3,a2        ; firstbez = bez
  46.     bra.s    bezl
  47.  
  48. exbez:
  49.     move.l    d0,a1
  50.     bra.s    mr1
  51.  
  52. exmr:
  53.     movem.l    (sp)+,d2-d4/a2-a3
  54.     rts
  55.  
  56.     END
  57.