home *** CD-ROM | disk | FTP | other *** search
- ; FFT
-
- ; SYMBOLIC NAMES FOR DATA MEMORY LOCATIONS
- ;
- XLEND: equ 0
- ONE: equ 1
- NT: equ 2
- NH: equ 3
- NQ: equ 4
- M: equ 5
- IT: equ 6
- ID: equ 7
- IR: equ 8
- IU: equ 9
- I: equ 10
- J: equ 11
- ND: equ 12
- L: equ 13
- XRQ: equ 14
- XIQ: equ 15
- XRP: equ 16
- XIP: equ 17
- COS: equ 18
- SIN: equ 19
- TEMP1: equ 20
- TEMP2: equ 21
- TEMP3: equ 22
- TEMP4: equ 23
- K: equ 24
- TABPTR: equ 25
- ALOCPTR: equ 26
- ; BLOCPTR equ 27
- DIFF: equ 28
- ;
- ;
- ; VECTORS
- ;
- ORG 0
- B RESET1 ;RESET VECTOR
- INT1: B INT1 ;INTERRUPT VECTOR
- ;
- ; POINTERS
- ;
- XLEN: DW 1024 ;ADDR OF FFT SIZE
-
- TABLE: ; SINE TABLE
- DW 00H
- DW 0C9H
- DW 0192H
- DW 025BH
- DW 0324H
- DW 03EDH
- DW 04B6H
- DW 057EH
- DW 0647H
- DW 0710H
- DW 07D9H
- DW 08A2H
- DW 096AH
- DW 0A33H
- DW 0AFBH
- DW 0BC3H
- DW 0C8BH
- DW 0D53H
- DW 0E1BH
- DW 0EE3H
- DW 0FABH
- DW 01072H
- DW 01139H
- DW 01201H
- DW 012C8H
- DW 0138EH
- DW 01455H
- DW 0151BH
- DW 015E2H
- DW 016A8H
- DW 0176DH
- DW 01833H
- DW 018F8H
- DW 019BDH
- DW 01A82H
- DW 01B47H
- DW 01C0BH
- DW 01CCFH
- DW 01D93H
- DW 01E56H
- DW 01F19H
- DW 01FDCH
- DW 0209FH
- DW 02161H
- DW 02223H
- DW 022E5H
- DW 023A6H
- DW 02467H
- DW 02528H
- DW 025E8H
- DW 026A8H
- DW 02767H
- DW 02826H
- DW 028E5H
- DW 029A3H
- DW 02A61H
- DW 02B1FH
- DW 02BDCH
- DW 02C98H
- DW 02D55H
- DW 02E11H
- DW 02ECCH
- DW 02F87H
- DW 03041H
- DW 030FBH
- DW 031B5H
- DW 0326EH
- DW 03326H
- DW 033DEH
- DW 03496H
- DW 0354DH
- DW 03604H
- DW 036BAH
- DW 0376FH
- DW 03824H
- DW 038D8H
- DW 0398CH
- DW 03A40H
- DW 03AF2H
- DW 03BA5H
- DW 03C56H
- DW 03D07H
- DW 03DB8H
- DW 03E68H
- DW 03F17H
- DW 03FC5H
- DW 04073H
- DW 04121H
- DW 041CEH
- DW 0427AH
- DW 04325H
- DW 043D0H
- DW 0447AH
- DW 04524H
- DW 045CDH
- DW 04675H
- DW 0471CH
- DW 047C3H
- DW 04869H
- DW 0490FH
- DW 049B4H
- DW 04A58H
- DW 04AFBH
- DW 04B9DH
- DW 04C3FH
- DW 04CE0H
- DW 04D81H
- DW 04E21H
- DW 04EBFH
- DW 04F5EH
- DW 04FFBH
- DW 05097H
- DW 05133H
- DW 051CEH
- DW 05269H
- DW 05302H
- DW 0539BH
- DW 05432H
- DW 054CAH
- DW 05560H
- DW 055F5H
- DW 0568AH
- DW 0571DH
- DW 057B0H
- DW 05842H
- DW 058D4H
- DW 05964H
- DW 059F3H
- DW 05A82H
- DW 05B10H
- DW 05B9DH
- DW 05C29H
- DW 05CB4H
- DW 05D3EH
- DW 05DC7H
- DW 05E4FH
- DW 05ED7H
- DW 05F5EH
- DW 05FE3H
- DW 06068H
- DW 060ECH
- DW 0616FH
- DW 061F0H
- DW 06271H
- DW 062F1H
- DW 06371H
- DW 063EFH
- DW 0646CH
- DW 064E8H
- DW 06563H
- DW 065DDH
- DW 06657H
- DW 066CFH
- DW 06746H
- DW 067BDH
- DW 06832H
- DW 068A6H
- DW 06919H
- DW 0698CH
- DW 069FDH
- DW 06A6DH
- DW 06ADCH
- DW 06B4AH
- DW 06BB8H
- DW 06C24H
- DW 06C8FH
- DW 06CF9H
- DW 06D62H
- DW 06DCAH
- DW 06E30H
- DW 06E96H
- DW 06EFBH
- DW 06F5EH
- DW 06FC1H
- DW 07023H
- DW 07083H
- DW 070E2H
- DW 07141H
- DW 0719EH
- DW 071FAH
- DW 07255H
- DW 072AFH
- DW 07307H
- DW 0735FH
- DW 073B5H
- DW 0740BH
- DW 0745FH
- DW 074B2H
- DW 07504H
- DW 07555H
- DW 075A5H
- DW 075F4H
- DW 07641H
- DW 0768EH
- DW 076D9H
- DW 07723H
- DW 0776CH
- DW 077B4H
- DW 077FAH
- DW 07840H
- DW 07884H
- DW 078C7H
- DW 07909H
- DW 0794AH
- DW 0798AH
- DW 079C8H
- DW 07A05H
- DW 07A42H
- DW 07A7DH
- DW 07AB6H
- DW 07AEFH
- DW 07B26H
- DW 07B5DH
- DW 07B92H
- DW 07BC5H
- DW 07BF8H
- DW 07C29H
- DW 07C5AH
- DW 07C89H
- DW 07CB7H
- DW 07CE3H
- DW 07D0FH
- DW 07D39H
- DW 07D62H
- DW 07D8AH
- DW 07DB0H
- DW 07DD6H
- DW 07DFAH
- DW 07E1DH
- DW 07E3FH
- DW 07E5FH
- DW 07E7FH
- DW 07E9DH
- DW 07EBAH
- DW 07ED5H
- DW 07EF0H
- DW 07F09H
- DW 07F21H
- DW 07F38H
- DW 07F4DH
- DW 07F62H
- DW 07F75H
- DW 07F87H
- DW 07F97H
- DW 07FA7H
- DW 07FB5H
- DW 07FC2H
- DW 07FCEH
- DW 07FD8H
- DW 07FE1H
- DW 07FE9H
- DW 07FF0H
- DW 07FF6H
- DW 07FFAH
- DW 07FFDH
- DW 07FFFH
- DW 07FFFH
-
- ;
- ORG 200H
- ALOC: ; REAL PART
- ;
- ORG 600H
- BLOC: ; IMAGINARY
- ORG 0A00H
- ; PROGRAM
- RESET1:
- ; LEAVE SOME ROOM HERE
- LDPK 0
- ZAC ; 73
- SACL ONE,0
- OUT ONE,7 ; tell 8088 we're starting
-
-
- LDPK 0
- LACK 1
- SACL ONE,0
- LT ONE
- MPYK XLEN
- PAC
- TBLR XLEND
- LAC XLEND,0
- SUB ONE,0
- SACL NT,0
- LAC XLEND,15
- SACH NH,0
- LAC XLEND,14
- SACH NQ,0
- ;
- ; POINTER INITIALIZATION
- LT ONE
- MPYK TABLE
- PAC
- SACL TABPTR,0 ; TABLE PTR
- MPYK ALOC
- PAC
- SACL ALOCPTR,0 ; REALS PTR
- MPYK BLOC
- PAC
- ; SACL BLOCPTR,0 ; IMAG PTR
- SUB ALOCPTR,0
- SACL DIFF,0 ; BLOC - ALOC
- ;
- ; BITREV
- ;
- ZAC
- SACL I,0
- SACL J,0
- LAB0: ZALS NT
- SUB ONE,1
- SUB I,0
- BLZ LAB03
- ZALS J
- SUB I,0
- BLEZ LAB01
- LAC ALOCPTR,0
- ADD J,0
- TBLR TEMP1
- ADD DIFF,0
- TBLR TEMP3
- LAC ALOCPTR,0
- ADD I,0
- TBLR TEMP2
- ADD DIFF,0
- TBLR TEMP4
- LAC ALOCPTR,0
- ADD J,0
- TBLW TEMP2
- ADD DIFF,0
- TBLW TEMP4
- LAC ALOCPTR,0
- ADD I,0
- TBLW TEMP1
- ADD DIFF,0
- TBLW TEMP3
- LAB01: LAC NH,0
- SACL K,0
- LAB02: LAC J,0
- SUB K,0
- BLZ LAB025
- SACL J,0
- LAC K,15
- SACH K,0
- B LAB02
- LAB025: LAC J,0
- ADD K,0
- SACL J,0
- ZALS I
- ADD ONE,0
- SACL I,0
- B LAB0
- LAB03:
-
-
-
-
- ;
- ;
- ZAC
- SACL M,0
- SACL IT,0
- LACK 1
- SACL ID,0
- SACL IR,0
-
- LAC NQ,1
- SACL IU,0
-
- BEGIN:
- LAC ID,0
- SACL I,0
- ADD ID,0
- SACL ID,0
- ZAC
- SACL J,0
-
- LAB1:
- LAC I,0
- SUB J,0
- BLEZ LAB5
- LAC TABPTR,0
- ADD M,0
- TBLR SIN
- LAC TABPTR,0
- ADD NQ,0
- SUB M,0
- TBLR COS
- LAC J,0
- SUB IR,0
- BLZ LAB2
- LAC M,0
- SUB IT,0
- SACL M,0
- ZAC
- SUB COS,0
- SACL COS,0
- B LAB3
-
- LAB2:
- LAC M,0
- ADD IT,0
- SACL M,0
-
- LAB3:
- LAC J,0
- SACL ND,0
-
- LAB4:
- LAC NT,0
- SUB ND,0
- BLZ LAB45
- LAC I,0
- ADD ND,0
- SACL L,0
- LAC ALOCPTR,0
- ADD L,0
- TBLR XRQ
- ADD DIFF,0
- TBLR XIQ
- LAC ALOCPTR,0
- ADD ND,0
- TBLR XRP
- ADD DIFF,0
- TBLR XIP
- ;
- ;
- ;
- ; BUTTERFLY
- ;
- ZAC
- LT COS
- MPY XRQ
- LTA SIN
- MPY XIQ
- LTA COS
- SACH TEMP1,0
- ZAC
- MPY XIQ
- LTA SIN
- MPY XRQ
- SPAC
- SACH TEMP2,0
- ;
- LAC XRP,14
- ADD TEMP1,15
- SACH XRP,1
- SUBH TEMP1
- SACH XRQ,1
-
- LAC XIP,14
- ADD TEMP2,15
- SACH XIP,1
- SUBH TEMP2
- SACH XIQ,1
- ;
- ; END OF BUTTERFLY
- ;
- LAC ALOCPTR,0
- ADD L,0
- TBLW XRQ
- ADD DIFF,0
- TBLW XIQ
- LAC ALOCPTR,0
- ADD ND,0
- TBLW XRP
- ADD DIFF,0
- TBLW XIP
-
- LAC ND,0
- ADD ID,0
- SACL ND,0
- B LAB4
-
- LAB45:
- LAC J,0
- ADD ONE,0
- SACL J,0
- B LAB1
-
- LAB5:
- LAC I,0
- SACL IR,0
- LAC IU,15
- SACH IU,0
- SACH IT,0
- LAB6:
- LAC NH,0
- SUB I,0
- BGZ BEGIN
- ; CALL SPECT
- LACK 99 ; 88
- SACL ONE,0
- OUT ONE,7 ; tell 8088 we're done
-
- LOOP: B LOOP
-