home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib28b.dsk
/
FUNNY.FACE.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
5KB
|
112 lines
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