mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-08-14 10:29:46 +00:00
e7f1907f38
using PRORWTS seek now also fixed subtle bug in qboot when loading partial tracks also a bunch of movement in the demo stuff by accident, oops but it's 2am and I'm too lazy to back that out
78 lines
2.3 KiB
ArmAsm
78 lines
2.3 KiB
ArmAsm
; Mockingboad programming:
|
|
; + Has two 6522 I/O chips connected to two AY-3-8910 chips
|
|
; + Optionally has some speech chips controlled via the outport on the AY
|
|
; + Often in slot 4
|
|
; TODO: how to auto-detect?
|
|
; References used:
|
|
; http://macgui.com/usenet/?group=2&id=8366
|
|
; 6522 Data Sheet
|
|
; AY-3-8910 Data Sheet
|
|
|
|
;========================
|
|
; Mockingboard card
|
|
; Essentially two 6522s hooked to the Apple II bus
|
|
; Connected to AY-3-8910 chips
|
|
; PA0-PA7 on 6522 connected to DA0-DA7 on AY
|
|
; PB0 on 6522 connected to BC1
|
|
; PB1 on 6522 connected to BDIR
|
|
; PB2 on 6522 connected to RESET
|
|
|
|
|
|
; left speaker
|
|
MOCK_6522_ORB1 = $C400 ; 6522 #1 port b data
|
|
MOCK_6522_ORA1 = $C401 ; 6522 #1 port a data
|
|
MOCK_6522_DDRB1 = $C402 ; 6522 #1 data direction port B
|
|
MOCK_6522_DDRA1 = $C403 ; 6522 #1 data direction port A
|
|
MOCK_6522_T1CL = $C404 ; 6522 #1 t1 low order latches
|
|
MOCK_6522_T1CH = $C405 ; 6522 #1 t1 high order counter
|
|
MOCK_6522_T1LL = $C406 ; 6522 #1 t1 low order latches
|
|
MOCK_6522_T1LH = $C407 ; 6522 #1 t1 high order latches
|
|
MOCK_6522_T2CL = $C408 ; 6522 #1 t2 low order latches
|
|
MOCK_6522_T2CH = $C409 ; 6522 #1 t2 high order counters
|
|
MOCK_6522_SR = $C40A ; 6522 #1 shift register
|
|
MOCK_6522_ACR = $C40B ; 6522 #1 auxilliary control register
|
|
MOCK_6522_PCR = $C40C ; 6522 #1 peripheral control register
|
|
MOCK_6522_IFR = $C40D ; 6522 #1 interrupt flag register
|
|
MOCK_6522_IER = $C40E ; 6522 #1 interrupt enable register
|
|
MOCK_6522_ORANH = $C40F ; 6522 #1 port a data no handshake
|
|
|
|
|
|
; right speaker
|
|
MOCK_6522_ORB2 = $C480 ; 6522 #2 port b data
|
|
MOCK_6522_ORA2 = $C481 ; 6522 #2 port a data
|
|
MOCK_6522_DDRB2 = $C482 ; 6522 #2 data direction port B
|
|
MOCK_6522_DDRA2 = $C483 ; 6522 #2 data direction port A
|
|
|
|
; AY-3-8910 commands on port B
|
|
; RESET BDIR BC1
|
|
MOCK_AY_RESET = $0 ; 0 0 0
|
|
MOCK_AY_INACTIVE = $4 ; 1 0 0
|
|
MOCK_AY_READ = $5 ; 1 0 1
|
|
MOCK_AY_WRITE = $6 ; 1 1 0
|
|
MOCK_AY_LATCH_ADDR = $7 ; 1 1 1
|
|
|
|
|
|
;========================
|
|
;========================
|
|
; Mockingboard Init
|
|
;========================
|
|
;========================
|
|
; Left channel only
|
|
|
|
mockingboard_init:
|
|
|
|
;=========================
|
|
; Initialize the 6522s
|
|
; Reset Left AY-3-8910
|
|
;===========================
|
|
|
|
ldx #$FF
|
|
stx MOCK_6522_DDRB1
|
|
stx MOCK_6522_DDRA1
|
|
|
|
inx ; #MOCK_AY_RESET $0
|
|
stx MOCK_6522_ORB1
|
|
ldx #MOCK_AY_INACTIVE ; $4
|
|
stx MOCK_6522_ORB1
|
|
|