home *** CD-ROM | disk | FTP | other *** search
- 10 REM ******************************
- 20 REM * FORMATTER *
- 30 REM * BY SILVIO BALESTRINI *
- 40 REM * COPYRIGHT(C) 1990 *
- 50 REM * MINDCRAFT PUBL. CORP. *
- 60 REM * CONCORD, MA 01742 *
- 70 REM ******************************
- 80 REM PART ONE: FORMATTER DEMO
- 90 X1 = 21.5:X2 = 430
- 100 HOME
- 110 PRINT TAB( 8)"EXAMPLES USING FORMATTER"
- 120 PRINT TAB( 8)"------------------------"
- 130 PRINT : PRINT "RUNNING TEXT:": PRINT
- 140 PRINT " THE CUBE OF ";:FX = X1:FT = 6.2: GOSUB 570
- 150 PRINT " IS ";:FX = FX ^3: GOSUB 570: PRINT ", AND"
- 160 PRINT "THAT FOR ";:FX = X2:FT = 0: GOSUB 570: PRINT " IS ";:FX = FX ^3:FT = .3: GOSUB 670: PRINT "."
- 170 PRINT : PRINT "CONVERSION TABLE:": PRINT
- 180 PRINT " INCHES CENTIMETERS MILES"
- 190 PRINT " ------ ----------- ---------"
- 200 FOR I = 1 TO 10
- 210 FT = 7:FX = I: GOSUB 520
- 220 FT = 13.2:FX = FX *2.54: GOSUB 520
- 230 FT = 15.3:FX = I/12/5280: GOSUB 620: PRINT
- 240 NEXT I
- 250 END
- 260 :
- 270 REM IDENTIFIERS:
- 280 REM FX = VALUE TO FORMAT
- 290 REM FT = FORMAT SPECIFICATION
- 300 REM DIGIT PART = FIELD LENGTH
- 310 REM DECIMAL PART = DECIMAL PLACES
- 320 REM TEMPORARY VARIABLES:
- 330 REM T1, T2, T3, T4, T5, T6, AND T7
- 340 REM IF FT = 10.2 AND FX = 66.666,
- 350 REM 1. PRINT "D = ";:GOSUB 1400 PRODUCES
- 360 REM D = 66.67
- 370 REM 2. PRINT "D = ";:GOSUB 1450 PRODUCES
- 380 REM D = 66.67
- 390 REM 3. PRINT "D = ";:GOSUB 1500 PRODUCES
- 400 REM D = 6.67E+01
- 410 REM 4. PRINT "D = ";:GOSUB 1550 PRODUCES
- 420 REM D = 6.67E+01
- 430 REM IF FT = 10.0,
- 440 REM PRINT "D = ";:GOSUB 1400 PRODUCES
- 450 REM D = 67 (NO DECIMAL)
- 460 :
- 470 REM SAVE THE FOLLOWING
- 480 REM PORTION OF THE PROGRAM
- 490 REM WITH THE COMMAND:
- 500 REM "SAVE FORMATTER.SET"
- 510 :
- 520 REM FORMATTER -- DECIMAL
- 530 IF ABS(FX) >5E8 THEN 630
- 540 GOSUB 590:T7 = INT(FT)
- 550 IF T4 >T7 THEN 600
- 560 PRINT MID$ (" -",1 +(19 -T7 +T4),T7 -(T4 -T6)) MID$ (( STR$(T3) +"."),1,(T4 -T1 -T6)) MID$ ( STR$((T2 -T3 +1) *10 ^T1),2,T1);: RETURN : REM 19 BLANKS
- 570 IF ABS(FX) >5E8 THEN 670
- 580 GOSUB 590:T7 = T4: GOTO 560
- 590 T1 = INT((FT - INT(FT)) *10 +.5):T1 = T1 -(T1 >8) *(T1 -8):T2 = ABS(FX) +.5 *10 ^ -T1:T3 = INT(T2):T6 = FX < = -5 *10 ^ -(T1 +1):T4 = 1 +(T1 >0) +T6 +T1 + INT(.4343 * LOG(T3 +.5)) *(T2 >1): RETURN
- 600 PRINT LEFT$("*BAD*FIELD*BAD*FIELD",T7);: RETURN
- 610 :
- 620 REM FORMATTER -- EXPONENTIAL
- 630 GOSUB 700:T4 = T1 +5 +(T1 >0) +(FX <0): IF T4 >FT THEN T7 = FT: GOTO 600
- 640 PRINT MID$ (" -",1 +(19 - INT(FT) +T4),FT -(T4 -(FX <0)));: IF FX = 0 THEN PRINT LEFT$("0.0 ",T1 +6);: RETURN : REM 19 & 12 BLANKS, RESP
- 650 T5 = INT(.43429448 * LOG( ABS(FX))):T2 = ( ABS(FX)/10 ^T5 +.5 *10 ^ -T1):T3 = INT(T2)
- 660 PRINT MID$ (( STR$(T3) +"."),1,(2 +T1 -(T1 = 0))) MID$ ( STR$((T2 -T3 +1) *10 ^T1),2,T1)"E" + CHR$(43 +2 *(T5 <0)) + RIGHT$("0" + STR$( ABS(T5)),2);: RETURN
- 670 IF FX = 0 THEN PRINT "0.0";: RETURN
- 680 IF FX <0 THEN PRINT "-";
- 690 GOSUB 700: GOTO 650
- 700 T1 = INT((FT - INT(FT)) *10 +.5):T1 = T1 -(T1 >8) *(T1 -8): RETURN