#ifmain ;----------------------------------------------------------------------- #ListOff #Uses mcu.inc #ListOn #endif ;------------------------------------------------------------------------ ;******************************************************************************* ; Purpose: Insert a character at the beginning of an ASCIZ (sub-)string ; Input : HX -> position in ASCIZ string where to insert new character ; : A = character to insert ; Output : None StringInsertChar macro [[#]Char[,[#]StringVar]] #ifb ~1~ call ~0~ ;HX and A pre-loaded correctly mexit #endif #push #spauto :sp #ifparm ~2~ push lda ~1~ @@lea ~@@~ call ~0~ pull #pull mexit #endif psha lda ~1~ call ~0~ pula #pull endm ;------------------------------------------------------------------------------- #spauto StringInsertChar proc push psha char_to_ins@@ ;next character to insert Loop@@ lda ,x ;A = old string character psha ;save it for now lda char_to_ins@@,sp ;A = new character sta ,x ;save it at current position pula ;A = old string character beq Done@@ ;if at terminator, we're done sta char_to_ins@@,sp ;save old for next iteration aix #1 ;HX -> next character position bra Loop@@ ;repeat for all characters Done@@ pula ;remove temp variable(s) pull rtc ;******************************************************************************* #sp ;*******************************************************************************