Skip to content

Commit 12b57bb

Browse files
committed
Demo Re-org
1 parent 4093ddb commit 12b57bb

File tree

8 files changed

+112
-110
lines changed

8 files changed

+112
-110
lines changed
File renamed without changes.
File renamed without changes.
File renamed without changes.
Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
1-
\ 99 bottles of beer. Create a beer language and write the program
2-
3-
NEEDS CASE FROM DSK1.CASE
4-
5-
DECIMAL
6-
: BOTTLES ( n -- )
7-
DUP
8-
CASE
9-
1 OF ." One more bottle " DROP ENDOF
10-
0 OF ." NO MORE bottles " DROP ENDOF
11-
. ." bottles " \ DEFAULT CASE
12-
ENDCASE ;
13-
14-
: , [CHAR] , EMIT SPACE ( 100 MS) CR ;
15-
: . [CHAR] . EMIT ( 300 MS) CR CR CR ;
16-
17-
: HANGOVER ." :-(" CR ;
18-
19-
: OF ." of " ; : BEER ." beer " ;
20-
: ON ." on " ; : THE ." the " ;
21-
: WALL ." wall" ; : TAKE ." take " ;
22-
: ONE ." one " ; : DOWN ." down, " ;
23-
: PASS ." pass " ; : IT ." it " ;
24-
: AROUND ." around" ;
25-
26-
-1 CONSTANT -1
27-
28-
: POPONE 1 SWAP CR ;
29-
: DRINK POSTPONE DO ; IMMEDIATE
30-
: ANOTHER POSTPONE -1 POSTPONE +LOOP ; IMMEDIATE
31-
: HOWMANY S" I " EVALUATE ; IMMEDIATE
32-
: ONELESS S" I 1- " EVALUATE ; IMMEDIATE
33-
: BINARY 2 BASE ! ;
34-
35-
: BEERS ( n -- )
36-
POPONE
37-
DRINK
38-
HOWMANY BOTTLES OF BEER ON THE WALL ,
39-
HOWMANY BOTTLES OF BEER ,
40-
TAKE ONE DOWN PASS IT AROUND ,
41-
ONELESS BOTTLES OF BEER ON THE WALL .
42-
ANOTHER
43-
HANGOVER ;
44-
45-
CR .( Usage: 99 BEERS)
46-
1+
\ 99 bottles of beer. Create a beer language and write the program
2+
3+
NEEDS CASE FROM DSK1.CASE
4+
5+
DECIMAL
6+
: BOTTLES ( n -- )
7+
DUP
8+
CASE
9+
1 OF ." One more bottle " DROP ENDOF
10+
0 OF ." NO MORE bottles " DROP ENDOF
11+
. ." bottles " \ DEFAULT CASE
12+
ENDCASE ;
13+
14+
: , [CHAR] , EMIT SPACE ( 100 MS) CR ;
15+
: . [CHAR] . EMIT ( 300 MS) CR CR CR ;
16+
17+
: HANGOVER ." :-(" CR ;
18+
19+
: OF ." of " ; : BEER ." beer " ;
20+
: ON ." on " ; : THE ." the " ;
21+
: WALL ." wall" ; : TAKE ." take " ;
22+
: ONE ." one " ; : DOWN ." down, " ;
23+
: PASS ." pass " ; : IT ." it " ;
24+
: AROUND ." around" ;
25+
26+
-1 CONSTANT -1
27+
28+
: POPONE 1 SWAP CR ;
29+
: DRINK POSTPONE DO ; IMMEDIATE
30+
: ANOTHER POSTPONE -1 POSTPONE +LOOP ; IMMEDIATE
31+
: HOWMANY S" I " EVALUATE ; IMMEDIATE
32+
: ONELESS S" I 1- " EVALUATE ; IMMEDIATE
33+
: BINARY 2 BASE ! ;
34+
35+
: BEERS ( n -- )
36+
POPONE
37+
DRINK
38+
HOWMANY BOTTLES OF BEER ON THE WALL ,
39+
HOWMANY BOTTLES OF BEER ,
40+
TAKE ONE DOWN PASS IT AROUND ,
41+
ONELESS BOTTLES OF BEER ON THE WALL .
42+
ANOTHER
43+
HANGOVER ;
44+
45+
CR .( Usage: 99 BEERS)
46+
File renamed without changes.
File renamed without changes.
File renamed without changes.
Lines changed: 66 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,66 @@
1-
\ Guess the number in CAMEL99 Forth
2-
3-
INCLUDE DSK1.RANDOM
4-
INCLUDE DSK1.INPUT
5-
6-
DECIMAL
7-
VARIABLE TRIES
8-
VARIABLE GUESS
9-
10-
: ASK ( -- )
11-
CR CR
12-
TRIES @ 0=
13-
IF ." Guess a number between 1 and 10: "
14-
ELSE ." Try Again: "
15-
THEN ;
16-
17-
DECIMAL
18-
: RANGE ( n -- ? )
19-
1 11 WITHIN 0=
20-
IF CR ." That's not valid so... " THEN ;
21-
22-
: GET-GUESS ( -- ) GUESS #INPUT ;
23-
24-
: REPLY ( the# guess -- n)
25-
GUESS @ \ fetch GUESS variable and DUP
26-
DUP RANGE \ make a DUP & check if the guess is in range
27-
2DUP <> \ compare the# and the guess for not equal
28-
IF CR HONK ." No, it's not " DUP .
29-
THEN ;
30-
31-
: .TRIES ( -- )
32-
TRIES @ DUP .
33-
1 = IF ." try!" ELSE ." tries!" THEN ;
34-
35-
: FINISH ( -- )
36-
CR
37-
CR BEEP 50 MS BEEP ." Yes it was " .
38-
CR ." You got it in " .TRIES
39-
CR ;
40-
41-
: Y/N? ( -- flag) KEY [CHAR] N = ;
42-
43-
: PLAYAGAIN? ( -- flag)
44-
CR ." Want to play again? (Y/N)" Y/N? ;
45-
46-
HEX
47-
: BLK/YEL 1B 7 VWTR ; \ CLEAR, yellow bg
48-
49-
DECIMAL
50-
: RUN ( -- )
51-
BEGIN
52-
PAGE BLK/YEL
53-
0 TRIES !
54-
10 RND 1+ ( -- rnd#)
55-
BEGIN
56-
ASK
57-
GET-GUESS
58-
REPLY
59-
1 TRIES +!
60-
OVER = UNTIL
61-
FINISH
62-
PLAYAGAIN?
63-
UNTIL
64-
CR ." OK, thanks for playing!" ;
1+
\ Guess the number in CAMEL99 Forth
2+
3+
\ This is just an example of how to do common things in Forth
4+
5+
INCLUDE DSK1.RANDOM
6+
INCLUDE DSK1.INPUT
7+
8+
DECIMAL
9+
VARIABLE TRIES
10+
VARIABLE GUESS
11+
12+
: ASK ( -- )
13+
CR CR
14+
TRIES @ 0=
15+
IF ." Guess a number between 1 and 10: "
16+
ELSE ." Try Again: "
17+
THEN ;
18+
19+
DECIMAL
20+
: RANGE ( n -- ? )
21+
1 11 WITHIN 0=
22+
IF CR ." That's not valid so... " THEN ;
23+
24+
: GET-GUESS ( -- ) GUESS #INPUT ;
25+
26+
: REPLY ( the# guess -- n)
27+
GUESS @ \ fetch GUESS variable and DUP
28+
DUP RANGE \ make a DUP & check if the guess is in range
29+
2DUP <> \ compare the# and the guess for not equal
30+
IF CR HONK ." No, it's not " DUP .
31+
THEN ;
32+
33+
: .TRIES ( -- )
34+
TRIES @ DUP .
35+
1 = IF ." try!" ELSE ." tries!" THEN ;
36+
37+
: FINISH ( -- )
38+
CR
39+
CR BEEP 50 MS BEEP ." Yes it was " .
40+
CR ." You got it in " .TRIES
41+
CR ;
42+
43+
: Y/N? ( -- flag) KEY [CHAR] N = ;
44+
45+
: PLAYAGAIN? ( -- flag)
46+
CR ." Want to play again? (Y/N)" Y/N? ;
47+
48+
HEX
49+
: BLK/YEL 1B 7 VWTR ; \ CLEAR, yellow bg
50+
51+
DECIMAL
52+
: RUN ( -- )
53+
BEGIN
54+
PAGE BLK/YEL
55+
0 TRIES !
56+
10 RND 1+ ( -- rnd#)
57+
BEGIN
58+
ASK
59+
GET-GUESS
60+
REPLY
61+
1 TRIES +!
62+
OVER = UNTIL
63+
FINISH
64+
PLAYAGAIN?
65+
UNTIL
66+
CR ." OK, thanks for playing!" ;

0 commit comments

Comments
 (0)