;;;;;;;;;;;;;;;;;;;;;;MAKING COMPLEX RUSSIAN STRINGS .org 0x8008f600 ;InitProgram + First Hybrid Copy lui r2,0x8009 sw r4,-0x30(r2) ;;;Store start string addr lhu r3,0x0(r5) nop srl r2,r3,0xD ;;;;Check 13th bit (1byte system !!!) bne r2,zero,isMyString ;;if yes - jump to my prog. If no - init this lhu r3,0x0(r5) ;load first 2-byte clear r2 ;clear MAIN counter ;Standart 2-byte name addiu r4,2 ;DestAddr + 2 (For my xx20 Command) next2bytes: sb r3,0x0(r4) addiu r4,1 ;add dest counter addiu r5,2 ;add src counter addiu r2,1 ;add char counter lhu r3,0x0(r5) ;read next jap char nop srl r3,r3,0xC ;Is it end of 2byte-string??? bne r3,zero,saveLengthAndExit lhu r3,0x0(r5) j next2bytes nop saveLengthAndExit: ori r2,0x2000 ;add my command lui r3,0x8009 lw r3,-0x30(r3) ;load str init address nop sh r2,0x0(r3) ;save init counter +20 to dest addr (half) jr ra ;exit move r2,r4 ;Duplicate for futher script isMyString: lhu r3,0x0(r5) nop andi r3,r3,0xFF addiu r3,2 ;length to copy = charnum+2 nextMyByte: lbu r2,0x0(r5) nop sb r2,0x0(r4) addiu r4,1 addiu r3,-1 bne r3,zero,nextMyByte addiu r5,1 jr ra ;exit move r2,r4 ;Duplicate for futher script ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .org 0x8008f700 ;Adding my text Program lhu r3,0x0(r5) ;read src string length nop ;NEED TO CHECK STRING FORMAT srl r2,r3,0xD ;;;;Check 13th bit (1byte system !!!) ;FOR TATSHUYA BOSS beq r2,zero,secondStrisJap nop lbu r2,0x0(r4) ;read destination string length (1 byte) nop lbu r3,0x0(r5) ;read src string length nop add r2,r3 ;Sum lengts of old and new strings sb r2,0x0(r4) ;save new string length addiu r5,2 ;shift src +2 (len code) sub r2,r3 addiu r4,2 add r4,r2 ;shift destination - len+2 nextMyByte2: lbu r2,0x0(r5) nop sb r2,0x0(r4) addiu r4,1 addiu r3,-1 bne r3,zero,nextMyByte addiu r5,1 jr ra ;exit move r2,r4 ;Duplicate for futher script ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; secondStrisJap: lbu r3,0x0(r4) ;read dest string length addiu r4,2 ;DestAddr + 2 (For my xx20 Command) add r4,r3 ;add dest counter = end of prev string lhu r3,0x0(r5) ;load first 2-byte clear r2 ;clear MAIN counter ;Standart 2-byte name next2bytes2: sb r3,0x0(r4) addiu r4,1 ;add dest counter addiu r5,2 ;add src counter addiu r2,1 ;add char counter lhu r3,0x0(r5) ;read next jap char nop srl r3,r3,0xC ;Is it end of 2byte-string??? bne r3,zero,saveLengthAndExit2 lhu r3,0x0(r5) j next2bytes2 nop saveLengthAndExit2: lui r3,0x8009 lw r3,-0x30(r3) nop lhu r3,0x0(r3) ;load str prev length nop add r2,r3,r2 ;main counter + prev string length ;ori r2,r3,0x2000 ;add my command = xx20 lui r3,0x8009 lw r3,-0x30(r3) nop sh r2,0x0(r3) ;save counter +20 to dest addr (half) jr ra ;exit move r2,r4 ;Duplicate for futher script ;NAMEENTER SWAP ROUTINE .org 0x8008f800 ;Adding my text Program ;r4 - destination ;r5 - source move r6,ra lui r5, 0x8008 ori r5, 0x0a7c ;Copy name to temp lui r4, 0x8008 ori r4, 0xfa0e ;dest+2 jal 0x80015fe0 ;TEMP - 80080a0e nop lui r5, 0x8008 ori r5, 0x0ae4 ;Copy surname to name lui r4, 0x8008 ori r4, 0x0a7e ;dest+2 jal 0x80015fe0 nop lui r5, 0x8008 ori r5, 0xfa0c ;Copy temp to surname ;TEMP - 80080a0c lui r4, 0x8008 ori r4, 0x0ae6 ;dest+2 jal 0x80015fe0 nop move ra,r6 li r4,0 j 0x80017a9c ;EXIT