home *** CD-ROM | disk | FTP | other *** search
-
- *CASE
- *AFFECTS: XR0, AR1, AC, STACK
- *
- *CASE CONSTRUCT:
- * CASE V,(L0,L1,L2, ... ,LN)[,T]
- * [RETURNS HERE]
- * .
- * .
- * .
- *L0 [WHEN V=0]
- * RET
- *L1 [WHEN V=1]
- * RET
- *L2 [WHEN V=2]
- * RET
- * .
- * .
- * .
- *LN [WHEN V=N]
- * RET
- *
- * V IS THE CONTROL VAR
- * T IS A TEMPORARY (DEFAULTS TO XR0)
- * L1-LN ARE LABELS
- *
- * IF V CONTAINS M THEN LABEL LM IS CALLED
- * USING CALA (RETURN BY RET, AR1 IS KILLED)
-
- CASE $MACRO A,C,B COMPUTED GOTO
- $VAR L
- $ASG '$$LAB' TO L.S
- $ASG L.SV+1 TO L.SV TO NEXT UNIQUE LABEL
- CALL L$:L.SV: CALL AFTER LIST
- DATA :C: LABEL LIST
- L$:L.SV: POP POP LIST ADDR TO AC
- ADD :A:,0 ADD CONTRL VAR
- $IF B.L=0
- TBLR XR0 READ LABEL ADDR
- LAC XR0,0 TO AC
- $ELSE
- TBLR :B: READ LABEL TO :B:
- LAC :B:,0 TO AC
- $ENDIF
- CALA CALL THE LABEL
- $END