$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 / .psect hards PROGRAM hards optimize with r3 FUNCTION hards[fun,s,t,n,lab] ;secondary dispatcher of hard-coded stuff SELECT case fun of CASE #2 . clx[s,t,n,lab] BREAK CASE #3 . nums[s,t,n,lab] BREAK CASE #5 . ifrec[s,t,n,lab] BREAK CASE #6 . cmpw[s,t,n,lab] BREAK CASE #8. . movexp[s,t,n,lab] BREAK CASE #9. LET r4 = exjsr[#etst,"#@1",&s] IF r4 NE #0 . exstat["#@2",&s,#0] ELSE . exstat["#@3",&s,#0] FI BREAK ESAC RET AUTO str[120.] FUNCTION movexp[s,t,n,l] LET r4 = fndstr[s,#1] movb (r4)+,r2 LET r1 = &str IF r2 GT #0 10$: movb (r4)+,(r1)+ sob r2,10$ FI clrb (r1) . let1[&str,s,t,n,l] RET .end