@Fox: przystawka dla cheaterow w grach ;-)
debugowalem i oto wyniki:
oprocz bledu z nieprzechwyceniem przerwan z BPI jest kolejny. mozna generowac niezidentyfikowane (przez OS atari) przerwania poprzez PIA, blad w systemowej procedurze rozpoznania znajduje sie tu:
$C0AD bit $D303
$C0B0 bpl $C0B8
$C0B5 jmp ($0204)
$C0B8
brakuje sprawdzenia bitu 6 $D303 chociazby rozkazem bvc/bvs
cytat z atariki: Rejestr kontroli portu B. Znaczenie bitów:
bit 7: status przerwania IRQ portu B (1 - wystąpiło)
bit 6: nieużywany (zawsze 0)
bit 5: nieużywany (zawsze 1)
bit 4: nieużywany (zawsze 1)
bit 3: sterowanie linią COMMAND gniazda SIO (0 - aktywna)
bit 2: bit wyboru funkcji rejestru PORTB: 0 - rejestr kierunku przepływu danych, 1 - rejestr przesyłania danych.
bit 1: nieużywany (zawsze 0)
bit 0: zezwolenie na przerwanie IRQ portu B (1 - dozwolone)
nieprawda, nieuzywany chyba przez system operacyjny bo normalnie mozna programowac PIA. powinno byc:
bit 7: status przerwania IRQB1 portu B (1 - wystąpiło)
bit 6: status przerwania IRQB2 portu B (1 - wystąpiło)
bit 5: funkcje1
bit 4: funkcje1
bit 3: funkcje1
bit 2: bit wyboru funkcji rejestru PORTB: 0 - rejestr kierunku przepływu danych, 1 - rejestr przesyłania danych.
bit 1: funkcje2
bit 0: funkcje2
w zaleznosci od funkcji1
bit 3: moze byc linią COMMAND gniazda SIO lub wejsciem przerwan
funkcje2: wybieraja zachowanie linii INTERRUPT
nie ma informacji ze linia "COMMAND" MOZE BYC WEJSCIEM PRZERWAN i zglasza to bitem 6 w rejestrze PBCTL PIA?
to samo dotyczy PACTL. mozna zaprogramowac linie MOTOR CTL tak, ze bedzie WEJSCIEM przerwan - tylko tu jest problem taki, ze atari ma sprzetowa blokade w postaci tranzysotra, wiec jesli chcemy odbierac ta linia przerwania nalezy wpiac sie przed tranzystor ;-) tu sobie mozna wymyslec rozszerzenie ktore z tego korzysta bo z gniezda SIO nie mozna wywolac tego przerwania.
czy ktos ze sprzetowcow moze to potwierdzic lub zaprzeczyc?