Skip to content

Instantly share code, notes, and snippets.

@CliffordAnderson
Last active February 8, 2022 18:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CliffordAnderson/60740c7f2d9eb2e61b706a4aefe0811b to your computer and use it in GitHub Desktop.
Save CliffordAnderson/60740c7f2d9eb2e61b706a4aefe0811b to your computer and use it in GitHub Desktop.
CMAP 8002: History of the Personal Computer

CMAP 8002:

April 14, 2021

Class Notes

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
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
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
800: A9 01
802: 18
803: 69 01
805: 8D 10 08
808: 60
* 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
* Paddle program by Roger Wagner
300: JSR $FC58
LDX #$00
JSR $FB1E
TYA
JSR $FDED
JMP $0305
* 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
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
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
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"
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