Programowanie: Jak wyłączyć ROM systemu
From Atariki
(Różnice między wersjami)
Wersja z dnia 22:38, 30 sty 2006 Piotrv (Dyskusja | wkład) (A kto powiedział, że się zmienia??? Znajdź różnice....) ← Previous diff |
Wersja z dnia 21:41, 10 wrz 2008 Bob er (Dyskusja | wkład) (dodane adresy zwalniane przez ROM) Next diff → |
||
Linia 1: | Linia 1: | ||
- | Atari 8-bit ma tę ciekawą cechę, iż umożliwia wyłączenie pamięci [[ROM]] i podstawienie w jej miejsce bloku pamięci [[RAM]] dzięki czemu uzyskujemy dostęp do większej ilości tejże pamięci, zwykle niedostępnej dla programisty (gdy [[ROM]] jest podłączony). | + | Atari 8-bit ma tę ciekawą cechę, iż umożliwia wyłączenie pamięci [[ROM]] i podstawienie w jej miejsce bloku pamięci [[RAM]] dzięki czemu uzyskujemy dostęp do większej ilości tejże pamięci (obszary: $c000-$cfff oraz $d800-$fff9), zwykle niedostępnej dla programisty (gdy [[ROM]] jest podłączony). |
Pamięć ROM przechowuje istotne elementy oprogramowania komputera - np. obsługę przerwań, dlatego należy zatroszczyć się o to, aby po wyłączeniu ROM-u przerwania nadal miały przypisane odpowiednie procedury obsługi. | Pamięć ROM przechowuje istotne elementy oprogramowania komputera - np. obsługę przerwań, dlatego należy zatroszczyć się o to, aby po wyłączeniu ROM-u przerwania nadal miały przypisane odpowiednie procedury obsługi. | ||
Wersja z dnia 21:41, 10 wrz 2008
Atari 8-bit ma tę ciekawą cechę, iż umożliwia wyłączenie pamięci ROM i podstawienie w jej miejsce bloku pamięci RAM dzięki czemu uzyskujemy dostęp do większej ilości tejże pamięci (obszary: $c000-$cfff oraz $d800-$fff9), zwykle niedostępnej dla programisty (gdy ROM jest podłączony). Pamięć ROM przechowuje istotne elementy oprogramowania komputera - np. obsługę przerwań, dlatego należy zatroszczyć się o to, aby po wyłączeniu ROM-u przerwania nadal miały przypisane odpowiednie procedury obsługi.
; ; procedura system_off - wylaczamy OS, podlaczamy RAM pod ROMem i ; zajmujemy sie na wlasna reke obsluga NMI ; system_off equ * lda #0 sta $d40e ; wylaczamy NMI sei ; oraz IRQ lda #$fe ; oraz podlaczamy RAM pod ROMem, wylaczajac OS sta $d301 ; poniewaz nie mamy juz systemu nalezy zadbac o wlasna obsluge przerwan NMI lda <NMI sta $fffa lda >NMI sta $fffb lda #$c0 ;wlaczamy NMI sta $d40e rts NMI bit $d40f ; sprawdzamy czy przerwanie to VBL czy DLI bpl _no jmp (DLI) _no sta $d40f jmp (VBL) DLI dta a(my_dli) ; my_vbl i my_dli to juz nasze procedury obslugi przerwan. VBL dta a(my_vbl)