C_TO_STACK EQU	#2D29	;помещает число из регистра C 					;на стек калькулятора
FROM_STACK EQU	#2DD5	;снимает число со стека и 						;помещает в A

;используемые команды калькулятора:

multiply	EQU	#04		;умножение
add_		EQU	#0F		;сложение
sin		EQU	#1F		;синус
cos		EQU	#20		;косинус
stk_data	EQU	#34		;поместить число на стек
end_calc	EQU	#38		;выход из калькулятора
stk_one	EQU	#A1		;поместить единицу на стек

		LD	BC,TABL

LOOP		PUSH	BC
		CALL	C_TO_STACK

;вычисление int ((1+sin((2*Pi/255)*COUNTER))*127)

		RST	#28
		DB	stk_data 			;2*Pi/255
		DB	#EB,#49,#D9,#B4,#56
		DB	multiply
		DB	sin				;или cos
		DB	stk_one
		DB	add_
		DB	stk_data			;127
		DB	#40,#B0,#00,#7F
		DB	multiply
		DB	end_calc

		CALL	FROM_STACK
		POP	BC
		SUB	#7F
		LD	(BC),A
		INC	C
		JR	NZ,LOOP

		RET
