home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / compuserve / Basic / MAC-TI.4X < prev    next >
Text File  |  2006-10-19  |  6KB  |  128 lines

  1.  
  2. 100 ! ********************
  3. 110 ! *                  *
  4. 120 ! * The Mac-TI       *
  5. 130 ! *    Calculator    *
  6. 140 ! * For Mouse-Lovers *
  7. 150 ! *     Everywhere   *
  8. 160 ! * by Chris Bobbitt *
  9. 170 ! * Mid-Atlantic 99er*
  10. 180 ! *     Users Group  *
  11. 190 ! * Inspired by the  *
  12. 200 ! * Apple MACINTOSH  *
  13. 210 ! *        1984      *
  14. 220 ! *                  *
  15. 230 ! ********************
  16. 240 ON WARNING NEXT :: ON ERROR 270 :: CALL MAGNIFY(3):: A$="" :: T,A,ONN=0 :: C
  17. ALL SETUP
  18. 250 CALL INKEY :: CALL CHECK(A$,A,T,ONN):: GOTO 250
  19. 260 END
  20. 270 RETURN
  21. 280 SUB INKEY
  22. 290 CALL JOYST(1,X,Y):: CALL KEY(1,K,S):: IF K=18 THEN SUBEXIT ELSE CALL MOTION(
  23. #1,-Y*4,X*4)
  24. 300 GOTO 290 :: SUBEND
  25. 310 SUB CHECK(A$,A,T,ONN):: CALL MOTION(#1,0,0,#3,0,0)
  26. 320 CALL POSITION(#1,X,Y):: CALL GCHAR((X+7)/8,(Y+7)/8,CH):: CALL COINC(#1,#3,10
  27. ,CO):: IF CO<>-1 AND CH<64 OR CH>127 THEN SUBEXIT
  28. 330 IF CO=-1 THEN CALL ONN1(ONN,A,T,A$):: GOTO 590
  29. 340 IF ONN=0 THEN SUBEXIT
  30. 350 C=INT((CH-63)/4):: IF C<(CH-63)/4 THEN C=C+1
  31. 360 IF C>10 THEN 390
  32. 370 IF LEN(A$)=9 THEN SUBEXIT ELSE A$=A$&CHR$(47+C)
  33. 380 A=VAL(A$):: CALL DISPL(A$):: CALL SOUND(-100,900,5):: SUBEXIT
  34. 390 IF C=15 AND LEN(A$)<9 THEN 560 ELSE IF C=16 THEN 510 ELSE CALL SOUND(-100,70
  35. 0,5)
  36. 400 IF OP=0 THEN T=A :: OP=C-10 :: A$="" :: CALL DISPL(A$):: GOTO 590
  37. 410 OP1=C-10 :: IF OP1<>OP THEN ON OP GOTO 420,430,440,450 ELSE 460
  38. 420 OP=OP1 :: T=T+A :: A$="" :: CALL DISPL(A$):: SUBEXIT
  39. 430 OP=OP1 :: T=T-A :: A$="" :: CALL DISPL(A$):: SUBEXIT
  40. 440 OP=OP1 :: T=T*A :: A$="" :: CALL DISPL(A$):: SUBEXIT
  41. 450 OP=OP1 :: T=T/A :: A$="" :: CALL DISPL(A$):: SUBEXIT
  42. 460 IF OP<>0 THEN ON OP GOTO 470,480,490,500
  43. 470 T=T+A :: A$="" :: CALL DISPL(A$):: SUBEXIT
  44. 480 T=T-A :: A$="" :: CALL DISPL(A$):: SUBEXIT
  45. 490 T=T*A :: A$="" :: CALL DISPL(A$):: SUBEXIT
  46. 500 T=T/A :: A$="" :: CALL DIPSL(A$):: SUBEXIT
  47. 510 CALL SOUND(-100,800,5):: IF OP=0 THEN SUBEXIT ELSE ON OP GOTO 520,530,540,55
  48. 0
  49. 520 T=T+A :: A$=STR$(T):: CALL DISPL(A$):: A$="" :: T,A,OP=0 :: SUBEXIT
  50. 530 T=T-A :: A$=STR$(T):: CALL DISPL(A$):: A$="" :: T,A,OP=0 :: SUBEXIT
  51. 540 T=T*A :: A$=STR$(T):: CALL DISPL(A$):: A$="" :: T,A,OP=0 :: SUBEXIT
  52. 550 T=T/A :: A$=STR$(T):: CALL DISPL(A$):: A$="" :: T,A,OP=0 :: SUBEXIT
  53. 560 XX=POS(A$,".",1):: IF XX>0 THEN SUBEXIT ELSE A$=A$&"."
  54. 570 IF LEN(A$)=1 THEN CALL DISPL(A$):: CALL SOUND(-100,900,5):: SUBEXIT
  55. 580 A=VAL(A$):: CALL DISPL(A$):: CALL SOUND(-100,900,5):: SUBEXIT
  56. 590 SUBEND
  57. 600 SUB ONN1(ONN,A,T,A$):: IF ONN=0 THEN 610 ELSE 630
  58. 610 ONN=1 :: CALL LOCATE(#3,41,65):: CALL SOUND(50,-5,20,1100,27,110,28):: FOR K
  59. =1 TO 50 :: NEXT K :: CALL SOUND(100,1200,11)
  60. 620 FOR I=1 TO 3 :: A$="........." :: CALL DISPL(A$):: A$="" :: CALL DISPL(A$)::
  61.  NEXT I :: A$="" :: T=0 :: SUBEXIT
  62. 630 ONN=0 :: CALL LOCATE(#3,57,65):: CALL SOUND(50,-5,20,1100,27,110,28):: DISPL
  63. AY AT(6,11)SIZE(9):":::::::::"
  64. 640 FOR I=1 TO 3 :: CALL SOUND(-1000,1100,I):: FOR K=1 TO 20 :: NEXT K :: NEXT I
  65.  :: A$="" :: T,A=0 :: SUBEND
  66. 650 SUB DISPL(A$)
  67. 660 IF LEN(A$)<=9 THEN 670 ELSE IF VAL(A$)>999999999 THEN 690 ELSE 700
  68. 670 DISPLAY AT(6,11)SIZE(9):RPT$(":",9-LEN(A$))&SEG$(A$,1,9)
  69. 680 GOTO 710
  70. 690 DISPLAY AT(6,11)SIZE(9):RPT$(".",9):: GOTO 710
  71. 700 DISPLAY AT(6,11)SIZE(9):SEG$(A$,1,9)
  72. 710 SUBEND
  73. 720 SUB SETUP :: CALL CLEAR :: CALL SCREEN(2)
  74. 730 CALL CHAR(36,RPT$("0",48)&"03070F1F3E7C7830")
  75. 740 CALL CHAR(64,"C08003040404040505050606030080C00301C06060A0A0A020202020C00001
  76. 03")
  77. 750 CALL CHAR(68,"C08001030101010101010101030080C0030180808080808080808080C00001
  78. 03")
  79. 760 CALL CHAR(72,"C08003040000000102040404070080C00301C0202040800000000000E00001
  80. 03")
  81. 770 CALL CHAR(76,"C08003040000000000000004030080C00301C020202020C020202020C00001
  82. 03")
  83. 780 CALL CHAR(80,"C08004040404040700000000000080C003014040404040E040404040400001
  84. 03")
  85. 790 CALL CHAR(84,"C08007040404040700000004030080C00301E000000000C020202020C00001
  86. 03")
  87. 800 CALL CHAR(88,"C08003040404040704040404030080C00301C020000000C020202020C00001
  88. 03")
  89. 810 CALL CHAR(92,"C08007000000000000010102020080C00301E0202040408080000000000001
  90. 03")
  91. 820 CALL CHAR(96,"C08003040404040304040404030080C00301C020202020C020202020C00001
  92. 03")
  93. 830 CALL CHAR(100,"C08003040404040300000004030080C00301C020202020E020202020C0000
  94. 103")
  95. 840 CALL CHAR(104,"C08000000101010F0F010101000080C003010000808080F0F080808000000
  96. 103")
  97. 850 CALL CHAR(108,"C08000000000000F0F000000000080C003010000000000F0F000000000000
  98. 103")
  99. 860 CALL CHAR(112,"C08000000804020101020408000080C003010000102040808040201000000
  100. 103")
  101. 870 CALL CHAR(116,"C08000000101000F0F000101000080C003010000808000F0F000808000000
  102. 103")
  103. 880 CALL CHAR(120,"C08000000000000101000000000080C003010000000000808000000000000
  104. 103")
  105. 890 CALL CHAR(124,"C0800000000F0F00000F0F00000080C00301000000F0F00000F0F00000000
  106. 103")
  107. 900 CALL CHAR(128,"C0E0733B1F0F070707070F3F7F70000000006CFCFCFCFEFEFEFEFFFFFF7E1
  108. C08")
  109. 910 CALL CHAR(132,"000000000000000000000000000000003F1F3F1F3F1F3F1F3F1F3F1F3F1F3
  110. F1F")
  111. 920 CALL CHAR(58,"",59,"0000000000003030")
  112. 930 FOR I=1 TO 14 :: CALL COLOR(I,2,2):: NEXT I :: CALL CHAR(136,RPT$("F",16))
  113. 940 CALL CHAR(137,"3F7FFFFFFFFFFFFF",138,"FEFEFFFFFFFFFFFF",139,"FFFFFFFFFFFF7F3
  114. F",140,"FFFFFFFFFFFFFEFC")
  115. 950 CALL VCHAR(5,11,136,14):: CALL VCHAR(5,23,136,14):: DISPLAY AT(4,9):CHR$(137
  116. )&RPT$(CHR$(136),11)&CHR$(138)
  117. 960 FOR I=5 TO 7 :: CALL HCHAR(I,12,58,11):: NEXT I :: DISPLAY AT(9,10):"DF HJ L
  118. N hj ":TAB(10);"EG IK MO ik ": :TAB(10);"PR TV XZ ln ":TAB(9);" QS UW Y[ mo "
  119. 970 DISPLAY AT(15,10):"\^ `b df pr ":TAB(10);"]_ ac eg qs ": :TAB(10);"xz @B |~ 
  120. tv "
  121. 980 DISPLAY AT(19,10):"y{ AC }"&CHR$(127)&" uw ":TAB(9);CHR$(139)&RPT$(CHR$(136)
  122. ,11)&CHR$(140)
  123. 990 FOR I=1 TO 4 :: CALL HCHAR(I*3+5,12,136,11):: NEXT I :: FOR I=11 TO 23 STEP 
  124. 3 :: CALL VCHAR(8,I,136,12):: NEXT I
  125. 1000 CALL VCHAR(5,11,136,12):: CALL VCHAR(5,23,136,14):: CALL COLOR(2,2,15,3,2,1
  126. 5,4,2,15,14,16,2):: FOR I=5 TO 13 :: CALL COLOR(I,16,5)
  127. 1010 NEXT I :: CALL SPRITE(#1,128,11,100,200,#3,132,12,57,65):: SUBEND
  128.