|
| 1 | +'********** VLong.Bas demos three math functions and eight byte packing |
| 2 | + |
| 3 | +'Copyright (c) 1988 Paul Passarelli |
| 4 | +'Copyright (c) 1988 Crescent Software |
| 5 | + |
| 6 | + |
| 7 | +DEFINT A-Z |
| 8 | +DECLARE SUB VLAdd (Addend1#, Addend2#, Sum#, ErrFlag%) |
| 9 | +DECLARE SUB VLSub (Minuend#, Subtrahend#, Difference#, ErrFlag%) |
| 10 | +DECLARE SUB VLMul (Multiplicand#, Multiplier#, Product#, ErrFlagg%) |
| 11 | +DECLARE SUB VLPack (Number$, Value#, ErrFlag%) |
| 12 | +DECLARE SUB VLUnpack (Value#, Number$, ErrFlag%) |
| 13 | +DECLARE FUNCTION StripZ$ (X$) 'strips leading zeros for the demo |
| 14 | + |
| 15 | + |
| 16 | +CLS |
| 17 | +LINE INPUT "Enter a big number (up to 19 digits): ", Num1$ |
| 18 | +LINE INPUT " Enter another big number: ", Num2$ |
| 19 | +PRINT |
| 20 | + |
| 21 | +VLPack Num1$, Num1#, ErrFlag |
| 22 | +IF ErrFlag% GOTO ErrHandler |
| 23 | + |
| 24 | +VLPack Num2$, Num2#, ErrFlag |
| 25 | +IF ErrFlag% GOTO ErrHandler |
| 26 | + |
| 27 | +VLAdd Num1#, Num2#, Sum#, ErrFlag |
| 28 | +UPSum$ = SPACE$(20) |
| 29 | +VLUnpack Sum#, UPSum$, ErrFlag% |
| 30 | +IF ErrFlag% GOTO ErrHandler |
| 31 | + |
| 32 | +PRINT Num1$; " + "; Num2$; " = "; StripZ$(UPSum$) |
| 33 | + |
| 34 | +VLSub Num1#, Num2#, Sum#, ErrFlag |
| 35 | +UPSum$ = SPACE$(20) |
| 36 | +VLUnpack Sum#, UPSum$, ErrFlag% |
| 37 | +IF ErrFlag% GOTO ErrHandler |
| 38 | + |
| 39 | +PRINT Num1$; " - "; Num2$; " = "; StripZ$(UPSum$) |
| 40 | + |
| 41 | +PRINT |
| 42 | +VLPack "2", Num3#, ErrFlag |
| 43 | +VLMul Num1#, Num3#, Prod#, ErrFlag |
| 44 | +IF ErrFlag% GOTO ErrHandler |
| 45 | +VLUnpack Prod#, UPSum$, ErrFlag% |
| 46 | +PRINT Num1$; " * 2 = "; StripZ$(UPSum$) |
| 47 | + |
| 48 | +VLPack "3", Num3#, ErrFlag |
| 49 | +VLMul Num1#, Num3#, Prod#, ErrFlag |
| 50 | +IF ErrFlag% GOTO ErrHandler |
| 51 | +VLUnpack Prod#, UPSum$, ErrFlag% |
| 52 | +PRINT Num1$; " * 3 = "; StripZ$(UPSum$) |
| 53 | + |
| 54 | +END |
| 55 | + |
| 56 | +ErrHandler: |
| 57 | +PRINT "Error - press any key "; |
| 58 | + |
| 59 | +FUNCTION StripZ$ (X$) |
| 60 | + FOR X = 2 TO LEN(X$) |
| 61 | + IF MID$(X$, X, 1) <> "0" THEN |
| 62 | + StripZ$ = LEFT$(X$, 1) + MID$(X$, X) |
| 63 | + EXIT FUNCTION |
| 64 | + END IF |
| 65 | + NEXT |
| 66 | +END FUNCTION |
| 67 | + |
0 commit comments