home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0020 - 0029 / ibm0020-0029 / ibm0028.tar / ibm0028 / CAKE.ZIP / PCMENU.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  7.7 KB  |  128 lines

  1. 1  DEF SEG=0: IF PEEK(&H1F2)<> 80  OR PEEK(&H1F3)<> 7  THEN NEW
  2. 10  GOTO 10000
  3. 20  IF NOT PCJR THEN DEF SEG=0: POKE &H417,PEEK(&H417) OR &H20: DEF SEG
  4. 30  KB%=-1: RRND=RND: KB$=INKEY$: GOSUB 80: IF KB$="" THEN RETURN ELSE KB%=ASC(KB$)
  5. 40  KB$=INKEY$: IF KB$<>"" THEN GOSUB 80: GOTO 40 ELSE RETURN
  6. 50  KB.SPACE=FRE(" "): GOSUB 40
  7. 60  KB.I%=INT(KB.SEC*18.2)
  8. 70  RRND=RND: DEF SEG=0: KB.II%=PEEK(&H46C): WHILE KB.II%=PEEK(&H46C): WEND: GOSUB 20: IF KB%<>-1 THEN RETURN ELSE KB.I%=KB.I%-1: IF KB.I%>0 THEN 70 ELSE RETURN
  9. 80  IF KB$="" THEN RETURN ELSE IF ASC(KB$)<>19 OR PCJR THEN RETURN
  10. 90  KB$="": SND.MODE=(SND.MODE+1) MOD 2: DEF SEG=0: POKE &H40F,((PEEK(&H40F) AND &HFC) OR ((SND.MODE+1) AND 3)): DEF SEG: RETURN
  11. 100  DRAW "C=C.C%;BM=C.X%;,=C.Y%;BR2R19F2D4L23U4E2": PAINT (C.X%+2,C.Y%+1),C.C%,C.C%: RETURN
  12. 110  CC.Y%=C.Y%-8*(C.N%-1): GET (C.X%,CC.Y%)-STEP(23,C.N%*8-1),CAKE.V%: PUT (C.X%,CC.Y%),CAKE.V%,XOR: PUT (C.X%+C.DX%,CC.Y%+C.DY%),CAKE.V%,XOR: RETURN
  13. 120  DSP.L%=LEN(DSP.CS$): IF DSP.L%<=0 THEN RETURN ELSE FOR DSP.CI%=1 TO DSP.L%: DSP.C$=MID$(DSP.CS$,DSP.CI%,1): GOSUB 130: DSP.X%=DSP.X%+16: NEXT DSP.CI%: RETURN
  14. 130  LINE (DSP.X%,DSP.Y%)-STEP(15,15),0,BF: DSP.I%=INSTR(DSP.FCS$,DSP.C$): IF DSP.I%<=0 THEN LOCATE (DSP.Y%+7)\8+1,(DSP.X%+7)\8+1: PRINT DSP.C$;: RETURN
  15. 140  DSP.T%=(DSP.C%-1)*9+(DSP.I%-1)*27: DSP.VI#(0)=DSP.V#(DSP.T%+0): DSP.VI#(1)=DSP.V#(DSP.T%+1): DSP.VI#(2)=DSP.V#(DSP.T%+2): DSP.VI#(3)=DSP.V#(DSP.T%+3)
  16. 150  DSP.VI#(4)=DSP.V#(DSP.T%+4): DSP.VI#(5)=DSP.V#(DSP.T%+5): DSP.VI#(6)=DSP.V#(DSP.T%+6): DSP.VI#(7)=DSP.V#(DSP.T%+7): DSP.VI#(8)=DSP.V#(DSP.T%+8): PUT (DSP.X%,DSP.Y%),DSP.VI#: RETURN
  17. 10000  DEF SEG=&HF000: PCJR=PEEK(&HFFFE)=&HFD: SND.MODE=1: DEF SEG=0: I=PEEK(&H40F) AND 3: IF I>0 THEN SND.MODE=I-1: IF SND.MODE=2 THEN SOUND ON ELSE IF PCJR THEN SOUND OFF
  18. 10010  COMMON GAME%: ON ERROR GOTO 62000: GOSUB 10930: GOSUB 10940: GOSUB 10950: KEY OFF: CLS: SCREEN 1,0: COLOR 0,1
  19. 10020  BURNER$="BL6BD3E1R1E1R1E1R1 E1R1E1R1E1R1 BL6BD3 H3F6H3"
  20. 10030  FOR GAME% = 1 TO 5: GOSUB 40: ON GAME% GOSUB 10310 ,10370 ,10400 ,10690 ,10630: NEXT GAME%: GOTO 10030
  21. 10040  CLS: KB.SEC=0.1: GOSUB 60
  22. 10050  SCREEN 0,1,0,0: LOCATE ,,0: KB.SEC=0.5: GOSUB 60: WIDTH 40: COLOR 14,0: CLS: LOCATE  1,11,0:  PRINT ">> Piece of Cake <<";
  23. 10060  COLOR 6: LOCATE  5,12:  PRINT "1)   The Bakery";
  24. 10070  COLOR 2: LOCATE 9,12:  PRINT "2)   Multicake";
  25. 10080  COLOR 3: LOCATE 13,12:  PRINT "3)   Dividacake";
  26. 10090  COLOR 4: LOCATE 17,12:  PRINT "4)   Flash Cards";
  27. 10100  COLOR 5: LOCATE 21,12:  PRINT "5)   Catchacake";
  28. 10110  COLOR 14: LOCATE 25,6: PRINT "Which game do you want (1-5) ?";
  29. 10120  KB.SEC=600: GOSUB 50
  30. 10130  IF KB%>48 AND KB%<54 THEN GAME%=KB%-48: RETURN ELSE RUN
  31. 10140  GOSUB 60: IF KB%=-1 THEN RETURN
  32. 10150  IF KB%=23 THEN GOSUB 10040: IF KB%=-1 THEN RETURN
  33. 10160  CLS: SCREEN 1,0: KB.SEC=0.3: GOSUB 60: IF GAME%<>1 THEN 10190
  34. 10170  CLS: COLOR 0,1: IF PCJR THEN PALETTE 2,RND*6+9
  35. 10180  DSP.CS$="The Bakery": DSP.X%=80: DSP.Y%=96: DSP.C%=2: GOSUB 120: RUN "PCBKRY.BAS"
  36. 10190  IF GAME%<>2 THEN 10220
  37. 10200  CLS: COLOR 0,1: IF PCJR THEN PALETTE 2,RND*6+9
  38. 10210  DSP.CS$="Multicake": DSP.C%=1: DSP.X%=88: DSP.Y%=96: DSP.C%=2: GOSUB 120: RUN "PCMULT.BAS
  39. 10220  IF GAME%<>3 THEN 10250
  40. 10230  CLS: COLOR 0,0: IF PCJR THEN PALETTE 2,RND*6+9
  41. 10240  DSP.CS$="Dividacake": DSP.C%=2: DSP.X%=80: DSP.Y%=96: GOSUB 120: DEF SEG=0: POKE &H417,&HF0: DEF SEG: RUN "PCMULT.BAS
  42. 10250  IF GAME%<>4 THEN 10280
  43. 10260  CLS: COLOR 0,0: IF PCJR THEN PALETTE 3,RND*6+9
  44. 10270  DSP.X%=80: DSP.Y%=96: DSP.C%=3: DSP.CS$="Flash Cards": GOSUB 120: RUN "PCFLASH.BAS
  45. 10280  IF GAME%<>5 THEN RUN
  46. 10290  CLS: COLOR 0,1: IF PCJR THEN PALETTE 1,RND*6+9
  47. 10300  DSP.CS$="Catchacake": DSP.X%=80: DSP.Y%=96: DSP.C%=1: GOSUB 120: RUN "PCCTCH.BAS
  48. 10310  CLS: COLOR 0,1: IF PCJR THEN PALETTE 1,12: PALETTE 2,9: PALETTE 3,15
  49. 10320  DSP.CS$="The Bakery": DSP.X%=80: DSP.Y%=0: DSP.C%=2: GOSUB 120: KB.SEC=0.1: GOSUB 10140
  50. 10330  DRAW "C3BM85,185U80R100D80L100E1U78R98D78L98BE9U60R80D60L80BD10BR90": DRAW "E30U80G30R1D78E28U78G28L1": DRAW "BE30L100G30R1E1R98E28L98G28L1BE29"
  51. 10340  DRAW "U20R100D20H1L98U18R98D18BL49BU10": DRAW "U3D3E4G4BG6U12R12D12L12L1U12R14D12BU3BR8R12U1L12BR20R12D1L12BU4R12U1L12BL8L12D1R12BD20BL10": DRAW BURNER$+"BG10"+BURNER$
  52. 10350  DSP.SEC=0.1: GOSUB 10140
  53. 10360  C.X%=100: C.Y%=88: C.C%=2: FOR I=1 TO 5: GOSUB 100: C.Y%=C.Y%-8: DSP.SEC=0.1: GOSUB 10140: NEXT I: KB.SEC=1.5: GOSUB 10140: RETURN
  54. 10370  CLS: COLOR 0,0: IF PCJR THEN PALETTE 1,14: PALETTE 2,13: PALETTE 3,11
  55. 10380  DSP.CS$="Multicake": DSP.C%=1: DSP.X%=88: DSP.Y%=0: DSP.C%=2: GOSUB 120: KB.SEC=0.1: GOSUB 10140: OP%=3: OP$="x"
  56. 10390  A$="How many pieces in all ?": GOSUB 10430: RETURN
  57. 10400  CLS: COLOR 0,0: IF PCJR THEN PALETTE 1,12: PALETTE 2,10: PALETTE 3,14
  58. 10410  DSP.CS$="Dividacake": DSP.C%=2: DSP.X%=80: DSP.Y%=0: GOSUB 120: KB.SEC=0.1: GOSUB 10140
  59. 10420  OP%=4: OP$="/": A$="How many does each customer get?": GOSUB 10430: RETURN
  60. 10430  GOSUB 10520: C.X%=144: CL.X%=144: CL.Y%=96-((LOP%+1)\2)*16: GOSUB 10540: KB.SEC=0.1: GOSUB 10140
  61. 10440  GOSUB 10450: LOCATE 25,21-LEN(A$)/2: PRINT A$;: KB.SEC=1.5: GOSUB 10140: RETURN
  62. 10450  IF OP%=4 THEN 10500
  63. 10460  DSP.X%=32: DSP.Y%=16: DSP.C%=1: DSP.CS$=RIGHT$(SPACE$(2)+STR$(LOP%),2): GOSUB 120
  64. 10470  DSP.X%=16: DSP.Y%=32: DSP.CS$=RIGHT$(OP$+RIGHT$(SPACE$(2)+STR$(ROP%),2),3): GOSUB 120: LINE (32,55)-STEP(31,2),1,BF
  65. 10480  DSP.QX%=32: DSP.QY%=64: DSP.X%=32: DSP.Y%=64: DSP.CS$=" ?"
  66. 10490  GOSUB 120: RETURN
  67. 10500  DSP.CS$=RIGHT$("   "+STR$(LOP%)+ RIGHT$("  "+STR$(PROD%),4),6): DSP.X%=16: DSP.Y%=128: DSP.QX%=80: DSP.QY%=96: DSP.C%=1: GOSUB 120
  68. 10510  LINE (63,119)-STEP(48,2),1,BF: LINE (63,119)-STEP(2,24),1,BF: DSP.X%=80: DSP.Y%=96: DSP.CS$=" ?": GOSUB 120: RETURN
  69. 10520  LOP%=FNRN%(2,7): ROP%=FNRN%(2,10): PROD%=LOP%*ROP%: IF PROD%>=100 THEN 10520
  70. 10530  RETURN
  71. 10540  C.L%=CL.Y%\8+1: C.XP%=CL.X%\8-2
  72. 10550  FOR C.I%=1 TO LOP%: C.YT%=CL.Y%+C.I%*16-16: LOCATE C.L%+C.I%*2-2,C.XP%: PRINT RIGHT$("  "+STR$(C.I%),2);
  73. 10560  LINE (CL.X%-2,C.YT%-2)-STEP(ROP%*16-1,11),2,BF: NEXT C.I%
  74. 10570  KB.SEC=0.1: GOSUB 10140
  75. 10580  LOCATE C.L%-2,CL.X%\8: FOR C.I%=1 TO ROP%: IF OP%=3 THEN PRINT STR$(C.I%); ELSE PRINT " ?";
  76. 10590  NEXT C.I%: KB.SEC=0.1: GOSUB 10140
  77. 10600  FOR C.I%=1 TO LOP%: C.YT%=CL.Y%+C.I%*16-16: FOR C.II%=1 TO ROP%: LINE (CL.X%+C.II%*16-6,C.YT%-2)-STEP(3,11),0,BF
  78. 10610  NEXT C.II%
  79. 10620  NEXT C.I%: RETURN
  80. 10630  CLS: COLOR 0,1: IF PCJR THEN PALETTE 1,12: PALETTE 2,9: PALETTE 3,10
  81. 10640  DSP.CS$="Catchacake": DSP.X%=80: DSP.Y%=0: DSP.C%=1: GOSUB 120: LOCATE 5,31: PRINT "Player";: LOCATE 7,33: PRINT RIGHT$(STR$(FNRN%(1,4)),2);
  82. 10650  LOCATE 15,31: PRINT "Score";: LOCATE 17,32: PRINT RIGHT$("  "+STR$(FNRN%(0,900)),3)
  83. 10660  LINE (16,181)-(303,182),3,BF
  84. 10670  OP%=FNRN%(1,4): OP$=MID$("+-x/",OP%,1)
  85. 10680  GOSUB 10820: C.X%=64: C.Y%=20: C.C%=1: GOSUB 100: C.DX%=0: C.DY%=4: C.N%=1: FOR I=1 TO 20: GOSUB 110: KB.SEC=0.02: GOSUB 10140: C.Y%=C.Y%+C.DY%: NEXT I: RETURN
  86. 10690  CLS: COLOR 0,0: IF PCJR THEN PALETTE 1,6: PALETTE 2,13: PALETTE 3,14
  87. 10700  DSP.X%=80: DSP.Y%=0: DSP.C%=2: DSP.CS$="Flash Cards": GOSUB 120: KB.SEC=0.1: GOSUB 10140
  88. 10710  X% = 18: Y = 8
  89. 10720  DSP.CS$="A": COL2=X%-4: RROW=Y: GOSUB 10810
  90. 10730  DSP.CS$="Add": COL2=X%: RROW=Y: GOSUB 10810
  91. 10740  DSP.CS$="S": Y=Y+4: COL2=X%-4: RROW=Y: GOSUB 10810
  92. 10750  DSP.CS$="Subtract": COL2=X%: RROW=Y: GOSUB 10810
  93. 10760  DSP.CS$="M": Y=Y+4: COL2=X%-4: RROW=Y: GOSUB 10810
  94. 10770  DSP.CS$="Multiply": COL2=X%: RROW=Y: GOSUB 10810
  95. 10780  DSP.CS$="D": Y=Y+4: COL2=X%-4: RROW=Y: GOSUB 10810
  96. 10790  DSP.CS$="Divide": COL2=X%: RROW=Y: GOSUB 10810
  97. 10800  RETURN
  98. 10810  FOR J= 1 TO LEN(DSP.CS$): LOCATE RROW,COL2,0: PRINT MID$(DSP.CS$,J,1);: COL2=COL2+1: NEXT J: KB.SEC=0.4: GOSUB 10140: RETURN
  99. 10820  GOSUB 10870: IF OP%=4 THEN 10850
  100. 10830  DSP.X%=152: DSP.Y%=68: DSP.C%=1: DSP.CS$=RIGHT$(SPACE$(2)+STR$(LOP%),2): GOSUB 120
  101. 10840  DSP.X%=136: DSP.Y%=92: DSP.CS$=OP$+RIGHT$(SPACE$(2)+STR$(ROP%),2): GOSUB 120: LINE (152,111)-STEP(31,2),1,BF: DSP.QX%=168+16*(ANS%>9): DSP.QY%=116: RETURN
  102. 10850  DSP.CS$=STR$(LOP%)+" "+STR$(ROP%): DSP.X%=160-8*LEN(DSP.CS$): DVL.X%=DSP.X%+LEN(STR$(LOP%))*16+15: DSP.QX%=DSP.X%+4*16: DSP.QY%=64: DSP.Y%=92: DSP.C%=1: GOSUB 120
  103. 10860  LINE (DVL.X%,81)-STEP(LEN(STR$(ROP%))*16-1,2),1,BF: LINE (DVL.X%,81)-STEP(2,24),1,BF: RETURN
  104. 10870  OP%=FNRN%(1,4): OP$=MID$("+-x/",OP%,1)
  105. 10880  IF OP%<>1 THEN 10890 ELSE LOP%=FNRN%(1,10): ROP%=FNRN%(1,10): ANS%=LOP%+ROP%: GOTO 10920
  106. 10890  IF OP%<>2 THEN 10900 ELSE LOP%=FNRN%(1,20): ROP%=FNRN%(0,LOP%): ANS%=LOP%-ROP%: GOTO 10920
  107. 10900  IF OP%<>3 THEN 10910 ELSE LOP%=FNRN%(0,9): ROP%=FNRN%(0,9): ANS%=LOP%*ROP%: IF ANS%<100 THEN 10920 ELSE 10900
  108. 10910  LOP%=FNRN%(1,9): ANS%=FNRN%(1,9): ROP%=LOP%*ANS%: IF ROP%<100 THEN 10920 ELSE 10910
  109. 10920  RETURN
  110. 10930  DEF FNC%(I%)=I%: DEF FNP(I)=I+(20 AND W80F%): DEF FNRN%(F%,L%)=INT(RND*(L%-F%+1) MOD (L%-F%+1))+F%: RANDOMIZE VAL(RIGHT$(TIME$,2)): RETURN
  111. 10940  RETURN
  112. 10950  DIM CAKE.V%(1000): DSP.T%=0: DSP.X%=0: DSP.Y%=0: DSP.C%=0: DSP.I%=0: DSP.C$=""
  113. 10960  OPEN "FONTCS.DS" FOR INPUT AS #1: LINE INPUT#1,DSP.FCS$: CLOSE 1: DSP.NFCS%=LEN(DSP.FCS$)
  114. 10970  DIM DSP.V#(DSP.NFCS%*27),DSP.VI#(9): DSP.I=0: DSP.V#(0)=0: DEF SEG: DSP.I=VARPTR(DSP.V#(0)): BLOAD "DBLFONT.BSV",DSP.I: RETURN
  115. 10980  CLS: LOCATE 1,1,0: KB.SEC=0.1: GOSUB 60: SCREEN 1,0: COLOR 0,FNRN%(0,1): DSP.C%=FNRN%(1,3): DSP.X%=48: DSP.Y%=96: DSP.CS$="Piece of Cake": GOSUB 120: RUN "PCMENU.BAS
  116. 62000  SCREEN 0,1,0,0: LOCATE ,,0: COLOR 7: CLS: X$="": IF ERR=53 THEN X$="DISK WITH PROGRAMS NEEDED"
  117. 62010  IF ERR=72 OR ERR=71 THEN X$="DISK ERROR OR NOT READY"
  118. 62020  IF ERR=5 THEN X$="LIST AND SAVE COMMANDS ARE ILLEGAL"
  119. 62030  IF X$="" THEN 62080
  120. 62040  GOSUB 62090
  121. 62050  RESUME 62060
  122. 62060  ON ERROR GOTO 62000
  123. 62070  KB.SEC=20: GOSUB 50: CLS: IF KB%=27 THEN RUN "PCMENU.BAS" ELSE  RUN
  124. 62080  SCREEN 0,1,0,0: LOCATE ,,0: COLOR 7,0: CLS: RUN
  125. 62090  GOSUB 10930: IF X$="" THEN X$="  "
  126. 62100  XL%=LEN(X$): IF XL%>36 THEN XL%=36
  127. 62110  LOCATE 25,2,0: PRINT SPACE$((38-XL%)\2)+LEFT$(X$,XL%) +SPACE$(38-XL%-(38-XL%)\2);: RETURN
  128.