;
                ; Programmodul 'SINUS' zur Berechnung von sin(x)
                ; nach Vorbereitung der Daten durch Modul 'XICALC'
                ;
                ; IN	var x1bog : Winkel in Bogenmass
                ;	var x2bog : x1bog^2
                ;	var x4bog : x1bog^4
                ;	var x6bog : x1bog^6
                ;	var x8bog : x1bog^8
                ;
                ; OUT	reg de : var sx - sin(x) * 2^15
                ;
                ; REG	a,f,b,c,d,e,h,l
                ;
                
                	extrn	multi,divi
                
 2000           ram	equ	2000h		; Festlegung des Variablenblocks
 2000           x1bog	equ	ram		;   im RAM
 2002           x2bog	equ	x1bog + 2
 2004           x4bog	equ	x2bog + 2
 2006           x6bog	equ	x4bog + 2
 2008           x8bog	equ	x6bog + 2
                
 8000           fs1	equ	8000h		; Koeffizienten fsi der i-ten Glieder
 0003           fs2	equ	3
 001E           fs3	equ	2*3*5
 0276           fs4	equ	3*5*6*7
 2C4C           fs5	equ	2*3*5*6*7*9
                
 0000 ED5B0220 		ld	de,(x2bog)	; Berechnung dea 2. Gliedes
 0004 010300   		ld	bc,fs2		;   der Reihe
 0007 CD0000  		call	divi
 000A 110080   		ld	de,fs1		; erste Zwischensumme berechnen
 000D EB       		ex	de,hl		;   und Zwischenspeichern
 000E AF       		xor	a
 000F ED52     		sbc	hl,de
 0011 E5       		push	hl
                
 0012 ED5B0420 		ld	de,(x4bog)	; Berechnung des 3. Gliedes
 0016 011E00   		ld	bc,fs3
 0019 CD0000  		call	divi
                
 001C D1       		pop	de		; Zwischensumme im Stack
 001D 19       		add	hl,de		;   aktualisieren
 001E E5       		push	hl
                
 001F ED5B0620 		ld	de,(x6bog)	; Berechnung des 4. Gliedes
 0023 017602   		ld	bc,fs4
 0026 CD0000  		call	divi
                
 0029 EB       		ex	de,hl		; Zwischensumme im Stack
 002A E1       		pop	hl		;   aktualisieren
 002B AF       		xor	a
 002C ED52     		sbc	hl,de
 002E E5       		push	hl
 002F ED5B0820 		ld	de,(x8bog)	; Berechnung des 5. Gliedes
 0033 014C2C   		ld	bc,fs5
 0036 CD0000  		call	divi
 0039 D1       		pop	de		; Stack korrigieren
 003A 19       		add	hl,de		;   und Summe fertigstellen
                
 003B EB       		ex	de,hl		; Summe mit Vorfaktor multiplizieren
 003C ED4B0020 		ld	bc,(x1bog)
 0040 CD0000  		call	multi
                
 0043 CB14     		rl	h		; Division <de>:=<dehl>/2^15
 0045 CB13     		rl	e
 0047 CB12     		rl	d
                
                	; sx in reg de berechnet
                
 0049 C9       		ret
Bild 5. Das Programm SINUS
[Hier als Z80-Quelldatei]