lemm: get music working on IIc
This commit is contained in:
parent
76810c1863
commit
df1980d214
|
@ -45,7 +45,7 @@ mockingboard_detect:
|
||||||
; it difficult if you actually wanted to use any
|
; it difficult if you actually wanted to use any
|
||||||
; Applesoft/Monitor ROM routines
|
; Applesoft/Monitor ROM routines
|
||||||
|
|
||||||
.ifdef PT3_ENABLE_APPLE_IIC
|
;.ifdef PT3_ENABLE_APPLE_IIC
|
||||||
lda APPLEII_MODEL
|
lda APPLEII_MODEL
|
||||||
cmp #'C'
|
cmp #'C'
|
||||||
bne not_iic
|
bne not_iic
|
||||||
|
@ -56,7 +56,7 @@ mockingboard_detect:
|
||||||
|
|
||||||
sta MOCK_6522_DDRA1 ; $C403
|
sta MOCK_6522_DDRA1 ; $C403
|
||||||
sta MOCK_6522_T1CL ; $C404
|
sta MOCK_6522_T1CL ; $C404
|
||||||
.endif
|
;.endif
|
||||||
|
|
||||||
not_iic:
|
not_iic:
|
||||||
lda #$00
|
lda #$00
|
||||||
|
|
|
@ -172,57 +172,19 @@ mockingboard_setup_interrupt:
|
||||||
|
|
||||||
|
|
||||||
; for this game with things in language card including
|
; for this game with things in language card including
|
||||||
; irq handler, always force IIc mode
|
; irq handler, always force IIc mode (where RAM swapped in
|
||||||
|
; and we put the irq handler address directly up at $FFFE)
|
||||||
|
|
||||||
;.ifdef PT3_ENABLE_APPLE_IIC
|
|
||||||
; lda APPLEII_MODEL
|
|
||||||
; cmp #'C'
|
|
||||||
; bne done_iic_hack
|
|
||||||
|
|
||||||
; bypass the firmware interrupt handler
|
|
||||||
; should we do this on IIe too? probably faster
|
|
||||||
|
|
||||||
; first we have to copy the ROM to the language card
|
|
||||||
.if 0
|
|
||||||
sei ; disable interrupts
|
|
||||||
|
|
||||||
copy_rom_loop:
|
|
||||||
lda $c089 ; read ROM, write RAM1
|
|
||||||
lda $c089
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
read_rom_loop:
|
|
||||||
lda $D000,Y
|
|
||||||
sta $400,Y ; note this uses text page as
|
|
||||||
; temporary data store
|
|
||||||
iny
|
|
||||||
bne read_rom_loop
|
|
||||||
|
|
||||||
lda $c08B ; read/write RAM1
|
|
||||||
lda $c08B ;
|
|
||||||
|
|
||||||
write_rom_loop:
|
|
||||||
lda $400,Y
|
|
||||||
sta $D000,Y
|
|
||||||
iny
|
|
||||||
bne write_rom_loop
|
|
||||||
|
|
||||||
inc read_rom_loop+2
|
|
||||||
inc write_rom_loop+5
|
|
||||||
bne copy_rom_loop
|
|
||||||
.endif
|
|
||||||
lda #<interrupt_handler
|
lda #<interrupt_handler
|
||||||
sta $fffe
|
sta $fffe
|
||||||
lda #>interrupt_handler
|
lda #>interrupt_handler
|
||||||
sta $ffff
|
sta $ffff
|
||||||
|
|
||||||
|
; nop out the "lda $45" since we are bypassing the ROM irq handler
|
||||||
; nop out the "lda $45" in the irq handler
|
; that puts A in $45
|
||||||
lda #$EA
|
lda #$EA
|
||||||
sta interrupt_smc
|
sta interrupt_smc
|
||||||
sta interrupt_smc+1
|
sta interrupt_smc+1
|
||||||
;.endif
|
|
||||||
done_iic_hack:
|
|
||||||
|
|
||||||
|
|
||||||
;=========================
|
;=========================
|
||||||
|
@ -231,10 +193,10 @@ done_iic_hack:
|
||||||
; Vector address goes to 0x3fe/0x3ff
|
; Vector address goes to 0x3fe/0x3ff
|
||||||
; FIXME: should chain any existing handler
|
; FIXME: should chain any existing handler
|
||||||
|
|
||||||
lda #<interrupt_handler
|
; lda #<interrupt_handler
|
||||||
sta $03fe
|
; sta $03fe
|
||||||
lda #>interrupt_handler
|
; lda #>interrupt_handler
|
||||||
sta $03ff
|
; sta $03ff
|
||||||
|
|
||||||
;============================
|
;============================
|
||||||
; Enable 50Hz clock on 6522
|
; Enable 50Hz clock on 6522
|
||||||
|
|
Loading…
Reference in New Issue