Załóżmy, że chcę sobie wykorzystać tę stronę na jakieś własne dane. Program piszę w ASM, BASIC wyłączony. Czy mogę to bezpiecznie zrobić?
Uprzedzam: czytałem mapę pamięci, ale moja dotychczasowa wiedza o Atari nie wystarcza, żeby dobrze rozeznać temat. Średnio czaję co to np. "user boot area" albo "FMS portion of DOS when resident".
Od $700 do około $C00 zazwyczaj siedzi loader, który pozwoli załadować Twój program z jakiegoś nośnika. Jeśli w pamięci jest DOS, zakłada się że siedzi od $700..$2000. xBIOS siedzi od $700..$C00.
Przyjmuje się, że obszar dla programisty to $2000..MEMHI (memhi ulokowane jest przed pamięcią ekranu, a konkretnie dlisty - po boot bez basica jest to $bc20, z basicem $9c20).
Oczywiście jeśli nie planujesz niczego ładować z nośnika po uruchomieniu programu i nie wracać do DOSa, wtedy możesz sobie wykorzystać całą pamięć, jaka tylko jest w atari (łącznie z mapram ;P).
sa tacy, ktorzy uwazaja ze juz sam proces ladowania nalezy przemyslec i "zaprogramowac". no wiec jesli nie chcesz pisac wlasnego loadera raczej nie laduj niczego bezposrednio pod $700-$7ff (po uruchomieniu mozesz uzywac ten obszar)
Ale jak już uruchomisz swój asm, to możesz równo lecieć od $400. Jak nie używasz systemu operacyjnego, to równo od $200. Jak nie używasz stosu , bądź używasz go mało, oraz wyłączysz OS, to możesz sobie wpisać ldx #$10 txs i masz wolny obszar od $111 do FFFA z wyjątkiem obszaru D000-D800, chyba, że masz mapram.
Podsumowując, czy chodzi o to, że nie powinienem w moim kodzie pisać np. "org $700", bo mi się .xex poprawnie nie załaduje?
Ale jak już całość będzie załadowana, to mogę spokojnie jechać np. "sta $700", przy założeniu, że nie zamierzam nic doładowywać (lub "sta $400" wg Kuby)?
Stos i OS powiedzmy, że na razie zostawię w spokoju.
PS. Tęsknię za czasami, w których trzeba było walczyć o każdy bajt :) Człowiek częściej myślał zanim robił...
rom wyłącza się bardzo prosto: sei lda $14 cmp $14 beq *-2 lda #$f2 sta $d301 lda <nmi sta $fffa lda >nmi sta $fffb
gdzie pod nmi masz swojego vblanka. tak mało kodu, a masz (prawie) cały ram :). odnośnie stosu - to zwykle używam po prostu jego dolnej połowy (na ciągłości w tym obszarze mi nie zależy).
0xf - zawsze to dodatkowy bajer :) jhusak - odpal sobie drunk tank, przeczekaj intro i naciśnij klawisz jakiś.
edit: tak, btw - aż mi się przypomniała moda, gdy ludzie na montowali 8 diód, by mieć bieżący podgląd na portb. jak demo było na 128k (lub więcej) to fajnie to mrugało :).