mirror of
https://github.com/ksherlock/itty-bitty-vtty.git
synced 2024-11-23 17:33:57 +00:00
^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
|
||||
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.
|
||||
IRQ1SEC equ $e10054
|
||||
IRQQTR equ $e10038
|
||||
|
199
vt100.beep.S
Normal file
199
vt100.beep.S
Normal file
@ -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.modem.S
|
||||
asm vt100.key.S
|
||||
asm vt100.beep.S
|
||||
|
||||
|
||||
* lnk boot.S
|
||||
@ -32,6 +33,7 @@
|
||||
lnk vt100.screen.L
|
||||
lnk vt100.modem.L
|
||||
lnk vt100.key.L
|
||||
lnk vt100.beep.L
|
||||
|
||||
typ $ff
|
||||
sav vt100.sys
|
||||
|
@ -15,6 +15,7 @@
|
||||
ext disable_cursor,enable_cursor,cursor_vector
|
||||
ext erase_screen
|
||||
ext init_tabs
|
||||
ext init_audio
|
||||
|
||||
main debug main
|
||||
|
||||
@ -96,6 +97,7 @@ init
|
||||
jsr erase_screen
|
||||
jsr init_modem
|
||||
jsr init_tabs
|
||||
jsr init_audio
|
||||
rts
|
||||
|
||||
|
||||
@ -185,7 +187,8 @@ ctrl_1f
|
||||
|
||||
|
||||
ctrl_07 ; ring the bell.
|
||||
rts
|
||||
ext beep
|
||||
jmp beep
|
||||
|
||||
ctrl_1b ; escape -
|
||||
* vt100 - aborts current escape sequence and starts a new one.
|
||||
|
Loading…
Reference in New Issue
Block a user