AOH

ZXNet echo conference «code.zx»

From Kirill Frolov To All 1 July 1998

├┤!, All ! This is a continuation of what I recently wrote about AOH, only then everything was slow and wrong. But now it seems too fast :-( AN EQU 100 ; OPERATING CYCLES NUMBERS ASIN EQU 64 ; LINE SURVEYS PER CYCLE ; EVEN NUMBER!!!! D.I. LD A,AN LD (AON10+1),SP LD HL,ATNUM LD (AON9+1),HL ;PREPARATION FOR ONE OPERATION CYCLE. NUMBERS AON_0 LD SP,AONST EX AF,AF' LD HL,0 : LD DE,0 EXX LD HL,0 : LD DE,0 LD IX,0 : LD IY,0 ;CYCLES OF LINE SURVEYING AND MULTIPLICATION AON0 IN A,(#FE) JP Z,AON1 ;MULTIPLY BY 1 POP BC : ADD HL,BC : EX DE,HL POP BC : ADD HL,BC : EXX POP BC : ADD HL,BC : EX DE,HL POP BC : ADD HL,BC POP BC : ADD IX,BC POP BC : ADD IY,BC RET ;MULTIPLY BY 0 AON1 POP BC : POP BC : POP BC POP BC : POP BC : POP BC EX DE,HL : EXX : EX DE,HL LD A,1 : LD B,5 : DJNZ $ RET ;THIS IS HERE I STRONGLY DOUBT... ;IT MAY BE BETTER TO MULTIPLY NOT BY 0, BUT BY -1. ; HERE IS THE DATA IN THIS FORM: ; ;No. Reg. After ^2 ; 0 HL H=H^2+L^2 ; 1 DE L=D^2+E^2 ; 2 HL' XH=H'^2+L'^2 ; 3 DE' XL=D'^2+E'^2 ; 4 IX D=XL^2+XH^2 ; 5 IY E=YL^2+YH^2 ;SQUARE AND SUMMATION ;FOR DIFFERENT PHASES AON3 LD B,ATBLX LD C,H : LD A,(BC) : LD H,A LD C,L : LD A,(BC)ADD A,H : LD H,A LD C,D : LD A,(BC) : LD D,A LD C,E : LD A,(BC) ADD A,D : LD L,A LD C,YH : LD A,(BC) : LD E,A LD C,YL : LD A,(BC) ADD A,E : LD E,A LD C,XH : LD A,(BC) : LD D,A LD C,XL : LD A,(BC) ADD A,D : LD D,A EXX : LD B,ATBLX LD C,H : LD A,(BC) : LD H,A LD C,L : LD A,(BC) ADD A,H : LD XH,A LD C,D : LD A,(BC) : LD D,A LD C,E : LD A,(BC) ADD A,D : LD XL,A EXX ;ВЫДЕЛЕHЕ 3-Х HАИБОЛЬШИХ ЗHАЧЕHЙ ;И HОМЕРОВ ЧАСТОТ AON4 XOR A CP H : JP C,$+6 LD A,H : LD C,0 CP L : JP C,$+6 LD A,H : LD C,1 CP XH : JP C,$+6 LD A,H : LD C,2 CP XL : JP C,$+6 LD A,H : LD C,3 CP D : JP C,$+6 LD A,H : LD C,4 CP E : JP C,$+6 LD A,H : LD C,5 POP BC : LD (BC),A LD A,C POP BC : LD (BC),A RET ;ПРОВЕРКА HАЛИЧИЕ СИГHАЛА AON5 LD A,0 : LD B,A SRL A : ADD A,B AON6 CP 0 : LD A,"?" : JP NC,AON9 ;ВЫБОРКА ИЗ ТАБЛИЦЫ КОДА 2 ИЗ AON7 LD A,0 : ADD A,A LD B,A : ADD A,A ADD A,B : LD L,A AON8 LD C,0 : LD L,0 LD B,L : ADD HL,BC LD BC,AT2OF6 ADD HL,BC : LD A,(HL) AON9 LD HL,0 : LD (HL),A INC HL : LD (AON9+1),HL EX AF,AF' DEC A : JP NZ,AON_0 AON10 LD SP,0 : RETANULL DW 0 ; HIGH BYTES HERE ;CODE TABLE 2 OF 6 AT2OF6 DS 36 ;A PLACE FOR DIGITAL ATNUM ; ROARING AONDPC ;STACK PREPARATION FOR AOHA. AONDPC LD IX,AONST LD HL,FRQTBL LD A,6 AOND0 PUSH IX LD E,(HL) : INC HL LD D,(HL) : INC HL LD (AONDP1),DE LD E,(HL) : INC HL LD D,(HL) : INC HL LD (AONDP2),DE PUSH HL EX AF,AF' LD A,AND AONDP0 PUSH HL PUSH HL AONDP1 LD DE,0 ADD HL,DE LD E,H : LD D,0 LD HL,SINTBL ADD HL,DE LD C,(HL) POP DE LD E,D : LD D,0 LD HL,SINTBL ADD HL,DE LD B,(HL) BIT 7,C JR NZ,$+3 DEC B LD (IX+0),C LD (IX+1),B LD BC,14 ADD IX,BC POP HL AONDP2 LD DE,0 ADD HL,DE DEC A JP NZ,AONDP0 POP HL POP IX INC IX : INC IX EX AF,AF' DEC A JP NZ,AOND0 LD A,AND-1 ; LAST TIME LD BC,13 ; WILL BE AON3 LD DE,AON0 PUSH IX : POP HL AOND1 LD (HL),E INC HL LD (HL),D ADD HL,BC DEC A JP NZ,AOND1 EX DE,HL LD HL,AONDST LD BC,20 LDIR ;UNPACKING SQUARES TABLE LD HL,SQRTBL PUSH HL LD DE,ATBLX LD BC,128 LDIRPOP HL LD DE,ATBLX+255 LD B,128 AOND2 LDI DEC DE : DEC DE DJNZ AOND2 RET AONDST DW AON3 ; FOR PROCESSING DW ANULL,AON7+1 ; WHERE TO PLACE DW AON4 DW AON6+1,AON8+1 DW AON4; 3 TIMES DW AON5+1,ANULL DW AON5; TO CHOICE A NUMBER ;HERE IS AN INCREMENT BY ONE CYCLE ;AND 90 DEGREES. FRQTBL DW 700.0 DW 900.0 DW 1100.0 DW 1300.0 DW 1500.0 DW 1700.0 ;MOSTLY 1st PERIOD ;MAX. VALUE = 128/ASIN SINTBL DS 256; TABLE OF SINES ;INPUT: 0...127 OUTPUT 0...255 SQRTBL DS 128; TABLE OF SQUARE DS 256-$256; ADDRESS IS A MULTIPLE OF 256 ;TABLE OF SQUARES UNPACKED ;INPUT: -128..127 OUTPUT:0...255 ATBLX DS 256 ;STACK WILL BE HERE AONST DS ASIN*14+18 ; SINES AND RESTS END