home *** CD-ROM | disk | FTP | other *** search
- ; taken from amiga.lib: InvertString() and FreeIEvents()
-
- section text,code
-
- xdef _MyInvertString
-
- _MyInvertString
-
- link a5,#-$10
- movem.l d6-d7/a2-a3/a6,-(sp)
- suba.l a2,a2
- moveq #$0,d7
- tst.l $8(a5)
- beq.s laa6
- movea.l $8(a5),a0
- tst.b (a0)
- bne.s laac
- laa6 moveq #$0,d0
- bra lb56
-
- laac move.l a6,-(sp)
- moveq #$16,d0
- moveq #$1,d1
- swap d1
- movea.l _SysBase(a4),a6
- nop
- jsr -$c6(a6)
- movea.l (sp)+,a6
- movea.l d0,a3
- move.l a3,d0
- bne.s laca
- moveq #$1,d7
- bra.s lb46
-
- laca move.l a2,(a3)
- movea.l a3,a2
- movea.l $8(a5),a0
- move.b (a0),d6
- moveq #$0,d0
- move.b d6,d0
- subi.w #$3c,d0
- beq.s lae6
- subi.w #$20,d0
- beq.s lafe
- bra.s lb20
-
- lae6 addq.l #$1,$8(a5)
- move.l a3,-(sp)
- pea $8(a5)
- bsr _doangle
- addq.w #$8,sp
- tst.l d0
- bne.s lb38
- moveq #$1,d7
- bra.s lb46
-
- lafe addq.l #$1,$8(a5)
- movea.l $8(a5),a0
- move.b (a0),d0
- ext.w d0
- ext.l d0
- move.l d0,-(sp)
- bsr _doesc
- addq.w #$4,sp
- move.l d0,d6
- cmpi.b #$ff,d6
- bne.s lb20
- moveq #$1,d7
- bra.s lb46
-
- lb20 moveq #$0,d0
- move.b d6,d0
- move.l a6,-(sp)
- movea.l a3,a0
- movea.l $c(a5),a1
- movea.l _CxBase(a4),a6
- nop
- jsr -$ae(a6)
- movea.l (sp)+,a6
- lb38 addq.l #$1,$8(a5)
- movea.l $8(a5),a0
- tst.b (a0)
- bne laac
- lb46 tst.l d7
- beq.s lb54
- move.l a3,-(sp)
- jsr _MyFreeIEvents
- moveq #$0,d0
- bra.s lb56
-
- lb54 move.l a2,d0
- lb56 movem.l -$24(a5),d6-d7/a2-a3/a6
- unlk a5
- rts
-
- _doesc
-
- move.l d7,-(sp)
- move.b $b(sp),d7
- move.b d7,d0
- ext.w d0
- subi.w #$22,d0
- beq.s lba4
- subq.w #$5,d0
- beq.s lba4
- subi.w #$9,d0
- beq.s lb9e
- subi.w #$c,d0
- beq.s lba4
- subi.w #$20,d0
- beq.s lba4
- subi.w #$12,d0
- beq.s lb96
- subq.w #$4,d0
- beq.s lb96
- subq.w #$2,d0
- beq.s lb9a
- bra.s lba2
-
- lb96 moveq #$d,d0
- bra.s lba6
-
- lb9a moveq #$9,d0
- bra.s lba6
-
- lb9e moveq #$0,d0
- bra.s lba6
-
- lba2 moveq #-$1,d7
- lba4 move.l d7,d0
- lba6 move.l (sp)+,d7
- rts
-
- _doangle
-
- link a5,#-$14
- movem.l d7/a2-a3/a6,-(sp)
- movea.l $8(a5),a3
- movea.l (a3),a2
- bra.s lbc6
-
- lbba moveq #$3e,d0
- cmp.b (a2),d0
- bne.s lbc4
- clr.b (a2)
- bra.s lbca
-
- lbc4 addq.l #$1,a2
- lbc6 tst.b (a2)
- bne.s lbba
- lbca move.l a6,-(sp)
- movea.l (a3),a0
- lea -$14(a5),a1
- movea.l _CxBase(a4),a6
- nop
- jsr -$84(a6)
- movea.l (sp)+,a6
- move.l d0,d7
- move.l a2,d0
- beq.s lbec
- move.b #$3e,(a2)
- move.l a2,(a3)
- bra.s lbf2
-
- lbec movea.l a2,a0
- subq.l #$1,a0
- move.l a0,(a3)
- lbf2 tst.l d7
- beq.s lbfa
- moveq #$0,d0
- bra.s lc12
-
- lbfa movea.l $c(a5),a0
- move.b -$13(a5),$4(a0)
- move.w -$12(a5),$6(a0)
- move.w -$e(a5),$8(a0)
- moveq #$1,d0
- lc12 movem.l (sp)+,d7/a2-a3/a6
- unlk a5
- rts
-
- lc1a dc.w $0
-
- xdef _MyFreeIEvents
-
- _MyFreeIEvents
-
- link a5,#-$4
- movem.l a3/a6,-(sp)
- movea.l $14(sp),a3
- bra.s lc46
-
- lc2a movea.l (a3),a0
- move.l a0,$8(sp)
- move.l a6,-(sp)
- movea.l a3,a1
- moveq #$16,d0
- movea.l _SysBase(a4),a6
- nop
- jsr -$d2(a6)
- movea.l (sp)+,a6
- movea.l $8(sp),a3
- lc46 move.l a3,d0
- bne.s lc2a
- movem.l (sp)+,a3/a6
- unlk a5
- rts
-
- xref _CxBase
- xref _SysBase
-
- end
-