^G beep support. uses ensoniq to match the vt100 beep.
This commit is contained in:
parent
8d0f3b6496
commit
6c8da61822
|
@ -15,6 +15,13 @@ SCCAREG equ $c039
|
||||||
SCCBDATA equ $c03a
|
SCCBDATA equ $c03a
|
||||||
SCCADATA equ $c03b
|
SCCADATA equ $c03b
|
||||||
|
|
||||||
|
* Sound GLU
|
||||||
|
SGCONTROL equ $c03c ; Sound GLU control register
|
||||||
|
SGDATA equ $c03d ; Sound GLU data register
|
||||||
|
SGADDRL equ $c03e ; Sound GLU address reg low
|
||||||
|
SGADDRH equ $c03f ; Sound GLU address reg high
|
||||||
|
|
||||||
|
|
||||||
* interrupt vectors. JMP ABSLONG.
|
* interrupt vectors. JMP ABSLONG.
|
||||||
IRQ1SEC equ $e10054
|
IRQ1SEC equ $e10054
|
||||||
IRQQTR equ $e10038
|
IRQQTR equ $e10038
|
||||||
|
|
|
@ -0,0 +1,199 @@
|
||||||
|
|
||||||
|
lst off
|
||||||
|
cas se
|
||||||
|
|
||||||
|
rel
|
||||||
|
xc
|
||||||
|
xc
|
||||||
|
|
||||||
|
use apple2gs.equ
|
||||||
|
|
||||||
|
|
||||||
|
mx %11
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* keypress @ 44.1 - 28 samples of $40, 29 samples of $b0
|
||||||
|
*
|
||||||
|
* beep - repeat keypress 53 times
|
||||||
|
*
|
||||||
|
* by adjusting rate, only need 1 sample each.
|
||||||
|
*
|
||||||
|
* w/ 2 oscillators, scan rate = 223.7 kHz ~5x 44.1
|
||||||
|
* 28 samples * 5 = 142
|
||||||
|
* res = 7. (1 << 16) / 142 = ~ 461
|
||||||
|
* freq = 461, res = 7, wave size = 256 --> n * 461 >> 16
|
||||||
|
*
|
||||||
|
*
|
||||||
|
|
||||||
|
|
||||||
|
*
|
||||||
|
* vt52
|
||||||
|
* keypress - ~730 samples, $40, curve to 0 or $b0, curve to 0
|
||||||
|
* beep 14 keypresses
|
||||||
|
*
|
||||||
|
*
|
||||||
|
|
||||||
|
|
||||||
|
bic mac
|
||||||
|
if #=]1
|
||||||
|
and ]1!$ffff
|
||||||
|
else
|
||||||
|
err 1 ; immediate only.
|
||||||
|
fin
|
||||||
|
<<<
|
||||||
|
|
||||||
|
docwait mac
|
||||||
|
if MX<2
|
||||||
|
err 1 ; 8-bit m only
|
||||||
|
fin
|
||||||
|
wait lda SGCONTROL
|
||||||
|
bmi wait
|
||||||
|
<<<
|
||||||
|
|
||||||
|
docmode mac
|
||||||
|
docwait
|
||||||
|
bic #%01000000 ; DOC mode
|
||||||
|
ora #%00100000 ; auto-incr
|
||||||
|
ors #%0000_1111 ; max volume.
|
||||||
|
sta SGCONTROL
|
||||||
|
<<<
|
||||||
|
|
||||||
|
rammode mac
|
||||||
|
docwait
|
||||||
|
ora #%01100000 ; RAM mode, auto-incr
|
||||||
|
sta SGCONTROL
|
||||||
|
<<<
|
||||||
|
|
||||||
|
|
||||||
|
init_audio ent
|
||||||
|
|
||||||
|
docmode
|
||||||
|
|
||||||
|
* 4 oscillators. -- (2 for key, 2 for beep -- stereo!)
|
||||||
|
lda #$e1
|
||||||
|
sta SGADDRL
|
||||||
|
|
||||||
|
lda #4*2
|
||||||
|
sta SGDATA
|
||||||
|
|
||||||
|
* control registers
|
||||||
|
* just set them off. channels will be set when they fire.
|
||||||
|
|
||||||
|
lda #$a0
|
||||||
|
sta SGADDRL
|
||||||
|
lda #%0000_0_01_1 ; ch 0, interrupts off, 1-shot, halted.
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* freq low
|
||||||
|
lda #$00
|
||||||
|
sta SGADDRL
|
||||||
|
lda #<650
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
|
||||||
|
* freq high
|
||||||
|
lda #$20
|
||||||
|
sta SGADDRL
|
||||||
|
lda #>650
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
|
||||||
|
* volume
|
||||||
|
lda #$40
|
||||||
|
sta SGADDRL
|
||||||
|
lda #$ff
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
|
||||||
|
* wave table
|
||||||
|
lda #$80
|
||||||
|
sta SGADDRL
|
||||||
|
lda #0 ; page 0
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
inc ; page 1
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* wave table size
|
||||||
|
lda #$c0
|
||||||
|
sta SGADDRL
|
||||||
|
lda #%00_000_111 ; 256 bytes, 16-bit shift
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
sta SGDATA
|
||||||
|
|
||||||
|
|
||||||
|
; now copy the data....
|
||||||
|
rammode
|
||||||
|
stz SGADDRL
|
||||||
|
stz SGADDRH
|
||||||
|
|
||||||
|
ldy #key_size
|
||||||
|
ldx #0
|
||||||
|
]loop lda key_data,x
|
||||||
|
sta SGDATA
|
||||||
|
inx
|
||||||
|
dey
|
||||||
|
bpl ]loop
|
||||||
|
|
||||||
|
stz SGADDRL
|
||||||
|
lda #1
|
||||||
|
sta SGADDRH
|
||||||
|
ldy #beep_size
|
||||||
|
ldx #0
|
||||||
|
]loop lda beep_data,x
|
||||||
|
sta SGDATA
|
||||||
|
inx
|
||||||
|
dey
|
||||||
|
bpl ]loop
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
beep ent
|
||||||
|
; fire osc 2 + 3
|
||||||
|
docmode
|
||||||
|
|
||||||
|
lda #$a0+2
|
||||||
|
sta SGADDRL
|
||||||
|
lda #%0000_0_01_0 ; ch 0, interrupts off, 1-shot, running.
|
||||||
|
ldx #%0001_0_01_0 ; ch 1, interrupts off, 1-shot, running.
|
||||||
|
sta SGDATA
|
||||||
|
stx SGDATA
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
key_data
|
||||||
|
db $01
|
||||||
|
db $ff
|
||||||
|
db $00
|
||||||
|
key_size equ *-key_data
|
||||||
|
|
||||||
|
beep_data
|
||||||
|
lup 53
|
||||||
|
db $01
|
||||||
|
db $ff
|
||||||
|
--^
|
||||||
|
db $0
|
||||||
|
beep_size equ *-beep_data
|
||||||
|
|
||||||
|
sav vt100.beep.L
|
|
@ -14,6 +14,7 @@
|
||||||
asm vt100.screen.S
|
asm vt100.screen.S
|
||||||
asm vt100.modem.S
|
asm vt100.modem.S
|
||||||
asm vt100.key.S
|
asm vt100.key.S
|
||||||
|
asm vt100.beep.S
|
||||||
|
|
||||||
|
|
||||||
* lnk boot.S
|
* lnk boot.S
|
||||||
|
@ -32,6 +33,7 @@
|
||||||
lnk vt100.screen.L
|
lnk vt100.screen.L
|
||||||
lnk vt100.modem.L
|
lnk vt100.modem.L
|
||||||
lnk vt100.key.L
|
lnk vt100.key.L
|
||||||
|
lnk vt100.beep.L
|
||||||
|
|
||||||
typ $ff
|
typ $ff
|
||||||
sav vt100.sys
|
sav vt100.sys
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
ext disable_cursor,enable_cursor,cursor_vector
|
ext disable_cursor,enable_cursor,cursor_vector
|
||||||
ext erase_screen
|
ext erase_screen
|
||||||
ext init_tabs
|
ext init_tabs
|
||||||
|
ext init_audio
|
||||||
|
|
||||||
main debug main
|
main debug main
|
||||||
|
|
||||||
|
@ -96,6 +97,7 @@ init
|
||||||
jsr erase_screen
|
jsr erase_screen
|
||||||
jsr init_modem
|
jsr init_modem
|
||||||
jsr init_tabs
|
jsr init_tabs
|
||||||
|
jsr init_audio
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
@ -185,7 +187,8 @@ ctrl_1f
|
||||||
|
|
||||||
|
|
||||||
ctrl_07 ; ring the bell.
|
ctrl_07 ; ring the bell.
|
||||||
rts
|
ext beep
|
||||||
|
jmp beep
|
||||||
|
|
||||||
ctrl_1b ; escape -
|
ctrl_1b ; escape -
|
||||||
* vt100 - aborts current escape sequence and starts a new one.
|
* vt100 - aborts current escape sequence and starts a new one.
|
||||||
|
|
Loading…
Reference in New Issue