home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.whtech.com
/
ftp.whtech.com.tar
/
ftp.whtech.com
/
compuserve
/
Basic
/
MAC-TI.4X
< prev
next >
Wrap
Text File
|
2006-10-19
|
6KB
|
128 lines
100 ! ********************
110 ! * *
120 ! * The Mac-TI *
130 ! * Calculator *
140 ! * For Mouse-Lovers *
150 ! * Everywhere *
160 ! * by Chris Bobbitt *
170 ! * Mid-Atlantic 99er*
180 ! * Users Group *
190 ! * Inspired by the *
200 ! * Apple MACINTOSH *
210 ! * 1984 *
220 ! * *
230 ! ********************
240 ON WARNING NEXT :: ON ERROR 270 :: CALL MAGNIFY(3):: A$="" :: T,A,ONN=0 :: C
ALL SETUP
250 CALL INKEY :: CALL CHECK(A$,A,T,ONN):: GOTO 250
260 END
270 RETURN
280 SUB INKEY
290 CALL JOYST(1,X,Y):: CALL KEY(1,K,S):: IF K=18 THEN SUBEXIT ELSE CALL MOTION(
#1,-Y*4,X*4)
300 GOTO 290 :: SUBEND
310 SUB CHECK(A$,A,T,ONN):: CALL MOTION(#1,0,0,#3,0,0)
320 CALL POSITION(#1,X,Y):: CALL GCHAR((X+7)/8,(Y+7)/8,CH):: CALL COINC(#1,#3,10
,CO):: IF CO<>-1 AND CH<64 OR CH>127 THEN SUBEXIT
330 IF CO=-1 THEN CALL ONN1(ONN,A,T,A$):: GOTO 590
340 IF ONN=0 THEN SUBEXIT
350 C=INT((CH-63)/4):: IF C<(CH-63)/4 THEN C=C+1
360 IF C>10 THEN 390
370 IF LEN(A$)=9 THEN SUBEXIT ELSE A$=A$&CHR$(47+C)
380 A=VAL(A$):: CALL DISPL(A$):: CALL SOUND(-100,900,5):: SUBEXIT
390 IF C=15 AND LEN(A$)<9 THEN 560 ELSE IF C=16 THEN 510 ELSE CALL SOUND(-100,70
0,5)
400 IF OP=0 THEN T=A :: OP=C-10 :: A$="" :: CALL DISPL(A$):: GOTO 590
410 OP1=C-10 :: IF OP1<>OP THEN ON OP GOTO 420,430,440,450 ELSE 460
420 OP=OP1 :: T=T+A :: A$="" :: CALL DISPL(A$):: SUBEXIT
430 OP=OP1 :: T=T-A :: A$="" :: CALL DISPL(A$):: SUBEXIT
440 OP=OP1 :: T=T*A :: A$="" :: CALL DISPL(A$):: SUBEXIT
450 OP=OP1 :: T=T/A :: A$="" :: CALL DISPL(A$):: SUBEXIT
460 IF OP<>0 THEN ON OP GOTO 470,480,490,500
470 T=T+A :: A$="" :: CALL DISPL(A$):: SUBEXIT
480 T=T-A :: A$="" :: CALL DISPL(A$):: SUBEXIT
490 T=T*A :: A$="" :: CALL DISPL(A$):: SUBEXIT
500 T=T/A :: A$="" :: CALL DIPSL(A$):: SUBEXIT
510 CALL SOUND(-100,800,5):: IF OP=0 THEN SUBEXIT ELSE ON OP GOTO 520,530,540,55
0
520 T=T+A :: A$=STR$(T):: CALL DISPL(A$):: A$="" :: T,A,OP=0 :: SUBEXIT
530 T=T-A :: A$=STR$(T):: CALL DISPL(A$):: A$="" :: T,A,OP=0 :: SUBEXIT
540 T=T*A :: A$=STR$(T):: CALL DISPL(A$):: A$="" :: T,A,OP=0 :: SUBEXIT
550 T=T/A :: A$=STR$(T):: CALL DISPL(A$):: A$="" :: T,A,OP=0 :: SUBEXIT
560 XX=POS(A$,".",1):: IF XX>0 THEN SUBEXIT ELSE A$=A$&"."
570 IF LEN(A$)=1 THEN CALL DISPL(A$):: CALL SOUND(-100,900,5):: SUBEXIT
580 A=VAL(A$):: CALL DISPL(A$):: CALL SOUND(-100,900,5):: SUBEXIT
590 SUBEND
600 SUB ONN1(ONN,A,T,A$):: IF ONN=0 THEN 610 ELSE 630
610 ONN=1 :: CALL LOCATE(#3,41,65):: CALL SOUND(50,-5,20,1100,27,110,28):: FOR K
=1 TO 50 :: NEXT K :: CALL SOUND(100,1200,11)
620 FOR I=1 TO 3 :: A$="........." :: CALL DISPL(A$):: A$="" :: CALL DISPL(A$)::
NEXT I :: A$="" :: T=0 :: SUBEXIT
630 ONN=0 :: CALL LOCATE(#3,57,65):: CALL SOUND(50,-5,20,1100,27,110,28):: DISPL
AY AT(6,11)SIZE(9):":::::::::"
640 FOR I=1 TO 3 :: CALL SOUND(-1000,1100,I):: FOR K=1 TO 20 :: NEXT K :: NEXT I
:: A$="" :: T,A=0 :: SUBEND
650 SUB DISPL(A$)
660 IF LEN(A$)<=9 THEN 670 ELSE IF VAL(A$)>999999999 THEN 690 ELSE 700
670 DISPLAY AT(6,11)SIZE(9):RPT$(":",9-LEN(A$))&SEG$(A$,1,9)
680 GOTO 710
690 DISPLAY AT(6,11)SIZE(9):RPT$(".",9):: GOTO 710
700 DISPLAY AT(6,11)SIZE(9):SEG$(A$,1,9)
710 SUBEND
720 SUB SETUP :: CALL CLEAR :: CALL SCREEN(2)
730 CALL CHAR(36,RPT$("0",48)&"03070F1F3E7C7830")
740 CALL CHAR(64,"C08003040404040505050606030080C00301C06060A0A0A020202020C00001
03")
750 CALL CHAR(68,"C08001030101010101010101030080C0030180808080808080808080C00001
03")
760 CALL CHAR(72,"C08003040000000102040404070080C00301C0202040800000000000E00001
03")
770 CALL CHAR(76,"C08003040000000000000004030080C00301C020202020C020202020C00001
03")
780 CALL CHAR(80,"C08004040404040700000000000080C003014040404040E040404040400001
03")
790 CALL CHAR(84,"C08007040404040700000004030080C00301E000000000C020202020C00001
03")
800 CALL CHAR(88,"C08003040404040704040404030080C00301C020000000C020202020C00001
03")
810 CALL CHAR(92,"C08007000000000000010102020080C00301E0202040408080000000000001
03")
820 CALL CHAR(96,"C08003040404040304040404030080C00301C020202020C020202020C00001
03")
830 CALL CHAR(100,"C08003040404040300000004030080C00301C020202020E020202020C0000
103")
840 CALL CHAR(104,"C08000000101010F0F010101000080C003010000808080F0F080808000000
103")
850 CALL CHAR(108,"C08000000000000F0F000000000080C003010000000000F0F000000000000
103")
860 CALL CHAR(112,"C08000000804020101020408000080C003010000102040808040201000000
103")
870 CALL CHAR(116,"C08000000101000F0F000101000080C003010000808000F0F000808000000
103")
880 CALL CHAR(120,"C08000000000000101000000000080C003010000000000808000000000000
103")
890 CALL CHAR(124,"C0800000000F0F00000F0F00000080C00301000000F0F00000F0F00000000
103")
900 CALL CHAR(128,"C0E0733B1F0F070707070F3F7F70000000006CFCFCFCFEFEFEFEFFFFFF7E1
C08")
910 CALL CHAR(132,"000000000000000000000000000000003F1F3F1F3F1F3F1F3F1F3F1F3F1F3
F1F")
920 CALL CHAR(58,"",59,"0000000000003030")
930 FOR I=1 TO 14 :: CALL COLOR(I,2,2):: NEXT I :: CALL CHAR(136,RPT$("F",16))
940 CALL CHAR(137,"3F7FFFFFFFFFFFFF",138,"FEFEFFFFFFFFFFFF",139,"FFFFFFFFFFFF7F3
F",140,"FFFFFFFFFFFFFEFC")
950 CALL VCHAR(5,11,136,14):: CALL VCHAR(5,23,136,14):: DISPLAY AT(4,9):CHR$(137
)&RPT$(CHR$(136),11)&CHR$(138)
960 FOR I=5 TO 7 :: CALL HCHAR(I,12,58,11):: NEXT I :: DISPLAY AT(9,10):"DF HJ L
N hj ":TAB(10);"EG IK MO ik ": :TAB(10);"PR TV XZ ln ":TAB(9);" QS UW Y[ mo "
970 DISPLAY AT(15,10):"\^ `b df pr ":TAB(10);"]_ ac eg qs ": :TAB(10);"xz @B |~
tv "
980 DISPLAY AT(19,10):"y{ AC }"&CHR$(127)&" uw ":TAB(9);CHR$(139)&RPT$(CHR$(136)
,11)&CHR$(140)
990 FOR I=1 TO 4 :: CALL HCHAR(I*3+5,12,136,11):: NEXT I :: FOR I=11 TO 23 STEP
3 :: CALL VCHAR(8,I,136,12):: NEXT I
1000 CALL VCHAR(5,11,136,12):: CALL VCHAR(5,23,136,14):: CALL COLOR(2,2,15,3,2,1
5,4,2,15,14,16,2):: FOR I=5 TO 13 :: CALL COLOR(I,16,5)
1010 NEXT I :: CALL SPRITE(#1,128,11,100,200,#3,132,12,57,65):: SUBEND