diff --git a/Common/MB-Macros.a b/Common/MB-Macros.a index b9acf1d..39147f1 100644 --- a/Common/MB-Macros.a +++ b/Common/MB-Macros.a @@ -1,6 +1,7 @@ SPECTRUM128_STEREO = 1 ; L = A+Bx0.5, R = C'+B'x0.5 DUAL_MONO = 0 ; L = A+B+C, R=A'+B'+C' +USE_PHASOR = 1 !macro MB_Init1 .RegSongNum { @@ -18,7 +19,7 @@ nMaskB: !byte 0 ; Voice-B mask (0=enable) nMaskC: !byte 0 ; Voice-C mask (0=enable) ; nAttA: !byte 0 ; Attenuation of Voice-A -nAttB: !byte 1 ; Attenuation of Voice-B : B Volume / 2 (logarithmic, so: if (A) A--) +nAttB: !byte 1 ; Attenuation of Voice-B : B Volume / 2 (logarithmic, so: if (B) B--) nAttC: !byte 0 ; Attenuation of Voice-C ; pAYRegValues: !word AYRegValues ; For VU-meter @@ -43,7 +44,7 @@ SongNumOK: ; . Saving ZPBlock lda #1<<6 -MB0: sta CARD_BASE+SY6522_IER ; Disable Timer1 IRQ +MB0: sta CARD_BASE+SY6522_IER+SY6522_A_PH_BASE ; Disable Timer1 IRQ FindMB: @@ -89,22 +90,38 @@ GotMBSlot: ; +!if USE_PHASOR { ; Phasor 2MHz mode + lda MBBaseH + asl + asl + asl + asl ; slot * 16 + clc + adc #PH_PHASOR + tax + lda $c080,x +} + +!if USE_PHASOR { + lda #$1f ; Phasor has 2 extra chip-select bits (b4:3) +}else{ lda #$07 - ldy #SY6522_DDRB +} + ldy #SY6522_DDRB+SY6522_A_PH_BASE sta (MBBase),y - ldy #SY6522_DDRB+$80 + ldy #SY6522_DDRB+SY6522_B_BASE sta (MBBase),y lda #$ff - ldy #SY6522_DDRA + ldy #SY6522_DDRA+SY6522_A_PH_BASE sta (MBBase),y - ldy #SY6522_DDRA+$80 + ldy #SY6522_DDRA+SY6522_B_BASE sta (MBBase),y - lda #AY_RESET - ldy #SY6522_ORB + lda #AY_RESET ; Phasor chip-select b4:3=%00 (so select both AY's) + ldy #SY6522_ORB+SY6522_A_PH_BASE sta (MBBase),y - ldy #SY6522_ORB+$80 + ldy #SY6522_ORB+SY6522_B_BASE sta (MBBase),y ldx nSongNum @@ -127,23 +144,23 @@ NotFini: sta nFrameNum+2 ; Setup Timer1 IRQ to trigger at 50Hz - ; Apple CLK = 1.022727 MHz, so set Timer1=0x4fe7 + ; Apple NTSC CLK = 1.022727 MHz, so set Timer1=0x4fe7 sei lda #$e7 - ldy #SY6522_TIMER1L_COUNTER + ldy #SY6522_TIMER1L_COUNTER+SY6522_A_PH_BASE sta (MBBase),y lda #$4f - ldy #SY6522_TIMER1H_COUNTER + ldy #SY6522_TIMER1H_COUNTER+SY6522_A_PH_BASE sta (MBBase),y lda #1<<6 - ldy #SY6522_ACR + ldy #SY6522_ACR+SY6522_A_PH_BASE sta (MBBase),y ; Free running timer lda #1<<7 | 1<<6 - ldy #SY6522_IER + ldy #SY6522_IER+SY6522_A_PH_BASE sta (MBBase),y ; Enable Timer1 IRQ lda #