Dyskusja:Programowanie: Jak wyłączyć ROM systemu
From Atariki
Wersja z dnia 13:39, 9 mar 2013 Xxl (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 12:07, 25 sty 2024 Mono (Dyskusja | wkład) (IRQ i RES w pustym handlerze pod ROM) Next diff → |
||
Linia 10: | Linia 10: | ||
zapis do NMIRES (_no sta $d40f) w procedurze rozpoznawania przerwania jest zbędny.[[Użytkownik:Xxl|Xxl]] 14:39, 9 mar 2013 (CET) | zapis do NMIRES (_no sta $d40f) w procedurze rozpoznawania przerwania jest zbędny.[[Użytkownik:Xxl|Xxl]] 14:39, 9 mar 2013 (CET) | ||
+ | |||
+ | |||
+ | 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? | ||
+ | |||
+ | [[Użytkownik:Mono|Mono]] 13:07, 25 sty 2024 (CET) |
Wersja z dnia 12:07, 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)
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?
Mono 13:07, 25 sty 2024 (CET)