251

(23 odpowiedzi, napisanych Programowanie - 8 bit)

tebe napisał/a:

klawiatura nie generuje dodatkowych przerwań IRQ

"inc IRQEN" włącza przerwanie klawiatury. Naciśnięcie klawisza powoduje zapętlenie przerwań, bo nie jest potwierdzane obsłużenie przerwania klawiatury. Rozwiązaniem jest wyłączenie skanowania klawiatury, ale bez resetu POKEYa, który zatrzymałby dzielniki 64kHz i 15kHz i generatory zniekształceń: SKCTL=1.

252

(23 odpowiedzi, napisanych Programowanie - 8 bit)

Druga wersja:

  • Zamiast blokować przerwanie na dole ekranu, przestawiam timer, aby tyknął dopiero w następnej ramce. Timer trzeba teraz też ustawiać w VBLKI.

  • Opcja wykrycia i obsługi NTSC

  • Brak błędów związanych z wyrównaniem kodu

  • Brak DLI na górze - tryb może zaczynać się na samej górze ekranu

  • Opcjonalne DLI na dole - oszczędza cykli IRQ

253

(23 odpowiedzi, napisanych Programowanie - 8 bit)

Rozwiązanie TeBe ma kilka wad:

  • strata 78 cykli co 4 linie to gorszy wynik niż rozwiązanie oparte na DLI co 8 linii

  • użycie instrukcji 7-cyklowych w programie głównym w trakcie wyświetlania obrazu kaszani tryb

  • POKEY musi być skonfigurowany na 15kHz, co ogranicza autora ewentualnej muzyki, który i tak jest ograniczony przez liczbę dostępnych kanałów (może się przydać stereo)

  • resetowanie POKEYa w DLI kaszani ewentualną muzykę

Oto moje rozwiązanie:

  • procedura co 8 linii bez traconych cykli

  • z opcjonalną obsługą instrukcji 7-cyklowych

  • z konfigurowalnym wykorzystaniem POKEYa: wybór kanału dla przerwania, 15kHz lub para kanałów (wtedy pozostałe dwa kanały mogą grać dowolnie)

  • z jednorazowym resetowaniem POKEYa w przypadku 15kHz i tylko jednym zapisem STIMER w przypadku pary kanałów

Mam pod ręką tylko Altirrę, proszę o sprawdzenie na Atari.

O co chodzi z instrukcjami 7-cyklowymi:

Jak pisałem, mamy ograniczone okienko czasowe na zapisanie 13 do VSCROL. Przerwanie nie przerywa instrukcji, musi się ona wykonać w całości. Jeśli procesor wykonuje instrukcję 7-cyklową w momencie zgłoszenia przerwania, nie będzie ono w stanie wstrzelić się w okienko czasowe.
Możemy:
a. unikać tych instrukcji w programie głównym: są to BRK i INC/DEC/ASL/LSR/ROL/ROR abcd,X, plus wiele instrukcji nielegalnych i 65816
b. odpalać przerwanie wcześniej i synchronizować się z WSYNC (opcja irq9pp_LONGOP), oczywiście w ten sposób tracimy trochę cykli
Instrukcje nielegalne i 65816 mogą mieć nawet więcej, niż 7 cykli. Nie testowałem dla nich mojego rozwiązania z WSYNC.

254

(32 odpowiedzi, napisanych Fabryka - 8bit)

Nareszcie komentarz z jakimś konkretem: użytkownik próbuje otworzyć pliki CPT z lat 2001-2005 (stawiam, że Corel PhotoPaint na Windowsie XP). A więc to są komputery vintage!

255

(14 odpowiedzi, napisanych Programowanie - 8 bit)

Sikor napisał/a:

@Fox: dwukropek oznacza koniec linii, pod samym TB działa ok, ale to też sprawdzę

Nie w REM ani DATA. Zresztą widzisz, że w listingu kropka nie rozwija się do REM.

10 DIM A$(30)
20 READ A$:PRINT A$
30 DATA FF:.GREETZY DLA SIKORA
RUN
FF:.GREETZY DLA SIKORA

256

(14 odpowiedzi, napisanych Programowanie - 8 bit)

Czy $9C00 nie jest zajęte przez skompilowany program?
Xxl: tak, chodziło mi o taką prockę.
Sikor: gdzie chcesz wstawić org? Nie wołaj przez USR, to procedura przerwania a nie do wołania z BASICa.

257

(14 odpowiedzi, napisanych Programowanie - 8 bit)

TeBe ma rację, sama procedura jest poprawna. Aczkolwiek mogłaby być krótsza (wystarczy użyć samego akumulatora).
Podejrzane są natomiast:

  • brak inicjalizacji zmiennej ADDR

  • komentarze w DATA. Atari BASIC ich nie obsługuje (stawiam że TBXL też) - DATA przyjmuje wszystko do końca linii, więc READ to odczyta i być może skompilowany DEC ma z tym problem

258

(23 odpowiedzi, napisanych Programowanie - 8 bit)

tebe napisał/a:

próbowałem też "ożenić" IRQ z zaprezentowaną przez FOX-a metodą VSCROLL-a, tryb 9++, nie udało się, WSYNC ma niewątpliwą zaletę w tym względzie

IRQ powinno działać.

tebe napisał/a:

na podstawie kodu obsługi IRQ Phaerona http://atariage.com/forums/topic/244946 ... try4041309

można dowiedzieć się że jest trick dotyczący wyłączenia/włączenia IRQ (działa bodaj tylko z licznikem #4)

dotychczasowe

  mva #0 IRQEN
  mva #4 IRQEN

można zastąpić zwięzłym

 inc IRQEN

Piękne. Ale czy wciskając klawisze nie generujesz dodatkowych IRQ?

259

(20 odpowiedzi, napisanych Sprzęt - 8bit)

laoo/ng napisał/a:

Konkretnie to myślę nad rozszerzeniem istniejącego trybu działania na inne tryby graficzne, które w praktyce byłoby swoistym downgradem możliwości, ale powinno dać zauważalnego kopniaka wydajnościowego.

A co za problem powiększyć przy pomocy blittera?

flashjazzcat napisał/a:

Amazing that so little software was written using the features available (despite lavish frameworks created by tebe, Drac030, etc), and yet the focus is on what's not working properly or how the device could do more.

Welcome to Poland! ;)

mono napisał/a:

- dx/dy z częścią ułamkową - obroty i skalowania

Skoro już marudzimy, to to jest rzecz, której najbardziej mi brakuje w tym sprzęcie.

260

(33 odpowiedzi, napisanych Software, Gry - 8bit)

Wow! Pozostaje napisać odtwarzacz MP3.

261

(16 odpowiedzi, napisanych Sprzęt - 8bit)

Włączył się Wam tryb suszarkowy.

262

(16 odpowiedzi, napisanych Sprzęt - 8bit)

Nie wiem.

263

(16 odpowiedzi, napisanych Sprzęt - 8bit)

Pin napisał/a:

padł mi dziś ANTIC (...) pracy zmieniającej tryb gfx w czasie rysowania linii

Nie da się zmienić trybu ANTICa w środku linii.

264

(3 odpowiedzi, napisanych Software, Gry - 8bit)

Alley Cat
Kaboom!

265

(26 odpowiedzi, napisanych Fabryka - 8bit)

Rozumiem, że na 600 XL odpalamy tego youtube-a?

266

(75 odpowiedzi, napisanych Programowanie - 8 bit)

    ldx    #<hello
    ldy    #>hello
    jsr    $c642
    ...

hello    dta    c'Hello, world!',$9b

267

(87 odpowiedzi, napisanych Zloty)

Gadu gadu o tramwajach, smacznej wodzie i akademiku. A kompoty jakieś są przewidziane?

268

(14 odpowiedzi, napisanych Programowanie - 8 bit)

W Boulder Dashu jest demo przejścia pierwszego poziomu.
W Karatece jest demo.
W International Karate jest losowe.
Replay chyba był w Fantastic Soccer.

269

(12 odpowiedzi, napisanych Programowanie - 8 bit)

Prawda. Ale ten najszybszy player jest znacznie trudniejszy do obsłużenia. Wykorzystuje kilkukilobajtowy bufor cykliczny, który trzeba napełniać, gdy jest dostępna moc obliczeniowa.
Na początek ten player, który podlinkowałem w poprzednim poście, powinien wystarczyć.

270

(12 odpowiedzi, napisanych Programowanie - 8 bit)

Do dema MPT i ten player. Użyty m.in. w Drunk Chessboard i Numenie. Playery CMC, TMC i RMT są wielokrotnie dłuższe i wolniejsze.

mono, przecież nie będzie emulował Z-80 i całej reszty bebechów LDW na Atmedze.

2. Zapis po obróceniu dyskietki na drugą stronę. Dziurkacze do dyskietek są towarem deficytowym.
3. Czy planujesz udostępnić schemat i źródła?
4. Różne stacje różnie numerują sektory DSDD z punktu widzenia komputera.

273

(4 odpowiedzi, napisanych Software, Gry - 8bit)

Brawo SoTe. Cieszę się, że ASAP ma konkurencję. Można prosić kod źródłowy?

274

(2 odpowiedzi, napisanych Programowanie - 8 bit)

Syn słynnego Larry-ego Walla programuje 6502 w Haskellu:
http://wall.org/~lewis/2013/10/03/inverting.html
http://wall.org/~lewis/2013/10/15/asm-monad.html

275

(21 odpowiedzi, napisanych Bałagan)

Wolę Windows 10 Mail od Thunderbirda. Pytanie 1 dotyczy rozwiązania problemu tworzonego w pytaniu 2. :)