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

  1. 10  REM   ******************************
  2. 20  REM   * FORMATTER                  *
  3. 30  REM   * BY SILVIO BALESTRINI       *
  4. 40  REM   * COPYRIGHT(C) 1990          *
  5. 50  REM   * MINDCRAFT PUBL. CORP.      *
  6. 60  REM   * CONCORD, MA 01742          *
  7. 70  REM   ******************************
  8. 80  REM PART ONE: FORMATTER DEMO
  9. 90 X1 = 21.5:X2 = 430
  10. 100  HOME 
  11. 110  PRINT  TAB( 8)"EXAMPLES USING FORMATTER"
  12. 120  PRINT  TAB( 8)"------------------------"
  13. 130  PRINT : PRINT "RUNNING TEXT:": PRINT 
  14. 140  PRINT "     THE CUBE OF ";:FX = X1:FT = 6.2: GOSUB 570
  15. 150  PRINT " IS ";:FX = FX ^3: GOSUB 570: PRINT ", AND"
  16. 160  PRINT "THAT FOR ";:FX = X2:FT = 0: GOSUB 570: PRINT " IS ";:FX = FX ^3:FT = .3: GOSUB 670: PRINT "."
  17. 170  PRINT : PRINT "CONVERSION TABLE:": PRINT 
  18. 180  PRINT "   INCHES   CENTIMETERS     MILES"
  19. 190  PRINT "   ------   -----------   ---------"
  20. 200  FOR I = 1 TO 10
  21. 210 FT = 7:FX = I: GOSUB 520
  22. 220 FT = 13.2:FX = FX *2.54: GOSUB 520
  23. 230 FT = 15.3:FX = I/12/5280: GOSUB 620: PRINT 
  24. 240  NEXT I
  25. 250  END 
  26. 260 :
  27. 270  REM  IDENTIFIERS:
  28. 280  REM   FX = VALUE TO FORMAT
  29. 290  REM   FT = FORMAT SPECIFICATION  
  30. 300  REM      DIGIT PART = FIELD LENGTH
  31. 310  REM      DECIMAL PART = DECIMAL PLACES
  32. 320  REM   TEMPORARY VARIABLES:
  33. 330  REM     T1, T2, T3, T4, T5, T6, AND T7 
  34. 340  REM  IF FT = 10.2 AND FX = 66.666,
  35. 350  REM  1.  PRINT "D = ";:GOSUB 1400 PRODUCES  
  36. 360  REM      D =      66.67
  37. 370  REM  2.  PRINT "D = ";:GOSUB 1450 PRODUCES
  38. 380  REM      D = 66.67  
  39. 390  REM  3.  PRINT "D = ";:GOSUB 1500 PRODUCES  
  40. 400  REM      D =   6.67E+01
  41. 410  REM  4.  PRINT "D = ";:GOSUB 1550 PRODUCES   
  42. 420  REM      D = 6.67E+01
  43. 430  REM  IF FT = 10.0,
  44. 440  REM      PRINT "D = ";:GOSUB 1400 PRODUCES  
  45. 450  REM      D =         67  (NO DECIMAL)    
  46. 460 :
  47. 470  REM      SAVE THE FOLLOWING
  48. 480  REM  PORTION OF THE PROGRAM
  49. 490  REM  WITH THE COMMAND:
  50. 500  REM   "SAVE FORMATTER.SET"
  51. 510 :
  52. 520  REM   FORMATTER -- DECIMAL
  53. 530  IF  ABS(FX) >5E8  THEN 630
  54. 540  GOSUB 590:T7 =  INT(FT)
  55. 550  IF T4 >T7  THEN 600
  56. 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
  57. 570  IF  ABS(FX) >5E8  THEN 670
  58. 580  GOSUB 590:T7 = T4: GOTO 560
  59. 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 
  60. 600  PRINT  LEFT$("*BAD*FIELD*BAD*FIELD",T7);: RETURN 
  61. 610 :
  62. 620  REM   FORMATTER -- EXPONENTIAL
  63. 630  GOSUB 700:T4 = T1 +5 +(T1 >0) +(FX <0): IF T4 >FT  THEN T7 = FT: GOTO 600
  64. 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
  65. 650 T5 =  INT(.43429448 * LOG( ABS(FX))):T2 = ( ABS(FX)/10 ^T5 +.5 *10 ^ -T1):T3 =  INT(T2)
  66. 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 
  67. 670  IF FX = 0  THEN  PRINT "0.0";: RETURN 
  68. 680  IF FX <0  THEN  PRINT "-";
  69. 690  GOSUB 700: GOTO 650
  70. 700 T1 =  INT((FT - INT(FT)) *10 +.5):T1 = T1 -(T1 >8) *(T1 -8): RETURN