From b49665512f13ddf289fc73d4fd10d960daa3204e Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Thu, 18 Apr 2024 13:31:28 +0200 Subject: [PATCH] dead code dropped --- sound-driver/Makefile | 2 +- sound-driver/mute.c | 4 +- sound-driver/{ay_3_8913.c => psg.c} | 0 sound-driver/sn76489an.c | 171 ---------------------------- 4 files changed, 4 insertions(+), 173 deletions(-) rename sound-driver/{ay_3_8913.c => psg.c} (100%) delete mode 100644 sound-driver/sn76489an.c diff --git a/sound-driver/Makefile b/sound-driver/Makefile index 19994eb..957525a 100644 --- a/sound-driver/Makefile +++ b/sound-driver/Makefile @@ -13,7 +13,7 @@ CFLAGS+= -g3 -ggdb -gdwarf-2 LDFLAGS=-mmcu=$(MCU) -L $(TOOLCHAIN_PREFIX)/include -$(ARTIFACT).elf: main.o scheduler.o spi.o spi_init.o sequencer.o melody_tetris.o melody_tusch1.o ay_3_8913.o mute.o +$(ARTIFACT).elf: main.o scheduler.o spi.o spi_init.o sequencer.o melody_tetris.o melody_tusch1.o psg.o mute.o $(CC) -o $@ $(LDFLAGS) $^ $(OBJDUMP) -D $(ARTIFACT).elf > $(ARTIFACT).txt diff --git a/sound-driver/mute.c b/sound-driver/mute.c index 1b11ecc..c2b4280 100644 --- a/sound-driver/mute.c +++ b/sound-driver/mute.c @@ -6,7 +6,9 @@ void muteInit() { // BIT6: MuteCtrl P1DIR |= BIT6; - P1OUT &= ~BIT6; + + // initially, mute + P1OUT |= BIT6; } void mute() { diff --git a/sound-driver/ay_3_8913.c b/sound-driver/psg.c similarity index 100% rename from sound-driver/ay_3_8913.c rename to sound-driver/psg.c diff --git a/sound-driver/sn76489an.c b/sound-driver/sn76489an.c deleted file mode 100644 index d887b8e..0000000 --- a/sound-driver/sn76489an.c +++ /dev/null @@ -1,171 +0,0 @@ -#include -#include -#include - -#include "psg.h" -#include "scheduler.h" - - -// generated using utils/calc-76489an.py -const uint16_t frequencyCodes[8][12] = { - { 3420, 3229, 3047, 2876, 2715, 2562, 2419, 2283, 2155, 2034, 1920, 1812 }, - { 1710, 1614, 1524, 1438, 1357, 1281, 1209, 1141, 1077, 1017, 960, 906 }, - { 855, 807, 762, 719, 679, 641, 605, 571, 539, 508, 480, 453 }, - { 428, 404, 381, 360, 339, 320, 302, 285, 269, 254, 240, 226 }, - { 214, 202, 190, 180, 170, 160, 151, 143, 135, 127, 120, 113 }, - { 107, 101, 95, 90, 85, 80, 76, 71, 67, 64, 60, 57 }, - { 53, 50, 48, 45, 42, 40, 38, 36, 34, 32, 30, 28 }, - { 27, 25, 24, 22, 21, 20, 19, 18, 17, 16, 15, 14 } -}; - - -#define ADDR_DATA_REG P2OUT -#define BUS_CTRL_REG P1OUT -#define BUS_CTRL_IN_REG P1IN -#define _CS0 BIT0 -#define _CS1 BIT1 -#define _WE BIT2 -#define READY BIT3 - -#define CHANNEL_A_PERIOD_ADDR 0 -#define CHANNEL_A_ATTEN_ADDR 1 -#define CHANNEL_B_PERIOD_ADDR 2 -#define CHANNEL_B_ATTEN_ADDR 3 -#define CHANNEL_C_PERIOD_ADDR 4 -#define CHANNEL_C_ATTEN_ADDR 5 - -#define IGNORE_OCTET 0xff - -uint8_t psgAmplitudeShadowValue[3]; - -static void delay() { - asm volatile ( - "push r12\n" - "mov.w #5, r12\n" - "loop:\n" - "dec.w r12\n" - "jnz loop\n" - "pop r12\n" - ); -} - -inline static void WRITE_CYCLE(uint8_t chipNo) { - if (chipNo == 0) { - BUS_CTRL_REG &= ~_CS0; - } else { - BUS_CTRL_REG &= ~_CS1; - } - - BUS_CTRL_REG &= ~_WE; - - delay(); - - while ((BUS_CTRL_IN_REG & READY) == 0); - - BUS_CTRL_REG |= _WE; - - if (chipNo == 0) { - BUS_CTRL_REG |= _CS0; - } else { - BUS_CTRL_REG |= _CS1; - } - - delay(); -} - -static void psgWrite(uint8_t chipNo, uint8_t value) { - ADDR_DATA_REG = value; - WRITE_CYCLE(chipNo); -} - -static void psgWriteFrequency(uint8_t channel, uint16_t frequencyCode) { - uint8_t chipNo = channel / 3; - uint8_t regAddr = (channel % 3) * 2; - - // bit order in frequncyCode and order in octet on data bus are reversed - // see datacheat cp. 1 and cp. 6 - uint8_t firstOctet = 0x01; - firstOctet |= ((regAddr & 0x04) > 1); - firstOctet |= ((regAddr & 0x02) < 1); - firstOctet |= ((regAddr & 0x01) < 3); - uint8_t lowerPart = frequencyCode & 0x0f; - firstOctet |= ((lowerPart & 0x08) << 1); - firstOctet |= ((lowerPart & 0x04) << 3); - firstOctet |= ((lowerPart & 0x02) << 5); - firstOctet |= ((lowerPart & 0x01) << 7); - - uint8_t secondOctet = 0; - uint8_t upperPart = (frequencyCode & 0x03f0) >> 4; - secondOctet |= ((upperPart & 0x20) >> 3); - secondOctet |= ((upperPart & 0x10) >> 1); - secondOctet |= ((upperPart & 0x08) << 1); - secondOctet |= ((upperPart & 0x04) << 3); - secondOctet |= ((upperPart & 0x02) << 5); - secondOctet |= ((upperPart & 0x01) << 7); - - ADDR_DATA_REG = firstOctet; - WRITE_CYCLE(chipNo); - - ADDR_DATA_REG = secondOctet; - WRITE_CYCLE(chipNo); -} - -void psgAmplitude(uint8_t channel, uint8_t volume) { - psgAmplitudeShadowValue[channel] = volume; - uint8_t chipNo = channel / 3; - uint8_t regAddr = ((channel % 3) * 2) + 1; - - uint8_t attenuation = 15 - volume; - - uint8_t firstOctet = 0x01; - firstOctet |= ((regAddr & 0x04) >> 1); - firstOctet |= ((regAddr & 0x02) << 1); - firstOctet |= ((regAddr & 0x01) << 3); - firstOctet |= ((attenuation & 0x01) << 7); - firstOctet |= ((attenuation & 0x02) << 5); - firstOctet |= ((attenuation & 0x04) << 3); - firstOctet |= ((attenuation & 0x08) << 1); - - ADDR_DATA_REG = firstOctet; - WRITE_CYCLE(chipNo); -} - -void psgPlayTone(uint8_t channel, uint8_t volume, t_octave octave, t_note note) { - if (note == e_Pause) { - psgAmplitude(channel, 0); - } else { -// if (psgAmplitudeShadowValue[channel] == 0) { - psgAmplitude(channel, volume); -// } - psgWriteFrequency(channel, frequencyCodes[octave][note]); - } -} - -void psgInit() { - // address/data bus - P2DIR = 0xff; - P2SEL = 0; - P2SEL2 = 0; - - // bus control lines - // output: - // BIT0: /CS chip 0 - // BIT1: /CS chip 1 - // BIT2: /WE - // input: - // BIT3: READY - P1DIR |= BIT0 | BIT1 | BIT2; - P1DIR &= ~BIT3; - // immediately disable all outputs, all are active low - P1OUT |= BIT0 | BIT1 | BIT2; - - // shutdown all channels including noise - psgWrite(0, 0b11111001); - psgWrite(0, 0b11111101); - psgWrite(0, 0b11111011); - psgWrite(0, 0b11111111); - -// psgPlayTone(0, 5, e_O_3, e_A); - psgAmplitude(0, 3); -} -