.TITLE MR08.. STRING PROCEDURES IN MACRO ; .IDENT /MR08../ ; .PAGE .SBTTL . CHARACTER STRING SHIFT ROUTINES .SBTTL . CHARACTER SHIFT RIGHT END-AROUND ; ; ; R$SHRE:: ;SHIFT CHARACTER STRING RIGHT END AROUND ; ; ENTRY CONDITIONS ; ; R0 -> CHARACTER STRING ADDRESS ; SAVE R1,R2,R3,R4 ;SAVE REGISTERS R1 TO R4 MOV @R0,R3 ;HOLD LOOP COUNTER +1 DEC R3 ;CORRECT VALUE BLE 80$ ;J IF STRING LENGTH <=1 CHARACTER ; MOV R0,R1 ;HOLD START ADDRESS OF STRING ADD #2,R1 ;INDEX TO START ADDRESS OF CHARACTERS MOV R1,R2 ;AS ABOVE ; 50$: MOVB (R1)+,90$ ;EXTRACT CHARACTERS MOVB (R1),90$+1 SWAB 90$ ;REVERSE ORDER OF CHARACTERS MOVB 90$,(R2)+ ;REPLACE CHARACTERS MOVB 90$+1,(R2) SOB R3,50$ ;LOOP THROUGH STRING MOVING 1ST CHARACTER TO END ; 80$: UNSAVE R1,R2,R3,R4 ;RESTORE REGISTERS R1 TO R4 RETURN ;EXIT ; 90$: .WORD ;SWAP SPACE WORK AREA ; ; .END ; ;