22.09.2015 Views

of Microprocessors

Musical-Applications-of-Microprocessors-2ed-Chamberlin-H-1987

Musical-Applications-of-Microprocessors-2ed-Chamberlin-H-1987

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

MUSIC SYNTHESIS SOFTWARE 665<br />

0289 2040<br />

0290 2040<br />

0291 2040<br />

0292 2040<br />

0293 2040<br />

0294 2040 8A FSEVAL<br />

0295 2041 48<br />

0296 2042 A900<br />

0297 2044 8580<br />

0298 2046 8581<br />

0299 2048 8584<br />

0300 204A 8583<br />

0301 204C A584 FSEVI<br />

0302 204E OA<br />

0303 204F AA<br />

0304 2050 B589<br />

0305 2052 48<br />

0306 2053 B58A<br />

0307 2055 6583<br />

0308 2057 AA<br />

0309 2058 B08620<br />

0310 205B 85Bl<br />

0311 2050 68<br />

0312 205E 209210<br />

0313 2061<br />

0314 2061 A204<br />

0315 2063 204610 FSEV2<br />

0316 2066 CA<br />

0317 2067 DOFA<br />

0318 2069 A280<br />

0319 206B 201210<br />

0320 206E 200910<br />

0321 2071 A584<br />

0322 2073 C588<br />

0323 2075 FOOC<br />

0324 2077 E684<br />

0325 2079 A582<br />

0326 207B 18<br />

0327 207C 6583<br />

0328 207E 8583<br />

0329 2080 4C4C20<br />

0330 2083 68 FSEV3<br />

0331 2084 AA<br />

0332 2085 60<br />

0333 2086<br />

0334 2086<br />

0335 2086<br />

0336 2086 7F COSINE<br />

0337 208E 70<br />

0338 2096 76<br />

0339 209E 6A<br />

0340 20A6 5A<br />

0341 20AE 47<br />

0342 20B6 31<br />

0343 20BE 19<br />

0344 20C6 00<br />

0345 20CE E7<br />

0346 2006 CF<br />

0347 20DE B9<br />

0348 20E6 A6<br />

0349 20EE 96<br />

0350 20F6 8A<br />

0351 20FE 83<br />

0352 2106 81<br />

PNTNO IS THE POINT NUMBER TO BE EVALUATED<br />

THE COMPUTED POINT IS RETURNED IN HRMACC AS A 16 BIT TWOS<br />

COMPLEMENT NUMBER<br />

DESTROYS A AND Y, SAVES X<br />

TXA SAVE INDEX X<br />

PHA<br />

LOA #0 CLEAR HARMONIC ACCUMULATOR<br />

STA HRMACC<br />

STA HRMACC+l<br />

STA HRMCNT ZERO HARMONIC COUNTER<br />

STA NDXACC ZERO THE INDEXING ACCUMULATOR<br />

LOA HRMCNT GET CURRENT HARMONIC NUMBER AND DOUBLE IT<br />

ASL A<br />

TAX USE AS AN INDEX TO THE SPECTRUM TARLE<br />

LOA FSRAM,X GET AMPLITUDE<br />

PHA SAVE ON STACK TEMPORARILY<br />

LOA FSRAM+l,X GET PHASE<br />

ADC NDXACC ADD IT TO THE INDEXING ACCUMULATOR<br />

TAX USE AS AN INDEX INTO THE COSINE TABLE<br />

LOA COSINE,X GET COSINE<br />

STA ACCL SAVE AS MULTIPLICAND<br />

PLA<br />

RESTORE AMPLITUDE<br />

JSR MULT2Q MULTIPLY AMPLITUDE (UNSIGNED) BY COSINE<br />

(SIGNED)<br />

LOX #4 SHIFT PRODUCT RIGHT 4 FOR 12 BIT RESULT<br />

JSR OSHRS<br />

DEX<br />

BNE FSEV2<br />

LOX #HRMACC ADD RESULT TO HARMONIC ACCUMULATOR<br />

JSR DADO<br />

JSR DST<br />

LOA HRMCNT TEST IF CURRENT HARMONIC IS LAST ONE TO<br />

CMP NHARM INCLUDE<br />

BEQ FSEV3 GO RETURN IF SO<br />

INC HRMCNT INCREMENT TO NEXT HARMONIC<br />

LOA PNTNO ADD POINT NUMBER TO THE INDEXING<br />

CLC<br />

ACCUMULATOR<br />

ADC NDXACC<br />

STA NDXACC<br />

JMP FSEVI LOOP FOR ANOTHER HARMONIC<br />

PLA RESTORE I NDEX X<br />

TAX<br />

RTS<br />

RETURN<br />

256 POINT COSINE TABLE, TWOS COMPLEMENT<br />

.BYTE $7F,$7F,$7F,$7F,$7F,$7F,$7E,$7E<br />

.BYTE $7D,$70,$7C,$7B,$7A,$79,$78,$77<br />

.BYTE $76,$75,$73,$72,$71,$6F,$60,$6C<br />

.BYTE $6A,$68,$66,$65,$63,$61,$5E,$5C<br />

.BYTE $5A,$58,$56,$53,$51,$4E,$4C,$49<br />

.BYTE $47,$44,$41,$3F,$3C,$39,$36,$33<br />

.BYTE $3I,$2E,$2B,$28,$25,$22,$lF,$IC<br />

.BYTE $19,$16,$12,$OF,$OC,$09,$06,$03<br />

.BYTE $00,$FO,$FA,$F7,$F4,$FI,$EE,$EA<br />

.BYTE $E7,$E4,$El,$OE,$OB,$08,$05,$02<br />

.BYTE $CF,$CD,$CA,$C7,$C4,$Cl,$BF,$BC<br />

.BYTE $B9,$B7,$B4,$B2,$AF,$AD,$AA,$A8<br />

.BYTE $A6,$A4,$A2,$9F,$90,$9B,$9A,$98<br />

.BYTE $96,$94,$93,$91,$8F,$8E,$80,$8B<br />

.BYTE $8A,$89,$88,$87,$86,$85,$84,$83<br />

.BYTE $83,$82,$82,$81,$81,$81,$81,$81<br />

.BYTE $81,$81,$81,$81,$81,$81,$82,$82<br />

Fig. 18-7. Waveform table filler

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!