Skip to content

Commit 0f85f64

Browse files
committed
Add demo programs in Cody BASIC
1 parent 633eea9 commit 0f85f64

File tree

2 files changed

+779
-0
lines changed

2 files changed

+779
-0
lines changed

CodyBASIC/codylander.bas

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
10 REM CODY LANDER 1.0 BY FJ MILENS III
2+
20 REM RELEASED UNDER GPL V3, DEC 2024
3+
30 A=14000
4+
40 F=1200
5+
50 V=0
6+
60 G=-5
7+
70 Y=3
8+
80 B=0
9+
90 E=0
10+
100 REM MAIN PROGRAM
11+
110 POKE 53250,AND(PEEK(53250),240)
12+
120 GOSUB 7000
13+
130 PRINT CHR$(253,224,222)
14+
140 GOSUB 3000
15+
150 GOSUB 2000
16+
160 GOSUB 4000
17+
170 GOSUB 1000
18+
180 F=F-B
19+
190 V=V+G+B
20+
200 A=A+V
21+
210 E=E+1
22+
220 T=TI
23+
230 IF TI-T<60 THEN GOTO 230
24+
240 GOSUB 9000
25+
250 GOSUB 8300
26+
260 GOSUB 8000
27+
270 IF A>20 THEN GOTO 180
28+
280 A=0
29+
290 B=0
30+
300 L=30
31+
310 IF V<=-30 THEN L=0
32+
320 GOSUB 9000
33+
330 GOSUB 8300
34+
340 GOSUB 6000
35+
350 IF V>-30 THEN GOSUB 6100
36+
360 IF V<=-30 THEN GOSUB 6200
37+
370 PRINT AT(0,24),CHR$(241),"PLAY AGAIN (Y/N)";
38+
380 INPUT Z$
39+
390 IF Z$="Y" THEN GOTO 10
40+
400 IF Z$="N" THEN END
41+
410 GOTO 370
42+
1000 REM DRAW LUNAR LANDER
43+
1010 PRINT AT(18,Y),CHR$(252,20,20,170,193);
44+
1020 PRINT AT(18,Y+1),CHR$(255,20,223,172,20,162,223);
45+
1030 PRINT AT(18,Y+2),CHR$(255,20,223,20,193,20,223);
46+
1040 PRINT AT(18,Y+3),CHR$(247,223,172,85,83,65,162,223);
47+
1050 PRINT AT(18,Y+4),CHR$(247,145,252,223,172,165,162,223,247,144);
48+
1060 RETURN
49+
2000 REM DRAW DISPLAY BOX
50+
2010 PRINT CHR$(252);
51+
2020 PRINT AT(0,1),CHR$(173,223),"SPEED HEIGHT",CHR$(223,168);
52+
2030 FOR I=0 TO 2
53+
2040 PRINT AT(0,2+I),CHR$(173)," ",CHR$(168);
54+
2050 NEXT
55+
2060 PRINT AT(0,5),CHR$(173,223)," FUEL TIME ",CHR$(223,168);
56+
2070 FOR I=0 TO 1
57+
2080 PRINT AT(0,6+I),CHR$(173)," ",CHR$(168);
58+
2090 NEXT
59+
2100 PRINT AT(0,8),CHR$(173);
60+
2110 FOR I=0 TO 11
61+
2120 PRINT CHR$(167);
62+
2130 NEXT
63+
2140 PRINT CHR$(168);
64+
2150 RETURN
65+
3000 REM DRAW STARS
66+
3010 Z=RND(20)
67+
3020 PRINT CHR$(241);
68+
3030 FOR I=0 TO 11
69+
3040 PRINT AT(MOD(RND(),39), MOD(RND(),20)),".";
70+
3050 NEXT
71+
3060 RETURN
72+
4000 REM DRAW LUNAR SURFACE
73+
4010 PRINT CHR$(236),AT(0,21);
74+
4020 FOR I=0 TO 3
75+
4030 PRINT " ";
76+
4040 NEXT
77+
4050 PRINT CHR$(224,252),AT(0,20);
78+
4060 FOR I=0 TO 3
79+
4070 PRINT CHR$(167,167,188,188,165,188,188,165,165,188);
80+
4080 NEXT
81+
4090 PRINT AT(16,20);
82+
4100 PRINT CHR$(188,167,20,20,20,20,20,167,188);
83+
4110 RETURN
84+
5000 REM DELETE LUNAR LANDER
85+
5010 FOR I=0 TO 4
86+
5020 PRINT AT(18,Y+I)," ";
87+
5030 NEXT
88+
5040 RETURN
89+
6000 REM LANDING ANIMATION
90+
6010 FOR Y=3 TO 16
91+
6020 GOSUB 1000
92+
6030 T=TI
93+
6040 IF TI-T<L THEN GOTO 6040
94+
6050 GOSUB 5000
95+
6060 NEXT
96+
6070 GOSUB 1000
97+
6080 RETURN
98+
6100 REM LANDED
99+
6110 PRINT CHR$(241);
100+
6120 PRINT AT(0,23),CHR$(34),"HOUSTON...",CHR$(34);
101+
6130 T=TI
102+
6140 IF TI-T<120 THEN GOTO 6140
103+
6150 PRINT AT(0,23),CHR$(34),"THE POMERANIAN HAS LANDED!",CHR$(34);
104+
6160 T=TI
105+
6170 IF TI-T<600 THEN GOTO 6170
106+
6180 RETURN
107+
6200 REM CRASHED
108+
6210 GOSUB 5000
109+
6220 PRINT AT(18,20),CHR$(251,171,169,169,171,171);
110+
6230 PRINT AT(0,23),CHR$(241),"YOU CRASHED!"
111+
6240 T=TI
112+
6250 IF TI-T<600 THEN GOTO 6250
113+
6260 RETURN
114+
7000 REM INSTRUCTIONS
115+
7010 PRINT CHR$(224,222)
116+
7020 PRINT CHR$(253),"1973",CHR$(241)
117+
7030 PRINT
118+
7040 PRINT "THE LUNAR LANDER",CHR$(247)," POMERANIAN ",CHR$(241),"HAS JUST"
119+
7050 PRINT "UNDOCKED FROM ITS APOLLO CAPSULE. IT"
120+
7060 PRINT "IS DESCENDING TO",CHR$(247)," MARE CRISIUM ",CHR$(241),", THE SEA"
121+
7070 PRINT "OF CRISES",CHR$(241),". ABOARD ARE YOURSELF AS THE"
122+
7080 PRINT "COMMANDER AND AN ASTRONAUT-SCIENTIST."
123+
7090 PRINT
124+
7100 PRINT "GRAVITY IS PULLING YOU DOWNWARD AT A"
125+
7110 PRINT "RATE OF 5 UNITS PER SECOND. YOU MUST "
126+
7120 PRINT "FIRE YOUR THRUSTER TO ENSURE A SOFT "
127+
7130 PRINT "LANDING AT NO MORE THAN 30 UNITS PER "
128+
7140 PRINT "SECOND. EACH UNIT OF FUEL EQUATES TO "
129+
7150 PRINT "ONE UNIT OF THRUST. KEYS 1 TO 0 WILL "
130+
7160 PRINT "FIRE THE THRUSTER AT A LEVEL FROM 1 "
131+
7170 PRINT "TO 10."
132+
7180 PRINT
133+
7190 PRINT "GOOD LUCK. WE'RE ALL COUNTING ON YOU."
134+
7200 PRINT CHR$(247)
135+
7210 PRINT AT(0,23),"DO YOU UNDERSTAND (Y/N)";
136+
7220 INPUT C$
137+
7230 IF C$<>"Y" THEN GOTO 7000
138+
7240 RETURN
139+
8000 REM GET BURN COMMAND
140+
8010 B=0
141+
8020 Z=PEEK(16)
142+
8030 IF Z=30 THEN B=1
143+
8040 IF Z=29 THEN B=3
144+
8050 IF Z=27 THEN B=5
145+
8060 IF Z=23 THEN B=7
146+
8070 IF Z=15 THEN B=9
147+
8080 Z=PEEK(21)
148+
8090 IF Z=30 THEN B=2
149+
8100 IF Z=29 THEN B=4
150+
8110 IF Z=27 THEN B=6
151+
8120 IF Z=23 THEN B=8
152+
8130 IF Z=15 THEN B=10
153+
8140 RETURN
154+
8300 REM DRAW BURN
155+
8310 PRINT CHR$(240);
156+
8320 FOR I=1 TO 10
157+
8330 PRINT AT(19,Y+5+I)," ";
158+
8340 NEXT
159+
8350 IF B=0 THEN RETURN
160+
8360 FOR I=1 TO B
161+
8370 PRINT CHR$(250);
162+
8380 IF I>3 THEN PRINT CHR$(248);
163+
8390 IF I>6 THEN PRINT CHR$(247);
164+
8400 PRINT AT(19,Y+5+I),CHR$(145,186,144);
165+
8410 NEXT
166+
8420 RETURN
167+
9000 REM DRAW DISPLAY
168+
9010 PRINT CHR$(253);
169+
9020 PRINT AT(1,3);
170+
9030 N=V
171+
9040 IF N>0 THEN PRINT CHR$(223);
172+
9050 GOSUB 9200
173+
9060 IF N>0 THEN PRINT CHR$(223);
174+
9070 PRINT AT(7,3);
175+
9080 N=A
176+
9090 GOSUB 9200
177+
9100 PRINT AT(1,7);
178+
9110 N=F
179+
9120 GOSUB 9200
180+
9130 PRINT AT(7,7);
181+
9140 N=E
182+
9150 GOSUB 9200
183+
9160 RETURN
184+
9200 REM DISPLAY NUMBER
185+
9210 Z=ABS(N)
186+
9220 IF Z<10000 THEN PRINT " ";
187+
9230 IF Z<1000 THEN PRINT " ";
188+
9240 IF Z<100 THEN PRINT " ";
189+
9250 IF Z<10 THEN PRINT " ";
190+
9260 PRINT Z;
191+
9270 RETURN
192+

0 commit comments

Comments
 (0)