-
Programming Integer Basic
-
Basic Source Code
-
Source Disks for the Apple II
Last active
February 8, 2022 18:10
-
-
Save CliffordAnderson/60740c7f2d9eb2e61b706a4aefe0811b to your computer and use it in GitHub Desktop.
CMAP 8002: History of the Personal Computer
-
Apple II Usage Notes
- Cold Boot: Ctrl+B
- Warm Boot: Ctrl+C
- Boot from disk drive:
PR#6
- Return to monitor:
CALL -151
-
Syntax mistakes in Breakout (alternative version)
- 25 Missing closing parenthesis
- 30 YTAB => VTAB
- 40 too long; split into two lines
- 60 FOR I = 1 to 6
- 65 I - X + V => I = X + V
- 100 PRING => PRINT
-
Adventure Games
- Colossal Cave Adventure on PDP-11 emulation
- Zork I
- Wizard and the Princess
-
Dungeon Crawler Games
-
Excursus on Copy Protection
- Bill Gate's open letter on software piracy (1976)
- Scott Adam's Adventures
- Locksmith and other Cracking
- Crack screen art
-
A Bit of Machine Language
- Peek
- Poke
- Call
- Generating Musical Sequences
-
Mini-Assembler
- Go to Mini-Assembler:
F666G
(from monitor on Apple II)
- Go to Mini-Assembler:
-
Module Summative Assignment
-
Monitor
-
Mini-Assembler
- F666G - Enter mini-assembler from the monitor
- $FF69G - Leave the mini-assembler for the monitor
-
6502 Op(erator) Codes
-
Assembler
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 REM ORAGAMI BIRD HIRES GRAPHICS (280x192) | |
20 HGR2 | |
30 LET X1 = 1: LET X2 = 279: LET Y1 = 1: LET Y2 = 191 | |
40 FOR I = 1 TO 178 | |
60 HCOLOR = 1 | |
70 HPLOT X1,Y1 TO X2,Y2 | |
80 HCOLOR = 6 | |
90 HPLOT X2,Y1 TO X1,Y2 | |
100 LET X1 = X1 + 1: LET X2 = X2 - 1: LET Y1 = Y1 + 1: LET Y2 = Y2 - 1 | |
110 NEXT I | |
120 END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 REM FROM BRIAN FITZGERALD AMAZING MAZE IN 3D | |
10 HGR : HCOLOR = 1 | |
20 X1 = 41: X2 = 169: Y1 = 15: Y2 = 143 : CX = 105 : CY = 79 | |
30 HPLOT X1,Y1 TO X2,Y1 TO X1,Y2 TO X2,Y2 TO X1,Y1 | |
40 HPLOT X1,Y1 TO X1,Y2 : HPLOT X2,Y1 TO X2,Y2 | |
50 X1 = (X1 + CX)/2 : X2 = (X2 + CX)/2 : Y1 = (Y1 + CY)/2: Y2 = (Y2 + CY)/2 | |
60 GOTO 40 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 REM FROM BRIAN FITZGERALD AMAZING MAZE IN 3D | |
10 LOMEM: 16384 | |
20 DIM A%(100,100) | |
30 HOME | |
40 VTAB 10: HTAB 6: PRINT "THE MOUNDS OF CTEIA" | |
50 REM ********** MAZE:3D–PLOTTER | |
60 GOSUB 3000 | |
70 D = 2:XC = 1:YC = 1:RR = 5 | |
80 SP = 0 | |
90 HOME : VTAB 23: HTAB 35: IF D = 1 THEN PRINT "N"; | |
100 IF D = 2 THEN PRINT "E" | |
110 IF D = 3 THEN PRINT "S" | |
120 IF D = 4 THEN PRINT "W" | |
130 VTAB 24: HTAB 20: PRINT XC;" ";YC; | |
140 R = RR: GOSUB 1000 | |
190 VTAB 22: HTAB 1: PRINT "MOVE > "; | |
200 VTAB 22: HTAB 7: GET A$ | |
210 IF A$ = CHR$ (8) THEN 270 | |
220 IF A$ = CHR$ (21) THEN 290 | |
230 IF A$ = ";" THEN 310 | |
240 IF A$ = "T" THEN 410 | |
250 IF A$ = "/" THEN 330 | |
260 GOTO 200 | |
270 D = D - 1: IF D = 0 THEN D = 4 | |
280 GOTO 90 | |
290 D = D + 1: IF D = 5 THEN D = 1 | |
300 GOTO 90 | |
310 XX = XC:YY = YC: GOSUB 1600: P = D: IF T(D) <> 0 THEN 350 | |
320 PRINT CHR$ (7): GOTO 200 | |
330 XX = XC:YY = YC: GOSUB 1600: P = D - 2: PRINT P: IF P < 1 THEN P = P + 4 | |
340 IF T(P) = 0 THEN 320 | |
350 SP = 0 | |
360 IF P = 1 THEN YC = YC - 1 | |
370 IF P = 2 THEN XC = XC + 1 | |
380 IF P = 3 THEN YC = YC + 1 | |
390 IF P = 4 THEN XC = XC - 1 | |
400 GOTO 90 | |
410 HOME : VTAB 22: HTAB 1 | |
420 INPUT "TELEPORT TO (X,Y) ";XC,YC | |
430 GOTO 90 | |
1000 HGR : HCOLOR= 1 | |
1010 X1 = 27:Y1 = 1:X2 = 183:Y2 = 1 | |
1020 X3 = 183:Y3 = 157:X4 = 27:Y4 = 157 | |
1030 X5 = 41:Y5 = 15:X6 = 169:Y6 = 15 | |
1040 X7 = 169:Y7 = 143:X8 = 41:Y8 = 143 | |
1050 CX = 105:CY = 79 | |
1060 XV = 2:YV = 18 | |
1070 X = XC:Y = YC | |
1080 GOTO 1140 | |
1090 X5 = (X1 + CX) / 2:X8 = X5 | |
1100 X6 = (X2 + CX) / 2:X7 = X6 | |
1110 Y5 = (Y1 + CY) / 2:Y6 = Y5 | |
1120 Y7 = (Y3 + CY) / 2:Y8 = Y7 | |
1130 XV = (X5 - X1) / 4:YV = (Y4 - Y1) / 8 | |
1140 P = D - 1: IF P = 0 THEN P = 4 | |
1150 XX = X:YY = Y: GOSUB 1600: IF T(P) = 1 THEN 1230 | |
1160 IF T(P) = 0 THEN 1200 | |
1170 IF R <> RR THEN 1190 | |
1180 HPLOT 29,155 to 29,21 TO 27,19: GOTO 1200 | |
1190 HPLOT X4 + XV,Y4 - XV TO X1 + XV,Y1 + XV + YV TO X5 - XV,(Y5 + YV - XV) TO X8 - XV,Y8 + XV | |
1200 HPLOT X1,Y1 TO X5,Y5: HPLOT X4,Y4 TO X8,Y8 | |
1210 HPLOT X5,Y5 TO X8,Y8: IF R <> RR THEN HPLOT X1,Y1 TO X4,Y4 | |
1220 GOTO 1270 | |
1230 GOSUB 1800:XX = XE:YY = YE: GOSUB 1600: IF T(D) = 1 THEN 1270 | |
1240 IF T(D) = 0 THEN 1260 | |
1241 IF R <> RR THEN 1250 | |
1242 HPLOT 29,143 TO 29,31 TO 27,31 | |
1243 GOTO 1260 | |
1250 HPLOT X5 - XV,Y8 TO X5 - XV,Y5 + XV TO X1,Y5 + XV | |
1260 HPLOT X1,Y5 TO X8,Y5 TO X8,Y8 TO X1,Y8 | |
1270 P = D + 1: IF P = 5 THEN P = 1 | |
1280 XX = X:YY = Y: GOSUB 1600: IF T(P) = 1 THEN 1360 | |
1290 IF T(P) = 0 THEN 1330 | |
1300 IF R <> RR THEN 1320 | |
1310 HPLOT 181,155 TO 181,21 TO 183,19: GOTO 1330 | |
1320 HPLOT X3-XV,Y3-XV TO X2-XV,Y2+XV+YV TO X6+XV,Y5+YV-XV TO X7+XV,Y7+XV | |
1330 HPLOT X2,Y2 TO X6,Y6: HPLOT X3,Y3 TO X7,Y7 | |
1340 HPLOT X6,Y6 TO X7,Y7: IF R <> RR THEN HPLOT X2,Y2 TO X3,Y3 | |
1350 GOTO 1400 | |
1360 GOSUB 1800:XX = XE:YY = YE: GOSUB 1600: IF T(D) = 1 THEN 1400 | |
1370 IF T(D) = 0 THEN 1390 | |
1371 IF R <> RR THEN 1380 | |
1372 HPLOT 181,143 TO 181,31 TO 183,31 | |
1373 GOTO 1390 | |
1380 HPLOT X6 + XV,Y7 TO X6 + XV,Y6 + XV TO X2,Y6 + XV | |
1390 HPLOT X2,Y6 TO X7,Y6 TO X7,Y7 TO X3,Y7 | |
1400 X1 = X5:Y1 = Y5:X2 = X6:Y2 = Y6 | |
1410 X3 = X7:Y3 = Y7:X4 = X8:Y4 = Y8 | |
1420 XX = X:YY = Y: GOSUB 1600:N = T(D) | |
1430 IF N <> 1 THEN 1500 | |
1440 IF D = 1 THEN Y = Y - 1 | |
1450 IF D = 2 THEN X = X + 1 | |
1460 IF D = 3 THEN Y = Y + 1 | |
1470 IF D = 4 THEN X = X - 1 | |
1480 R= R - 1: IF R= 0 THEN 1540 | |
1490 GOTO 1090 | |
1500 HPLOT X5,Y5 TO X6,Y6 TO X7,Y7 TO X8,Y8 TO X5,Y5 | |
1510 IF N <> 2 THEN 1540 | |
1520 XV = (X2 - X1) / 8:YV = (Y4 - Y1) / 8 | |
1530 HPLOT X8 + XV,Y8 TO X5 + XV,Y5 + YV TO X6 - XV,Y6 + YV TO X7 - XV,Y7 | |
1540 RETURN | |
1600 T = A%(XX,YY) | |
1610 IF T< 0 THEN T= T+ 65536 | |
1620 S = INT (T / 4096) | |
1630 T = T - S * 4096 | |
1640 T(1) = INT (T / 512) | |
1650 T = T - T(1) * 512 | |
1660 T(2) = INT (T / 64) | |
1670 T = T - T(2) * 64 | |
1680 T(3) = INT (T / 8) | |
1690 T(4) = T - T(3) * 8 | |
1700 RETURN | |
1800 XE = X:YE = Y: IF P = 1 THEN YE = YE - 1 | |
1810 IF P = 2 THEN XE = XE + 1 | |
1820 IF P = 3 THEN YE = YE + 1 | |
1830 IF P = 4 THEN XE = XE - 1 | |
1840 RETURN | |
3000 FOR I = 1 TO 10 | |
3010 FOR J = 1 TO 10 | |
3020 READ A%(J,I) | |
3030 NEXT J,I | |
3040 RETURN | |
3100 DATA 72,65,81,73,17,72,9,72,73,9 | |
3110 DATA 520,72,1033,520,1096,513,576,513,512,520 | |
3120 DATA 520,576,513,520,520,8,128,74,9,520 | |
3130 DATA 584,65,65,513,576,577,1,576,513,520 | |
3140 DATA 520,64,129,74,9,64,137,74,1,520 | |
3150 DATA 520,72,9,592,529,80,513,512,80,513 | |
3160 DATA 648,514,576,1025,1032,1088,137,74,1097,9 | |
3170 DATA 640,66,129,66,577,65,521,576,577,513 | |
3180 DATA 136,74,137,10,72,65,577,65,9,8 | |
3190 DATA 512,576,513,576,577,65,65,1,576,513 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
800: A9 01 | |
802: 18 | |
803: 69 01 | |
805: 8D 10 08 | |
808: 60 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* using the Apple II mini-assembler (F666G) | |
800: LDA #$01 ; add 1 to the accumulator | |
CLC ; clear the carry flag | |
ADC #$01 ; add one with carry | |
STA $810 ; store result at 810 | |
RTS ; return |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* Paddle program by Roger Wagner | |
300: JSR $FC58 | |
LDX #$00 | |
JSR $FB1E | |
TYA | |
JSR $FDED | |
JMP $0305 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* Anatomy of a Game by Brian Fitzpatrick | |
ORG $800 | |
COUNTER EPZ $0000 | |
Y EPZ $0001 | |
HGR EQU $F3E2 | |
SETHCOL EQU $F6EC | |
HPLOT EQU $F457 | |
HLIN EQU $F53A | |
START JSR HGR | |
LDX #$06 | |
JSR SETHCOL | |
LDA #$00 | |
STA Y | |
^1 LDA Y | |
LDY #$00 | |
LDX #$00 | |
JSR HPLOT | |
LDY Y | |
LDX #$01 | |
LDA #$16 | |
JSR HLIN | |
INC Y | |
LDA Y | |
CMP #$82 | |
BCC <1 | |
LDX #$01 | |
JSR SETHCOL | |
LDA #$83 | |
STA Y | |
^2 LDA Y | |
LDY #$00 | |
LDX #$01 | |
JSR HPLOT | |
LDY Y | |
LDX #$01 | |
LDA #$17 | |
JSR HLIN | |
INC Y | |
LDA Y | |
CMP #$A0 | |
BCC <2 | |
LDX #$03 | |
JSR SETHCOL | |
LDA #$84 | |
LDY #$00 | |
LDX #$00 | |
JSR HPLOT | |
LDX #$01 | |
LDA #$17 | |
LDY #$84 | |
JSR HLIN | |
LDA #$8A | |
LDY #$00 | |
LDX #$00 | |
JSR HPLOT | |
LDX #$01 | |
LDA #$17 | |
LDY #$8A | |
JSR HLIN | |
LDA #$97 | |
LDY #$00 | |
LDX #$00 | |
JSR HPLOT | |
LDX #$01 | |
LDA #$17 | |
LDY #$97 | |
JSR HLIN | |
LDA #$83 | |
LDY #$00 | |
LDX #$87 | |
JSR HPLOT | |
LDX #$00 | |
LDA #$6E | |
LDY #$9F | |
JSR HLIN | |
LDA #$83 | |
LDY #$00 | |
LDX #$91 | |
JSR HPLOT | |
LDX #$00 | |
LDA #$AA | |
LDY #$9F | |
JSR HLIN | |
LDA #$83 | |
LDY #$00 | |
LDX #$7C | |
JSR HPLOT | |
LDX #$00 | |
LDA #$30 | |
LDY #$9F | |
JSR HLIN | |
LDA #$83 | |
LDY #$00 | |
LDX #$9C | |
JSR HPLOT | |
LDX #$00 | |
LDA #$E8 | |
LDY #$9F | |
JSR HLIN | |
LDA #$83 | |
LDY #$00 | |
LDX #$64 | |
JSR HPLOT | |
LDX #$00 | |
LDA #$00 | |
LDY #$90 | |
JSR HLIN | |
LDA #$83 | |
LDY #$00 | |
LDX #$B4 | |
JSR HPLOT | |
LDX #$01 | |
LDA #$17 | |
LDY #$90 | |
JSR HLIN | |
RTS | |
END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 GOTO 15 | |
10 Q=( PDL (0)-20)/6: IF Q<0 THEN Q=0: IF Q>=34 THEN Q=34: COLOR=D: VLIN Q,Q+5 AT 0: COLOR=A: IF P>Q THEN 175: IF Q THEN VLIN 0,Q-1 AT 0:P=Q:RETURN | |
15 DIM A$(15),B$(10):A=1:B=13:C=9:D=6:E=15: TEXT : CALL -936: VTAB 4: TAB 10: PRINT "*** BREAKOUT ***":PRINT | |
20 PRINT "OBJECT IS TO DESTROY ALL BRICKS": PRINT : INPUT "HI, WHAT’S YOUR NAME? ",A$ | |
25 PRINT "STANDARD COLORS ";A$;: INPUT "Y/N? ",B$: GR: CALL -936: IF B$(1,1)#"N" THEN 40: FOR I=0 TO 39: COLOR=I/2*(I(32)): VLIN 0,39 AT I | |
30 NEXT I: POKE 34,20: PRINT : PRINT : PRINT : FOR I=0 TO 15: VTAB 21+I MOD 2: TAB I+I+1: PRINT I;: NEXT I: POKE 34,22: VTAB 24: PRINT : PRINT "BACKGROUND"; | |
35 GOSUB 95:A=E: PRINT "EVEN BRICK";:GOSUB 95:B=E: PRINT "ODD BRICK";: GOSUB 95:C=E: PRINT "PADDLE";: GOSUB 95:D=E: PRINT "BALL";:GOSUB 95 | |
40 POKE 34,20: COLOR=A: FOR I=0 TO 39: VLIN 0,39 AT I: NEXT I: FOR I=20 TO 34 STEP 2: TAB I+1: PRINT I/2 - 9;: COLOR=8 | |
43 VLIN 0,39 AT I: COLOR=C: FOR J=I MOD 4 TO 39 STEP 4 | |
45 VLIN J,J+1 AT I: NEXT J, I: TAB 5: PRINT "SCORE =0":PRINT : PRINT : POKE 34,21:S=0:P=S:L=S:X=10:Y=10:L=6 | |
50 COLOR=A: PLOT X,Y/3:X=19:Y=RND (120):V=-1:W= RND (5)-2:L=L-1: IF L<1 THEN 120: TAB 6: IF L>1 THEN PRINT L;"BALLS LEFT" | |
55 IF L=1 THEN PRINT "LAST BALL, ";A$: PRINT : FOR I=1 TO 100: GOSUB 10: NEXT I:M=1:N=0 | |
60 J=Y+W: IF J>=0 AND J<120 THEN 65: W=-W: J=Y: FOR I=1 TO 6: K=PEEK (-16336): NEXT I | |
65 I=X+V: IF I<0 THEN 180: GOSUB 170: COLOR=A:K=J/3: IF I>39 THEN 75: IF SCRN(I,K)=A THEN 85: IF I THEN 100:N=N+1:V=(N>5)+1:W=(K-P)*2-5:M=1 | |
70 Z= PEEK (-16336)-PEEK (-16336)+ PEEK (-16336)- PEEK (-16336)+ PEEK (-16336)- PEEK (-16336)+ PEEK (-16336): GOTO 85 | |
75 FOR I=1 TO 6:M= PEEK (-16336): NEXT I:I=X:M=0 | |
80 V=-V | |
85 PLOT X,Y/3: COLOR=E: PLOT I,K:X=I:Y=J: GOTO 60 | |
90 PRINT "INVALID, REENTER"; | |
95 INPUT " COLOR (0, TO 15)",E: IF E<0 OR E>15 THEN 90: RETURN | |
100 IF M THEN V= ABS (V): VLIN K/2*2,K/2*2+1 AT I:S=S+I/2-9: VTAB 21: TAB 13: PRINT S | |
105 Q= PEEK (-16336)- PEEK (-16336)+ PEEK (-16336)- PEEK (-16336)+ PEEK (-16336)- PEEK (-16336)+ PEEK (-16336)- PEEK (-16336)+ PEEK (-16336)- PEEK (-16336) | |
110 IF S<720 THEN 80 | |
115 PRINT "CONGRATULATONS, ";A$;" YOU WIN!": GOTO 165 | |
120 PRINT "YOUR SCORE OF ";S;" IS ";: GOTO 125+(S/100)*5 | |
125 PRINT "TERRIBLE!": GOTO 165 | |
130 PRINT "LOUSY.": GOTO 165 | |
135 PRINT "POOR.": GOTO 165 | |
140 PRINT "GOOD.": GOTO 165 | |
145 PRINT "VERY GOOD.": GOTO 165 | |
155 PRINT "EXCELLENT.": GOTO 165 | |
160 PRINT "NEARLY PERFECT." | |
165 PRINT "ANOTHER GAME, ";A$;" (Y/N)";: INPUT A$: IF A$(1,1)="Y" THEN 25: TEXT : CALL -936: VTAB 10: TAB 10: PRINT "GAME OVER": END | |
170 Q=( PDL (0)-20)/6: IF Q<0 THEN Q=0: IF Q>=34 THEN Q=34: COLOR=D: VLIN Q,Q+5 AT 0: COLOR=A: IF P>Q THEN 175: IF Q THEN VLIN 0,Q-1 AT 0:P=Q: RETURN | |
175 IF P=Q THEN RETURN : IF Q*34 THEN VLIN Q+6,39 AT 0:P=Q: RETURN | |
180 FOR I=1 TO 80:Q= PEEK (-16336): NEXT I: GOTO 50 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 GOTO 15 | |
10 Q=( PDL (0)-20)/6: IF Q<0 THEN Q=0: IF Q>=34 THEN Q=34: COLOR=D: VLIN Q,Q+5 AT 0: COLOR=A: IF P>Q THEN 175: IF Q THEN VLIN 0,Q-1 AT 0:P=Q:RETURN | |
15 DIM A$(15),B$(10):A=1:B=13:C=9:D=6:E=15: TEXT : CALL -936: VTAB 4: TAB 10: PRINT “*** BREAKOUT ***”:PRINT | |
20 PRINT “ OBJECT IS TO DESTROY ALL BRICKS”: PRINT : INPUT “HI, WHAT’S YOUR NAME? ”,A$ | |
25 PRINT “STANDARD COLORS ”;A$;: INPUT “Y/N? ”,B$: GR: CALL -936: IF B$(1,1)#”N” THEN 40: FOR I=0 TO 39: COLOR=I/2* (I(32): VLIN 0,39 AT I | |
30 NEXT I: POKE 34,20: PRINT : PRINT : PRINT : FOR I=0 TO 15: VTAB 21+I MOD 2: TAB I+I+1: PRINT I;: NEXT I: POKE 34,22: YTAB 24: PRINT : PRINT “BACKGROUND”; | |
35 GOSUB 95:A=E: PRINT “EVEN BRICK”;:GOSUB 95:B=E: PRINT “ODD BRICK”;: GOSUB 95:C=E: PRINT “PADDLE”;: GOSUB 95:D=E: PRINT “BALL”;:GOSUB 95 | |
40 POKE 34,20: COLOR=A: FOR I=0 TO 39: VLIN 0,39 AT I: NEXT I: FOR I=20 TO 34 STEP 2: TAB I+1: PRINT I/2-9;: COLOR=8: VLIN 0,39 AT I: COLOR=C: FOR J=I MOD 4 TO 39 STEP 4 | |
45 VLIN J,J+1 AT I: NEXT J, I: TAB 5: PRINT “SCORE =0”:PRINT : PRINT : POKE 34,21:S=0:P=S:L=S:X=10:Y=10:L=6 | |
50 COLOR=A: PLOT X,Y/3:X=19:Y=RND (120):V=-1:W= RND (5)-2:L=L-1: IF L<1 THEN 120: TAB 6: IF L>1 THEN PRINT L;”BALLS LEFT” | |
55 IF L=1 THEN PRINT “LAST BALL, ”;A$: PRINT : FOR I=1 TO 100: GOSUB 10: NEXT I:M=1:N=0 | |
60 J=Y+W: IF J>=0 AND J<120 THEN | |
65:W=-W:J=Y: FOR I-1 TO 6:K=PEEK (-16336): NEXT I | |
65 I-X+V: IF I<0 THEN 180: GOSUB 170: COLOR=A:K=J/3: IF I>39 THEN 75: IF SCRN(I,K)=A THEN 85: IF I THEN 100:N=N+1:V=(N>5)+1:W=(K-P)*2-5:M=1 | |
70 Z= PEEK (-16336)-PEEK (-16336)+ PEEK (-16336)- PEEK (-16336)+ PEEK (-16336)- PEEK (-16336)+ PEEK (-16336): GOTO 85 | |
75 FOR I=1 TO 6:M= PEEK (-16336): NEXT I:I=X:M=0 | |
80 V=-V | |
85 PLOT X,Y/3: COLOR=E: PLOT I,K:X=I:Y=J: GOTO 60 | |
90 PRINT “INVALID, REENTER”; | |
95 INPUT “ COLOR (0, TO 15)”,E: IF E<0 OR E>15 THEN 90: RETURN | |
100 IF M THEN V= ABS (V): VLIN K/2*2,K/2*2+1 AT I:S=S+I/2-9: VTAB 21: TAB 13: PRING S | |
105 Q= PEEK (-16336)- PEEK (-16336)+ PEEK (-16336)- PEEK (-16336)+ PEEK (-16336)- PEEK (-16336)+ PEEK (-16336)- PEEK (-16336)+ PEEK (-16336)- PEEK (-16336) | |
110 IF S<720 THEN 80 | |
115 PRINT “CONGRATULATONS, ”;A$;” YOU WIN!”: GOTO 165 | |
120 PRINT “YOUR SCORE OF ”;S;” IS “;: GOTO 125+(S/100)*5 | |
125 PRINT ”TERRIBLE!”: GOTO 165 | |
130 PRINT “LOUSY.”: GOTO 165 | |
135 PRINT “POOR.”: GOTO 165 | |
140 PRINT “GOOD.”: GOTO 165 | |
145 PRINT “VERY GOOD.”: GOTO 165 | |
155 PRINT “EXCELLENT.”: GOTO 165 | |
160 PRINT “NEARLY PERFECT.” | |
165 PRINT “ANOTHER GAME ”;A$;” (Y/N)“;: INPUT A$: IF A$(1,1)=”Y” THEN 25: TEXT : CALL -936: VTAB 10: TAB 10: PRINT “GAME OVER”: END | |
170 Q=( PDL (0)-20)/6: IF Q<0 THEN Q=0: IF Q>=34 THEN Q=34: COLOR=D: VLIN Q,Q+5 AT 0: COLOR=A: IF P>Q THEN 175: IF Q THEN VLIN 0,Q-1 AT 0:P=Q: RETURN | |
175 IF P=Q THEN RETURN : IF Q*34 THEN VLIN Q+6,39 AT 0:P=Q: RETURN | |
180 FOR I=1 TO 80:Q= PEEK (-16336): NEXT I: GOTO 50 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 HOME : REM CLEAR SCREEN | |
10 REM HOW DO IT KNOW | |
15 REM DIM VARIABLES | |
20 DIM V1$(10),N1$(10) | |
25 REM LOAD DATA INTO VARIABLES | |
30 FOR A = 1 TO 4 | |
35 READ V1$(A) | |
40 NEXT A | |
45 FOR A = 1 TO 5 | |
50 READ N1$(A) | |
55 NEXT A | |
100 REM THE STORY STARTS HERE | |
105 PRINT "YOU'RE STANDING IN A ROOM. IN THE " | |
110 PRINT "MIDDLE OF THE ROOM ARE THESE ITEMS: " | |
115 PRINT | |
120 REM LISTING OUT THE ITEMS | |
125 FOR A = 1 TO 4 | |
130 PRINT N1$(A) | |
135 NEXT | |
140 PRINT : PRINT | |
145 GOTO 200: REM GOING TO THE PARSER | |
150 REM BACK FROM THE PARSER. CARRYING OUT THE INSTRUCTIONS | |
155 IF V$ = "EAT" THEN GOTO 505 | |
160 IF V$ = "SMELL" THEN GOTO 545 | |
165 IF V$ = "DRINK" THEN GOTO 565 | |
170 IF V$ = "GIVE" THEN GOTO 580 | |
200 REM HERE'S HOW IT'S DONE | |
205 V$ = "": N$ = "" | |
210 PRINT "WHAT DO YOU WANT TO DO? "; | |
215 INPUT "";A$ | |
220 REM NOW WE'LL BREAK DOWN THE INPUT INTO VERB AND NOUN | |
225 REM FIRST GET THE VERB | |
230 FOR A = 1 TO LEN (A$) | |
235 IF MID$ (A$,A,1) = " " THEN X = A + 1:A = 0: GOTO 260: REM THIS LOOKS FOR THE BLANK SEPARATING THE WORDS | |
240 V$ = V$ + MID$ (A$,A,1) | |
245 NEXT A | |
250 X = A - 1: REM IN CASE THERE'S ONLY ONE WORD. IF X = THE WHOLE LENGTH OF THE STRING, THE NEXT LINE WILL SEND YOU BACK TO THE BEGINNING | |
255 IF X = LEN (A$) THEN PRINT : PRINT "I CAN'T ";V$;" NOTHING.": PRINT : GOTO 100 | |
260 REM NOW GET THE NOUN | |
265 IF X = LEN (A$) THEN PRINT : PRINT "I CAN'T ";V$;" NOTHING.": PRINT : GOTO 100 | |
270 N$ = MID$(A$,X,LEN(A$)-(X-1)) | |
275 REM CHECK TO SEE IF VERB IS GOOD | |
280 FOR A = 1 TO 5 | |
285 IF V$ = V1$(A) THEN A = 0: GOTO 305: REM VERB IS O.K. | |
290 NEXT A | |
295 PRINT | |
300 PRINT "I CAN'T ";V$;" SOMETHING.": PRINT: GOTO 100 | |
305 REM CHECK TO SEE IF NOUN IS GOOD | |
310 FOR A = 1 TO 5 | |
315 IF N$ = N1$(A) THEN A = 0: GOTO 155: REM EVERYTHING CHECKS AND NOW WE'LL DO SOMETHING. | |
320 NEXT A | |
325 PRINT : PRINT "SORRY, THERE'S NO ";N$;" HERE.": PRINT : GOTO 100: REM SOMETHING'S WRONG SO WE HAVE TO START OVER | |
500 REM HERE'S WHERE THINGS HAPPEN | |
505 REM EATING THINGS | |
510 IF N$ = N1$(3) THEN CO = 1: PRINT : PRINT "I'M IN LOVE.": PRINT : GOTO 520 | |
515 PRINT : PRINT "I CAN'T EAT A ";N$: PRINT : PRINT "BURP! I GUESS I CAN.": PRINT | |
520 FOR A = 1 TO 4 | |
525 IF N$ = N1$(A) THEN N1$(A) = "":A = 0:GOTO 535 | |
530 NEXT A | |
535 X = 0: FOR A = 1 TO 4:X = LEN(N1$(A)) + X: NEXT : IF X = 0 THEN GOTO 900: REM CHECKING TO SEE IF EVERYTHING EATEN | |
540 GOTO 100 | |
545 REM SMELLING THINGS | |
550 IF N$ = N1$(1) THEN N$ = N1$(5) | |
555 IF N$ = N1$(3) THEN N$ = "SKUNK CABBAGE" | |
560 PRINT : PRINT "THAT SMELLS LIKE A ";N$;"" : PRINT : GOTO 100 | |
565 REM DRINKING | |
570 IF N$ = N1$(4) THEN PRINT : PRINT "THAT WAS THE LAST BOTTLE OF SACRED ALE.": GOTO 900 | |
575 PRINT : PRINT "YOU CAN'T.": PRINT : GOTO 100 | |
580 REM GIVING THINGS A WAY | |
585 IF N$ = N1$(1) THEN PRINT : PRINT "WHAT? ";: GOTO 595 | |
590 PRINT "YOU CAN'T GIVE A ";N$;"ANYTHING." : PRINT : GOTO 100 | |
595 INPUT "";N$ : IF LEN (N1$(2)) > 0 AND N$ = N1$(2) AND CO > 0 THEN GOTO 800 | |
600 PRINT : GOTO 100 | |
800 REM AND HERE'S THE WINNING OUTCOME OF THE GAME | |
805 PRINT : PRINT "THERE IS A CLAP OF THUNDER AND THE " | |
810 PRINT "HIGH PRIEST OF YORE APPEARS, MARRIES" | |
815 PRINT "YOU AND THE PRINCESS, GIVES YOU HALF" | |
820 PRINT "A KINGDOM AND LEAVES. YOU HAVE WON." | |
825 PRINT "UNFORTUNATELY, THE PRINCESS HAS JUST" | |
830 PRINT "TURNED BACK INTO A GOAT." | |
835 END | |
900 REM AND HERE'S THE LOSING OUTCOME | |
905 PRINT : PRINT "OH OH. YOU HAVE OFFENDED MARVIN, CHIEF" | |
910 PRINT "GOD OF ADVENTURE PLAYERS AND BARBERS." | |
915 PRINT "HOWEVER, HE MAY GIVE YOU JUST ONE OR" | |
920 PRINT "MORE CHANCES TO PLAY AGAIN." | |
925 PRINT | |
930 PRINT "DO YOU WANT TO? ";: INPUT "";A$:IF LEFT$(A$,1) = "Y" THEN RESTORE : GOTO 30 | |
935 END | |
950 DATA "EAT","DRINK","SMELL","GIVE" | |
955 DATA "GOAT","FLOWER","BOTTLE","PRINCESS" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
100 GR | |
105 FOR W=3 TO 50 | |
110 FOR I=1 TO 19 | |
115 FOR J=0 TO 19 | |
120 K=I+J | |
130 COLOR=J*3/(I+3)+I * W/12 | |
135 PLOT I,K: PLOT K,I: PLOT 40-I,40-K | |
136 PLOT 40-K,40-I: PLOT K,40-I: PLOT 40-I,K: PLOT I,40-K: PLOT 40-K,I | |
140 NEXT J,I | |
145 NEXT W: GOTO 105 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment