Dyskusja:Programowanie: Jak wyłączyć ROM systemu
From Atariki
Wersja z dnia 12:07, 25 sty 2024 Mono (Dyskusja | wkład) (IRQ i RES w pustym handlerze pod ROM) ← Previous diff |
Wersja z dnia 12:13, 25 sty 2024 Mono (Dyskusja | wkład) (uszczegółowienie) Next diff → |
||
Linia 12: | Linia 12: | ||
- | Do pustego handlera pod ROM mam dwie uwagi: | + | @jhusak: Do pustego handlera pod ROM mam dwie uwagi: |
1. Wektor RES $FFFC jest dostępny do wolnego użycia bo w przypadku wciśnięcia klawisza RESET automatycznie podłączany jest ROM. Można by się spierać co najwyżej o programowy skok JMP (RES), ale wtedy RTI nic tu nie da, ani nawet JMP *, ani RTS. | 1. Wektor RES $FFFC jest dostępny do wolnego użycia bo w przypadku wciśnięcia klawisza RESET automatycznie podłączany jest ROM. Można by się spierać co najwyżej o programowy skok JMP (RES), ale wtedy RTI nic tu nie da, ani nawet JMP *, ani RTS. | ||
- | 2. Jak się Twoim zdaniem zachowa IRQ mając tylko RTI? | + | 2. Jak się Twoim zdaniem zachowa IRQ mając tylko RTI? Bo zgłoszenie IRQ nie zniknie sobie samo z siebie - trzeba je obsłużyć. Jedynym sensownym rozwiązaniem problemu byłoby odroczenie obsługi przerwań przez SEI, ale to się robi w kodzie użytkownika. Więc IRQ też jest w zasadzie dostępny do dowolnego użycia :) Tylko co najwyżej RTI na NMI ma sens. |
[[Użytkownik:Mono|Mono]] 13:07, 25 sty 2024 (CET) | [[Użytkownik:Mono|Mono]] 13:07, 25 sty 2024 (CET) |
Wersja z dnia 12:13, 25 sty 2024
(obszary: $c000-$cfff oraz $d800-$fff9) - do $fff9-$ffff też mamy dostęp. Xxl 08:44, 11 wrz 2008 (CEST)
fakt, jednakze zastosowanie tych 6-ciu bajtow jest bardzo waskie. Bob_er 13:25, 13 wrz 2008 (CEST)
sądzę, że z formalnego punktu widzenia lepiej posługiwać się ostatnim adresem $ffff, a nie $fff9 - po pierwsze dlatego, że rozmawiamy o specyficznej architekturze Atari, a więc skupiamy się na sterowaniu dostępem do pamięci w Atari a nie znaczeniem tych komórek dla 6502, po drugie - tu również mamy do czynienia ze specyfiką Atari: ignorując przerwania IRQ możemy dowolnie korzystać z komórki od jego wektora - przerwań NMI nie zignorujemy, ale w Atari możemy zablokować ich źródło, zatem komórki są do naszego wykorzystania, pozostaje wektor RESET, którego wartość w RAM-ie i tam może być dowolna i ze względu na specyfikę konstrukcji Atari 6502 nigdy nie korzysta z komórek RAM-u "pod ROM" dla wektora RESET - bowiem podczas sprzętowego RESET-a przywracane są domyślne ustawienia układu PIA, który ustawia bity PORTB ($d301) tak, że ZAWSZE po resecie w tym obszarze będzie ROM i obsługa "reseta" nastąpi poprzez skok poprzez wartości umieszczone w ROM-ie. --Macgyver 16:55, 13 wrz 2008 (CEST)
poza tym specyfika systemu atari wymaga wyłączenia przerwań na czas włączenia w obszarze c000-cfff i d800-ffff RAM-u, i komórki fff9-ffff i tak są widoczne jako zwykła pamięc, zatem argumentacja, że "zastosowanie jest bardzo wąskie" i dlatego należy podawać adres końca fff9, a nie ffff według mnie wprowadza dużo zbędnego zamieszania. Pamięć jest w pełni mapowalna i dostępna dla CPU (Antica zresztą też), zatem nie używajmy oznaczenia fff9 tylko ffff --Macgyver 22:37, 13 wrz 2008 (CEST)
zapis do NMIRES (_no sta $d40f) w procedurze rozpoznawania przerwania jest zbędny.Xxl 14:39, 9 mar 2013 (CET)
@jhusak: Do pustego handlera pod ROM mam dwie uwagi:
1. Wektor RES $FFFC jest dostępny do wolnego użycia bo w przypadku wciśnięcia klawisza RESET automatycznie podłączany jest ROM. Można by się spierać co najwyżej o programowy skok JMP (RES), ale wtedy RTI nic tu nie da, ani nawet JMP *, ani RTS.
2. Jak się Twoim zdaniem zachowa IRQ mając tylko RTI? Bo zgłoszenie IRQ nie zniknie sobie samo z siebie - trzeba je obsłużyć. Jedynym sensownym rozwiązaniem problemu byłoby odroczenie obsługi przerwań przez SEI, ale to się robi w kodzie użytkownika. Więc IRQ też jest w zasadzie dostępny do dowolnego użycia :) Tylko co najwyżej RTI na NMI ma sens.
Mono 13:07, 25 sty 2024 (CET)