home *** CD-ROM | disk | FTP | other *** search
- \ Lesson 6 Part 15 ( F-PC 3.5 Tutorial by Jack Brown )
-
- \ Multi-way branching using IF .. ELSE .. THEN
-
- : TIS ( -- ) CR ." THIS IS DIGIT NUMBER " ;
-
- : TEST1 ( -- )
- BEGIN KEY DUP 13 <> WHILE
- ASCII 1 OVER = IF DROP TIS ." ONE " ELSE
- ASCII 2 OVER = IF DROP TIS ." TWO " ELSE
- ASCII 3 OVER = IF DROP TIS ." THREE " ELSE
- ASCII 4 OVER = IF DROP TIS ." FOUR " ELSE
- ASCII 5 OVER = IF DROP TIS ." FIVE " ELSE
- ASCII 6 OVER = IF DROP TIS ." SIX " ELSE
- ASCII 7 OVER = IF DROP TIS ." SEVEN " ELSE
- ASCII 8 OVER = IF DROP TIS ." EIGHT " ELSE
- ASCII 9 OVER = IF DROP TIS ." NINE " ELSE
- ASCII 0 OVER = IF DROP TIS ." ZERO " ELSE
- BEEP DROP THEN THEN THEN THEN THEN
- THEN THEN THEN THEN THEN REPEAT DROP ;
-
- COMMENT:
- The Case Statement
-
- CASE ... OF ... ENDOF ... ENDCASE
-
- CASE causes an index value to be compared to a series of values.
-
- OF is equivalent to OVER = IF DROP
- ENDOF is equivalent to ELSE
- Any number of OF .. ENDOF pairs may be used.
-
- ENDCASE is equivalent of the appropriate number of THENs
-
- When the index value equals one of the OF values, the sequence between
- that OF and the corresponding ENDOF is executed. Control then branches
- to the word following ENDCASE. If no match is found, ENDCASE compiles
- the appropriate number of THENs. The "otherwise" case may be handled by
- a sequence placed between the last ENDOF and ENDCASE. If the index
- value is not consumed by the "otherwise" clause it must be DROPed before
- ENDCASE is coded.
-
- Multi-way branching using the CASE Statement
- COMMENT;
-
- : TEST2 ( -- -- )
- BEGIN KEY DUP 13 <> WHILE
- CASE
- ASCII 1 OF TIS ." ONE " ENDOF
- ASCII 2 OF TIS ." TWO " ENDOF
- ASCII 3 OF TIS ." THREE " ENDOF
- ASCII 4 OF TIS ." FOUR " ENDOF
- ASCII 5 OF TIS ." FIVE " ENDOF
- ASCII 6 OF TIS ." SIX " ENDOF
- ASCII 7 OF TIS ." SEVEN " ENDOF
- ASCII 8 OF TIS ." EIGHT " ENDOF
- ASCII 9 OF TIS ." NINE " ENDOF
- ASCII 0 OF TIS ." ZERO " ENDOF
- BEEP DROP
- ENDCASE
- REPEAT DROP ;
-
- \ Sample code definitions for the curious. 12:51JWB02/21/86
-
- CODE DOUBLE ( n -- n*2 )
- POP AX
- ADD AX, AX
- PUSH AX
- NEXT END-CODE
-
- CODE SPLIT ( hilo -- lo hi )
- POP BX
- SUB AH, AH
- MOV AL, BL
- PUSH AX
- MOV AL, BH
- PUSH AX
- NEXT END-CODE
-
- CODE JOIN ( lo hi -- hilo )
- POP AX
- POP BX
- MOV AH, AL
- MOV AL, BL
- PUSH AX
- NEXT END-CODE
-
- CODE D2/ ( dn -- dn/2 )
- POP AX
- POP DX
- SAR AX, # 1
- RCR DX, # 1
- PUSH DX
- PUSH AX
- NEXT END-CODE
-
- ( Please Move to Lesson 6 Part 16 )
-