Browse Source

Merge pull request #124 from b1ackmai1er/dev

Sound driver updates
pull/126/head
Wayne Warthen 6 years ago
committed by GitHub
parent
commit
198da97f0e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 409
      Source/HBIOS/ay38910.asm
  2. 4
      Source/HBIOS/sn76489.asm

409
Source/HBIOS/ay38910.asm

@ -69,11 +69,12 @@ SBCV2004 .EQU 0 ; USE SBC-V2-004 HALF CLOCK DIVIDER
AY_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS
AY_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS
;
;AY_PHICLK .EQU 3579500 ; MSX NTSC COLOUR BURST FREQ = 315/88
AY_PHICLK .EQU 3579545 ; MSX NTSC COLOUR BURST FREQ = 315/88
;AY_PHICLK .EQU 3500000 ; ZX SPECTRUM 3.5MHZ
;AY_PHICLK .EQU 4000000 ; RETROBREW SCB-SCG
;AY_CLKDIV .EQU 2
;AY_CLK .EQU AY_PHICLK / AY_CLKDIV
AY_CLKDIV .EQU 2
AY_CLK .EQU AY_PHICLK / AY_CLKDIV
AY_RATIO .EQU AY_CLK * 100 / 16
;
#INCLUDE "audio.inc"
;
@ -97,8 +98,7 @@ AY38910_INIT:
OUT (AY_ACR),A ; SET INIT AUX CONTROL REG
#ENDIF
;
LD D,AY_R2CHBP ; SIMPLE HARDWARE PROBE
LD E,$55
LD DE,(AY_R2CHBP*256)+$55 ; SIMPLE HARDWARE PROBE
CALL AY_WRTPSG ; WRITE AND
CALL AY_RDPSG ; READ TO A
LD A,$55 ; SOUND CHANNEL
@ -120,11 +120,9 @@ AY_FND: LD IY, AY_IDAT ; SETUP FUNCTION TABLE
LD E,$07 ; SET VOLUME TO 50%
CALL AY_SETV ; ON ALL CHANNELS
;
; LD D,AY_R2CHBP ; BEEP ON CHANNEL B (CENTER)
; LD E,$55
; LD DE,(AY_R2CHBP*256)+$55 ; BEEP ON CHANNEL B (CENTER)
; CALL AY_WRTPSG ; R02 = $55 = 01010101
LD D,AY_R3CHBP
LD E,$00
LD DE,(AY_R3CHBP*256)+$00
CALL AY_WRTPSG ; R03 = $00 = XXXX0000
;
CALL LDELAY ; HALF SECOND DELAY
@ -140,8 +138,7 @@ AY_FND: LD IY, AY_IDAT ; SETUP FUNCTION TABLE
;======================================================================
;
AY_INIT:
LD D,AY_R7ENAB ; SET MIXER CONTROL / IO ENABLE
LD E,$F8 ; $F8 - 11 111 000
LD DE,(AY_R7ENAB*256)+$F8 ; SET MIXER CONTROL / IO ENABLE. $F8 - 11 111 000
CALL AY_WRTPSG ; I/O PORTS = OUTPUT, NOISE CHANNEL C, B, A DISABLE, TONE CHANNEL C, B, A ENABLE
RET
;
@ -236,12 +233,12 @@ AY_NOTE:
LD H,0
ADD HL, HL ; SHIFT RIGHT (MULT 2) -INDEX INTO AY3NOTETBL TABLE OF WORDS
; ; TEST IF HL IS LARGER THAN AY3NOTETBL SIZE
OR A ; CLEAR CARRY FLAG
; OR A ; CLEAR CARRY FLAG
LD DE, SIZ_AY3NOTETBL
SBC HL, DE
JR NC, AY_NOTE1 ; INCOMING HL DOES NOT MAP INTO AY3NOTETBL
; SBC HL, DE
; JR NC, AY_NOTE1 ; INCOMING HL DOES NOT MAP INTO AY3NOTETBL
;
ADD HL, DE ; RESTORE HL
; ADD HL, DE ; RESTORE HL
LD DE, AY3NOTETBL ; HL = AY3NOTETBL + HL
ADD HL, DE
;
@ -464,133 +461,273 @@ AYT_REGWR .DB "\r\nOUT AY-3-8910 $"
#ENDIF
;
;======================================================================
; FREQUENCY TONE TABLE (SEMITONE CURRENTLY)
; BBC MICRO QUARTER TONE FREQUENCY TABLE
;======================================================================
;
; MSX TABLE PERIOD OCTAVE NOTE MIDI#
;
AY3NOTETBL:
; .DW 6842 ;0 12
; .DW 6458 ;0 13
; .DW 6096 ;0 14
; .DW 5751 ;0 15
; .DW 5430 ;0 16
; .DW 5124 ;0 17
; .DW 4838 ;0 18
; .DW 4566 ;0 19
; .DW 4309 ;0 20
.DW 4068 ;0 A0 21
.DW 3839 ;0 22
.DW 3624 ;0 23
.DW 3421 ;1 24
.DW 3228 ;1 25
.DW 3047 ;1 26
.DW 2876 ;1 27
.DW 2715 ;1 28
.DW 2563 ;1 29
.DW 2419 ;1 30
.DW 2283 ;1 31
.DW 2155 ;1 32
.DW 2034 ;1 33
.DW 1920 ;1 34
.DW 1812 ;1 35
.DW 1710 ;2 36
.DW 1614 ;2 37
.DW 1524 ;2 38
.DW 1438 ;2 39
.DW 1357 ;2 40
.DW 1281 ;2 41
.DW 1209 ;2 42
.DW 1141 ;2 43
.DW 1077 ;2 44
.DW 1017 ;2 45
.DW 960 ;2 46
.DW 906 ;2 47
.DW 855 ;3 48
.DW 807 ;3 49
.DW 762 ;3 50
.DW 719 ;3 51
.DW 679 ;3 52
.DW 641 ;3 53
.DW 605 ;3 54
.DW 571 ;3 55
.DW 539 ;3 56
.DW 508 ;3 57
.DW 480 ;3 58
.DW 453 ;3 59
.DW 428 ;4 60
.DW 404 ;4 61
.DW 381 ;4 62
.DW 360 ;4 63
.DW 339 ;4 64
.DW 320 ;4 65
.DW 302 ;4 66
.DW 285 ;4 67
.DW 269 ;4 68
.DW 254 ;4 69
.DW 240 ;4 70
.DW 226 ;4 71
.DW 214 ;5 72
.DW 202 ;5 73
.DW 190 ;5 74
.DW 180 ;5 75
.DW 170 ;5 76
.DW 160 ;5 77
.DW 151 ;5 78
.DW 143 ;5 79
.DW 135 ;5 80
.DW 127 ;5 81
.DW 120 ;5 82
.DW 113 ;5 83
.DW 107 ;6 84
.DW 101 ;6 85
.DW 95 ;6 86
.DW 90 ;6 87
.DW 85 ;6 88
.DW 80 ;6 89
.DW 76 ;6 90
.DW 71 ;6 91
.DW 67 ;6 92
.DW 64 ;6 93
.DW 60 ;6 94
.DW 57 ;6 95
.DW 53 ;7 96
.DW 50 ;7 97
.DW 48 ;7 98
.DW 45 ;7 99
.DW 42 ;7 100
.DW 40 ;7 101
.DW 38 ;7 102
.DW 36 ;7 103
.DW 34 ;7 104
.DW 32 ;7 105
.DW 30 ;7 106
.DW 28 ;7 107
.DW 27 ;8 108
.DW 25 ;8 109
.DW 24 ;8 110
.DW 22 ;8 111
.DW 21 ;8 112
.DW 20 ;8 113
.DW 19 ;8 114
.DW 18 ;8 115
.DW 17 ;8 116
.DW 16 ;8 117
.DW 15 ;8 118
.DW 14 ;8 119
.DW 13 ;9 120
.DW 13 ;9 121
.DW 12 ;9 122
.DW 11 ;9 123
.DW 11 ;9 124
.DW 10 ;9 125
.DW 9 ;9 126
.DW 9 ;9 127
.DW 8 ;9 128
.DW AY_RATIO / 5827 ; A#1 INDEX 0 = A#1 AS PER BBC MANUAL
; .DW AY_RATIO / 5912
; .DW AY_RATIO / 5998
; .DW AY_RATIO / 6085
.DW AY_RATIO / 6174 ; B1 INDEX 1 = B1 AS PER BBC MANUAL
.DW AY_RATIO / 6263
.DW AY_RATIO / 6354
.DW AY_RATIO / 6447
.DW AY_RATIO / 6541 ; C2
.DW AY_RATIO / 6636
.DW AY_RATIO / 6732
.DW AY_RATIO / 6830
.DW AY_RATIO / 6930 ; C#2
.DW AY_RATIO / 7030
.DW AY_RATIO / 7133
.DW AY_RATIO / 7236
.DW AY_RATIO / 7342 ; D2
.DW AY_RATIO / 7448
.DW AY_RATIO / 7557
.DW AY_RATIO / 7667
.DW AY_RATIO / 7778 ; D#2
.DW AY_RATIO / 7891
.DW AY_RATIO / 8006
.DW AY_RATIO / 8123
.DW AY_RATIO / 8241 ; E2
.DW AY_RATIO / 8361
.DW AY_RATIO / 8482
.DW AY_RATIO / 8606
.DW AY_RATIO / 8731 ; F2
.DW AY_RATIO / 8858
.DW AY_RATIO / 8987
.DW AY_RATIO / 9117
.DW AY_RATIO / 9250 ; F#2
.DW AY_RATIO / 9384
.DW AY_RATIO / 9521
.DW AY_RATIO / 9659
.DW AY_RATIO / 9800 ; G2
.DW AY_RATIO / 9942
.DW AY_RATIO / 10087
.DW AY_RATIO / 10234
.DW AY_RATIO / 10383 ; G#2
.DW AY_RATIO / 10534
.DW AY_RATIO / 10687
.DW AY_RATIO / 10842
.DW AY_RATIO / 11000 ; A2
.DW AY_RATIO / 11160
.DW AY_RATIO / 11322
.DW AY_RATIO / 11487
.DW AY_RATIO / 11654 ; A#2
.DW AY_RATIO / 11824
.DW AY_RATIO / 11996
.DW AY_RATIO / 12170
.DW AY_RATIO / 12347 ; B2
.DW AY_RATIO / 12527
.DW AY_RATIO / 12709
.DW AY_RATIO / 12894
.DW AY_RATIO / 13081 ; C3
.DW AY_RATIO / 13272
.DW AY_RATIO / 13465
.DW AY_RATIO / 13660
.DW AY_RATIO / 13859 ; C#3
.DW AY_RATIO / 14061
.DW AY_RATIO / 14265
.DW AY_RATIO / 14473
.DW AY_RATIO / 14683 ; D3
.DW AY_RATIO / 14897
.DW AY_RATIO / 15113
.DW AY_RATIO / 15333
.DW AY_RATIO / 15556 ; D#3
.DW AY_RATIO / 15783
.DW AY_RATIO / 16012
.DW AY_RATIO / 16245
.DW AY_RATIO / 16481 ; E3
.DW AY_RATIO / 16721
.DW AY_RATIO / 16964
.DW AY_RATIO / 17211
.DW AY_RATIO / 17461 ; F3
.DW AY_RATIO / 17715
.DW AY_RATIO / 17973
.DW AY_RATIO / 18234
.DW AY_RATIO / 18500 ; F#3
.DW AY_RATIO / 18769
.DW AY_RATIO / 19042
.DW AY_RATIO / 19319
.DW AY_RATIO / 19600 ; G3
.DW AY_RATIO / 19885
.DW AY_RATIO / 20174
.DW AY_RATIO / 20468
.DW AY_RATIO / 20765 ; G#3
.DW AY_RATIO / 21067
.DW AY_RATIO / 21374
.DW AY_RATIO / 21685
.DW AY_RATIO / 22000 ; A3
.DW AY_RATIO / 22320
.DW AY_RATIO / 22645
.DW AY_RATIO / 22974
.DW AY_RATIO / 23308 ; A#3
.DW AY_RATIO / 23647
.DW AY_RATIO / 23991
.DW AY_RATIO / 24340
.DW AY_RATIO / 24694 ; B3
.DW AY_RATIO / 25053
.DW AY_RATIO / 25418
.DW AY_RATIO / 25787
.DW AY_RATIO / 26163 ; C4
.DW AY_RATIO / 26543
.DW AY_RATIO / 26929
.DW AY_RATIO / 27321
.DW AY_RATIO / 27718 ; C#4
.DW AY_RATIO / 28121
.DW AY_RATIO / 28530
.DW AY_RATIO / 28945
.DW AY_RATIO / 29366 ; D4
.DW AY_RATIO / 29794
.DW AY_RATIO / 30227
.DW AY_RATIO / 30667
.DW AY_RATIO / 31113 ; D#4
.DW AY_RATIO / 31565
.DW AY_RATIO / 32024
.DW AY_RATIO / 32490
.DW AY_RATIO / 32963 ; E4
.DW AY_RATIO / 33442
.DW AY_RATIO / 33929
.DW AY_RATIO / 34422
.DW AY_RATIO / 34923 ; F4
.DW AY_RATIO / 35431
.DW AY_RATIO / 35946
.DW AY_RATIO / 36469
.DW AY_RATIO / 36999 ; F#4
.DW AY_RATIO / 37538
.DW AY_RATIO / 38084
.DW AY_RATIO / 38638
.DW AY_RATIO / 39200 ; G4
.DW AY_RATIO / 39770
.DW AY_RATIO / 40348
.DW AY_RATIO / 40935
.DW AY_RATIO / 41530 ; G#4
.DW AY_RATIO / 42135
.DW AY_RATIO / 42747
.DW AY_RATIO / 43369
.DW AY_RATIO / 44000 ; A4
.DW AY_RATIO / 44640
.DW AY_RATIO / 45289
.DW AY_RATIO / 45948
.DW AY_RATIO / 46616 ; A#4
.DW AY_RATIO / 47294
.DW AY_RATIO / 47982
.DW AY_RATIO / 48680
.DW AY_RATIO / 49388 ; B4
.DW AY_RATIO / 50107
.DW AY_RATIO / 50836
.DW AY_RATIO / 51575
.DW AY_RATIO / 52325 ; C5
.DW AY_RATIO / 53086
.DW AY_RATIO / 53858
.DW AY_RATIO / 54642
.DW AY_RATIO / 55437 ; C#5
.DW AY_RATIO / 56243
.DW AY_RATIO / 57061
.DW AY_RATIO / 57891
.DW AY_RATIO / 58733 ; D5
.DW AY_RATIO / 59587
.DW AY_RATIO / 60454
.DW AY_RATIO / 61333
.DW AY_RATIO / 62225 ; D#5
.DW AY_RATIO / 63130
.DW AY_RATIO / 64049
.DW AY_RATIO / 64980
.DW AY_RATIO / 65926 ; E5
.DW AY_RATIO / 66884
.DW AY_RATIO / 67857
.DW AY_RATIO / 68844
.DW AY_RATIO / 69846 ; F5
.DW AY_RATIO / 70862
.DW AY_RATIO / 71892
.DW AY_RATIO / 72938
.DW AY_RATIO / 73999 ; F#5
.DW AY_RATIO / 75075
.DW AY_RATIO / 76167
.DW AY_RATIO / 77275
.DW AY_RATIO / 78399 ; G5
.DW AY_RATIO / 79539
.DW AY_RATIO / 80696
.DW AY_RATIO / 81870
.DW AY_RATIO / 83061 ; G#5
.DW AY_RATIO / 84269
.DW AY_RATIO / 85495
.DW AY_RATIO / 86738
.DW AY_RATIO / 88000 ; # A5
.DW AY_RATIO / 89280
.DW AY_RATIO / 90579
.DW AY_RATIO / 91896
.DW AY_RATIO / 93233 ; A#5
.DW AY_RATIO / 94589
.DW AY_RATIO / 95965
.DW AY_RATIO / 97361
.DW AY_RATIO / 98777 ; B5
.DW AY_RATIO / 100213
.DW AY_RATIO / 101671
.DW AY_RATIO / 103150
.DW AY_RATIO / 104650 ; C6
.DW AY_RATIO / 106172
.DW AY_RATIO / 107717
.DW AY_RATIO / 109283
.DW AY_RATIO / 110873 ; C#6
.DW AY_RATIO / 112486
.DW AY_RATIO / 114122
.DW AY_RATIO / 115782
.DW AY_RATIO / 117466 ; D6
.DW AY_RATIO / 119174
.DW AY_RATIO / 120908
.DW AY_RATIO / 122667
.DW AY_RATIO / 124451 ; D#6
.DW AY_RATIO / 126261
.DW AY_RATIO / 128097
.DW AY_RATIO / 129961
.DW AY_RATIO / 131851 ; E6
.DW AY_RATIO / 133769
.DW AY_RATIO / 135715
.DW AY_RATIO / 137689
.DW AY_RATIO / 139691 ; F6
.DW AY_RATIO / 141723
.DW AY_RATIO / 143785
.DW AY_RATIO / 145876
.DW AY_RATIO / 147998 ; F#6
.DW AY_RATIO / 150150
.DW AY_RATIO / 152334
.DW AY_RATIO / 154550
.DW AY_RATIO / 156798 ; G6
.DW AY_RATIO / 159079
.DW AY_RATIO / 161393
.DW AY_RATIO / 163740
.DW AY_RATIO / 166122 ; G#6
.DW AY_RATIO / 168538
.DW AY_RATIO / 170990
.DW AY_RATIO / 173477
.DW AY_RATIO / 176000 ; A6
.DW AY_RATIO / 178560
.DW AY_RATIO / 181157
.DW AY_RATIO / 183792
.DW AY_RATIO / 186466 ; A#6
.DW AY_RATIO / 189178
.DW AY_RATIO / 191929
.DW AY_RATIO / 194721
.DW AY_RATIO / 197553 ; B6
.DW AY_RATIO / 200427
.DW AY_RATIO / 203342
.DW AY_RATIO / 206300
.DW AY_RATIO / 209300 ; C7
.DW AY_RATIO / 212345
.DW AY_RATIO / 215433
.DW AY_RATIO / 218567
.DW AY_RATIO / 221746 ; C#7
.DW AY_RATIO / 224971
.DW AY_RATIO / 228244
.DW AY_RATIO / 231564
.DW AY_RATIO / 234932 ; D7
.DW AY_RATIO / 238349
.DW AY_RATIO / 241816
SIZ_AY3NOTETBL .EQU $ - AY3NOTETBL
.ECHO "AY-3-8910 approx "
.ECHO SIZ_AY3NOTETBL / 2 / 12
.ECHO SIZ_AY3NOTETBL / 2 / 4 / 12
.ECHO " Octaves. Last note index supported: "
.ECHO SIZ_AY3NOTETBL / 2

4
Source/HBIOS/sn76489.asm

@ -363,7 +363,7 @@ SNT_REGWR .DB "\r\nOUT SN76489, $"
; THE FREQUENCY BY QUARTER TONE STARTING AT A1#
SN7NOTETBL:
.DW A1S
.DW A1S ; 5827
.DW SN7RATIO / 5912
.DW SN7RATIO / 5998
.DW SN7RATIO / 6085
@ -611,7 +611,7 @@ SN7NOTETBL:
.DW SN7RATIO / 200426
.DW SN7RATIO / 203342
.DW SN7RATIO / 206299
.DW C7
.DW C7 ; 209300
SIZ_SN7NOTETBL .EQU $ - SN7NOTETBL
.ECHO "SN76489 approx "

Loading…
Cancel
Save