home *** CD-ROM | disk | FTP | other *** search
- ; (4,a7) - estr
- ; (8,a7) - str
- ; (12,a7) - length=-1
-
- xdef _EStrAdd
-
- _EStrAdd movem.l d2-d3/a2,-(a7)
- moveq #0,d0
- move.w (14+12,a7),d0 ; read word only
- move.l (8+12,a7),a1
- move.l (4+12,a7),a0
- moveq #0,d3
- move.w (-2,a0),d3
- move.l a0,a2
- moveq #0,d1
- move.w (-4,a0),d1
- sub.l d3,d1
- add.l d3,a0
- cmp.l d0,d1
- bpl.s .skip
- move.l d1,d0
- .skip move.w d0,d2
- beq.s .dontfit
- subq.l #1,d0
- .loop move.b (a1)+,(a0)+
- beq.s .done
- dbra d0,.loop
- move.b #0,(a0)+
- .done addq.w #1,d0
- sub.w d0,d2
- add.w d3,d2
- move.w d2,(-2,a2)
- .dontfit move.l a2,d0
- movem.l (a7)+,d2-d3/a2
- rts
-