home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / TextEditors&Viewers / Texteditors / NextStep16.lha / NextStep / source / cx.a next >
Encoding:
Text File  |  1994-09-26  |  4.9 KB  |  213 lines

  1. ; taken from amiga.lib: InvertString() and FreeIEvents()
  2.  
  3.       section text,code
  4.  
  5.       xdef _MyInvertString
  6.  
  7. _MyInvertString
  8.  
  9.       link           a5,#-$10
  10.       movem.l        d6-d7/a2-a3/a6,-(sp)
  11.       suba.l         a2,a2
  12.       moveq          #$0,d7
  13.       tst.l          $8(a5)
  14.       beq.s          laa6
  15.       movea.l        $8(a5),a0
  16.       tst.b          (a0)
  17.       bne.s          laac
  18. laa6  moveq          #$0,d0
  19.       bra            lb56
  20.  
  21. laac  move.l         a6,-(sp)
  22.       moveq          #$16,d0
  23.       moveq          #$1,d1
  24.       swap           d1
  25.       movea.l        _SysBase(a4),a6
  26.       nop
  27.       jsr            -$c6(a6)
  28.       movea.l        (sp)+,a6
  29.       movea.l        d0,a3
  30.       move.l         a3,d0
  31.       bne.s          laca
  32.       moveq          #$1,d7
  33.       bra.s          lb46
  34.  
  35. laca  move.l         a2,(a3)
  36.       movea.l        a3,a2
  37.       movea.l        $8(a5),a0
  38.       move.b         (a0),d6
  39.       moveq          #$0,d0
  40.       move.b         d6,d0
  41.       subi.w         #$3c,d0
  42.       beq.s          lae6
  43.       subi.w         #$20,d0
  44.       beq.s          lafe
  45.       bra.s          lb20
  46.  
  47. lae6  addq.l         #$1,$8(a5)
  48.       move.l         a3,-(sp)
  49.       pea            $8(a5)
  50.       bsr            _doangle
  51.       addq.w         #$8,sp
  52.       tst.l          d0
  53.       bne.s          lb38
  54.       moveq          #$1,d7
  55.       bra.s          lb46
  56.  
  57. lafe  addq.l         #$1,$8(a5)
  58.       movea.l        $8(a5),a0
  59.       move.b         (a0),d0
  60.       ext.w          d0
  61.       ext.l          d0
  62.       move.l         d0,-(sp)
  63.       bsr            _doesc
  64.       addq.w         #$4,sp
  65.       move.l         d0,d6
  66.       cmpi.b         #$ff,d6
  67.       bne.s          lb20
  68.       moveq          #$1,d7
  69.       bra.s          lb46
  70.  
  71. lb20  moveq          #$0,d0
  72.       move.b         d6,d0
  73.       move.l         a6,-(sp)
  74.       movea.l        a3,a0
  75.       movea.l        $c(a5),a1
  76.       movea.l        _CxBase(a4),a6
  77.       nop
  78.       jsr            -$ae(a6)
  79.       movea.l        (sp)+,a6
  80. lb38  addq.l         #$1,$8(a5)
  81.       movea.l        $8(a5),a0
  82.       tst.b          (a0)
  83.       bne            laac
  84. lb46  tst.l          d7
  85.       beq.s          lb54
  86.       move.l         a3,-(sp)
  87.       jsr            _MyFreeIEvents
  88.       moveq          #$0,d0
  89.       bra.s          lb56
  90.  
  91. lb54  move.l         a2,d0
  92. lb56  movem.l        -$24(a5),d6-d7/a2-a3/a6
  93.       unlk           a5
  94.       rts
  95.  
  96. _doesc
  97.  
  98.       move.l         d7,-(sp)
  99.       move.b         $b(sp),d7
  100.       move.b         d7,d0
  101.       ext.w          d0
  102.       subi.w         #$22,d0
  103.       beq.s          lba4
  104.       subq.w         #$5,d0
  105.       beq.s          lba4
  106.       subi.w         #$9,d0
  107.       beq.s          lb9e
  108.       subi.w         #$c,d0
  109.       beq.s          lba4
  110.       subi.w         #$20,d0
  111.       beq.s          lba4
  112.       subi.w         #$12,d0
  113.       beq.s          lb96
  114.       subq.w         #$4,d0
  115.       beq.s          lb96
  116.       subq.w         #$2,d0
  117.       beq.s          lb9a
  118.       bra.s          lba2
  119.  
  120. lb96  moveq          #$d,d0
  121.       bra.s          lba6
  122.  
  123. lb9a  moveq          #$9,d0
  124.       bra.s          lba6
  125.  
  126. lb9e  moveq          #$0,d0
  127.       bra.s          lba6
  128.  
  129. lba2  moveq          #-$1,d7
  130. lba4  move.l         d7,d0
  131. lba6  move.l         (sp)+,d7
  132.       rts
  133.  
  134. _doangle
  135.  
  136.       link           a5,#-$14
  137.       movem.l        d7/a2-a3/a6,-(sp)
  138.       movea.l        $8(a5),a3
  139.       movea.l        (a3),a2
  140.       bra.s          lbc6
  141.  
  142. lbba  moveq          #$3e,d0
  143.       cmp.b          (a2),d0
  144.       bne.s          lbc4
  145.       clr.b          (a2)
  146.       bra.s          lbca
  147.  
  148. lbc4  addq.l         #$1,a2
  149. lbc6  tst.b          (a2)
  150.       bne.s          lbba
  151. lbca  move.l         a6,-(sp)
  152.       movea.l        (a3),a0
  153.       lea            -$14(a5),a1
  154.       movea.l        _CxBase(a4),a6
  155.       nop
  156.       jsr            -$84(a6)
  157.       movea.l        (sp)+,a6
  158.       move.l         d0,d7
  159.       move.l         a2,d0
  160.       beq.s          lbec
  161.       move.b         #$3e,(a2)
  162.       move.l         a2,(a3)
  163.       bra.s          lbf2
  164.  
  165. lbec  movea.l        a2,a0
  166.       subq.l         #$1,a0
  167.       move.l         a0,(a3)
  168. lbf2  tst.l          d7
  169.       beq.s          lbfa
  170.       moveq          #$0,d0
  171.       bra.s          lc12
  172.  
  173. lbfa  movea.l        $c(a5),a0
  174.       move.b         -$13(a5),$4(a0)
  175.       move.w         -$12(a5),$6(a0)
  176.       move.w         -$e(a5),$8(a0)
  177.       moveq          #$1,d0
  178. lc12  movem.l        (sp)+,d7/a2-a3/a6
  179.       unlk           a5
  180.       rts
  181.  
  182. lc1a dc.w           $0
  183.  
  184.       xdef _MyFreeIEvents
  185.  
  186. _MyFreeIEvents
  187.  
  188.       link           a5,#-$4
  189.       movem.l        a3/a6,-(sp)
  190.       movea.l        $14(sp),a3
  191.       bra.s          lc46
  192.  
  193. lc2a  movea.l        (a3),a0
  194.       move.l         a0,$8(sp)
  195.       move.l         a6,-(sp)
  196.       movea.l        a3,a1
  197.       moveq          #$16,d0
  198.       movea.l        _SysBase(a4),a6
  199.       nop
  200.       jsr            -$d2(a6)
  201.       movea.l        (sp)+,a6
  202.       movea.l        $8(sp),a3
  203. lc46  move.l         a3,d0
  204.       bne.s          lc2a
  205.       movem.l        (sp)+,a3/a6
  206.       unlk           a5
  207.       rts
  208.  
  209.       xref  _CxBase
  210.       xref  _SysBase
  211.  
  212.       end
  213.