home *** CD-ROM | disk | FTP | other *** search
- 10 REM ********************************
- 20 REM * FUNNY.FACE *
- 30 REM * BY STEPHEN W. SMITH *
- 40 REM * COPYRIGHT 1986 *
- 50 REM * BY MICROSPARC, INC. *
- 60 REM * CONCORD, MA 01742 *
- 70 REM ********************************
- 80 TEXT : HOME
- 90 PRINT CHR$(4);"BLOAD C.SHAPES"
- 100 PRINT CHR$(4);"BLOAD HI.RES.CHAR.SET"
- 110 REM ** SOUND **
- 120 DIM M(24)
- 130 FOR I = 0 TO 23: READ M(I): POKE 770 +I,M(I): NEXT
- 140 DATA 174,0,3,173,48,192,136,208,5,206,1,3,240,9,202,208,245,174,0,3,76,5,3,96
- 150 P = -16368:Q = -16384:N = 1
- 160 REM ** TITLE PAGE **
- 170 HGR : HCOLOR= 3: POKE -16302,0: GOSUB 1030
- 180 POKE 232,0: POKE 233,73: HCOLOR= 3: SCALE= 1: ROT= 0:A$ = "FUNNY FACE":H = 86:V = 60: GOSUB 840
- 190 DRAW 35 AT 134,80: DRAW 58 AT 144,80
- 200 A$ = "STEVE SMITH":H = 80:V = 100: GOSUB 840
- 210 A$ = "COPYRIGHT 1986":H = 70:V = 170: GOSUB 840
- 220 A$ = "MICROSPARC, INC.":H = 60:V = 180: GOSUB 840
- 230 FOR T = 1 TO 4000: NEXT
- 240 REM ** MAIN PROGRAM **
- 250 FOR I = 132 TO 80 STEP -1: POKE 768,I: POKE 769,7: CALL 770: NEXT
- 260 A = 3:B = 9:C = 15:D = 21:E = 27: GOSUB 850
- 270 POKE 232,0: POKE 233,73: HCOLOR= 3: SCALE= 1: ROT= 0:A$ = "LET'S MAKE FUNNY FACES !":H = 12:V = 180: GOSUB 840
- 280 FOR L = 1 TO 500: NEXT
- 290 REM ** 1ST LOOP **
- 300 FOR T = 1 TO 2
- 310 ON T GOSUB 930,940
- 320 POKE 232,0: POKE 233,64: POKE P,0
- 330 HCOLOR= HC: DRAW S AT HA,VP: DRAW S AT HB,VP
- 340 FOR L = 1 TO 300: NEXT
- 350 IF PEEK(Q) = 136 THEN HCOLOR= 0: DRAW S AT HA,VP: DRAW S AT HB,VP:S = S -1: POKE P,0
- 360 IF S <F THEN S = F +5: GOTO 330
- 370 IF PEEK(Q) = 149 THEN HCOLOR= 0: DRAW S AT HA,VP: DRAW S AT HB,VP:S = S +1: POKE P,0
- 380 IF S >F +5 THEN S = F: GOTO 330
- 390 IF PEEK(Q) = 160 THEN POKE P,0: GOTO 440
- 400 IF PEEK(Q) = 155 THEN POKE P,0: GOTO 820
- 410 HCOLOR= 0: DRAW S AT HA,VP: DRAW S AT HB,VP
- 420 FOR L = 1 TO 25: NEXT
- 430 GOTO 330
- 440 DRAW S AT HA,VP: DRAW S AT HB,VP
- 450 ON T GOSUB 980,990
- 460 FOR L = 1 TO 1500: NEXT
- 470 NEXT T
- 480 REM ** 2ND LOOP **
- 490 FOR T = 1 TO 3
- 500 ON T GOSUB 950,960,970
- 510 POKE P,0
- 520 HCOLOR= HC: DRAW S AT HA,VP
- 530 FOR L = 1 TO 500: NEXT
- 540 IF PEEK(Q) = 136 THEN HCOLOR= 0: DRAW S AT HA,VP:S = S -1: POKE P,0
- 550 IF S <F THEN S = F +5: GOTO 520
- 560 IF PEEK(Q) = 149 THEN HCOLOR= 0: DRAW S AT HA,VP:S = S +1: POKE P,0
- 570 IF S >F +5 THEN S = F: GOTO 520
- 580 IF PEEK(Q) = 160 THEN POKE P,0: GOTO 620
- 590 IF PEEK(Q) = 155 THEN POKE P,0: GOTO 820
- 600 HCOLOR= 0: DRAW S AT HA,VP
- 610 GOTO 520
- 620 DRAW S AT HA,VP
- 630 ON T GOSUB 1000,1010,1020
- 640 FOR L = 1 TO 1500: NEXT
- 650 NEXT T
- 660 REM ** DISPLAY **
- 670 POKE 232,0: POKE 233,73: HCOLOR= 0: SCALE= 1: ROT= 0:A$ = "LET'S MAKE FUNNY FACES !":H = 12:V = 180: GOSUB 840
- 680 FOR I = 40 TO 100: POKE 768,I: POKE 769,7: CALL 770: NEXT
- 690 FOR I = 100 TO 40 STEP -1: POKE 768,I: POKE 769,7: CALL 770: NEXT
- 700 POKE P,0
- 710 REM ** OPTIONS **
- 720 FOR L = 1 TO 400
- 730 IF PEEK(Q) = 160 THEN POKE P,0: GOTO 770
- 740 IF PEEK(Q) = 155 THEN POKE P,0: GOTO 820
- 750 IF PEEK(Q) = 144 THEN GOTO 790
- 760 NEXT L
- 770 FOR I = 132 TO 80 STEP -1: POKE 768,I: POKE 769,7: CALL 770: NEXT
- 780 GOTO 270
- 790 ONERR GOTO 1040
- 800 PRINT CHR$(4);"BSAVE FACE.";N;",A$2000,L$2000"
- 810 N = N +1: GOTO 270
- 820 TEXT : HOME : END
- 830 REM ** SUBROUTINES **
- 840 FOR T = 1 TO LEN(A$): DRAW ( ASC( MID$ (A$,T,1)) -31) AT T *10 +H,V: NEXT : RETURN
- 850 POKE 232,0: POKE 233,64: HGR : POKE -16302,0: HCOLOR= 3: SCALE= 1: ROT= 0: GOSUB 1030
- 860 DRAW 2 AT 130,90: DRAW A AT 117,90: DRAW A AT 149,90
- 870 HCOLOR= 5: DRAW B AT 113,60: DRAW B AT 145,60
- 880 HCOLOR= 7: SCALE= 2: ROT= 0: DRAW C AT 115,110
- 890 HCOLOR= 1: DRAW 1 AT 105,100
- 900 SCALE= 3: ROT= 0: DRAW D AT 105,100
- 910 HCOLOR= 5: SCALE= 2: ROT= 0: DRAW E AT 101,142
- 920 RETURN
- 930 HC = 3: SCALE= 1: ROT= 0:S = A:F = 3:HA = 117:HB = 149:VP = 90: RETURN
- 940 HC = 5: SCALE= 1: ROT= 0:S = B:F = 9:HA = 113:HB = 145:VP = 60: RETURN
- 950 HC = 7: SCALE= 2: ROT= 0:S = C:F = 15:HA = 115:VP = 110: RETURN
- 960 HC = 1: SCALE= 3: ROT= 0:S = D:F = 21:HA = 105:VP = 100: RETURN
- 970 HC = 5: SCALE= 2: ROT= 0:S = E:F = 27:HA = 101:VP = 142: RETURN
- 980 A = S: RETURN
- 990 B = S: RETURN
- 1000 C = S: RETURN
- 1010 D = S: RETURN
- 1020 E = S: RETURN
- 1030 HPLOT 0,0 TO 279,0 TO 279,191 TO 0,191 TO 0,0: HPLOT 1,1 TO 278,1 TO 278,190 TO 1,190 TO 1,1: RETURN
- 1040 ER = PEEK(222)
- 1050 IF ER = 9 THEN TEXT : HOME : VTAB 5: HTAB 5: PRINT "NO MORE ROOM ON DISK": GOTO 1100
- 1060 IF ER = 4 THEN TEXT : HOME : VTAB 5: HTAB 5: PRINT "DISK IS WRITE-PROTECTED": GOTO 1100
- 1070 IF ER = 10 THEN TEXT : HOME : VTAB 5: HTAB 5: PRINT "PREVIOUS FILE BY THAT NAME IS LOCKED":N = N +1: GOTO 1100
- 1080 IF ER = 8 THEN TEXT : HOME : VTAB 5: HTAB 5: PRINT "PLEASE CHECK DISK DRIVE": GOTO 1100
- 1090 TEXT : HOME : VTAB 5: HTAB 5: PRINT "UNEXPECTED ERROR": GOTO 1100
- 1100 VTAB 10: HTAB 5: PRINT "PLEASE PRESS THE <SPACE BAR>": PRINT : HTAB 6: PRINT "TO RETURN TO THE PROGRAM"
- 1110 IF PEEK(Q) = 160 THEN POKE -16304,0: POKE -16300,0: POKE -16302,0: GOTO 270
- 1120 GOTO 1110