******** macro.amp ! .MACRO SUM FROM=0, TO=9 ! ; \FROM \TO ! MOV R\FROM,R10 !COUNT .ASSIGNA \FROM+1 ! .AWHILE \&COUNT LE \TO ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! .ENDM ! ! SUM 0,5 ! ; 0 5 ; 0 5 ! MOV R0,R10 MOV R0,R10 !COUNT .ASSIGNA 0+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R1,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R2,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R3,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R4,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R5,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! SUM TO=5 ! ; 0 5 ; 0 5 ! MOV R0,R10 MOV R0,R10 !COUNT .ASSIGNA 0+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R1,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R2,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R3,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R4,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R5,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! SUM FROM=2, TO=5 ! ; 2 5 ; 2 5 ! MOV R2,R10 MOV R2,R10 !COUNT .ASSIGNA 2+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R3,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R4,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! MOV R\&COUNT,R10 MOV R5,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AWHILE \&COUNT LE 5 ! MOV R\&COUNT,R10 !COUNT .ASSIGNA \&COUNT+1 ! .AENDW ! ! !; hi this is a comment ; hi this is a comment ! .MACRO BACK_SLASH_SET ! \(MOV #"\",R0) ! .ENDM ! BACK_SLASH_SET ! MOV #"\",R0 MOV #"\",R0 ! .MACRO COMM ! bar ; this comment will get copied out ! foo \; this one will get dropped ! .ENDM ! COMM ! bar ; this comment will get copied out bar ; this comment will get copied out ! foo \; this one will get dropped foo \; this one will get dropped ! BACK_SLASH_SET ! MOV #"\",R0 MOV #"\",R0 ! .MACRO PLUS2 ! ADD #1,R\&V1 ! .SDATA "\&V'1" ! .ENDM !V .ASSIGNC "R" !V1 .ASSIGNA 1 ! PLUS2 ! ADD #1,R\&V1 ADD #1,R1 ! .SDATA "\&V'1" .byte 82,49 ! .MACRO PLUS1 P,P1 ! ADD #1,\P1 ! .SDATA "\P'1" ! .ENDM ! PLUS1 R,R1 ! ADD #1,R1 ADD #1,R1 ! .SDATA "R1" .byte 82,49 ! ! .MACRO SUM P1 ! MOV R0,R10 ! ADD R1,R10 ! ADD R2,R10 ! \P1 ! ADD R3,R10 ! .ENDM ! ! SUM .EXITM ! MOV R0,R10 MOV R0,R10 ! ADD R1,R10 ADD R1,R10 ! ADD R2,R10 ADD R2,R10 ! .EXITM ! ! .MACRO foo bar=a default=b ! \bar ! \default ! bar ! default ! .ENDM ! foo default=dog bar=cat ! cat cat ! dog dog ! bar bar ! default default ! foo X Y ! X X ! Y Y ! bar bar ! default default ! foo ! a a ! b b ! bar bar ! default default ! foo bar=cat default=dog ! cat cat ! dog dog ! bar bar ! default default ! ! ! .MACRO foo bar ! HI ! HI \bar ! HI ! .ENDM ! ! foo 1 ! HI HI ! HI 1 HI 1 ! HI HI ! foo 123 ! HI HI ! HI 123 HI 123 ! HI HI ! foo 1 2 3 4 ! foo ! HI HI ! HI HI ! HI HI ! ! ! .MACRO PUSH Rn ! MOV.L \Rn,@-r15 ! .ENDM ! PUSH R0 ! MOV.L R0,@-r15 MOV.L R0,@-r15 ! PUSH R1 ! MOV.L R1,@-r15 MOV.L R1,@-r15 ! ! ! .MACRO RES_STR STR, Rn ! MOV.L #str\@,\Rn ! BRA end_str\@ ! NOP !str\@ .SDATA "\STR" ! .ALIGN 2 !end_str\@ ! .ENDM ! ! RES_STR "ONE",R0 ! MOV.L #str00018,R0 MOV.L #str00018,R0 ! BRA end_str00018 BRA end_str00018 ! NOP NOP !str00018 .SDATA "ONE" str00018: .byte 79,78,69 ! .ALIGN 2 .align 2 !end_str00018 end_str00018: ! RES_STR "TWO",R1 ! MOV.L #str00019,R1 MOV.L #str00019,R1 ! BRA end_str00019 BRA end_str00019 ! NOP NOP !str00019 .SDATA "TWO" str00019: .byte 84,87,79 ! .ALIGN 2 .align 2 !end_str00019 end_str00019: ! RES_STR "THREE",R2 ! MOV.L #str00020,R2 MOV.L #str00020,R2 ! BRA end_str00020 BRA end_str00020 ! NOP NOP !str00020 .SDATA "THREE" str00020: .byte 84,72,82,69,69 ! .ALIGN 2 .align 2 !end_str00020 end_str00020: ! ! ! ! RES_STR STR=donkey Rn=R1 ! MOV.L #str00021,R1 MOV.L #str00021,R1 ! BRA end_str00021 BRA end_str00021 ! NOP NOP !str00021 .SDATA "donkey" str00021: .byte 100,111,110,107,101,121 ! .ALIGN 2 .align 2 !end_str00021 end_str00021: ! RES_STR donkey,R1 ! MOV.L #str00022,R1 MOV.L #str00022,R1 ! BRA end_str00022 BRA end_str00022 ! NOP NOP !str00022 .SDATA "donkey" str00022: .byte 100,111,110,107,101,121 ! .ALIGN 2 .align 2 !end_str00022 end_str00022: ! RES_STR donkey Rn=R1 ! .END macro.asm:70 Too many positional arguments. macro.asm:98 Can't mix positional and keyword arguments.