mirror of
https://github.com/KarolS/millfork.git
synced 2024-11-01 05:05:32 +00:00
d49e5cf022
I'm fairly sure this is the correct sequence of instructions to disable irq - tested in my own project. The original macro didn't work for me.
45 lines
792 B
Plaintext
45 lines
792 B
Plaintext
// Hardware addresses for C64
|
|
|
|
#if not(CBM_64) && not(CBM_64_COMPAT)
|
|
#warn c64_cia module should be only used on C64-compatible targets
|
|
#endif
|
|
|
|
// CIA1
|
|
volatile byte cia1_pra @$DC00
|
|
volatile byte cia1_prb @$DC01
|
|
byte cia1_ddra @$DC02
|
|
byte cia1_ddrb @$DC03
|
|
volatile byte cia2_pra @$DD00
|
|
volatile byte cia2_prb @$DD01
|
|
byte cia2_ddra @$DD02
|
|
byte cia2_ddrb @$DD03
|
|
|
|
macro asm void cia_disable_irq() {
|
|
? LDA #$7f
|
|
! STA $dc0d
|
|
! STA $dd0d
|
|
! LDA $dc0d
|
|
! LDA $dd0d
|
|
}
|
|
|
|
|
|
macro void vic_bank_0000() {
|
|
cia2_ddra = 3
|
|
cia2_pra = 3
|
|
}
|
|
|
|
macro void vic_bank_4000() {
|
|
cia2_ddra = 3
|
|
cia2_pra = 2
|
|
}
|
|
|
|
macro void vic_bank_8000() {
|
|
cia2_ddra = 3
|
|
cia2_pra = 1
|
|
}
|
|
|
|
macro void vic_bank_C000() {
|
|
cia2_ddra = 3
|
|
cia2_pra = 0
|
|
}
|