STRCAT
         PLA
         STA   RETADR
         PLA
         STA   RETADR+1
         PLA
         STA   :MLEN      
         PLA
         STA   ADDR2      
         PLA              
         STA   ADDR2+1
         PLA
         STA   ADDR1      
         PLA              
         STA   ADDR1+1
         LDY   #0
         LDA   (ADDR1),Y  
         STA   :S1LEN
         STA   :S1IND
         INC   :S1IND     
         LDA   (ADDR2),Y  
         STA   :S2LEN
         LDA   #1
         STA   :S2IND     
         LDA   :S2LEN     
         CLC
         ADC   :S1LEN     
         STA   :S3LEN     
         BCS   :TOOLONG   
         CMP   :MLEN      
         BEQ   :LENOK     
         BCC   :LENOK
:TOOLONG
         LDA   #$0FF
         STA   :SOVF      
         LDA   :MLEN
         SEC
         SBC   :S1LEN
         BCC   :EXIT

         STA   :SCNT      
         LDA   :MLEN
         STA   :S1LEN     
         JMP   :DOCAT
:LENOK
         STA   :S1LEN
         LDA   #0         
         STA   :SOVF      
         LDA   :S2LEN
         STA   :SCNT      
:DOCAT
         LDA   :SCNT
         BEQ   :EXIT      
:CATLP
         LDY   :S2IND
         LDA   (ADDR2),Y  
         LDY   :S1IND
         STA   (ADDR1),Y  
         INC   :S1IND     ;INC STRING 1 INDEX
         INC   :S2IND     
         DEC   :SCNT      
         BNE   :CATLP     
:EXIT
         LDA   :S1LEN
         LDY   #0
         STA   (ADDR1),Y
         LDA   :SOVF
         ROR   A
         LDA   RETADR+1
         PHA
         LDA   RETADR
         PHA
         LDY   #0
         LDA   (ADDR1),Y  
         STA   RETLEN
         LDA   #1
:RLP
         LDA   (ADDR1),Y
         STA   RETURN,Y
         CPY   RETLEN
         INY
         BNE   :RLP
         LDA   RETLEN
         LDY   #0
         STA   (ADDR1),Y
         LDX   :S3LEN     
         RTS
:S3LEN   DS    1
:S1LEN   DS    1
:S1IND   DS    1
:S2LEN   DS    1
:S2IND   DS    1
:MLEN    DS    1
:SCNT    DS    1
:SOVF    DS    1
