home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0020 - 0029 / ibm0020-0029 / ibm0028.tar / ibm0028 / CAKE.ZIP / PCFLASH.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  12.2 KB  |  180 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. 8000  IF SND.MODE=0 THEN RETURN
  18. 8010  FOR I=1 TO 2: FOR J=0 TO 6: SOUND 2000-J*100,0.2: SOUND 32767,0.4: NEXT J: SOUND 1200,0.2: SOUND 32767,0.4: FOR J=0 TO 6: SOUND 1200+J*100,0.2: SOUND 32767,0.4: NEXT J: SOUND 2000,0.2: SOUND 32767,0.4: NEXT I: KB.SEC=1: GOSUB 60: RETURN
  19. 8020  IF SND.MODE=0 THEN RETURN ELSE SOUND 200,12: RETURN
  20. 8030  IF SND.MODE=0 THEN RETURN ELSE FOR SND.I%=1 TO 3: SOUND 600+RND*600,0.5: SOUND 32767,0.5: NEXT SND.I%: SOUND 1200+RND*600,0.5: RETURN
  21. 8040  IF SND.MODE=0 THEN RETURN ELSE SOUND 300,1: RETURN
  22. 8050  IF SND.MODE=0 THEN RETURN ELSE FOR SND.I%=1 TO 4: SOUND 600+SND.I%*100,0.5: SOUND 32767,0.5: NEXT SND.I%: RETURN
  23. 8060  IF SND.MODE=0 THEN RETURN ELSE SOUND 3000,0.5: SOUND 32767,3: RETURN
  24. 8070  IF SND.MODE=0 THEN RETURN ELSE SOUND 400+RND*600,0.5: SOUND 32767,0.05: RETURN
  25. 8080  IF SND.MODE=0 THEN RETURN ELSE SOUND 3000-40*(DSP.Y%-65),0.2: SOUND 32767,0.2: RETURN
  26. 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
  27. 10010  ON ERROR GOTO 62000: GOSUB 10540: NEG=0: GOSUB 62120: SP$="": DIM PLUS(30): DIM DVD(100): DIM P.V(16): SCREEN 1,0: KEY OFF: CLS: GOSUB 11360
  28. 10020  GOSUB 10290
  29. 10030  GOSUB 20: IF KB%=-1 THEN 10030 ELSE IF KB%>96 THEN KB%=KB%-32
  30. 10040  KB$=CHR$(KB%): IF KB$<>"A" AND KB$<>"S" AND KB$<>"M" AND KB$<>"D" THEN 10030
  31. 10050  KB$="": OP%=-(KB%=65)-2*(KB%=83)-3*(KB%=77)-4*(KB%=68): DIV=(OP%=4): CLS: GOSUB 10410
  32. 10060  GOSUB 20: IF KB%=-1 THEN 10060 ELSE GOSUB 11230: IF KB%=-1 THEN 10060 ELSE DIF=KB%-48: IF DIF<1 OR DIF>5 THEN 10060
  33. 10070  MIN=-10*((DIF>2)+(DIF>4)): MAX=10-10*((DIF>1)+(DIF>2))-20*(DIF>3)-49*(DIF>4): IF OP%=2 THEN NEG=(DIF>3)
  34. 10080  IF DIV THEN GOSUB 10280 ELSE GOSUB 10230
  35. 10090  WRONG=0
  36. 10100  FOR PROB= 0 TO 9: CLS: SCREEN 1,0: GOSUB 10610: GOSUB 10620: NPCS$="": CLS: IF NOT PCJR THEN COLOR 0,CL%
  37. 10110  GOSUB 10660
  38. 10120  NEXT PROB
  39. 10130  CLS: LOCATE ,,0: SCREEN 0,1: LOCATE 1,1,0: KB.SEC=0.3: GOSUB 60: IF PROB>0 THEN PROB$= STR$(INT(100*((PROB-WRONG)/PROB)+0.5)) ELSE PROB$= "0"
  40. 10140  COLOR 11: RROW=4: DSP.CS$="You got"+STR$(PROB-WRONG)+ " of"+ STR$(PROB): COL2=21-LEN(DSP.CS$)/2: GOSUB 10600
  41. 10150  PROBB$=PROB$: IF LEFT$(PROBB$,1)=" " THEN PROBB$=MID$(PROBB$,2,LEN(PROBB$)-1)
  42. 10160  COLOR 11: RROW=6: DSP.CS$="or "+PROBB$+"% right.": COL2=21-LEN(DSP.CS$)/2: GOSUB 10600
  43. 10170  COL2=15: RROW=14: COLOR 14: DSP.CS$="DO YOU WANT": GOSUB 10600
  44. 10180  COL2=14: RROW=16: COLOR 14: DSP.CS$="MORE PRACTICE": GOSUB 8030: GOSUB 10600
  45. 10190  COL2=15: RROW=18: COLOR 14: DSP.CS$="( Y OR N ) ?": GOSUB 10590
  46. 10200  GOSUB 20: IF KB%=-1 THEN 10200
  47. 10210  KB$=CHR$(KB%): IF KB$<>"Y" AND KB$<>"y" AND KB$<>"n" AND KB$<>"N" THEN GOTO 10200
  48. 10220  IF KB$="Y" OR KB$="y" THEN CLS: GOTO 10020 ELSE 11390
  49. 10230  CLS: SCREEN 1,0: GOSUB 10610: GOSUB 10620: X%=0: Y%=0
  50. 10240  IF OP%=1 THEN OP$="+" ELSE IF OP%=2 THEN OP$="-" ELSE IF OP%=3 THEN OP$="x"
  51. 10250  DSP.C$=OP$: DSP.X%=X%: DSP.Y%=Y%: DSP.C%=CL%: GOSUB 130: DSP.X%=X%+16: DSP.Y%=Y%+16: DSP.C%=CL%: GOSUB 130
  52. 10260  GET(X%,Y%)-(X%+31,Y%+31),DVD: X%=X%+32
  53. 10270  FOR I = 2 TO 10: PUT(X%,Y%),DVD: X%=X%+32: NEXT I: FOR J=2 TO 6: Y%=Y%+32: X%=0: FOR I=1 TO 10: PUT (X%,Y%),DVD: X%=X%+32: NEXT I: NEXT J: KB.SEC=2: GOSUB 60: RETURN
  54. 10280  CLS: SCREEN 1,0: GOSUB 10610: GOSUB 10620: X%=0: Y%=0: LINE(8,8)-STEP(3,15),CL%,BF: LINE(8,8)-STEP(19,3),CL%,BF: GOTO 10260
  55. 10290  WIDTH 40: SCREEN 0,1: LOCATE ,,0: KB.SEC=0.3: GOSUB 60: DIV=0: DSP.CS$="CHOOSE THE TYPE OF": COL2=11: RROW=2: COLOR 2: GOSUB 10600
  56. 10300  DSP.CS$="PROBLEMS YOU WANT:": COL2=11: RROW=4: COLOR 2: GOSUB 10600
  57. 10310  X% = 18: Y = 8
  58. 10320  DSP.CS$="A": COL2=X%-4: RROW=Y: COLOR 4: GOSUB 10600
  59. 10330  DSP.CS$="Add": COL2=X%: RROW=Y: COLOR 14: GOSUB 10590
  60. 10340  DSP.CS$="S": Y=Y+4: COL2=X%-4: RROW=Y: COLOR 4: GOSUB 10600
  61. 10350  DSP.CS$="Subtract": COL2=X%: RROW=Y: COLOR 14: GOSUB 10590
  62. 10360  DSP.CS$="M": Y=Y+4: COL2=X%-4: RROW=Y: COLOR 4: GOSUB 10600
  63. 10370  DSP.CS$="Multiply": COL2=X%: RROW=Y: COLOR 14: GOSUB 10590
  64. 10380  DSP.CS$="D": Y=Y+4: COL2=X%-4: RROW=Y: COLOR 4: GOSUB 10600
  65. 10390  DSP.CS$="Divide": COL2=X%: RROW=Y: COLOR 14: GOSUB 10590
  66. 10400  RETURN
  67. 10410  SCREEN 0,1: DIF=1: DSP.CS$="WHAT PROBLEM LEVEL": COL2=11: RROW=1: COLOR 10: GOSUB 10600
  68. 10420  DSP.CS$="WOULD YOU LIKE ?": COL2=12: RROW=3: COLOR 10: GOSUB 10600
  69. 10430  DSP.CS$="1": X%=17: Y=7: COL2=X%-4: RROW=Y: COLOR 3: GOSUB 10600
  70. 10440  DSP.CS$="Beginner": COL2=X%: RROW=Y: COLOR 4: GOSUB 10590
  71. 10450  DSP.CS$="2": Y=Y+4: COL2=X%-4: RROW=Y: COLOR 3: GOSUB 10600
  72. 10460  DSP.CS$="Learner": COL2=X%: RROW=Y: COLOR 4: GOSUB 10590
  73. 10470  DSP.CS$="3": Y=Y+4: COL2=X%-4: RROW=Y: COLOR 3: GOSUB 10600
  74. 10480  DSP.CS$="Junior Whiz": COL2=X%: RROW=Y: COLOR 4: GOSUB 10590
  75. 10490  DSP.CS$="4": Y=Y+4: COL2=X%-4: RROW=Y: COLOR 3: GOSUB 10600
  76. 10500  DSP.CS$="Champion": COL2=X%: RROW=Y: COLOR 4: GOSUB 10590
  77. 10510  DSP.CS$="5": Y=Y+4: COL2=X%-4: RROW=Y: COLOR 3: GOSUB 10600
  78. 10520  DSP.CS$="Supermath": COL2=X%: RROW=Y: COLOR 4: GOSUB 10590
  79. 10530  RETURN
  80. 10540  FOR C= 0 TO 10: READ T$(C),T2$(C)
  81. 10550  NEXT C
  82. 10560  DATA "GOOD","JOB!" ,"KEEP","IT UP!" ,"RIGHT"," ON!" ,"THAT'S","RIGHT!" ,"YOU'RE","TOPS!" ,"THAT'S THE","NUMBER!" ,"WOW! WOW!"," WOW! WOW!" ,"YOU","DID IT!"
  83. 10570  DATA "HOW 'BOUT","THAT!" ,"YOU'RE","THE MOST !" ,"A REAL","COMPUTER!"
  84. 10580  RETURN
  85. 10590  GOSUB 8030
  86. 10600  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.2: GOSUB 60: RETURN
  87. 10610  COLOR 0,INT(RND*(2)) MOD 2: IF PCJR THEN GOSUB 10630: PALETTE 1,INT(P.V(0)): PALETTE 2,INT(P.V(1)): PALETTE 3,INT(P.V(2)): RETURN ELSE RETURN
  88. 10620  CL%=INT((RND*3) MOD 3 +1): RETURN
  89. 10630  P.V(0)=INT(RND*6)+9
  90. 10640  P.V(1)=INT(RND*6)+9: IF P.V(1)=P.V(0) THEN 10640
  91. 10650  P.V(2)=INT(RND*6)+9: IF P.V(2)=P.V(0) OR P.V(2)=P.V(1) THEN 10650 ELSE RETURN
  92. 10660  GOSUB 10940: C.RX%=1
  93. 10670  CLS: IF OP%=4 THEN 10840
  94. 10680  GOSUB 11100: DIG.ERR=0: GOSUB 8050: IF OP%<3 THEN 10770
  95. 10690  M.ER=1: PP.Y%=4: PP.C$=A.LOP$
  96. 10700  C.RX%=M.ER: C.Y%=2: C.C$=MID$(ROP$,M.ER,1): GOSUB 11260: M.AND=1: PP.DIG=1
  97. 10710  C.RX%=M.AND: C.Y%=1: C.C$=MID$(LOP$,M.AND,1): GOSUB 11260: GOSUB 8060
  98. 10720  C.RX%=PP.DIG+M.ER-1: C.Y%=PP.Y%: GOSUB 11170: C.R$=MID$(PP.C$,PP.DIG+M.ER-1,1): IF C.C$<>C.R$ THEN GOSUB 10930 ELSE GOSUB 8000
  99. 10730  C.RX%=M.AND: C.Y%=1:C.C$=MID$(LOP$,M.AND,1): C.CL%=1: GOSUB 11310: PP.DIG=PP.DIG+1: M.AND=M.AND+1: IF M.AND<=LEN(LOP$) AND PP.DIG+M.ER-1<=LEN(PP.C$) THEN 10710
  100. 10740  IF PP.DIG+M.ER-1<=LEN(PP.C$) THEN 10720
  101. 10750  C.RX%=M.ER: C.Y%=2: C.C$=MID$(ROP$,M.ER,1): C.CL%=1: GOSUB 11310: M.ER=M.ER+1: PP.C$=" "+A.ROP$: PP.Y%=5: PP.DIG=1: IF M.ER<=LEN(ROP$) THEN 10700
  102. 10760  IF M.ER=2 THEN 10810
  103. 10770  PP.DIG=1: PP.C$=A.ROP$: IF OP%=3 THEN PP.C$=" "+A.ROP$
  104. 10780  C.RX%=PP.DIG: C.Y%=4: C.C$=MID$(A.LOP$,PP.DIG,1): GOSUB 11260: C.Y%=5: C.C$=MID$(PP.C$,PP.DIG,1): GOSUB 11260: GOSUB 8060: C.Y%=7
  105. 10790  GOSUB 11170: C.R$=MID$(ANS$,PP.DIG,1): IF C.C$<>C.R$ THEN C.C$=MID$(ANS$,PP.DIG,1): GOSUB 10930 ELSE GOSUB 8000
  106. 10800  C.Y%=4: C.C$=MID$(A.LOP$,PP.DIG,1): C.CL%=1: GOSUB 11310: C.Y%=5: C.C$=MID$(PP.C$,PP.DIG,1): GOSUB 11310: PP.DIG=PP.DIG+1: IF PP.DIG<=LEN(ANS$) THEN 10780
  107. 10810  IF NOT DIG.ERR THEN GOSUB 11210: RETURN ELSE LOCATE 12,3: PRINT "Repeat": PRINT: PRINT TAB(3) "this": PRINT: PRINT TAB(3) "problem": PRINT: PRINT TAB(3) "( Y / N ) ?"
  108. 10820  GOSUB 40
  109. 10830  GOSUB 20: IF KB%=-1 THEN 10830 ELSE KB$=CHR$(KB%): IF KB$="Y" OR KB$="y" THEN 10670 ELSE IF KB$="N" OR KB$="n" THEN WRONG=WRONG+1: RETURN ELSE IF KB%=27 THEN 10130 ELSE 10830
  110. 10840  GOSUB 11100: DIG.ERR=0: PP.Y%=4: PP.C$=PS1$: GOSUB 8050: Q.DIG=LEN(ANS$)
  111. 10850  C.RX%=Q.DIG: PP.DIG=1: C.Y%=1: GOSUB 11170: C.R$=MID$(ANS$,Q.DIG,1): IF C.C$<>C.R$ THEN GOSUB 10930 ELSE GOSUB 8000
  112. 10860  KB.SEC=0.3: GOSUB 60: GOSUB 8060: C.Y%=PP.Y%: C.RX%=PP.DIG+Q.DIG-1: C.CL%=2: C.C$=MID$(PP.C$,PP.DIG,1): GOSUB 11170: C.R$=MID$(PP.C$,PP.DIG,1): IF C.C$<>C.R$ THEN GOSUB 10930 ELSE GOSUB 8000
  113. 10870  PP.DIG=PP.DIG+1: IF PP.DIG<=LEN(PP.C$) THEN 10860
  114. 10880  KB.SEC=0.5: GOSUB 60: C.Y%=PP.Y%+1: C.CS$=PP.C$: C.RX%=Q.DIG: C.CL%=2: GOSUB 11280
  115. 10890  PP.C$=A.LOP$: PP.DIG=1: IF Q.DIG=1 THEN PP.C$=A.ROP$
  116. 10900  GOSUB 8060: C.RX%=PP.DIG+Q.DIG-1: C.Y%=PP.Y%+2: GOSUB 11170: C.R$=MID$(PP.C$,PP.DIG,1): IF C.C$<>C.R$ THEN GOSUB 10930 ELSE GOSUB 8000
  117. 10910  PP.DIG=PP.DIG+1: IF PP.DIG<=LEN(PP.C$) THEN 10900
  118. 10920  KB.SEC=0.5: GOSUB 60: Q.DIG=Q.DIG-1: IF Q.DIG<1 THEN 10810 ELSE C.RX%=Q.DIG: C.Y%=3: C.L%=3: GOSUB 11290: PP.C$=PS2$: PP.Y%=PP.Y%+3: GOTO 10850
  119. 10930  GOSUB 8020: DIG.ERR=-1: GOSUB 11270: KB.SEC=0.5: GOSUB 60: FOR I%=1 TO 3: GOSUB 11270: KB.SEC=0.1: GOSUB 60: C.C$=C.R$: C.CL%=2: GOSUB 11310: KB.SEC=0.2: GOSUB 60: NEXT I%: RETURN
  120. 10940  LOP%=MIN+INT(RND*(MAX-MIN+1)): ROP%=MIN+INT(RND*(MAX-MIN+1)): IF NOT NEG THEN IF ROP%>LOP% THEN SWAP LOP%,ROP%
  121. 10950  IF OLDL=LOP% AND OLDR=ROP% THEN GOTO 10940
  122. 10960  IF DIV AND (LOP%=0) THEN LOP%=1
  123. 10970  IF DIV AND (ROP%=0) THEN ROP%=1
  124. 10980  OLDL = LOP%: OLDR=ROP%: ANS%= -(LOP%+ROP%)*(OP%=1) -(LOP%-ROP%)*(OP%=2) -(LOP%*ROP%)*(OP%=3) -LOP%*(OP%=4): IF DIV THEN LOP%=ROP%*ANS%
  125. 10990  IF ANS% => 0 THEN ANST$=STR$(ANS%): ANS$=RIGHT$(ANST$,LEN(ANST$)-1)
  126. 11000  IF ANS% < 0 THEN ANS$= STR$(ANS%)
  127. 11010  TP$=STR$(T): T$=RIGHT$(TP$,LEN(TP$)-1): TB$=STR$(B): B$=RIGHT$(TB$,LEN(TB$)-1)
  128. 11020  LOP$=STR$(LOP%): ROP$=STR$(ROP%): IF OP%=1 OR OP%=2 THEN: A.LOP$=LOP$: A.ROP$=ROP$
  129. 11030  IF OP%=3 THEN A.LOP$=STR$((LOP%*(ROP% MOD 10))): A.ROP$=STR$((LOP%*(ROP%\10)))
  130. 11040  IF OP%=4 THEN DIV.P$=ROP$+" "+LOP$: PS1$=STR$((ANS%\10)*ROP%): PS2$=STR$((ANS% MOD 10)*ROP%): A.LOP$=STR$((LOP%\10)-(ROP%*(ANS%\10))): A.ROP$="0": IF ANS%<10 THEN PS1$=STR$(ANS%*ROP%)
  131. 11050  X$=LOP$: GOSUB 11080: LOP$=X$: X$=ROP$: GOSUB 11080: ROP$=X$: X$=ANS$: GOSUB 11080: ANS$=X$: X$=A.LOP$: GOSUB 11080 : A.LOP$=X$: X$=A.ROP$: GOSUB 11080: A.ROP$=X$
  132. 11060  IF DIV THEN X$=PS1$: GOSUB 11080: PS1$=X$: X$=PS2$: GOSUB 11080: PS2$=X$: X$=DIV.P$: GOSUB 11080: DIV.P$=X$
  133. 11070  RETURN
  134. 11080  IF LEN(X$)<2 THEN RETURN ELSE IF LEFT$(X$,1)=" " THEN X$=MID$(X$,2,LEN(X$)-1): GOTO 11080
  135. 11090  FOR IR%=1 TO LEN(X$)\2: R.C$=MID$(X$,LEN(X$)+1-IR%,1): MID$(X$,LEN(X$)+1-IR%,1)=MID$(X$,IR%,1): MID$(X$,IR%)=R.C$: NEXT IR%: RETURN
  136. 11100  CLS: IF OP%>=3 THEN 11130 ELSE C.Y%=4: C.CL%=1: C.RX%=1: C.CS$=A.LOP$: GOSUB 11250: C.CS$=A.ROP$+" "+OP$: GOSUB 11250: C.CS$=A.LOP$: IF LEN(C.CS$)<LEN(A.ROP$) THEN C.CS$=A.ROP$: C.RX%=1
  137. 11101  IF LEN(C.CS$)<LEN(ANS$) THEN C.CS$=ANS$
  138. 11110  GOSUB 11280: IF RIGHT$(ANS$,1)="-" THEN C.RX%=LEN(ANS$): C.CL%=2: C.C$="-": GOSUB 11310: ANS$=LEFT$(ANS$,LEN(ANS$)-1)
  139. 11120  C.CS$=ANS$: C.CL%=2: C.RX%=1: GOSUB 11330: GOTO 11160
  140. 11130  IF OP%>3 THEN 11150 ELSE C.CS$=LOP$: C.Y%=1: C.CL%=1: C.RX%=1: GOSUB 11250: C.CS$=ROP$+" "+OP$: GOSUB 11250: C.CS$=A.LOP$:C.RX%=1: IF LEN(C.CS$)<LEN(ROP$) THEN C.CS$=ROP$
  141. 11140  GOSUB 11280: C.CS$=A.LOP$: C.CL%=2: GOSUB 11330: IF LEN(ROP$)<2 THEN 11160 ELSE C.CS$=A.ROP$: C.RX%=2: GOSUB 11330: C.CS$=ANS$: GOSUB 11280: C.CS$=ANS$: GOSUB 11330: GOTO 11160
  142. 11150  C.CS$=DIV.P$: C.CL%=1: C.RX%=1: C.Y%=3: GOSUB 11250: LINE (224-LEN(LOP$)*16,22+32)- STEP(3,23),1,BF: C.CS$=LOP$+" ": C.RX%=1: C.Y%=2: GOSUB 11280: C.CS$=ANS$: C.Y%=1: C.CL%=2: C.RX%=1: GOSUB 11330
  143. 11160  RETURN
  144. 11170  FLASH.CNT%=1200: C.CL%=3: FLASH%=0: GOSUB 40
  145. 11180  C.C$=MID$("? ",FLASH%+1,1): GOSUB 11310: KB.SEC=0.2: GOSUB 60: FLASH%=(FLASH%+1) MOD 2: IF KB%<>-1 THEN 11190 ELSE FLASH.CNT%=FLASH.CNT%-1: IF FLASH.CNT%>0 THEN 11180 ELSE 11390
  146. 11190  GOSUB 11230: IF KB%=-1 THEN 11180
  147. 11200  C.C$=CHR$(KB%): C.CL%=2: GOSUB 11310: KB$=C.C$: RETURN
  148. 11210  LOCATE 15,3,0: I=INT(RND*11): DSP.CS$=T$(I): GOSUB 11220: DSP.CS$=T2$(I): LOCATE 17,3,0: GOSUB 11220: KB.SEC=1.4: GOSUB 60: RETURN
  149. 11220  FOR R.I%=1 TO LEN(DSP.CS$): PRINT MID$(DSP.CS$,R.I%,1);: GOSUB 8070: KB.SEC=0.05: GOSUB 60: NEXT R.I%: RETURN
  150. 11230  IF KB%=27 THEN RETURN 10130
  151. 11240  IF (KB%<45 OR KB%>57) OR (NEG=0 AND KB%<48) OR (NEG AND (KB%=46 OR KB%=47)) THEN KB%=-1: RETURN ELSE RETURN
  152. 11250  C.RXI%=C.RX%: FOR D.I%=LEN(C.CS$) TO C.RXI% STEP -1: C.C$=MID$(C.CS$,D.I%,1): C.RX%=D.I%: GOSUB 11310: NEXT D.I%: C.Y%=C.Y%+1: C.RX%=1: RETURN
  153. 11260  C.CL%=3: GOTO 11310
  154. 11270  C.CB$=C.C$: C.C$=" ": GOSUB 11310: C.C$=C.CB$: RETURN
  155. 11280  DSP.Y%=22+C.Y%*16: DSP.L%=LEN(C.CS$)*16: DSP.X%=256-DSP.L%-C.RX%*16: LINE (DSP.X%,DSP.Y%)-STEP (DSP.L%-1,3),1,BF: C.Y%=C.Y%+1: C.RX%=1: RETURN
  156. 11290  GET(224,64)-(239,79),DVD: FOR DSP.Y%=65 TO 112: PUT (224,DSP.Y%),DVD: GOSUB 8080
  157. 11300  PUT (224,DSP.Y%),DVD: NEXT DSP.Y%: C.Y%=6: C.RX%=1: C.CL%=2: C.C$=LEFT$(DIV.P$,1): GOSUB 11310: RETURN
  158. 11310  IF DSP.Y%<0 THEN DSP.Y%=1
  159. 11320  DSP.X%=240-C.RX%*16: DSP.Y%=16+C.Y%*16: DSP.C$=C.C$: DSP.C%=C.CL%: GOSUB 130: RETURN
  160. 11330  C.RXI%=C.RX%: FOR D.I%=LEN(C.CS$)+C.RXI%-1 TO C.RXI% STEP -1: C.C$=MID$(C.CS$,1,1): IF C.C$<>" " THEN C.C$="?"
  161. 11340  C.RX%=D.I%: GOSUB 11310: NEXT D.I%: C.Y%=C.Y%+1: C.RX%=1: RETURN
  162. 11350  RETURN
  163. 11360  DIM CAKE.V%(1000): DSP.T%=0: DSP.X%=0: DSP.Y%=0: DSP.C%=0: DSP.I%=0: DSP.C$=""
  164. 11370  OPEN "FONTCS.DS" FOR INPUT AS #1: LINE INPUT#1,DSP.FCS$: CLOSE 1: DSP.NFCS%=LEN(DSP.FCS$)
  165. 11380  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
  166. 11390  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
  167. 62000  SCREEN 0,1,0,0: LOCATE ,,0: COLOR 7: CLS: X$="": IF ERR=53 THEN X$="DISK WITH PROGRAMS NEEDED"
  168. 62010  IF ERR=72 OR ERR=71 THEN X$="DISK ERROR OR NOT READY"
  169. 62020  IF ERR=5 THEN X$="LIST AND SAVE COMMANDS ARE ILLEGAL"
  170. 62030  IF X$="" THEN 62080
  171. 62040  GOSUB 62090
  172. 62050  RESUME 62060
  173. 62060  ON ERROR GOTO 62000
  174. 62070  KB.SEC=20: GOSUB 50: CLS: IF KB%=27 THEN RUN "PCMENU.BAS" ELSE  RUN
  175. 62080  SCREEN 0,1,0,0: LOCATE ,,0: COLOR 7,0: CLS: RUN
  176. 62090  GOSUB 62120: IF X$="" THEN X$="  "
  177. 62100  XL%=LEN(X$): IF XL%>36 THEN XL%=36
  178. 62110  LOCATE 25,2,0: PRINT SPACE$((38-XL%)\2)+LEFT$(X$,XL%) +SPACE$(38-XL%-(38-XL%)\2);: RETURN
  179. 62120  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
  180.