.TITLE MUSIC ; ; ; DW. ENSTROM ; 28-JAN-80 ; CLOCK = 177546 ;ADDRESS OF KW11-L LINE CLOCK DAC = 176760 ;ADDRESS OF D TO A ;100 BEATS PER MIN. DUR = 64 = QUARTER NOTE NOP = 240 ;NOP MQ = 177304 ;EAE ADDRESS MULT = 177306 ;EAE ADDRESS R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 R6=%6 SP=%6 PC=%7 ; ; ; MAIN MUSIC PLAYING PROGRAM ; MUSIC: CLR @#CLOCK ;TURN OFF THE CLOCK MOV #MUSIC,@#24 ;POWER FAIL RESTART MOV #0,@#26 ; MOV #SONG,R6 ;ALSO POINTS TO STACK MOV V1PT,R1 MOV V2PT,R4 MOV V3PT,R5 MOV V4PT,R0 MUSIC1: MOV TEMPO,MQ MOV (R6)+,MULT ;SET DURATION OF NOTES MOV MQ,R2 BEQ MUSIC ;START AGAIN IF AT END OF SONG MOV (R6)+,R3 MOV FRQTAB(R3),V1IN TST V1IN BNE CL1 CLR R1 CL1: MOV FRQTAB+2(R3),V1IN+2 MOV (R6)+,R3 MOV FRQTAB(R3),V2IN TST V2IN BNE CL2 CLR R4 CL2: MOV FRQTAB+2(R3),V2IN+2 MOV (R6)+,R3 MOV FRQTAB(R3),V3IN TST V3IN BNE CL3 CLR R5 CL3: MOV FRQTAB+2(R3),V3IN+2 MOV (R6)+,R3 MOV FRQTAB(R3),V4IN ;STORE 4TH INCREMENT TST V4IN BNE CL4 CLR R0 CL4: MOV FRQTAB+2(R3),V4IN+2 ADD V1IN,R1 ADD V2IN,R4 ADD V3IN,R5 ADD V4IN,R0 DEC R2 ; ; ; COMPUTE AND OUTPUT NOTES. ; PLAY: ADD V1IN,R1 ADD V1IN+2,V1FRAC BCC A1 ADD #2,R1 BR A2 A1: ADD #0,R1 BCS A2 ;NEVER JUMPS A2: BIC #177000,R1 ADD V2IN,R4 ADD V2IN+2,V2FRAC BCC B1 ADD #2,R4 BR B2 B1: ADD #0,R4 BCS B2 ;NEVER JUMPS B2: BIC #177000,R4 ADD V3IN,R5 ADD V3IN+2,V3FRAC BCC C1 ADD #2,R5 BR C2 C1: ADD #0,R5 BCS C2 ;NEVER JUMPS C2: BIC #177000,R5 ADD V4IN,R0 ADD V4IN+2,V4FRAC BCC D1 ADD #2,R0 BR D2 D1: ADD #0,R0 BCS D2 ;NEVER JUMPS D2: BIC #177000,R0 MOV WAVTAB(R1),R3 ADD WAVTAB(R4),R3 ADD WAVTAB(R5),R3 ADD WAVTAB(R0),R3 ;ADD VALUES FOR THE NOTES TOGETHER MOV R3,DAC ;I/O TO DAC DEC R2 ;DEC TEMPO BNE PLAY JMP MUSIC1 ; ; ; ; ; ; ; FREQUENCY TABLE ; ; 7570 HZ SAMPLE RATE ; ; ID. NOTE FREQ. INCREMENT ; --- ---- ----- --------- FRQTAB: .WORD 0., 0. ; 0 SILENCE .WORD 4., 6233. ; 4 A1# .WORD 4.,14398. ; 10 B1 .WORD 4.,23048. ; 14 C1 .WORD 4.,32213. ; 20 C1# .WORD 4.,41921. ; 24 D1 .WORD 4.,52208. ; 30 D1# .WORD 4.,63107. ; 34 E1 .WORD 6., 9118. ; 40 F1 .WORD 6.,21351. ; 44 F1# .WORD 6.,34311. ; 50 G1 .WORD 6.,48042. ; 54 G1# .WORD 6.,62590. ; 60 A2 .WORD 8.,12466. ; 64 A2# .WORD 8.,28796. ; 70 B2 .WORD 8.,46096. ; 74 C2 .WORD 8.,64426. ;100 C2# .WORD 10.,18306. ;104 D2 .WORD 10.,38880. ;110 D2# .WORD 10.,60678. ;114 E2 .WORD 12.,18236. ;120 F2 .WORD 12.,42702. ;124 F2# .WORD 14., 3086. ;130 G2 .WORD 14.,30548. ;134 G2# .WORD 14.,59644. ;140 A3 .WORD 16.,24932. ;144 A3# .WORD 16.,57592. ;150 B3 .WORD 18.,26656. ;154 C3 .WORD 18.,63316. ;160 C3# .WORD 20.,36612. ;164 D3 .WORD 22.,12224. ;170 D3# .WORD 22.,55820. ;174 E3 .WORD 24.,36472. ;200 F3 .WORD 26.,19868. ;204 F3# .WORD 28., 6172. ;210 G3 .WORD 28.,61096. ;214 G3# .WORD 30.,53752. ;220 A4 IDEAL 440 HZ ACTUAL APPROX 533 HZ .WORD 32.,49864. ;224 A4# .WORD 34.,49648. ;230 B4 .WORD 36.,53312. ;234 C4 .WORD 38.,61096. ;240 C4# .WORD 42., 7688. ;244 D4 .WORD 44.,24448. ;250 D4# .WORD 46.,46104. ;254 E4 .WORD 50., 7408. ;260 F4 .WORD 52.,39736. ;264 F4# .WORD 56.,12344. ;270 G4 .WORD 58.,56656. ;274 G4# .WORD 62.,41968. ;300 A5 .WORD 66.,34192. ;304 A5# .WORD 70.,33760. ;310 B5 .WORD 74.,41088. ;314 C5 .WORD 78.,56656. ;320 C5# .WORD 84.,15376. ;324 D5 .WORD 88.,48896. ;330 D5# .WORD 94.,26672. ;334 E5 .WORD 100.,14816. ;340 F5 .WORD 106.,13936. ;344 F5# .WORD 112.,24688. ;350 G5 .WORD 118.,47776. ;354 G5# ; ; WAVEFORM TABLE WAV1TB=. WAV2TB=. WAV3TB=. WAV4TB=. ;FUNDAMENTAL=1 ;SECOND HARM. .5, IN PHASE ;THIRD HARM. .5, 90 DEG LEADING PHASE WAVTAB:.WORD 0,-12.,-25.,-39.,-54.,-70.,-86.,-102.,-119.,-137.,-154. .WORD -172.,-191.,-209.,-227.,-246.,-264.,-282.,-300.,-318. .WORD -335.,-352.,-368.,-384.,-399.,-413.,-427.,-440.,-451. .WORD -462.,-472.,-481.,-489.,-496.,-501.,-506.,-509.,-511. .WORD -512.,-512.,-510.,-508.,-504.,-499.,-493.,-486.,-477. .WORD -468.,-458.,-446.,-434.,-421.,-407.,-393.,-377.,-361. .WORD -344.,-327.,-310.,-291.,-273.,-254.,-235.,-216.,-197. .WORD -178.,-159.,-140.,-121.,-103.,-84.,-66.,-49.,-32.,-15. .WORD 0,16.,31.,46.,59.,73.,85.,97.,108.,119.,128.,137.,146. .WORD 153.,160.,167.,172.,177.,182.,186.,189.,192.,195.,197. .WORD 199.,200.,201.,202.,203.,203.,203.,204.,204.,204.,204. .WORD 204.,205.,205.,206.,207.,208.,209.,210.,212.,214.,217. .WORD 219.,222.,226.,229.,233.,237.,242.,246.,251.,257.,262. .WORD 267.,273.,279.,285.,291.,297.,302.,308.,314.,319.,324. .WORD 329.,334.,339.,343.,346.,349.,352.,354.,356.,357.,357.,357. .WORD 356.,354.,352.,349.,345.,341.,336.,330.,323.,315.,307.,299. .WORD 289.,279.,268.,257.,245.,233.,220.,206.,192.,178.,164.,149. .WORD 135.,120.,105.,89.,74.,60.,45.,30.,16.,2.,-11.,-24.,-37. .WORD -49.,-60.,-71.,-82.,-91.,-100.,-108.,-115.,-122.,-127.,-132. .WORD -136.,-139.,-141.,-143.,-143.,-143.,-141.,-139.,-136.,-133. .WORD -128.,-123.,-117.,-111.,-104.,-97.,-89.,-80.,-72.,-63.,-54. .WORD -44.,-35.,-25.,-16.,-7.,1.,10.,19.,27.,35.,42.,49.,55.,61. .WORD 66.,70.,73.,76.,77.,78.,78.,77.,74.,71.,67.,62.,56.,49.,41. .WORD 32.,22.,11. V1PT: .WORD WAV1TB ;POINTER TO WAVE TABLE #1 V2PT: .WORD WAV2TB ;POINTER TO WAVE TABLE #2 - VOICE #2 V3PT: .WORD WAV3TB V4PT: .WORD WAV4TB ; V1FRAC: .WORD 0 V2FRAC: .WORD 0 V3FRAC: .WORD 0 V4FRAC: .WORD 0 ; V1IN: .WORD 0,0 ;VOICE #1 INCREMENT V2IN: .WORD 0,0 V3IN: .WORD 0,0 V4IN: .WORD 0,0 ; DUR: .WORD 0 ;DURATION SONGA: .WORD SONG ;ADDRESS OF SONG TEMPO:: .WORD 40 ;TEMPO VALUE - TYPICAL VALUE FOR 3:4 TIME ; ; ; SONG TABLE AND PROCESSOR STACK ; .BLKW 20 STACK: SONG: .END MUSIC