home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / OTL-MC6.DMS / in.adf / libsrc.lha / LIBSRC / string_simple.asm < prev    next >
Encoding:
Assembly Source File  |  1994-04-16  |  1.7 KB  |  116 lines

  1.  
  2. *    Maxon C++:
  3. *    Library-Modul "string_simple"
  4. *    Jens Gelhar 21.08.93
  5.  
  6.     xdef    _strcpy,strcpy__PcPCc
  7.     xdef    _strncpy,strncpy__PcPCcUi
  8.     xdef    _strcat,strcat__PcPCc
  9.     xdef    _strncat,strncat__PcPCcUi
  10.     xdef    _strcmp,strcmp__PCcPCc
  11.     xdef    _strncmp,strncmp__PCcPCcUi
  12.     xdef    _strlen,strlen__PCc
  13.  
  14. _strcpy:
  15. strcpy__PcPCc:
  16.     movem.l    4(a7),a0/a1
  17.     move.l    a0,d0
  18. .loop    move.b    (a1)+,(a0)+
  19.     bne.b    .loop
  20.     rts
  21.  
  22. _strncpy:
  23. strncpy__PcPCcUi:
  24.     move.l    4(a7),a0       ; Zielstring
  25.     move.l    8(a7),a1       ; Quellstring
  26.     move.l    12(a7),d0      ; Anzahl
  27.     bmi.b    .end
  28.     beq.b    .end
  29. .loop    move.b    (a1)+,(a0)+
  30.     beq.b    .fill
  31.     subq.l    #1,d0
  32.     bne.b    .loop
  33.     bra.b    .end
  34.     ; mit 0 auffüllen:
  35. .fill    clr.b    (a0)+
  36.     subq.l    #1,d0
  37.     bne.b    .fill
  38. .end    move.l    4(a7),d0
  39.     rts
  40.  
  41. _strcat:
  42. strcat__PcPCc:
  43.     movem.l    4(a7),a0/a1;     von a1 nach a0
  44.     move.l    a0,d0
  45. .loop1    tst.b    (a0)+
  46.     bne.b    .loop1
  47.     subq.l    #1,a0
  48. .loop2    move.b    (a1)+,(a0)+
  49.     bne.b    .loop2
  50.     rts
  51.  
  52. _strncat:
  53. strncat__PcPCcUi:
  54.     move.l    4(a7),a0       ; Zielstring
  55.     move.l    8(a7),a1       ; Quellstring
  56.     move.l    12(a7),d0      ; Anzahl
  57. loop3:    tst.b    (a0)+
  58.     bne.b    loop3
  59.     subq.l    #1,a0
  60.     subq.l    #1,d0
  61.     blo.b    end1
  62. loop4:    move.b    (a1)+,(a0)+
  63.     dbeq    d0,loop4
  64. end1:    move.l    4(a7),d0
  65.     rts
  66.  
  67. _strcmp:
  68. strcmp__PCcPCc:
  69.     movem.l    4(a7),a0/a1
  70. .loop6    move.b    (a0)+,d0
  71.     cmp.b    (a1)+,d0
  72.     bne.b    .noteq1
  73.     tst.b    d0
  74.     bne.b    .loop6
  75.     ; gleich:
  76.     moveq    #0,d0
  77.     rts
  78. .noteq1    ; ungleich:
  79.     blo.b    .end5
  80.     moveq    #1,d0
  81.     rts
  82. .end5    moveq    #-1,d0
  83.     rts
  84.  
  85. _strncmp:
  86. strncmp__PCcPCcUi:
  87.     movem.l 4(a7),a0/a1
  88.     move.l    4+8(a7),d1
  89.     subq.l    #1,d1
  90.     blo.b    equ2
  91. loop7:    move.b    (a0)+,d0
  92.     cmp.b    (a1)+,d0
  93.     bne.b    noteq2
  94.     tst.b    d0
  95.     beq.b    equ2
  96.     dbra    d1,loop7
  97. equ2:    moveq    #0,d0
  98.     rts
  99. noteq2:    blo.b    end7
  100.     moveq    #1,d0
  101.     rts
  102. end7:    moveq    #-1,d0
  103.     rts
  104.  
  105. _strlen:
  106. strlen__PCc:
  107.     moveq    #-1,d0
  108.     move.l    4(a7),a0
  109. loop8:    addq.l    #1,d0
  110.     tst.b    (a0)+
  111.     bne.b    loop8
  112.     rts
  113.  
  114.     end
  115.  
  116.