; ; Programmodul 'XICALC' zur Aufbereitung von Daten ; fuer die anschliessende Berechnung von sin(x) / cos(x) ; ; IN reg de : Winkel x ; ; OUT var x1bog : Winkel in Bogenmass ; var x2bog : x1bog^2 ; var x4bog : x1bog^4 ; var x6bog : x1bog^6 ; var x8bog : x1bog^8 ; ; REG a,f,b,c,d,e,h,l ; extrn multi ram equ 2000h ; Festlegung des Variablenblocks x1bog equ ram ; im RAM x2bog equ x1bog + 2 x4bog equ x2bog + 2 x6bog equ x4bog + 2 x8bog equ x6bog + 2 pi2 equ 51472 ; Konstante pi2 := PI * 2^14 ld a,d ; Reduktion des Winkels x auf and 00111111b ; 0 <- x < 90 [Grad] ld d,a ld bc,pi2 ; Umrechnung von x [Grad] call multi ; in x1bog [Bogenmass] rl h ; Division :=/2^14 rl e rl d rl h rl e rl d ld (x1bog),de ; Ergebnis in x1lbog abspeichern ld b,d ; x1bog quadrieren ld c,e call multi ld (x2bog),de ; Ergebnis in x2bog abspeichern ld b,d ; x2bog quadrieren ld c,e call multi rl h ; Division :=/2^15 rl e rl d ld (x4bog),de ; Ergebnis in x4bog abspeichern call multi ; x2bog * x4bog berechnen rl h ; Division :=/2^15 rl e rl d ld (x6bog),de ; Ergebnis in x6bog abspeichern call multi ; x2bog * x6bog berechnen ld (x8bog),de ; Ergebnis in x8bog abspeichern ; alle xibog vorbereitet ret end