;; **************************************************************** ;; * * ;; * SIN.ASM : Sin OBJ File for quick index lookup of trig fnctns * ;; * Copyright (C) 1992 by Primor * ;; * * ;; **************************************************************** .code ;; ;; PROCEDURE: ll_sin() ;; PURPOSE : Allow for fast table indexing of SIN Values. ;; PASS : Integer value between +/-360. ;; RETURNS : (char)sin(degree angle) ;; ll_sin proc push bp ; Save the BP Value mov bp,sp ; Set up BP for argument passing push ds ; Save the Data Segment mov ax,@data ; Set Data Segment to our Data mov ds,ax ; : mov bx,[bp+MM] ; Get the SIN index and bx,0000000111111111b ; : and place it within (0 to 1023) @@: cmp bx,360 ; : jl lls_1 ; : sub bx,360 ; : jmp @B ; : lls_1: xor ah,ah ; Set the return value to the add bx,offset SIN ; : SIN value stored in our table mov al,[bx] ; : for requested data. pop ds ; Restore Data Segment pop bp ; Restore Base Pointer ret ; Return to caller ll_sin endp ;; ;; PROCEDURE: ll_cos() ;; PURPOSE : Allow for fast table indexing of COS Values. ;; PASS : Integer value between +/-32767. ;; RETURNS : (uchar)(cos((passed_integer*6.2831853)/1024)*0x7f)+128 ;; ll_cos proc push bp ; Save the BP Value mov bp,sp ; Set up BP for argument passing push ds ; Save the Data Segment mov ax,@data ; Set Data Segment to our Data mov ds,ax ; : mov bx,[bp+MM] ; Get the COS index and bx,0000000111111111b ; : and place it within (0 to 360) @@: cmp bx,360 ; : jl llc_1 ; : sub bx,360 ; : jmp @B ; : llc_1: xor ah,ah ; Set the return value to the add bx,offset COS ; : COS value stored in our table mov al,[bx] ; : for requested data. pop ds ; Restore Data Segment pop bp ; Restore Base Pointer ret ; Return to caller ll_cos endp .data ;; ;; SIN Data : Values range from -128 to +127 360 intervals. ;; SIN db 0, 2, 4, 6, 8, 11, 13, 17 db 17, 19, 22, 24, 26, 28, 30, 35 db 35, 37, 39, 41, 43, 45, 47, 51 db 51, 53, 55, 57, 59, 61, 63, 67 db 67, 69, 71, 72, 74, 76, 78, 81 db 81, 83, 84, 86, 88, 89, 91, 94 db 94, 95, 97, 98, 100, 101, 102, 105 db 105, 106, 107, 108, 109, 111, 112, 114 db 114, 115, 116, 116, 117, 118, 119, 120 db 120, 121, 122, 122, 123, 123, 124, 125 db 125, 125, 125, 126, 126, 126, 126, 126 db 126, 126, 127, 126, 126, 126, 126, 126 db 126, 126, 125, 125, 125, 124, 124, 123 db 123, 122, 122, 121, 120, 120, 119, 117 db 117, 116, 116, 115, 114, 113, 112, 109 db 109, 108, 107, 106, 105, 104, 102, 100 db 100, 98, 97, 95, 94, 92, 91, 88 db 88, 86, 84, 83, 81, 79, 78, 74 db 74, 72, 71, 69, 67, 65, 63, 59 db 59, 57, 55, 53, 51, 49, 47, 43 db 43, 41, 39, 37, 35, 32, 30, 26 db 26, 24, 22, 19, 17, 15, 13, 8 db 8, 6, 4, 2, 0, -2, -4, -8 db -8, -11, -13, -15, -17, -19, -22, -26 db -26, -28, -30, -32, -35, -37, -39, -43 db -43, -45, -47, -49, -51, -53, -55, -59 db -59, -61, -63, -65, -67, -69, -71, -74 db -74, -76, -78, -79, -81, -83, -84, -88 db -88, -89, -91, -92, -94, -95, -97,-100 db -100,-101,-102,-104,-105,-106,-107,-109 db -109,-111,-112,-113,-114,-115,-116,-117 db -117,-118,-119,-120,-120,-121,-122,-123 db -123,-123,-124,-124,-125,-125,-125,-126 db -126,-126,-126,-126,-126,-126,-127,-126 db -126,-126,-126,-126,-126,-126,-125,-125 db -125,-124,-124,-123,-123,-122,-122,-120 db -120,-120,-119,-118,-117,-116,-116,-114 db -114,-113,-112,-111,-109,-108,-107,-105 db -105,-104,-102,-101,-100, -98, -97, -94 db -94, -92, -91, -89, -88, -86, -84, -81 db -81, -79, -78, -76, -74, -72, -71, -67 db -67, -65, -63, -61, -59, -57, -55, -51 db -51, -49, -47, -45, -43, -41, -39, -35 db -35, -32, -30, -28, -26, -24, -22, -17 db -17, -15, -13, -11, -8, -6, -4, 0 ;; ;; COS Data : Values range from -128 to +127 with 360 intervals. ;; COS db 127, 126, 126, 126, 126, 126, 126, 125 db 125, 125, 125, 124, 124, 123, 123, 122 db 122, 121, 120, 120, 119, 118, 117, 116 db 116, 115, 114, 113, 112, 111, 109, 107 db 107, 106, 105, 104, 102, 101, 100, 97 db 97, 95, 94, 92, 91, 89, 88, 84 db 84, 83, 81, 79, 78, 76, 74, 71 db 71, 69, 67, 65, 63, 61, 59, 55 db 55, 53, 51, 49, 47, 45, 43, 39 db 39, 37, 35, 32, 30, 28, 26, 22 db 22, 19, 17, 15, 13, 11, 8, 4 db 4, 2, 0, -2, -4, -6, -8, -13 db -13, -15, -17, -19, -22, -24, -26, -30 db -30, -32, -35, -37, -39, -41, -43, -47 db -47, -49, -51, -53, -55, -57, -59, -63 db -63, -65, -67, -69, -71, -72, -74, -78 db -78, -79, -81, -83, -84, -86, -88, -91 db -91, -92, -94, -95, -97, -98,-100,-102 db -102,-104,-105,-106,-107,-108,-109,-112 db -112,-113,-114,-115,-116,-116,-117,-119 db -119,-120,-120,-121,-122,-122,-123,-124 db -124,-124,-125,-125,-125,-126,-126,-126 db -126,-126,-126,-126,-127,-126,-126,-126 db -126,-126,-126,-126,-125,-125,-125,-124 db -124,-123,-123,-122,-122,-121,-120,-119 db -119,-118,-117,-116,-116,-115,-114,-112 db -112,-111,-109,-108,-107,-106,-105,-102 db -102,-101,-100, -98, -97, -95, -94, -91 db -91, -89, -88, -86, -84, -83, -81, -78 db -78, -76, -74, -72, -71, -69, -67, -63 db -63, -61, -59, -57, -55, -53, -51, -47 db -47, -45, -43, -41, -39, -37, -35, -30 db -30, -28, -26, -24, -22, -19, -17, -13 db -13, -11, -8, -6, -4, -2, 0, 4 db 4, 6, 8, 11, 13, 15, 17, 22 db 22, 24, 26, 28, 30, 32, 35, 39 db 39, 41, 43, 45, 47, 49, 51, 55 db 55, 57, 59, 61, 63, 65, 67, 71 db 71, 72, 74, 76, 78, 79, 81, 84 db 84, 86, 88, 89, 91, 92, 94, 97 db 97, 98, 100, 101, 102, 104, 105, 107 db 107, 108, 109, 111, 112, 113, 114, 116 db 116, 116, 117, 118, 119, 120, 120, 122 db 122, 122, 123, 123, 124, 124, 125, 125 db 125, 126, 126, 126, 126, 126, 126, 127