home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
forth
/
compiler
/
fpc
/
tutor
/
l6p150
< prev
next >
Wrap
Text File
|
1990-07-15
|
4KB
|
104 lines
╔════════════════════════════════════════════════════╗
║ Lesson 6 Part 150 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 ;
┌──────────────────────┐
│ 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
: 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 160 │
└──────────────────────────────────────┘