home *** CD-ROM | disk | FTP | other *** search
- 10 KEY OFF:CLS
- 20 SCREEN 0
- 30 WIDTH 40
- 40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
- 50 PRINT"░┌───────────────────────────────────┐░"
- 60 PRINT"░│ │░"
- 70 PRINT"░│ 5011-A.BAS │░"
- 80 PRINT"░│ MEMORY │░"
- 90 PRINT"░│ │░"
- 100 PRINT"░│ │░"
- 110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
- 120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
- 130 PRINT"░│ █ █ █ █ █ █ │░"
- 140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
- 150 PRINT"░│ █ █ █ █ █ │░"
- 160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
- 170 PRINT"░│ │░"
- 180 PRINT"░│ International PC Owners │░"
- 190 PRINT"░│ │░"
- 200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
- 210 PRINT"░│ │░"
- 220 PRINT"░└───────────────────────────────────┘░"
- 230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
- 240 PRINT
- 250 PRINT " PRESS ANY KEY TO CONTINUE
- 260 A$=INKEY$: IF A$="" THEN 260
- 270 WIDTH 80
- 280 CLS
- 1000 REM --- MEMORY -- WITH BLOCK LETTER CHARACTERS FOR TITLE
- 1010 DEFINT A-Z
- 1020 DIM COLMASK(8)
- 1030 FOR I = 1 TO 8
- 1040 COLMASK(I) = 2^(8-I)
- 1050 NEXT I
- 1060 DOTCHAR = 219
- 1070 DOT$ = STRING$(1,DOTCHAR)
- 1080 DEF SEG = &HF000
- 1090 BASEADR = &HFA6E
- 1100 KEY OFF
- 1110 REM --- MAIN LOOP
- 1120 CLS
- 1130 A$ = "MEMORY"
- 1140 CLS
- 1150 FOR I = 1 TO 6
- 1160 CHAR$ = MID$(A$,I,1)
- 1170 CODE = ASC(CHAR$)
- 1180 IF CODE >= 128 THEN BEEP : GOTO 1110
- 1190 ADR = BASEADR + CODE*8
- 1200 REM --- SUBROUTINE TO DISPLAY CHARACTER
- 1210 FOR ROW = 1 TO 8
- 1220 ROWVAL = PEEK(ADR + (ROW-1))
- 1230 FOR COL = 1 TO 8
- 1240 COLMASK = COLMASK(COL)
- 1250 IF (ROWVAL AND COLMASK) = 0 THEN 1290
- 1260 REM --- LOCATE TO BIT POSITION AND DISPLAY GIANT PIXEL
- 1270 LOCATE (ROW+8), 1 + (COL-1) + (I-1)*8
- 1280 PRINT DOT$;
- 1290 NEXT COL
- 1300 NEXT ROW
- 1310 NEXT I
- 1320 LOCATE 18,1
- 1330 PRINT "WHICH GAME DO YOU WANT TO PLAY"
- 1340 PRINT " 1) MEMORY USING NUMBERS"
- 1350 PRINT " 2) MEMORY USING SYMBOLS"
- 1360 A$ = INPUT$(1)
- 1370 IF A$ = "1" THEN 1400
- 1380 IF A$ = "2" THEN 1420
- 1390 GOTO 1360
- 1400 FIRST = 1
- 1410 GOTO 1430
- 1420 FIRST = 2
- 1430 DIM TUBE(5,8), SET(40)
- 1440 CLS
- 1450 REM --- DRAW OUTSIDE EDGE
- 1460 H = 20
- 1470 W = 79
- 1480 R = 1
- 1490 C = 1
- 1500 GOSUB 1860 ''' TOP SIDE
- 1510 GOSUB 2000 ''' RIGHT SIDE
- 1520 GOSUB 2080 ''' BOTTOM SIDE
- 1530 GOSUB 2160 ''' LEFT SIDE
- 1540 LOCATE R,C
- 1550 PRINT CHR$(201)
- 1560 R = 5
- 1570 GOSUB 1910 ''' ACROSS
- 1580 R = 9
- 1590 GOSUB 1910 ''' ACROSS
- 1600 R = 13
- 1610 GOSUB 1910 ''' ACROSS
- 1620 R = 17
- 1630 GOSUB 1910 ''' ACROSS
- 1640 R = 1
- 1650 C = 10
- 1660 GOSUB 2200 ''' UP
- 1670 C = 20
- 1680 GOSUB 2200 ''' UP
- 1690 C = 30
- 1700 GOSUB 2200 ''' UP
- 1710 C = 40
- 1720 GOSUB 2200 ''' UP
- 1730 C = 50
- 1740 GOSUB 2200 ''' UP
- 1750 C = 60
- 1760 GOSUB 2200 ''' UP
- 1770 C = 70
- 1780 GOSUB 2200 ''' UP
- 1790 FOR R = 5 TO 17 STEP 4
- 1800 FOR C = 10 TO 70 STEP 10
- 1810 LOCATE R,C
- 1820 PRINT CHR$(206)
- 1830 NEXT C
- 1840 NEXT R
- 1850 GOTO 2300
- 1860 REM *** START OF SUBROUTINE
- 1870 REM *** ROUTINE FOR TOP SIDE
- 1880 LOCATE R,C :REM print top left hand corner
- 1890 PRINT CHR$(201)
- 1900 GOTO 1930
- 1910 LOCATE R,C
- 1920 PRINT CHR$(204)
- 1930 FOR I = C+1 TO W
- 1940 LOCATE R,I :REM print top side
- 1950 PRINT CHR$(205)
- 1960 NEXT I
- 1970 LOCATE R,W+1
- 1980 PRINT CHR$(185)
- 1990 RETURN
- 2000 REM *** ROUTINE FOR RIGHT HAND SIDE
- 2010 LOCATE R,C+W :REM print top right hand corner
- 2020 PRINT CHR$(187)
- 2030 FOR I = R+1 TO R+H
- 2040 LOCATE I,C+W :REM print right hand side
- 2050 PRINT CHR$(186)
- 2060 NEXT I
- 2070 RETURN
- 2080 REM *** ROUTINE FOR BOTTOM SIDE
- 2090 LOCATE R+H,C+W :REM print bottom right corner
- 2100 PRINT CHR$(188)
- 2110 FOR I = C+W-1 TO C+1 STEP -1
- 2120 LOCATE R+H,I :REM print bottom side
- 2130 PRINT CHR$(205)
- 2140 NEXT I
- 2150 RETURN
- 2160 REM *** ROUTINE FOR LEFT HAND SIDE
- 2170 LOCATE R+H,C :REM print bottom left corner
- 2180 PRINT CHR$(200)
- 2190 GOTO 2220
- 2200 LOCATE R+H, C
- 2210 PRINT CHR$(202)
- 2220 FOR I = R+H-1 TO R+1 STEP -1
- 2230 LOCATE I,C :REM print left hand side
- 2240 PRINT CHR$(186)
- 2250 NEXT I
- 2260 LOCATE R,C
- 2270 PRINT CHR$(203)
- 2280 RETURN
- 2290 END
- 2300 REM --- START ROUTINE FOR RANDOM IMAGES
- 2310 NUM = CVI(RIGHT$(TIME$,2))
- 2320 RANDOMIZE NUM
- 2330 REM --- DETERMINE DEGREE OF EXPERTISE
- 2340 LOCATE 22,1
- 2350 PRINT "ENTER DESIRED WAIT TIME: 1, 2, 3, OR 4 SECONDS"
- 2360 A$ = INKEY$
- 2370 IF A$ = "" THEN 2360
- 2380 DIF = VAL(A$)
- 2390 IF DIF < 1 THEN 2360
- 2400 IF DIF > 4 THEN 2360
- 2410 LOCATE 23,40
- 2420 PRINT " DELAY TIME WILL BE "; DIF; " SECONDS"
- 2430 REM --- SET UP INITIAL VALUES
- 2440 FOR I = 1 TO 20
- 2450 SET(I) = I
- 2460 SET(20+I) = I
- 2470 NEXT I
- 2480 REM --- TRANSFER INITIAL VALUES TO RANDOM VALUES ON SCREEN
- 2490 FOR I = 1 TO 5
- 2500 FOR J = 1 TO 8
- 2510 NUM = INT(40*RND(NUM) + 1)
- 2520 IF SET(NUM) = 0 THEN 2510
- 2530 TUBE(I,J) = SET(NUM)
- 2540 SET(NUM) = 0
- 2550 NEXT J
- 2560 NEXT I
- 2570 REM --- PRINT OUT VALUES
- 2580 FOR I = 1 TO 5
- 2590 FOR J = 1 TO 8
- 2600 LOCATE I*4-1, (J-1)*10+3
- 2610 IF FIRST = 1 THEN 2640
- 2620 GOSUB 3960
- 2630 GOTO 2650
- 2640 PRINT TUBE(I,J)
- 2650 NEXT J
- 2660 NEXT I
- 2670 REM --- NUMBER THE SCREEN
- 2680 FOR I = 1 TO 5
- 2690 FOR J = 1 TO 8
- 2700 LOCATE I*4-1, (J-1)*10+3
- 2710 PRINT I; J
- 2720 NEXT J
- 2730 NEXT I
- 2740 REM -- START GUESSING PROCESS
- 2750 LOCATE 22,1
- 2760 PRINT "ROW = COLUMN = AND ROW = COLUMN = "
- 2770 A$ = INKEY$
- 2780 IF A$ = "" THEN 2770
- 2790 I = VAL(A$)
- 2800 IF I <> 0 THEN 2840
- 2810 IF LEN(A$) = 1 THEN 2770
- 2820 BEEP
- 2830 GOTO 3770
- 2840 LOCATE 22,7
- 2850 PRINT A$
- 2860 A$ = INKEY$
- 2870 IF A$ = "" THEN 2860
- 2880 J = VAL(A$)
- 2890 IF J <> 0 THEN 2930
- 2900 IF LEN(A$) = 1 THEN 2860
- 2910 BEEP
- 2920 GOTO 3770
- 2930 LOCATE 22,21
- 2940 PRINT A$
- 2950 A$ = INKEY$
- 2960 IF A$ = "" THEN 2950
- 2970 L = VAL(A$)
- 2980 IF L <> 0 THEN 3020
- 2990 IF LEN(A$) = 1 THEN 2950
- 3000 BEEP
- 3010 GOTO 3770
- 3020 LOCATE 22,41
- 3030 PRINT A$
- 3040 A$ = INKEY$
- 3050 IF A$ = "" THEN 3040
- 3060 M = VAL(A$)
- 3070 IF M <> 0 THEN 3110
- 3080 IF LEN(A$) = 1 THEN 3040
- 3090 BEEP
- 3100 GOTO 3770
- 3110 LOCATE 22,55
- 3120 PRINT A$
- 3130 REM --- CHECK TO SEE IF SAME SPOT
- 3140 IF I <> L THEN 3200
- 3150 IF J <> M THEN 3200
- 3160 BEEP
- 3170 LOCATE 23,1
- 3180 PRINT "SAME SQUARE, GO AGAIN "
- 3190 GOTO 2740
- 3200 REM --- CHECK TO SEE IF VALID SUBSCRIPT
- 3210 IF I < 6 THEN 3260
- 3220 BEEP
- 3230 LOCATE 23,1
- 3240 PRINT "INVALID NUMBER........"
- 3250 GOTO 2740
- 3260 IF J > 8 THEN 3220
- 3270 IF L > 5 THEN 3220
- 3280 IF M > 8 THEN 3220
- 3290 REM --- CHECK TO SEE IF VALID SUBSCRIPT
- 3300 IF TUBE(I,J) = 0 THEN 3330
- 3310 IF TUBE(L,M) = 0 THEN 3330
- 3320 GOTO 3370
- 3330 LOCATE 23,1
- 3340 BEEP
- 3350 PRINT "KNOWN SQUARE, GO AGAIN"
- 3360 GOTO 2740
- 3370 REM --- DISPLAY VALUES
- 3380 COUNT = COUNT + 1
- 3390 LOCATE I*4-1, (J-1)*10+3
- 3400 PRINT " "
- 3410 LOCATE I*4-1, (J-1)*10+3
- 3420 IF FIRST = 1 THEN 3450
- 3430 GOSUB 3960
- 3440 GOTO 3460
- 3450 PRINT TUBE(I,J)
- 3460 LOCATE L*4-1, (M-1)*10+3
- 3470 PRINT " "
- 3480 LOCATE L*4-1, (M-1)*10+3
- 3490 IF FIRST = 1 THEN 3520
- 3500 GOSUB 3990
- 3510 GOTO 3530
- 3520 PRINT TUBE(L,M)
- 3530 REM --- CHECK FOR MATCHES
- 3540 IF TUBE(I,J) = TUBE(L,M) THEN 3650
- 3550 LOCATE 23,1
- 3560 PRINT "THEY DO NOT MATCH "
- 3570 T1 = VAL(RIGHT$(TIME$,2))
- 3580 T2 = VAL(RIGHT$(TIME$,2))
- 3590 IF ABS(T1-T2) < DIF THEN 3580
- 3600 LOCATE I*4-1, (J-1)*10+3
- 3610 PRINT I; J
- 3620 LOCATE L*4-1, (M-1)*10+3
- 3630 PRINT L; M
- 3640 GOTO 2740
- 3650 REM --- THE SQUARES MATCH
- 3660 BEEP
- 3670 LOCATE 23,1
- 3680 PRINT "THEY MATCH............"
- 3690 LOCATE I*4-1, (J-1)*10+3
- 3700 PRINT CHR$(17); CHR$(219); CHR$(219); CHR$(16)
- 3710 LOCATE L*4-1, (M-1)*10+3
- 3720 PRINT CHR$(17); CHR$(219); CHR$(219); CHR$(16)
- 3730 TUBE(I,J) = 0
- 3740 TUBE(L,M) = 0
- 3750 MATCH = MATCH + 1
- 3760 IF MATCH < 20 THEN 2740
- 3770 REM --- TIME TO MOVE ON
- 3780 LOCATE 23,1
- 3790 BEEP
- 3800 PRINT "THIS GAME IS OVER ---- "
- 3810 BEEP
- 3820 LOCATE 23,23
- 3830 PRINT "IT TOOK YOU "; COUNT; "TURNS "
- 3840 IF FIRST = 2 THEN 3920
- 3850 LOCATE 23,47
- 3860 PRINT " PRESS ANY KEY FOR GAME 2 "
- 3870 A$ = INKEY$
- 3880 IF A$ = "" THEN 3870
- 3890 FIRST = 2
- 3900 CLS
- 3910 GOTO 1450
- 3920 LOCATE 23,47
- 3930 PRINT " "
- 3940 LOCATE 23,1
- 3950 END
- 3960 REM --- ROUTINE TO PRINT OUT CHR$
- 3970 CHAR = TUBE(I,J)
- 3980 GOTO 4000
- 3990 CHAR = TUBE(L,M)
- 4000 ON CHAR GOTO 4010,4030,4050,4070,4090,4110,4130,4150,4170,4190,4210,4230,4250,4270,4290,4310,4330,4350,4370,4390
- 4010 PRINT CHR$(17); CHR$(219); CHR$(219) CHR$(16) '' 1
- 4020 RETURN
- 4030 PRINT CHR$(221); CHR$(220); CHR$(223) CHR$(222) '' 2
- 4040 RETURN
- 4050 PRINT CHR$(204); CHR$(205); CHR$(205) CHR$(185) '' 3
- 4060 RETURN
- 4070 PRINT CHR$(204); CHR$(206); CHR$(206) CHR$(185) '' 4
- 4080 RETURN
- 4090 PRINT CHR$(219); CHR$(16); CHR$(17) CHR$(219) '' 5
- 4100 RETURN
- 4110 PRINT CHR$(17); CHR$(16); CHR$(17) CHR$(16) '' 6
- 4120 RETURN
- 4130 PRINT CHR$(211); CHR$(210); CHR$(210) CHR$(189) '' 7
- 4140 RETURN
- 4150 PRINT CHR$(204); CHR$(188); CHR$(200) CHR$(185) '' 8
- 4160 RETURN
- 4170 PRINT CHR$(26); CHR$(24); CHR$(25) CHR$(27) '' 9
- 4180 RETURN
- 4190 PRINT CHR$(1); CHR$(2); CHR$(2) CHR$(1) '' 10
- 4200 RETURN
- 4210 PRINT CHR$(220); CHR$(223); CHR$(223) CHR$(220) '' 1/2
- 4220 RETURN
- 4230 PRINT CHR$(220); CHR$(223); CHR$(220) CHR$(223) '' 2/2
- 4240 RETURN
- 4250 PRINT CHR$(214); CHR$(215); CHR$(215) CHR$(183) '' 3/2
- 4260 RETURN
- 4270 PRINT CHR$(17); CHR$(205); CHR$(205) CHR$(16) '' 4/2
- 4280 RETURN
- 4290 PRINT CHR$(14); CHR$(14); CHR$(14) CHR$(14) '' 5/2
- 4300 RETURN
- 4310 PRINT CHR$(19); CHR$(19); CHR$(19) CHR$(19) '' 6/2
- 4320 RETURN
- 4330 PRINT CHR$(178); CHR$(176); CHR$(176) CHR$(178) '' 7/2
- 4340 RETURN
- 4350 PRINT CHR$(201); CHR$(203); CHR$(203) CHR$(187)
- 4360 RETURN
- 4370 PRINT CHR$(200); CHR$(239); CHR$(239) CHR$(188)
- 4380 RETURN
- 4390 PRINT CHR$(21); CHR$(15); CHR$(15) CHR$(21)
- 4400 RETURN
- 0 PRINT CHR$(200); CHR$(23