atarionline.pl Strona 7 ($700 to $7FF) - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    1.  
      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".
      • 2: CommentAuthormono
      • CommentTime21 Sep 2012 14:09
       
      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).
      • 3: CommentAuthorxxl
      • CommentTime21 Sep 2012 15:09
       
      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)
      • 4:
         
        CommentAuthorjhusak
      • CommentTime21 Sep 2012 23:09 zmieniony
       
      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.

      Pokażcie mi bardziej wolny (free) komputer.
      • 5:
         
        CommentAuthorjhusak
      • CommentTime21 Sep 2012 23:09
       
      No dobrze, Amiga też nie miała żadnych przeszkadzajek i ograniczeń, oprócz chip ramu.
    2.  
      Dzięki za odpowiedzi.

      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ł...
      • 7: CommentAuthormono
      • CommentTime22 Sep 2012 06:09
       
      Tak to właśnie wygląda.
      • 8: CommentAuthorbob_er
      • CommentTime22 Sep 2012 10:09
       
      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).
      • 9: CommentAuthor0xF
      • CommentTime23 Sep 2012 18:09
       
      bob_er: Czemu $f2 do PORTB a nie $fe ?
      • 10: CommentAuthorxxl
      • CommentTime23 Sep 2012 20:09 zmieniony
       
      to chyba nie ma znaczenia jesli bit4 jest ustawiony
      • 11: CommentAuthorbob_er
      • CommentTime23 Sep 2012 20:09
       
      xxl mądrze mówi. jak bit4 (i bit5) są ustawione, to bit2 i bit3 mogą przyjmować wartości dowolne. większość je ustawia, ja zeruję.
      • 12: CommentAuthorxxl
      • CommentTime24 Sep 2012 00:09
       
      ciekawy czy cos takiego wylaczy rom:

      sei
      lda #$ff
      isb $d40e
      sta $d301
      • 13:
         
        CommentAuthorjhusak
      • CommentTime24 Sep 2012 17:09
       
      Tak naprawdę to po zabronieniu nmi to i sei niepotrzebne...
      • 14: CommentAuthor0xF
      • CommentTime24 Sep 2012 18:09
       
      bob_er: w 1200 XL dodatkowy efekt na lampkach LED. :)

      xxl: w zależności od znacznika C do PORTB trafi 0 lub $ff. Raczej nie o to chodziło.

      jhusak: a jak ktoś wciśnie klawisz?
      • 15: CommentAuthorxxl
      • CommentTime24 Sep 2012 19:09
       
      wydaje mi sie ze jednak $FE jesli C=0. ale chodzi glownie o to czy inc odczyta $ff i zapisze $00 do NMIEN
      • 16: CommentAuthorbob_er
      • CommentTime24 Sep 2012 20:09 zmieniony
       
      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 :).
      • 17:
         
        CommentAuthorjhusak
      • CommentTime24 Sep 2012 23:09
       
      Oj tam czepialscy z tymi klawiszami. A jak ktoś ma walniętą klawiaturę?
      • 18: CommentAuthor0xF
      • CommentTime25 Sep 2012 19:09
       
      xxl: Racja. Wydawało mi się, że odejmowana jest odczytana wartość, tymczasem jest to zapisana. INC $D40E to sprawdzony sposób.
      • 19:
         
        CommentAuthortdc
      • CommentTime27 Sep 2012 03:09 zmieniony
       
      Kuba, trzeba jedynie w wymaganiach programu napisać, że wymaga Atari XL/XE z walniętą klawiaturą;):)

      W ostateczności można emulować walniętą klawiaturę poprzez nienaciskanie klawiszy;)
      • 20: CommentAuthorxxl
      • CommentTime27 Sep 2012 12:09
       
      a czy:

      lda #0
      sta irqen

      mozna zastosowac wymiennie z:

      sei

      ?
      • 21: CommentAuthormono
      • CommentTime27 Sep 2012 13:09 zmieniony
       
      Nie tylko pokey generuje przerwania przecież. BRK w takiej sytuacji będzie nadal obsługiwane, no i przerwania od PIA.

      Edit: Oraz od sprzętu, który jeszcze nie istnieje w powszechnym użyciu (np. SoundBoard).

      sei blokuje przerwania irq w cpu, a rejestry tylko maskują.
      • 22: CommentAuthorxxl
      • CommentTime27 Sep 2012 13:09 zmieniony
       
      slusznie.


      a czy to oznacza ze:

      sei
      brk
      .byte $ff

      brk sie nie wykona ale bajt $ff bedzie ominiety?