@Don_Adan, post #304
Jakbym mial strzelac to ACK interrupt problem dla mnie.
move.l (osInt),-(sp) ;WYWOŁUJEMY ORYGINALNĄ PROCEDURĘ PRZERWAŃ PRZEZ WRZUCENIE NA STOS JEJ ADRESU I WYKONANIE RTS rts
move.l 4.w,a6 ;Exec library base address in a6
sub.l a4,a4
btst #0,297(a6) ;68000 CPU?
beq.s .yes68k
lea .GetVBR(PC),a5 ;else fetch vector base address to a4:
jsr -30(a6) ;enter Supervisor mode
*--- save view+coppers ---*
.yes68k:
lea .GfxLib(PC),a1 ;either way return to here and open
jsr OldOpenLibrary(a6) ;graphics library
tst.l d0 ;if not OK,
beq .quit ;exit program.
move.l d0,a5 ;a5=gfxbase
move.l a5,a6
move.l 34(a6),-(sp)
sub.l a1,a1 ;blank screen to trigger screen switch
jsr -222(a6) ;on Amigas with graphics cards
*--- save int+dma ---*
lea $dff000,a6
bsr.w WaitEOF ;wait out the current frame
move.l $1c(a6),-(sp) ;save intena+intreq
move.w 2(a6),-(sp) ;and dma
move.l $6c(a4),-(sp) ;and also the VB int vector for sport.
move.w $1c(a6),osIntena ;save intena+intreq
move.w 2(a6),osDmacon ;and dma
move.l $6c(a4),osInt ;and also the VB int vector for sport.
....@Zbych, post #300
@Phibrizzo, post #307
Czy kontrolujesz moze czy aby rejestr VBR nie jest zerowy?
move.w #%1000011111110000,$96(a6) ;włączenie kanałów DMA move.w #%1101000000101000,$9a(a6) ;włączenie portów i VBint
@Zbych, post #305
@Zbych, post #308
APTR GetVBR(void)
{
APTR vbr = NULL;
// sprytny kawalek kodu w asmie
// movec.l VBR, D0
// RTE
static UWORD getvbr[] = { 0x4e7a, 0x0801, 0x4e73};
SysBase = *(struct ExecBase**)4;
if(((*(struct ExecBase**)4)->AttnFlags) & AFF_68010)
{
vbr = (APTR)(Supervisor((void*)getvbr));
}
return vbr;
} @Zbych, post #308
@Phibrizzo, post #312
Mysle ze robiac wersje pod te konkretne platformy nie jest to konieczne. Szkoda czasu na dekompresje.
@Zbych, post #305
@tukinem, post #314
...czemu służy odłożenie przerwań i copperlisty systemowej jak dobrze rozumuję
@Zbych, post #318
@Zbych, post #322
@Don_Adan, post #324
@Don_Adan, post #324
@Don_Adan, post #324
Nie wiem czy przewidziales taka bardzo rzadko spotykana konfiguracje jak A500+ z 1,5MB chip RAM.
Ja sam nie wiedziałem, ze taki konfig istnieje. Jest watek na PPA o takim konfigu.
@Zbych, post #325
akurat 1.5 chip i A500+ nie testowałem wcześniej ale teraz sprawdziłem na emu i taka konfiguracja działa normalnie
@MarX, post #327