home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Softdisk G-S 93
/
SGDS 93.2mg
/
SDGS.93
/
SDA93
/
A
/
M.GRAPH.INPT
(
.txt
)
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS
UTF-8
Wrap
Applesoft BASIC Source Code
|
1989-05-22
|
7.3 KB
|
305 lines
|
[FC] Applesoft BASIC Program (0x0E01)
10 INVERSE
1000 REM ==========
1010 REM Data Entry
1020 REM ==========
1030 CALL BOX,3,5,38,20
1040 PRINT " Data Entry"
1050 PRINT
1060 PRINT "1. Bar"
1070 PRINT "2. Pie"
1080 PRINT "3. Line"
1090 PRINT "4. Clear data"
1100 PRINT "5. Exit"
1110 PR$ = " Press the number of your choice.": GOSUB 50000
1120 GET K$
1130 IF K$ = ES$ THEN 1200
1140 IF NOT VAL(K$) THEN GOSUB 51000: GOTO 1110
1150 M2 = VAL(K$): IF M2 >5 THEN GOSUB 51000: GOTO 1110
1160 ON M2 GOSUB 11000,12000,13000,14000
1170 IF M2 = 5 THEN 1200
1180 GOTO 1000
1200 ONERR GOTO 10000
1205 CALL BOX,11,10,18,3: PRINT " One moment...": PRINT CHR$(4)"CHAIN M.GRAPH.MAIN"
10000 CALL -3288
10010 POKE 216,0
10020 CALL BOX,5,5,30,15: PRINT : PRINT " FATAL ERROR."
10030 PRINT : PRINT " Missing a module."
10040 PRINT : PRINT " Press a key to exit."
10050 GET K$
10060 POKE 104,8: GOTO 150
11000 REM =========
11010 REM Bar Entry
11020 REM =========
11030 CALL BOX,4,7,37,18
11040 PRINT " Bar Chart"
11050 PR$ = "Fill the blanks. ESC when done.": GOSUB 50000
11060 PRINT CHR$(20)
11070 VTAB 10: HTAB 5: PRINT "Graph Title: "
11080 VTAB 12: HTAB 5: PRINT "Units: Show Avg (y/n) "
11090 VTAB 14: HTAB 5: PRINT "Max: Min: "
11100 VTAB 16: HTAB 5: PRINT "Quantity of item A: "
11110 REM bt$=bartitle:bu$=barunits:ba$=baravg:b9$=barmax:b0$=barmin:bq$(n)=barquantities
11120 BA$ = "Y"
11130 IN$ = BT$:H = 18:V = 10:IW = 19: GOSUB 52000:BT$ = IN$
11140 IF BU THEN GOSUB 11550: GOTO 11350
11150 IF K$ = ES$ THEN 11420
11160 IF IN$ = "" THEN GOSUB 51000: GOTO 11130
11170 IN$ = BU$:H = 12:V = 12:IW = 6: GOSUB 52000:BU$ = IN$
11180 IF BU THEN 11130
11190 IF K$ = ES$ THEN 11420
11200 IF IN$ = "" THEN GOSUB 51000: GOTO 11170
11210 IN$ = BA$:H = 37:V = 12:IW = 1: GOSUB 52000:BA$ = IN$
11220 IF BU THEN 11170
11230 IF K$ = ES$ THEN 11420
11240 IF IN$ = "" THEN GOSUB 51000: GOTO 11210
11250 IF IN$ < >"Y" AND IN$ < >"y" AND IN$ < >"N" AND IN$ < >"n" THEN GOSUB 51000: GOTO 11210
11260 IN$ = B9$:H = 10:V = 14:IW = 8: GOSUB 56000:B9$ = IN$
11270 IF BU THEN 11210
11280 IF K$ = ES$ THEN 11420
11290 IF IN$ = "" THEN GOSUB 51000: GOTO 11260
11300 IN$ = B0$:H = 27:V = 14:IW = 8: GOSUB 56000:B0$ = IN$
11310 IF BU THEN 11260
11320 IF K$ = ES$ THEN 11420
11330 IF IN$ = "" THEN GOSUB 51000: GOTO 11300
11340 T = 0
11350 VTAB 16: HTAB 22: PRINT CHR$(65 +T)":" SPC( 14):IN$ = BQ$(T):H = 27:V = 16:IW = 8: GOSUB 56000:BQ$(T) = IN$
11360 IF BU THEN IF NOT T THEN 11300
11370 IF BU THEN IF T THEN T = T -1: GOTO 11350
11380 IF K$ = ES$ THEN 11420
11390 IF BQ$(T) = "" THEN GOSUB 51000: GOTO 11350
11400 IF T = 12 THEN GOSUB 51000: GOTO 11130: REM to top again
11410 T = T +1: GOTO 11350
11420 CALL BOX,7,10,26,5
11430 PRINT "Do you want to use this": PRINT "same data for the": PRINT "pie and line graphs?"
11440 PR$ = " Press Y if you do. ": GOSUB 50000
11450 GET K$
11460 IF K$ < >"Y" AND K$ < >"y" THEN 11540
11470 PT$ = BT$:LT$ = BT$:LU$ = BU$:L9$ = B9$:L0$ = B0$
11480 FOR T1 = 0 TO 16
11490 PQ$(T1) = BQ$(T1):LQ$(T1) = BQ$(T1)
11500 NEXT
11510 FOR T1 = 0 TO 16
11520 IF VAL(PQ$(T1)) <0 THEN PQ$(T1) = "0"
11530 NEXT
11540 RETURN
11550 T = 12
11560 IF BQ$(T) = "" THEN T = T -1: IF T THEN 11560
11570 RETURN
12000 REM =========
12010 REM Pie Entry
12020 REM =========
12030 CALL BOX,4,7,37,18
12040 PRINT " Pie Chart"
12050 PR$ = "Fill the blanks. ESC when done.": GOSUB 50000
12060 PRINT CHR$(20)
12070 VTAB 10: HTAB 5: PRINT "Graph Title: "
12080 :
12090 :
12100 VTAB 16: HTAB 5: PRINT "Quantity of item A: "
12110 REM bt$=bartitle:bu$=barunits:ba$=baravg:b9$=barmax:b0$=barmin:bq$(n)=barquantities
12120 :
12130 IN$ = PT$:H = 18:V = 10:IW = 19: GOSUB 52000:PT$ = IN$
12140 IF BU THEN GOSUB 12630: GOTO 12350
12150 IF K$ = ES$ THEN 12430
12160 IF IN$ = "" THEN GOSUB 51000: GOTO 12130
12170 :
12180 :
12190 :
12200 :
12210 :
12220 :
12230 :
12240 :
12250 :
12260 :
12270 :
12280 :
12290 :
12300 :
12310 :
12320 :
12330 :
12340 T = 0
12350 VTAB 16: HTAB 22: PRINT CHR$(65 +T)":" SPC( 14):IN$ = PQ$(T):H = 27:V = 16:IW = 8: GOSUB 56000:PQ$(T) = IN$
12360 IF BU THEN IF NOT T THEN 12130
12370 IF BU THEN IF T THEN T = T -1: GOTO 12350
12380 IF K$ = ES$ THEN 12430
12390 IF PQ$(T) = "" THEN GOSUB 51000: GOTO 12350
12400 IF LEFT$(PQ$(T),1) = "-" THEN PQ$(T) = MID$ (PQ$(T),2): GOSUB 51000: GOTO 12350
12410 IF T = 12 THEN GOSUB 51000: GOTO 12130: REM back to top
12420 T = T +1: GOTO 12350
12430 CALL BOX,7,10,26,5
12440 PRINT "Do you want to use this": PRINT "same data for the": PRINT "bar and line graphs?"
12450 PR$ = " Press Y if you do. ": GOSUB 50000
12460 GET K$
12470 IF K$ < >"Y" AND K$ < >"y" THEN 12620
12480 BT$ = PT$:LT$ = PT$:BA$ = "Y":BU$ = " ":LU$ = " "
12490 FOR T1 = 0 TO 16
12500 BQ$(T1) = PQ$(T1):LQ$(T1) = PQ$(T1)
12510 NEXT
12520 IF LEN(B9$) THEN 12570
12530 FOR T1 = 16 TO 0 STEP -1
12540 IF VAL(BQ$(T1)) > VAL(B9$) THEN B9$ = BQ$(T1)
12550 NEXT
12560 B0$ = "0"
12570 IF LEN(L9$) THEN 12620
12580 FOR T1 = 16 TO 0 STEP -1
12590 IF VAL(LQ$(T1)) > VAL(L9$) THEN L9$ = LQ$(T1)
12600 NEXT
12610 L0$ = "0"
12620 RETURN
12630 T = 12
12640 IF PQ$(T) = "" THEN T = T -1: IF T THEN 11560
12650 RETURN
13000 REM ==========
13010 REM Line Entry
13020 REM ==========
13030 CALL BOX,4,7,37,18
13040 PRINT " Line Chart"
13050 PR$ = "Fill the blanks. ESC when done.": GOSUB 50000
13060 PRINT CHR$(20)
13070 VTAB 10: HTAB 5: PRINT "Graph Title: "
13080 VTAB 12: HTAB 5: PRINT "Units: "
13090 VTAB 14: HTAB 5: PRINT "Max: Min: "
13100 VTAB 16: HTAB 5: PRINT "Quantity of item A: "
13110 REM bt$=bartitle:bu$=barunits:ba$=baravg:b9$=barmax:b0$=barmin:bq$(n)=barquantities
13120 :
13130 IN$ = LT$:H = 18:V = 10:IW = 19: GOSUB 52000:LT$ = IN$
13140 IF BU THEN GOSUB 13550: GOTO 13350
13150 IF K$ = ES$ THEN 13420
13160 IF IN$ = "" THEN GOSUB 51000: GOTO 13130
13170 IN$ = LU$:H = 12:V = 12:IW = 6: GOSUB 52000:LU$ = IN$
13180 IF BU THEN 13130
13190 IF K$ = ES$ THEN 13420
13200 IF IN$ = "" THEN GOSUB 51000: GOTO 13170
13210 :
13220 :
13230 :
13240 :
13250 :
13260 IN$ = L9$:H = 10:V = 14:IW = 8: GOSUB 56000:L9$ = IN$
13270 IF BU THEN 13170
13280 IF K$ = ES$ THEN 13420
13290 IF IN$ = "" THEN GOSUB 51000: GOTO 13260
13300 IN$ = L0$:H = 27:V = 14:IW = 8: GOSUB 56000:L0$ = IN$
13310 IF BU THEN 13260
13320 IF K$ = ES$ THEN 13420
13330 IF IN$ = "" THEN GOSUB 51000: GOTO 13300
13340 T = 0
13350 VTAB 16: HTAB 22: PRINT CHR$(65 +T)":" SPC( 14):IN$ = LQ$(T):H = 27:V = 16:IW = 8: GOSUB 56000:LQ$(T) = IN$
13360 IF BU THEN IF NOT T THEN 13300
13370 IF BU THEN IF T THEN T = T -1: GOTO 13350
13380 IF K$ = ES$ THEN 13420
13390 IF LQ$(T) = "" THEN GOSUB 51000: GOTO 13350
13400 IF T = 12 THEN GOSUB 51000: GOTO 13130: REM back to top
13410 T = T +1: GOTO 13350
13420 CALL BOX,7,10,26,5
13430 PRINT "Do you want to use this": PRINT "same data for the": PRINT "bar and pie graphs?"
13440 PR$ = " Press Y if you do. ": GOSUB 50000
13450 GET K$
13460 IF K$ < >"Y" AND K$ < >"y" THEN 13540
13470 PT$ = LT$:BT$ = LT$:BU$ = LU$:B9$ = L9$:B0$ = L0$:BA$ = "Y"
13480 FOR T1 = 0 TO 16
13490 PQ$(T1) = LQ$(T1):BQ$(T1) = LQ$(T1)
13500 NEXT
13510 FOR T1 = 0 TO 16
13520 IF VAL(PQ$(T1)) <0 THEN PQ$(T1) = "0"
13530 NEXT
13540 RETURN
13550 T = 12
13560 IF LQ$(T) = "" THEN T = T -1: IF T THEN 11560
13570 RETURN
14000 REM ==========
14010 REM clear data
14020 REM ==========
14030 CALL BOX,4,7,37,18
14040 PRINT " Clear data"
14050 PRINT : PRINT " Press RETURN to clear": PRINT " all graph data."
14060 PRINT : PRINT " Press any other key if you": PRINT " don't want to clear data."
14070 PR$ = "Press RETURN or something else.": GOSUB 50000
14080 GET K$
14090 IF K$ < > CHR$(13) THEN 14150
14100 CALL BOX,15,15,10,3: PRINT "Clearing"
14110 BA$ = "":BT$ = "":BU$ = "":B9$ = "":B0$ = "":PT$ = "":LT$ = "":LU$ = "":L9$ = "":L0$ = ""
14120 FOR T1 = 0 TO 16
14130 BQ$(T1) = "":PQ$(T1) = "":LQ$(T1) = ""
14140 NEXT
14150 RETURN
50000 REM ==========
50010 REM Prompt Box
50020 REM ==========
50030 W = LEN(PR$) +2
50040 CALL BOX,40 -W,21,W,3
50050 PRINT PR$
50060 RETURN
51000 REM ====
51010 REM Bell
51020 REM ====
51030 CALL PEEK(121) + PEEK(122) *256 +28: REM SPEED= DEL <UNKNOWN TOKEN> SPEED= <CTRL-0x01> DEL <UNKNOWN TOKEN> SPEED= <CTRL-0x02><CTRL-0x18> HGR2 <CTRL-0x14> PLOT 0 TAB( SPEED= <CTRL-0x02> DEL <UNKNOWN TOKEN> SPEED= $<CTRL-0x18> HGR2 <CTRL-0x08> PLOT 0 TAB( NOT <UNKNOWN TOKEN> = STR$`8H RIGHT$<CTRL-0x01> = <UNKNOWN TOKEN>h RIGHT$<CTRL-0x01> = <UNKNOWN TOKEN> ONERR <UNKNOWN TOKEN> -<CTRL-0x01><UNKNOWN TOKEN> RND = VAL:`
51040 RETURN
52000 REM ==================
52010 REM Input With Default
52020 REM ==================
52030 REM pass in$:return in$:pass h,v for htab,vtab: pass iw for input width
52040 ONERR GOTO 52230
52050 BU = 0: REM default to go fwd after input
52060 BS$ = CHR$(8):ES$ = CHR$(27):CR$ = CHR$(13): VTAB V: HTAB H
52070 PRINT IN$;
52080 PRINT "_"BS$;
52090 IF PEEK(49152) <128 THEN PRINT " "BS$;: GOTO 52080
52100 GET K$
52110 IF K$ = CHR$(24) THEN IF LEN(IN$) THEN HTAB H: PRINT SPC( LEN(IN$) +1):IN$ = "": GOTO 52060
52120 IF K$ = CHR$(127) THEN K$ = BS$
52130 IF K$ = CHR$(9) OR K$ = CHR$(10) THEN K$ = CR$
52140 IF K$ = CHR$(11) THEN K$ = CR$:BU = 1: REM back up after input
52150 IF K$ = ES$ THEN 52220
52160 IF K$ = BS$ THEN IF LEN(IN$) = 1 THEN IN$ = "": PRINT " "BS$BS$;: GOTO 52080
52170 IF K$ = BS$ THEN IF LEN(IN$) THEN IN$ = LEFT$(IN$, LEN(IN$) -1): PRINT " "BS$BS$;: GOTO 52080
52180 IF K$ = CR$ THEN PRINT : GOTO 52220
52190 IF K$ > = " " THEN IF LEN(IN$) <IW THEN IN$ = IN$ +K$: PRINT K$;: GOTO 52210
52200 GOSUB 51000
52210 GOTO 52080
52220 POKE 216,0: RETURN
52230 CALL -3288: POKE 216,0: POKE 49168,0: GOTO 52040
56000 REM
56010 REM ****************************
56020 REM * *
56030 REM * NAME:NUMERIC INPUT *
56040 REM * PASS:V = VERT POSN *
56050 REM * H = HORIZ POSN *
56060 REM * IW = INPUT WIDTH *
56070 REM * IN$ = DEFAULT *
56080 REM * USES:T$,Tz,Ty,IN$,K$ *
56090 REM * RETN:IN$,K$ *
56100 REM * *
56110 REM ****************************
56120 REM
56130 ONERR GOTO 56410
56140 BU = 0
56150 VTAB V: HTAB H: PRINT IN$;:TZ = LEN(IN$)
56160 PRINT " " CHR$(8);
56170 IF PEEK(49152) <128 THEN PRINT "_" CHR$(8);: GOTO 56160
56180 GET T$
56190 IF T$ = CHR$(127) THEN T$ = CHR$(8)
56200 IF T$ = CHR$(24) THEN HTAB H: PRINT SPC( LEN(IN$) +1): HTAB H:IN$ = "": GOTO 56160
56210 IF T$ = CHR$(27) THEN 56340
56220 IF T$ = CHR$(9) OR T$ = CHR$(10) THEN T$ = CHR$(13)
56230 IF T$ = CHR$(11) THEN T$ = CHR$(13):BU = 1
56240 IF T$ = CHR$(8) THEN IF LEN(IN$) = 1 THEN IN$ = "": PRINT CHR$(8);: GOTO 56160
56250 IF T$ = CHR$(8) THEN IF LEN(IN$) THEN IN$ = LEFT$(IN$, LEN(IN$) -1): PRINT CHR$(8);: GOTO 56160
56260 IF T$ = CHR$(13) THEN PRINT : GOTO 56340
56270 IF T$ >"9" THEN 56320
56280 IF T$ <"0" THEN IF T$ < >"-" AND T$ < >"." THEN 56320
56290 IF T$ = "-" THEN IF LEN(IN$) THEN 56320
56300 IF T$ = "." THEN TZ = TZ +1: IF TZ >1 THEN GOSUB 56350
56310 IF T$ > = " " THEN IF LEN(IN$) <IW THEN IN$ = IN$ +T$: PRINT T$;: GOTO 56330
56320 GOSUB 51000
56330 GOTO 56160
56340 K$ = T$: RETURN
56350 T$ = ""
56360 FOR TY = 1 TO LEN(IN$)
56370 IF MID$ (IN$,TY,1) < >"." THEN T$ = T$ + MID$ (IN$,TY,1)
56380 NEXT
56390 IN$ = T$: HTAB H: VTAB V: PRINT IN$;:TZ = 1:T$ = "."
56400 POKE 216,0: RETURN
56410 CALL -3288: POKE 216,0: POKE 49168,0: GOTO 56130