Sany Basic - DEMO.BAS

De originele sourcecode van DEMO.BAS op de bijgeleverde [[Sanyo Basic]] diskette voor de [[Sanyo MBC 555]].

(:sanyo_mbc-550_demo_image.jpeg)

100 ' *** PROGRAM NAME "DEMO.BAS" REV 1.0 (9/27/1983)***
1000  COLOR 3,0: CLS:DIM A(17),B(17)
1010 LOCATE 10,15:INPUT "DO YOU USE A COLOR DISPLAY MONITOR ? (Y/N) ",Y$
1020 IF Y$<>"Y" THEN CCC=0:MASK=3 ELSE CCC=1:MASK=7
1030  GOSUB 4000:GOSUB 1050:GOSUB 1310
1040  GOTO 1030  
1050  '***** SANYO MBC-550   ******
1060  COLOR MASK,0 :CLS:WINDOW(0,0)-(639,199):VIEW(0,0)-(639,199)
1070  C1=INT(8*RND(1)) AND MASK
1080  C2=INT(8*RND(2)) AND MASK
1090  IF C1=C2 OR C1=0 OR C2=0 THEN 1070                     
1100  COLOR C1,C2:CLS
1110  LOCATE 25,10:PRINT "If you want to stop the program, please press SPACE bar.";:LOCATE 1,1
1120 GOSUB 5000
1300  FOR P=1 TO 800 : NEXT:RETURN   
1310  '******** CHARACTER ********
1320  COLOR MASK,0:GOSUB 4020:CLS:'GOSUB 4060
1325 WINDOW(0,0)-(639,199)
1330  LOCATE 25,15:PRINT "The character set of MBC-550";
1340  SYMBOL(76,0),"---- THE CHARACTER TABLE  -----",2,1
1350  LOCATE 4,9:PRINT "0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F "
1360  J=48
1370  FOR I=7 TO 22 :GOSUB 4020
1380  LOCATE I,7:PRINT CHR$(J);
1390  J=J+1:IF J=58 THEN J=65:GOSUB 4020
1400  NEXT I:GOSUB 4020
1410  C=31
1420  FOR I=17 TO 69 STEP 4:GOSUB 4020
1430  FOR J=7 TO 22
1440  C=C+1
1450  LOCATE J,I:PRINT CHR$(C);:FOR P=1 TO 2 :GOSUB 4020:NEXT P
1460  NEXT J:GOSUB 4020:NEXT I:FOR P=1 TO 300:GOSUB 4020:NEXT P
1470  GOSUB 1500
1480  LOCATE 24,38:PRINT "END";:GOSUB 4020
1490  GOSUB 3980:GOSUB 1050:GOTO 1810
1500  RETURN
1700 RETURN
1810  '******** PATTERN3 *******
1820  WINDOW(0,0)-(639,459):VIEW(20,6)-(619,194)
1830  COLOR MASK,0:GOSUB 4020:CLS
1840  LINE(0,0)-(639,399),,B
1850  LOCATE 25,15:PRINT "DRAWING BOX ";
1860  FOR I=1 TO 20:GOSUB 4020
1870  A1=INT(RND*639):B1=INT(RND*399):A2=INT(RND*639):B2=INT(RND*399)
1880   IF A1<3 OR B1<3 OR A2<3 OR B2<3 THEN 1870
1890  IF ABS(A2-A1)>200 OR ABS(B2-B1)>200 OR ABS(A2-A1)<40 OR ABS(B2-B1)<40 THEN 1870
1900  C=C+1:IF C=0 OR C>MASK  THEN C=1
1910  LINE(A1,B1)-(A2,B2),C AND MASK,BF
1930  NEXT I
1940  LOCATE 24,38:PRINT "END";
1950  GOSUB 3980:GOSUB 1050           
1960  '******** GRAPH-3 *******
1970  WINDOW(0,0)-(639,459):VIEW(50,0)-(589,199)
1980  COLOR MASK,0:GOSUB 4020:CLS
1990  LOCATE 25,14:PRINT "AN EXAMPLE OF CURVE USING SINE AND COSINE FUNCTIONS.";
2000  L=100:A=319:B=100:C=2.4:DV=1.0173
2010  C0=INT(RND*8) AND MASK:IF C0=0 THEN 2010
2020  FOR T=0 TO 1.57 STEP 1.74533E-02:V1=L*(COS(T)-SIN(T)):V2=L*(SIN(T)+COS(T)): V3=-V2:V4=V1:GOSUB 4020
2030  LINE(INT(A+V1*C),INT(B+V2)*2+20)-(INT(A+V3*C),INT(B+V4)*2+20),C0
2040  LINE-(INT(A-V1*C),INT(B-V2)*2+20),C0
2050  LINE-(INT(A-V3*C),INT(B-V4)*2+20),C0
2060  LINE-(INT(A+V1*C),INT(B+V2)*2+20),C0
2070  L=L/DV:NEXT T
2080  L=100:A=319:B=100:C=2.4:DV=1.0173                
2090  C1=INT(RND*8) AND MASK:IF C1=0 OR C1=C0  THEN 2090
2100  FOR T=4.72 TO 3.14 STEP -1.75433E-02:V1=L*(COS(T)-SIN(T)):V2=L*(SIN(T)+COS(T)): V3=-V2:V4=V1
2110  LINE(INT(A+V1*C),INT(B+V2)*2+22)-(INT(A+V3*C),INT(B+V4)*2+22),C1
2120  LINE(INT(A+V3*C),INT(B+V4)*2+22)-(INT(A-V1*C),INT(B-V2)*2+22),C1
2130  LINE(INT(A-V1*C),INT(B-V2)*2+22)-(INT(A-V3*C),INT(B-V4)*2+22),C1
2140  LINE(INT(A-V3*C),INT(B-V4)*2+22)-(INT(A+V1*C),INT(B+V2)*2+22),C1
2150  L=L/DV:NEXT T
2160  LOCATE 24,38:PRINT "END";
2170  GOSUB 3980:GOSUB 1050        
2180  '******* ROUND-1 ******
2190  IF CCC=0 THEN 2670 ELSE WINDOW (0,0)-(639,199):VIEW (0,0)-(639,199)
2200  COLOR 0,MASK:GOSUB 4020:CLS
2210  LOCATE 25,10
2220  PRINT "An example of geometrical pattern using CIRCLE and PAINT command.";
2230  CIRCLE (200,100),150 :CIRCLE (439,100),150
2240  FOR I=1 TO 20:GOSUB 4020            
2250  A=639*RND(1): IF A<50 OR A>550 THEN 2250
2260  B=199*RND(2): IF B<25 OR B>165 THEN 2260
2270  C=300*RND(3): IF C<30  THEN 2270 ELSE IF C>A OR C+30>B*1.8 THEN 2250 ELSE IF A+C>639 OR 2*B+C>350 THEN 2250
2280  CIRCLE (A,B),C
2290  NEXT I
2300  CL=INT(RND*8):IF CL=0 OR CL=MASK THEN 2300 ELSE LINE (0,0)-(639,190),0,B:PAINT(1,1),CL,0
2310  FOR I=1 TO 85
2320  GOSUB 4020:A=INT(639*RND(1)):'IF A<60 OR A>575 THEN 5190
2330  B=INT(199*RND(2)):IF B<30 OR B>150 THEN 2330
2340  D=COLOR (POINT(A,0),POINT(B,1))
2350  IF D<> MASK THEN 2320
2360  E=INT(8*RND(4)) AND MASK:IF E=MASK OR E=0 THEN 2360
2370  PAINT(A,B),E,0                              
2380  NEXT I
2390  LOCATE 24,38:PRINT "END";
2400  GOSUB 3980:GOSUB 1050       
2410  '******** SQUARE ********
2420  WINDOW (0,0)-(639,199):VIEW (0,0)-(639,199)
2425  IF CCC THEN COLOR 0,3 :BACK=3 ELSE COLOR 3,0:BACK=0
2430  GOSUB 4050:CLS
2440  LOCATE 24,5:PRINT "An example of geometrical pattern by LINE and CIRCLE commands.";
2450  LOCATE 25,5:PRINT "This program contains the method of reduction by WINDOW and VIEW command.";
2460  FOR K=1 TO 4
2470  VIEW (60 *K,16.5*K)-(639-60 *K,199-18*K),MASK
2480  C1=INT(8*RND(1)) AND MASK:C11=C1:IF  C1=0 OR C1=BACK OR C1=MASK THEN 2480
2490  FOR J=0 TO 5
2500  FOR I=0 TO 3:GOSUB 4020
2510  LINE (100*J+20,46*I+8)-(120+100*J,46+46*I+8),C1,BF
2530  C1=C1+1:IF C1>MASK THEN C1=1
2540  NEXT I,J                 
2550  C2=INT(8*RND(2)) AND MASK:IF C2=0 OR C2=MASK THEN 2550
2560  IF C2=C11 THEN 2550 ELSE 2570
2570  FOR J=0 TO 5:GOSUB 4020
2580  FOR I=0 TO 3
2590  CIRCLE (100*J+70,46*I+31),48,,,.45,C2                    
2600  PAINT(100*J+70,46*I+31),C2
2610  C2=C2+1:IF C2>MASK THEN C2=1
2620  IF K=4 AND J=5 THEN LOCATE 23,38:PRINT "END";
2630  NEXT I,J
2640  IF K<>4 THEN FOR P=1 TO 300:GOSUB 4020:NEXT P
2650  NEXT K
2660  GOSUB 3980:GOSUB 1050           
2670  '********  BAR GRAPH  ********
2680  COLOR MASK,0:GOSUB 4020:CLS:WINDOW(0,0)-(639,459):VIEW(0,0)-(639,199)
2690  LOCATE 25,15:PRINT "An example of histogram.";                       
2700  LINE (84,100)-(84,364),MASK
2710  LINE (84,360)-(630,360),MASK
2720  FOR I=1 TO 7:GOSUB 4020
2730  LINE (82,360-I*37)-(86,360-I*37),MASK
2740  NEXT I
2760  FOR I=0 TO 7:GOSUB 4020
2770  LOCATE 20-I*2,6:PRINT USING "####";I*800;
2780  NEXT I
2790  LOCATE 21,12:PRINT "  4       6       8      10      12      2       4       6       8"
2810  S=0:P=0
2820  FOR I=0 TO 16:GOSUB 4020
2830  D=120*RND:IF D<40 THEN 2830
2840  S=S+D
2850  A(I)=D
2860  CC=INT(RND*8) AND MASK:IF CC<=1 THEN 2860
2870  LINE (90+32*I,358)-(115+32*I,358-2.3*A(I)),CC,BF
2890  NEXT I
2900  M=S/17:LINE(90,358-2.3*M)-(600,358-2.3*M),6:D=M/4:E=M-D
2910  FOR I=0 TO 16:GOSUB 4020
2920  F=E+RND*2*D:P=P+F
2930  B(I)=F
2940  NEXT I
2950  FOR I=0 TO 15:GOSUB 4020
2960  LINE(102+32*I,338-2*B(I))-(135+32*I,338-2*B(I+1)),MASK
2970  NEXT I
3000  LOCATE 24,38:PRINT "END";
3010  GOSUB 3980:GOSUB 1050  
3020  '*******  circle graph  *******
3030  COLOR MASK,0:GOSUB 4020:CLS:WINDOW(0,0)-(639,199):VIEW(0,0)-(639,199)
3040  LOCATE 25,15:PRINT "An example of circle graph.";
3050  GOSUB 4020
3060  LOCATE 2,10:PRINT " Table of market share.";
3070  LINE(78,20)-(400,20)
3090  P2=1:A(0)=0:A(1)=.32:A(2)=.51:A(3)=.67:A(4)=.79:A(5)=.87:A(6)=1
3140  A(6)=1:GOSUB 3210:A(0)=1
3150  FOR J=0 TO 5:S=A(J):GOSUB 4020
3160  CIRCLE(140,100),130,-A(J),-A(J+1),,7-J
3161 IF J THEN T=(A(J)+A(J+1))*3.1415 ELSE T=A(1)*3.1415
3165  PAINT(140+30*COS(T),100+15*SIN(T)),7-J:GOSUB 4020
3170  NEXT J:A(0)=0
3200 GOTO 3390
3210  XS=280 : S=55 : FOR J=1 TO 6:GOSUB 4020
3220  LINE (XS,S)-(XS+15,S+8),MASK,B:PAINT (XS+10,S+3),8-J,MASK
3230  S=S+16:NEXT J
3240  XS=40:YS=8:P2=3.1415*2
3250  FOR J=0 TO 5:GOSUB 4020
3260  S=INT((A(J+1)-A(J))*100+.5)
3270  LOCATE YS,XS:PRINT USING "## %";S;
3280  YS=YS+2
3290  NEXT J
3300  XS=46:YS=8      
3310  LOCATE YS,XS   :PRINT "MODEL X1";
3320  LOCATE YS+2,XS:PRINT "MODEL X2";
3330  LOCATE YS+4,XS:PRINT "MODEL X3";
3340  LOCATE YS+6,XS:PRINT "MODEL X4";
3350  LOCATE YS+8,XS:PRINT "MODEL X5";
3360  LOCATE YS+10,XS:PRINT "THE OTHERS";
3370 RETURN
3390 FOR J=1 TO 300:GOSUB 4020:NEXT J:CLS:'GOSUB 4050:GOSUB 4060
3430  GOSUB 3990:GOSUB 1050
3960 RETURN
3970  '********** COMMON SUBROUTINE *********
3980  FOR P=1 TO 2000 : NEXT P
3990  RETURN
4000  LOCATE CSRLIN,POS,0:RETURN
4010  LOCATE CSRLIN,POS,1:RETURN
4020  ZZ$=INKEY$:IF ZZ$="" THEN RETURN
4025  ZZ$=INKEY$:IF ZZ$<>"" THEN GOTO 4025
4030  ZZ$=INKEY$:IF ZZ$="" THEN GOTO 4030 ELSE RETURN
4040  RETURN
4050 RETURN
4060 RETURN
5000 ' **** SANYO MBC-550 SERIES *****
5010 WINDOW (0,0)-(640,455)
5020 VIEW (0,0)-(639,199)
5030 'CLS
5040 '----- MARK ----------
5050 RESTORE 5640
5060 XB=0: YB=0
5070 FOR I=1 TO 11:GOSUB 4020:GOSUB 5510: NEXT
5080 GOSUB 5360
5090 '----- MBC-5 -------
5100 '
5110 RESTORE 5850
5120 YB=170
5130 FOR I=1 TO 7:GOSUB 4020:GOSUB 5510: NEXT
5140 '----- 50 ------------
5150 RESTORE 5980
5160 XB=70
5170 FOR I=1 TO 3:GOSUB 4020:GOSUB 5510: NEXT
5220 GOSUB 5410
5230 '--------------------
5240 '
5250 RESTORE 6060
5260 XB=400: YB=290
5270 FOR I=1 TO 6:GOSUB 4020:GOSUB 5510: NEXT
5280 RESTORE 6090
5290 XB=485
5300 FOR I=1 TO 2:GOSUB 4020:GOSUB 5510: NEXT
5310 RESTORE 6060
5320 XB=553:GOSUB 4020: GOSUB 5510
5330 GOSUB 5460
5340 FOR I=1 TO 1000:NEXT :      RETURN
5350 '----------------------
5360 C1=PSET
5370 RESTORE 6180
5380 XB=0:YB=0
5390 FOR I=1 TO 9: GOSUB 5590: NEXT
5400 RETURN
5410 C1=PSET
5420 RESTORE 6200
5430 XB=0: YB=170
5440 FOR I=1 TO 7: GOSUB 5590: NEXT
5450 RETURN
5460 C1=PSET
5470 RESTORE 6210
5480 XB=400: YB=290
5490 FOR I=1 TO 7: GOSUB 5590: NEXT
5500 RETURN
5510 'SUBROUTINES
5520 '
5530 READ X1,Y1,X2,Y2
5540 LINE (X1+XB,Y1+YB)-(X2+XB,Y2+YB)
5550 READ X: IF X=0 THEN RETURN
5560 READ Y
5570 LINE -(X+XB,Y+YB)
5580 GOTO 5550
5590 '----------------------------
5600 READ X,Y
5610 PAINT (X+XB,Y+YB),C1
5620 RETURN
5630 ' WORLD MARK =
5640 DATA 152,72,151,70,146,65,142,62,140,61,138,60,134,59,129,58,125,58,120,59,          116,60,114,61,112,62,108,65,103,70,102,72,127,64,152,72,0
5650 DATA 127,68,       99,77,98,79,97,83,96,89,96,93,97,97,127,73,158,97,                159,93,159,89,158,83,157,79,156,77,148,75,127,68,0
5660 DATA 127,77,98,100,99,102,100,104,101,106,102,108,108,114,110,115,113,116,           127,83,141,116,144,115,146,114,152,108,153,106,154,104,155,102,                 156,100,127,77,0
5670 DATA 127,91,116,118,120,119,125,120,129,120,134,119,138,118,127,91,0
5680 ' S 
5690 DATA 246,67,201,67,196,68,193,69,190,70,188,71,185,74,184,76,183,79,183,80,          184,83,185,85,187,88,196,92,204,94,210,95,220,96,225,96,227,98,                 227,100,225,102,215,104,206,104,201,103,195,101,183,95,183,105
5700 DATA 194,110,203,112,212,113,219,113,227,112,235,110,243,106,246,103,                248,100,249,97,249,94,248,91,247,89,243,85,241,84,238,83,233,82,                223,81,214,80,209,79,207,79,205,77,205,76,207,74,215,73,223,73,229,74
5710 DATA 233,75,236,76,240,78,246,67,0
5720 ' A =
5730 DATA 307,67,279,67,256,111,274,111,271,108,274,101,299,101,304,111,323,111,          303,72,307,67,0
5740 DATA 287,76,277,94,296,94,287,76,0
5750 ' N 
5760 DATA 395,67,379,67,379,95,360,67,335,67,335,111,350,111,347,104,347,77,              370,111,391,111,391,73,395,67,0
5770 ' Y 5780 DATA 433,67,404,67,430,93,430,111,449,111,449,93,475,67,457,67,441,83,               430,72,433,67,0
5790 ' O 
5800 DATA 538,67,503,67,497,68,494,69,487,73,482,78,479,84,478,87,478,92,                 479,95,480,98,481,100,488,107,492,109,501,112,506,113,520,113,525,112
5810 DATA 534,109,538,107,543,102,545,98,546,95,547,91,547,88,546,85,543,79,              540,75,535,72,538,67,0
5820 DATA 517,76,507,76,504,77,502,78,497,83,496,85,495,88,495,92,496,95,497,97,          501,101,503,102,505,103,509,104,515,104,518,103,521,102,523,101
5830 DATA 527,97,528,95,529,92,529,88,528,85,527,83,522,78,520,77,517,76,0
5840 ' M =
5850 DATA 127,3,105,3,87,75,69,3,47,3,47,100,60,100,60,18,81,100,93,100,113,18,           113,100,127,100,127,3,0
5860 ' B 
5870 DATA 181,3,143,3,143,100,180,100,184,99,188,97,193,92,194,90,195,87,                 196,84,196,66,195,62,193,58,187,52,184,51,179,50,182,49,186,47
5880 DATA 190,43,191,41,193,37,194,33,194,17,193,14,190,8,187,6,181,3,0
5890 DATA 171,12,156,12,156,45,171,45,174,44,176,43,179,40,180,38,181,35,                 181,22,180,19,179,17,176,14,174,13,171,12,0
5900 DATA 175,55,156,55,156,90,174,90,177,89,182,84,183,82,184,79,184,66,                 183,63,182,60,178,56,175,55,0
5910 ' C 
5920 DATA 263,30,263,21,262,17,261,14,260,12,253,5,247,2,241,1,228,1,224,2,               220,4,214,10,212,14,211,16,210,20,210,82,211,85,214,91,220,96
5930 DATA 226,100,245,100,251,98,253,97,260,90,261,88,262,85,263,81,263,70,               250,70,250,80,249,82,245,86,241,88,232,88,228,86,224,82,223,80
5940 DATA 222,77,222,25,223,22,224,20,225,18,227,15,230,14,233,13,239,13,                 242,14,244,15,248,18,250,23,250,30,263,30,0
5950 ' - 
5960 DATA 315,45,276,45,276,59,315,59,315,45,0
5970 ' 5 
5980 DATA 376,3,332,3,332,59,344,59,345,54,347,51,350,48,352,47,355,46,359,46,            363,48,367,52,369,56,369,78,367,82,364,85,358,88,354,88,350,86
5990 DATA 346,82,345,80,344,77,344,75,332,75,332,81,333,85,335,89,342,96,                 348,99,351,100,360,100,365,99,368,98,370,97,372,96,378,90,381,84
6000 DATA 382,80,382,53,381,49,379,45,372,38,368,36,365,35,361,34,354,35,                 348,38,345,41,345,15,376,15,376,3,0
6010 ' 0 
6020 DATA 434,1,417,1,411,3,407,5,402,10,400,14,398,20,398,81,400,87,402,91,              407,96,411,98,417,100,434,100,440,98,444,96,449,91,451,87,453,81
6030 DATA 453,20,451,14,449,10,444,5,440,3,434,1,0
6040 DATA 431,14,420,14,416,16,412,20,410,24,410,76,412,81,416,85,420,87,                 431,87,435,85,439,81,441,76,441,24,439,20,435,16,431,14,0
6050 ' S =
6060 DATA 35,14,34,13,32,12,29,11,22,11,19,12,17,13,13,17,12,19,11,22,11,25,              12,28,15,31,23,35,24,36,25,38,25,42,24,45,22,46,21,47,17,48,16,48,              13,47,11,46,9,45,5,49,6,51,9,52,13,53,18,52,22,51,25,49,28,45,30,41,            30,37
6070 DATA 29,34,24,30,21,28,19,27,17,25,16,23,16,20,17,18,21,15,26,15,28,16,              31,19,35,15,0
6080 ' E 
6090 DATA 73,30,74,27,74,22,73,18,72,16,69,13,67,12,63,11,54,11,51,12,47,14,42,           19,40,23,37,31,37,36,38,40,40,44,45,49,47,50,49,51,52,52,58,52
6100 DATA 64,51,66,50,68,49,69,43,65,46,63,47,60,48,57,48,53,47,49,45,45,42,              44,40,43,36,43,30,73,30,0
6110 DATA 67,28,68,25,68,21,66,17,64,16,62,15,54,15,51,16,48,18,46,22,44,26,              44,28,67,28,0
6120 ' R 6130 DATA 101,12,95,13,93,14,91,16,89,20,88,21,87,21,89,14,83,14,77,52,83,52,             86,32,87,30,90,24,91,22,94,19,97,19,100,20,101,12,0
6140 ' I =
6150 DATA 117,1,115,1,112,4,112,6,115,9,117,9,120,6,120,4,117,1,0
6160 DATA 117,14,111,14,104,52,110,52,117,14,0
6170 ' PAINT START POINT 
6180 DATA 115,65,105,80,110,100,127,110: '==MARK
6190 DATA 220,87,300,85,360,82,440,95,487,90: '==SANYO
6200 DATA 50,10,150,10,220,10,280,50,340,10,420,10,490,10: '==MBC-5000=
6210 DATA 14,23,40,35,84,24,115,5,112,15,123,35,167,23: '==SERIES
6220 '
....220,10,280,50,340,10,420,10,490,10: '==MBC-5000=
6210 D