Interfacing ATTINY85 with AD7705 ADC, Pin decleration issues

The goal here is to read a voltage using the AD7705 via SPI.

My code is not currently working. I managed to get my code working on a Teensy, I went with that route first since I could debug through the serial window, and it is familiar to me. However I need something smaller, cheaper, and less current draining than a Teensy for this project.

I then started running into issues when I compiled for the ATTINY85 since the ATTINY85 does not have dedicated SPI hardware, it uses USI hardware to make SPI happen. So registers that previously existed, such as SPDR, no longer exist on the TINY. Because of this, I can not simply compile my teensy code on my TINY, as I had hoped.

My question is, if I replace the function that I previously used for SPI transfer

  byte spiTransfer(volatile byte data) {
        SPDR = data;

        while (!(SPSR & _BV(SPIF)));

        return SPDR;
    };

and replace it with the following confusing code created for this function in the library TinySPI, will it transfer exactly as before?

    byte spiTransfer(volatile byte data) {
    USIDR = data;
    USISR = _BV(USIOIF);                //clear counter and counter overflow interrupt flag
    ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { //ensure a consistent clock period
        while ( !(USISR & _BV(USIOIF)) ) USICR |= _BV(USITC);
    }
    return USIDR;
    };

Referencing that same library, it is my understanding that pin declarations are different for the ATTINY then they would be an arduino compatible device, such as the Teensy, I am not sure what is going on the function below, but i believe it is necessary for functionality of the TINY. Can anyone shine some light on this issue?

void AD770X::begin(void)
{
    USICR &= ~(_BV(USISIE) | _BV(USIOIE) | _BV(USIWM1));
    USICR |= _BV(USIWM0) | _BV(USICS1) | _BV(USICLK);
    SPI_DDR_PORT |= _BV(USCK_DD_PIN);   //set the USCK pin as output
    SPI_DDR_PORT |= _BV(DO_DD_PIN);     //set the MISO pin as output (data out)
    SPI_DDR_PORT &= ~_BV(DI_DD_PIN);    //set the MOSI pin as input (data in)
}

Do i have to initalize the pins as done above (which is very confusing) Or can i declare them as shown below, which is far easier.
static const int pinMOSI = PB0; //unsure if this is how to declare attiny85 pins
pinMode(pinMOSI, OUTPUT); //declaring MOSI as output

I'm also attaching the full code if something is not clear from above and there is a saint out there that can help me solve this problem. Ignore the bluetooth stuff, I am using an HC-05 bluetooth module to transmit the translated value to a serial monitor on a Raspberry Pi so i may read my output, that has been tested and works fine.

Thanks in advance, I am a first time poster on this website and I hope I'm not violating any rules.

adccode.ino (1.16 KB)

AD770x.cpp (3.21 KB)

AD770X.h (3.95 KB)