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

  1. 10  REM  ********************************
  2. 20  REM  *        FUNNY.FACE            *
  3. 30  REM  *    BY STEPHEN W. SMITH       *
  4. 40  REM  *      COPYRIGHT 1986          *
  5. 50  REM  *    BY MICROSPARC, INC.       *
  6. 60  REM  *    CONCORD, MA  01742        *
  7. 70  REM  ********************************
  8. 80  TEXT : HOME 
  9. 90  PRINT  CHR$(4);"BLOAD C.SHAPES"
  10. 100  PRINT  CHR$(4);"BLOAD HI.RES.CHAR.SET"
  11. 110  REM  ** SOUND **
  12. 120  DIM M(24)
  13. 130  FOR I = 0 TO 23: READ M(I): POKE 770 +I,M(I): NEXT 
  14. 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
  15. 150 P =  -16368:Q =  -16384:N = 1
  16. 160  REM  ** TITLE PAGE **
  17. 170  HGR : HCOLOR= 3: POKE  -16302,0: GOSUB 1030
  18. 180  POKE 232,0: POKE 233,73: HCOLOR= 3: SCALE= 1: ROT= 0:A$ = "FUNNY FACE":H = 86:V = 60: GOSUB 840
  19. 190  DRAW 35 AT 134,80: DRAW 58 AT 144,80
  20. 200 A$ = "STEVE SMITH":H = 80:V = 100: GOSUB 840
  21. 210 A$ = "COPYRIGHT 1986":H = 70:V = 170: GOSUB 840
  22. 220 A$ = "MICROSPARC, INC.":H = 60:V = 180: GOSUB 840
  23. 230  FOR T = 1 TO 4000: NEXT 
  24. 240  REM  ** MAIN PROGRAM **
  25. 250  FOR I = 132 TO 80  STEP  -1: POKE 768,I: POKE 769,7: CALL 770: NEXT 
  26. 260 A = 3:B = 9:C = 15:D = 21:E = 27: GOSUB 850
  27. 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
  28. 280  FOR L = 1 TO 500: NEXT 
  29. 290  REM  ** 1ST LOOP **
  30. 300  FOR T = 1 TO 2
  31. 310  ON T GOSUB 930,940
  32. 320  POKE 232,0: POKE 233,64: POKE P,0
  33. 330  HCOLOR= HC: DRAW S AT HA,VP: DRAW S AT HB,VP
  34. 340  FOR L = 1 TO 300: NEXT 
  35. 350  IF  PEEK(Q) = 136  THEN  HCOLOR= 0: DRAW S AT HA,VP: DRAW S AT HB,VP:S = S -1: POKE P,0
  36. 360  IF S <F  THEN S = F +5: GOTO 330
  37. 370  IF  PEEK(Q) = 149  THEN  HCOLOR= 0: DRAW S AT HA,VP: DRAW S AT HB,VP:S = S +1: POKE P,0
  38. 380  IF S >F +5  THEN S = F: GOTO 330
  39. 390  IF  PEEK(Q) = 160  THEN  POKE P,0: GOTO 440
  40. 400  IF  PEEK(Q) = 155  THEN  POKE P,0: GOTO 820
  41. 410  HCOLOR= 0: DRAW S AT HA,VP: DRAW S AT HB,VP
  42. 420  FOR L = 1 TO 25: NEXT 
  43. 430  GOTO 330
  44. 440  DRAW S AT HA,VP: DRAW S AT HB,VP
  45. 450  ON T GOSUB 980,990
  46. 460  FOR L = 1 TO 1500: NEXT 
  47. 470  NEXT T
  48. 480  REM  ** 2ND LOOP **
  49. 490  FOR T = 1 TO 3
  50. 500  ON T GOSUB 950,960,970
  51. 510  POKE P,0
  52. 520  HCOLOR= HC: DRAW S AT HA,VP
  53. 530  FOR L = 1 TO 500: NEXT 
  54. 540  IF  PEEK(Q) = 136  THEN  HCOLOR= 0: DRAW S AT HA,VP:S = S -1: POKE P,0
  55. 550  IF S <F  THEN S = F +5: GOTO 520
  56. 560  IF  PEEK(Q) = 149  THEN  HCOLOR= 0: DRAW S AT HA,VP:S = S +1: POKE P,0
  57. 570  IF S >F +5  THEN S = F: GOTO 520
  58. 580  IF  PEEK(Q) = 160  THEN  POKE P,0: GOTO 620
  59. 590  IF  PEEK(Q) = 155  THEN  POKE P,0: GOTO 820
  60. 600  HCOLOR= 0: DRAW S AT HA,VP
  61. 610  GOTO 520
  62. 620  DRAW S AT HA,VP
  63. 630  ON T GOSUB 1000,1010,1020
  64. 640  FOR L = 1 TO 1500: NEXT 
  65. 650  NEXT T
  66. 660  REM  ** DISPLAY **
  67. 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
  68. 680  FOR I = 40 TO 100: POKE 768,I: POKE 769,7: CALL 770: NEXT 
  69. 690  FOR I = 100 TO 40  STEP  -1: POKE 768,I: POKE 769,7: CALL 770: NEXT 
  70. 700  POKE P,0
  71. 710  REM  ** OPTIONS **
  72. 720  FOR L = 1 TO 400
  73. 730  IF  PEEK(Q) = 160  THEN  POKE P,0: GOTO 770
  74. 740  IF  PEEK(Q) = 155  THEN  POKE P,0: GOTO 820
  75. 750  IF  PEEK(Q) = 144  THEN  GOTO 790
  76. 760  NEXT L
  77. 770  FOR I = 132 TO 80  STEP  -1: POKE 768,I: POKE 769,7: CALL 770: NEXT 
  78. 780  GOTO 270
  79. 790  ONERR  GOTO 1040
  80. 800  PRINT  CHR$(4);"BSAVE FACE.";N;",A$2000,L$2000"
  81. 810 N = N +1: GOTO 270
  82. 820  TEXT : HOME : END 
  83. 830  REM  ** SUBROUTINES **
  84. 840  FOR T = 1 TO  LEN(A$): DRAW ( ASC( MID$ (A$,T,1)) -31) AT T *10 +H,V: NEXT : RETURN 
  85. 850  POKE 232,0: POKE 233,64: HGR : POKE  -16302,0: HCOLOR= 3: SCALE= 1: ROT= 0: GOSUB 1030
  86. 860  DRAW 2 AT 130,90: DRAW A AT 117,90: DRAW A AT 149,90
  87. 870  HCOLOR= 5: DRAW B AT 113,60: DRAW B AT 145,60
  88. 880  HCOLOR= 7: SCALE= 2: ROT= 0: DRAW C AT 115,110
  89. 890  HCOLOR= 1: DRAW 1 AT 105,100
  90. 900  SCALE= 3: ROT= 0: DRAW D AT 105,100
  91. 910  HCOLOR= 5: SCALE= 2: ROT= 0: DRAW E AT 101,142
  92. 920  RETURN 
  93. 930 HC = 3: SCALE= 1: ROT= 0:S = A:F = 3:HA = 117:HB = 149:VP = 90: RETURN 
  94. 940 HC = 5: SCALE= 1: ROT= 0:S = B:F = 9:HA = 113:HB = 145:VP = 60: RETURN 
  95. 950 HC = 7: SCALE= 2: ROT= 0:S = C:F = 15:HA = 115:VP = 110: RETURN 
  96. 960 HC = 1: SCALE= 3: ROT= 0:S = D:F = 21:HA = 105:VP = 100: RETURN 
  97. 970 HC = 5: SCALE= 2: ROT= 0:S = E:F = 27:HA = 101:VP = 142: RETURN 
  98. 980 A = S: RETURN 
  99. 990 B = S: RETURN 
  100. 1000 C = S: RETURN 
  101. 1010 D = S: RETURN 
  102. 1020 E = S: RETURN 
  103. 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 
  104. 1040 ER =  PEEK(222)
  105. 1050  IF ER = 9  THEN  TEXT : HOME : VTAB 5: HTAB 5: PRINT "NO MORE ROOM ON DISK": GOTO 1100
  106. 1060  IF ER = 4  THEN  TEXT : HOME : VTAB 5: HTAB 5: PRINT "DISK IS WRITE-PROTECTED": GOTO 1100
  107. 1070  IF ER = 10  THEN  TEXT : HOME : VTAB 5: HTAB 5: PRINT "PREVIOUS FILE BY THAT NAME IS LOCKED":N = N +1: GOTO 1100
  108. 1080  IF ER = 8  THEN  TEXT : HOME : VTAB 5: HTAB 5: PRINT "PLEASE CHECK DISK DRIVE": GOTO 1100
  109. 1090  TEXT : HOME : VTAB 5: HTAB 5: PRINT "UNEXPECTED ERROR": GOTO 1100
  110. 1100  VTAB 10: HTAB 5: PRINT "PLEASE PRESS THE <SPACE BAR>": PRINT : HTAB 6: PRINT "TO RETURN TO THE PROGRAM"
  111. 1110  IF  PEEK(Q) = 160  THEN  POKE  -16304,0: POKE  -16300,0: POKE  -16302,0: GOTO 270
  112. 1120  GOTO 1110