home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib39b.dsk
/
DEC.FORMAT.DEMO.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
3KB
|
70 lines
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