	title 'sqrt'
;
; argument is passed in ax
; sqrt value is returned in ax
;  integer value returned is sqrt(1-(x/1024)^2)*4096

_MODEL	equ	<SMALL>
include c:\sa\model.inc

	public	sqrt
.dataseg
sqrttbl dw	4096
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4095
	dw	4094
	dw	4094
	dw	4094
	dw	4094
	dw	4094
	dw	4094
	dw	4094
	dw	4094
	dw	4094
	dw	4093
	dw	4093
	dw	4093
	dw	4093
	dw	4093
	dw	4093
	dw	4093
	dw	4093
	dw	4092
	dw	4092
	dw	4092
	dw	4092
	dw	4092
	dw	4092
	dw	4091
	dw	4091
	dw	4091
	dw	4091
	dw	4091
	dw	4090
	dw	4090
	dw	4090
	dw	4090
	dw	4090
	dw	4089
	dw	4089
	dw	4089
	dw	4089
	dw	4088
	dw	4088
	dw	4088
	dw	4088
	dw	4087
	dw	4087
	dw	4087
	dw	4087
	dw	4086
	dw	4086
	dw	4086
	dw	4086
	dw	4085
	dw	4085
	dw	4085
	dw	4084
	dw	4084
	dw	4084
	dw	4084
	dw	4083
	dw	4083
	dw	4083
	dw	4082
	dw	4082
	dw	4082
	dw	4081
	dw	4081
	dw	4081
	dw	4080
	dw	4080
	dw	4080
	dw	4079
	dw	4079
	dw	4079
	dw	4078
	dw	4078
	dw	4077
	dw	4077
	dw	4077
	dw	4076
	dw	4076
	dw	4076
	dw	4075
	dw	4075
	dw	4074
	dw	4074
	dw	4073
	dw	4073
	dw	4073
	dw	4072
	dw	4072
	dw	4071
	dw	4071
	dw	4070
	dw	4070
	dw	4070
	dw	4069
	dw	4069
	dw	4068
	dw	4068
	dw	4067
	dw	4067
	dw	4066
	dw	4066
	dw	4065
	dw	4065
	dw	4064
	dw	4064
	dw	4063
	dw	4063
	dw	4062
	dw	4062
	dw	4061
	dw	4061
	dw	4060
	dw	4060
	dw	4059
	dw	4059
	dw	4058
	dw	4058
	dw	4057
	dw	4056
	dw	4056
	dw	4055
	dw	4055
	dw	4054
	dw	4054
	dw	4053
	dw	4052
	dw	4052
	dw	4051
	dw	4051
	dw	4050
	dw	4050
	dw	4049
	dw	4048
	dw	4048
	dw	4047
	dw	4046
	dw	4046
	dw	4045
	dw	4045
	dw	4044
	dw	4043
	dw	4043
	dw	4042
	dw	4041
	dw	4041
	dw	4040
	dw	4039
	dw	4039
	dw	4038
	dw	4037
	dw	4037
	dw	4036
	dw	4035
	dw	4035
	dw	4034
	dw	4033
	dw	4032
	dw	4032
	dw	4031
	dw	4030
	dw	4030
	dw	4029
	dw	4028
	dw	4027
	dw	4027
	dw	4026
	dw	4025
	dw	4024
	dw	4024
	dw	4023
	dw	4022
	dw	4021
	dw	4021
	dw	4020
	dw	4019
	dw	4018
	dw	4017
	dw	4017
	dw	4016
	dw	4015
	dw	4014
	dw	4013
	dw	4013
	dw	4012
	dw	4011
	dw	4010
	dw	4009
	dw	4008
	dw	4008
	dw	4007
	dw	4006
	dw	4005
	dw	4004
	dw	4003
	dw	4002
	dw	4002
	dw	4001
	dw	4000
	dw	3999
	dw	3998
	dw	3997
	dw	3996
	dw	3995
	dw	3994
	dw	3994
	dw	3993
	dw	3992
	dw	3991
	dw	3990
	dw	3989
	dw	3988
	dw	3987
	dw	3986
	dw	3985
	dw	3984
	dw	3983
	dw	3982
	dw	3981
	dw	3980
	dw	3979
	dw	3978
	dw	3978
	dw	3977
	dw	3976
	dw	3975
	dw	3974
	dw	3973
	dw	3972
	dw	3971
	dw	3970
	dw	3969
	dw	3967
	dw	3966
	dw	3965
	dw	3964
	dw	3963
	dw	3962
	dw	3961
	dw	3960
	dw	3959
	dw	3958
	dw	3957
	dw	3956
	dw	3955
	dw	3954
	dw	3953
	dw	3952
	dw	3951
	dw	3949
	dw	3948
	dw	3947
	dw	3946
	dw	3945
	dw	3944
	dw	3943
	dw	3942
	dw	3941
	dw	3939
	dw	3938
	dw	3937
	dw	3936
	dw	3935
	dw	3934
	dw	3932
	dw	3931
	dw	3930
	dw	3929
	dw	3928
	dw	3927
	dw	3925
	dw	3924
	dw	3923
	dw	3922
	dw	3921
	dw	3919
	dw	3918
	dw	3917
	dw	3916
	dw	3915
	dw	3913
	dw	3912
	dw	3911
	dw	3910
	dw	3908
	dw	3907
	dw	3906
	dw	3905
	dw	3903
	dw	3902
	dw	3901
	dw	3899
	dw	3898
	dw	3897
	dw	3896
	dw	3894
	dw	3893
	dw	3892
	dw	3890
	dw	3889
	dw	3888
	dw	3886
	dw	3885
	dw	3884
	dw	3882
	dw	3881
	dw	3880
	dw	3878
	dw	3877
	dw	3876
	dw	3874
	dw	3873
	dw	3871
	dw	3870
	dw	3869
	dw	3867
	dw	3866
	dw	3865
	dw	3863
	dw	3862
	dw	3860
	dw	3859
	dw	3857
	dw	3856
	dw	3855
	dw	3853
	dw	3852
	dw	3850
	dw	3849
	dw	3847
	dw	3846
	dw	3844
	dw	3843
	dw	3841
	dw	3840
	dw	3839
	dw	3837
	dw	3836
	dw	3834
	dw	3833
	dw	3831
	dw	3830
	dw	3828
	dw	3826
	dw	3825
	dw	3823
	dw	3822
	dw	3820
	dw	3819
	dw	3817
	dw	3816
	dw	3814
	dw	3813
	dw	3811
	dw	3809
	dw	3808
	dw	3806
	dw	3805
	dw	3803
	dw	3801
	dw	3800
	dw	3798
	dw	3797
	dw	3795
	dw	3793
	dw	3792
	dw	3790
	dw	3788
	dw	3787
	dw	3785
	dw	3783
	dw	3782
	dw	3780
	dw	3778
	dw	3777
	dw	3775
	dw	3773
	dw	3772
	dw	3770
	dw	3768
	dw	3767
	dw	3765
	dw	3763
	dw	3762
	dw	3760
	dw	3758
	dw	3756
	dw	3755
	dw	3753
	dw	3751
	dw	3749
	dw	3748
	dw	3746
	dw	3744
	dw	3742
	dw	3740
	dw	3739
	dw	3737
	dw	3735
	dw	3733
	dw	3732
	dw	3730
	dw	3728
	dw	3726
	dw	3724
	dw	3722
	dw	3721
	dw	3719
	dw	3717
	dw	3715
	dw	3713
	dw	3711
	dw	3709
	dw	3708
	dw	3706
	dw	3704
	dw	3702
	dw	3700
	dw	3698
	dw	3696
	dw	3694
	dw	3692
	dw	3690
	dw	3689
	dw	3687
	dw	3685
	dw	3683
	dw	3681
	dw	3679
	dw	3677
	dw	3675
	dw	3673
	dw	3671
	dw	3669
	dw	3667
	dw	3665
	dw	3663
	dw	3661
	dw	3659
	dw	3657
	dw	3655
	dw	3653
	dw	3651
	dw	3649
	dw	3647
	dw	3645
	dw	3643
	dw	3641
	dw	3639
	dw	3636
	dw	3634
	dw	3632
	dw	3630
	dw	3628
	dw	3626
	dw	3624
	dw	3622
	dw	3620
	dw	3618
	dw	3615
	dw	3613
	dw	3611
	dw	3609
	dw	3607
	dw	3605
	dw	3603
	dw	3600
	dw	3598
	dw	3596
	dw	3594
	dw	3592
	dw	3590
	dw	3587
	dw	3585
	dw	3583
	dw	3581
	dw	3578
	dw	3576
	dw	3574
	dw	3572
	dw	3570
	dw	3567
	dw	3565
	dw	3563
	dw	3560
	dw	3558
	dw	3556
	dw	3554
	dw	3551
	dw	3549
	dw	3547
	dw	3544
	dw	3542
	dw	3540
	dw	3537
	dw	3535
	dw	3533
	dw	3530
	dw	3528
	dw	3526
	dw	3523
	dw	3521
	dw	3519
	dw	3516
	dw	3514
	dw	3511
	dw	3509
	dw	3507
	dw	3504
	dw	3502
	dw	3499
	dw	3497
	dw	3494
	dw	3492
	dw	3490
	dw	3487
	dw	3485
	dw	3482
	dw	3480
	dw	3477
	dw	3475
	dw	3472
	dw	3470
	dw	3467
	dw	3465
	dw	3462
	dw	3460
	dw	3457
	dw	3455
	dw	3452
	dw	3449
	dw	3447
	dw	3444
	dw	3442
	dw	3439
	dw	3437
	dw	3434
	dw	3431
	dw	3429
	dw	3426
	dw	3423
	dw	3421
	dw	3418
	dw	3416
	dw	3413
	dw	3410
	dw	3408
	dw	3405
	dw	3402
	dw	3400
	dw	3397
	dw	3394
	dw	3391
	dw	3389
	dw	3386
	dw	3383
	dw	3381
	dw	3378
	dw	3375
	dw	3372
	dw	3370
	dw	3367
	dw	3364
	dw	3361
	dw	3358
	dw	3356
	dw	3353
	dw	3350
	dw	3347
	dw	3344
	dw	3342
	dw	3339
	dw	3336
	dw	3333
	dw	3330
	dw	3327
	dw	3324
	dw	3322
	dw	3319
	dw	3316
	dw	3313
	dw	3310
	dw	3307
	dw	3304
	dw	3301
	dw	3298
	dw	3295
	dw	3292
	dw	3289
	dw	3286
	dw	3283
	dw	3280
	dw	3277
	dw	3274
	dw	3271
	dw	3268
	dw	3265
	dw	3262
	dw	3259
	dw	3256
	dw	3253
	dw	3250
	dw	3247
	dw	3244
	dw	3241
	dw	3238
	dw	3235
	dw	3232
	dw	3229
	dw	3225
	dw	3222
	dw	3219
	dw	3216
	dw	3213
	dw	3210
	dw	3207
	dw	3203
	dw	3200
	dw	3197
	dw	3194
	dw	3191
	dw	3187
	dw	3184
	dw	3181
	dw	3178
	dw	3174
	dw	3171
	dw	3168
	dw	3164
	dw	3161
	dw	3158
	dw	3155
	dw	3151
	dw	3148
	dw	3145
	dw	3141
	dw	3138
	dw	3135
	dw	3131
	dw	3128
	dw	3124
	dw	3121
	dw	3118
	dw	3114
	dw	3111
	dw	3107
	dw	3104
	dw	3101
	dw	3097
	dw	3094
	dw	3090
	dw	3087
	dw	3083
	dw	3080
	dw	3076
	dw	3073
	dw	3069
	dw	3066
	dw	3062
	dw	3058
	dw	3055
	dw	3051
	dw	3048
	dw	3044
	dw	3040
	dw	3037
	dw	3033
	dw	3030
	dw	3026
	dw	3022
	dw	3019
	dw	3015
	dw	3011
	dw	3008
	dw	3004
	dw	3000
	dw	2996
	dw	2993
	dw	2989
	dw	2985
	dw	2982
	dw	2978
	dw	2974
	dw	2970
	dw	2966
	dw	2963
	dw	2959
	dw	2955
	dw	2951
	dw	2947
	dw	2943
	dw	2939
	dw	2936
	dw	2932
	dw	2928
	dw	2924
	dw	2920
	dw	2916
	dw	2912
	dw	2908
	dw	2904
	dw	2900
	dw	2896
	dw	2892
	dw	2888
	dw	2884
	dw	2880
	dw	2876
	dw	2872
	dw	2868
	dw	2864
	dw	2860
	dw	2856
	dw	2851
	dw	2847
	dw	2843
	dw	2839
	dw	2835
	dw	2831
	dw	2826
	dw	2822
	dw	2818
	dw	2814
	dw	2810
	dw	2805
	dw	2801
	dw	2797
	dw	2793
	dw	2788
	dw	2784
	dw	2780
	dw	2775
	dw	2771
	dw	2767
	dw	2762
	dw	2758
	dw	2753
	dw	2749
	dw	2745
	dw	2740
	dw	2736
	dw	2731
	dw	2727
	dw	2722
	dw	2718
	dw	2713
	dw	2709
	dw	2704
	dw	2700
	dw	2695
	dw	2690
	dw	2686
	dw	2681
	dw	2677
	dw	2672
	dw	2667
	dw	2663
	dw	2658
	dw	2653
	dw	2649
	dw	2644
	dw	2639
	dw	2634
	dw	2630
	dw	2625
	dw	2620
	dw	2615
	dw	2610
	dw	2606
	dw	2601
	dw	2596
	dw	2591
	dw	2586
	dw	2581
	dw	2576
	dw	2571
	dw	2566
	dw	2561
	dw	2556
	dw	2551
	dw	2546
	dw	2541
	dw	2536
	dw	2531
	dw	2526
	dw	2521
	dw	2516
	dw	2511
	dw	2505
	dw	2500
	dw	2495
	dw	2490
	dw	2485
	dw	2479
	dw	2474
	dw	2469
	dw	2463
	dw	2458
	dw	2453
	dw	2447
	dw	2442
	dw	2437
	dw	2431
	dw	2426
	dw	2420
	dw	2415
	dw	2409
	dw	2404
	dw	2398
	dw	2393
	dw	2387
	dw	2382
	dw	2376
	dw	2370
	dw	2365
	dw	2359
	dw	2353
	dw	2348
	dw	2342
	dw	2336
	dw	2331
	dw	2325
	dw	2319
	dw	2313
	dw	2307
	dw	2301
	dw	2295
	dw	2290
	dw	2284
	dw	2278
	dw	2272
	dw	2266
	dw	2260
	dw	2254
	dw	2247
	dw	2241
	dw	2235
	dw	2229
	dw	2223
	dw	2217
	dw	2210
	dw	2204
	dw	2198
	dw	2192
	dw	2185
	dw	2179
	dw	2173
	dw	2166
	dw	2160
	dw	2153
	dw	2147
	dw	2140
	dw	2134
	dw	2127
	dw	2121
	dw	2114
	dw	2107
	dw	2101
	dw	2094
	dw	2087
	dw	2080
	dw	2074
	dw	2067
	dw	2060
	dw	2053
	dw	2046
	dw	2039
	dw	2032
	dw	2025
	dw	2018
	dw	2011
	dw	2004
	dw	1997
	dw	1990
	dw	1982
	dw	1975
	dw	1968
	dw	1961
	dw	1953
	dw	1946
	dw	1938
	dw	1931
	dw	1923
	dw	1916
	dw	1908
	dw	1901
	dw	1893
	dw	1885
	dw	1878
	dw	1870
	dw	1862
	dw	1854
	dw	1846
	dw	1838
	dw	1830
	dw	1822
	dw	1814
	dw	1806
	dw	1798
	dw	1790
	dw	1782
	dw	1773
	dw	1765
	dw	1757
	dw	1748
	dw	1740
	dw	1731
	dw	1722
	dw	1714
	dw	1705
	dw	1696
	dw	1688
	dw	1679
	dw	1670
	dw	1661
	dw	1652
	dw	1643
	dw	1633
	dw	1624
	dw	1615
	dw	1606
	dw	1596
	dw	1587
	dw	1577
	dw	1567
	dw	1558
	dw	1548
	dw	1538
	dw	1528
	dw	1518
	dw	1508
	dw	1498
	dw	1488
	dw	1478
	dw	1467
	dw	1457
	dw	1446
	dw	1436
	dw	1425
	dw	1414
	dw	1403
	dw	1392
	dw	1381
	dw	1370
	dw	1358
	dw	1347
	dw	1335
	dw	1324
	dw	1312
	dw	1300
	dw	1288
	dw	1276
	dw	1264
	dw	1251
	dw	1239
	dw	1226
	dw	1213
	dw	1200
	dw	1187
	dw	1174
	dw	1161
	dw	1147
	dw	1133
	dw	1119
	dw	1105
	dw	1091
	dw	1076
	dw	1061
	dw	1046
	dw	1031
	dw	1015
	dw	1000
	dw	984
	dw	967
	dw	951
	dw	934
	dw	917
	dw	899
	dw	881
	dw	863
	dw	844
	dw	825
	dw	805
	dw	785
	dw	764
	dw	743
	dw	721
	dw	698
	dw	674
	dw	650
	dw	625
	dw	598
	dw	571
	dw	541
	dw	510
	dw	478
	dw	442
	dw	404
	dw	361
	dw	313
	dw	255
	dw	180
.ends

.codeseg
	assume cs:@codeseg,ds:@dataseg

.proc	sqrt	auto
	mov	si,offset	@dataseg:sqrttbl
	or	ax,ax		; make a few checks
	cmp	ax,1024		;
	jns	sqrte
	shl	ax,1
	add	si,ax
	mov	ax,[si]		; pick up table entry
	clc			; set no error flag
	ret
sqrte:	xor	ax,ax		; return zero
	stc			; set error flag
	ret
.endp
.ends
	end
