.TITLE MR10.. STRING PROCEDURES IN MACRO ; .IDENT /MR10../ ; .PAGE .SBTTL . CHARACTER SHIFT ONE PLACE RIGHT/LEFT ; R$SHR:: ;SHIFT CHARACTER STRING ONE PLACE RIGHT ; ; ENTRY CONDITIONS ; ; R0 -> CHARACTER STRING ADDRESS ; R3 = FILLER CHARACTER ; CALL R$SAVE ;SAVE REGISTERS R0 TO R5 CALL R$SHRE ;SHIFT STRING ONE PLACE RIGHT END AROUND MOV R0,R4 ;HOLD STRING ADDRESS MOV R0,R1 MOV #1,R2 ;START POSITION IN STRING CALL R$GETC ;R0 HOLDS FIRST CHARACTER IN STRING CALL R$ADDC ;PLACE COPY OF FIRST CHARACTER AT THE ;OF MODIFIED STRING MOV R3,R0 ;TAKE COPY OF FILLER CHARACTER CALL R$MODC ;OVERWRITE FIRST CHARACTER WITH FILLER CALL R$UNSAVE ;RESTORE REGISTERS R0 TO R5 RETURN ;EXIT ; ; ; ; ; ; ; R$SHL:: ;SHIFT CHARACTER STRING ONE PLACE LEFT ; ; ENTRY CONDITIONS ; ; R0 -> CHARACTER STRING ADDRESS ; TST @R0 ;IS STRING LENGTH <=0 BLE 10$ ;J IF STRING EMPTY CALL R$SHRE ;ROTATE STRING ONE PLACE RIGHT END AROUND DEC @R0 ;REDUCE STRING LENGTH BY ONE CHARACTER 10$: RETURN ;EXIT ; ; .END ; ;