kategoria: Asembler
[#31] Re: AGA startup, Copper list i kolory

@Don_Adan, post #30

Żeby użyć vasm, to trzeba by mieć ten kod w osobnym pliku. Wielokrotnie wygodniej jest mieć małą wstawkę w jednym miejscu pliku .c, nawet jeśli mało elegancką, zwłaszcza jak to jest jednorazowa potrzeba użycia kodu maszynowego.

Co masz na myśli pisząc AddIntVec? Google nie znajduje nic. Chodzi Ci o SetIntVector? Nie wszystkie przerwania możesz tak zamontować, niektóre (PORTS, COPER, VERTB, EXTER, NMI) mają kaskadę handlerów i wtedy co najwyżej możesz dołożyć swój na AddIntServer(). W tym przypadku masz dodatkowy narzut od reszty softu, w zależności od tego jaki ustawisz sobie priorytet. No i niewskazane jest kończenie kaskady na swoim handlerze przy VERTB, tak przynajmniej mówi oficjalna dokumentacja. W obu przypadkach masz zawsze spowolnienie od rzeczy, które system zrobi przed wywołaniem zamontowanych handlerów.

Więcej chociażby tu.
[#32] Re: AGA startup, Copper list i kolory

@teh_KaiN, post #31

Sorki, chodzilo mi o AddIntServer, lata bez uruchomienia Amigi robia swoje. Co do narzutow, to wczesniej system byl wylaczony wiec chyba zadnych nie bylo. U mnie dzialalo i na A500 i na A4000T 68040 (a to chyba najbardziej kaprysny oryginalny konfig Amigowy). Choc sa tacy, ktorzy twierdza, ze nie nalezy uzywac systemu po jego wylaczeniu. Moze maja racje. A co do kompilatora C, to myslalem, ze po prostu on asembluje ten kod uzywajac do tego Vasm jako narzedzia. Bo oryginalny syntax 68k w gcc to jest jakas makabra jak dla mnie.
[#33] Re: AGA startup, Copper list i kolory

@c64portal, post #11

Hej,
akurat zaczałem się bawić czyms podobnym,
po sukcesie wyświetlenia bitmapy 32 kolorowej chciałem wyswietlić 256 kolorów.

niestety prawidłowo działaja tylko pierwsze 32 kolory, pozostałe to jakies śmieci.

Twoja funkcję tak zmieniłem bo u mnie kazdy kolor jest jako ULONG,
przy czym wykonuje ją tylko raz zanim podłacze Cooper list.

for (int j = 1; j < 9; j++)
{
        for (int i = 0; i < 32; i++)
        {
            nyb2 = 0x000;
			custom.bplcon3 = nyb1 | nyb2;

            UBYTE r = ((col[i] >> 16) & 0xFF) >>4 ;			
			UBYTE g = ((col[i] >> 8) & 0xFF) >>4 ;
			UBYTE b = (col[i] & 0xFF) >>4 ;
			custom.color[i] = r<<8 | g<<4 | b;

            nyb2 = 0x200;
	    	custom.bplcon3 = nyb1 | nyb2;

            r = ((col[i] >> 16) & 0xFF) &0x0f ;
			g = ((col[i] >> 8) & 0xFF) &0x0f ;
			b = (col[i] & 0xFF) & 0x0f ;
			custom.color[i] = r<<8 | g<<4 | b;
        }

        nyb1 = 0x2000*j;
}



jesli chodzi o inicjalizację 8 bitplanów to tak to u mnie wygląda:

static UWORD __chip coplist[] = 
{
    COP_MOVE(DIWSTRT, 0x2c81),
    COP_MOVE(DIWSTOP, 0x2cc1),

    COP_MOVE(BPLCON0, 0x210),

    COP_MOVE(FMODE, 0), 

    COP_MOVE(DDFSTRT, 0x0038),
    COP_MOVE(DDFSTOP, 0x00d0),

    COP_MOVE(BPL1MOD, 0),
    COP_MOVE(BPL2MOD, 0),

    COP_MOVE(BPL1PTH, 0),
    COP_MOVE(BPL1PTL, 0),
    COP_MOVE(BPL2PTH, 0),
    COP_MOVE(BPL2PTL, 0),
    COP_MOVE(BPL3PTH, 0),
    COP_MOVE(BPL3PTL, 0),
    COP_MOVE(BPL4PTH, 0),
    COP_MOVE(BPL4PTL, 0),
    COP_MOVE(BPL5PTH, 0),
    COP_MOVE(BPL5PTL, 0),
    COP_MOVE(BPL6PTH, 0),
    COP_MOVE(BPL6PTL, 0),
    COP_MOVE(BPL7PTH, 0),
    COP_MOVE(BPL7PTL, 0),
    COP_MOVE(BPL8PTH, 0),
    COP_MOVE(BPL8PTL, 0),

    COP_WAIT_END,
    COP_WAIT_END
};



wskazniki do bitplanów ustawiam tak (PLANES = 8)


ULONG addr;
    int cop__bpl1pth_start = COP__BPL1PTH_START;

     for (int i = 0; i < PLANES; i++) 
     {
        addr = (ULONG)&(data[i * PLANE_SIZE]);

        coplist[cop__bpl1pth_start] = (addr >> 16) & 0xffff;
        coplist[cop__bpl1pth_start + 2] = addr & 0xffff;
        cop__bpl1pth_start += 4; // next bitplane
    }



kończa mi się pomysły, cały dzień już nad tym siedzę
chyba wróce do systemowych funkcji bo HW to masakra troche
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem