$MACRO all VAR JSR PC,$$RES RES.STR #@{1} @#$$RES1 $ENDM ; $MACRO fre MOV (SP),R0 ADD R0,SP $ENDM $MACRO RES.STR ; NAME,SIZE SUB #@2,SP SUB #10.,SP MOV #1,-(SP) MOV #@2,-(SP) ADD #8.,(SP) MOV SP,#@1 MOV #@1,-(SP) JSR PC,INI ADD #6.,(SP) JSR PC,$$$STK $ENDM / PROGRAM LET1 optimize with r2 SETLAB LT x1: .asciz 'C #@1 = #@2[<#@*(3"9)>]' x1a: .asciz 'LET #@1 = #@*(2_Z)' x2: .asciz ' mov #@2,#@1' y1: .asciz '#@1 #@2,#@3' y2: .asciz 'CL <#@*(3"Z)>' y3: .asciz '#@1 #@2,r0' .even ;- ; let part two ; handles some of functions (recognition only) and arrays/structure- ; member ;+ AUTO pm lab n t s FUNCTION let1[es,s.pm,t.pm,n.pm,lab.pm] all s all t . instr[t,#20.] . expand[es,s,&s.pm] LET n = toks[s,t] clr lab(r5) IF n GT #3 fre fre LET r4 = isexp[t,#4] IF r4 = #0 . exstat[#x1,&s,#0] ELSE . exstat[#x1a,&s,#0] FI ELSE mov #-1,xx.switch+6 all r4 . mvstr[s,t,#3] ;s=t(3) . toks[s,r4] . copy[t,#3,r4,#1] fre . exstat[#x2,&s,#0] clr xx.switch+6 fre fre FI RET ;- ; Let part 2a more function and array determination ; ; ;+ AUTO pm lab n t s FUNCTION let2[es,s.pm,t.pm,n.pm,lab.pm] all t all s clr lab(r5) . instr[t,#20.] . expand[es,s,&s.pm] LET n = toks[s,t] fre IF n LT #5 mov #-1,xx.switch+6 ;/sw 14 . exstat[#y1,&s,#0] clr xx.switch+6 ELSE all r4 . exstat[#y2,&s,r4] . exstat[#y3,&s,r4] fre FI fre RET .end