.if .not .def _STRING_ _STRING_ = 1 ; this is also part of STD.L65 .if .not .def _MACROS_ .include #macros .endif .macro _STR_DO .if %4 & @s1 jmp *+%1+4 .byte %$1,0 DPOKE _string1,*-%1-1 .else @DMOKE %1,_string1,%4 .endif .if %4 & @s2 jmp *+%2+4 .byte %$2,0 DPOKE _string2,*-%2-1 .else @DMOKE %2,_string2,[%4 & @p2] / @p2 .endif jsr %3 .endm .macro STRCAT @3 .= @p1 + @p2 .if %0=3 @3 .= %3 .endif _STR_DO %1,%2,strcat,@3 .endm .macro STRCPY @3 .= @p1 + @p2 .if %0=3 @3 .= %3 .endif _STR_DO %1,%2,strcpy,@3 .endm .macro STRCMP @3 .= @p1 + @p2 .if %0=3 @3 .= %3 .endif _STR_DO %1,%2,strcmp,@3 .endm .macro _STRN_DO .if %5 & @s1 jmp *+%1+4 .byte %$1,0 DPOKE _string1,*-%1-1 .else DMOVE %1,_string1 .endif .if %5 & @s2 jmp *+%2+4 .byte %$2,0 DPOKE _string2,*-%2-1 .else DMOVE %2,_string2 .endif @DMOKE %3,_tmp1,[%5 & @p3] / @p3 jsr %4 .endm .macro STRNCAT @3 .= @p1 + @p2 + @p3 .if %0=4 @3 .= %4 .endif _STRN_DO %1,%2,%3,strncat,@3 .endm .macro STRNCPY @3 .= @p1 + @p2 + @p3 .if %0=4 @3 .= %4 .endif _STRN_DO %1,%2,%3,strncpy,@3 .endm .macro STRNCMP @3 .= @p1 + @p2 + @p3 .if %0=4 @3 .= %4 .endif _STRN_DO %1,%2,%3,strncpy,@3 .endm .macro STRLEN @3 .= @p1 .if %0=2 @3 .= %4 .endif .if @3 & @s1 DPOKE _tmp1,%1 .else @DMOKE %1,_string1,@3 jsr strlen .endif .endm .endif