$BEGIN SOLITAIRE FOR THE 7502 $TEMP R8, R9, R10, R11, R2, R13, R14 $DEF STP = R5, GBASE = R6 $DEF NP = R4, SYM = R3, TEMP = R7 STP = #STACK GBASE = #STAT JUMP SOLENT OUT: STP = W(STP) NP = NP-1 TEMP = NP REC TEMP, PC, 1 $MACRO CALL ROUT W(STP+VARP) = STP STP = STP+VARP DUMP NP, PC, 1 JUMP ROUT $END $MACRO ROUTINE NAME $REDEF VARP = 1 NAME: $BEGIN $END $DEF VARP = 1 $MACRO VAR NAME $DEF NAME = W(STP+VARP) $REDEF VARP = VARP+1 $END $DEF GVARP = 0 $MACRO GVAR NAME $DEF NAME = W(GBASE+GVARP) $REDEF GVARP = GVARP+1 $END $DEF WC = 0, FREF = .ZZZ, BREF = .AAA $DEF NESTL = 0 $MACRO FORALL VAR, LOW, INC, UPPER $REDEF WC = WC+1, NESTL = NESTL+1 $REDEF BREF = BREF-1, FREF = FREF+1 VAR = LOW-INC BREF?: JUMP FREF? IF VAR >= UPPER VAR = VAR+INC $END $MACRO REP JUMP BREF? FREF?: $REDEF BREF = BREF+1, FREF = FREF-1 $IF NESTL = 1 $REDEF FREF = .ZZZ+WC, BREF = .AAA-WC $FINISH $REDEF NESTL = NESTL-1 $END