80Bus News 
MayJune 1983, Volume 2, Issue 3 



Page 35 of 59 




The workings of NASCOM ROM BASIC Ver 4.7  PAGE 16  


LOG
MULT FPMULT
DIV
DVBCDE
TSTSGN SGN ABS STAKFP PHLTFP FPBCDE BCDEFP LOADFP FPTHL SIGNS CMPNUM FPINT INT ASCTFP NUMASC SQR
POWER
FECT
F706 F708
F767
F768
F813 F822 F838 PO44 F851 F854 FO5F FQ62 Fa6B F879 FS8E FSBB F8E6 FOIA FOBS FAAC
FABS
LOG(X) routine. Get LOG of FPREG.
Scale the number to be between O and 1.
Add SQR(1/2) to value.
Divide into SQR(2).
Subtract from 1.
Compute the sum of series using LOGTAB for coefficients. Subtract 0.5 from result.
Rescale the number and then multiply by LOG(2). Multiply FPREG by value on etack.
MULTIPLY FPREG by value in BODE.
Divide the value on stack by FPREG and leave the result in FPREG.
Divide the value in BODE by PREG and leave the result in FPREG.
Test sign of number in PPREG.
SGN(X) routine.
ABS(X) routine.
Move value in FPREG to stack.
Move value at HL to FPREG.
Move value in BCDE to FPREG.
Move FPREG to BCDE.
Move value at HL to BCDE.
Move Value in FPREG to HL.
Set sign of result depending on signs of operands. Compare numbers.
Get integer of FP value.
INT(X) routine.
Convert ASCII floating point number into binary. Convert floating point binary into ASCII.
SQR(X) routine. Uses SQR(X) = X * 0.5
Raise base BCDE to the power FPREG. Uses X*Y = EXP( Y*LoG(X) }.
The workings of NASCOM ROM BASIC Ver 4.7  PAGE 17  


EXP
FAFA
SUMSER FB5B
SUMSER1 FB6A
RND cos
SIN
TAN
ATN
WIDTH LINES DEEK DOKE SCREEN SCRADR INLINE
GETXYA
SETB RESETB POINTB
XYPOS
FBSB FCOO
FCO3
PC67
F67C
FDAS FDAD FDBC FDC? FDE6 Fett FEES
FFI5
FF40 FF55 FF79 FF96
EXP(X) routine.
Seale value to be between © and 1
Compute sum of series using EXPTAB for coefficients. Rescale number.
Sum the series using table of coefficients at HL. (C Nt * xX’2 +2) * x*2 4+ N5 ) # x2 00. 4 Nn
Sum the series using table of coefficients at HL. (CM *X+N2)*X4N5) *®X 0.04 Nn
RND(X) routine. COS(X) routine. Uses COS(X) = SIN(X+PI/2).
SIN(X) routine. Divide angle by 2*PI.
Get fraction part.
Move other quadrants around and set what result will be. Sum the series using table of coefficients at SINTAB. Adjust result.
TAN(X) routine. TAN(X) = SIN(X) / COS(X).
ATN(X) routine.
If value > 1 then get 1/value and set PI/2 – angle.
Sum the series using table of coefficients at ATNTAB. Negate result if original value was > 4.
WIDTH routine. Set terminal width but NOT commas width. LINES routine.
DEEK(X) routine.
DOKE A,V routine.
SCREEN X,Y routine.
Get screen address from row and column in DE and BC.
Get an input line from NASSYs,
Get (X,Y) for SET,RESET and POINT. Return address on screen and a bit mask.
SET(X,Y) routine. RESET(X,Y) routine.
POINT(X,Y) routine.
Convert (X,Y) to a row and column on screen,
35
This is an OCR’d version of the scanned page and likely contains recognition errors.



Page 35 of 59 



