; From the MACR0-10 ASSEMBLER PROGRAMMER'S REFERENCE MANUAL (June 1972): ; ; Example 4 (Figure 7-4) shows nested macros which use IRPC. The desired operation ; is to take an ASCII text string and store the characters four per word, left-justified, ; with the character count stored in the first nine bits of the first word. ; ; The TEXT macro counts the string characters and invokes the CODE macro to store the ; characters four per word. The CODE macro invokes a SHIFT macro which left-justifies the ; last word if it is not already left-justified. The first part of the example shows the ; normal listing, then SALL is set to show what code the macros are generating. ; ; The original listing encodes the following two lines as follows: ; ; IFN ZZ, ;;IF NOT LEFT JUSTIFIED ; ; The April 1978 MACRO-10 manual says that a macro body "must be enclosed in angle brackets", ; so I'm not sure how the above lines make sense. ; TITLE STORE TEXT CHARACTER BY CHARACTER SUBTTL %1 5-APR-72 DEFINE TEXT (C)< N==0 ;;INITIAL CONDITION IRPC C, ;;COUNT CHARACTERS CODE (N,C) ;;CALL MACRO TO STORE TEXT > ;END OF TEXT MACRO DEFINE CODE (N,C)< ZZ==N ;;INITIAL CONDITION IRPC C,< IFN ZZ&777B8,< EXP ZZ ;;WORD FULL ZZ==0> ;;START AGAIN WITH 0 ZZ==ZZ_9+"C"> ;;END OF IRPC IFN ZZ, ;;RECURSE > ;;END OF DEFINE SHIFT ;;START MOVING LEFT EXP ZZ> ;;END OF IFN ZZ > ;END OF CODE MACRO TEXT (ABCDEFGHIJKL) END